<?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>198206</bug_id>
          
          <creation_ts>2019-05-23 18:43:12 -0700</creation_ts>
          <short_desc>Use a strongly-typed identifier for pages</short_desc>
          <delta_ts>2019-05-27 13:31:26 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1538878</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-23 18:43:12 -0700</bug_when>
    <thetext>Use a strongly-typed identifier for pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538879</commentid>
    <comment_count>1</comment_count>
      <attachid>370541</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-23 18:44:03 -0700</bug_when>
    <thetext>Created attachment 370541
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538880</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-23 18:46:46 -0700</bug_when>
    <thetext>Attachment 370541 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 180 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>1538913</commentid>
    <comment_count>3</comment_count>
      <attachid>370541</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-23 19:48:51 -0700</bug_when>
    <thetext>Comment on attachment 370541
WIP Patch

Attachment 370541 did not pass mac-wk2-ews (mac-wk2):
Output: https://webkit-queues.webkit.org/results/12274436

Number of test failures exceeded the failure limit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538914</commentid>
    <comment_count>4</comment_count>
      <attachid>370554</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-23 19:48:52 -0700</bug_when>
    <thetext>Created attachment 370554
Archive of layout-test-results from ews104 for mac-highsierra-wk2

The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews.
Bot: ews104  Port: mac-highsierra-wk2  Platform: Mac OS X 10.13.6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538976</commentid>
    <comment_count>5</comment_count>
      <attachid>370572</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 08:50:21 -0700</bug_when>
    <thetext>Created attachment 370572
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538977</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 08:53:15 -0700</bug_when>
    <thetext>Attachment 370572 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 180 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>1538978</commentid>
    <comment_count>7</comment_count>
      <attachid>370573</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 08:56:39 -0700</bug_when>
    <thetext>Created attachment 370573
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538979</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 08:58:58 -0700</bug_when>
    <thetext>Attachment 370573 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 183 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>1538993</commentid>
    <comment_count>9</comment_count>
      <attachid>370576</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 09:49:26 -0700</bug_when>
    <thetext>Created attachment 370576
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538994</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 09:51:56 -0700</bug_when>
    <thetext>Attachment 370576 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 183 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>1539061</commentid>
    <comment_count>11</comment_count>
      <attachid>370589</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 14:16:31 -0700</bug_when>
    <thetext>Created attachment 370589
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539062</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 14:18:26 -0700</bug_when>
    <thetext>Attachment 370589 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 185 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>1539063</commentid>
    <comment_count>13</comment_count>
      <attachid>370590</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 14:20:41 -0700</bug_when>
    <thetext>Created attachment 370590
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539064</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 14:24:08 -0700</bug_when>
    <thetext>Attachment 370590 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 185 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>1539067</commentid>
    <comment_count>15</comment_count>
      <attachid>370592</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 14:25:51 -0700</bug_when>
    <thetext>Created attachment 370592
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539075</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 15:05:00 -0700</bug_when>
    <thetext>Attachment 370592 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 185 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>1539094</commentid>
    <comment_count>17</comment_count>
      <attachid>370598</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 15:47:24 -0700</bug_when>
    <thetext>Created attachment 370598
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539099</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 15:50:27 -0700</bug_when>
    <thetext>Attachment 370598 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 193 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>1539101</commentid>
    <comment_count>19</comment_count>
      <attachid>370600</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 16:06:20 -0700</bug_when>
    <thetext>Created attachment 370600
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539102</commentid>
    <comment_count>20</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 16:09:30 -0700</bug_when>
    <thetext>Attachment 370600 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 194 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>1539111</commentid>
    <comment_count>21</comment_count>
      <attachid>370604</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 16:28:27 -0700</bug_when>
    <thetext>Created attachment 370604
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539114</commentid>
    <comment_count>22</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 16:31:30 -0700</bug_when>
    <thetext>Attachment 370604 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebKit/WebProcess/WebPage/ViewUpdateDispatcher.h:50:  The parameter name &quot;pageID&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 4 in 200 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>1539132</commentid>
    <comment_count>23</comment_count>
      <attachid>370613</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 18:08:45 -0700</bug_when>
    <thetext>Created attachment 370613
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539133</commentid>
    <comment_count>24</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 18:11:00 -0700</bug_when>
    <thetext>Attachment 370613 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebKit/WebProcess/WebPage/ViewUpdateDispatcher.h:51:  The parameter name &quot;pageID&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebKit/UIProcess/gtk/WaylandCompositor.h:106:  The parameter name &quot;pageID&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 5 in 181 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>1539141</commentid>
    <comment_count>25</comment_count>
      <attachid>370614</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 18:42:30 -0700</bug_when>
    <thetext>Created attachment 370614
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539145</commentid>
    <comment_count>26</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 18:45:10 -0700</bug_when>
    <thetext>Attachment 370614 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 179 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>1539148</commentid>
    <comment_count>27</comment_count>
      <attachid>370618</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 19:02:13 -0700</bug_when>
    <thetext>Created attachment 370618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539150</commentid>
    <comment_count>28</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 19:05:46 -0700</bug_when>
    <thetext>Attachment 370618 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 179 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>1539154</commentid>
    <comment_count>29</comment_count>
      <attachid>370619</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 19:22:26 -0700</bug_when>
    <thetext>Created attachment 370619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539155</commentid>
    <comment_count>30</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 19:25:44 -0700</bug_when>
    <thetext>Attachment 370619 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 181 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>1539157</commentid>
    <comment_count>31</comment_count>
      <attachid>370621</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-24 19:51:16 -0700</bug_when>
    <thetext>Created attachment 370621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539158</commentid>
    <comment_count>32</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 19:53:14 -0700</bug_when>
    <thetext>Attachment 370621 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:489:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:490:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 185 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>1539160</commentid>
    <comment_count>33</comment_count>
      <attachid>370621</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-24 21:36:59 -0700</bug_when>
    <thetext>Comment on attachment 370621
Patch

Attachment 370621 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12284995

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-no-ftl
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539329</commentid>
    <comment_count>34</comment_count>
      <attachid>370621</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-05-26 22:14:42 -0700</bug_when>
    <thetext>Comment on attachment 370621
Patch

r=me once bots are happy.

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

&gt; Source/WebCore/platform/network/CookieRequestHeaderFieldProxy.h:79
&gt; +    result.pageID = WTFMove(*pageID);

No real need to move it.

&gt; Source/WebCore/platform/network/NetworkStorageSession.h:153
&gt; +    WEBCORE_EXPORT void grantStorageAccess(const RegistrableDomain&amp; resourceDomain, const RegistrableDomain&amp; firstPartyDomain, Optional&lt;uint64_t&gt; frameID, PageIdentifier);

Might be useful to add a specific FrameIdentifier type as well which I guess would combine a PageIdentifier and a uint64_t.

&gt; Source/WebCore/platform/network/curl/CookieJarCurl.cpp:-62
&gt; -void CookieJarCurl::setCookiesFromDOM(const NetworkStorageSession&amp; session, const URL&amp; firstParty, const SameSiteInfo&amp;, const URL&amp; url, Optional&lt;uint64_t&gt; frameID, Optional&lt;uint64_t&gt; pageID, const String&amp; value) const

We could remove pageID and remove UNUSED_PARAM(pageID) here and below.

&gt; Source/WebKit/NetworkProcess/WebStorage/StorageManager.cpp:497
&gt; +void StorageManager::createSessionStorageNamespace(PageIdentifier storageNamespaceID, unsigned quotaInBytes)

A future refactoring should probably move away from PageIdentifier here.
If not really needed, I would probably not do these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539409</commentid>
    <comment_count>35</comment_count>
      <attachid>370696</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-27 10:29:23 -0700</bug_when>
    <thetext>Created attachment 370696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539410</commentid>
    <comment_count>36</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-27 10:31:12 -0700</bug_when>
    <thetext>Attachment 370696 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:492:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:493:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 184 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539411</commentid>
    <comment_count>37</comment_count>
      <attachid>370697</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-27 10:34:58 -0700</bug_when>
    <thetext>Created attachment 370697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539412</commentid>
    <comment_count>38</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-27 10:36:54 -0700</bug_when>
    <thetext>Attachment 370697 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:492:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:493:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 184 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539416</commentid>
    <comment_count>39</comment_count>
      <attachid>370698</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-27 10:52:28 -0700</bug_when>
    <thetext>Created attachment 370698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539417</commentid>
    <comment_count>40</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-27 10:55:49 -0700</bug_when>
    <thetext>Attachment 370698 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:492:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:493:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 186 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>1539426</commentid>
    <comment_count>41</comment_count>
      <attachid>370701</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-05-27 11:57:24 -0700</bug_when>
    <thetext>Created attachment 370701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539427</commentid>
    <comment_count>42</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-27 11:59:33 -0700</bug_when>
    <thetext>Attachment 370701 did not pass style-queue:


ERROR: Source/WebCore/page/ChromeClient.h:492:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/page/ChromeClient.h:493:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
ERROR: Source/WebCore/loader/EmptyFrameLoaderClient.h:36:  Inline functions should not be in classes annotated with WEBCORE_EXPORT. Remove the macro from the class and apply it to each appropriate method, or move the inline function definition out-of-line.  [build/webcore_export] [4]
Total errors found: 3 in 186 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>1539438</commentid>
    <comment_count>43</comment_count>
      <attachid>370701</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-27 13:31:00 -0700</bug_when>
    <thetext>Comment on attachment 370701
Patch

Clearing flags on attachment: 370701

Committed r245796: &lt;https://trac.webkit.org/changeset/245796&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539439</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-27 13:31:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539440</commentid>
    <comment_count>45</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-27 13:31:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/51163156&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370541</attachid>
            <date>2019-05-23 18:44:03 -0700</date>
            <delta_ts>2019-05-24 08:50:21 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>198206_PageIdentifier_wip.patch</filename>
            <type>text/plain</type>
            <size>620629</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwNy4uYjNiY2FkZDlkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjIsNiArMTIz
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVu
dGlmaWVyPFQ+PiB7CiAgICAgdHlwZWRlZiBPYmplY3RJZGVudGlmaWVySGFzaDxUPiBIYXNoOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VD4mIGlkZW50aWZpZXIpCit7CisgICAg
dHMgPDwgaWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNmExZjVm
MWQ3MS4uYjZhOGY4OWFiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTcsNiArMTIxNyw3IEBACiAJCTQ2ODJEMjAwMUY3
OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RC
IC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkx
NEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJn
ZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2Mjcw
MEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFj
dERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEEyMDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTYyMDdE
NjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFj
dEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZCOTUxOTcyMDdENjM0MDAwQTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3
RDYzMkMwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1OTksNiArNzYwMCw3IEBACiAJ
CTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01SZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4
Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJh
Y3RET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RE
T01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEMyMDdENjMy
OTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxOTcsNiArMjAxOTksNyBAQAogCQkJCTkzMDJCMEJF
MEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLywKIAkJCQk3QTY3NEJEQTBG
OUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggKi8sCisJCQkJNDZCNjUw
REIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8sCiAJCQkJMkQ1QzlDRkIx
OUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5LmNwcCAqLywKIAkJCQkyRDVDOUNGQzE5QzdC
NTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCAqLywKIAkJCQkyRDVDOUNGRDE5QzdCNTJFMDBC
M0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCAqLywKQEAgLTI5ODcxLDYgKzI5ODc0
LDcgQEAKIAkJCQlCQzMwNUM3QTBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIxRUIwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRN
TE9MaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTdFOUIwQTFBODNFMzAwN0ZC
OEM1IC8qIEpTSFRNTE9wdEdyb3VwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZCNjUw
REQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODBFN0U5OTBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MT3B0aW9uRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDQ4QTI5QkYwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUQwMTczRDEyN0U4Mjg2MDAxNTAzNUYg
LyogSlNIVE1MT3V0cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAKaW5kZXggNzY5MTJjYWViOGEuLjBlN2Q1NDIwNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29sYXRlZFRyZWUoKSk7
CiB9CiAKLVJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRpYWxpemVQYWdl
VHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYgY2FjaGUpCitSZWY8QVhJ
c29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjppbml0aWFsaXplUGFnZVRyZWVGb3JJRChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmIGNhY2hlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIHRyZWUgPSBjYWNoZS0+Z2VuZXJhdGVJ
c29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIFJlZlB0cjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEIHRy
ZWVJRCkKICAgICByZXR1cm4gdHJlZUlEQ2FjaGUoKS5nZXQodHJlZUlEKTsKIH0KIAotUmVmPEFY
SXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRf
dCBwYWdlSUQpCitSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tl
cihzX2NhY2hlTG9jayk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBB
WElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpCiAgICAg
cmV0dXJuIG5ld1RyZWU7CiB9CiAKLVJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OnRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKQorUmVmUHRyPEFYSXNvbGF0ZWRUcmVl
PiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoc19jYWNoZUxvY2spOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aAppbmRleCBjMDc1ZDViMDE2Ny4uNmVlYzI2NDUxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUp
CiAKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZU5vZGUuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtNDMsOSArNDQsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlKCk7CiAgICAg
dmlydHVhbCB+QVhJc29sYXRlZFRyZWUoKTsKIAotICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRy
ZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRyZWVGb3JJRCh1
aW50NjRfdCBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBhZ2VJRChQYWdl
SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJl
ZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlkZW50aWZpZXIsIEFYT2JqZWN0Q2FjaGUm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJRCk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZFRyZWVOb2RlPiByb290Tm9kZSgpOwpAQCAt
NzAsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRUcmVlKCk7CiAKICAgICBzdGF0
aWMgSGFzaE1hcDxBWElzb2xhdGVkVHJlZUlELCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZUlE
Q2FjaGUoKTsKLSAgICBzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgUmVmPEFYSXNvbGF0ZWRUcmVl
Pj4mIHRyZWVQYWdlQ2FjaGUoKTsKKyAgICBzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwg
UmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKTsKIAogICAgIC8vIE9ubHkgYWNj
ZXNzIG9uIEFYIHRocmVhZCByZXF1ZXN0aW5nIGRhdGEuCiAgICAgSGFzaE1hcDxBWElELCBSZWY8
QVhJc29sYXRlZFRyZWVOb2RlPj4gbV9yZWFkZXJUaHJlYWROb2RlTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggZTcwYTlmN2ZlNTUuLmQzNTQxNjczZWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTc3NjYsNyArNzc2Niw3IEBAIExvZ2dlciYgRG9jdW1lbnQ6OmxvZ2dlcigp
CiAgICAgcmV0dXJuICptX2xvZ2dlcjsKIH0KICAgICAKLU9wdGlvbmFsPHVpbnQ2NF90PiBEb2N1
bWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBEb2N1bWVudDo6
cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGMwNzY1NTY1MDZhLi5hMjQ4MWRm
OGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJN
ZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUg
Ik9yaWVudGF0aW9uTm90aWZpZXIuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgogI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgpAQCAtNjM1LDcgKzYzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICAgdm9pZCBj
bGVhckFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBj
b25zdDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7CiAgICAg
Ly8gdG8gZ2V0IHZpc3VhbGx5IG9yZGVyZWQgaGVicmV3IGFuZCBhcmFiaWMgcGFnZXMgcmlnaHQK
ICAgICB2b2lkIHNldFZpc3VhbGx5T3JkZXJlZCgpOwogICAgIGJvb2wgdmlzdWFsbHlPcmRlcmVk
KCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxseU9yZGVyZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5jcHAKaW5kZXggYjFiZWQ4ZjAzMmYuLjMzZTI3ODYzODM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpj
b29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgYXV0
byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3Vt
ZW50LCB1cmwpOwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJh
bWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJ
RCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTExMCw3ICsxMTAsNyBA
QCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvYwogdm9pZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAg
IGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29s
IENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQmKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vz
c2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4g
Q29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Np
b25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1CiBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1
bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgU3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHUKIGJv
b2wgQ29va2llSmFyOjpnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBjb29raWVzKSBjb25zdAogewogICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7Cisg
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUg
PSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkucGFnZUlEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggMGRiMDdjNmQx
MmUuLjI4MWY4NGM0OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llcyhE
b2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0OwotICAg
IHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tp
ZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNz
aW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+JikgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRmMGJiODZkZGQ1Li4xZjdhMjlj
NGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZnJhbWVMb2Fk
ZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9w
dDsgfQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVjMzkxMjdhMWFkLi4wNzQ4NzYxMThkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWls
ZXN0b25lLmgiCiAjaW5jbHVkZSAiTGlua0ljb24uaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTEyNiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikgPSAwOwog
Ci0gICAgdmlydHVhbCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDhhODIzODFmMDE4Li40NWZlYjYzNWY3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCisjaW5jbHVkZSAiUGFn
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1
ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LmgiCkBAIC01Nyw3ICs1OCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExvYWRlclN0
cmF0ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlKEZyYW1lJiwg
Q2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
JiYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
RnJhbWVMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3Rv
cjxjaGFyPiYgZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1
aW50NjRfdCB3ZWJQYWdlSUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZUxvYWRDb21wbGV0
ZWQoUGFnZUlkZW50aWZpZXIpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUmVzb3Vy
Y2VMb2FkZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoUmVzb3Vy
Y2VMb2FkZXImLCBib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFj
dGlvbi5jcHAKaW5kZXggNzc0NTAwMWU3OGEuLmYyNmE5YWFmMmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIE5hdmlnYXRpb25BY3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVzdGVyKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fdXJsIHsgVVJMIHsgZG9jdW1lbnQudXJsKCkg
fSB9CiAgICAgLCBtX29yaWdpbiB7IG1ha2VSZWZQdHIoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KSkgfQotICAgICwgbV9wYWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBz
dGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQo
KS52YWx1ZU9yKDApLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlE
KCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjx1aW50NjRfdCwgdWludDY0X3Q+KDAsIDAp
IH0KKyAgICAsIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIgeyBkb2N1bWVudC5mcmFtZSgpID8gc3Rk
OjptYWtlX3BhaXIoZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCku
dmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5j
bGllbnQoKS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjxQYWdlSWRlbnRp
ZmllciwgdWludDY0X3Q+KHsgfSwgMCkgfQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uaAppbmRleCAxYTQ0ZjkxZDM2OC4uZWQ3ZDA5Y2YyODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTYzLDE0ICs2
NCwxNCBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYp
OwogICAgIE5hdmlnYXRpb25BY3Rpb24mIG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwog
Ci0gICAgdXNpbmcgUGFnZUlEQW5kRnJhbWVJRFBhaXIgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyog
cGFnZUlEICovLCB1aW50NjRfdCAvKiBmcmFtZUlEICovPjsKKyAgICB1c2luZyBQYWdlSURBbmRG
cmFtZUlEUGFpciA9IHN0ZDo6cGFpcjxQYWdlSWRlbnRpZmllciwgdWludDY0X3QgLyogZnJhbWVJ
RCAqLz47CiAgICAgY2xhc3MgUmVxdWVzdGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlcXVl
c3Rlcihjb25zdCBEb2N1bWVudCYpOwogCiAgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KICAgICAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5
T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fb3JpZ2luOyB9Ci0gICAgICAgIHVpbnQ2NF90IHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KKyAg
ICAgICAgUGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRG
cmFtZUlEUGFpci5maXJzdDsgfQogICAgICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5zZWNvbmQ7IH0KICAgICBwcml2YXRlOgogICAg
ICAgICBVUkwgbV91cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmNwcAppbmRleCAxNGJjMmYzYmVlZi4uZmZhZGExYzQ1YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNjAsNyArNjAsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzVXBkYXRlZENhbGxiYWNr
KFdURjo6RnVuY3Rpb248dm9pZChWZWN0bwogICAgIG1fbm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKG5vdGlmaWNhdGlvbkNhbGxiYWNrKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFdURjo6RnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbik+JiYgY2FsbGJhY2spCit2b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
Q2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlk
ZW50aWZpZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9t
YWluKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIW1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKTsKICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXJDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJl
c29sdXRpb24oY29uc3QgRG9jCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9j
dW1lbnQmIG9wZW5lckRvY3VtZW50KQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVu
dGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQogewogICAgIGF1
dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7CiAgICAgUmVnaXN0cmFibGVEb21h
aW4gb3BlbmVyRG9tYWluIHsgb3BlbmVyVXJsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGM0NjYxYjA0NzYwLi5kZTFjOTRhNzJjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzQWN0aXZpdHlSZWNvcmQu
aCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3MuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3Rh
dGlzdGljc0ZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291
cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVpbnQ2NF90LCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFBhZ2VJZGVudGlmaWVyLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvZ1VzZXJJ
bnRlcmFjdGlvbk5vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TG9nV2ViU29ja2V0TG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBXYWxsVGltZSk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TG9nU3VicmVzb3VyY2VMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIFdhbGxUaW1lKT4mJik7CkBAIC05NCwxMyArOTUsMTMgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIERv
Y3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3Vt
ZW50JiBvcGVuZXJEb2N1bWVudCk7CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVE
b21haW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwog
ICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdURjo6V2FsbFRpbWU+IG1fbGFzdFJlcG9y
dGVkVXNlckludGVyYWN0aW9uTWFwOwogICAgIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYpPiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwotICAgIEZ1bmN0aW9u
PHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdWludDY0X3Qs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
Jik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrOwogICAgIEZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fbG9n
VXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dXZWJTb2NrZXRMb2FkaW5nTm90aWZpY2F0aW9uQ2Fs
bGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dTdWJy
ZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCmluZGV4IGYzNTM5MGM4YzNhLi41MmIyZTk0YjdlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCkBAIC00ODYsOCArNDg2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVm
UHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmls
ZW5hbWVzICovKSA9IDA7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypz
dWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywg
dWludDY0X3QgLypmcmFtZUlEKi8sIHVpbnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVn
aXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYg
Lyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0X3QgLypwYWdl
SUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duOjpObyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21h
aW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRp
ZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywg
UmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJ
RCovLCBQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpO
bywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7IH0KICNlbmRpZgogCiAjaWYgRU5B
QkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2xvYmFsRnJhbWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1l
SWRlbnRpZmllci5oCmluZGV4IDE1NmM5Y2QyMDVkLi4wZDdiM2RiZjcyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCkBAIC0yNSwxMyArMjUsMTQgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZyYW1lIGlkZW50
aWZpZXIgdGhhdCBpcyB1bmlxdWUgYWNyb3NzIGFsbCBXZWJDb250ZW50IHByb2Nlc3Nlcy4KIHN0
cnVjdCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgewotICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICBQ
YWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgdWludDY0X3QgZnJhbWVJRDsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTQ3LDcg
KzQ4LDcgQEAgdm9pZCBHbG9iYWxGcmFtZUlkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPEdsb2JhbEZyYW1l
SWRlbnRpZmllcj4gR2xvYmFsRnJhbWVJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgZGVjb2RlciA+PiBwYWdlSUQ7CiAgICAgaWYgKCFwYWdl
SUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVu
dGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ0ZDVmOGQy
OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRpZmll
ci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51
bSBQYWdlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGFnZUlkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkuaAppbmRleCAxMTU5MDUwY2QzMi4uYjNkNmUzOGJjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
YW1lU2l0ZUluZm8uaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMzgsNyArMzksNyBAQCBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkgewogICAgIFNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm87CiAgICAgVVJMIHVybDsKICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMgeyBJbmNsdWRlU2VjdXJlQ29va2llczo6
Tm8gfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKQEAgLTcxLDggKzcyLDExIEBAIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5PiBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eTo6ZGVjb2RlKERlCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
ZnJhbWVJRCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQucGFnZUlEKSkKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEOworICAgIGRlY29kZXIgPj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5wYWdlSUQgPSAqcGFnZUlEOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluY2x1ZGVTZWN1cmVDb29raWVzKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CmluZGV4IDNiMThlNjJmZTM5Li42M2RmMDU4OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAt
NjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0K
ICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29v
a2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlEKSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3Jh
bnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7
CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7
CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAg
ICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChw
YWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vz
cy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAg
IGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1lSUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdl
U3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwog
ICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21h
aW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhm
cm9tRG9tYWluKSkKICAgICAgICAgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJl
dmFsZW50UmVzb3VyY2UuYWRkKHBhZ2VJRCwgdG9Eb21haW4pOwpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZygpCiAgICAgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9u
VGVzdE1vZGUgPSB0cnVlOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHksIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0CitPcHRpb25hbDxTZWNvbmRz
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdl
SUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2Uu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDAzMDIwMGRmOWM0Li4zZjM5YzhhY2Q4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRp
YWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdp
c3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNp
ZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9t
YWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4g
bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1aW50
NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFzaDx1
aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0
X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVsdEhh
c2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmlnYXRl
ZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dp
dGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRp
b25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDYzNzQwMzUyYzRhLi41NTdlOTc3YjRk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0yOTQsNyArMjk0
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkgKnVu
ZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1cm4gZmlsdGVyZWRDb29raWVz
OwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkKK3N0YXRpYyBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYg
KHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFn
ZUlEKSkKQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZgogfQogCiBl
bnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVI
VFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJ
bmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQogewogICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
KTsKIApAQCAtMzYzLDEyICszNjMsMTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENvb2tp
ZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENvb2tp
ZVN0b3JhZ2VEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
K3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
ckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywg
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNs
dWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29r
aWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcyk7
CiB9CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KICAgICByZXR1
cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwg
aGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFk
ZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRU
UE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIApAQCAtNDQzLDcgKzQ0Myw3IEBAIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFy
KCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggODc5YzBiMTll
OTYuLmI2ODljM2UyNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAg
ICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQzLDcgKzc0Myw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3Qg
U3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSUQgZnJh
bWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
U3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSUQgZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgT3BlbmVyUGFnZUlEIG9wZW5l
clBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihE
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Ms
IFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWlu
KQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgIT0gb3BlbmVyRG9t
YWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTgxNCw3ICs4MTQsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFs
KFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21h
aW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWlu
JiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9t
YWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2Fz
U2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3Vi
RnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1l
RG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNy4uYmZjMjMzOTY4NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNTdG9yYWdlSWZOZWVkZWQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MmJiwgT3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBncmFuZGZhdGhlckRhdGFGb3JEb21haW5zKGNvbnN0IEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+Jikgb3ZlcnJpZGU7CiAKQEAgLTkxLDkgKzkxLDkgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQ
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRv
cEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNv
bnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFt
ZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9n
RnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29s
IGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25z
dCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVkIHJlY3Vyc2l2ZWx5RmluZE5v
blByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhpc0RvbWFpbih1bnNpZ25lZCBwcmlt
YXJ5RG9tYWluSUQsIFN0ZFNldDx1bnNpZ25lZD4mIG5vblByZXZhbGVudFJlZGlyZWN0aW9uU291
cmNlcywgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscyk7CiAgICAgdm9pZCBzZXREb21h
aW5zQXNQcmV2YWxlbnQoU3RkU2V0PHVuc2lnbmVkPiYmKTsKLSAgICB2b2lkIGdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlv
bmFsPEZyYW1lSUQ+LCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAg
ICB2b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50KCk7CiAgICAg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1
Z01vZGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDBlZTdmOTYzODk0Li5hNWYyNjI0ZTQzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAg
LTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6
c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UtPnNj
aGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6Rm9yY2VJbW1lZGlhdGVXcml0ZTo6WWVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mIHMKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSUQgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSUQgZnJhbWVJ
RCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYg
c3UKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBPcGVuZXJQYWdlSUQgb3BlbmVyUGFn
ZUlELCBPcGVuZXJEb21haW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewog
ICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgIT0gb3BlbmVyRG9tYWluKTsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lcihEb21haW5JbgogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1v
dmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBX
VEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpO
bywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZy
YW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBw
cm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRgogICAg
IGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZN
b3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4m
JiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCA0
NGVmYmY0ZGVjMS4uNDVmN2UxYjc1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3luY1N0b3JhZ2VJ
bW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdlSUQsIE9w
ZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdyYW5kZmF0aGVy
RGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKSBvdmVycmlk
ZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhbGN1bGF0ZUFuZFN1
Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRv
cEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlE
LCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGVk
VG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21h
aW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpIG92ZXJyaWRlOwogICAgIHZv
aWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7CkBA
IC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluY3JlbWVudFJlY29yZHNEZWxl
dGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYs
IFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVkIHJlY3Vyc2l2ZWx5R2V0QWxs
RG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbihjb25zdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21haW4+JiwgdW5zaWduZWQgbnVtYmVy
T2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlE
PiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAg
ICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJr
QXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudChSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVidWdNb2RlKFJlc291cmNlTG9hZFN0
YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGVuc3VyZVByZXZhbGVu
dFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3Li5kNzc5OGIyNWQxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtOTAsOCArOTAsNiBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAg
ICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7
CiAgICAgCiAgICAgdmlydHVhbCB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CkBAIC0x
MTAsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RvcmFnZUlmTmVl
ZGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgPSAw
OwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihE
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3Bl
bmVySUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGdyYW5kZmF0aGVy
RXhpc3RpbmdXZWJzaXRlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTYx
LDkgKzE1OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsgfTsKICAgICB2b2lkIHNldFByZXZhbGVudFJl
c291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNv
bnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFt
ZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYs
IFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGly
ZWN0LCBib29sIGlzTWFpbkZyYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvZ1VzZXJJbnRl
cmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggODcxYjE5ZDJmMDcuLjYyMjQzMGNk
OGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yCiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VB
Y2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHN1YkZyYW1lRG9tYWluICE9IHRvcEZy
YW1lRG9tYWluKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjk4LDEyICsy
OTgsMTIgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VB
Y2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHMKICAgICB9KTsKIH0KIAotYm9vbCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQp
Citib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gbV9uZXR3b3JrU2Vzc2lvbiA/IG1fbmV0
d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLmhhc1N0b3JhZ2VBY2Nlc3MocmVz
b3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCkgOiBmYWxzZTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhh
c0FjY2Vzcyk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyKGNvbnN0IFIKICAgICBjYWxsYmFjayhmYWxzZSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHN1YkZyYW1lRG9tYWluID09IHRv
cEZyYW1lRG9tYWluKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkOjpZZXMsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOwpAQCAtMzYy
LDcgKzM2Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpCiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1
aW50NjRfdCBvcGVuZXJQYWdlSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVEb21haW4mJiBvcGVu
ZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzc1LDcg
KzM3NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFJlZ2lzdHJhYmxlCiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBwb3N0VGFzayhbdGhp
cywgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJh
bWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlE
LCBwcm9tcHRXYXNTaG93biwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJgogICAgIH0pOwogfQogCi1TdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQor
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpn
cmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBib29sIGlzU3Rv
cmFnZUdyYW50ZWQgPSBmYWxzZTsKIApAQCAtNDA5LDcgKzQwOSw3IEBAIFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0CiAgICAgcmV0dXJuIGlzU3RvcmFnZUdyYW50ZWQgPyBTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDo6WWVzIDogU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRs
ZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1l
RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggODc1OWQ2MDE2
NmEuLjc5Y2YyNDYwMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04Miw4ICs4Myw2IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwog
ICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVpbnQ2NF90OwotICAgIHVzaW5nIFBh
Z2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQgPSB1aW50NjRfdDsKICAgICB1c2lu
ZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA9IFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEwNCw3ICsxMDMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3Zh
bChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxk
U3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJ
RCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsK
KyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0
IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAKICAgICB2
b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwogCkBAIC0xMTgsMTEgKzExNywxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRl
RGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91
bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNp
dGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBib29sIHNob3VsZE5vdGlmeVBhZ2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYp
OwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4s
IFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgZ3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxG
cmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgaGFzSGFkVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICBib29sIGhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
RnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4s
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4m
LCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRS
ZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxl
bnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBT
dHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwg
UGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
Jik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdWJGcmFt
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxsVXBkYXRlUHJldmFsZW50RG9tYWlu
c1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNhbGxSZW1vdmVEb21h
aW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jik7Ci0gICAgdm9pZCBj
YWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVI
YW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAKQEAgLTE4Miw3
ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRy
eUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3Rh
bFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsKIAogICAgIHZvaWQgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwotICAg
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJik7CisgICAg
dm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJRCwgT3BlbmVyRG9tYWlu
JiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhv
c3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5NzE4MzZhZGEuLjRkM2QxNjlmNmFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICBT
dHJpbmcgcmVmZXJyZXI7CiAgICAgICAgIFN0cmluZyB1c2VyQWdlbnQ7CiAgICAgICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRDsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQ7
CiAgICAgICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDNkNzFm
OGY2YjFiLi45MmM4YjdhZTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ0
Miw3ICs0NDIsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVM
b2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyCiAgICAgQVNTRVJUKCFtX25ldHdv
cmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQ
YWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYWdlTG9hZENvbXBs
ZXRlZChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCiB7CiAgICAgc3RvcEFsbE5ldHdvcmtBY3Rp
dml0eVRyYWNraW5nRm9yUGFnZSh3ZWJQYWdlSUQpOwogfQpAQCAtNTEyLDcgKzUxMiw3IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChQQUw6OlNlc3NpCiAgICAgbG9hZGVyLT5jb252ZXJ0VG9Eb3dubG9hZChkb3du
bG9hZElELCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJl
Q29va2llc0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNz
aW9uSUQpOwogICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNvb2tpZXNG
b3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1
bHQuc2Vjb25kKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0
Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIGF1dG8mIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNl
c3Npb25JRCk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNldENvb2tpZXNGcm9tRE9NKGZp
cnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmlu
Zyk7CkBAIC01NDIsMTMgKzU0MiwxMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbQogICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25J
RCkuY29va2llc0VuYWJsZWQoKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgYXV0byByZXN1bHQgPSBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9u
SUQpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiByZXN1bHQ7CiAgICAgc3RvcmFnZVNlc3Npb24obmV0d29y
a1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5nZXRSYXdDb29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlc3VsdCk7CkBAIC02MzgsMTMgKzYzOCwxMyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCkKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNj
ZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1v
dmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3Jh
Z2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQog
ICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGZyYW1l
SUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNs
ZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNsZWFyUGFnZVNwZWNpZmlj
RGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MocGFnZUlEKTsKQEAgLTY5Nyw3ICs2OTcsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byBuZXR3b3JrU2Vzc2lv
biA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKQEAgLTcwOSw3ICs3MDksNyBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAt
NzIxLDcgKzcyMSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBpZiAoYXV0byBuZXR3b3JrU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKICAgICBTZWN1
cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiB9CiAKLU9wdGlvbmFs
PE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
dGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRl
bnRpZmllciByZXNvdXJjZUlELCBib29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklEKQorT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wg
aXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CiAgICAg
aWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwpAQCAtODE0LDcgKzgxNCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZygpCiAgICAgbV9uZXR3b3JrQWN0aXZpdHlU
cmFja2Vycy5jbGVhcigpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBhZ2VJRCkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZp
dHlUcmFja2luZ0ZvclBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGZvciAoYXV0
byYgYWN0aXZpdHlUcmFja2VyIDogbV9uZXR3b3JrQWN0aXZpdHlUcmFja2VycykgewogICAgICAg
ICBpZiAoYWN0aXZpdHlUcmFja2VyLnBhZ2VJRCA9PSBwYWdlSUQpCkBAIC04MjYsNyArODI2LDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rp
dml0eVRyYWNraW5nRm9yUGFnZSh1aW50NjQKICAgICB9KTsKIH0KIAotc2l6ZV90IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kUm9vdE5ldHdvcmtBY3Rpdml0eSh1aW50NjRfdCBw
YWdlSUQpCitzaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290TmV0
d29ya0FjdGl2aXR5KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gbV9uZXR3
b3JrQWN0aXZpdHlUcmFja2Vycy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsK
ICAgICAgICAgcmV0dXJuIGl0ZW0uaXNSb290QWN0aXZpdHkgJiYgaXRlbS5wYWdlSUQgPT0gcGFn
ZUlEOwpAQCAtOTAzLDE3ICs5MDMsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y2xlYXJDb25uZWN0aW9uSGFzVXBsb2FkcygpCiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6
OkNsZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMobV93ZWJQcm9jZXNzSWRlbnRpZmllciksIDApOwog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBh
Z2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNBZGRl
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQogewogICAgIG1fbmV0d29ya1Byb2Nlc3MtPndl
YlBhZ2VXYXNBZGRlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCwgcGFnZUlELCBvbGRQ
YWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdl
V2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fbmV0
d29ya1Byb2Nlc3MtPndlYlBhZ2VXYXNSZW1vdmVkKG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lv
bklELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3
ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKQogewogICAgIG1fbmV0d29y
a1Byb2Nlc3MtPndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIG5l
d1Nlc3Npb25JRCwgcGFnZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGNiYzdi
YmZlOGY1Li4wNmQ1Nzk2ODgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xv
YWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzMs
NyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBtX25ldHdvcmtMb2FkSW5mb3JtYXRpb25CeUlE
LnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVz
b3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29sIGlzTWFpblJlc291cmNlLCBjb25z
dCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlc291
cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3Qg
UEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0b3BUcmFja2luZ1Jlc291cmNlTG9hZChSZXNv
dXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNv
bXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdp
c3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbm5lY3Rp
b25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAK
LSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNo
YW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOwor
ICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Np
b25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4m
IHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhO
ZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC0xNzAsMTYg
KzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNv
bm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKIAog
ICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpOworICAgIHZvaWQg
cGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZvaWQgY29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY29va2llc0VuYWJsZWQo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZv
aWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9p
ZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6
OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBnZXRS
YXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29v
a2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUp
OwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAgcHJpdmF0ZToKICAgICBDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQp
OwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHJlbW92ZVN0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBsb2dXZWJTb2NrZXRMb2FkaW5nKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKTsKICAg
ICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJl
ZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9tYWluKTsKICAgICB2b2lkIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIzOSwyOSArMjQwLDI5IEBAIHByaXZhdGU6CiAg
ICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcigpID0gZGVmYXVsdDsKICAgICAg
ICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKGNvbnN0IFJlc291cmNlTmV0d29ya0Fj
dGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZp
dHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYmKSA9IGRlZmF1bHQ7Ci0g
ICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQpCisg
ICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBhZ2VJRCB7IHBhZ2VJRCB9CiAgICAgICAgICAg
ICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0
eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUGFnZSB9CiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcih1aW50
NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCkKKyAgICAgICAg
UmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlEKQogICAgICAgICAgICAgOiBw
YWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAgLCByZXNvdXJjZUlEIHsgcmVzb3VyY2VJRCB9
CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6
OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB1
aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlEIHsgMCB9Owog
ICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsgZmFsc2UgfTsKICAgICAgICAgTmV0d29ya0Fj
dGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7CiAgICAgfTsKIAogICAgIHZvaWQgc3RvcEFs
bE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0gICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2
aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgc2l6ZV90IGZpbmRSb290
TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBzdG9wQWxsTmV0d29y
a0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBz
aXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
ICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBmN2M5N2VlYmIyMS4u
ODMzZTc0ZmNmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMjYsMTggKzI2LDE4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQZXJmb3JtU3luY2hyb25vdXNMb2FkKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVycykg
LT4gKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiBkYXRhKSBTeW5jaHJvbm91cwogICAgIExvYWRQaW5n
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1l
dGVycykKICAgICBSZW1vdmVMb2FkSWRlbnRpZmllcih1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyKQotICAgIFBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKKyAgICBQ
YWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCiAgICAg
UHJlZmV0Y2hETlMoU3RyaW5nIGhvc3RuYW1lKQogICAgIFByZWNvbm5lY3RUbyh1aW50NjRfdCBw
cmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyBsb2FkUGFyYW1ldGVycyk7CiAKICAgICBTdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2Fk
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVT
aXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNj
ZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBTZXRDb29raWVzRnJvbURPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFN0cmluZyBjb29raWVTdHJpbmcpCisgICAg
Q29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJl
Q29va2llcykgU3luY2hyb25vdXMKKyAgICBTZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFN0cmluZyBjb29raWVTdHJpbmcp
CiAgICAgQ29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBl
bmFibGVkKSBTeW5jaHJvbm91cwotICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwotICAgIEdldFJh
d0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyAgICBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJl
Q29va2llcykgU3luY2hyb25vdXMKKyAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2Ft
ZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCiAKICAgICBSZWdpc3RlckZp
bGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKQEAgLTU2LDE2ICs1
NiwxNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgRW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFJlbW92ZVN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCk7Ci0gICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Cisg
ICAgUmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKKyAgICBD
bGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKICAgICBMb2dV
c2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW4pCiAgICAgTG9nV2ViU29ja2V0TG9hZGluZyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVu
KQogICAgIExvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKQogICAgIExvZ1N1YnJl
c291cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBzb3VyY2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdl
dERvbWFpbikKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljcykKLSAgICBIYXNTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
c3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VB
Y2Nlc3MpIEFzeW5jCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQorICAgIEhhc1N0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4g
KGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKKyAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZy
YW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKSAtPiAoZW51bTpi
b29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9v
bCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFz
eW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCiAjZW5kaWYKIAogICAgIEFkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmlnaW4sIFN0cmluZyBkZXN0aW5hdGlv
blByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKQEAgLTg3LDcgKzg3LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU2V0V2ViUHJvY2Vzc0lkZW50
aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCiAKLSAg
ICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCkKLSAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKLSAgICBXZWJQcm9jZXNzU2Vzc2lvbkNo
YW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBWZWN0b3I8dWludDY0X3Q+IHBhZ2Vz
KQorICAgIFdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlE
KQorICAgIFdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQorICAgIFdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQ
QUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZXMpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggZDE0YjFkZTlkOTEuLjQwOTcxNGQ2NjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3Bw
CkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVPcmlnaW4oY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgcmV0dXJuIHVybC5w
cm90b2NvbElzRGF0YSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8ICFvcmlnaW4gfHwgb3Jp
Z2luLT5jYW5SZXF1ZXN0KHVybCk7CiB9CiAKLU5ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xv
YWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgRmV0Y2hPcHRpb25zJiYg
b3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIEhUVFBIZWFkZXJNYXAmJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBVUkwm
JiB1cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIFByZWZsaWdodFBv
bGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdy
YWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIExv
YWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKK05ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRD
aGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgRmV0Y2hPcHRpb25zJiYgb3B0
aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIEhUVFBIZWFkZXJNYXAmJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBV
UkwmJiB1cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIFByZWZsaWdo
dFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNV
cGdyYWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3Ms
IExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKICAgICA6IG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlv
bnMpKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9uZXR3b3JrUHJvY2Vz
cyhuZXR3b3JrUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5oCmluZGV4IDMxZDExYzNhOGFlLi41N2RmMWRhNDY4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBA
IC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExv
YWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwgT3RoZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hl
Y2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNv
cmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3Jh
ZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7
CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hP
cHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0
X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYm
IHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0
TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOwogICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsK
IAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRyaXBsZXQgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgbV9zdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8
TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7
CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9m
cmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFk
ZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJN
YXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJz
LmgKaW5kZXggODk2Mzk5ZDEzMzIuLjg5NzMwY2Y5ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Np
b25JRC5oPgpAQCAtMzgsNyArMzksNyBAQCBlbnVtIGNsYXNzIFByZWNvbm5lY3RPbmx5IHsgTm8s
IFllcyB9OwogCiBjbGFzcyBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgewogcHVibGljOgotICAgIHVp
bnQ2NF90IHdlYlBhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQ7CiAgICAgdWludDY0X3Qgd2ViRnJhbWVJRCB7IDAgfTsKICAgICBXVEY6OlByb2Nlc3NJ
RCBwYXJlbnRQSUQgeyAwIH07CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEIHsgUEFMOjpT
ZXNzaW9uSUQ6OmVtcHR5U2Vzc2lvbklEKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYTVkNmY1Y2ZjYzcuLjI5ZDE3Zjk5ZjAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cApAQCAtMTE1NSw3ICsxMTU1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXMKICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjb21taXR0ZWRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb21taXR0ZWRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihmcm9tRG9t
YWluLCB0b0RvbWFpbiwgcGFnZUlEKTsKQEAgLTE5NTQsNyArMTk1NCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KGJvb2wgYWxs
b3dzLCBDb21wbGV0CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZShQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAo
IURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNh
bXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2Uod2ViUGFnZUlELCBt
ZXNzYWdlLCBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlOjpObyksIDApOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2Vi
UGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSByZXN1bHQsIFNob3VsZFNhbXBsZSBzaG91bGRT
YW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1
bHQoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSByZXN1bHQs
IFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xOTcwLDcgKzE5NzAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFn
bm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdAogICAg
IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh3ZWJQYWdlSUQsIG1lc3NhZ2Us
IGRlc2NyaXB0aW9uLCByZXN1bHQsIFNob3VsZFNhbXBsZTo6Tm8pLCAwKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3Qgd2Vi
UGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoVmFsdWUoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlm
aWNhbnRGaWd1cmVzLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxl
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYxOSw3ICsyNjE5LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikK
ICAgICAgICAgc2Vzc2lvbi0+cmVtb3ZlS2VwdEFsaXZlTG9hZChsb2FkZXIpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
b2xkUGFnZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKIHsKICAgICBpZiAoIXBhZ2VJ
RCB8fCAhb2xkUGFnZUlEKSB7CiAgICAgICAgIExPR19FUlJPUigiQ2Fubm90IGFkZCBwYWdlIHdp
dGggaW52YWxpZCBpZCIpOwpAQCAtMjYzOCwxMyArMjYzOCwxMyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNl
c3Npb25JRAogICAgICAgICByZXR1cm4gc2Vzc2lvbklEOwogICAgIH0pOwogCi0gICAgc3RvcmFn
ZU1hbmFnZXIuY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUlELCBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIHN0b3JhZ2VNYW5hZ2VyLmFkZEFsbG93
ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELCBjb25uZWN0aW9uKTsK
KyAgICBzdG9yYWdlTWFuYWdlci5jcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQu
dG9VSW50NjQoKSwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBz
dG9yYWdlTWFuYWdlci5hZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9u
KHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKICAgICBpZiAocGFnZUlEICE9IG9sZFBh
Z2VJRCkKLSAgICAgICAgc3RvcmFnZU1hbmFnZXIuY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShvbGRQYWdlSUQsIHBhZ2VJRCk7CisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLmNsb25lU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2Uob2xkUGFnZUlELnRvVUludDY0KCksIHBhZ2VJRC50b1VJbnQ2NCgp
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBh
Z2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgaWYgKCFwYWdlSUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5u
b3QgcmVtb3ZlIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjU3LDggKzI2NTcsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFBBTDo6U2Vzc2lvbgogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdG9y
YWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7Ci0gICAgc3RvcmFnZU1hbmFn
ZXIucmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQs
IGNvbm5lY3Rpb24pOwotICAgIHN0b3JhZ2VNYW5hZ2VyLmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShwYWdlSUQpOworICAgIHN0b3JhZ2VNYW5hZ2VyLnJlbW92ZUFsbG93ZWRTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELnRvVUludDY0KCksIGNvbm5lY3Rpb24p
OworICAgIHN0b3JhZ2VNYW5hZ2VyLmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdl
SUQudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NXYXNE
aXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpAQCAtMjY3NCw3ICsyNjc0
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKS0+
c3RvcmFnZU1hbmFnZXIoKS5wcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwog
fQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VJRHMpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9j
ZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Np
b25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxQYWdlSWRlbnRpZmllcj4mIHBhZ2VJRHMp
CiB7CiAgICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7CiAgICAg
QVNTRVJUKG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5jb250YWlucyhjb25uZWN0aW9uSUQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA3YWNi
M2Y5Njc1Yy4uZWJmM2I3ZmU2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zl
dGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSURCU2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyVHlwZXMuaD4KQEAgLTEzNiw4ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
TmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2lu
ZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsK
LSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1
aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBOZXR3b3JrUHJv
Y2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMTkw
LDkgKzE4OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gRGlhZ25v
c3RpYyBtZXNzYWdlcyBsb2dnaW5nLgotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWlu
dDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5n
UmVzdWx0VHlwZSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0Rp
YWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtMjU4LDcg
KzI1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9E
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYm
KTsKLSAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9t
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q3Jv
c3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNl
dENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtMjcxLDEwICsyNzAs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlv
bihQQUw6OlNlc3Npb25JRCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlB
dXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKIAotICAgIHZvaWQgd2ViUGFnZVdhc0Fk
ZGVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IG9sZFBhZ2VJRCk7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5l
Y3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHdlYlBh
Z2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlBhZ2VX
YXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcik7CiAgICAgdm9pZCB3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29u
bmVjdGlvbiYpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVj
dGlvbiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+Jik7CisgICAgdm9p
ZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mKTsKICAgICB2b2lkIGdl
dExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWls
cz4mJik+JiYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IGQ5ZmVlMDc4ZmU3Li5mNWVmNTMwMTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzEs
NyArMTMxLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiByZWRpcmVjdGVkVG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9w
RnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVkaXJlY3RlZEZyb21Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+
ICgpIEFzeW5jCi0gICAgQ29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZyb21E
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCB1aW50NjRfdCBwYWdl
SUQpIC0+ICgpIEFzeW5jCisgICAgQ29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGZyb21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+ICgpIEFzeW5jCiAgICAgU2V0Q3Jvc3NTaXRlTG9h
ZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0b0RvbWFpbikgLT4gKCkgQXN5bmMKICAgICBSZXNldENyb3NzU2l0ZUxvYWRzV2l0
aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgp
IEFzeW5jCiAgICAgRGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIGJvb2wgaW5jbHVkZUh0dHBP
bmx5Q29va2llcykgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXgg
NThhYWNiOTkzZGIuLjk1NzgyZTNmNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApA
QCAtMTA3LDggKzEwNywxMSBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3VyYwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53ZWJQYWdlSUQpKQorICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSUQ7CisgICAgZGVjb2RlciA+PiB3ZWJQYWdlSUQ7Cisg
ICAgaWYgKHdlYlBhZ2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC53ZWJQ
YWdlSUQgPSAqd2ViUGFnZUlEOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2Vi
RnJhbWVJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBmZTI2NTM2
ZjIxYy4uZjRjYmFlMmRhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE3NCwxOCArMTc0LDE4IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgICAgIG1fbmV0d29ya0xvYWRD
aGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVlc3QoKSB9LCB0aGlz
LCBbdGhpc10gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIFdURjo6c3dpdGNoT24ocmVz
dWx0LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoUmVzb3VyY2VFcnJvciYgZXJyb3IpIHsKLSAg
ICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IGVycm9yIGNo
ZWNraW5nIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMg
PSAlZCwgcGFyZW50UElEID0gJWQsIGVycm9yLmRvbWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNv
ZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMt
PmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCwgZXJyb3IuZG9tYWluKCku
dXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogZXJyb3IgY2hlY2tpbmcgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAl
ZCwgZXJyb3IuZG9tYWluID0gJXtwdWJsaWN9cywgZXJyb3IuY29kZSA9ICVkKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNo
cm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5k
YXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFlcnJv
ci5pc0NhbmNlbGxhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+ZGlkRmFp
bExvYWRpbmcoZXJyb3IpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgW3Ro
aXNdIChOZXR3b3JrTG9hZENoZWNrZXI6OlJlZGlyZWN0aW9uVHJpcGxldCYgdHJpcGxldCkgewog
ICAgICAgICAgICAgICAgICAgICB0aGlzLT5tX2lzV2FpdGluZ0NvbnRpbnVlV2lsbFNlbmRSZXF1
ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICB0aGlzLT53
aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUodHJpcGxldC5yZXF1ZXN0KSwgV1RGTW92
ZSh0cmlwbGV0LnJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUodHJpcGxldC5yZWRpcmVjdFJlc3Bv
bnNlKSk7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2VudCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdhcyBtb2RpZmll
ZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQs
IHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2Uo
KSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IHN5bnRoZXRpYyBy
ZWRpcmVjdCBzZW50IGJlY2F1c2UgcmVxdWVzdCBVUkwgd2FzIG1vZGlmaWVkIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCks
IHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CiAgICAgICAg
ICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBbdGhpc10gKFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCkgewogICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy0+Y2FuVXNlQ2FjaGUocmVxdWVz
dCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0
YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVz
b3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwg
bV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50
UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291
cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5yZXRyaWV2ZUNhY2hlRW50cnkocmVxdWVzdCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0K
QEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQog
ICAgIH0KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoYXQgY29kZSBwYXRoIG9uY2UgbV9uZXR3b3Jr
TG9hZENoZWNrZXIgaXMgdXNlZCBmb3IgYWxsIG5ldHdvcmsgbG9hZHMuCiAgICAgaWYgKGNhblVz
ZUNhY2hlKG9yaWdpbmFsUmVxdWVzdCgpKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCksIG1fcGFy
YW1ldGVycy5wYXJlbnRQSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFy
dDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291
cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJh
bWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSwgbV9w
YXJhbWV0ZXJzLnBhcmVudFBJRCk7CiAgICAgICAgIHJldHJpZXZlQ2FjaGVFbnRyeShvcmlnaW5h
bFJlcXVlc3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMjcsMTMgKzIyNywxMyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgbG9hZGVyLT5sb2dTbG93Q2FjaGVSZXRy
aWV2ZUlmTmVlZGVkKGluZm8pOwogCiAgICAgICAgIGlmICghZW50cnkpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2Ugbm90
IGluIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25v
dXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25v
dXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hl
RW50cnk6IFJlc291cmNlIG5vdCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXIt
PnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXF1ZXN0KSwgRmlyc3RMb2FkOjpZZXMpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICAgICAgaWYgKGVudHJ5LT5oYXNSZWFjaGVkUHJldmFsZW50UmVzb3VyY2VB
Z2VDYXAoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVD
YWNoZUVudHJ5OiBSZXNvdXJjZSBoYXMgcmVhY2hlZCBwcmV2YWxlbnQgcmVzb3VyY2UgYWdlIGNh
cCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBS
ZXNvdXJjZSBoYXMgcmVhY2hlZCBwcmV2YWxlbnQgcmVzb3VyY2UgYWdlIGNhcCAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJh
bWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAg
ICAgICAgICAgICBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9uID0gV1RGTW92ZShl
bnRyeSk7CiAgICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmV2YWxpZGF0aW9uUmVxdWVzdCA9
IG9yaWdpbmFsUmVxdWVzdCgpOwogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2Fk
KFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKQEAgLTI0MSwy
MSArMjQxLDIxIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50
cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICB9CiAjZW5kaWYKICAg
ICAgICAgaWYgKGVudHJ5LT5yZWRpcmVjdFJlcXVlc3QoKSkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBIYW5kbGluZyByZWRpcmVjdCAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBIYW5k
bGluZyByZWRpcmVjdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNo
cm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFt
ZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNl
KCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXItPmRpc3BhdGNoV2lsbFNl
bmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGVudHJ5KSk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxvYWRlci0+bV9w
YXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvICYmICFlbnRyeS0+cmVzcG9uc2UoKS5jZXJ0
aWZpY2F0ZUluZm8oKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0
cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNlcnRpZmlj
YXRlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9w
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6
IFJlc291cmNlIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgY2VydGlmaWNhdGUgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAg
ICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0
TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAo
ZW50cnktPm5lZWRzVmFsaWRhdGlvbigpIHx8IHJlcXVlc3QuY2FjaGVQb2xpY3koKSA9PSBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmVmcmVzaEFueUNhY2hlRGF0YSkgewot
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBW
YWxpZGF0aW5nIGNhY2hlIGVudHJ5IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQs
IGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCks
IGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJy
ZXRyaWV2ZUNhY2hlRW50cnk6IFZhbGlkYXRpbmcgY2FjaGUgZW50cnkgKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
aXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAg
ICAgICAgbG9hZGVyLT52YWxpZGF0ZUNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InJldHJpZXZlQ2FjaGVFbnRyeTogUmV0cmlldmVkIHJlc291cmNlIGZyb20gY2FjaGUgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXRyaWV2ZWQgcmVz
b3VyY2UgZnJvbSBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291
cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgIGxvYWRlci0+ZGlkUmV0cmlldmVDYWNo
ZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICB9KTsKIH0KQEAgLTI2Myw3ICsyNjMsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5l
dHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hZCBsb2FkKQogewog
ICAgIGlmIChsb2FkID09IEZpcnN0TG9hZDo6WWVzKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNl
ID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291
cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlz
U3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVz
b3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKIAogICAgICAgICBjb25zdW1lU2FuZGJveEV4dGVu
c2lvbnMoKTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAg
ICAgfQogICAgIGlmICghbmV0d29ya1Nlc3Npb24pIHsKICAgICAgICAgV1RGTG9nQWx3YXlzKCJB
dHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xvYWQgd2l0aCBhIHNlc3Npb24gKGlkPSUiIFBS
SXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Np
b25JRCgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnROZXR3
b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9u
IHRoYXQgZG9lcyBub3QgZXhpc3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklEPSUiIFBSSXU2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgcGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBB
dHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xvYWQgd2l0aCBhIHNlc3Npb24gdGhhdCBkb2Vz
IG5vdCBleGlzdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzZXNzaW9uSUQ9JSIgUFJJdTY0ICIpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9w
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKTsK
ICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLmxvZ0RpYWdub3N0aWNNZXNz
YWdlKG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5
czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Omlu
dmFsaWRTZXNzaW9uSURLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgICAg
IGRpZEZhaWxMb2FkaW5nKGludGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSkpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0
YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICBw
YXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwogICAgIG1fbmV0d29ya0xvYWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm1fY29ubmVjdGlvbi0+Ymxv
YlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vzc2lvbik7CiAKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX25ldHdvcmtM
b2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGRlc2NyaXB0aW9uID0gJXtw
dWJsaWN9cykiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVz
Y3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmNsZWFudXAoTG9hZFJlc3VsdCByZXN1bHQpCkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNsZWFudXAoTG9hZFJlc3VsdCByZXN1bHQpCiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3dubG9hZChEb3dubG9hZElEIGRvd25s
b2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUkVMRUFTRV9MT0coTG9hZGluZywgIkNvbnZlcnRpbmcg
TmV0d29ya1Jlc291cmNlTG9hZGVyICVwIHRvIGRvd25sb2FkICUiIFBSSXU2NCAiIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgdGhpcywgZG93bmxvYWRJRC5kb3dubG9hZElEKCksIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7
CisgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIkNvbnZlcnRpbmcgTmV0d29ya1Jlc291cmNlTG9h
ZGVyICVwIHRvIGRvd25sb2FkICUiIFBSSXU2NCAiIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgZG93
bmxvYWRJRC5kb3dubG9hZElEKCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICAK
ICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHJlc291cmNlIGNhbWUgZnJvbSB0aGUgZGlz
ayBjYWNoZS4KICAgICBpZiAoIW1fbmV0d29ya0xvYWQpIHsKQEAgLTM0MCw3ICszNDAsNyBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKQogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhYm9ydDogQ2FuY2VsaW5n
IHJlc291cmNlIGxvYWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLAotICAgICAgICBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIp
OworICAgICAgICBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAKICAgICBpZiAobV9wYXJh
bWV0ZXJzLm9wdGlvbnMua2VlcEFsaXZlICYmIG1fcmVzcG9uc2UuaXNOdWxsKCkgJiYgIW1faXNL
ZXB0QWxpdmUpIHsKICAgICAgICAgbV9pc0tlcHRBbGl2ZSA9IHRydWU7CkBAIC0zODQsMTIgKzM4
NCwxMiBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZv
clhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiB4RgogICAgIH0KICAgICBjYXNlIFhGcmFtZU9w
dGlvbnNDb25mbGljdDogewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIk11bHRpcGxl
ICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlcnMgd2l0aCBjb25mbGljdGluZyB2YWx1ZXMgKCciICsg
eEZyYW1lT3B0aW9ucyArICInKSBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJy4gRmFsbGluZyBiYWNrIHRvICdERU5Z
Jy4iOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2Fn
ZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBj
YXNlIFhGcmFtZU9wdGlvbnNJbnZhbGlkOiB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2Ug
PSAiSW52YWxpZCAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXIgZW5jb3VudGVyZWQgd2hlbiBsb2Fk
aW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIic6ICciICsg
eEZyYW1lT3B0aW9ucyArICInIGlzIG5vdCBhIHJlY29nbml6ZWQgZGlyZWN0aXZlLiBUaGUgaGVh
ZGVyIHdpbGwgYmUgaWdub3JlZC4iOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpB
ZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJj
ZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0s
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNv
dXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigp
IH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAgICAgfQpAQCAtNDE2LDcgKzQxNiw3IEBAIGJvb2wgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFt
ZU9wdGlvCiAgICAgICAgIFN0cmluZyB4RnJhbWVPcHRpb25zID0gbV9yZXNwb25zZS5odHRwSGVh
ZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlhGcmFtZU9wdGlvbnMpOwogICAgICAgICBpZiAoIXhG
cmFtZU9wdGlvbnMuaXNOdWxsKCkgJiYgc2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlv
bnMoeEZyYW1lT3B0aW9ucywgcmVzcG9uc2UudXJsKCkpKSB7CiAgICAgICAgICAgICBTdHJpbmcg
ZXJyb3JNZXNzYWdlID0gIlJlZnVzZWQgdG8gZGlzcGxheSAnIiArIHJlc3BvbnNlLnVybCgpLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgaW4gYSBmcmFtZSBiZWNhdXNlIGl0
IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0byAnIiArIHhGcmFtZU9wdGlvbnMgKyAiJy4iOwotICAg
ICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlEKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVN
ZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0
eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CiAgICAgfQpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFt
ZU9wdGlvCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
UmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQs
IGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcmVjZWl2ZWRSZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOwogCiAgICAg
bV9yZXNwb25zZSA9IFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTUwNSw3ICs1MDUs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291
cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bvbgogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRl
ZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJl
Y2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZp
bmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAg
ICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBBU1NFUlQoIW1f
Y2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVm
ZmVyLCBpbnQgcmVwCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IGxlbmd0aCA9ICV6ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNSZWNlaXZlZCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgbGVuZ3RoID0gJXpkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX251bUJ5dGVz
UmVjZWl2ZWQpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
cygpKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRy
aWNzKGlkZW50aWZpZXIoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTU2OSw3ICs1NjksNyBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzVGltZW91
dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29k
ZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9yLmlzQ2Fu
Y2VsbGF0aW9uKCksIGVycm9yLmlzQWNjZXNzQ29udHJvbCgpLCBlcnJvci5lcnJvckNvZGUoKSk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wg
PSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBlcnJvci5p
c1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuaXNBY2Nlc3NDb250cm9s
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVOZXR3b3JrTG9h
ZEluZm9ybWF0aW9uKGlkZW50aWZpZXIoKSk7CkBAIC03MzEsNyArNzMxLDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVz
dCYmIG5ld1JlcXVlc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJl
cXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAg
ICAgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IGlzQWxsb3dlZFRvQXNrVXNl
ckZvckNyZWRlbnRpYWxzOwogCkBAIC05ODgsNiArOTg4LDExIEBAIHN0YXRpYyBTdHJpbmcgZXNj
YXBlSURGb3JKU09OKGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUpCiAgICAgcmV0dXJu
IHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUudmFsdWUoKSkgOiBTdHJpbmcoIk5vbmUiX3Mp
OwogfTsKIAorc3RhdGljIFN0cmluZyBlc2NhcGVJREZvckpTT04oY29uc3QgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPyBTdHJpbmc6Om51bWJl
cih2YWx1ZS0+dG9VSW50NjQoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOworfTsKKwogdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKIHsKICAgICBB
U1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCBzZXNzaW9uSUQo
KSkpOwpAQCAtOTk4LDcgKzEwMDMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9n
Q29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1fY29u
bmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVl
c3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVm
ZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigpKTsKIH0KIAotc3RhdGlj
IHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dn
ZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUlu
Zm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVu
dGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nv
b2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9u
SUQoKSkpOwogCkBAIC0xMDI1LDcgKzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29v
a2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpbwog
I3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVy
bmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBp
ZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExv
Z0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNz
aW9uSUQoKSkpOwogCkBAIC0xMDg2LDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29raWVJ
bmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aQogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2Jq
ZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
aWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1h
dGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAg
ICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTEwOTksMTcgKzExMDQsMTcgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJgogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwgbWVz
c2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxvbmcpCiB7Ci0gICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgaWRlbnRp
ZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBtZXNz
YWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c2VuZENTUFZpb2xhdGlvblJlcG9ydChVUkwmJiByZXBvcnRVUkwsIFJlZjxGb3JtRGF0
YT4mJiByZXBvcnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZENTUFZpb2xh
dGlvblJlcG9ydCB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBXVEZNb3ZlKHJlcG9ydFVSTCks
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZNb3ZlKHJlcG9ydCkgfSB9LCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kQ1NQVmlvbGF0
aW9uUmVwb3J0IHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIFdURk1vdmUocmVwb3J0VVJMKSwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IFdURk1vdmUocmVwb3J0KSB9IH0sIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjplbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXZWJDb3JlOjpTZWN1cml0eVBv
bGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYgZXZlbnRJbml0KQogewotICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50IHsgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIFdURk1vdmUoZXZlbnRJbml0KSB9LCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbnF1ZXVlU2VjdXJpdHlQb2xp
Y3lWaW9sYXRpb25FdmVudCB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBXVEZNb3ZlKGV2ZW50
SW5pdCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ1Nsb3dDYWNoZVJldHJpZXZlSWZOZWVkZWQoY29uc3Qg
TmV0d29ya0NhY2hlOjpDYWNoZTo6UmV0cmlldmVJbmZvJiBpbmZvKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggYThh
MzAwNWMxNDIuLmE4ZjZkMzE1Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGlj
OgogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1l
dGVycy5zZXNzaW9uSUQ7IH0KICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQogICAgIHVpbnQ2NF90
IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRDsgfQotICAg
IHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7
IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMud2ViUGFnZUlEOyB9CiAKICAgICBzdHJ1Y3QgU3luY2hyb25vdXNMb2FkRGF0
YTsKIApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyBib29s
IHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZv
cm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
dm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIE9wdGlvbmFsPHVpbnQ2NF90
PiBpZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNhYmxlRXh0cmFOZXR3b3JrTG9h
ZE1ldHJpY3NDYXB0dXJlKCkgeyBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
cyA9IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGUuaAppbmRleCBjN2YzODZiM2Q3Yy4uOGJiYzE2OTc4NTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0
d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1
ZGUgPHd0Zi9PcHRpb25TZXQuaD4KQEAgLTg0LDcgKzg1LDcgQEAgZW51bSBjbGFzcyBVc2VEZWNp
c2lvbiB7CiAgICAgTm9EdWVUb0V4cGlyZWRSZWRpcmVjdAogfTsKIAotdXNpbmcgR2xvYmFsRnJh
bWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZy
YW1lSUQqLz47Cit1c2luZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47CiAKIGNsYXNzIENhY2hlIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q2FjaGU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCA5
NjVjNmZhNjY0Yi4uMmRkMGU3ZDQ2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKQEAgLTQyLDcgKzQy
LDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKIGNsYXNzIE5ldHdvcmtEYXRhVGFza0Nv
Y29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtEYXRhVGFzayB7CiAgICAgZnJpZW5kIGNsYXNzIE5l
dHdvcmtTZXNzaW9uQ29jb2E7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxOZXR3b3JrRGF0YVRh
c2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50
JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9s
aWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQ
b2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJl
ck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9u
bHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdv
cmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCisgICAgc3RhdGljIFJl
ZjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29y
a0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2Vi
Q29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5n
U25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJl
Y29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5G
cmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBOZXR3
b3JrRGF0YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZyYW1lSUQsIHBhZ2VJ
RCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlmZiwgc2hvdWxkQ29u
dGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QsIHNob3VsZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlv
biwgbmV0d29ya0FjdGl2aXR5VHJhY2tlcikpOwogICAgIH0KQEAgLTcwLDEyICs3MCwxMiBAQCBw
dWJsaWM6CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJp
Y3MoKSB7IHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljczsgfQogCiAgICAgdWludDY0X3QgZnJh
bWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJRDsgfTsKLSAgICB1aW50NjRfdCBwYWdlSUQo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfTsKIAogICAgIFN0cmluZyBkZXNj
cmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE5ldHdvcmtEYXRhVGFz
a0NvY29hKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZm
aW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBz
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwg
Ym9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4pOworICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9u
JiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdl
YkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNr
SXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
Pik7CiAKICAgICBib29sIHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlvbihjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
Jik7CiAgICAgdm9pZCBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJm
YWNlSWZOZWVkZWQoX19zdHJvbmcgTlNVUkxSZXF1ZXN0KiYsIGJvb2wgc2hvdWxkQ29udGVudFNu
aWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKTsKQEAgLTkzLDcgKzkzLDcgQEAg
cHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRGF0YVRhc2s+IG1fdGFzazsKICAg
ICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3b3JrTG9hZE1ldHJpY3M7CiAgICAg
dWludDY0X3QgbV9mcmFtZUlEOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKICAgICBib29sIG1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNzQ29va2llU3RvcmFn
ZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCAzNWU0NDNiOWVlOS4uMjhhMDVl
ODBkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMTYwLDcgKzE2MCw3IEBAIHN0YXRpYyB2
b2lkIHVwZGF0ZVRhc2tXaXRoRmlyc3RQYXJ0eUZvclNhbWVTaXRlQ29va2llcyhOU1VSTFNlc3Np
b25EYXRhVGFzayogdGFzCiAjZW5kaWYKIH0KIAotTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdv
cmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tD
bGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0
aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6
OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3Jl
OjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250
ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9v
bCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25s
eSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdh
dGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJh
Y2tlcikKK05ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgdWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVu
dFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29k
aW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxk
UHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9w
dGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCiAg
ICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0V2l0aENyZWRlbnRp
YWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24pCiAgICAgLCBt
X2ZyYW1lSUQoZnJhbWVJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKQEAgLTIzNiw3ICsyMzYs
NyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogICAgIGlmIChzaG91bGRCbG9ja0Nvb2tpZXMp
IHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+c2hv
dWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1
LCB0YXNrSUQgPSAlbHU6IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJ
RCwgZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVx
dWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29y
a0RhdGFUYXNrQ29jb2E6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFt
ZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiBCbG9ja2luZyBjb29raWVzIGZvciBVUkwgJXMiLCB0
aGlzLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0
YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7
CiAjZWxzZQogICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IEJsb2NraW5nIGNvb2tp
ZXMgZm9yIFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBuc1JlcXVlc3QuVVJMLmFi
c29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOwogI2VuZGlmCkBAIC0zNjYsNyArMzY2LDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBib29sIHNob3VsZEJsb2NrQ29va2llcyA9IG1fc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6
OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3MgfHwgbV9zZXNzaW9uLT5uZXR3b3JrU3RvcmFn
ZVNlc3Npb24oKS5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbV9mcmFtZUlELCBtX3BhZ2VJ
RCk7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fc2Vzc2lvbi0+c2hvdWxk
TG9nQ29va2llSW5mb3JtYXRpb24oKSkKLSAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9
ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6ICVzIGNvb2tpZXMgZm9yIHJlZGly
ZWN0IFVSTCAlcyIsIHRoaXMsIG1fcGFnZUlELCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVtt
X3Rhc2sgdGFza0lkZW50aWZpZXJdLCAoc2hvdWxkQmxvY2tDb29raWVzID8gIkJsb2NraW5nIiA6
ICJOb3QgYmxvY2tpbmciKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdv
cmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bjo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0
YXNrSUQgPSAlbHU6ICVzIGNvb2tpZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIsIHRoaXMsIG1fcGFn
ZUlELnRvVUludDY0KCksIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRl
bnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2lu
ZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICBM
T0coTmV0d29ya1Nlc3Npb24sICIlbGx1ICVzIGNvb2tpZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIs
IFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCAoc2hvdWxkQmxvY2tDb29raWVzID8gIkJsb2NraW5n
IiA6ICJOb3QgYmxvY2tpbmciKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKICNlbmRpZgpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6
OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAg
ICAgaWYgKCFzaG91bGRCbG9ja0Nvb2tpZXMpIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3
b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwg
dGFza0lEID0gJWx1OiBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMgZm9yIHJlZGlyZWN0IFVSTCAl
cyIsIHRoaXMsIG1fcGFnZUlELCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFz
a0lkZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdv
cmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlv
bjo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0
YXNrSUQgPSAlbHU6IE5vdCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVz
IiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgbV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylb
bV90YXNrIHRhc2tJZGVudGlmaWVyXSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKICNlbHNlCiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgTm90IHBhcnRp
dGlvbmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlm
aWVyXSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oIGIvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4IGQ1Zjk4MWU0NTM0
Li5mODY0NTRkZGE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVz
c2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5k
ZXIuaApAQCAtMzQsOSArMzQsOSBAQCBjbGFzcyBNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5NZXNzYWdlU2VuZGVyKCk7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBi
b29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29s
IHNlbmQoY29uc3QgVSYgbWVzc2FnZSwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25z
ID0geyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHNlbmQobWVzc2FnZSwgbWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSwgeyB9KTsKKyAgICAgICAgcmV0dXJuIHNlbmQobWVzc2FnZSwgbWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSwgc2VuZE9wdGlvbnMpOwogICAgIH0KIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCkBA
IC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0
aW5hdGlvbklELCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0KIAotICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9pZCBzZW5kV2l0aEFzeW5j
UmVwbHkoVCYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJncy4uLik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4KKyAg
ICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5k
bGVyKQogICAgIHsKICAgICAgICAgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2VuZFdpdGhB
c3luY1JlcGx5KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dlYktpdC9TY3JpcHRz
L3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA1MjUxNDkwMmFiYi4uNWI5NzUzMDMwNWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291
cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjA1LDYgKzIwNSw3IEBA
IGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAg
ICdTdHJpbmcnLAogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VI
YW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCmlu
ZGV4IGE2YTAwOTk1NTAwLi5lNjA1YTQ1OTQ2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElQYWdlSGFuZGxlLmNwcApAQCAtMzEsMTcgKzMxLDE3IEBACiAKIG5hbWVzcGFjZSBBUEkg
ewogCi1SZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCkK
K1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VIYW5kbGUocGFnZUlE
LCBmYWxzZSkpOwogfQogCi1SZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRlQXV0b2Nv
bnZlcnRpbmcodWludDY0X3QgcGFnZUlEKQorUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNy
ZWF0ZUF1dG9jb252ZXJ0aW5nKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgdHJ1ZSkpOwogfQogCi1Q
YWdlSGFuZGxlOjpQYWdlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBpc0F1dG9jb252ZXJ0
aW5nKQorUGFnZUhhbmRsZTo6UGFnZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKICAgICA6IG1fcGFnZUlEKHBhZ2VJRCkKICAgICAs
IG1faXNBdXRvY29udmVydGluZyhpc0F1dG9jb252ZXJ0aW5nKQogewpAQCAtNTksMTUgKzU5LDE2
IEBAIHZvaWQgUGFnZUhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
IAogYm9vbCBQYWdlSGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
T2JqZWN0PiYgcmVzdWx0KQogewotICAgIHVpbnQ2NF90IHBhZ2VJRDsKLSAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhZ2VJRCkpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHBhZ2VJRDsKKyAgICBpZiAoIXBhZ2VJRCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBpc0F1dG9jb252ZXJ0aW5nOwogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoaXNBdXRvY29udmVydGluZykpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRvY29udmVydGluZyhw
YWdlSUQpIDogY3JlYXRlKHBhZ2VJRCk7CisgICAgcmVzdWx0ID0gaXNBdXRvY29udmVydGluZyA/
IGNyZWF0ZUF1dG9jb252ZXJ0aW5nKCpwYWdlSUQpIDogY3JlYXRlKCpwYWdlSUQpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
UGFnZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaApp
bmRleCBmMzBmYWZiZGMzMS4uN2Q3YWRjNjg5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSVBhZ2VIYW5kbGUuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBBUElQYWdlSGFuZGxl
X2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBJUEMgewpAQCAtMzgs
MjAgKzM5LDIwIEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBQYWdlSGFuZGxlIDogcHVibGlj
IE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQYWdlSGFuZGxlPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGUodWludDY0X3QgcGFnZUlEKTsKLSAgICBzdGF0aWMg
UmVmPFBhZ2VIYW5kbGU+IGNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVpbnQ2NF90IHBhZ2VJRCk7Cisg
ICAgc3RhdGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
OworICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlQXV0b2NvbnZlcnRpbmcoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgflBhZ2VIYW5kbGUoKTsKIAotICAgIHVp
bnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KICAgICBi
b29sIGlzQXV0b2NvbnZlcnRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzQXV0b2NvbnZlcnRpbmc7
IH0KIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0OwogICAgIHN0YXRpYyBi
b29sIGRlY29kZShJUEM6OkRlY29kZXImLCBSZWZQdHI8T2JqZWN0PiYpOwogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IFBhZ2VIYW5kbGUodWludDY0X3QgcGFnZUlELCBib29sIGlzQXV0b2NvbnZl
cnRpbmcpOworICAgIGV4cGxpY2l0IFBhZ2VIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGJvb2wgaXNBdXRvY29udmVydGluZyk7CiAKLSAgICBjb25zdCB1aW50NjRfdCBtX3BhZ2VJRDsK
KyAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICBjb25zdCBi
b29sIG1faXNBdXRvY29udmVydGluZzsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRleCAxY2I5ZTZjN2Q0
MS4uZmU1YjkzODcxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgUmVtb3RlT2Jq
ZWN0UmVnaXN0cnk6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5KF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
ICpyZW1vdGVPYmplY3QKICAgICAsIG1fbWVzc2FnZVNlbmRlcihwYWdlKQogICAgICwgbV90YWtl
QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oW10geyByZXR1cm4gUHJvY2Vzc1Rocm90dGxlcjo6QmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsgfSkKICAgICAsIG1faXNSZWdpc3RlcmVkQXNNZXNzYWdl
UmVjZWl2ZXIodHJ1ZSkKLSAgICAsIG1fbWVzc2FnZVJlY2VpdmVySUQocGFnZS5wYWdlSUQoKSkK
KyAgICAsIG1fbWVzc2FnZVJlY2VpdmVySUQocGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKQogewog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9tZXNzYWdlUmVj
ZWl2ZXJJRCwgKnRoaXMpOwogICAgIHBhZ2Uuc2V0UmVtb3RlT2JqZWN0UmVnaXN0cnkoKnRoaXMp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdD
b250ZXh0SGFuZGxlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3Np
bmdDb250ZXh0SGFuZGxlLm1tCmluZGV4IDU4Y2IxZGQyYjVlLi43ZTk3ZjE3NmMwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFu
ZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29u
dGV4dEhhbmRsZS5tbQpAQCAtMjgsNyArMjgsNyBAQAogCiBAaW1wbGVtZW50YXRpb24gV0tCcm93
c2luZ0NvbnRleHRIYW5kbGUKIAotLSAoaWQpX2luaXRXaXRoUGFnZUlEOih1aW50NjRfdClwYWdl
SUQKKy0gKGlkKV9pbml0V2l0aFBhZ2VJRDooV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlE
CiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7
CkBAIC00MCw3ICs0MCw3IEBAIC0gKGlkKV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlE
CiAKIC0gKE5TVUludGVnZXIpaGFzaAogewotICAgIHJldHVybiBfcGFnZUlEOworICAgIHJldHVy
biBfcGFnZUlELnRvVUludDY0KCk7CiB9CiAKIC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0CkBA
IC01Myw3ICs1Myw3IEBAIC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5j
b2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIHsKLSAgICBbY29kZXIgZW5jb2RlSW50NjQ6
X3BhZ2VJRCBmb3JLZXk6QCJwYWdlSUQiXTsKKyAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJ
RC50b1VJbnQ2NCgpIGZvcktleTpAInBhZ2VJRCJdOwogfQogCiAtIChpZClpbml0V2l0aENvZGVy
OihOU0NvZGVyICopY29kZXIKQEAgLTYxLDcgKzYxLDcgQEAgLSAoaWQpaW5pdFdpdGhDb2Rlcjoo
TlNDb2RlciAqKWNvZGVyCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBfcGFnZUlEID0gW2NvZGVyIGRlY29kZUludDY0Rm9yS2V5OkAi
cGFnZUlEIl07CisgICAgX3BhZ2VJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyVHlwZT4oW2NvZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl0pOwog
CiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRl
eCAyYTllNjQ2MjgxYS4uNDNlNDFlMjRjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJu
YWwuaApAQCAtMjQsMTEgKzI0LDEyIEBACiAgKi8KIAogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRl
eHRIYW5kbGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KIAogQGludGVy
ZmFjZSBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAoKQogCi1AcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHksIGdldHRlciA9IF9wYWdlSUQpIHVpbnQ2NF90IHBhZ2VJRDsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9wYWdlSUQpIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRDsKIAotLSAoaWQpX2luaXRXaXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQ7Cist
IChpZClfaW5pdFdpdGhQYWdlSUQ6KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKXBhZ2VJRDsKIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IGViOGEwYjY2MTdhLi5kNGUxYzI1MDA4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtNjYsNyArNjYsNyBAQCBJUEM6OkNvbm5l
Y3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICptX2Rlc3RpbmF0aW9u
SUQ7CisgICAgcmV0dXJuIG1fZGVzdGluYXRpb25JRC0+dG9VSW50NjQoKTsKIH0KIAogdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgcmVwbHkpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6Om9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFu
dElkZW50aWZpCiAgICAgcGxhdGZvcm1PcGVuUGF5bWVudFNldHVwKG1lcmNoYW50SWRlbnRpZmll
ciwgZG9tYWluTmFtZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGlu
Z1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5r
SWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0JiBwYXltZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byYgY29vcmRpbmF0b3IgPSBhY3RpdmVQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSgpKQogICAgICAgICBjb29yZGluYXRvci0+ZGlkQ2FuY2VsUGF5
bWVudFNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGQyMzdlYWIzZGFiLi42ZTRh
ODVjZjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1
ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTEx
NSw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFj
dGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
ZG9tYWluTmFtZSwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKLSAgICB2b2lkIHNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25J
RCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgdm9pZCBzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRl
c3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJM
U3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29u
c3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgY29tcGxldGVT
aGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01l
dGhvZFVwZGF0ZT4mKTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9u
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0
Nyw3ICsxNDgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBDbGllbnQmIG1fY2xpZW50Owot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2Rlc3RpbmF0aW9uSUQ7CisgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG1fZGVzdGluYXRpb25JRDsKIAogICAgIGVudW0gY2xhc3Mg
U3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90aGluZydzIGhhcHBlbmluZy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGQzMTMxMjdiZjQuLjFkZTRjZGRj
ZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzAsNyAr
MzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSB7CiAgICAgQ2Fu
TWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllciwgU3Ry
aW5nIGRvbWFpbk5hbWUsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgY2FuTWFr
ZVBheW1lbnRzKSBBc3luYwogICAgIE9wZW5QYXltZW50U2V0dXAoU3RyaW5nIG1lcmNoYW50SWRl
bnRpZmllciwgU3RyaW5nIGRvbWFpbk5hbWUpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKIAotICAg
IFNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+IGxpbmtJ
Y29uVVJMU3RyaW5ncywgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QgcGF5
bWVudFJlcXVlc3QpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTaG93UGF5bWVu
dFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBs
aW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCiAgICAgQ29tcGxl
dGVNZXJjaGFudFZhbGlkYXRpb24oV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiBwYXlt
ZW50TWVyY2hhbnRTZXNzaW9uKQogICAgIENvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24o
T3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+IHVwZGF0ZSkKICAgICBDb21w
bGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0Nv
bnRhY3RVcGRhdGU+IHVwZGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDZlYjMz
NWYwN2QzLi45ZGViNzZmZjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCkBAIC03NSw3
ICs3NSw3IEBAIHVpbnQ2NF90IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6YWRkQ2hhbGxlbmdlVG9D
aGFsbGVuZ2VNYXAoQ2hhbGxlbmdlJiYgY2hhbGxlbmdlCiAgICAgcmV0dXJuIGNoYWxsZW5nZUlE
OwogfQogCi1ib29sIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6c2hvdWxkQ29hbGVzY2VDaGFsbGVu
Z2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgY29uc3QKK2Jvb2wgQXV0aGVudGljYXRpb25NYW5h
Z2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2
NF90IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdl
KSBjb25zdAogewogICAgIGlmICghY2FuQ29hbGVzY2VDaGFsbGVuZ2UoY2hhbGxlbmdlKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA4LDcgKzEwOCw3IEBAIFZlY3Rvcjx1aW50NjRfdD4g
QXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb2FsZXNjZUNoYWxsZW5nZXNNYXRjaGluZyh1aW50NjRf
dCBjaGFsCiAgICAgcmV0dXJuIGNoYWxsZW5nZXNUb0NvYWxlc2NlOwogfQogCi12b2lkIEF1dGhl
bnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBBU1NFUlQocGFnZUlEKTsKICAgICBBU1NFUlQoZnJhbWVJRCk7CkBAIC0xMjQsNyAr
MTI0LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHUKIAogdm9pZCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5k
ZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgdWludDY0X3QgZHVtbXlQYWdlSUQgPSAwOworICAgIFBhZ2VJ
ZGVudGlmaWVyIGR1bW15UGFnZUlEOwogICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hh
bGxlbmdlVG9DaGFsbGVuZ2VNYXAoeyBkdW1teVBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwogICAgIAogICAgIC8vIENvYWxlc2Nl
IGNoYWxsZW5nZXMgaW4gdGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZSBhbmQgaW4gdGhlIHNhbWUg
cGFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKaW5kZXggN2ZlMzk5ZTBiN2UuLjg2ZTc0NGMxMDhk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50
aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlv
bi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5l
dHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBz
dXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxv
YWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2b2lkIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hhbGxlbmdlIHsKLSAgICAgICAgdWludDY0X3QgcGFn
ZUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKICAgICAgICAgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXI7CiAgICAgfTsKQEAgLTgzLDcg
Kzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgdWludDY0X3QgYWRkQ2hhbGxl
bmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdlJiYpOwotICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VD
aGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKKyAgICBib29sIHNob3VsZENv
YWxlc2NlQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBjaGFsbGVu
Z2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKIAog
ICAgIFZlY3Rvcjx1aW50NjRfdD4gY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3Qg
Y2hhbGxlbmdlSUQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
ZXh0SW5wdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0
LmgKaW5kZXggNGY3NWZkODA2ZjYuLjU0ZDQyNzdiODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
VGV4dElucHV0Q29udGV4dC5oCkBAIC0yOSwxMyArMjksMTQgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0RvY3VtZW50SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudElkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBUZXh0SW5w
dXRDb250ZXh0IHsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRpbmdSZWN0OwogCi0gICAg
dWludDY0X3Qgd2ViUGFnZUlkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3Vt
ZW50SWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpFbGVtZW50SWRlbnRpZmllciBlbGVtZW50SWRl
bnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcAppbmRleCA5ZGJiMzZhNDU1My4uZDkwMGExNjczM2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRf
dCBwYWdlSUQpCitSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0Zvcndh
cmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZN
b3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAg
ICAgLCBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oCmluZGV4IDg3MmVmMTgwOTVkLi5iYTM0NDgwY2Q1ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaApAQCAtMjcsNiArMjcsNyBAQAogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
NDYsNyArNDcsNyBAQCBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpCYWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2
NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVh
dGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
ICAgICB2aXJ0dWFsIH5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKCk7CiAKICAgICBzdGF0aWMgV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbUZvcklEKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXImKTsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKCkgY29uc3QgeyByZXR1
cm4gbV9pdGVtU3RhdGUuaWRlbnRpZmllcjsgfQogICAgIGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZSYgaXRlbVN0YXRlKCkgeyByZXR1cm4gbV9pdGVtU3RhdGU7IH0KLSAgICB1aW50NjRf
dCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICAgICBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0TGFzdFByb2Nlc3NJ
ZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7
IG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQpAQCAtODEsMTIgKzgyLDEy
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZW1vdmVTdXNw
ZW5kZWRQYWdlRnJvbVByb2Nlc3NQb29sKCk7CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUgbV9pdGVtU3RhdGU7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9s
YXN0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1f
c3VzcGVuZGVkUGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGU5ZGE2MGFlZWJlLi4wY2JmZDAzNDZhYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKQEAgLTM5Miw3ICszOTIsNyBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
PiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuYmFja2dyb3VuZENvbG9yID0gV1RG
TW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVpbnQ2NF90
Pj4gb2xkUGFnZUlEOworICAgIE9wdGlvbmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gb2xk
UGFnZUlEOwogICAgIGRlY29kZXIgPj4gb2xkUGFnZUlEOwogICAgIGlmICghb2xkUGFnZUlEKQog
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGMyYmU4NDE0NmIzLi45MDEyN2JjMzEw
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRp
YVByb2R1Y2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGFnaW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KQEAg
LTIwMiw3ICsyMDMsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAKICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOwogCi0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IG9sZFBhZ2VJRDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gb2xkUGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQppbmRleCBjNjU0ODRmNTUxMi4uNzEx
YTI2MTk4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0
R3JhcGgubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5t
bQpAQCAtMzAyLDcgKzMwMiw3IEBAIGJvb2wgT2JqQ09iamVjdEdyYXBoOjpkZWNvZGUoSVBDOjpE
ZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8aWQ+JiByZXN1bHQpCiAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocGFnZUlEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0
V2l0aFBhZ2VJRDpwYWdlSURdKTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHROUyhbW1dLQnJvd3Np
bmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlSUQ6bWFrZU9iamVjdElkZW50aWZp
ZXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXJUeXBlPihwYWdlSUQpXSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXgg
ZWQ4NjM1ODIwMWIuLjU5NzAxYTEzNDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5jcHAKQEAgLTEyMDYsNyArMTIwNiw3IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRl
ckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoK
ICAgICAgICAgbWlsZXN0b25lcy5hZGQoV2ViQ29yZTo6RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0KTsKIAogICAgIGlmIChtaWxlc3RvbmVzKQotICAgICAgICB3ZWJQYWdlUHJveHktPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVz
KG1pbGVzdG9uZXMpLCB3ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKKyAgICAgICAgd2ViUGFnZVBy
b3h5LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKG1p
bGVzdG9uZXMpKTsKIAogICAgIHdlYlBhZ2VQcm94eS0+c2V0TG9hZGVyQ2xpZW50KFdURk1vdmUo
bG9hZGVyQ2xpZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDEwNzU3ODFhZjJj
Li4yZjljZmU5NDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTU0LDYgKzU0LDcgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIFN0cmluZyBBdXRvbWF0aW9uQ29tbWFuZEVycm9yOjp0b1By
b3RvY29sU3RyaW5nKCkKIHsKQEAgLTUyMiw3ICs1MjMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjp3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPbkZyYW1lKFdlYkZyYW1lUHJveHkm
IGZyYQogICAgIH0KIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVu
ZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXAp
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNwb25kVG9QZW5kaW5nUGFnZU5hdmlnYXRp
b25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mIG1hcCkKIHsKICAgICBJ
bnNwZWN0b3I6OkVycm9yU3RyaW5nIHRpbWVvdXRFcnJvciA9IFNUUklOR19GT1JfUFJFREVGSU5F
RF9FUlJPUl9OQU1FKFRpbWVvdXQpOwogICAgIGZvciAoYXV0byBpZCA6IGNvcHlUb1ZlY3Rvciht
YXAua2V5cygpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDY1ZWIzZTQ2ZTViLi5mMzljMDYx
YjU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNo
YXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIgog
I2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTIyNSw3ICsyMjYsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2ViUGFn
ZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVn
eSwgU2Vjb25kcywgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZT4mJik7CiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPbkZyYW1lKFdlYkZy
YW1lUHJveHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0
ZWd5LCBTZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlPiYmKTsKLSAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNr
c1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOworICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1Bh
Z2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZT4+Jik7CiAgICAgdm9pZCByZXNwb25kVG9QZW5kaW5nRnJhbWVOYXZpZ2F0aW9uQ2FsbGJhY2tz
V2l0aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCBsb2FkVGltZXJGaXJlZCgpOwog
CkBAIC0yODAsMjIgKzI4MSwyMiBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OkF1dG9t
YXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRjaGVyOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+IG1fZG9tYWlu
Tm90aWZpZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRs
ZU1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1faGFuZGxlV2ViUGFnZU1hcDsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdHJpbmc+IG1fd2ViUGFnZUhh
bmRsZU1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1f
aGFuZGxlV2ViUGFnZU1hcDsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJG
cmFtZUhhbmRsZU1hcDsKICAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1faGFuZGxlV2Vi
RnJhbWVNYXA7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbklu
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5k
aW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5C
cm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFj
a0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNr
c1BlclBhZ2U7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJy
b3dzaW5nQ29udGV4dENhbGxiYWNrc1BlckZyYW1lOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRp
bmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlckZyYW1lOwotICAg
IEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpD
YWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQ
YWdlOwogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQotICAgIEhh
c2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKE9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1
c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCRFJJVkVSX01PVVNF
X0lOVEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKE9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hl
ZENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
RnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRp
bmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAKICAgICB1aW50
NjRfdCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwpAQCAtMzE5LDcg
KzMyMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIEFQSXMg
dGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVybiB0aGVzZQogICAgIC8v
IHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVzZWQgYXMgaW5pdGlhbCBz
dGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCiAgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRT
b3VyY2U+PiBtX2lucHV0U291cmNlczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+
PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCRFJJVkVS
X0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKICAgICAvLyBLZWVwIHRyYWNrIG9mIGN1cnJlbnRseSBh
Y3RpdmUgbW9kaWZpZXJzIGFjcm9zcyBtdWx0aXBsZSBrZXlzdHJva2VzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tCmluZGV4IGYwNWQ3OWMwZDAxLi4xMjEzMWI5YjM1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tbQpAQCAtMzAyLDcgKzMwMiw3IEBAIFJlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk+IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y3JlYXRlKFdlYlBhZ2VQcm94CiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eShX
ZWJQYWdlUHJveHkmIHBhZ2UpCiAgICAgOiBtX3BhZ2UoJnBhZ2UpCiB7Ci0gICAgbV9wYWdlLT5w
cm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMp
OworICAgIG1fcGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMpOwogfQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6On5QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkoKQpAQCAtMzE0LDcgKzMxNCw3IEBA
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6flBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eSgpCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKIHsK
LSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZSA9IG51bGxwdHI7
CiAKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4dE1hcCk7CkBAIC01Mjcs
OTQgKzUyNyw5NCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxlQ29u
dHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90IGNvbgogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6UGxheShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJZCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQogewot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xl
UGxheVN0YXRlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRl
eHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY3J1
YmJpbmcodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1
YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElkKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVpbnQ2
NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xlcmFuY2VCZWZvcmUsIGRvdWJs
ZSB0b2xlcmFuY2VBZnRlcikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xlcmFuY2VCZWZv
cmUsIHRvbGVyYW5jZUFmdGVyKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwg
dGltZSwgdG9sZXJhbmNlQmVmb3JlLCB0b2xlcmFuY2VBZnRlcikpOwogfQogCiB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBkb3Vi
bGUgdGltZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkZhc3RTZWVrKGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNlZWso
Y29udGV4dElkLCB0aW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nRm9y
d2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRl
eHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2Fu
bmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250
ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVpbnQ2
NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2Nh
bm5pbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5k
ZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpTZWxlY3RBdWRpb01lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2
NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29u
dGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGNv
bnRleHRJZCwgaW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVyZUlu
UGljdHVyZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1cmVJblBpY3R1cmUo
Y29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dn
bGVNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6c2V0TXV0ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIG11dGVkKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0
TXV0ZWQoY29udGV4dElkLCBtdXRlZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElk
LCBtdXRlZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Vm9s
dW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0SWQs
IHZvbHVtZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSk7CiB9
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQbGF5aW5nT25TZWNvbmRT
Y3JlZW4odWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewogICAgIGlmIChtX3BhZ2Up
Ci0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpTZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50
SUQoKQogewogICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250cm9s
bGVkRWxlbWVudElEUmVxdWVzdChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OkhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5h
Z2VyQ29udGV4dElkKSk7CiB9CiAKIFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggNmJhNDc5ZTA2MGEuLjc3ZjJmMmZjNGY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC0zMjUsNyArMzI1LDcgQEAgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBw
YWdlLCBQbGEKICAgICA6IG1fcGFnZSgmcGFnZSkKICAgICAsIG1fcGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5KHBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSkKIHsKLSAgICBtX3BhZ2UtPnBy
b2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7
CisgICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5w
YWdlSUQoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CiB9CiAKIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6flZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSgpCkBAIC0zMzcsNyArMzM3LDcgQEAg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojp+VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
KCkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmludmFsaWRhdGUoKQogewot
ICAgIG1fcGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlID0gbnVsbHB0cjsK
IAogICAgIGF1dG8gY29udGV4dE1hcCA9IFdURk1vdmUobV9jb250ZXh0TWFwKTsKQEAgLTYyMCw0
MyArNjIwLDQzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVwYXJlZFRv
RXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRleHRJZCwg
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUs
IGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29udGV4dElkLCBt
b2RlLCBmaW5pc2hlZFdpdGhNZWRpYSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpKTsKIH0KIAogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KHVpbnQ2NF90
IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KGNvbnRleHRJZCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6UmVxdWVzdFVwZGF0ZUlubGluZVJlY3QoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3Qg
Y29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6UmVxdWVzdFZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6UmVxdWVzdFZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3Qg
Y29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpSZXR1cm5WaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0
SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpEaWRTZXR1cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRTZXR1cEZ1
bGxzY3JlZW4oY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Ojp3aWxsRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsc2Ny
ZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJ
ZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxz
Y3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRp
ZEV4aXRGdWxsc2NyZWVuKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpkaWRFbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsc2NyZWVu
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCkp
OwogICAgIG1fcGFnZS0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiB9CiAKQEAgLTY3MCw3ICs2NzAs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkQ2xlYW51cEZ1bGxzY3Jl
ZW4odWludDY0X3QgY29udGV4dElkKQogICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsKICAgICBb
bW9kZWwtPmxheWVySG9zdFZpZXcoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICBtb2RlbC0+
c2V0TGF5ZXJIb3N0VmlldyhudWxscHRyKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6RGlkQ2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAKICAgICBpbnRl
cmZhY2UtPnNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
Tm9uZSk7CiAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwpAQCAtNjg4LDI1
ICs2ODgsMjUgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5
ZXJGcmFtZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmUKICAgICAgICAgbWFjaF9wb3J0X25h
bWVfdCBmZW5jZVBvcnQgPSBmZW5jZVNlbmRSaWdodC5sZWFrU2VuZFJpZ2h0KCk7CiAjZW5kaWYK
IAotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OlNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChjb250ZXh0SWQsIGZyYW1lLCBJUEM6OkF0dGFjaG1l
bnQoZmVuY2VQb3J0LCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoY29udGV4dElkLCBmcmFtZSwgSVBDOjpBdHRhY2ht
ZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKSk7CiAgICAgfQogfQogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckdyYXZpdHkodWlu
dDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dyYXZpdHkg
Z3Jhdml0eSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OlNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShjb250ZXh0SWQsICh1bnNpZ25lZClncmF2
aXR5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oY29udGV4dElkLCAo
dW5zaWduZWQpZ3Jhdml0eSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgbV9w
YWdlLT51aUNsaWVudCgpLmhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdlKG1fcGFn
ZSwgbW9kZSAmIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5Q
aWN0dXJlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OkZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChjb250ZXh0SWQsIG1vZGUpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OkZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChjb250ZXh0SWQsIG1vZGUpKTsKIH0KIAogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50
NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgYm9vbCBpc1ZpZXdWaXNpYmxlID0gbV9wYWdlLT5pc1Zp
ZXdWaXNpYmxlKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCBpc1ZpZXdWaXNp
YmxlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoY29udGV4dElk
LCBpc1ZpZXdWaXNpYmxlKSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBmOTE0NjgxMWM1NS4uNDQw
ZmQwZGI0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBl
cmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlvbmFyeUxv
b2t1cEF0TG9jYXRpb24ocG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50KSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlv
bigpCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9v
a3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkpOwogfQogICAgIAogI2lmIEVOQUJMRShBUFBMRV9QQVkp
CkBAIC0yMzQsMTIgKzIzNCwxMiBAQCBjb25zdCBTdHJpbmcmIFdlYlBhZ2VQcm94eTo6cGF5bWVu
dENvb3JkaW5hdG9yU291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yQWRkTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiBtZXNzYWdlUmVjZWl2ZXIpCiB7Ci0g
ICAgcHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtX3Bh
Z2VJRCwgbWVzc2FnZVJlY2VpdmVyKTsKKyAgICBwcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1fcGFnZUlELnRvVUludDY0KCksIG1lc3NhZ2VSZWNlaXZl
cik7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JSZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBjb25zdCBJUEM6OlN0cmlu
Z1JlZmVyZW5jZSYgbWVzc2FnZVJlY2VpdmVyTmFtZSkKIHsKLSAgICBwcm9jZXNzKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1fcGFnZUlEKTsKKyAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIG1fcGFnZUlE
LnRvVUludDY0KCkpOwogfQogCiAjZW5kaWYKQEAgLTI2NiwxNyArMjY2LDE3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRSZXN1bWVTcGVha2luZyhXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZSYpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzcGVha2luZ0Vycm9yT2NjdXJy
ZWQoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKQogewotICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTcGVha2luZ0Vycm9yT2NjdXJyZWQoKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNwZWFraW5nRXJyb3JPY2N1
cnJlZCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmJvdW5kYXJ5RXZlbnRPY2N1cnJlZChX
ZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIFdlYkNvcmU6OlNwZWVj
aEJvdW5kYXJ5IHNwZWVjaEJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7Ci0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJvdW5kYXJ5RXZlbnRPY2N1cnJlZChzcGVl
Y2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpTcGVlY2hCb3VuZGFyeTo6U3BlZWNoV29yZEJvdW5kYXJ5
LCBjaGFySW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Qm91
bmRhcnlFdmVudE9jY3VycmVkKHNwZWVjaEJvdW5kYXJ5ID09IFdlYkNvcmU6OlNwZWVjaEJvdW5k
YXJ5OjpTcGVlY2hXb3JkQm91bmRhcnksIGNoYXJJbmRleCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6dm9pY2VzRGlkQ2hhbmdlKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Vm9pY2VzRGlkQ2hhbmdlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpWb2ljZXNEaWRDaGFuZ2UoKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNQRUVD
SF9TWU5USEVTSVMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KaW5kZXggMmFhNzQ4ZjAwNGYuLmZmOGRjZDQwZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTM4MCw3ICsxMzgwLDcgQEAgV2Vi
Vmlld0ltcGw6OldlYlZpZXdJbXBsKE5TVmlldyA8V2ViVmlld0ltcGxEZWxlZ2F0ZT4gKnZpZXcs
IFdLV2ViVmlldyAqb3V0ZXJXZWIKIFdlYlZpZXdJbXBsOjp+V2ViVmlld0ltcGwoKQogewogICAg
IGlmIChtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5KSB7Ci0gICAgICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnByb2Nlc3NQb29sKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmpl
Y3RSZWdpc3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgbV9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgICAgIFttX3JlbW90ZU9iamVjdFJl
Z2lzdHJ5IF9pbnZhbGlkYXRlXTsKICAgICAgICAgbV9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IG5p
bDsKICAgICB9CkBAIC0xOTk3LDEzICsxOTk3LDEzIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjppbnRy
aW5zaWNEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRv
d0RpZE9yZGVyT2ZmU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJ
bXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwgdGhpcywgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFn
ZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCku
dG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5k
b3dJc0FjdGl2ZSB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkT3JkZXJPblNj
cmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAl
bGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dE
aWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAg
ICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwog
fQogCkBAIC0yMDcxLDcgKzIwNzEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRDaGFu
Z2VMYXllckhvc3RpbmcoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRDaGFuZ2VPY2Ns
dXNpb25TdGF0ZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAo
cGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSIsIHRoaXMsIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2Ug
JWxsdSkgd2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJ
RCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCkBAIC0yMjM0LDE5ICsyMjM0LDE5
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRDaGFuZ2VCYWNraW5nUHJvcGVydGllcygpCiAK
IHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRIaWRlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0
ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRIaWRlIiwgdGhpcywgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFn
ZSAlbGx1KSB2aWV3RGlkSGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7
CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRVbmhpZGUoKQog
ewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmll
d0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0
YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1f
cGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2Vi
Vmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlkQ2hhbmdlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0
ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNwYWNlRGlkQ2hhbmdlIiwgdGhp
cywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1w
bCAlcCAocGFnZSAlbGx1KSBhY3RpdmVTcGFjZURpZENoYW5nZSIsIHRoaXMsIG1fcGFnZS0+cGFn
ZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAgLTM4MjcsNyArMzgyNyw3
IEBAIF9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5ICpXZWJWaWV3SW1wbDo6cmVtb3RlT2JqZWN0UmVn
aXN0cnkoKQogewogICAgIGlmICghbV9yZW1vdGVPYmplY3RSZWdpc3RyeSkgewogICAgICAgICBt
X3JlbW90ZU9iamVjdFJlZ2lzdHJ5ID0gYWRvcHROUyhbW19XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
IGFsbG9jXSBfaW5pdFdpdGhXZWJQYWdlUHJveHk6bV9wYWdlXSk7Ci0gICAgICAgIG1fcGFnZS0+
cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVPYmplY3RSZWdpc3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgp
LCBbbV9yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1vdGVPYmplY3RSZWdpc3RyeV0pOworICAgICAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBbbV9yZW1vdGVPYmplY3RSZWdpc3RyeSByZW1vdGVPYmpl
Y3RSZWdpc3RyeV0pOwogICAgIH0KIAogICAgIHJldHVybiBtX3JlbW90ZU9iamVjdFJlZ2lzdHJ5
LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBjYTc2
ODdmNmI1Mi4uYjkzMDEyODU5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eTo6ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlCiAgICAgICAg
IHJldHVybjsKIAogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKLSAgICBtX3BhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25E
ZWNpc2lvbihnZW9sb2NhdGlvbklELCBhbGxvd2VkKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlz
c2lvbkRlY2lzaW9uKGdlb2xvY2F0aW9uSUQsIGFsbG93ZWQpKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGFsbG93ZWQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3JUYXJnZXRQcm94eS5jcHAKaW5kZXggNjJiMDcyOWY4YTUuLjBmNDEwMjBlYTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3JUYXJnZXRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3Bw
CkBAIC01MCwxOSArNTAsMTkgQEAgSW5zcGVjdG9yVGFyZ2V0UHJveHk6Okluc3BlY3RvclRhcmdl
dFByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiB0YXIKIHZvaWQgSW5zcGVj
dG9yVGFyZ2V0UHJveHk6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwmIGNoYW5u
ZWwpCiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Bh
Z2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0b3IoaWRl
bnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29ubmVjdEluc3BlY3Rvcihp
ZGVudGlmaWVyKCksIGNoYW5uZWwuY29ubmVjdGlvblR5cGUoKSkpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclRhcmdldFByb3h5OjpkaXNjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJikK
IHsKICAgICBpZiAobV9wYWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcGFnZS5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlzY29ubmVjdEluc3BlY3RvcihpZGVu
dGlmaWVyKCkpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlzY29ubmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCkpKTsKIH0KIAogdm9p
ZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6c2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkK
LSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kTWVz
c2FnZVRvVGFyZ2V0QmFja2VuZChpZGVudGlmaWVyKCksIG1lc3NhZ2UpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgICAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZE1lc3NhZ2VU
b1RhcmdldEJhY2tlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzQ0M2IzODVmYWMuLjJkOTk2NmUzYzgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IElQQzo6QXR0
YQogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjb3JlQ2hhbGxlbmdlLCB1aW50NjRfdCBj
aGFsbGVuZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjb3JlQ2hhbGxlbmdlLCB1aW50NjRf
dCBjaGFsbGVuZ2VJRCkKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgaWYgKGF1
dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBtX3Byb2Nlc3NQb29sLnNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKHBhZ2VJRCkpIHsKQEAgLTM3MSw3ICszNzEsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNo
ZXIqIGxhdW5jaGVyLCBJUEM6OkNvbgogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNN
ZXNzYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxl
KQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShw
YWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51bGwtY2hlY2sgYmVjYXVzZSBieSB0
aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUsIHRoZSBwYWdlIG1heSBiZSBnb25l
LiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywKQEAgLTM4Miw3ICszODIsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgU3RyaW5nJiBtZQogICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNzYWdlKG1l
c3NhZ2UsIGRlc2NyaXB0aW9uLCBzaG91bGRTYW1wbGUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMy
X3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBs
ZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uo
cGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1c2UgYnkg
dGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkgYmUgZ29u
ZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC0zOTMsNyArMzkzLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQo
dWludDY0X3QgcGFnZUlELCBjb25zdAogICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFJlc3VsdChtZXNzYWdlLCBkZXNjcmlwdGlvbiwgcmVzdWx0LCBzaG91bGRTYW1wbGUpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2
YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94
eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51bGwtY2hlY2sg
YmVjYXVzZSBieSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUsIHRoZSBwYWdl
IG1heSBiZSBnb25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywKQEAgLTczNiw3
ICs3MzYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVyZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpcwogICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEdyYW5kZmF0aGVyZWQoc2Vzc2lvbklELCBy
ZXNvdXJjZURvbWFpbiwgaXNHcmFuZGZhdGhlcmVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
Q29uZmlybSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZp
cm0oUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBh
Z2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTkwOCw3ICs5MDgsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6Om5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlG
aW5pc2hlZCh1bnNpZ25lZAogICAgIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3Rp
Y3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShtZXNzYWdlQm9keSku
cHRyKCkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbW1pdHRlZENyb3NzU2l0
ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
RG9tYWluLCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y29tbWl0dGVkQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAyMGE3OTk4YzRkYy4u
MmJlYzY4ZmQ4OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC04MSw4ICs4MSw2IEBAIHB1YmxpYzoKICAgICB1
c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAg
IHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVpbnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJ
RCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQgPSB1aW50NjRfdDsKIAogICAgIGV4cGxp
Y2l0IE5ldHdvcmtQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmKTsKQEAgLTEzMSw3ICsxMjks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VmVyeVByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiBkb21haW5zKT4mJik7Ci0g
ICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oUGFnZUlELCBGcmFtZUlELCBjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0o
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZyYW1lSUQsIGNvbnN0IFN1YkZyYW1lRG9tYWluJiwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
ICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1l
bW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlz
dGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1l
PiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNDUsNyArMTQzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZShQQUw6OlNlc3Npb25JRCwgYm9vbCBk
ZWJ1Z01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRTaG91
bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChQQUw6OlNlc3Npb25J
RCwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWlu
JiwgY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CisgICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29uc3QgTmF2
aWdhdGVkVG9Eb21haW4mLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwg
Y29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBk
ZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CkBAIC0yMDcsMTMgKzIwNSwxMyBAQCBwcml2YXRlOgogICAgIC8vIE1lc3NhZ2Ug
aGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IElQQzo6QXR0YWNobWVudCYpOwotICAgIHZv
aWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0
X3QgY2hhbGxlbmdlSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9p
ZCBkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVE
YXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lE
KTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxs
YmFja0lEKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGUpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAg
dm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVl
LCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Cisg
ICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsK
KyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91
bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nR2xvYmFsRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUg
dmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
KTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHZvaWQgbG9nVGVz
dGluZ0V2ZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGV2ZW50KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiZTk4ZTY2NjMwZi4uMjJmZmZkMTk4ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZENyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRp
ZmllcikKIAotICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCisgICAgRGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKIAogICAgIERpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpCiAgICAgRGlk
RGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTM1LDkgKzM1LDkgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIAogICAgICMg
RGlhZ25vc3RpYyBtZXNzYWdlcyBsb2dnaW5nCi0gICAgTG9nRGlhZ25vc3RpY01lc3NhZ2UodWlu
dDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJv
b2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5n
IGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVp
bnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlw
dGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAg
TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0
LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWdu
ZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNo
b3VsZFNhbXBsZSkKICAgICBMb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShTdHJp
bmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRT
YW1wbGUpCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtNDYsNyAr
NDYsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBOb3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNo
ZWQoKQogICAgIE5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCkKICAgICBOb3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
dW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnMpCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3Vi
RnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAt
PiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nl
c3MpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWlucykgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNX
aXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykgQXN5bmMKICNlbmRpZgogI2lmIEVOQUJMRShDT05URU5U
X0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGY4NzYxYjFmM2Y0Li4zZjI4NzMyYWI1ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgUmVmPE5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0PiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3IK
IHsKICAgICBhdXRvIHJlcXVlc3QgPSBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3Jl
YXRlKFt0aGlzLCBub3RpZmljYXRpb25JRCwgcGFnZSA9IG1ha2VSZWYobV9wYWdlKV0oYm9vbCBh
bGxvd2VkKSB7CiAgICAgICAgIG1fcGVuZGluZ1JlcXVlc3RzLnRha2Uobm90aWZpY2F0aW9uSUQp
OwotICAgICAgICBwYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVj
ZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbihub3RpZmljYXRpb25JRCwgYWxsb3dl
ZCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbihub3RpZmljYXRpb25J
RCwgYWxsb3dlZCkpOwogICAgIH0pOwogICAgIG1fcGVuZGluZ1JlcXVlc3RzLmFkZChub3RpZmlj
YXRpb25JRCwgcmVxdWVzdC5wdHIoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggZmFlMWYzZmNhODguLjJhYWZmMWVj
MmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC05Nyw3
ICs5Nyw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsCiB7CiAgICAgdWludDY0X3QgZ2xvYmFs
Tm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7CiAgICAgYXV0
byBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNv
blVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQp
OwotICAgIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IG5vdGlmaWNhdGlvbklEUGFpciA9
IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpOwor
ICAgIHN0ZDo6cGFpcjxQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+IG5vdGlmaWNhdGlvbklEUGFp
ciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQp
OwogICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwg
bm90aWZpY2F0aW9uSURQYWlyKTsKICAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlv
bklEUGFpciwgc3RkOjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlv
bi5jb3B5UmVmKCkpKTsKICAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRp
b24uZ2V0KCkpOwpAQCAtMTE5LDEyICsxMTksMTIgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAog
ICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QsIHVpbnQ2NF90IGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQor
c3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qs
IFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQog
ewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRDsKIH0KIAotc3RhdGljIGJvb2wg
cGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgcGFn
ZU5vdGlmaWNhdGlvbklELCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKK3N0YXRpYyBib29sIHBhZ2VBbmRO
b3RpZmljYXRpb25JRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VO
b3RpZmljYXRpb25JRCwgUGFnZUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCiB7CiAgICAgcmV0dXJuIHBh
Z2VJRCA9PSBkZXNpcmVkUGFnZUlEICYmIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzLmNvbnRh
aW5zKHBhZ2VOb3RpZmljYXRpb25JRCk7CiB9CkBAIC0xNDEsMTMgKzE0MSwxMyBAQCB2b2lkIFdl
Yk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSogd2ViUGFnZSwgY29ucwogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xl
YXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24gZmls
dGVyRnVuY3Rpb24pCiB7Ci0gICAgdWludDY0X3QgdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFn
ZUlEKCk7CisgICAgYXV0byB0YXJnZXRQYWdlSUQgPSB3ZWJQYWdlLT5wYWdlSUQoKTsKIAogICAg
IFZlY3Rvcjx1aW50NjRfdD4gZ2xvYmFsTm90aWZpY2F0aW9uSURzOwogICAgIGdsb2JhbE5vdGlm
aWNhdGlvbklEcy5yZXNlcnZlQ2FwYWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgp
KTsKIAogICAgIGZvciAoYXV0byBpdCA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpLCBlbmQgPSBt
X25vdGlmaWNhdGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICB1aW50NjRf
dCB3ZWJQYWdlSUQgPSBpdC0+a2V5LmZpcnN0OworICAgICAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0
LT5rZXkuZmlyc3Q7CiAgICAgICAgIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT5r
ZXkuc2Vjb25kOwogICAgICAgICBpZiAoIWZpbHRlckZ1bmN0aW9uKHdlYlBhZ2VJRCwgcGFnZU5v
dGlmaWNhdGlvbklELCB0YXJnZXRQYWdlSUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAg
ICAgICAgY29udGludWU7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxO
b3QKICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKKyAg
ICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKICAgICBXZWJQYWdlUHJveHkqIHdl
YlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uod2ViUGFnZUlEKTsKICAgICBpZiAoIXdl
YlBhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRf
dCBnbG9iYWxObwogICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCA9IGl0LT52YWx1
ZS5maXJzdDsKKyAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKICAgICBXZWJQ
YWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uod2ViUGFnZUlEKTsK
ICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5oCmluZGV4IGY3MjdlZDQ3MmM1Li5lNzhkYWJhNmZmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlBy
b2Nlc3NQb29sKik7CiAKLSAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5j
dGlvbikodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIHVpbnQ2
NF90IGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90
aWZpY2F0aW9uSURzKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5j
dGlvbikoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZp
Y2F0aW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZl
Y3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGNs
ZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBw
YWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbik7CiAKICAgICAv
LyBXZWJDb250ZXh0U3VwcGxlbWVudApAQCAtODgsOSArODgsOSBAQCBwcml2YXRlOgogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAg
ICAgLy8gUGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2Vzcydz
IG5vdGlmaWNhdGlvbiBJRAotICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjx1aW50NjRf
dCwgdWludDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2
NF90LCBzdGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90Pj4gbV9nbG9i
YWxOb3RpZmljYXRpb25NYXA7CiAgICAgLy8gS2V5IHBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdl
IElEIGFuZCB0aGUgd2ViIHByb2Nlc3MncyBub3RpZmljYXRpb24gSUQ7IHZhbHVlIHBhaXIgY29t
cHJpc2VkIG9mIGdsb2JhbCBub3RpZmljYXRpb24gSUQsIGFuZCBub3RpZmljYXRpb24gb2JqZWN0
Ci0gICAgSGFzaE1hcDxzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Piwgc3RkOjpwYWlyPHVp
bnQ2NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKKyAgICBI
YXNoTWFwPHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+LCBzdGQ6
OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmljYXRpb25z
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggNDVhMWYwZjViNWMuLjQ0MWEyMTI5
YmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJv
eHkuY3BwCkBAIC00Nyw2ICs0Nyw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKwogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5u
ZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIGNoYW5uZWwsICIlcCAtIFByb3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dn
aW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQs
IHRoaXMsICMjX19WQV9BUkdTX18pCiAKQEAgLTYxLDkgKzYzLDkgQEAgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlBy
b2Nlc3NQcm8KICAgICAsIG1fc3VzcGVuc2lvblRva2VuKG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
Zm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSkKICNlbmRpZgogewotICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBh
Z2VJRCA9ICUiIFBSSXU2NCAiIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCAiIHN1c3BlbmRlZFBh
Z2U6ICVwIiwgbV9wYWdlLnBhZ2VJRCgpLCBuYXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0
KCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
UHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiIG5hdmlnYXRpb25JRCA9
ICUiIFBSSXU2NCAiIHN1c3BlbmRlZFBhZ2U6ICVwIiwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0
KCksIG5hdmlnYXRpb25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKLSAgICBtX3Byb2Nlc3Mt
PmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fcHJvY2Vzcy0+YWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFk
ZFByb3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlzKTsKIAogICAgIGlmIChtX3Byb2Nlc3MtPnN0YXRl
KCkgPT0gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVubmluZykKQEAgLTk5LDggKzEw
MSw4IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp+UHJvdmlzaW9uYWxQYWdlUHJveHkoKQogICAg
IGlmICgmbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRlRGF0
YVN0b3JlKCkpCiAgICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5wYWdlSUQoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0
b3JlKCkpOwogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKS50b1VJ
bnQ2NCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpKTsKICAgICBtX3By
b2Nlc3MtPnJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKG1fcGFnZS52aXNpdGVkTGlua1N0b3Jl
KCksIG1fcGFnZS5wYWdlSUQoKSk7CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3By
b2Nlc3MgPSBtX3Byb2Nlc3MuY29weVJlZigpXSB7CkBAIC0xMTcsNyArMTE5LDcgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6Y29ubmVjdGlvbldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1p
bmF0ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJwcm9jZXNzRGlkVGVybWluYXRlOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJwcm9jZXNzRGlkVGVybWluYXRlOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UucHJvdmlzaW9uYWxQcm9jZXNzRGlkVGVybWluYXRl
KCk7CiB9CiAKQEAgLTEzMiw3ICsxMzQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpj
YW5jZWwoKQogICAgIGlmIChtX3Byb3Zpc2lvbmFsTG9hZFVSTC5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
Y2FuY2VsOiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJ
RCgpLnRvVUludDY0KCkpOwogICAgIEFTU0VSVChtX21haW5GcmFtZSk7CiAgICAgYXV0byBlcnJv
ciA9IFdlYktpdDo6Y2FuY2VsbGVkRXJyb3IobV9yZXF1ZXN0KTsKICAgICBlcnJvci5zZXRUeXBl
KFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CkBAIC0xNTEsMTQg
KzE1MywxNCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgp
CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3
ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dh
cHBpbmcsICJsb2FkRGF0YTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6IHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgbV9w
YWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbmF2
aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2Vi
Q29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBv
bGljaWVzKSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQ
STo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2Fw
cGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50
b1VJbnQ2NCgpKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCBj
b250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwgb3Zl
cndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHdlIG5lZWQg
dG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVudGlmaWVyIGFzIHdl
IHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQgaXRlbSB0byBoYXBw
ZW4gaW4gdGhlCkBAIC0xNzEsNyArMTczLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKIAog
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBhdXRvIGl0ZW1TdGF0
ZXMgPSBtX3BhZ2UuYmFja0ZvcndhcmRMaXN0KCkuZmlsdGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0
YXJnZXRJdGVtID0gJml0ZW1dKGF1dG8mIGl0ZW0pIHsKICAgICAgICAgaWYgKGF1dG8qIHBhZ2Ug
PSBpdGVtLnN1c3BlbmRlZFBhZ2UoKSkgewpAQCAtMTgwLDggKzE4Miw4IEBAIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBXZWJCCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICZpdGVtICE9IHRhcmdldEl0
ZW07CiAgICAgfSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVCYWNrRm9yd2FyZExpc3RGb3JSZWF0dGFjaChXVEZNb3ZlKGl0ZW1TdGF0ZXMpKSwgbV9wYWdl
LnBhZ2VJRCgpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9C
YWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwg
Km5hdmlnYXRpb24uYmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCksIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3
YXJkTGlzdEZvclJlYXR0YWNoKFdURk1vdmUoaXRlbVN0YXRlcykpKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24ubmF2aWdhdGlvbklE
KCksIGl0ZW0uaXRlbUlEKCksICpuYXZpZ2F0aW9uLmJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSgp
LCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJz
aXRlUG9saWNpZXMpKSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3Rh
cnQoKTsKIH0KIApAQCAtMTk2LDcgKzE5OCw3IEBAIGlubGluZSBib29sIFByb3Zpc2lvbmFsUGFn
ZVByb3h5Ojp2YWxpZGF0ZUlucHV0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IE9wdGlvbmFsCiAK
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSh1aW50NjRfdCBm
cmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
ZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZU1haW5GcmFtZTogcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBm
cmFtZUlEKTsKICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsKIAogICAgIG1fbWFpbkZyYW1lID0g
V2ViRnJhbWVQcm94eTo6Y3JlYXRlKG1fcGFnZSwgZnJhbWVJRCk7CkBAIC0yMzQsNyArMjM2LDcg
QEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW4KICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJ
RCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9u
SUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUlu
dDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxM
b2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHVybDsKIApAQCAt
MjU0LDcgKzI1Niw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zCiAgICAgaWYgKCF2YWxpZGF0
ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJ
RCwgbmF2aWdhdGlvbklEKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0
LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKICAg
ICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lv
bmFsTG9hZFVSTCA9IHsgfTsKIApAQCAtMjcwLDkgKzI3Miw5IEBAIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQo
KSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3Bh
Z2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKICAgICBtX3By
b3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCku
dG9VSW50NjQoKSk7CiAKICAgICBtX3dhc0NvbW1pdHRlZCA9IHRydWU7CiAgICAgbV9wYWdlLmNv
bW1pdFByb3Zpc2lvbmFsUGFnZShmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIG1pbWVUeXBlLCBmcmFt
ZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgZnJhbWVMb2FkVHlwZSwgY2VydGlmaWNhdGVJbmZv
LCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIHVzZXJE
YXRhKTsgLy8gV2lsbCBkZWxldGUgfHRoaXN8LgpAQCAtMjk1LDcgKzI5Nyw3IEBAIHZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWluCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCisgICAgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFt
ZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3Rl
bmVySUQpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkp
CkBAIC0zNDEsNyArMzQzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6YmFja0Zvcndh
cmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGUKIH0KIAogdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMo
dWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
RGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewpAQCAtMzc0LDYgKzM3NiwxNiBAQCB2b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBDOjpE
YXRhUgogfQogI2VuZGlmCiAKK0lQQzo6Q29ubmVjdGlvbiogUHJvdmlzaW9uYWxQYWdlUHJveHk6
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm9jZXNz
LT5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFByb3Zpc2lvbmFsUGFnZVByb3h5OjptZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5wYWdl
SUQoKS50b1VJbnQ2NCgpOworfQorCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYgZGVj
b2RlcikKIHsKICAgICBBU1NFUlQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDY0NTZjMWY5MTZk
Li5iODYzZmRkMDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25h
bFBhZ2VQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRl
ICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTU4LDcgKzU5LDcg
QEAgc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwogc3RydWN0IFVSTFNjaGVtZVRhc2tQYXJh
bWV0ZXJzOwogc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiAKLWNsYXNzIFByb3Zpc2lv
bmFsUGFnZVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHsKK2NsYXNzIFByb3Zpc2lvbmFsUGFnZVBy
b3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VT
ZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFByb3Zpc2lvbmFsUGFnZVBy
b3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHN0ZDo6dW5pcXVlX3B0
cjxTdXNwZW5kZWRQYWdlUHJveHk+LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgaXNTZXJ2
ZXJSZWRpcmVjdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCk7CkBAIC05Miw5ICs5MywxMyBAQCBwcml2YXRlOgogICAgIC8vIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOworICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgorICAg
IElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsK
KyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwog
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLCBGcmFtZUluZm9EYXRhJiYsCi0gICAgICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsCiAgICAg
ICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYpOwpAQCAtMTEwLDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
dGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBi
YWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4m
Jik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRf
dCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0
YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBk
aWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDY2NzlkNDViZDk5Li5lNmY1ZjE0ZDZkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
LmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpsb2Fk
KGNvbnN0IFN0cmluZyYgZGVidWdnYWJsZVR5cGUsIGNvbnN0IFN0cmluZyYgYgogICAgIG1fZGVi
dWdnYWJsZVR5cGUgPSBkZWJ1Z2dhYmxlVHlwZTsKICAgICBtX2JhY2tlbmRDb21tYW5kc1VSTCA9
IGJhY2tlbmRDb21tYW5kc1VSTDsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpJbml0aWFsaXplKGRlYnVnZ2FibGVU
eXBlLCBiYWNrZW5kQ29tbWFuZHNVUkwpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpJ
bml0aWFsaXplKGRlYnVnZ2FibGVUeXBlLCBiYWNrZW5kQ29tbWFuZHNVUkwpKTsKICAgICBtX2lu
c3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgV2ViSW5zcGVjdG9yUHJveHk6Omlu
c3BlY3RvclBhZ2VVUkwoKSkpOwogfQogCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OnNob3coKQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJ
OjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVj
dG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSk7CiB9CiAKIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kRGlkQ2xvc2UoKQpAQCAtMTUyLDcgKzE1Miw3IEBA
IHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRv
dygpCiAKICAgICB0cmFja0luc3BlY3RvclBhZ2UobV9pbnNwZWN0b3JQYWdlLCBudWxscHRyKTsK
IAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
bnNwZWN0b3JQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJv
Y2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKS50b1VJ
bnQ2NCgpLCAqdGhpcyk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVh
ZEFjY2Vzc1RvQmFzZVVSTCgqbV9pbnNwZWN0b3JQYWdlLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5z
cGVjdG9yQmFzZVVSTCgpKTsKIH0KIApAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKICAgICBpZiAoIW1f
aW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICB1bnRyYWNrSW5z
cGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDVhMTRmYmU0ZGNk
Li5iMmY3NzI5ZmQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5PiYmIGNoYWxsZW5nZSkKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYg
Y2hhbGxlbmdlKQogewogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwogICAgIFVOVVNFRF9QQVJB
TShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuaAppbmRleCA5MzI0NWYwZGM3Ni4uZTkzNjVhZmFjNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgK
QEAgLTQxLDE0ICs0MSwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBoYXNSZWdpc3Rl
cmVkU2VydmljZVdvcmtlcnMoY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KTsK
IAotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+
JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eT4mJik7CiAKICAgICB2b2lkIHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCk7CiAgICAgdm9p
ZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNl
c1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIHsgcmV0dXJuIG1fcmVnaXN0
cmFibGVEb21haW47IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZpY2VXb3JrZXJQYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0KIAogcHJpdmF0ZToKICAg
ICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAg
ICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVpbnQ2NF90IG1f
c2VydmljZVdvcmtlclBhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBt
X3NlcnZpY2VXb3JrZXJQYWdlSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDEzNDZm
Y2MwNWM1Li42NzRiM2YwNjhkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U3VzcGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNw
ZW5kZWRQYWdlUHJveHkuY3BwCkBAIC04OSwxMCArODksMTAgQEAgU3VzcGVuZGVkUGFnZVByb3h5
OjpTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1By
b3h5PiYKICNlbmRpZgogewogICAgIG1fcHJvY2Vzcy0+aW5jcmVtZW50U3VzcGVuZGVkUGFnZUNv
dW50KCk7Ci0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsK
KyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCAqdGhp
cyk7CiAKICAgICBtX3N1c3BlbnNpb25UaW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KHN1c3BlbnNp
b25UaW1lb3V0KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElz
U3VzcGVuZGVkKHRydWUpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpKTsKIH0KIAogU3VzcGVuZGVkUGFnZVByb3h5Ojp+
U3VzcGVuZGVkUGFnZVByb3h5KCkKQEAgLTExMyw3ICsxMTMsNyBAQCBTdXNwZW5kZWRQYWdlUHJv
eHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQogICAgIGNsb3NlKCk7CiAKICAgICBpZiAobV9zdXNw
ZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpTdXNwZW5kaW5nKQotICAgICAgICBtX3By
b2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgLy8gV2UgY2Fs
bCBtYXliZVNodXREb3duKCkgYXN5bmNocm9ub3VzbHkgc2luY2UgdGhlIFN1c3BlbmRlZFBhZ2Ug
aXMgY3VycmVudGx5IGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgV2ViUHJvY2Vzc1Bvb2wKICAgICAv
LyBhbmQgd2Ugd2FudCB0byBhdm9pZCByZS1lbnRlcmluZyBXZWJQcm9jZXNzUG9vbCBtZXRob2Rz
LgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp1bnN1c3BlbmQo
KQogICAgIEFTU0VSVChtX3N1c3BlbnNpb25TdGF0ZSA9PSBTdXNwZW5zaW9uU3RhdGU6OlN1c3Bl
bmRlZCk7CiAKICAgICBtX3N1c3BlbnNpb25TdGF0ZSA9IFN1c3BlbnNpb25TdGF0ZTo6UmVzdW1l
ZDsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVk
KGZhbHNlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRJc1N1c3BlbmRlZChmYWxzZSkpOwogfQogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xv
c2UoKQpAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpjbG9zZSgp
CiAKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6Y2xvc2UoKSIsIHRoaXMpOwogICAgIG1faXNDbG9zZWQgPSB0cnVlOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlLnBhZ2VJRCgpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpKTsKIH0KIAogdm9pZCBTdXNwZW5k
ZWRQYWdlUHJveHk6OnBhZ2VFbnRlcmVkQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQpAQCAt
MjAzLDcgKzIwMyw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRQcm9jZXNzUmVxdWVz
dFRvU3VzcGVuZChTdXNwZW5zaW9uU3RhdGUgbmV3U3VzcGVuc2lvCiAgICAgbV9zdXNwZW5zaW9u
VG9rZW4gPSBudWxscHRyOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlE
KCkudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lv
blN0YXRlOjpGYWlsZWRUb1N1c3BlbmQpCiAgICAgICAgIGNsb3NlV2l0aG91dEZsYXNoaW5nKCk7
CkBAIC0yNDIsMTEgKzI0MiwyMSBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsCiB7CiB9CiAKK0lQ
Qzo6Q29ubmVjdGlvbiogU3VzcGVuZGVkUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpOworfQorCit1
aW50NjRfdCBTdXNwZW5kZWRQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7Cit9CisKICNp
ZiAhTE9HX0RJU0FCTEVECiAKIGNvbnN0IGNoYXIqIFN1c3BlbmRlZFBhZ2VQcm94eTo6bG9nZ2lu
Z1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoMHgiLCBoZXgocmVp
bnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBwYWdlIElEICIsIG1fcGFnZS5wYWdl
SUQoKSwgIiwgbV9zdXNwZW5zaW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc3Vz
cGVuc2lvblN0YXRlKSwgJyknKTsKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBh
Z2VJRCgpLnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCAwZGFkMDU0YjI3Mi4u
NjM1ZWJhMDAwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRl
ZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQ
cm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc1Ro
cm90dGxlci5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAtMzksNyArNDAsNyBAQCBjbGFzcyBXZWJQcm9j
ZXNzUHJveHk7CiAKIGVudW0gY2xhc3MgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIDogYm9vbCB7IE5vLCBZZXMgfTsKIAotY2xhc3MgU3Vz
cGVuZGVkUGFnZVByb3h5IGZpbmFsOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IHsKK2NsYXNzIFN1c3BlbmRlZFBh
Z2VQcm94eSBmaW5hbDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBTdXNwZW5kZWRQ
YWdlUHJveHkoV2ViUGFnZVByb3h5JiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3Qg
bWFpbkZyYW1lSUQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSk7CkBAIC03MSw2ICs3MiwxMCBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpIGZpbmFsOworICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgorICAgIElQ
Qzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAg
ICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCiAg
ICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgUmVmPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9j
ZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDk3MTFi
MjMzNzIxLi4yNjAwOGIxNDFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmNwcApAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVuCiAgICAg
cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQsIG51bWJlclJlbW92ZWQpOwogfQogCi12
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJl
ZmVyZW5jZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuaAppbmRleCA2MjMzMDExMTZlZC4uMGVkMzZhNTljYzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENv
dW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTEwLDcgKzExMSw3IEBA
IHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3QgcGFnZUlE
LCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVp
bnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCiAg
ICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwog
ICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoQVBJOjpVc2VyQ29udGVudFdvcmxk
JiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4MTcxNDM1MWZjZS4uMjVh
NGUyOTEyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
Lm1lc3NhZ2VzLmluCkBAIC0yNCw1ICsyNCw1IEBACiAgKi8KIAogbWVzc2FnZXMgLT4gV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkgewotRGlkUG9zdE1lc3NhZ2UodWludDY0X3QgcGFnZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1l
c3NhZ2VIYW5kbGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5lY3Rp
b24KK0RpZFBvc3RNZXNzYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0
IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFu
ZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2FudHNDb25uZWN0aW9uCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggMWYyNjAyOTFjYzcuLmJkMzdi
YTBjOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMTksNyAr
MTE5LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y2Fw
dHVyZURldmljZXNDaGFuZ2VkKCkKICAgICAgICAgaWYgKG1fZ3JhbnRlZFJlcXVlc3RzLmlzRW1w
dHkoKSAmJiAhKm9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXB0
dXJlRGV2aWNlc0NoYW5nZWQoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpKTsKICAgICB9Owog
CiAgICAgYXV0byBvcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fcGFn
ZS5tYWluRnJhbWUoKS0+dXJsKCkpOwpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRlbnlSZXF1ZXN0KHVpbnQ2NF90IHVzZXJN
ZWRpYUlELCBVCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB1c2VyTWVkaWFJRCwgIiwg
cmVhc29uOiAiLCByZWFzb24pOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3Bh
Z2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0Rl
bmllZCh1c2VyTWVkaWFJRCwgdG9XZWJDb3JlKHJlYXNvbiksIGludmFsaWRDb25zdHJhaW50KSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXNl
ck1lZGlhQWNjZXNzV2FzRGVuaWVkKHVzZXJNZWRpYUlELCB0b1dlYkNvcmUocmVhc29uKSwgaW52
YWxpZENvbnN0cmFpbnQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7CiAgICAg
VU5VU0VEX1BBUkFNKGludmFsaWRDb25zdHJhaW50KTsKQEAgLTI5NiwxMSArMjk2LDExIEBAIGJv
b2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdyYW50QWNjZXNzKGNv
bnN0IFVzZXJNZWRpYVBlcm1pc3NpCiAgICAgfQogCiAgICAgKyttX2hhc1BlbmRpbmdDYXB0dXJl
OwotICAgIG1fcGFnZS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQgeyByZXF1ZXN0LnVz
ZXJNZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9EZXZpY2UoKSwgcmVxdWVzdC52aWRlb0RldmljZSgp
LCByZXF1ZXN0LmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKHRoaXMpXSB7CisgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCB7IHJlcXVlc3QudXNlck1l
ZGlhSUQoKSwgcmVxdWVzdC5hdWRpb0RldmljZSgpLCByZXF1ZXN0LnZpZGVvRGV2aWNlKCksIHJl
cXVlc3QuZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgLS1tX2hhc1BlbmRpbmdDYXB0dXJlOwotICAgIH0sIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTYwOCw3ICs2
MDgsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjplbnVt
ZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSh1aW50NgogCiAgICAgICAgICAgICBib29sIHJldmVh
bElkc0FuZExhYmVscyA9IG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MgfHwgd2FzR3JhbnRlZFZp
ZGVvT3JBdWRpb0FjY2VzcyhmcmFtZUlELCB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5nZXQoKSwg
dG9wTGV2ZWxEb2N1bWVudE9yaWdpbi5nZXQoKSk7CiAKLSAgICAgICAgICAgIG1fcGFnZS5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVNZWRpYURldmljZUVudW1l
cmF0aW9uIHsgdXNlck1lZGlhSUQsIGNvbXB1dGVGaWx0ZXJlZERldmljZUxpc3QocmV2ZWFsSWRz
QW5kTGFiZWxzLCBkZXZpY2VJREhhc2hTYWx0KSwgZGV2aWNlSURIYXNoU2FsdCwgb3JpZ2luSGFz
UGVyc2lzdGVudEFjY2VzcyB9LCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICAgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlv
biB7IHVzZXJNZWRpYUlELCBjb21wdXRlRmlsdGVyZWREZXZpY2VMaXN0KHJldmVhbElkc0FuZExh
YmVscywgZGV2aWNlSURIYXNoU2FsdCksIGRldmljZUlESGFzaFNhbHQsIG9yaWdpbkhhc1BlcnNp
c3RlbnRBY2Nlc3MgfSk7CiAgICAgICAgIH0pOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCmluZGV4IDI0ODE4MmQ4MDky
Li5kYjE4YTQ1YjAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dl
c3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuY3BwCkBAIC02NiwxMCArNjYsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0
IG1pbmltdW1TY3JvbGxFdmVudFJhdGlvRm9yU3dpcGUgPSAwLjU7CiBzdGF0aWMgY29uc3QgZmxv
YXQgc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uID0gMC41
OwogI2VuZGlmCiAKLXN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkKK3N0YXRpYyBIYXNoTWFw
PFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250
cm9sbGVyc0ZvckFsbFBhZ2VzKCkKIHsKICAgICAvLyBUaGUga2V5IGluIHRoaXMgbWFwIGlzIHRo
ZSBhc3NvY2lhdGVkIHBhZ2UgSUQuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
dWludDY0X3QsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+PiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJz
OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKICAgICByZXR1cm4g
dmlld0dlc3R1cmVDb250cm9sbGVycy5nZXQoKTsKIH0KIApAQCAtMTAzLDcgKzEwMyw3IEBAIHZv
aWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbVByb2Nlc3MoKQogICAgIGlm
ICghbV9pc0Nvbm5lY3RlZFRvUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93ZWJQ
YWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dl
c3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBh
Z2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9pc0Nvbm5lY3Rl
ZFRvUHJvY2VzcyA9IGZhbHNlOwogfQogCkBAIC0xMTIsMTEgKzExMiwxMSBAQCB2b2lkIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6Y29ubmVjdFRvUHJvY2VzcygpCiAgICAgaWYgKG1faXNDb25uZWN0
ZWRUb1Byb2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nl
c3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgKnRoaXMpOwor
ICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQ
cm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgbV9pc0Nvbm5lY3RlZFRvUHJv
Y2VzcyA9IHRydWU7CiB9CiAKLVZpZXdHZXN0dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVDb250
cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZSh1aW50NjRfdCBwYWdlSUQsIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6R2VzdHVyZUlEIGdlc3R1cmVJRCkKK1ZpZXdHZXN0dXJlQ29udHJvbGxlciog
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6R2VzdHVyZUlEIGdlc3R1cmVJRCkKIHsK
ICAgICBhdXRvIGdlc3R1cmVDb250cm9sbGVySXRlciA9IHZpZXdHZXN0dXJlQ29udHJvbGxlcnNG
b3JBbGxQYWdlcygpLmZpbmQocGFnZUlEKTsKICAgICBpZiAoZ2VzdHVyZUNvbnRyb2xsZXJJdGVy
ID09IHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpLmVuZCgpKQpAQCAtNTQ3LDcg
KzU0Nyw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpmb3JjZVJlcGFpbnRJZk5lZWRl
ZCgpCiAKICAgICBtX2hhc091dHN0YW5kaW5nUmVwYWludFJlcXVlc3QgPSB0cnVlOwogCi0gICAg
dWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdl
SUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0g
bV9jdXJyZW50R2VzdHVyZUlEOwogICAgIG1fd2ViUGFnZVByb3h5LmZvcmNlUmVwYWludChWb2lk
Q2FsbGJhY2s6OmNyZWF0ZShbcGFnZUlELCBnZXN0dXJlSURdIChDYWxsYmFja0Jhc2U6OkVycm9y
IGVycm9yKSB7CiAgICAgICAgIGlmIChhdXRvIGdlc3R1cmVDb250cm9sbGVyID0gY29udHJvbGxl
ckZvckdlc3R1cmUocGFnZUlELCBnZXN0dXJlSUQpKQpAQCAtNjE3LDcgKzYxNyw3IEBAIHZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjpyZXF1ZXN0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25J
Zk5lZWRlZCgpCiAgICAgYXV0byYgcHJvY2VzcyA9IG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFs
UGFnZVByb3h5KCkgPyBtX3dlYlBhZ2VQcm94eS5wcm92aXNpb25hbFBhZ2VQcm94eSgpLT5wcm9j
ZXNzKCkgOiBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCk7CiAgICAgYXV0byB0aHJlc2hvbGQgPSBt
X3NuYXBzaG90UmVtb3ZhbFRyYWNrZXIucmVuZGVyVHJlZVNpemVUaHJlc2hvbGQoKTsKIAotICAg
IHByb2Nlc3Muc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6U2V0
UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQodGhyZXNob2xkKSwgbV93ZWJQYWdl
UHJveHkucGFnZUlEKCkpOworICAgIHByb2Nlc3Muc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvcjo6U2V0UmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQo
dGhyZXNob2xkKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aAppbmRleCA0MzFjMjc2NmQwOC4uYzE2NzBkM2E5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTE3NSw3
ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7CiAKLSAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyRm9y
R2VzdHVyZSh1aW50NjRfdCBwYWdlSUQsIEdlc3R1cmVJRCk7CisgICAgc3RhdGljIFZpZXdHZXN0
dXJlQ29udHJvbGxlciogY29udHJvbGxlckZvckdlc3R1cmUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIEdlc3R1cmVJRCk7CiAKICAgICBzdGF0aWMgR2VzdHVyZUlEIHRha2VOZXh0R2VzdHVyZUlE
KCk7CiAgICAgdm9pZCB3aWxsQmVnaW5HZXN0dXJlKFZpZXdHZXN0dXJlVHlwZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCmluZGV4IGYyZTdiOTM0MDU3
Li45OTFkYzJmY2ZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRl
ZExpbmtTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtT
dG9yZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OndlYlBy
b2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZQogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CiAKLXZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlz
aXRlZExpbmtIYXNoRnJvbVBhZ2UodWludDY0X3QgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNoIGxp
bmtIYXNoKQordm9pZCBWaXNpdGVkTGlua1N0b3JlOjphZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFn
ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFNoYXJlZFN0cmluZ0hhc2ggbGlua0hhc2gpCiB7CiAg
ICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdl
SUQpKSB7CiAgICAgICAgIGlmICghd2ViUGFnZVByb3h5LT5hZGRzVmlzaXRlZExpbmtzKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggMDZmMjBiYTkx
Y2IuLjAyYjQ5YmFjNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNp
dGVkTGlua1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtT
dG9yZS5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRJbnZhbGlkYXRl
U2hhcmVkTWVtb3J5KCkgZmluYWw7CiAgICAgdm9pZCBkaWRVcGRhdGVTaGFyZWRTdHJpbmdIYXNo
ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2g+JiBhZGRlZEhhc2hlcywg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2g+JiByZW1vdmVkSGFzaGVzKSBm
aW5hbDsKIAotICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UodWludDY0X3QgcGFn
ZUlELCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoKTsKKyAgICB2b2lkIGFkZFZpc2l0ZWRMaW5r
SGFzaEZyb21QYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRTdHJp
bmdIYXNoKTsKIAogICAgIHZvaWQgc2VuZFN0b3JlSGFuZGxlVG9Qcm9jZXNzKFdlYlByb2Nlc3NQ
cm94eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlu
a1N0b3JlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtT
dG9yZS5tZXNzYWdlcy5pbgppbmRleCBlNzg2MmUzNjViMC4uMmU2NmM0MjgwOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5p
bgpAQCAtMjEsNSArMjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBWaXNpdGVk
TGlua1N0b3JlIHsKLSAgICBBZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGxpbmtIYXNoKQorICAgIEFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgbGlua0hhc2gpCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRo
ZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5k
ZXggYjVhNWM4MjM0ZDguLjk4MDVlMDE1NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC00NSwxMiArNDUsMTIgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6V2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHkpCiAg
ICAgOiBtX3dlYlBhZ2VQcm94eSh3ZWJQYWdlUHJveHkpCiB7Ci0gICAgbV93ZWJQYWdlUHJveHku
cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFn
ZUlEKCksICp0aGlzKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpLCAqdGhp
cyk7CiB9CiAKIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5Ojp+V2ViQXV0aGVudGlj
YXRvckNvb3JkaW5hdG9yUHJveHkoKQogewotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsK
KyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6bWFrZUNyZWRlbnRpYWwodWludDY0X3QgbWVz
c2FnZUlkLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGhhc2gsIGNvbnN0IFdlYkNvcmU6OlB1Ymxp
Y0tleUNyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMmIG9wdGlvbnMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCmluZGV4IDg3YjBhZmMyMGMyLi4w
ZGJlMGFmYjQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRWRpdENv
bW1hbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRWRpdENvbW1h
bmRQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBXZWJFZGl0Q29tbWFuZFByb3h5Ojp1
bmFwcGx5KCkKICAgICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVbmFwcGx5RWRpdENvbW1hbmQobV9jb21tYW5kSUQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5
bmNSZXBseSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVbmFwcGx5RWRp
dENvbW1hbmQobV9jb21tYW5kSUQpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2
ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAgICAgbV9wYWdlLT5yZWdpc3RlckVkaXRDb21t
YW5kKCp0aGlzLCBVbmRvT3JSZWRvOjpSZWRvKTsKIH0KIApAQCAtNjQsNyArNjQsNyBAQCB2b2lk
IFdlYkVkaXRDb21tYW5kUHJveHk6OnJlYXBwbHkoKQogICAgIGlmICghbV9wYWdlIHx8ICFtX3Bh
Z2UtPmhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFuZChtX2Nv
bW1hbmRJRCksIG1fcGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJRCksIElQQzo6U2VuZE9w
dGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBt
X3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1hbmQoKnRoaXMsIFVuZG9PclJlZG86OlVuZG8pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4IDVjODUxYjcy
NzU1Li5iMDFiMzA1MDUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94
eS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0
IFVSTCYgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMSW5GcmFtZSh1cmws
IG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFVSTEluRnJhbWUodXJsLCBtX2ZyYW1lSUQpKTsKIH0KIAogdm9pZCBX
ZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNv
bnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBV
UkwmIGJhc2VVUkwpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZERh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUCiAg
ICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhSW5GcmFtZShkYXRhLCBNSU1FVHlwZSwg
ZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhSW5GcmFtZShkYXRhLCBN
SU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQpKTsKIH0KIAogdm9pZCBX
ZWJGcmFtZVByb3h5OjpzdG9wTG9hZGluZygpIGNvbnN0CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9p
ZCBXZWJGcmFtZVByb3h5OjpzdG9wTG9hZGluZygpIGNvbnN0CiAgICAgaWYgKCFtX3BhZ2UtPmhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nRnJhbWUobV9mcmFtZUlEKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
dG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCkpOwogfQogICAgIAogYm9vbCBXZWJGcmFtZVByb3h5
OjpjYW5Qcm92aWRlU291cmNlKCkgY29uc3QKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIFdlYkZy
YW1lUHJveHk6OmNvbGxhcHNlU2VsZWN0aW9uKCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29sbGFwc2VTZWxlY3Rpb25JbkZy
YW1lKG1fZnJhbWVJRCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggOGU5M2IxZGMyZDAu
LjNmOGJmMTBiNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcApAQCAtNDQsMjUgKzQ0LDI1IEBAIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBw
YWdlLCBXZWJGdWxsCiAgICAgOiBtX3BhZ2UocGFnZSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkK
IHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFn
ZUlEKCksICp0aGlzKTsKKyAgICBtX3BhZ2UucHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMpOwogfQogCiBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5Ojp+V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eSgpCiB7Ci0gICAgbV9wYWdl
LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlE
KCkudG9VSW50NjQoKSk7CiAgICAgbV9jbGllbnQuY2xvc2VGdWxsU2NyZWVuTWFuYWdlcigpOwog
fQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFbnRlckZ1bGxTY3JlZW4o
KQogewogICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50KCkud2lsbEVudGVyRnVsbHNjcmVlbigm
bV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjpXaWxsRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRW50ZXJGdWxs
U2NyZWVuKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVy
RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS5kaWRFbnRlckZ1
bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRF
bnRlckZ1bGxTY3JlZW4oKSk7CiAKICAgICBpZiAobV9wYWdlLmlzQ29udHJvbGxlZEJ5QXV0b21h
dGlvbigpKSB7CiAgICAgICAgIGlmIChXZWJBdXRvbWF0aW9uU2Vzc2lvbiogYXV0b21hdGlvblNl
c3Npb24gPSBtX3BhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24o
KSkKQEAgLTczLDEzICs3MywxMyBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRp
ZEVudGVyRnVsbFNjcmVlbigpCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxF
eGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS53aWxsRXhp
dEZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpX
aWxsRXhpdEZ1bGxTY3JlZW4oKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50KCku
ZGlkRXhpdEZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxTY3JlZW4oKSwgbV9wYWdl
LnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCkpOwogICAgIAogICAgIGlmIChtX3BhZ2UuaXNDb250cm9s
bGVkQnlBdXRvbWF0aW9uKCkpIHsKICAgICAgICAgaWYgKFdlYkF1dG9tYXRpb25TZXNzaW9uKiBh
dXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRvbWF0
aW9uU2Vzc2lvbigpKQpAQCAtODksMTIgKzg5LDEyIEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYm9vbCBhbmltYXRpbmcpCiB7Ci0gICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0QW5p
bWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0QW5pbWF0aW5nRnVsbFNj
cmVlbihhbmltYXRpbmcpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpy
ZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlcXVlc3RFeGl0RnVsbFNjcmVlbigpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFu
YWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEwOCwyNyAr
MTA4LDI3IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c3VwcG9ydHNGdWxsU2Ny
ZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9uCiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eTo6c2F2ZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBtX3BhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTYXZlU2Nyb2xsUG9zaXRpb24o
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNj
cmVlbk1hbmFnZXI6OlNhdmVTY3JvbGxQb3NpdGlvbigpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5OjpyZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogewotICAgIG1fcGFnZS5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlc3RvcmVTY3Jv
bGxQb3NpdGlvbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkpOwogfQogCiB2
b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5JbnNldHMoY29uc3Qg
V2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGluc2V0cykKIHsKLSAgICBtX3BhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuSW5zZXRz
KGluc2V0cyksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuSW5zZXRzKGluc2V0cykpOwogfQogCiB2
b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5BdXRvSGlkZUR1cmF0
aW9uKFNlY29uZHMgZHVyYXRpb24pCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1dG9IaWRlRHVyYXRpb24o
ZHVyYXRpb24pLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1dG9IaWRlRHVyYXRpb24oZHVyYXRp
b24pKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRGdWxsc2NyZWVu
Q29udHJvbHNIaWRkZW4oYm9vbCBoaWRkZW4pCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkNvbnRyb2xzSGlk
ZGVuKGhpZGRlbiksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oaGlkZGVu
KSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y2xvc2UoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDEyYmIyNjFk
MDdjLi4wM2EwYTllNmUwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
SW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3Bl
Y3RvclByb3h5LmNwcApAQCAtNjYsNyArNjYsNyBAQCBXZWJJbnNwZWN0b3JQcm94eTo6V2ViSW5z
cGVjdG9yUHJveHkoV2ViUGFnZVByb3h5KiBpbnNwZWN0ZWRQYWdlKQogewogICAgIGlmIChpbnNw
ZWN0ZWRQYWdlICYmIGluc3BlY3RlZFBhZ2UtPmhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKICAgICAg
ICAgbV9pbnNwZWN0ZWRQYWdlID0gaW5zcGVjdGVkUGFnZTsKLSAgICAgICAgbV9pbnNwZWN0ZWRQ
YWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCAq
dGhpcyk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgfQogfQog
CkBAIC04OCw3ICs4OCw3IEBAIFdlYlByZWZlcmVuY2VzJiBXZWJJbnNwZWN0b3JQcm94eTo6aW5z
cGVjdG9yUGFnZVByZWZlcmVuY2VzKCkgY29uc3QKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Omlu
dmFsaWRhdGUoKQogewogICAgIGlmIChtX2luc3BlY3RlZFBhZ2UpCi0gICAgICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIGNsb3NlRnJv
bnRlbmRQYWdlQW5kV2luZG93KCk7CiAgICAgcGxhdGZvcm1JbnZhbGlkYXRlKCk7CkBAIC0xMDEs
NyArMTAxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpKTsKIH0KIAog
Ly8gUHVibGljIEFQSXMKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
Ojpjb25uZWN0KCkKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAogICAgIG1faW5zcGVjdGVk
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvckludGVycnVwdERpc3Bh
dGNoZXI6Ok5vdGlmeU5lZWREZWJ1Z2dlckJyZWFrKCksIDApOwotICAgIG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvdygpLCBtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U2hvdygpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hv
dygpCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2UoKQog
ICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3Bl
Y3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkNsb3NlKCks
IG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpKTsKIAogICAgIGNsb3NlRnJvbnRlbmRQYWdl
QW5kV2luZG93KCk7CiB9CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6cmVvcGVuKCkKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnJlc2V0KCkKIHsKICAgICBpZiAo
bV9pbnNwZWN0ZWRQYWdlKSB7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5z
cGVjdGVkUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5w
YWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgbV9pbnNwZWN0ZWRQYWdlID0gbnVsbHB0cjsK
ICAgICB9CiB9CkBAIC0xOTYsMTAgKzE5NiwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp1
cGRhdGVGb3JOZXdQYWdlUHJvY2VzcyhXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiAgICAg
QVNTRVJUKGluc3BlY3RlZFBhZ2UpOwogCiAgICAgbV9pbnNwZWN0ZWRQYWdlID0gaW5zcGVjdGVk
UGFnZTsKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5z
cGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nl
c3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwg
KnRoaXMpOwogCiAgICAgaWYgKG1faW5zcGVjdG9yUGFnZSkKLSAgICAgICAgbV9pbnNwZWN0b3JQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlVwZGF0ZUNvbm5l
Y3Rpb24oKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9y
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlVwZGF0ZUNvbm5lY3Rpb24oKSk7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJUEM6
OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSWRlbnRpZmkKICAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTZXRGcm9udGVuZENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIp
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25J
ZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkK
QEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgp
CiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9pbnNw
ZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNob3dDb25zb2xlKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpzaG93UmVzb3VyY2VzKCkKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpzaG93UmVzb3VyY2VzKCkKIAogICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCi0g
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTaG93UmVzb3VyY2VzKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5z
cGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCkp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93VGltZWxpbmVzKCkKQEAgLTIzNyw3
ICsyMzcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93VGltZWxpbmVzKCkKIAogICAg
IGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93VGltZWxpbmVzKCksIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpTaG93VGltZWxpbmVzKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCkBAIC0yNDcs
NyArMjQ3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZy
YW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQogCiAgICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAK
LSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgbV9pbnNwZWN0
ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEJvdHRvbSgpCkBAIC0yNzgsMTkg
KzI3OCwxOSBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUg
c2lkZSkKICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJl
bmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKHRydWUpOwogCi0gICAgbV9pbnNwZWN0
ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hl
ZCh0cnVlKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpKTsKIAogICAg
IHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkgewogICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJv
dHRvbToKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpBdHRhY2hlZEJvdHRvbSgpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEF0dGFj
aG1lbnRTaWRlOjpSaWdodDoKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSwgbV9pbnNwZWN0b3JQ
YWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBBdHRhY2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2lu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRMZWZ0KCkpOwogICAgICAgICBicmVhazsK
ICAgICB9CiAKQEAgLTMwNyw4ICszMDcsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRh
Y2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZVByZWZlcmVu
Y2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoZmFsc2UpOwogCi0gICAgbV9pbnNwZWN0
ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hl
ZChmYWxzZSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwotICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hlZCgpLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpKTsKKyAgICBtX2luc3BlY3Rv
clBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hlZCgpKTsKIAogICAg
IHBsYXRmb3JtRGV0YWNoKCk7CiB9CkBAIC0zNDEsOSArMzQxLDkgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2lzUHJvZmlsaW5nUGFnZSkKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BQYWdlUHJvZmlsaW5nKCkpOwogICAgIGVsc2UKLSAgICAg
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTdGFydFBhZ2VQcm9maWxpbmcoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAg
ICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydFBh
Z2VQcm9maWxpbmcoKSk7CiAKICAgICAvLyBGSVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3Rp
ZnkgdXMgb24gc3RhdGUgY2hhbmdlcy4KICAgICBtX2lzUHJvZmlsaW5nUGFnZSA9ICFtX2lzUHJv
ZmlsaW5nUGFnZTsKQEAgLTM1NiwxMCArMzU2LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnRvZ2dsZUVsZW1lbnRTZWxlY3Rpb24oKQogCiAgICAgaWYgKG1fZWxlbWVudFNlbGVjdGlvbkFj
dGl2ZSkgewogICAgICAgICBtX2lnbm9yZUVsZW1lbnRTZWxlY3Rpb25DaGFuZ2UgPSB0cnVlOwot
ICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OlN0b3BFbGVtZW50U2VsZWN0aW9uKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkp
OworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
U3RvcEVsZW1lbnRTZWxlY3Rpb24oKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29ubmVjdCgp
OwotICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlN0YXJ0RWxlbWVudFNlbGVjdGlvbigpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlN0YXJ0RWxlbWVudFNlbGVjdGlvbigpKTsKICAgICB9CiB9CiAKQEAgLTM5MSw3ICszOTEs
NyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2UoKQogCiAgICAg
dHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSwgbV9pbnNwZWN0ZWRQYWdlKTsKIAot
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQ
YWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCAqdGhpcyk7
CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuYXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVS
TCgqbV9pbnNwZWN0b3JQYWdlLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yQmFzZVVSTCgp
KTsKIH0KIApAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW5M
b2NhbEluc3BlY3RvckZyb250ZW5kKGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzCiAgICAg
aWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hD
b25uZWN0aW9uKG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0LCBpbnNwZWN0
aW9uTGV2ZWwoKSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24o
bV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgbV91bmRlclRlc3QsIGluc3BlY3Rpb25MZXZlbCgp
KSk7CiAKICAgICBBU1NFUlQoIW1faXNBY3RpdmVGcm9udGVuZCk7CiAgICAgbV9pc0FjdGl2ZUZy
b250ZW5kID0gdHJ1ZTsKQEAgLTQyMywyNiArNDIzLDI2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6Om9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVy
VGVzCiAgICAgICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwogICAgICAg
ICBtX2F0dGFjaG1lbnRTaWRlID0gc3RhdGljX2Nhc3Q8QXR0YWNobWVudFNpZGU+KGluc3BlY3Rv
clBhZ2VQcmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFjaG1lbnRTaWRlKCkpOwogCi0gICAgICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
U2V0QXR0YWNoZWQobV9pc0F0dGFjaGVkKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7Cisg
ICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRB
dHRhY2hlZChtX2lzQXR0YWNoZWQpKTsKIAogICAgICAgICBpZiAobV9pc0F0dGFjaGVkKSB7CiAg
ICAgICAgICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICAgICAgICAgIGNhc2Ug
QXR0YWNobWVudFNpZGU6OkJvdHRvbToKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20o
KSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNp
ZGU6OlJpZ2h0OgotICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9y
UGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkxlZnQ6Ci0gICAg
ICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsK
KyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpBdHRhY2hlZExlZnQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSk7CiAKLSAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldERvY2tp
bmdVbmF2YWlsYWJsZSghbV9jYW5BdHRhY2gpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0dGFjaCkpOwogICAgIH0KIAogICAgIG1faW5z
cGVjdG9yUGFnZS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCBtX3VuZGVyVGVzdCA/IFdlYkluc3Bl
Y3RvclByb3h5OjppbnNwZWN0b3JUZXN0UGFnZVVSTCgpIDogV2ViSW5zcGVjdG9yUHJveHk6Omlu
c3BlY3RvclBhZ2VVUkwoKSkpOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6Om9wZW4oKQogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNPcGVuaW5nKG1faXNPcGVu
aW5nLCB0cnVlKTsKICAgICBtX2lzVmlzaWJsZSA9IHRydWU7Ci0gICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZSht
X2lzVmlzaWJsZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9y
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlz
aWJsZSkpOwogCiAgICAgaWYgKG1faXNBdHRhY2hlZCkKICAgICAgICAgcGxhdGZvcm1BdHRhY2go
KTsKQEAgLTQ4NSw4ICs0ODUsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjbG9zZUZyb250
ZW5kUGFnZUFuZFdpbmRvdygpCiAKICAgICB1bnRyYWNrSW5zcGVjdG9yUGFnZShtX2luc3BlY3Rv
clBhZ2UpOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSk7
CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKIAogICAg
IGlmIChtX2lzQWN0aXZlRnJvbnRlbmQpIHsKICAgICAgICAgbV9pc0FjdGl2ZUZyb250ZW5kID0g
ZmFsc2U7CkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNo
QXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1faW5zcGVjdG9yUGFnZSAmJiAhbV91bmRlclRlc3QpCi0gICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXREb2Nr
aW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OlNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9jYW5BdHRhY2gpKTsKIAogICAgIHBsYXRmb3JtQXR0
YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChtX2NhbkF0dGFjaCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2NTZjOGRjYzU5Yy4uOWQ4MTg0YTc2OTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzgxLDEyICszODEs
MTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvck1vc3RWaXNpYmxlV2ViUGFnZUlmQW55KFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihzZWxl
Y3RlZFBhZ2UpOwogfQogCi1SZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQ
YWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbnQ2NF90
IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKK1Jl
ZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGll
bnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZWY8
QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlSUQsIFdU
Rk1vdmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHko
UGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRf
dCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCitX
ZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKICAgICA6IG1fcGFnZUNsaWVudChtYWtlV2Vh
a1B0cihwYWdlQ2xpZW50KSkKICAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3Vy
YXRpb24pKQogICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZp
Z2F0aW9uQ2xpZW50PigpKQpAQCAtNDM1LDcgKzQzNSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vzcywg
dWluCiAjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6
bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0cnVj
dG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFtX2NvbmZpZ3Vy
YXRpb24tPmRyYXdzQmFja2dyb3VuZCgpKQogICAgICAgICBtX2JhY2tncm91bmRDb2xvciA9IENv
bG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CkBAIC00NjcsNyArNDY3LDcgQEAgV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCB1aW4KICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgZGlkQXR0
YWNoVG9SdW5uaW5nUHJvY2VzcygpOwogCi0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJ
RCwgKnRoaXMpOworICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwg
KnRoaXMpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBEZXByZWNhdGVkR2xvYmFs
U2V0dGluZ3M6OnNldERpc2FibGVTY3JlZW5TaXplT3ZlcnJpZGUocHJlZmVyZW5jZXNTdG9yZSgp
LmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6ZGlzYWJsZVNjcmVlblNpemVP
dmVycmlkZUtleSgpKSk7CkBAIC00ODksNyArNDg5LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1
aW4KIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+d2ViUGFnZShtX3BhZ2VJ
RCkgIT0gdGhpcyk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtNjEzLDcgKzYxMyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVu
dD4mJiB1aUNsaWVudCkKICAgICBtX3VpQ2xpZW50ID0gV1RGTW92ZSh1aUNsaWVudCk7CiAKICAg
ICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwobV91aUNsaWVu
dC0+Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkpLCBtX3BhZ2VJRCk7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5l
bChtX3VpQ2xpZW50LT5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSkpOwogCiAgICAg
c2V0Q2FuUnVuTW9kYWwobV91aUNsaWVudC0+Y2FuUnVuTW9kYWwoKSk7CiAgICAgc2V0TmVlZHNG
b250QXR0cmlidXRlcyhtX3VpQ2xpZW50LT5uZWVkc0ZvbnRBdHRyaWJ1dGVzKCkpOwpAQCAtNjMw
LDcgKzYzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4mCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGhhc0NsaWVudCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudCho
YXNDbGllbnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpbmRDbGllbnQoc3RkOjp1
bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBmaW5kQ2xpZW50KQpAQCAtNzA4LDEwICs3MDgs
MTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAg
QVNTRVJUKCFoYXNSdW5uaW5nUHJvY2VzcygpKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3M6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIFdl
YlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwotICAgIG1fcHJvY2Vzcy0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBhdXRvJiBwcm9jZXNzUG9vbCA9IG1fcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKTsKIApAQCAtNzIzLDcgKzcyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVu
Y2hQcm9jZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKICAg
ICBtX2hhc1J1bm5pbmdQcm9jZXNzID0gdHJ1ZTsKIAogICAgIG1fcHJvY2Vzcy0+YWRkRXhpc3Rp
bmdXZWJQYWdlKCp0aGlzLCBXZWJQcm9jZXNzUHJveHk6OkJlZ2luc1VzaW5nRGF0YVN0b3JlOjpZ
ZXMpOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKKyAgICBtX3By
b2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELnRvVUludDY0KCksICp0aGlzKTsKIAogICAgIGZpbmlz
aEF0dGFjaGluZ1RvV2ViUHJvY2VzcyhJc1Byb2Nlc3NTd2FwOjpObyk7CiB9CkBAIC03NjMsNyAr
NzYzLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUo
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3Bl
bmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSk7CiAgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1
ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZy
YW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSk7CiAKLSAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBS
SXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBiYWNr
L2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2lu
Z1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJv
bUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CisgICAgTE9HKFByb2Nlc3NTd2FwcGlu
ZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZv
ciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCku
dG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmlu
ZygpIDogMCk7CiAKICAgICAvLyBJZiB0aGUgY2xpZW50IGZvcmNlZCBhIHN3YXAgdGhlbiBpdCBt
YXkgbm90IGJlIHdlYi1jb21wYXRpYmxlIHRvIGtlZXAgdGhlIHByZXZpb3VzIHBhZ2UgYmVjYXVz
ZSBvdGhlciB3aW5kb3dzIG1heSBoYXZlIGFuIG9wZW5lciBsaW5rIHRvIGl0LiBXZSB0aHVzIGNs
b3NlIGl0IGFzIHNvb24gYXMgd2UKICAgICAvLyBjYW4gZG8gc28gd2l0aG91dCBmbGFzaGluZy4K
QEAgLTc4MSw3ICs3ODEsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdl
SWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogdm9pZCBXZWJQYWdl
UHJveHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBz
dGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlYSwgUmVmUHRyPFdl
YkZyYW1lUHJveHk+JiYgbWFpbkZyYW1lKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3dhcFRvV2ViUHJvY2Vzczogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3dh
cFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcHJv
Y2VzcyA9IFdURk1vdmUocHJvY2Vzcyk7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9j
ZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CkBAIC03OTYsNyArNzk2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBz
dGQ6OnVuaXF1ZV8KICAgICBtX2hhc1J1bm5pbmdQcm9jZXNzID0gdHJ1ZTsKIAogICAgIG1fcHJv
Y2Vzcy0+YWRkRXhpc3RpbmdXZWJQYWdlKCp0aGlzLCBXZWJQcm9jZXNzUHJveHk6OkJlZ2luc1Vz
aW5nRGF0YVN0b3JlOjpObyk7Ci0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRo
aXMpOworICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgKnRoaXMp
OwogCiAgICAgZmluaXNoQXR0YWNoaW5nVG9XZWJQcm9jZXNzKElzUHJvY2Vzc1N3YXA6Olllcyk7
CiB9CkBAIC04NzMsMTAgKzg3MywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9S
dW5uaW5nUHJvY2VzcygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6
bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JS
ZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBp
cyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICAKQEAgLTg4NSwxNCArODg1LDE0IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAgICAgbGF1
bmNoUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbik7CiAKICAgICBpZiAoIW1fYmFja0ZvcndhcmRM
aXN0LT5jdXJyZW50SXRlbSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQ6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlUmVs
b2FkTmF2aWdhdGlvbigpOwogCiAgICAgLy8gV2UgYWxsb3cgc3RhbGUgY29udGVudCB3aGVuIHJl
bG9hZGluZyBhIFdlYlByb2Nlc3MgdGhhdCdzIGJlZW4ga2lsbGVkIG9yIGNyYXNoZWQuCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0o
KS0+aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2
aWdhdGlvbklEKCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwg
RnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC05MDAsMTAgKzkw
MCwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nl
c3NGb3JSZWxvYWQoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6Omxh
dW5jaFByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAg
ICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFBy
b2Nlc3NXaXRoSXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtOTE1LDcgKzkxNSw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc1dpdGhJ
dGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0CiAKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmln
YXRpb25TdGF0ZS0+Y3JlYXRlQmFja0ZvcndhcmROYXZpZ2F0aW9uKGl0ZW0sIG1fYmFja0Zvcndh
cmRMaXN0LT5jdXJyZW50SXRlbSgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQp
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0Zvcndh
cmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBpdGVtLml0ZW1JRCgpLCBGcmFtZUxv
YWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBpdGVtLml0
ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9u
c2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTk1
Niw3ICs5NTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIGlmIChtX2lzQ2xv
c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJjbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBt
X2lzQ2xvc2VkID0gdHJ1ZTsKIApAQCAtMTAwOSw5ICsxMDA5LDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNsb3NlKCkKIAogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNw
ZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q2xvc2UoKSk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9j
ZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOwogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+Y2xlYXJOb3RpZmljYXRpb25zKHRoaXMpOwogCiAg
ICAgLy8gTnVsbCBvdXQgcmVsYXRlZCBXZWJQYWdlUHJveHkgdG8gYXZvaWQgbGVha3MuCkBAIC0x
MDMxLDE0ICsxMDMxLDE0IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp0cnlDbG9zZSgpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeUNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYgdGhl
IHByb2Nlc3MgYWxsb3dzIGl0LiBPdXIgZ29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0aGUg
cHJvY2Vzcywgc28gd2UgY2hlY2sgYSBwZXItcHJvY2VzcyBzdGF0dXMgYml0LgogICAgIGlmICht
X3Byb2Nlc3MtPmlzU3VkZGVuVGVybWluYXRpb25FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VHJ5Q2xvc2UoKSk7CiAg
ICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CkBAIC0xMDc3LDcgKzEwNzcsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwog
ICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgbGF1bmNoUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3QudXJs
KCkgfSk7CkBAIC0xMDkxLDcgKzEwOTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVl
c3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlcwogewog
ICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlv
bjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0g
bV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTExMTQsMTYgKzExMTQsMTYgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxl
UmVhZFNhbmRib3hFeHRlbnNpb24ocHJvY2Vzcyk7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1l
dGVycyhsb2FkUGFyYW1ldGVycyk7CiAKLSAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kVG9Q
cm9jZXNzKHByb2Nlc3MsIE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1l
dGVycykpOwogICAgIHByb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQog
CiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0
cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxvYWRGaWxlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBw
YWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0
cmluZywgY29ucwogCiAgICAgVVJMIGZpbGVVUkwgPSBVUkwoVVJMKCksIGZpbGVVUkxTdHJpbmcp
OwogICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTQyLDcgKzExNDIsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVj
dG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAg
ICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwg
aXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2Fs
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTY0LDcgKzExNjQsNyBAQCBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0
cmluZywgY29ucwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMp
OwogCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCByZXNv
dXJjZURpcmVjdG9yeVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycykpOwogICAgIG1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlv
bjsKQEAgLTExNzIsMTAgKzExNzIsMTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKIAogUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0
YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiBwYWdl
IGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTg5
LDcgKzExODksNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
LCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8
V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlvbjogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0
aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgQVNTRVJUKCFt
X2lzQ2xvc2VkKTsKIApAQCAtMTIwOSwxOSArMTIwOSwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MsCiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAg
ICBwcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCBiYXNlVVJMKTsKLSAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVy
cyksIG1fcGFnZUlEKTsKKyAgICBzZW5kVG9Qcm9jZXNzKHByb2Nlc3MsIE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycykpOwogICAgIHByb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0
ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGluIHRoZSBw
cm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBub3QgYXR0
ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9hZCBhcyB0
aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKICAgICAvLyBo
YW5kbGVkIHByb3Blcmx5LgogICAgIGlmIChtX2lzQ2xvc2VkIHx8IG1faXNMb2FkaW5nQWx0ZXJu
YXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExvYWQpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xv
c2VkIChvciBvdGhlcik6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9y
IG90aGVyKTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTI1MiwxNiArMTI1MiwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFs
dGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgUwog
CiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCBiYXNlVVJM
KTsKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIHVucmVh
Y2hhYmxlVVJMKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRB
bHRlcm5hdGVIVE1MKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRBbHRlcm5hdGVIVE1MKGxvYWRQYXJhbWV0ZXJzKSk7CiAgICAgbV9w
cm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6
Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZFdlYkFyY2hpdmVEYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xv
c2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI3OSwxNiAr
MTI3OSwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0
YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogICAgIGxvYWRQYXJhbWV0ZXJzLnVz
ZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNl
ckRhdGEpLmdldCgpKTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0
ZXJzKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEo
bG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
TG9hZERhdGEobG9hZFBhcmFtZXRlcnMpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxp
bmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIEludFBvaW50IGRv
Y3VtZW50UG9pbnQsIEludFBvaW50IHNjcmVlblBvaW50KQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJu
YXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBw
YWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBw
YWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTI5OCwyMCArMTI5OCwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmcsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNz
KFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJMKFVSTCgpLCB1cmxTdHJpbmcpIH0pOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11
bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRvY3VtZW50UG9pbnQsIHNjcmVlblBvaW50KSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok5hdmlnYXRlVG9QREZMaW5rV2l0aFNp
bXVsYXRlZENsaWNrKHVybFN0cmluZywgZG9jdW1lbnRQb2ludCwgc2NyZWVuUG9pbnQpKTsKICAg
ICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgInN0b3BMb2FkaW5nOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9wTG9hZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljazogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11
bGF0ZWRDbGljazogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTdG9wTG9hZGluZygpKTsKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsK
ICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmNhbmNlbCgpOwogICAgICAgICBtX3Byb3Zpc2lv
bmFsUGFnZSA9IG51bGxwdHI7CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlbG9hZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNh
bmRib3hFeHRlbnNpb25IYW5kbGU7CiAKQEAgLTEzNDYsNyArMTM0Niw3IEBAIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxv
YWRPcHRpb24+IG9wCiAgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoV2ViQ29yZTo6UmVsb2FkT3B0
aW9uOjpEaXNhYmxlQ29udGVudEJsb2NrZXJzKSkKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0VXNl
ckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChmYWxzZSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlbG9hZChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgb3B0
aW9ucy50b1JhdygpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbG9hZChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwg
b3B0aW9ucy50b1JhdygpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgbV9wcm9jZXNz
LT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9u
OwpAQCAtMTM5OCw3ICsxMzk4LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVt
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJnb1RvQmFja0ZvcndhcmRJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAg
IExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGdvVG9CYWNrRm9yd2FyZEl0ZW0gdG8gaXRl
bSBVUkwgJXMiLCB0aGlzLCBpdGVtLnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQpAQCAtMTQxMiw3ICsxNDEyLDcgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0KICAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVt
SXNJblNhbWVEb2N1bWVudChpdGVtKSkKICAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlv
blN0YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5hdmlnYXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExp
c3QtPmN1cnJlbnRJdGVtKCksIGZyYW1lTG9hZFR5cGUpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZp
Z2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUs
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmln
YXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZy
YW1lTG9hZFR5cGUsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9w
dCkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAg
ICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTE0MjAsMTQgKzE0MjAsMTQgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNj
cm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9u
OiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBp
cyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeVJl
c3RvcmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVk
LCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYmIHJlbW92ZWQpCkBAIC0xNDg5
LDcgKzE0ODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udHJvbGxlZEJ5QXV0b21hdGlv
bihib29sIGNvbnRyb2xsZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENv
bnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJvbGxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGNvbnRyb2xsZWQpKTsK
ICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9u
KG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIG1fY29udHJvbGxlZEJ5QXV0b21hdGlv
bikpOwogfQogCkBAIC0xNTE0LDcgKzE1MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5k
aWNhdGluZyhib29sIGluZGljYXRpbmcpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEluZGljYXRpbmcoaW5kaWNhdGluZyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpKTsKIH0KIAogYm9vbCBXZWJQYWdl
UHJveHk6OmFsbG93c1JlbW90ZUluc3BlY3Rpb24oKSBjb25zdApAQCAtMTU1MCw3ICsxNTUwLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFySW5zcGVjdG9yVGFyZ2V0cygpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCkKIHsKLSAgICBTdHJpbmcgcGFnZVRh
cmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2VJRCk7CisgICAgU3RyaW5nIHBhZ2VU
YXJnZXRJZCA9IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAg
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5jcmVhdGVJbnNwZWN0b3JUYXJnZXQocGFnZVRhcmdldElk
LCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOwogfQogCkBAIC0xNTYxLDcg
KzE1NjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9w
dGlvbmFsPENvbG9yPiYgY29sb3IpCiAKICAgICBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOwog
ICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVu
dEluc2V0KQpAQCAtMTU3Nyw5ICsxNTc3LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENv
bnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCiAgICAgTWFjaFNlbmRSaWdodCBmZW5jZSA9
IG1fZHJhd2luZ0FyZWEtPmNyZWF0ZUZlbmNlKCk7CiAKICAgICBhdXRvIGZlbmNlQXR0YWNobWVu
dCA9IElQQzo6QXR0YWNobWVudChmZW5jZS5sZWFrU2VuZFJpZ2h0KCksIE1BQ0hfTVNHX1RZUEVf
TU9WRV9TRU5EKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRv
cENvbnRlbnRJbnNldEZlbmNlZChjb250ZW50SW5zZXQsIGZlbmNlQXR0YWNobWVudCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXRGZW5j
ZWQoY29udGVudEluc2V0LCBmZW5jZUF0dGFjaG1lbnQpKTsKICNlbHNlCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXQoY29udGVudEluc2V0
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJ
bnNldChjb250ZW50SW5zZXQpKTsKICNlbmRpZgogfQogCkBAIC0xNTkxLDcgKzE1OTEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0VW5kZXJsYXlDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAg
ICAgbV91bmRlcmxheUNvbG9yID0gY29sb3I7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRlcmxh
eUNvbG9yKGNvbG9yKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRVbmRlcmxheUNvbG9yKGNvbG9yKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3
V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCkBAIC0xNjAwLDE0ICsxNjAwLDE0IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGNsb3NlT3ZlcmxheWVkVmlld3MoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpCiB7CiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpWaWV3V2lsbEVuZExpdmVSZXNpemUoKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUmVnaW9uJiByZWdpb24p
CkBAIC0xNzAxLDcgKzE3MDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2lu
ZG93KCkKICAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUgPSBwYWdlQ2xpZW50
KCkudmlld0xheWVySG9zdGluZ01vZGUoKTsKICAgICBpZiAobV9sYXllckhvc3RpbmdNb2RlICE9
IGxheWVySG9zdGluZ01vZGUpIHsKICAgICAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJI
b3N0aW5nTW9kZTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3BhZ2VJRCk7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5n
TW9kZSkpOwogICAgIH0KIH0KIApAQCAtMTc1MCw3ICsxNzUwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgYXV0byBhY3Rpdml0eVN0YXRl
Q2hhbmdlSUQgPSBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPyB0
YWtlTmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCgpIDogc3RhdGljX2Nhc3Q8QWN0aXZpdHlTdGF0
ZUNoYW5nZUlEPihBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzKTsKIAogICAgIGlmIChj
aGFuZ2VkIHx8IGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5
bmNocm9ub3VzIHx8ICFtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmlzRW1wdHko
KSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0
eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlT
dGF0ZUNoYW5nZUlELCBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKSk7CiAKICAg
ICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmNsZWFyKCk7CiAKQEAgLTE4NTMs
NyArMTg1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXllckhvc3RpbmdNb2RlRGlkQ2hhbmdl
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJIb3N0
aW5nTW9kZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVy
SG9zdGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKEFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCkBAIC0xODk1LDIxICsxODk1
LDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBi
b29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXli
b2FyZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5
Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpjbGVhclNlbGVjdGlvbigpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDbGVhclNlbGVjdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Q2xlYXJTZWxlY3Rpb24oKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0
b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCkKIHsKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQo
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZWxlY3Rp
b25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2
YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMTkyMCw3ICsxOTIwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlZhbGlkYXRlQ29tbWFuZChjb21tYW5kTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUs
IGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmluY3JlYXNlTGlzdExldmVs
KCkKQEAgLTE5MjgsNyArMTkyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RM
ZXZlbCgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkluY3JlYXNlTGlzdExldmVs
KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxpc3RM
ZXZlbCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY3JlYXNlTGlzdExldmVsKCkKQEAg
LTE5MzYsNyArMTkzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNyZWFzZUxpc3RMZXZlbCgp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRlY3JlYXNlTGlzdExldmVsKCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZWNyZWFzZUxpc3RMZXZlbCgp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUxpc3RUeXBlKCkKQEAgLTE5NDQsNyAr
MTk0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSgpCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUxpc3RUeXBlKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VMaXN0VHlwZSgpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0
aW9uKQpAQCAtMTk1Miw3ICsxOTUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEJhc2VXcml0
aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24pLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFzZVdyaXRpbmdEaXJlY3Rp
b24oZGlyZWN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVGb250QXR0cmli
dXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2UoKQpAQCAtMTk3Niw3ICsxOTc2LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCBuZWVkc0ZvbnRBdHRyaWJ1
dGVzKQogICAgIG1fbmVlZHNGb250QXR0cmlidXRlcyA9IG5lZWRzRm9udEF0dHJpYnV0ZXM7CiAK
ICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKG5lZWRzRm9udEF0dHJpYnV0
ZXMpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE5lZWRz
Rm9udEF0dHJpYnV0ZXMobmVlZHNGb250QXR0cmlidXRlcykpOwogfQogCiBib29sIFdlYlBhZ2VQ
cm94eTo6bWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oKSBjb25zdApAQCAtMTk5OSw3ICsxOTk5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVV
cGRhdGUoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVkdWxl
RnVsbEVkaXRvclN0YXRlVXBkYXRlKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0
QWxsKCkKQEAgLTIwMDcsNyArMjAwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RBbGwo
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RBbGwoKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEFsbCgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTIwMTgsNyArMjAxOCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSwgY29uc3QgU3RyaW5nJiBhCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUs
IGFyZ3VtZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb21tYW5kTmFtZSwgYXJndW1l
bnQsIGNhbGxiYWNrSUQpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRp
dENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVu
dCkKQEAgLTIwMzEsNyArMjAzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENv
bW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhCiAgICAgaWYg
KGNvbW1hbmROYW1lID09IGlnbm9yZVNwZWxsaW5nQ29tbWFuZE5hbWUpCiAgICAgICAgICsrbV9w
ZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291bnQ7CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgYXJn
dW1lbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVk
aXRDb21tYW5kKGNvbW1hbmROYW1lLCBhcmd1bWVudCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGdW5jdGlvbjx2b2lkKGNv
bnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2spCkBAIC0yMDQyLDcgKzIwNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZv
bnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYgogICAg
IH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmli
dXRlc0F0U2VsZWN0aW9uU3RhcnQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNh
bGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdHRyaWJ1dGVzQ2FsbGJh
Y2soY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKQEAgLTIwNjMsNyArMjA2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRF
ZGl0YWJsZShib29sIGVkaXRhYmxlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRFZGl0YWJsZShlZGl0YWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRFZGl0YWJsZShlZGl0YWJsZSkpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldE1lZGlhU3RyZWFtQ2FwdHVyZU11dGVkKGJvb2wgbXV0ZWQpCkBAIC0yMTI4LDkgKzIxMjgs
OSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdD
b250cm9sbGVyQWN0aW9uIGFjdGlvbiwgRHJhZwogCiAgICAgQVNTRVJUKGRyYWdEYXRhLnBsYXRm
b3JtRGF0YSgpKTsKICAgICBXZWJTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbigqZHJhZ0RhdGEucGxh
dGZvcm1EYXRhKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVy
Zm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24o
KSwgZHJhZ0RhdGEuZ2xvYmFsUG9zaXRpb24oKSwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVy
YXRpb25NYXNrKCksIHNlbGVjdGlvbiwgZHJhZ0RhdGEuZmxhZ3MoKSksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0
aW9uLCBkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpLCBkcmFnRGF0YS5nbG9iYWxQb3NpdGlvbigp
LCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSwgc2VsZWN0aW9uLCBkcmFn
RGF0YS5mbGFncygpKSk7CiAjZWxzZQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEsIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlv
bihhY3Rpb24sIGRyYWdEYXRhLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5z
aW9uc0ZvclVwbG9hZCkpOwogI2VuZGlmCiB9CiAKQEAgLTIxNjAsNyArMjE2MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBj
b25zdCBJbnRQb2ludCYgZ2xvCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFn
RW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBvcGVyYXRpb24pLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9u
LCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0aW9uKSk7CiAgICAgc2V0RHJhZ0NhcmV0UmVjdCh7IH0p
OwogfQogCkBAIC0yMTcyLDEzICsyMTcyLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJm
b3JtRHJhZ09wZXJhdGlvbihib29sIGhhbmRsZWQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3Rh
cnREcmFnKCkKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTdGFydERyYWcoKSwgbV9wYWdlSUQpOwor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTdGFydERyYWcoKSk7CiB9CiAgICAg
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0NhbmNlbGxlZCgpCiB7CiAgICAgaWYgKGhhc1J1bm5p
bmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RHJhZ0NhbmNlbGxlZCgpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRyYWdDYW5jZWxsZWQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmREcmFn
Z2luZygpCkBAIC0yMjc3LDcgKzIyNzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05l
eHRRdWV1ZWRNb3VzZUV2ZW50KCkKICAgICB9CiAKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJ
UHJvY2Vzczogc2VudCBtb3VzZSBldmVudCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VF
dmVudFR5cGVTdHJpbmcoZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCkp
OwogfQogCiAjaWYgTUVSR0VfV0hFRUxfRVZFTlRTCkBAIC0yNDM3LDcgKzI0MzcsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6aGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50JiBldmVudCkKIAogICAgIGlmIChtX2tleUV2ZW50UXVldWUuc2l6ZSgpID09IDEpIHsg
Ly8gT3RoZXJ3aXNlLCBzZW50IGZyb20gRGlkUmVjZWl2ZUV2ZW50IG1lc3NhZ2UgaGFuZGxlci4K
ICAgICAgICAgTE9HKEtleUhhbmRsaW5nLCAiIFVJIHByb2Nlc3M6IHNlbnQga2V5RXZlbnQgZnJv
bSBoYW5kbGVLZXlib2FyZEV2ZW50Iik7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6S2V5RXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OktleUV2ZW50KGV2ZW50KSk7CiAgICAgfQogfQogCkBAIC0yNjQzLDcg
KzI2NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudFN5bmNocm9ub3Vz
bHkoTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNp
dmVuZXNzVGltZXIoKS5zdGFydCgpOwogICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotICAgIGJv
b2wgcmVwbHlSZWNlaXZlZCA9IG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6
OlRvdWNoRXZlbnRTeW5jKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5j
OjpSZXBseShoYW5kbGVkKSwgbV9wYWdlSUQsIDFfcyk7CisgICAgYm9vbCByZXBseVJlY2VpdmVk
ID0gc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jKGV2ZW50KSwgTWVz
c2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jOjpSZXBseShoYW5kbGVkKSwgMV9zKTsKICAg
ICAvLyBJZiB0aGUgc3luYyByZXF1ZXN0IGhhcyB0aW1lZCBvdXQsIHdlIHNob3VsZCBjb25zaWRl
ciB0aGUgZXZlbnQgaGFuZGxlZC4gVGhlIFdlYiBQcm9jZXNzIGlzIHRvbyBidXN5IHRvIGFuc3dl
ciBhbnkgcXVlc3Rpb25zLCBzbyB0aGUgZGVmYXVsdCBhY3Rpb24gaXMgYWxzbyBsaWtlbHkgdG8g
aGF2ZSBpc3N1ZXMuCiAgICAgaWYgKCFyZXBseVJlY2VpdmVkKQogICAgICAgICBoYW5kbGVkID0g
dHJ1ZTsKQEAgLTI2ODcsNyArMjY4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3Vj
aEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgIGlmICghbV9pc1Bh
Z2VTdXNwZW5kZWQpIHsKICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsK
ICAgICAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKLSAgICAg
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSwg
bV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2
ZW50KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fdG91Y2hFdmVudFF1ZXVlLmlzRW1w
dHkoKSkgewogICAgICAgICAgICAgYm9vbCBpc0V2ZW50SGFuZGxlZCA9IGZhbHNlOwpAQCAtMjcw
OCwxMiArMjcwOCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudChjb25z
dCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMp
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsUG9pbnRlcihXZWJDb3JlOjpQb2ludGVySUQgcG9p
bnRlcklkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZG9jdW1lbnRQb2ludCkKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbFBvaW50ZXIocG9pbnRlcklk
LCBkb2N1bWVudFBvaW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNhbmNlbFBvaW50ZXIocG9pbnRlcklkLCBkb2N1bWVudFBvaW50KSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp0b3VjaFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChXZWJDb3JlOjpQb2ludGVy
SUQgcG9pbnRlcklkKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VG91Y2hXaXRoSWRlbnRpZmllcldhc1JlbW92ZWQocG9pbnRlcklkKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoV2l0aElkZW50aWZpZXJXYXNSZW1vdmVkKHBv
aW50ZXJJZCkpOwogfQogI2VuZGlmCiAKQEAgLTI3MjIsNyArMjcyMiw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzY3JvbGxCeShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxh
cml0eSBncmFudWxhCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbEJ5KGRp
cmVjdGlvbiwgZ3JhbnVsYXJpdHkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2Nyb2xsQnkoZGlyZWN0aW9uLCBncmFudWxhcml0eSkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCkBAIC0yNzMwLDcgKzI3MzAs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFy
ZWEoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNlbGVj
dGlvbkluVmlzaWJsZUFyZWEoKSk7CiB9CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTo6UG9saWN5RGVj
aXNpb25TZW5kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQb2xpY3lEZWNpc2lvblNlbmRlcj4gewpA
QCAtMjg3Myw3ICsyODczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVj
aXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdl
UHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21D
b250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNl
cnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1l
bnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1
cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgQVNTRVJUKG1fcHJv
dmlzaW9uYWxQYWdlKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21t
aXRQcm92aXNpb25hbFBhZ2U6IHByZXZpb3VzUElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNpb25h
bFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2
aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBPcHRpb25hbDx1aW50
NjRfdD4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFrZU9w
dGlvbmFsKG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OwogCkBAIC0yODg5
LDE0ICsyODg5LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2Uo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKICAgICBwcm9jZXNzRGlk
VGVybWluYXRlKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6TmF2aWdhdGlvblN3YXApOwogCi0g
ICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBhdXRvKiBuYXZpZ2F0aW9uID0gbmF2
aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihtX3Byb3Zpc2lvbmFsUGFnZS0+bmF2aWdhdGlvbklE
KCkpOwogICAgIGJvb2wgZGlkU3VzcGVuZFByZXZpb3VzUGFnZSA9IG5hdmlnYXRpb24gPyBzdXNw
ZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKCpuYXZpZ2F0aW9uLCBtYWluRnJhbWVJREluUHJldmlv
dXNQcm9jZXNzLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVu
dCgpLCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUpIDogZmFsc2U7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBtX3dl
YnNpdGVEYXRhU3RvcmUucHRyKCkgPT0gJm1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkud2Vi
c2l0ZURhdGFTdG9yZSgpID8gV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Ok5v
IDogV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CiAKICAgICAvLyBU
aGVyZSBpcyBubyB3YXkgd2UnbGwgYmUgYWJsZSB0byByZXR1cm4gdG8gdGhlIHBhZ2UgaW4gdGhl
IHByZXZpb3VzIHBhZ2Ugc28gY2xvc2UgaXQuCiAgICAgaWYgKCFkaWRTdXNwZW5kUHJldmlvdXNQ
YWdlKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCks
IHBhZ2VJRCgpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CiAK
ICAgICBzd2FwVG9XZWJQcm9jZXNzKG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCksIG1fcHJv
dmlzaW9uYWxQYWdlLT50YWtlRHJhd2luZ0FyZWEoKSwgbV9wcm92aXNpb25hbFBhZ2UtPm1haW5G
cmFtZSgpKTsKIApAQCAtMjkxMyw3ICsyOTEzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1p
dFByb3Zpc2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJv
eHk+JiYgc3VzcGVuZGVkUGFnZVByb3h5LCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIG5ld1Byb2Nl
c3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9u
SW5OZXdQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIG5ld1Byb2Nl
c3NQSUQgPSAlaSwgaGFzU3VzcGVuZGVkUGFnZSA9ICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCwgbmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgISFz
dXNwZW5kZWRQYWdlUHJveHkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBuZXdQcm9jZXNzUElEID0gJWksIGhhc1N1c3BlbmRlZFBhZ2UgPSAlaSIsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgbmV3UHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlUHJveHkpOwogICAgIExP
RyhMb2FkaW5nLCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycgaW4gYSBu
ZXcgd2ViIHByb2Nlc3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxv
Z2dpbmdTdHJpbmcoKSk7CiAKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKQEAgLTI5Mzgs
NyArMjkzOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1By
b2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzCiAgICAgaWYgKG1fYmFja0Zvcndh
cmRMaXN0LT5jdXJyZW50SXRlbSgpICYmIChuYXZpZ2F0aW9uLmxvY2tCYWNrRm9yd2FyZExpc3Qo
KSA9PSBMb2NrQmFja0ZvcndhcmRMaXN0OjpZZXMgfHwgbmF2aWdhdGlvbi5sb2NrSGlzdG9yeSgp
ID09IExvY2tIaXN0b3J5OjpZZXMpKSB7CiAgICAgICAgIC8vIElmIFdlYkNvcmUgaXMgc3VwcG9z
ZWQgdG8gbG9jayB0aGUgaGlzdG9yeSBmb3IgdGhpcyBsb2FkLCB0aGVuIHRoZSBuZXcgcHJvY2Vz
cyBuZWVkcyB0byBrbm93IGFib3V0IHRoZSBjdXJyZW50IGhpc3RvcnkgaXRlbSBzbyBpdCBjYW4g
dXBkYXRlCiAgICAgICAgIC8vIGl0IGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgb25lLgotICAg
ICAgICBuZXdQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9y
eUl0ZW1Gb3JSZWF0dGFjaChtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbVN0
YXRlKCkpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmRUb1Byb2Nlc3MobmV3UHJvY2VzcywgTWVz
c2FnZXM6OldlYlBhZ2U6OlNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKG1fYmFja0Zv
cndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtU3RhdGUoKSkpOwogICAgIH0KIAogICAgIC8v
IEZJWE1FOiBXb3JrIG91dCB0aW1pbmcgb2YgcmVzcG9uZGluZyB3aXRoIHRoZSBsYXN0IHBvbGlj
eSBkZWxlZ2F0ZSwgZXRjCkBAIC0yOTg4LDcgKzI5ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0VXNlckFnZW50KFN0cmluZyYmIHVzZXJBZ2VudCkKIAogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0VXNlckFnZW50KG1fdXNlckFnZW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJBZ2VudChtX3VzZXJBZ2VudCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYgYXBwbGljYXRpb25OYW1lKQpAQCAtMzAyNSw3ICszMDI1LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIAogICAgIG1faXNQYWdl
U3VzcGVuZGVkID0gZmFsc2U7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9ucygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpCkBAIC0zMDM1LDcgKzMwMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIAogICAgIG1faXNQYWdlU3Vz
cGVuZGVkID0gdHJ1ZTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpzdXBwb3J0c1RleHRFbmNvZGluZygpIGNv
bnN0CkBAIC0zMDUyLDcgKzMwNTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q3VzdG9tVGV4
dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSkKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZ05hbWUp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VzdG9tVGV4dEVu
Y29kaW5nTmFtZShlbmNvZGluZ05hbWUpKTsKIH0KIAogU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94
eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYpPiYmIGZpbHRlcikgY29uc3QKQEAgLTMwNzQsNyArMzA3NCw3IEBAIFNlc3Npb25TdGF0ZSBX
ZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3
YXJkTGlzdEl0CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVzdG9y
ZUZyb21TZXNzaW9uU3RhdGUoU2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSwgYm9vbCBuYXZpZ2F0
ZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3JlRnJvbVNl
c3Npb25TdGF0ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAKICAgICBtX3Nlc3Npb25SZXN0b3JhdGlvblJlbmRlclRyZWVTaXplID0gMDsK
ICAgICBtX2hpdFJlbmRlclRyZWVTaXplVGhyZXNob2xkID0gZmFsc2U7CkBAIC0zMDgzLDcgKzMw
ODMsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9t
U2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaQogCiAgICAgaWYgKGhhc0JhY2tGb3J3YXJk
TGlzdCkgewogICAgICAgICBtX2JhY2tGb3J3YXJkTGlzdC0+cmVzdG9yZUZyb21TdGF0ZShXVEZN
b3ZlKHNlc3Npb25TdGF0ZS5iYWNrRm9yd2FyZExpc3RTdGF0ZSkpOwotICAgICAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZVNlc3Npb24obV9iYWNrRm9yd2FyZExp
c3QtPml0ZW1TdGF0ZXMoKSksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVzdG9yZVNlc3Npb24obV9iYWNrRm9yd2FyZExpc3QtPml0ZW1TdGF0ZXMoKSkpOwog
CiAgICAgICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24o
KTsKICAgICAgICAgbV9wYWdlTG9hZFN0YXRlLnNldENhbkdvQmFjayh0cmFuc2FjdGlvbiwgbV9i
YWNrRm9yd2FyZExpc3QtPmJhY2tJdGVtKCkpOwpAQCAtMzEzMSw3ICszMTMxLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFRleHRab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0Wm9vbUZhY3RvcihtX3RleHRab29tRmFj
dG9yKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0Wm9v
bUZhY3RvcihtX3RleHRab29tRmFjdG9yKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQ
YWdlWm9vbUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikKQEAgLTMxNDYsNyArMzE0Niw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlWm9vbUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZVpvb21GYWN0b3IobV9wYWdlWm9v
bUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFn
ZVpvb21GYWN0b3IobV9wYWdlWm9vbUZhY3RvcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0
ZXh0Wm9vbUZhY3RvcikKQEAgLTMxNjIsNyArMzE2Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRl
eHRaCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9vbUZh
Y3RvcnMobV9wYWdlWm9vbUZhY3RvciwgbV90ZXh0Wm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhtX3Bh
Z2Vab29tRmFjdG9yLCBtX3RleHRab29tRmFjdG9yKSk7CiB9CiAKIGRvdWJsZSBXZWJQYWdlUHJv
eHk6OnBhZ2Vab29tRmFjdG9yKCkgY29uc3QKQEAgLTMxOTIsNyArMzE5Miw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzY2FsZVBhZ2UoZG91YmxlIHNjYWxlLCBjb25zdCBJbnRQb2ludCYgb3JpZ2lu
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2FsZVBhZ2Uoc2NhbGUsIG9yaWdp
biksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2FsZVBhZ2Uoc2Nh
bGUsIG9yaWdpbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdlSW5WaWV3Q29v
cmRpbmF0ZXMoZG91YmxlIHNjYWxlLCBjb25zdCBJbnRQb2ludCYgY2VudGVySW5WaWV3Q29vcmRp
bmF0ZXMpCkBAIC0zMjA0LDcgKzMyMDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdl
SW5WaWV3Q29vcmRpbmF0ZXMoZG91YmxlIHNjYWxlLCBjb25zdCBJbnRQb2ludCYgY2VudAogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhz
Y2FsZSwgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMoc2NhbGUsIGNlbnRlcklu
Vmlld0Nvb3JkaW5hdGVzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzY2FsZVZpZXcoZG91
YmxlIHNjYWxlKQpAQCAtMzIxNiw3ICszMjE2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxl
Vmlldyhkb3VibGUgc2NhbGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxl
VmlldyhzY2FsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2Fs
ZVZpZXcoc2NhbGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEludHJpbnNpY0Rldmlj
ZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlRmFjdG9yKQpAQCAtMzIzNSw3ICszMjM1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBk
aXNwbGF5SUQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd1NjcmVlbkRp
ZENoYW5nZShkaXNwbGF5SUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6V2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCkpOwogfQogCiBmbG9hdCBXZWJQYWdl
UHJveHk6OmRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKQEAgLTMyNzQsNyArMzI3NCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjphY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2Uo
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2Vzc2liaWxpdHlT
ZXR0aW5nc0RpZENoYW5nZSgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZUZpeGVk
TGF5b3V0KGJvb2wgZml4ZWQpCkBAIC0zMjkxLDcgKzMyOTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBmaXhlZCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0VXNlRml4ZWRMYXlvdXQoZml4ZWQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlRml4ZWRMYXlvdXQoZml4ZWQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQpAQCAt
MzMwNCw3ICszMzA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEZpeGVkTGF5b3V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRG
aXhlZExheW91dFNpemUoc2l6ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRGaXhlZExheW91dFNpemUoc2l6ZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c0hvcml6b250
YWxTY3JvbGxlcikKQEAgLTMzMTcsNyArMzMxNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRB
bHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNj
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsd2F5c1Nob3dzSG9yaXpvbnRh
bFNjcm9sbGVyKGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVy
KGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c1ZlcnRpY2Fs
U2Nyb2xsZXIpCkBAIC0zMzMwLDcgKzMzMzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWx3
YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbAog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Ny
b2xsZXIoYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihhbHdheXNT
aG93c1ZlcnRpY2FsU2Nyb2xsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZv
ckxheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4gbWls
ZXN0b25lcykKQEAgLTMzNDMsNyArMzM0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsaXN0ZW5G
b3JMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+CiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMo
bWlsZXN0b25lcyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0
ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1cHByZXNzQW5pbWF0aW9u
cykKQEAgLTMzNTYsNyArMzM1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Nj
cm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMpCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhzdXBwcmVz
c0FuaW1hdGlvbnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKHN1cHByZXNzQW5pbWF0aW9ucykpOwogfQogCiBi
b29sIFdlYlBhZ2VQcm94eTo6cnViYmVyQmFuZHNBdExlZnQoKSBjb25zdApAQCAtMzQwOCw3ICsz
NDA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGlu
Zyhib29sIGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGkKIAogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2FsUnVi
YmVyQmFuZGluZyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRF
bmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcoZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKSk7
CiB9CiAgICAgCiBib29sIFdlYlBhZ2VQcm94eTo6dmVydGljYWxSdWJiZXJCYW5kaW5nSXNFbmFi
bGVkKCkgY29uc3QKQEAgLTM0MjUsNyArMzQyNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRF
bmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhib29sIGVuYWJsZUhvcml6b250YWxSdWJiZXJC
CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZUhvcml6b250YWxSdWJi
ZXJCYW5kaW5nKGVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5n
KGVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKSk7CiB9CiAgICAgCiBib29sIFdlYlBhZ2VQ
cm94eTo6aG9yaXpvbnRhbFJ1YmJlckJhbmRpbmdJc0VuYWJsZWQoKSBjb25zdApAQCAtMzQ0Miw3
ICszNDQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEJhY2tncm91bmRFeHRlbmRzQmV5b25k
UGFnZShib29sIGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGEKIAogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRl
bmRzQmV5b25kUGFnZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdl
KSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2Uo
KSBjb25zdApAQCAtMzQ1OSw3ICszNDU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2lu
YXRpb25Nb2RlKFdlYkNvcmU6OlBhZ2luYXRpb246Ok1vZGUgbW9kZSkKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbk1vZGUobW9kZSksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTW9kZShtb2RlKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJvb2wg
YmVoYXZlc0xpa2VDb2x1bW5zKQpAQCAtMzQ3MSw3ICszNDcxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYm9vbCBiZWhhdmVzTGlrZUNvbHVt
bnMpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25CZWhhdmVz
TGlrZUNvbHVtbnMoYmVoYXZlc0xpa2VDb2x1bW5zKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYmVoYXZlc0xp
a2VDb2x1bW5zKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTGVuZ3RoKGRvdWJs
ZSBwYWdlTGVuZ3RoKQpAQCAtMzQ4Myw3ICszNDgzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFBhZ2VMZW5ndGgoZG91YmxlIHBhZ2VMZW5ndGgpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFBhZ2VMZW5ndGgocGFnZUxlbmd0aCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlTGVuZ3RoKHBhZ2VMZW5ndGgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEdhcEJldHdlZW5QYWdlcyhkb3VibGUgZ2FwKQpAQCAtMzQ5NSw3ICsz
NDk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEdhcEJldHdlZW5QYWdlcyhkb3VibGUgZ2Fw
KQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRHYXBCZXR3ZWVuUGFnZXMoZ2Fw
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEdhcEJldHdlZW5Q
YWdlcyhnYXApKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25MaW5lR3Jp
ZEVuYWJsZWQoYm9vbCBsaW5lR3JpZEVuYWJsZWQpCkBAIC0zNTA3LDcgKzM1MDcsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChib29sIGxpbmVHcmlk
RW5hYmxlZCkKICAgICAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRp
b25MaW5lR3JpZEVuYWJsZWQobGluZUdyaWRFbmFibGVkKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQobGluZUdyaWRF
bmFibGVkKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwYWdlU2NhbGVGYWN0b3JEaWRDaGFu
Z2UoZG91YmxlIHNjYWxlRmFjdG9yKQpAQCAtMzUzMiwyNyArMzUzMiwyNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRp
b25zIG9wdGlvbnMsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywg
bWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpG
aW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRP
cHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCiB7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4
TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5k
U3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KQogewotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2go
bWF0Y2hJbmRleCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRJ
bWFnZUZvckZpbmRNYXRjaChtYXRjaEluZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KQogewotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0RmluZE1hdGNoKG1hdGNoSW5kZXgpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0RmluZE1hdGNoKG1hdGNoSW5k
ZXgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVGaW5kVUkoKQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGlkZUZpbmRVSSgpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGlkZUZpbmRVSSgpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9w
dGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKQEAgLTM1NjAsNyArMzU2MCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q291bnRTdHJpbmdNYXRjaGVz
KHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVwbGFjZU1hdGNoZXMoVmVjdG9yPHVpbnQzMl90PiYmIG1hdGNoSW5kaWNlcywgY29uc3Qg
U3RyaW5nJiByZXBsYWNlbWVudFRleHQsIGJvb2wgc2VsZWN0aW9uT25seSwgRnVuY3Rpb248dm9p
ZCh1aW50NjRfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCkBAIC0zNTcxLDcg
KzM1NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZU1hdGNoZXMoVmVjdG9yPHVpbnQz
Ml90PiYmIG1hdGNoSW5kaWNlcywgY29uc3QgU3RyaW5nJgogICAgIH0KIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VNYXRjaGVzKFdURk1vdmUobWF0Y2hJbmRpY2Vz
KSwgcmVwbGFjZW1lbnRUZXh0LCBzZWxlY3Rpb25Pbmx5LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VNYXRjaGVzKFdURk1vdmUobWF0
Y2hJbmRpY2VzKSwgcmVwbGFjZW1lbnRUZXh0LCBzZWxlY3Rpb25Pbmx5LCBjYWxsYmFja0lEKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5
KCkKQEAgLTM1OTYsMTQgKzM1OTYsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib28KICAgICB9
CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgd29ybGRO
YW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHNjcmlwdCwgZm9yY2VVc2VyR2Vz
dHVyZSwgd29ybGROYW1lLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0SW5GcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUqLCBib29sIGhhZEV4Y2VwdGlvbiwgY29uc3QgRXhjZXB0aW9uRGV0YWls
cyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgQVNT
RVJUKG1haW5GcmFtZSgpLT5mcmFtZUlEKCkgIT0gZnJhbWVJRCk7CiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlELCBz
Y3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJhbWUoZnJhbWVJRCwgc2NyaXB0
LCBmb3JjZVVzZXJHZXN0dXJlLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CkBAIC0zNjE0LDcgKzM2MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdAogICAgIH0KICAg
ICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24o
Y2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUo
V2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM2MjYsNyArMzYy
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5k
ZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRT
b3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAg
LTM2MzgsNyArMzYzOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzU3RyaW5n
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhCiAgICAgCiAgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAg
bV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRl
bnRzQXNTdHJpbmcoY2FsbGJhY2tJRCkpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0z
NjQ5LDcgKzM2NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc0F0dHJpYnV0
ZWRTdHJpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBBdAogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KICNlbmRpZgogCkBAIC0zNjYyLDcgKzM2NjIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Qnl0ZWNvZGVQcm9maWxlKFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhYwogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVu
dFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmlsZShjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEJ5dGVjb2RlUHJvZmlsZShjYWxs
YmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0
cHV0KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM2NzQsNyArMzY3NCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgU3RyaW5nJiwKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lE
cy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFj
a0lEKSk7CiB9CiAKICNpZiBFTkFCTEUoTUhUTUwpCkBAIC0zNjg2LDcgKzM2ODYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc01IVE1MRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6
OkRhdGEqLCBDYWxsYmFja0JhcwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc01IVE1MRGF0YShjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEo
Y2FsbGJhY2tJRCkpOwogfQogI2VuZGlmCiAKQEAgLTM2OTgsNyArMzY5OCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uT3JD
b250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM3MDksNyArMzcwOSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0
aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEZ1
bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC0zNzIwLDcgKzM3MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TWFp
blJlc291cmNlRGF0YU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaQog
ICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0
YU9mRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBB
UEk6OlVSTCogcmVzb3VyY2VVUkwsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNzMxLDcgKzM3MzEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBBUEk6OlVSTCogcmVzbwogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZyb21GcmFtZShmcmFtZS0+ZnJh
bWVJRCgpLCByZXNvdXJjZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1l
LT5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJhY2tJRCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJh
bWUsIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCkBAIC0zNzQyLDcgKzM3NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEZ1bmN0aW9uPHZvaWQg
KEFQSQogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFdlYkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJh
bWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Zm9yY2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC0zNzc2
LDcgKzM3NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9yY2VSZXBhaW50KFJlZlB0cjxWb2lk
Q2FsbGJhY2s+JiYgY2FsbGJhY2spCiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShkaWRGb3JjZVJlcGFpbnRDYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+d2Fp
dEZvckJhY2tpbmdTdG9yZVVwZGF0ZU9uTmV4dFBhaW50KCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJlcGFpbnQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsg
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxiYWNrSUQpKTsK
IH0KIAogc3RhdGljIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHByaW50aW5nU2VuZE9wdGlv
bnMoYm9vbCBpc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikKQEAgLTM4MDIsNyArMzgwMiw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwcmVmZXJlbmNlc0RpZENoYW5nZSgpCiAgICAgLy8gZXZl
biBpZiBub3RoaW5nIGNoYW5nZWQgaW4gVUkgcHJvY2Vzcywgc28gdGhhdCBvdmVycmlkZXMgZ2V0
IHJlbW92ZWQuCiAKICAgICAvLyBQcmVmZXJlbmNlcyBuZWVkIHRvIGJlIHVwZGF0ZWQgZHVyaW5n
IHN5bmNocm9ub3VzIHByaW50aW5nIHRvIG1ha2UgInByaW50IGJhY2tncm91bmRzIiBwcmVmZXJl
bmNlIHdvcmsgd2hlbiB0b2dnbGVkIGZyb20gYSBwcmludCBkaWFsb2cgY2hlY2tib3guCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZShw
cmVmZXJlbmNlc1N0b3JlKCkpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVy
Zm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UHJlZmVyZW5jZXNEaWRDaGFuZ2UocHJlZmVyZW5jZXNTdG9yZSgpKSwgcHJpbnRpbmdTZW5kT3B0
aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUodWludDY0X3QgZnJhbWVJRCkKQEAgLTM5MzIsOCAr
MzkzMiw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZy
YW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0
YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAgTE9HKExvYWRpbmcsICJXZWJQ
YWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJ
dTY0ICIsIHVybCAlcyIsIG1fcGFnZUlELCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBm
cmFtZUlELCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsK
KyAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBp
ZCAlaSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0
ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQudG9VSW50NjQo
KSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1
cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIGF1dG8g
dHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMzk4NSw3
ICszOTg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGYKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
U2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBS
SXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZyYW1lSUQsIG5hdmln
YXRpb25JRCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAg
ICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDE0
LDcgKzQwMTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPAogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExp
c3QpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIndp
bGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFBy
b3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDAyNyw3ICs0MDI3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBTdHIKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENs
aWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
LCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGll
bnQoKSk7CiAKQEAgLTQwNzQsOCArNDA3NCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQ
cm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJy
b3IuZXJyb3JDb2RlKCkpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94
eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQudG9VSW50NjQoKSwgcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9yLmRvbWFpbigp
LnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQxNDEsOSArNDE0MSw5IEBAIHN0
YXRpYyBib29sIGlzTm9uVW5pcXVlTmF2aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlvbihjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEgcmVxCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBT
dHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50
MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8m
IGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxI
YXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQ
Ukl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1f
cGFnZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBh
Z2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAl
IiBQUkl1NjQsIG1fcGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJh
Y2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2Fy
ZCBsaXN0IGlzIG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFt
ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFt
ZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7
CiAKQEAgLTQyNTQsNyArNDI1NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExv
YWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1
bWVudExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0
b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI3OCw3ICs0Mjc4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmkKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JG
cmFtZSAtIFdlYlBhZ2VQcm94eSAlcCB3aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiBkaWRG
aW5pc2hMb2FkIiwgdGhpcywgbmF2aWdhdGlvbklEKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MzIzLDcgKzQzMjMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRv
bWFpbiA9ICVzLCBjb2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELCBmcmFtZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJv
ckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExv
YWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9yLmRvbWFpbigp
LnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQzNjUsNyArNDM2NSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBVUkwmJiB1cmws
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJ
RCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC00NTM1LDcgKzQ1MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3Np
bmdDaGVjayhjb25zdCBVUkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxpc3RlbgogI2VuZGlmCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMo
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1
cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwKLSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRh
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJh
bWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgaWRlbnRpZmllciwgbmF2aWdhdGlv
bklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwKQEAgLTQ1NDMsNyArNDU0Myw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmMo
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLAotICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKQEAgLTQ1NTEs
NyArNDU1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94CiAgICAgTUVTU0FHRV9DSEVDSyhw
cm9jZXNzLCBmcmFtZSk7CiAKICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVy
OjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IHByb2Nlc3MuY29weVJlZigpXSAoYXV0
by4uLiBhcmdzKSB7Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9w
YWdlSUQpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNl
aXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlE
LnRvVUludDY0KCkpOwogICAgIH0pOwogCiAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihwcm9jZXNzLmNvcHlSZWYoKSwgKmZyYW1lLCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmln
aW4pLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBXVEZNb3Zl
KGZyYW1lSW5mb0RhdGEpLCBvcmlnaW5hdGluZ1BhZ2VJRCwKQEAgLTQ1NTksNyArNDU1OSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
V2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKLSAgICBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgTE9H
KExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24g
LSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVz
dC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwpAQCAtNDY5OSw3ICs0Njk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXMKICAgICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZyYW1lKQog
ICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm8uY29weVJl
ZigpOwogICAgICAgICBlbHNlIGlmICghZnJvbUFQSSkKLSAgICAgICAgICAgIHNvdXJjZUZyYW1l
SW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBv
cmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2Uob3JpZ2luYXRpbmdQYWdlSUQpIDog
bnVsbHB0cik7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9j
ZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyKTsKIAogICAgICAgICBh
dXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0
eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAg
ICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0lu
TmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgpAQCAtNDc3Miw3ICs0NzcyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgY29uc3QgVVJMJiBwYWcKICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5G
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtNDc5MCw3ICs0NzkwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVp
bnQ2NF90IGZyYW1lSUQsIGJvb2wgaXMKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
cHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
RGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewpAQCAtNDgyMSw3ICs0ODIxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
ZWN1cmkKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJy
b3dzaW5nV2FybmluZyk7CiAKICAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNl
bmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0gKGF1dG8uLi4gYXJncykgewotICAg
ICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKKyAg
ICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSk7CiAgICAgICAgIH0pOwogCiAgICAgICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBudWxscHRyLCBXVEY6Om51bGxv
cHQsIFdURk1vdmUoc2VuZGVyKSk7CkBAIC00ODcwLDcgKzQ4NzAsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLAogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFz
YWZlQnJvd3NpbmdXYXJuaW5nKTsKIAogICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lz
aW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0gV1RGTW92
ZShwcm9jZXNzKV0gKGF1dG8uLi4gYXJncykgewotICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3Rl
bmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVu
ZXJJRCwgYXJncy4uLiksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICB9KTsKICAgICAg
ICAgCiAgICAgICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24ocG9saWN5QWN0aW9uLCBuYXZpZ2F0
aW9uLmdldCgpLCBXVEY6Om51bGxvcHQsIFdURk1vdmUoc2VuZGVyKSk7CkBAIC00OTA3LDcgKzQ5
MDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFN1Ym1pdEZvcm0odWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29ucwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9j
ZXNzLCBzb3VyY2VGcmFtZSk7CiAKICAgICBtX2Zvcm1DbGllbnQtPndpbGxTdWJtaXRGb3JtKCp0
aGlzLCAqZnJhbWUsICpzb3VyY2VGcmFtZSwgdGV4dEZpZWxkVmFsdWVzLCBtX3Byb2Nlc3MtPnRy
YW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSgpIHsK
LSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250aW51ZVdpbGxT
dWJtaXRGb3JtKGZyYW1lSUQsIGxpc3RlbmVySUQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0oZnJhbWVJRCwgbGlzdGVu
ZXJJRCkpOwogICAgIH0pOwogfQogCkBAIC00OTIzLDcgKzQ5MjMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRh
dGFTdG9yZSYgcwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlv
bkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBXZWJOYXZp
Z2F0aW9uRGF0YVN0b3JlJiBzdG9yZSwgdWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNo
YXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGll
bnQoKSk7CiAKQEAgLTQ5NDMsNyArNDk0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJm
b3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywg
Y29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgdWludDY0X3QgZnJhbWVJRCkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtQ2xpZW50UmVk
aXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1l
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1DbGll
bnRSZWRpcmVjdFNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ5NzAsNyArNDk3MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcs
IGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3RTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgdWludDY0X3QgZnJh
bWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3Jt
U2VydmVyUmVkaXJlY3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVu
dCgpKTsKIApAQCAtNTAxOCwxNCArNTAxOCwxNCBAQCBXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpF
Ul9BRERJVElPTlNfNgogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQ
YWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdpbmRvd0Zl
YXR1cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3Qg
RnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdp
bmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBt
X3Byb2Nlc3MtPndlYkZyYW1lKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKSk7Ci0g
ICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhLCBtX3Byb2Nlc3MtPndlYlBhZ2Uob3JpZ2luYXRpbmdQYWdl
SUQpKTsKKyAgICBhdXRvIG9yaWdpbmF0aW5nRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNy
ZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8gbV9wcm9j
ZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyKTsKICAgICBhdXRvIG1h
aW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1lID8gbV9tYWluRnJhbWUtPnVybCgpIDogVVJMKCk7CiAg
ICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0g
KFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIG11dGFibGUgewogICAgICAgICBpZiAoIW5l
d1BhZ2UpIHsKLSAgICAgICAgICAgIHJlcGx5KDAsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAg
ICByZXBseShXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtNTM3NCw3ICs1Mzc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1
bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZy
YW0KIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93U2hhcmVTaGVldChjb25zdCBTaGFyZURhdGFXaXRo
UGFyc2VkVVJMJiBzaGFyZURhdGEsIFNoYXJlU2hlZXRDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIgPSBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFja0lEXSAoYm9vbCBh
Y2Nlc3MpIHsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRD
b21wbGV0ZVNoYXJlU2hlZXQoYWNjZXNzLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZVNoYXJlU2hlZXQoYWNjZXNzLCBj
YWxsYmFja0lEKSk7CiAgICAgfTsKICAgICAKICAgICBwYWdlQ2xpZW50KCkuc2hvd1NoYXJlU2hl
ZXQoc2hhcmVEYXRhLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC01NDA2LDcgKzU0
MDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWVkaWFWb2x1bWUoZmxvYXQgdm9sdW1lKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWVkaWFWb2x1bWUodm9sdW1l
KSwgbV9wYWdlSUQpOyAgICAKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNZWRpYVZv
bHVtZSh2b2x1bWUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE11dGVkKFdlYkNvcmU6
Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBzdGF0ZSkKQEAgLTU0MjIsNyArNTQyMiw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNdXRlZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpN
dXRlZFN0YXRlRmxhZ3Mgc3RhdGUpCiAgICAgICAgIFVzZXJNZWRpYVByb2Nlc3NNYW5hZ2VyOjpz
aW5nbGV0b24oKS5tdXRlQ2FwdHVyZU1lZGlhU3RyZWFtc0V4Y2VwdEluKCp0aGlzKTsKICNlbmRp
ZgogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNdXRlZChzdGF0
ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNdXRlZChzdGF0
ZSkpOwogICAgIGFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBBY3Rpdml0eVN0YXRlOjpJc0F1ZGli
bGUsIEFjdGl2aXR5U3RhdGU6OklzQ2FwdHVyaW5nTWVkaWEgfSk7CiB9CiAKQEAgLTU0NDQsNyAr
NTQ0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTWVkaWFDYXB0dXJlKCkKICAgICAgICAg
cmV0dXJuOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BNZWRpYUNhcHR1cmUoKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BNZWRpYUNhcHR1cmUoKSk7CiAjZW5kaWYKIH0KIApA
QCAtNTQ1Myw3ICs1NDUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BBbGxNZWRpYVBsYXli
YWNrKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcEFsbE1lZGlhUGxheWJh
Y2soKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BBbGxNZWRp
YVBsYXliYWNrKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1lZGlhUGxh
eWJhY2soKQpAQCAtNTQ2MSw3ICs1NDYxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRB
bGxNZWRpYVBsYXliYWNrKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVu
ZEFsbE1lZGlhUGxheWJhY2soKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpCkBAIC01NDY5LDcgKzU0NjksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlc3VtZUFsbE1lZGlhUGxheWJhY2soKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFsbE1lZGlhUGxheWJhY2soKSk7CiB9CiAKICNpZiBF
TkFCTEUoTUVESUFfU0VTU0lPTikKQEAgLTU0NzgsNyArNTQ3OCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVNZWRpYUV2ZW50KE1lZGlhRXZlbnRUeXBlIGV2ZW50VHlwZSkKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZU1lZGlhRXZlbnQoZXZlbnRUeXBlKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZU1lZGlhRXZlbnQo
ZXZlbnRUeXBlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWb2x1bWVPZk1lZGlhRWxl
bWVudChkb3VibGUgdm9sdW1lLCB1aW50NjRfdCBlbGVtZW50SUQpCkBAIC01NDg2LDcgKzU0ODYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZv
bHVtZSwgdWludDY0X3QgZWxlbWVudElEKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRWb2x1bWVPZk1lZGlhRWxlbWVudCh2b2x1bWUsIGVsZW1lbnRJRCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWb2x1bWVPZk1lZGlhRWxlbWVudCh2b2x1
bWUsIGVsZW1lbnRJRCkpOwogfQogI2VuZGlmCiAKQEAgLTU1MDAsNyArNTUwMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KGJvb2wgbWF5U3RhcnRN
ZWRpYSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYXlTdGFydE1lZGlhV2hl
bkluV2luZG93KG1heVN0YXJ0TWVkaWEpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhtYXlTdGFydE1lZGlhKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94
eSYgZG93bmxvYWQpCkBAIC01NTQ3LDcgKzU1NDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2hvb3NlQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VDb2xvcihjb2xvcikpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRW5kQ29sb3JQaWNrZXIoKQpAQCAtNTU1Niw3ICs1NTU2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yUGlja2VyKCkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JQaWNrZXIoKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZENvbG9yUGlja2VyKCkpOwogfQogI2VuZGlmCiAKQEAg
LTU1OTAsNyArNTU5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDbG9zZVN1Z2dlc3Rpb25z
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zRHJvcGRvd24g
PSBudWxscHRyOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2xv
c2VTdWdnZXN0aW9ucygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ2xvc2VTdWdnZXN0aW9ucygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNlbGVj
dE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVjdGVkT3B0aW9uKQpAQCAtNTU5OCw3ICs1NTk4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBTdHJpbmcmIHNlbGVj
dGVkT3B0aW9uKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTZWxlY3REYXRh
TGlzdE9wdGlvbihzZWxlY3RlZE9wdGlvbiksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRTZWxlY3REYXRhTGlzdE9wdGlvbihzZWxlY3RlZE9wdGlvbikpOwogfQog
CiAjZW5kaWYKQEAgLTU2NTEsNyArNTY1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbGxv
d3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYm9vbCBhbGxvd3MpCiAgICAgICAgIHJldHVy
bjsKICAgICBtX2FsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayA9IGFsbG93czsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWxsb3dzTWVkaWFEb2N1
bWVudElubGluZVBsYXliYWNrKGFsbG93cyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYWxsb3dzKSk7
CiB9CiAjZW5kaWYKIApAQCAtNTgzNCwxNyArNTgzNCwxNyBAQCBJUEM6OkNvbm5lY3Rpb24qIFdl
YlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogCiB1aW50NjRfdCBX
ZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wYWdlSUQ7CisgICAgcmV0dXJuIG1fcGFnZUlELnRvVUludDY0KCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojp2YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJv
eHkqLCBpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51
KG5ld1NlbGVjdGVkSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShuZXdTZWxlY3RlZElu
ZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0RnJvbUl0ZW1Gb3JQb3B1cE1l
bnUoV2ViUG9wdXBNZW51UHJveHkqLCBpbnQzMl90IGluZGV4KQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEZvckFjdGl2ZVBvcHVwTWVudShpbmRleCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0Rm9yQWN0aXZl
UG9wdXBNZW51KGluZGV4KSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5Ojppc1Byb2Nlc3NpbmdL
ZXlib2FyZEV2ZW50cygpIGNvbnN0CkBAIC01ODc5LDEzICs1ODc5LDEzIEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdl
TmFtZSwgQVBJOjpPCiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHksIG1ha2Ugc3Vy
ZSB3ZSBsYXVuY2ggdGhlIGluaXRpYWwgcHJvY2VzcyBpZiB0aGUgY2xpZW50IGFza3MgdG8gcG9z
dCBhIG1lc3NhZ2UgdG8gaXRzIGluamVjdGVkIGJ1bmRsZSBiZWZvcmUgZG9pbmcgYSBsb2FkLgog
ICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKIAotICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKG1lc3NhZ2VO
YW1lLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdl
Qm9keSkuZ2V0KCkpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBv
c3RJbmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MoKS50
cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KS5nZXQoKSkpKTsKIH0KIAogI2lm
IFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFnZVByb3h5OjpmYWlsZWRUb1Nob3dQb3B1cE1lbnUo
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmFpbGVkVG9TaG93
UG9wdXBNZW51KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGYWls
ZWRUb1Nob3dQb3B1cE1lbnUoKSk7CiB9CiAjZW5kaWYKIApAQCAtNTk1Miw3ICs1OTUyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNob3dDb250ZXh0TWVudShDb250ZXh0TWVudUNvbnRleHREYXRh
JiYgY29udGV4dE1lbnVDb250ZXh0RGEKICAgICBtX2FjdGl2ZUNvbnRleHRNZW51LT5zaG93KCk7
CiAKICAgICAvLyBObyBtYXR0ZXIgdGhlIHJlc3VsdCBvZiBpbnRlcm5hbFNob3dDb250ZXh0TWVu
dSwgYWx3YXlzIG5vdGlmeSB0aGUgV2ViUHJvY2VzcyB0aGF0IHRoZSBtZW51IGlzIGhpZGRlbiBz
byBpdCBzdGFydHMgaGFuZGxpbmcgbW91c2UgZXZlbnRzIGFnYWluLgotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4dE1lbnVIaWRkZW4oKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlkZGVuKCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4
dE1lbnVJdGVtRGF0YSYgaXRlbSkKQEAgLTYwMzAsMTIgKzYwMzAsMTIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURh
dGEmIGl0ZW0pCiAgICAgaWYgKGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVtVGFnTGVh
cm5TcGVsbGluZyB8fCBpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0lnbm9yZVNw
ZWxsaW5nKQogICAgICAgICArK21fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTZWxlY3RJdGVt
RnJvbUFjdGl2ZUNvbnRleHRNZW51KGl0ZW0pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVDb250ZXh0TWVudUtleUV2ZW50KCkKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51Rm9yS2V5RXZl
bnQoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51
Rm9yS2V5RXZlbnQoKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKQEAg
LTYwNTEsMTAgKzYwNTEsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGNvbnN0IFZlY3QKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGZpbGVVUkxzLnNpemUoKTsgKytpKQogICAgICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpjcmVhdGVIYW5kbGUoZmlsZVVSTHNbaV0sIFNhbmRib3hFeHRlbnNpb246OlR5cGU6
OlJlYWRPbmx5LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlc1tpXSk7CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFu
ZWwoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlcykpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJ
Y29uKGZpbGVVUkxzLCBkaXNwbGF5U3RyaW5nLCBpY29uRGF0YSA/IGljb25EYXRhLT5kYXRhUmVm
ZXJlbmNlKCkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3Ry
aW5nQW5kSWNvbihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+
ZGF0YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCkpKTsKIAogICAgIG1fb3BlblBh
bmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKICAgICBtX29wZW5QYW5lbFJlc3VsdExp
c3RlbmVyID0gbnVsbHB0cjsKQEAgLTYwNzksMTAgKzYwNzksMTAgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmaWxl
VVJMcykKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlcyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRl
bmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSk7
CiAjZW5kaWYKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoZmlsZVVSTHMpKTsKIAog
ICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKICAgICBtX29wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsKQEAgLTYwOTMsNyArNjA5Myw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbEZvck9wZW5QYW5lbCgpKTsKICAgICAKICAg
ICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MTAxLDcgKzYxMDEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogewot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWR2YW5jZVRvTmV4dE1pc3Nw
ZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhzdGFydEJlZm9yZVNlbGVjdGlv
bikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3Qg
U3RyaW5nJiB3b3JkKQpAQCAtNjEwOSw3ICs2MTA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNo
YW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCkKICAgICBpZiAod29yZC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Q2hhbmdlU3BlbGxpbmdUb1dvcmQod29yZCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VTcGVsbGluZ1RvV29yZCh3b3JkKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFBy
b3h5PiYmIGNvbW1hbmRQcm94eSwgVW5kb09yUmVkbyB1bmRvT3JSZWRvKQpAQCAtNjEyOCw3ICs2
MTI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZUVkaXRDb21tYW5kKFdlYkVkaXRDb21t
YW5kUHJveHkmIGNvbW1hbmQpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
bW92ZUVkaXRDb21tYW5kKGNvbW1hbmQuY29tbWFuZElEKCkpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlRWRpdENvbW1hbmQoY29tbWFuZC5jb21tYW5k
SUQoKSkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6Y2FuVW5kbygpCkBAIC02MjE3LDEyICs2
MjE3LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyh1aW50
NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFRleHRDaGVja2luCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGaW5pc2hDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0KQogewotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRmluaXNoQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCwgcmVz
dWx0KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEZpbmlzaENo
ZWNraW5nVGV4dChyZXF1ZXN0SUQsIHJlc3VsdCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCkKIHsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbENoZWNraW5nVGV4dChyZXF1ZXN0
SUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2FuY2VsQ2hl
Y2tpbmdUZXh0KHJlcXVlc3RJRCkpOwogfQogLy8gT3RoZXIKIApAQCAtNjM1MSw3ICs2MzUxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBvcGFxdWVUeXBl
LCBib29sIGhhbmRsZWQpCiAgICAgICAgIGJvb2wgY2FuUHJvY2Vzc01vcmVLZXlFdmVudHMgPSAh
bV9rZXlFdmVudFF1ZXVlLmlzRW1wdHkoKTsKICAgICAgICAgaWYgKGNhblByb2Nlc3NNb3JlS2V5
RXZlbnRzKSB7CiAgICAgICAgICAgICBMT0coS2V5SGFuZGxpbmcsICIgVUkgcHJvY2Vzczogc2Vu
dCBrZXlFdmVudCBmcm9tIGRpZFJlY2VpdmVFdmVudCIpOwotICAgICAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVudChtX2tleUV2ZW50UXVldWUuZmlyc3Qo
KSksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2
ZW50KG1fa2V5RXZlbnRRdWV1ZS5maXJzdCgpKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBU
aGUgY2FsbCB0byBkb25lV2l0aEtleUV2ZW50IG1heSBjbG9zZSB0aGlzIFdlYlBhZ2UuCkBAIC02
NzE1LDcgKzY3MTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVTZXRMYXJnZXN0RnJhbWVD
aGFuZ2VkKHVpbnQ2NF90IGZyYW1lSUQpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3MsICJwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lVW5yZXNw
b25zaXZlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBAIC02NzI3LDcgKzY3MjcsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nl
c3NEaWRCZWNvbWVSZXNwb25zaXZlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBAIC03MjMzLDcg
KzcyMzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRDbGVhcigpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpnYW1lcGFkQWN0aXZpdHkoY29uc3QgVmVjdG9yPEdhbWVwYWREYXRhPiYg
Z2FtZXBhZERhdGFzLCBib29sIHNob3VsZE1ha2VHYW1lcGFkc1Zpc2libGUpCiB7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHYW1lcGFkQWN0aXZpdHkoZ2FtZXBhZERh
dGFzLCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdhbWVwYWRBY3Rpdml0eShnYW1lcGFkRGF0YXMsIHNob3VsZE1ha2VH
YW1lcGFkc1Zpc2libGUpKTsKIH0KIAogI2VuZGlmCkBAIC03NTM5LDcgKzc1MzksNyBAQCBib29s
IFdlYlBhZ2VQcm94eTo6d2lsbEhhbmRsZUhvcml6b250YWxTY3JvbGxFdmVudHMoKSBjb25zdAog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlV2Vic2l0ZVBvbGljaWVzKFdlYnNpdGVQb2xpY2ll
c0RhdGEmJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVcGRhdGVXZWJzaXRlUG9saWNpZXMod2Vic2l0ZVBvbGljaWVzKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3
ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRp
bmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKQEAgLTc1NDks
NyArNzU0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1
c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
IGl0ZW1JRCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
bW92ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwoYm9vbCBjYW5SdW5Nb2RhbCkKQEAgLTc1NjIs
NyArNzU2Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5SdW5Nb2RhbChib29sIGNhblJ1
bk1vZGFsKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5Nb2RhbCht
X2NhblJ1bk1vZGFsKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dENhblJ1bk1vZGFsKG1fY2FuUnVuTW9kYWwpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmNh
blJ1bk1vZGFsKCkKQEAgLTc1NzYsNyArNzU3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdp
blByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCZWdpblByaW50aW5nKGZyYW1lLT5m
cmFtZUlEKCksIHByaW50SW5mbyksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQ
ZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpCZWdpblByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbyksIHByaW50aW5nU2Vu
ZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZW5kUHJpbnRpbmcoKQpAQCAtNzU4NSw3ICs3NTg1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmVuZFByaW50aW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0luUHJp
bnRpbmdNb2RlID0gZmFsc2U7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpFbmRQcmludGluZygpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9y
bWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RW5k
UHJpbnRpbmcoKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3Bl
cmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGlu
ZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFJlZjxD
b21wdXRlZFBhZ2VzQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC03NTk4LDcgKzc1OTgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSog
ZnJhbWUsIGNvbnN0IFByaW50SW5mbwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5j
YWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAg
ICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJp
bnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1Bl
cmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2Fs
bGJhY2tJRCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJh
dGlvbikpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03NjExLDcgKzc2MTEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1JlY3RUb0ltYWdlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBj
b25zdCBQcmludEluZm8mIHByaW50SQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxi
YWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2sp
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdSZWN0VG9JbWFn
ZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJlY3QsIGltYWdlU2l6ZSwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2Uo
ZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQp
LCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqIGZy
YW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90
IGNvdW50LCBSZWY8RGF0YUNhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtNzYyMyw3ICs3NjIzLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqIGZyYW1l
LCBjb25zdCBQcmludEluZm8mIHByaW50SW4KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBj
YWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNU
b1BERihmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihm
cmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgY2FsbGJhY2tJRCksIHBy
aW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQog
I2VsaWYgUExBVEZPUk0oR1RLKQogdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50
aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgUmVm
PFByaW50RmluaXNoZWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTc2MzYsNyArNzYzNiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBm
cmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwCiAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2st
PmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwog
ICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmlu
dEluZm8sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVy
Zm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RHJhd1BhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFj
a0lEKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9u
KSk7CiB9CiAjZW5kaWYKIApAQCAtNzY4MSw3ICs3NjgxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFZpZXdMYXlvdXRTaXplKGNvbnN0IEludFNpemUmIHZpZXdMYXlvdXRTaXplKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3TGF5b3V0U2l6ZSh2aWV3TGF5b3V0U2l6
ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3TGF5b3V0
U2l6ZSh2aWV3TGF5b3V0U2l6ZSkpOwogICAgIG1fZHJhd2luZ0FyZWEtPnZpZXdMYXlvdXRTaXpl
RGlkQ2hhbmdlKCk7CiAKICNpZiBVU0UoQVBQS0lUKQpAQCAtNzcwMCw3ICs3NzAwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoYm9v
bCBzaG91bGRFeHBhbmQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEF1dG9T
aXppbmdTaG91bGRFeHBhbmRUb1ZpZXdIZWlnaHQoc2hvdWxkRXhwYW5kKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1Zp
ZXdIZWlnaHQoc2hvdWxkRXhwYW5kKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3
cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSkK
QEAgLTc3MTMsNyArNzcxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3cG9ydFNpemVG
b3JDU1NWaWV3cG9ydFVuaXRzKGNvbnN0IEludFNpemUmIHZpZXdwb3J0U2l6CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMo
dmlld3BvcnRTaXplKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHModmlld3BvcnRTaXplKSk7CiB9CiAKICNp
ZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCkBAIC03Nzg0LDcgKzc3ODQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShpbnQzMl90IHJl
c3BvbnNlLCBjb25zdCBTdHJpbmcmCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQWx0ZXJuYXRp
dmVUZXh0VUlSZXN1bHQoY29uc3QgU3RyaW5nJiByZXN1bHQpCiB7CiAgICAgaWYgKCFpc0Nsb3Nl
ZCgpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFs
dGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KSk7
CiB9CiAKICNpZiBVU0UoRElDVEFUSU9OX0FMVEVSTkFUSVZFUykKQEAgLTc4MjUsNyArNzgyNSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb21wb3NpdGlvbihjb25zdCBTdHJpbmcmIHRleHQs
IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVj
dGlvbkVuZCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uKHRleHQs
IHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHJlcGxhY2VtZW50UmFu
Z2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGludDY0
X3Qgc2VsZWN0aW9uU3RhcnQsIGludDY0X3Qgc2VsZWN0aW9uTGVuZ3RoKQpAQCAtNzgzMyw3ICs3
ODMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJp
bmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBpbnQ2NF90IHMKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHNlbGVjdGlvblN0
YXJ0LCBzZWxlY3Rpb25MZW5ndGgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCBzZWxlY3Rpb25TdGFy
dCwgc2VsZWN0aW9uTGVuZ3RoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxDb21w
b3NpdGlvbigpCkBAIC03ODQxLDcgKzc4NDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2Vs
Q29tcG9zaXRpb24oKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbENvbXBv
c2l0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxD
b21wb3NpdGlvbigpKTsKIH0KICNlbmRpZiAvLyBQTEFURk9STShHVEspCiAKQEAgLTc4NTgsNyAr
Nzg1OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Ny
b2xsUGlubmluZ0JlaGF2aW9yIHBpbm5pbmcpCiAgICAgbV9zY3JvbGxQaW5uaW5nQmVoYXZpb3Ig
PSBwaW5uaW5nOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHBp
bm5pbmcpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNj
cm9sbFBpbm5pbmdCZWhhdmlvcihwaW5uaW5nKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUoT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlPiBzY3JvbGxiYXJTdHlsZSkKQEAgLTc4NzYsNyArNzg3Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRPdmVybGF5U2Nyb2xsYmFyU3R5bGUoT3B0aW9uYWw8V2ViQ29yZTo6U2Nyb2xs
YmFyT3ZlcmxheVN0CiAgICAgICAgIHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZSA9IHN0YXRpY19j
YXN0PFNjcm9sbGJhck92ZXJsYXlTdHlsZT4oc2Nyb2xsYmFyU3R5bGUudmFsdWUoKSk7CiAKICAg
ICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFyU3R5bGVGb3JN
ZXNzYWdlKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdlKSk7CiB9CiAKICNp
ZiBFTkFCTEUoV0VCX0NSWVBUTykKQEAgLTc5MjEsNyArNzkyMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUlu
ZGV4LCBjb25zCiAKIHZvaWQgV2ViUGFnZVByb3h5OjphZGRNSU1FVHlwZVdpdGhDdXN0b21Db250
ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRl
cihtaW1lVHlwZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRN
SU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIobWltZVR5cGUpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVD
aGFuZ2VzJiYgY2hhbmdlcykKQEAgLTc5MjksNyArNzkyOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmIGNo
YW5nZXMpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udEF0dHJpYnV0
ZXMoV1RGTW92ZShjaGFuZ2VzKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDaGFuZ2VGb250QXR0cmlidXRlcyhXVEZNb3ZlKGNoYW5nZXMpKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykK
QEAgLTc5MzcsNyArNzkzNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250KFdlYkNv
cmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDaGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKSk7CiB9CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKQEAgLTc5NDUsNyArNzk0NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
aGFuZ2VGb250KFdlYkNvcmU6OkZvbnRDaGFuZ2VzJiYgY2hhbmdlcykKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0KQogewogICAgIGlmIChoYXNSdW5u
aW5nUHJvY2VzcygpKQotICAgICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0VGV4dEFzeW5jKHRleHQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFRleHRBc3luYyh0ZXh0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbnNl
cnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxh
Y2VtZW50UmFuZ2UsIEluc2VydFRleHRPcHRpb25zJiYgb3B0aW9ucykKQEAgLTc5NTMsNyArNzk1
Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0
ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6SW5zZXJ0VGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0
aW9ucykpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0VGV4
dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIFdURk1vdmUob3B0aW9ucykpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6Omhhc01hcmtlZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjYWxsYmFjaykKQEAgLTc5NjIsNyArNzk2Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpoYXNNYXJrZWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2sp
CiAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBt
X3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpIYXNNYXJrZWRUZXh0KCksIFdURk1vdmUoY2FsbGJhY2spLCBtX3BhZ2VJRCk7CisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpIYXNNYXJrZWRUZXh0KCksIFdU
Rk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdl
QXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC03OTczLDcgKzc5NzMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdS
YW5nZSwgQ2FsbGJhYwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRNYXJrZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5j
dGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC03OTg0LDcgKzc5ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2Vs
ZWN0ZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYgog
ICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxl
Y3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTZWxlY3RlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb2ludCwgV1RGOjpGdW5jdGlvbjx2b2lkICh1aW50NjRfdCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTc5OTUsNyArNzk5NSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCBXCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhwb2ludCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFyYWN0ZXJJ
bmRleEZvclBvaW50QXN5bmMocG9pbnQsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1Jhbmdl
JiByYW5nZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29u
c3QgRWRpdGluZ1JhbmdlJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKQEAgLTgwMDYsNyArODAwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdUCiAgICAgfQog
CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNo
YXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5n
ZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb25B
c3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGlu
ZT4mIHVuZGVybGluZXMsIGNvbnN0IEVkaXRpbmdSYW5nZSYgc2VsZWN0aW9uUmFuZ2UsIGNvbnN0
IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSkKQEAgLTgwMTcsNyArODAxNyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgVmVjdG9yPENvbXBvc2l0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb25Bc3luYyh0ZXh0LCB1
bmRlcmxpbmVzLCBzZWxlY3Rpb25SYW5nZSwgcmVwbGFjZW1lbnRSYW5nZSksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbkFzeW5jKHRleHQsIHVu
ZGVybGluZXMsIHNlbGVjdGlvblJhbmdlLCByZXBsYWNlbWVudFJhbmdlKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb25Bc3luYygpCkBAIC04MDI1LDcgKzgwMjUs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb25Bc3lu
YygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBlcmZvcm1hbmNlRGF0YUNv
bGxlY3Rpb25FbmFibGVkKGJvb2wgZW5hYmxlZCkKQEAgLTgwNTAsNyArODA1MCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp0YWtlU25hcHNob3QoSW50UmVjdCByZWN0LCBJbnRTaXplIGJpdG1hcFNp
emUsIFNuYXBzaG90T3B0aW9uCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUYWtlU25hcHNob3QocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUYWtlU25h
cHNob3QocmVjdCwgYml0bWFwU2l6ZSwgb3B0aW9ucywgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6bmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigpCkBAIC04MjA4LDcgKzgy
MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9u
SW5mbyhSZWY8Tm93UGxheWluZ0luZm9DYWxsYmFjawogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNh
bGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2spKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFj
dGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8o
Y2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bm93UGxheWluZ0luZm9DYWxs
YmFjayhib29sIGhhc0FjdGl2ZVNlc3Npb24sIGJvb2wgcmVnaXN0ZXJlZEFzTm93UGxheWluZ0Fw
cGxpY2F0aW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBl
bGFwc2VkVGltZSwgdWludDY0X3QgdW5pcXVlSWRlbnRpZmllciwgQ2FsbGJhY2tJRCBjYWxsYmFj
a0lEKQpAQCAtODI1MSwyMiArODI1MSwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQXV0
b3BsYXlFdmVudChXZWJDb3JlOjpBdXRvcGxheUV2ZW50IGV2ZW50LCBPcHRpb25TZXQ8QQogI2lm
IFBMQVRGT1JNKE1BQykKIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtSW1tZWRpYXRlQWN0aW9u
SGl0VGVzdEF0TG9jYXRpb24oRmxvYXRQb2ludCBwb2ludCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2Nh
dGlvbihwb2ludCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJm
b3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24ocG9pbnQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpCiB7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0ZUFjdGlvbkRpZFVw
ZGF0ZSgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkRpZENhbmNl
bCgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVB
Y3Rpb25EaWRDYW5jZWwoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkltbWVkaWF0ZUFjdGlvbkRpZENhbmNlbCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omlt
bWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkltbWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0
KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHREYXRhJiByZXN1bHQsIGJvb2wgY29udGVudFByZXZlbnRz
RGVmYXVsdCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtODI4MSw3ICs4MjgxLDcgQEAg
TlNPYmplY3QgKldlYlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uQW5pbWF0aW9uQ29udHJvbGxl
ckZvckhpdFRlc3RSZXN1bHQoUmVmUHQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlKFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdCBhY2NlcHRlZENhbmRpZGF0
ZSkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFjY2Vw
dGVkQ2FuZGlkYXRlKGFjY2VwdGVkQ2FuZGlkYXRlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKGFjY2VwdGVkQ2FuZGlkYXRl
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZSgp
CkBAIC04Mjk5LDE3ICs4Mjk5LDE3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VTeXN0ZW1B
cHBlYXJhbmNlKGJvb2wgdXNlU3lzdGVtQXBwZWFyYW5jZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0VXNlU3lzdGVtQXBwZWFyYW5jZSh1c2VTeXN0ZW1BcHBlYXJhbmNlKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZVN5c3RlbUFwcGVh
cmFuY2UodXNlU3lzdGVtQXBwZWFyYW5jZSkpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldEhlYWRlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaW50IGhlaWdodCkKIHsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEhlYWRlckJhbm5lckhlaWdodEZvclRl
c3RpbmcoaGVpZ2h0KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEhlYWRlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRGb290ZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWlnaHQpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRGb290ZXJCYW5uZXJIZWln
aHRGb3JUZXN0aW5nKGhlaWdodCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRGb290ZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGhlaWdodCkpOwogfQogCiAjZW5k
aWYKQEAgLTgzMzUsNyArODMzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbWFnZU9yTWVkaWFE
b2N1bWVudFNpemVDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoYm9vbCBz
aG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMo
c2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhz
aG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmhhbmRsZUF1dG9GaWxsQnV0dG9uQ2xpY2soY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpA
QCAtODM4NCw3ICs4Mzg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBsYXliYWNrVGFyZ2V0
KHVpbnQ2NF90IGNvbnRleHRJZCwgUmVmPE1lZGlhUGxheWJhY2tUYXJnZXQKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIHRh
cmdldC0+dGFyZ2V0Q29udGV4dCgpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoY29udGV4dElkLCB0YXJnZXQtPnRhcmdldENv
bnRleHQoKSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UodWludDY0X3QgY29udGV4dElkLCBib29sIGF2YWlsYWJsZSkKQEAg
LTgzOTIsNyArODM5Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleHRlcm5hbE91dHB1dERldmlj
ZUF2YWlsYWJsZURpZENoYW5nZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGNv
bnRleHRJZCwgYXZhaWxhYmxlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RGlkQ2hhbmdlKGNvbnRleHRJZCwgYXZhaWxh
YmxlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgc2hvdWxkUGxheSkKQEAgLTg0MDAsNyArODQw
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldCh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgc2hvdWxkCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgc2hvdWxkUGxh
eSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRQbGF5
VG9QbGF5YmFja1RhcmdldChjb250ZXh0SWQsIHNob3VsZFBsYXkpKTsKIH0KICNlbmRpZgogCkBA
IC04NDI2LDcgKzg0MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJXaGVlbEV2ZW50VGVz
dFRyaWdnZXIoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJXaGVl
bEV2ZW50VGVzdFRyaWdnZXIoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2FsbEFmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZShXVEY6OkZ1bmN0aW9uPHZvaWQgKENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtODQ0OSw3ICs4NDQ5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoYm9vbCBzaG91
bGRTY2FsZVZpZXdUb0ZpdERvY3UKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZFNjYWxl
Vmlld1RvRml0RG9jdW1lbnQoc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKQEAgLTg0NjksNyAr
ODQ2OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRMb2FkRGVjaXNpb25Gb3JJY29uKGNvbnN0
IFdlYkNvcmU6OkxpbmtJY29uJiBpY29uLCBDYWxsYmFjCiAgICAgICAgIGJvb2wgZGVjaXNpb24g
PSAoYm9vbCljYWxsYmFja0Z1bmN0aW9uOwogICAgICAgICBhdXRvIG5ld0NhbGxiYWNrSWRlbnRp
ZmllciA9IGRlY2lzaW9uID8gT3B0aW9uYWxDYWxsYmFja0lEKG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpKSA6IE9wdGlvbmFsQ2FsbGJhY2tJRCgpOwogCi0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9ySWNvbihk
ZWNpc2lvbiwgbG9hZElkZW50aWZpZXIsIG5ld0NhbGxiYWNrSWRlbnRpZmllciksIG1fcGFnZUlE
KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkR2V0TG9hZERlY2lzaW9uRm9y
SWNvbihkZWNpc2lvbiwgbG9hZElkZW50aWZpZXIsIG5ld0NhbGxiYWNrSWRlbnRpZmllcikpOwog
ICAgIH0pOwogfQogCkBAIC04NDg4LDcgKzg0ODgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0UmVzb3VyY2VDYWNoaW5nRGlzYWJsZWQoZGlzYWJsZWQpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UmVzb3VyY2VDYWNoaW5nRGlz
YWJsZWQoZGlzYWJsZWQpKTsKIH0KIAogV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVj
dGlvbiBXZWJQYWdlUHJveHk6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKQpAQCAtODUw
MSw3ICs4NTAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24oV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dEQKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihzdGF0aWNfY2Fz
dDx1aW50MzJfdD4odXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bihzdGF0aWNfY2FzdDx1aW50MzJfdD4odXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbikpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVWYWxpZGF0aW9uTWVzc2FnZSgpCkBAIC04NTQ4
LDE0ICs4NTQ4LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBbGxvd1BvaW50ZXJMb2NrKCkK
ICAgICBDR0Rpc3BsYXlIaWRlQ3Vyc29yKENHTWFpbkRpc3BsYXlJRCgpKTsKICAgICBDR0Fzc29j
aWF0ZU1vdXNlQW5kTW91c2VDdXJzb3JQb3NpdGlvbihmYWxzZSk7CiAjZW5kaWYKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEFjcXVpcmVQb2ludGVyTG9jaygpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQWNxdWlyZVBvaW50ZXJM
b2NrKCkpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZERlbnlQb2ludGVyTG9jaygp
CiB7CiAgICAgQVNTRVJUKG1faXNQb2ludGVyTG9ja1BlbmRpbmcgJiYgIW1faXNQb2ludGVyTG9j
a2VkKTsKICAgICBtX2lzUG9pbnRlckxvY2tQZW5kaW5nID0gZmFsc2U7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVy
TG9jaygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVyVW5sb2NrKCkK
QEAgLTg1NjYsMTIgKzg1NjYsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RQb2ludGVy
VW5sb2NrKCkKICAgICAgICAgQ0dEaXNwbGF5U2hvd0N1cnNvcihDR01haW5EaXNwbGF5SUQoKSk7
CiAjZW5kaWYKICAgICAgICAgbV91aUNsaWVudC0+ZGlkTG9zZVBvaW50ZXJMb2NrKHRoaXMpOwot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZExvc2VQb2ludGVy
TG9jaygpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZExv
c2VQb2ludGVyTG9jaygpKTsKICAgICB9CiAKICAgICBpZiAobV9pc1BvaW50ZXJMb2NrUGVuZGlu
ZykgewogICAgICAgICBtX3VpQ2xpZW50LT5kaWRMb3NlUG9pbnRlckxvY2sodGhpcyk7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50
ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Tm90QWNxdWlyZVBvaW50ZXJMb2NrKCkpOwogICAgIH0KIAogICAgIG1faXNQb2ludGVyTG9ja2Vk
ID0gZmFsc2U7CkBAIC04NTkyLDcgKzg1OTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VVJM
U2NoZW1lSGFuZGxlckZvclNjaGVtZShSZWY8V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiBoYW5kbAog
ICAgIGF1dG8gaWRlbnRpZmllclJlc3VsdCA9IG1fdXJsU2NoZW1lSGFuZGxlcnNCeUlkZW50aWZp
ZXIuYWRkKGlkZW50aWZpZXIsIFdURk1vdmUoaGFuZGxlcikpOwogICAgIEFTU0VSVF9VTlVTRUQo
aWRlbnRpZmllclJlc3VsdCwgaWRlbnRpZmllclJlc3VsdC5pc05ld0VudHJ5KTsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVy
KGlkZW50aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoaWRlbnRp
ZmllciwgY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpKSk7CiB9CiAKIFdlYlVSTFNjaGVtZUhh
bmRsZXIqIFdlYlBhZ2VQcm94eTo6dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShjb25zdCBTdHJp
bmcmIHNjaGVtZSkKQEAgLTg2NTEsNyArODY1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplZmZl
Y3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSh1c2VEYXJrQXBwZWFyYW5jZSgpLCB1c2VJ
bmFjdGl2ZUFwcGVhcmFuY2UoKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpFZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKHVzZURhcmtBcHBlYXJhbmNlKCksIHVz
ZUluYWN0aXZlQXBwZWFyYW5jZSgpKSk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTg2
OTAsNyArODY5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRBdHRhY2htZW50KFJlZjxB
UEk6OkF0dGFjaG1lbnQ+JiYgYXR0YWNobWVudCwgRnVuY3Rpb248CiAKICAgICBhdXRvIGF0dGFj
aG1lbnRJZGVudGlmaWVyID0gYXR0YWNobWVudC0+aWRlbnRpZmllcigpOwogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudElkZW50aWZp
ZXIsIGF0dGFjaG1lbnQtPmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LT5maWxlTmFt
ZSgpLCBhdHRhY2htZW50LT5jb250ZW50VHlwZSgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydEF0dGFjaG1lbnQoYXR0YWNobWVudElk
ZW50aWZpZXIsIGF0dGFjaG1lbnQtPmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LT5m
aWxlTmFtZSgpLCBhdHRhY2htZW50LT5jb250ZW50VHlwZSgpLCBjYWxsYmFja0lEKSk7CiAgICAg
bV9hdHRhY2htZW50SWRlbnRpZmllclRvQXR0YWNobWVudE1hcC5zZXQoYXR0YWNobWVudElkZW50
aWZpZXIsIFdURk1vdmUoYXR0YWNobWVudCkpOwogfQogCkBAIC04NzA2LDcgKzg3MDYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQXR0YWNobWVudEF0dHJpYnV0ZXMoY29uc3QgQVBJOjpB
dHRhY2htZW50JiBhdHRhY2htZW50LAogICAgICAgICBkYXRhUmVmZXJlbmNlID0geyAqZGF0YSB9
OwogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0
dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JE
aXNwbGF5KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgp
LCBXVEZNb3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1l
bnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2ht
ZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVm
ZXJlbmNlKSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJB
dHRhY2htZW50SWRlbnRpZmllckZyb21EYXRhKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSwgY29uc3QgU3RyaW5nJiBwcmVmZXJyZWRGaWxlTmFtZSwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQpAQCAtODg2Niw3ICs4ODY2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmdldEFwcGxpY2F0aW9uTWFuaWZlc3QoRnVuY3Rpb248dm9pZChjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjoKIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxi
YWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldEFwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNr
SUQpKTsKIH0KICNlbmRpZgogCkBAIC04OTMwLDcgKzg5MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVwb3J0UGFnZUxvYWRSZXN1bHQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXREZWZlcnNMb2FkaW5nRm9yVGVzdGluZyhib29sIGRlZmVyc0xv
YWRpbmcpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXREZWZl
cnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0RGVmZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRJc1ZpZXdWaXNpYmxlKGJvb2wmIHJlc3VsdCkKQEAgLTg5NDIsNyArODk0
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZSgpCiB7
CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoV0VCUFJPQ0VTU19XSU5ET1dTRVJWRVJfQkxP
Q0tJTkcpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgYXV0byBtb2RpZmllcnMgPSBQbGF0
Zm9ybUtleWJvYXJkRXZlbnQ6OmN1cnJlbnRTdGF0ZU9mTW9kaWZpZXJLZXlzKCk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0
ZShtb2RpZmllcnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBk
YXRlQ3VycmVudE1vZGlmaWVyU3RhdGUobW9kaWZpZXJzKSk7CiAjZW5kaWYKIH0KIApAQCAtODk4
NCwxOSArODk4NCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbEFjcXVpcmVVbml2ZXJzYWxG
aWxlUmVhZFNhbmRib3hFeHRlbnNpb24oV2ViUHJvY2Vzc1Byb3h5JgogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShkb3VibGUgYWxwaGEsIGRvdWJs
ZSBiZXRhLCBkb3VibGUgZ2FtbWEpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTaW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hhbmdlKGFscGhhLCBiZXRhLCBnYW1t
YSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaW11bGF0ZURldmlj
ZU9yaWVudGF0aW9uQ2hhbmdlKGFscGhhLCBiZXRhLCBnYW1tYSkpOwogfQogCiAjaWYgRU5BQkxF
KERBVEFfREVURUNUSU9OKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGV0ZWN0RGF0YUluQWxsRnJh
bWVzKFdlYkNvcmU6OkRhdGFEZXRlY3RvclR5cGVzIHR5cGVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEZXRlY3REYXRhSW5BbGxGcmFtZXMoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHR5
cGVzKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpEZXRlY3REYXRhSW5BbGxGcmFtZXMoc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KHR5cGVzKSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZURhdGFEZXRlY3RlZExpbmtzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgRGF0YURldGVjdGlvblJlc3VsdCYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZURhdGFEZXRlY3RlZExpbmtzKCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcygpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKICNlbmRpZgpAQCAtOTE0Niw3ICs5MTQ2LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnRleHRJbnB1dENvbnRleHRzSW5SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCBy
ZWN0LCBDb21wbGV0aW9uSGEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vz
cy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlRl
eHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VGV4
dElucHV0Q29udGV4dHNJblJlY3QocmVjdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0
SW5wdXRDb250ZXh0JiBjb250ZXh0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpAQCAtOTE1Niw3ICs5MTU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZvY3VzVGV4dElucHV0Q29udGV4dChjb25zdCBUZXh0SW5wdXRDb250ZXh0JiBjb250ZXh0LCBD
b21wbGUKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlv
bigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkZvY3VzVGV4dElucHV0
Q29udGV4dChjb250ZXh0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkZvY3VzVGV4dElucHV0
Q29udGV4dChjb250ZXh0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiBMb2dn
ZXImIFdlYlBhZ2VQcm94eTo6bG9nZ2VyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKaW5kZXggNmM1YWQ2MjVkMTIuLmE2ZThmZTE4MmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAjaW5jbHVkZSAiV2ViVW5kb1N0ZXBJRC5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2ll
c0RhdGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KQEAgLTgyLDYgKzgz
LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBy
b2R1Y2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGxhdGZvcm1FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3Jl
ZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
Lmg+CkBAIC0zODIsMTQgKzM4NCwxNCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogI2VuZGlmCiAgICAgLCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGFnZVByb3h5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWlu
dDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAgc3RhdGlj
IFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5Jiwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsK
ICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAogICAgIHN0YXRpYyB2b2lkIGZvck1vc3RW
aXNpYmxlV2ViUGFnZUlmQW55KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlBhZ2VQcm94eSopPiYmKTsK
IAogICAgIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25z
dDsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9Cisg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
SUQ7IH0KIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCkBAIC0xNTAy
LDcgKzE1MDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0
YVN0b3JlJiwgdWludDY0X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25h
bFVSTEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKLSAgICAgICAgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCisgICAgICAg
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZv
RGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwKICAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAogICAgICAgICB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRh
dGEmKTsKQEAgLTE1MTEsNyArMTUxMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0
aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRl
cm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RG
OjpudWxsb3B0KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmKTsK
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAg
ICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAg
IEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICNpZiBV
U0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0Rv
Y3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSk7CkBAIC0xNTQ5LDkgKzE1NTEsOSBAQCBXRUJQQUdFUFJPWFlfTE9BRE9Q
VElNSVpFUl9BRERJVElPTlNfMQogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFi
YXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3Rh
LCB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVz
YWdlLCB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
dWludDY0X3QpPiYmKTsKLQorICAgIAogcHJpdmF0ZToKLSAgICBXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYpOworICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vz
c1Byb3h5JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmKTsKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCiAgICAgdm9pZCBub3Rp
ZnlQcm9jZXNzUG9vbFRvUHJld2FybSgpOwpAQCAtMTU3Myw2ICsxNTc1LDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCByZXNldFN0YXRlQWZ0ZXJQcm9jZXNzRXhpdGVkKFByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbik7CiAKICAgICB2b2lkIHNldFVzZXJBZ2VudChTdHJpbmcmJik7CisgICAgCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kVG9Qcm9jZXNzKFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgVSYmIG1lc3NhZ2UsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRp
b25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3Muc2VuZChXVEZNb3ZlKG1l
c3NhZ2UpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQogCiAgICAg
Ly8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4pIG92ZXJyaWRlOwpA
QCAtMTYyNywxMyArMTYzNCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRGVzdHJveU5hdmln
YXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJGcmFtZVByb3h5Jiwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwg
UmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEm
JiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAg
ICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFt
ZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAot
ICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAg
ICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTY1NSw3ICsxNjYyLDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBT
dHJpbmcmIHVybCwgdWludDY0X3QgZnJhbWVJRCk7CiAKICAgICAvLyBVSSBjbGllbnQKLSAgICB2
b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0
aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2luZG93RmVh
dHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgY3JlYXRlTmV3UGFnZShj
b25zdCBGcmFtZUluZm9EYXRhJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2lu
ZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2hvd1BhZ2Uo
KTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lk
IHJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHkmJik7CkBAIC0yMzI3LDcgKzIzMzQs
NyBAQCBXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpFUl9BRERJVElPTlNfMgogICAgIFJlZlB0cjxX
ZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxlPiBtX3ZhbGlkYXRpb25CdWJibGU7CiAjZW5kaWYKIAot
ICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fcGFnZUlEOwogCiAgICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX2FkZHNWaXNpdGVkTGlua3MgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNmZjZWNkYzZiNjUu
LmIxZTc5OTIyM2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQ
cm94eSB7CiAgICAgIyBVSSBtZXNzYWdlcwotICAgIENyZWF0ZU5ld1BhZ2Uoc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdl
YkNvcmU6OldpbmRvd0ZlYXR1cmVzIHdpbmRvd0ZlYXR1cmVzLCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSkgLT4gKHVpbnQ2NF90IG5ld1Bh
Z2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXdQYWdl
UGFyYW1ldGVycykgU3luY2hyb25vdXMKKyAgICBDcmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJLaXQ6
OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVy
ZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRCwgT3B0
aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXdQYWdlUGFyYW1ldGVy
cykgU3luY2hyb25vdXMKICAgICBTaG93UGFnZSgpCiAgICAgQ2xvc2VQYWdlKGJvb2wgc3RvcFJl
c3BvbnNpdmVuZXNzVGltZXIpCiAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1l
SUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdp
biwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpIFN5bmNocm9ub3VzCkBAIC0xMDQsOCArMTA0LDggQEAg
bWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCiAgICAg
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0
cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQot
ICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlE
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKFdlYkNvcmU6
OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIGVudW06dWludDhf
dCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0
aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25hbDxXZWJLaXQ6Oldl
YnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgU3luY2hyb25vdXMKKyAgICBEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0
Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQorICAgIERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJh
bWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdp
biwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25z
ZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0Rh
dGE+IHdlYnNpdGVQb2xpY2llcykgU3luY2hyb25vdXMKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXIuY3BwCmluZGV4IGM4MDIzZGU0MTYxLi5mNDk3MTUxZDc1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVy
LmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjph
ZGRXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJQcm9jZQogICAgIFJFTEVB
U0VfQVNTRVJUKCFwcm9jZXNzLmlzUHJld2FybWVkKCkpOwogCiAgICAgaWYgKG1fcHJvY2Vzc2Vz
LmFkZCgmcHJvY2VzcykuaXNOZXdFbnRyeSkgewotICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5n
LCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6YWRkV2ViUGFnZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigp
LCB3ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAi
JXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6YWRkV2ViUGFnZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3
ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgICAgIHdlYlByb2Nlc3NXaWxs
T3BlbkNvbm5lY3Rpb24ocHJvY2VzcywgKnByb2Nlc3MuY29ubmVjdGlvbigpKTsKICAgICB9CiAK
QEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3Zl
V2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHIKICAgICB3ZWJQYWdlRGlk
Q2xvc2VDb25uZWN0aW9uKHdlYlBhZ2VQcm94eSwgKnByb2Nlc3MuY29ubmVjdGlvbigpKTsKIAog
ICAgIGlmIChtX3Byb2Nlc3Nlcy5yZW1vdmUoJnByb2Nlc3MpKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HKExvYWRpbmcsICIlcCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjpyZW1vdmVXZWJQ
YWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNzLnByb2Nl
c3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgICAgIFJFTEVBU0Vf
TE9HKExvYWRpbmcsICIlcCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjpyZW1vdmVXZWJQ
YWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNzLnByb2Nl
c3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQcm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICAg
ICAgd2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihwcm9jZXNzLCAqcHJvY2Vzcy5jb25uZWN0
aW9uKCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcAppbmRleCAwZTEzOWYzMGQ5Yy4uMGI4YjM0NWVmOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTEyOTYsOSArMTI5Niw5IEBAIGJvb2wgV2Vi
UHJvY2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29uc3QgV2Vic2l0
ZURhdGFTdG9yZSYgc3RvCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJl
Z2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9y
ZSYgZGF0YVN0b3JlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0
b3JlKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmFkZChkYXRh
U3RvcmUuc2Vzc2lvbklEKCksIEhhc2hTZXQ8dWludDY0X3Q+KCkpLml0ZXJhdG9yLT52YWx1ZS5h
ZGQocGFnZUlEKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5hZGQo
ZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PFBhZ2VJZGVudGlmaWVyPigpKS5pdGVyYXRv
ci0+dmFsdWUuYWRkKHBhZ2VJRCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5p
c05ld0VudHJ5KTsKIAogICAgIGF1dG8gc2Vzc2lvbklEID0gZGF0YVN0b3JlLnNlc3Npb25JRCgp
OwpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGEKICAgICB9CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUodWlu
dDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nl
c3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogewogICAgIGF1dG8gc2Vzc2lvbklEID0g
ZGF0YVN0b3JlLnNlc3Npb25JRCgpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Nlc3Npb25Ub1Bh
Z2VJRHNNYXAuZmluZChzZXNzaW9uSUQpOwpAQCAtMjIxMSw3ICsyMjExLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0ZShOZXR3b3Jr
UHJvY2Vzc1Byb3h5JgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHlGcm9tUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK1NlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkqIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJ
RChQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMg
aW5lZmZpY2llbnQuCiAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2VzcyA6IG1fc2Vy
dmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkgewpAQCAtMjUxOSw3ICsyNTE5LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoKQog
ICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xlYXJDdXJyZW50
TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNv
bW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFtX25ldHdvcmtQ
cm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggMTY1
NTQ1YjFhMmYuLjUzYjIzNWFlZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKQEAgLTE5Myw4ICsxOTMsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8V2ViUGFnZVBy
b3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4mJik7CiAKLSAgICB2b2lkIHBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRf
dCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNp
dGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9p
ZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3Rv
cmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICBib29s
IGhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKSBjb25zdDsK
IAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9jb25maWd1cmF0aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQpAQCAtMzY1LDcgKzM2NSw3
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFi
bGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vz
c1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgT3B0aW9uYWw8UEFMOjpTZXNz
aW9uSUQ+KTsKLSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIFNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBjb25zdDsKICAgICBjb25zdCBIYXNoTWFwPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VX
b3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9
CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9v
bCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBh
bGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtl
cigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29y
a2VyOyB9CkBAIC00OTMsNyArNDkzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZERpc3BsYXlD
b25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CiAgICAgdm9pZCBjbGVhckN1
cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpOwogCi0gICAgdm9pZCBjb21taXR0ZWRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgY29tbWl0dGVk
Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAjaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgdm9pZCBzZXRTYW5kYm94RW5hYmxl
ZChib29sIGVuYWJsZWQpIHsgbV9zYW5kYm94RW5hYmxlZCA9IGVuYWJsZWQ7IH07CkBAIC03NTgs
NyArNzU4LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFBhdGhzIG1fcmVzb2x2ZWRQYXRoczsK
IAotICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Nlc3Np
b25Ub1BhZ2VJRHNNYXA7CisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsKICAgICBSdW5Mb29w
OjpUaW1lcjxXZWJQcm9jZXNzUG9vbD4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzVGVybWluYXRp
b25UaW1lcjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4MjAzNDY1Y2IyOC4uNjc4MzFlMjA3ODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTEw
LDEwICsxMTAsOSBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0Zv
cklkZW50aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZgogICAgIHJldHVybiBhbGxQcm9j
ZXNzZXMoKS5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXVpbnQ2NF90IFdlYlByb2Nlc3NQcm94eTo6
Z2VuZXJhdGVQYWdlSUQoKQorUGFnZUlkZW50aWZpZXIgV2ViUHJvY2Vzc1Byb3h5OjpnZW5lcmF0
ZVBhZ2VJRCgpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVBhZ2VJRDsKLSAgICByZXR1
cm4gKyt1bmlxdWVQYWdlSUQ7CisgICAgcmV0dXJuIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgp
OwogfQogCiBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAmIGdsb2JhbFBh
Z2VNYXAoKQpAQCAtMzMwLDcgKzMyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93
bigpCiAgICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3ModGhpcyk7CiB9CiAKLVdl
YlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKK1dl
YlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKIHsKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQpAQCAtMzYz
LDcgKzM2Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc1Rl
bGVtZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAKIFJlZjxXZWJQYWdlUHJveHk+
IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBS
ZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJhdGlvbikKIHsKLSAgICB1
aW50NjRfdCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gZ2Vu
ZXJhdGVQYWdlSUQoKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVBy
b3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwgV1RGTW92ZShwYWdlQ29uZmln
dXJhdGlvbikpOwogCiAgICAgYWRkRXhpc3RpbmdXZWJQYWdlKHdlYlBhZ2UuZ2V0KCksIEJlZ2lu
c1VzaW5nRGF0YVN0b3JlOjpZZXMpOwpAQCAtNDE1LDEwICs0MTQsMTAgQEAgdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRzVXNpbmdE
YXRhU3RvcmUgZW4KICAgICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1By
b3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlu
a1N0b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRl
ZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8mIHVzZXJzID0gbV92aXNpdGVkTGlua1N0b3Jl
c1dpdGhVc2Vycy5lbnN1cmUoJnZpc2l0ZWRMaW5rU3RvcmUsIFtdIHsKLSAgICAgICAgcmV0dXJu
IEhhc2hTZXQ8dWludDY0X3Q+IHsgfTsKKyAgICAgICAgcmV0dXJuIEhhc2hTZXQ8UGFnZUlkZW50
aWZpZXI+IHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIXVzZXJz
LmNvbnRhaW5zKHBhZ2VJRCkpOwpAQCAtNDI4LDcgKzQyNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlu
a1N0b3JlCiAgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUuYWRkUHJvY2VzcygqdGhpcyk7CiB9CiAK
LXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVk
TGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYg
dmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8gaXQg
PSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmZpbmQoJnZpc2l0ZWRMaW5rU3RvcmUpOwog
ICAgIGlmIChpdCA9PSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmVuZCgpKQpAQCAtNTQx
LDcgKzU0MCw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFi
bGVkKCkKIH0KICNlbmRpZgogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQ
YWdlV2l0aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5Ojpo
YXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewog
ICAgIGZvciAoYXV0byogcHJvdmlzaW9uYWxQYWdlIDogbV9wcm92aXNpb25hbFBhZ2VzKSB7CiAg
ICAgICAgIGlmIChwcm92aXNpb25hbFBhZ2UtPnBhZ2UoKS5wYWdlSUQoKSA9PSBwYWdlSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDlhNmNiZjFmNDYw
Li5hZDNmMDM4ZGQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU2hhcmVkU3RyaW5nSGFzaC5oPgpAQCAtOTcsNyArOTgsNyBAQCBlbnVtIGNsYXNzIEFsbG93
UHJvY2Vzc0NhY2hpbmcgeyBObywgWWVzIH07CiBjbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJs
aWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xp
ZW50LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUHJvY2Vzc1Byb3h5PiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
V2ViRnJhbWVQcm94eT4+IFdlYkZyYW1lUHJveHlNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPHVp
bnQ2NF90LCBXZWJQYWdlUHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CisgICAgdHlwZWRlZiBIYXNo
TWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHkqPiBXZWJQYWdlUHJveHlN
YXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpVc2VySW5pdGlh
dGVkQWN0aW9uPj4gVXNlckluaXRpYXRlZEFjdGlvbk1hcDsKIAogICAgIGVudW0gY2xhc3MgSXNQ
cmV3YXJtZWQgewpAQCAtMTI4LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYnNp
dGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgc3RhdGljIFdlYlByb2Nlc3NQ
cm94eSogcHJvY2Vzc0ZvcklkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwot
ICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKKyAgICBz
dGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAg
ICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQ
YWdlQ29uZmlndXJhdGlvbj4mJik7CiAKICAgICBlbnVtIGNsYXNzIEJlZ2luc1VzaW5nRGF0YVN0
b3JlIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTE0OSwxMCArMTUwLDEwIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlV2ViUGFnZUluUHJvY2Vzcyh1aW50NjRfdCBw
YWdlSUQpOworICAgIHZvaWQgZGlkQ3JlYXRlV2ViUGFnZUluUHJvY2VzcyhXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRM
aW5rU3RvcmUmLCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtT
dG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBh
ZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExp
bmtTdG9yZSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgYWRkV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmLCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBkaWREZXN0cm95V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmKTsKQEAg
LTMxMSw3ICszMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3ZWJQYWdlTWVkaWFTdGF0ZURpZENo
YW5nZShXZWJQYWdlUHJveHkmKTsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyB1aW50NjRfdCBn
ZW5lcmF0ZVBhZ2VJRCgpOworICAgIHN0YXRpYyBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBnZW5l
cmF0ZVBhZ2VJRCgpOwogICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNp
dGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1lZCk7CiAKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJv
eHkKQEAgLTM1NCw3ICszNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4
dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpOwogI2VuZGlm
CiAKLSAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNv
bnN0OworICAgIGJvb2wgaGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKSBjb25zdDsKICAgICBib29sIGlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVt
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBjb25zdDsKIAogICAgIC8vIFBsdWdpbnMKQEAgLTQ0
Nyw3ICs0NDgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8UHJvdmlzaW9uYWxQYWdlUHJveHkq
PiBtX3Byb3Zpc2lvbmFsUGFnZXM7CiAgICAgVXNlckluaXRpYXRlZEFjdGlvbk1hcCBtX3VzZXJJ
bml0aWF0ZWRBY3Rpb25NYXA7CiAKLSAgICBIYXNoTWFwPFZpc2l0ZWRMaW5rU3RvcmUqLCBIYXNo
U2V0PHVpbnQ2NF90LyogcGFnZUlEICovPj4gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2VyczsK
KyAgICBIYXNoTWFwPFZpc2l0ZWRMaW5rU3RvcmUqLCBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPj4gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2VyczsKICAgICBIYXNoU2V0PFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
aWVzOwogCiAgICAgaW50IG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJs
ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3Bw
CmluZGV4IGUzNTUzMTllYTRjLi43ZDU3NWE0MDRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lk
IFdlYlVSTFNjaGVtZUhhbmRsZXI6OnRhc2tDb21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYgdGFz
aykKICAgICBwbGF0Zm9ybVRhc2tDb21wbGV0ZWQodGFzayk7CiB9CiAKLXZvaWQgV2ViVVJMU2No
ZW1lSGFuZGxlcjo6cmVtb3ZlVGFza0Zyb21QYWdlTWFwKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgdGFza0lEKQordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBhZ2VN
YXAoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpCiB7CiAgICAgYXV0byBp
dGVyYXRvciA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZUlEKTsKICAgICBBU1NF
UlQoaXRlcmF0b3IgIT0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZW5kKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IDg5OTc2YzYxZjgz
Li5iN2FmMDc1OTc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZUhhbmRsZXIuaApAQCAtNjYsMTMgKzY2LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiwgV2ViVVJMU2NoZW1lVGFzayYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1UYXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2sm
KSA9IDA7CiAKLSAgICB2b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IHRhc2tJRCk7CisgICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJRCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzRm9yVGFza0lkZW50aWZpZXIodWludDY0X3QpIGNvbnN0OwogCiAgICAgdWludDY0
X3QgbV9pZGVudGlmaWVyOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVt
ZVRhc2s+PiBtX3Rhc2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIEhhc2hTZXQ8dWludDY0X3Q+
PiBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CiAgICAg
CiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5k
ZXggMTlhNmJiODRjM2MuLjliN2FkNWUyMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNzAsNyArNzAsNyBAQCBhdXRvIFdlYlVSTFNjaGVt
ZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVzcG9ucwogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCiAgICAgbV9yZXF1
ZXN0ID0gcmVxdWVzdDsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVS
TFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24obV91cmxTY2hlbWVIYW5kbGVyLT5pZGVu
dGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UsIHJlcXVlc3QpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUGVyZm9y
bVJlZGlyZWN0aW9uKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZp
ZXIsIHJlc3BvbnNlLCByZXF1ZXN0KSk7CiAKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9u
ZTsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICBpZiAo
aXNTeW5jKCkpCiAgICAgICAgIG1fc3luY1Jlc3BvbnNlID0gcmVzcG9uc2U7CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVz
cG9uc2UobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVz
cG9uc2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
UkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRp
ZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlKSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5
cGU6Ok5vbmU7CiB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6
OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25U
eQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0
YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCB7IGJ1ZmZl
ciB9KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJM
U2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigp
LCBtX2lkZW50aWZpZXIsIHsgYnVmZmVyIH0pKTsKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6
Tm9uZTsKIH0KIApAQCAtMTQzLDcgKzE0Myw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlk
Q29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAg
ICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVI
YW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgZXJyb3IpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxl
dGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgZXJyb3Ip
KTsKICAgICBtX3VybFNjaGVtZUhhbmRsZXItPnRhc2tDb21wbGV0ZWQoKnRoaXMpOwogCiAgICAg
cmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CkBAIC0xNjksNCArMTY5LDE0IEBAIHZvaWQgV2Vi
VVJMU2NoZW1lVGFzazo6c3RvcCgpCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKHsg
fSwgZmFpbGVkQ3VzdG9tUHJvdG9jb2xTeW5jTG9hZChtX3JlcXVlc3QpLCB7IH0pOwogfQogCitJ
UEM6OkNvbm5lY3Rpb24qIFdlYlVSTFNjaGVtZVRhc2s6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCk7Cit9CisKK3Vp
bnQ2NF90IFdlYlVSTFNjaGVtZVRhc2s6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaAppbmRleCBiODcyMDczYmQyNy4uN2YxNGI5ODYwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KQEAgLTUxLDEzICs1MiwxMyBAQCBjbGFzcyBXZWJQ
YWdlUHJveHk7CiAKIHVzaW5nIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+OwogCi1jbGFz
cyBXZWJVUkxTY2hlbWVUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4s
IHB1YmxpYyBJbnN0YW5jZUNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4geworY2xhc3MgV2ViVVJM
U2NoZW1lVGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+LCBwcml2YXRl
IElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIEluc3RhbmNlQ291bnRlZDxXZWJVUkxTY2hlbWVU
YXNrPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViVVJMU2NoZW1lVGFzayk7CiBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUoV2ViVVJMU2NoZW1l
SGFuZGxlciYsIFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IGlkZW50
aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBTeW5jTG9hZENvbXBsZXRpb25IYW5k
bGVyJiYpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRl
bnRpZmllcjsgfQotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlk
ZW50aWZpZXI7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNz
KCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzLmdldCgpOyB9CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0K
QEAgLTgwLDYgKzgxLDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJVUkxTY2hlbWVU
YXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkm
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xv
YWRDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIK
KyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmlu
YWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5h
bDsKIAogICAgIGJvb2wgaXNTeW5jKCkgY29uc3QgeyByZXR1cm4gISFtX3N5bmNDb21wbGV0aW9u
SGFuZGxlcjsgfQogCkBAIC04Nyw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5
KiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOwogICAgIHVp
bnQ2NF90IG1faWRlbnRpZmllcjsKLSAgICB1aW50NjRfdCBtX3BhZ2VJZGVudGlmaWVyOworICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBib29sIG1fc3RvcHBlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3Jlc3BvbnNlU2VudCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4
IDBiZjUxMTJhOWU0Li4wYThiMGMxMTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE1NzYsNyAr
MTU3Niw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1l
dHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1ZSwgQ29tcGxlCiAgICAgICAgIHByb2Nlc3NQb29sLT5l
bnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCi12b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHVpbnQ2NF90IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyhQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3
ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQ
YWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNjQyZTMzMDlkMDcuLjgyMmMzZmM3NjM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZp
Z3VyYXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMTM1LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50
NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21h
aW5zKT4mJik7CisgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRv
bWFpbnMpPiYmKTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVz
b3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAg
dm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3Rl
ZEZyb20sIGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggNzYwYTFkMDA5ZGUuLjAxNzk5NWE1
MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJM
LCBjb25zdCBTdHIKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3Jp
dGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBh
YnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9p
bnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2
ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNl
U2F2ZURpYWxvZykgewpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBT
CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCiAgICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQ
YWdlID0gd2ViVmlldygpLT5fcGFnZS5nZXQoKTsKLSAgICBpbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFs
VVJMIGFic29sdXRlU3RyaW5nXSksIGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBpbnNw
ZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkQXBwZW5k
KFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25E
cmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggZjcwZjFhNGFjNGQuLmM1NzM4NmUz
NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMTIyLDcgKzEyMiw3
IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlkVXBkYXRlR2Vv
bWV0cnkoKQogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9y
RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCiB7CiAgICAgU2Vj
b25kcyBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29u
ZHMoMjUwKTsKLSAgICBwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJ
bW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRl
PihtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQsIElQ
Qzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsK
KyAgICBwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVs
eTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlPihtX3dlYlBh
Z2VQcm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCwg
SVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMp
OwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndpbGxTZW5k
VXBkYXRlR2VvbWV0cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggNTAyNDFkOGJmNjIuLmY1M2ZiMjFl
M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVD
b250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXJNYWMubW0KQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2ZW50ICpldmVu
dCwgRmxvYQogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBkcm9wIHRoZSBmaXJzdCBmcmFtZSBvZiB0
aGUgZ2VzdHVyZSBvbiB0aGUgZmxvb3IsIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgdmlzaWJs
ZSBjb250ZW50IGJvdW5kcyB5ZXQuCiAgICAgICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFn
ZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdl
b21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkp
OworICAgICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpKTsK
ICAgICAgICAgbV9sYXN0TWFnbmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24g
PSBmYWxzZTsKIAogICAgICAgICByZXR1cm47CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQ
b2ludCBvcmlnaW4pCiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVU
eXBlOjpOb25lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdl
b21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9u
R2VzdHVyZShvcmlnaW4pKTsKIH0KIAogc3RhdGljIGZsb2F0IG1heGltdW1SZWN0YW5nbGVDb21w
b25lbnREZWx0YShGbG9hdFJlY3QgYSwgRmxvYXRSZWN0IGIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpp
bmRleCAyMTUxNjYyZDM0Ny4uNWE2ODMwOTZlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAt
MTkzLDcgKzE5Myw3IEBAIC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcldpbGxCZWdp
bkFuaW1hdGlvbjooTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjCiAgICAgLy8gRklYTUU6IENv
bm5lY3Rpb24gY2FuIGJlIG51bGwgaWYgdGhlIHByb2Nlc3MgaXMgY2xvc2VkOyB3ZSBzaG91bGQg
Y2xlYW4gdXAgYmV0dGVyIGluIHRoYXQgY2FzZS4KICAgICBpZiAoX3N0YXRlID09IFdlYktpdDo6
SW1tZWRpYXRlQWN0aW9uU3RhdGU6OlBlbmRpbmcpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbm5l
Y3Rpb24gPSBfcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKSkgewotICAgICAgICAgICAgYm9v
bCByZWNlaXZlZFJlcGx5ID0gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRl
c3Q+KF9wYWdlLT5wYWdlSUQoKSwgU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyg1MDApKTsKKyAg
ICAgICAgICAgIGJvb2wgcmVjZWl2ZWRSZXBseSA9IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlh
dGVBY3Rpb25IaXRUZXN0PihfcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgU2Vjb25kczo6ZnJv
bU1pbGxpc2Vjb25kcyg1MDApKTsKICAgICAgICAgICAgIGlmICghcmVjZWl2ZWRSZXBseSkKICAg
ICAgICAgICAgICAgICBfc3RhdGUgPSBXZWJLaXQ6OkltbWVkaWF0ZUFjdGlvblN0YXRlOjpUaW1l
ZE91dDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDAwN2Q4N2RmY2Q4Li5mNGFiOTFlODliMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
U2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0
b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwog
Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pKTsK
ICAgICB9OwogCiAgICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTUyMiw3ICs1MjIsNyBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogICAgIFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW2hhbmRsZSBj
bG9zZUZpbGVdOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSks
IG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3Ry
aW5nXSkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFtZURpZENoYW5n
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpp
bmRleCA4N2M2OGIzMzQ4NS4uNDU1ZDJkNWQ0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp3aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChjb25zdCBGbG9hdFJlY3QmIHZp
ZXdGcmFtZUluV2luZG93CiAgICAgLy8gSW4gY2FzZSB0aGUgVUkgY2xpZW50IG92ZXJyaWRlcyBn
ZXRXaW5kb3dGcmFtZSgpLCB3ZSBjYWxsIGl0IGhlcmUgdG8gbWFrZSBzdXJlIHdlIHNlbmQgdGhl
IGFwcHJvcHJpYXRlIHdpbmRvdyBmcmFtZS4KICAgICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgq
dGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdmlld0ZyYW1lSW5X
aW5kb3dDb29yZGluYXRlcywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlc10gKEZsb2F0UmVj
dCB3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMpIHsKICAgICAgICAgRmxvYXRSZWN0IHdp
bmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcyA9IHBhZ2VDbGllbnQoKS5jb252
ZXJ0VG9Vc2VyU3BhY2Uod2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKTsKLSAgICAgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd0FuZFZpZXdGcmFtZXNDaGFu
Z2VkKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywgd2luZG93RnJhbWVJblVuZmxpcHBl
ZFNjcmVlbkNvb3JkaW5hdGVzLCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nlc3Np
YmlsaXR5Vmlld0Nvb3JkaW5hdGVzKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZCh3aW5kb3dGcmFtZUluU2NyZWVu
Q29vcmRpbmF0ZXMsIHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgdmll
d0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcykp
OwogICAgIH0pOwogfQogCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1haW5GcmFtZUlzU2Ny
b2xsYWJsZShpc1Njcm9sbGFibGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERp
Y3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiBy
ZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYg
ZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQpA
QCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRB
c3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0
RGljdGF0ZWRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJu
YXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdl
LCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3VwKSk7CiAjZWxzZQogICAg
IEluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91
cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOwpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0
aW5nUmFuZ2UmCiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpB
dHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vi
c3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJh
Y2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFj
dHVhbFJhbmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFN0cmluZyYsIGRvdWJsZSwgYm8KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0
IFN0cmluZyYgZm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNNdWx0
aXBsZUZvbnRzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yNzEsNyArMjcxLDcgQEAgU3Ry
aW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgICAg
IHJldHVybiB2YWx1ZTsKICAgICAKICAgICBjb25zdCBTZWNvbmRzIG1lc3NhZ2VUaW1lb3V0KDIw
KTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0
KTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCgpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFz
dGVib2FyZDo6UmVwbHkodmFsdWUpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHZhbHVl
OwogfQogCkBAIC0yODIsOCArMjgyLDggQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4g
V2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHIKICAgICBT
aGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7CiAgICAg
Y29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJv
YXJkVHlwZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5
KGhhbmRsZSwgc2l6ZSksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9h
cmRUeXBlKSwKKyAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQ
YXN0ZWJvYXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgaWYg
KGhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNo
YXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxl
LCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKQEAgLTI5NywxNCArMjk3LDE0
IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3Qg
U3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAg
Y29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2Fy
ZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOjpS
ZXBseShyZXN1bHQpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZE5h
bWUpLCBNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOjpSZXBs
eShyZXN1bHQpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogI2lm
IEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxl
Y3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRh
dGEpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVj
dGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YSkpOwogfQogI2VuZGlmCiAKQEAgLTMz
NCwyMiArMzM0LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kQ29tcGxleFRleHRJbnB1dFRv
UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4ocGx1Z2luQ29t
cGxleFRleHRJbnB1dElkZW50aWZpZXIsIHRleHRJbnB1dCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHBsdWdpbkNv
bXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB0ZXh0SW5wdXQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnVwcGVyY2FzZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVcHBlcmNhc2VXb3JkKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVcHBlcmNhc2VXb3JkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG93ZXJj
YXNlV29yZCgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxvd2Vy
Y2FzZVdvcmQoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxvd2Vy
Y2FzZVdvcmQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYXBpdGFsaXplV29yZCgpCiB7
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcGl0YWxpemVXb3JkKCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBpdGFsaXplV29yZCgp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChi
b29sIGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBpc1NtYXJ0SW5z
ZXJ0RGVsZXRlRW5hYmxlZCkKIAogICAgIFRleHRDaGVja2VyOjpzZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQoaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOwogICAgIG1faXNTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQgPSBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKLSAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGlz
U21hcnRJbnNlcnREZWxldGVFbmFibGVkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChpc1NtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURpY3Rpb25hcnlM
b29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykKQEAg
LTM5NSw3ICszOTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nl
c3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVt
ZW50VG9rZW4sIHdpbmRvd1Rva2VuKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4s
IHdpbmRvd1Rva2VuKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwbHVnaW5Gb2N1c09yV2lu
ZG93Rm9jdXNDaGFuZ2VkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVy
LCBib29sIHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpCkBAIC00MjQsNyArNDI0LDcg
QEAgYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JFdmVudChj
b25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAg
ICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgzKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChldmVu
dCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQ6OlJl
cGx5KHJlc3VsdCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChldmVudCksIE1l
c3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQ6OlJlcGx5KHJl
c3VsdCksIG1lc3NhZ2VUaW1lb3V0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzUs
NyArNDM1LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVu
dE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW4KIAogICAgIGJvb2wgcmVzdWx0ID0g
ZmFsc2U7CiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgzKTsKLSAgICBwcm9jZXNz
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlKGV2ZW50TnVt
YmVyLCBldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZTo6UmVwbHko
cmVzdWx0KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91c2UoZXZlbnROdW1iZXIsIGV2ZW50KSwgTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlOjpSZXBseShyZXN1bHQpLCBtZXNzYWdlVGlt
ZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRl
eCBmZjQ0OTM0MWQ5ZS4uNmFhYzNhN2MwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC00
Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViUGF5bWVudENvb3JkaW5hdG9yOjpX
ZWJQYXltZW50Q29vcmRpbmF0b3IoV2ViUGFnZSYgd2ViUGFnZSkKICAgICA6IG1fd2ViUGFnZSh3
ZWJQYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fd2ViUGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCAqdGhpcyk7
CiB9CiAKIFdlYlBheW1lbnRDb29yZGluYXRvcjo6fldlYlBheW1lbnRDb29yZGluYXRvcigpCkBA
IC0xNjgsNyArMTY4LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYXltZW50Q29vcmRpbmF0b3I6
Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGF5bWVudENv
b3JkaW5hdG9yOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgpLnRv
VUludDY0KCk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZU1lcmNo
YW50KGNvbnN0IFN0cmluZyYgdmFsaWRhdGlvblVSTFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5jcHAKaW5kZXggYjFjYmM5NjNiMGUuLjQ1NGNhNmJjODQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJGcmFt
ZSYgZnJhbWUpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxsYmFja0lELCBlcnJvck1lc3NhZ2UsIGVycm9yVHlw
ZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJ
bXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNj
cmlwdEZ1bmN0aW9uKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVj
dHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTMxMiw3ICszMTIsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1
bmN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Np
b246OkRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNhbGxiYWNrSUQsIHJlc3VsdCwgZXJy
b3JUeXBlKSwgMCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2
ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
PiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2Uo
cGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0
X3QgcGFnZUlELCB1aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgY2hpbGRG
cmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpy
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRs
ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
bm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50
NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAg
LTM4OCw3ICszODgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVD
aGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlELAogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6bnVsbG9wdCwgZnJhbWVGcm9tRWxlbWVudC0+ZnJhbWVJRCgpKTsKIH0KIAot
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1l
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNo
aWxkRnJhbWVXaXRoTmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFn
ZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBh
Z2UpIHsKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NgogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0K
IAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFn
ZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBp
ZiAoIXBhZ2UpIHsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYQog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgcGFyZW50RnJhbWUtPmZyYW1lSUQo
KSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Zm9jdXNGcmFtZSh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OmZvY3VzRnJhbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
KQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtNTI3LDcgKzUyNyw3IEBAIHN0YXRpYyBXZWJD
b3JlOjpGbG9hdFBvaW50IGNvbnZlcnRQb2ludEZyb21GcmFtZUNsaWVudFRvUm9vdFZpZXcoV2Vi
Q29yZTo6RnJhbWVWCiAgICAgcmV0dXJuIGNsaWVudFBvaW50OwogfQogCi12b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9w
dGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFn
ZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgcmVzdWx0RWxl
bWVudEJvdW5kcywgcmVzdWx0SW5WaWV3Q2VudGVyUG9pbnQsIGlzT2JzY3VyZWQpOwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudChQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIFdl
YkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0Rm9yU2NyZWVuc2hvdChXZWJQYWdlJiBwYWdlLCBX
ZWJDb3JlOjpFbGVtZW4KICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9v
bCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVl
ZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFNo
YXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKIApAQCAtNzUxLDcgKzc1MSw3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlECiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRp
ZFRha2VTY3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgeyB9KSwgMCk7CiB9CiAKLXZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFtZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC03NzYsNyArNzc2LDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQs
IGZvdW5kQ29va2llcyk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGVs
ZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tp
ZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tp
ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVO
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmgKaW5kZXggNjI5NTQxZDIwYmEuLjExNjc2NDUyNzdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIkNvb3JkaW5hdGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDE3
ICs2MSwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgYnkgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eSBtZXNzYWdlcwotICAgIHZvaWQgZXZhbHVhdGVKYXZhU2Ny
aXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxp
Y2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2
ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVX
aXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+
JiYpOwotICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50
NjRfdCk+JiYpOwotICAgIHZvaWQgZm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQpOwotICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmll
d0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50
PiwgYm9vbCk+JiYpOwotICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKLSAgICB2b2lkIHRha2VTY3JlZW5zaG90KHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4s
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCBldmFsdWF0
ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBi
b29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3Jk
aW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qg
b3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRf
dCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFu
ZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4m
Jik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJl
c29sdmVQYXJlbnRGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYp
OworICAgIHZvaWQgZm9jdXNGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
ZnJhbWVJRCk7CisgICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRQb2ludD4sIGJvb2wpPiYmKTsKKyAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKKyAgICB2b2lkIHRh
a2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBU
b1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXNGb3JG
cmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+
JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+KT4mJik7CiAKICAgICBTdHJpbmcgbV9zZXNzaW9uSWRlbnRpZmllcjsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
YWExMjE5ZTJlZjEuLmQ3MmY4OWQyNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDIxICsyMSwyMSBAQAogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
CiBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IHsKLSAgICBFdmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNp
dENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJp
bmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQg
Y2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgUmVzb2x2ZUNoaWxk
RnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQz
Ml90IG9yZGluYWwpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJh
bWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZl
Q2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIG5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJ
RCkgQXN5bmMKLSAgICBSZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1l
SUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwpIC0+
IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAg
ICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZl
Q2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwg
dWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3Ry
aW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCiAKLSAgICBGb2N1c0ZyYW1l
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKKyAgICBGb2N1c0ZyYW1lKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKIAotICAgIENvbXB1
dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgZW51bTp1aW50OF90IFdl
YktpdDo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSAtPiAoT3B0aW9uYWw8U3Ry
aW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6
SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIEFzeW5jCisgICAg
Q29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVl
ZGVkLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0
ZW0pIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCByZWN0
LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNP
YnNjdXJlZCkgQXN5bmMKIAotICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3JUeXBlKSBBc3luYworICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkg
LT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYwogCi0gICAgVGFrZVNjcmVlbnNo
b3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwg
Ym9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRf
dCBjYWxsYmFja0lEKQorICAgIFRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIAotICAgIEdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gY29va2llcykgQXN5bmMKLSAgICBEZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4g
ZXJyb3JUeXBlKSBBc3luYworICAgIEdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVy
cm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKKyAgICBEZWxl
dGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgY29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3lu
YwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggYWUzODgzZDg2YjYuLmFmODlkNzg4
MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKQorICAgICAgICBpZiAo
YXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVj
dElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkp
KQogICAgICAgICAgICAgd2ViUGFnZS0+ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDA0
YWUwZTQ1ZDVlLi4yNzhiNjAxODQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBA
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVz
b3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgYXV0byYgZnJhbWVMb2FkZXJDbGllbnQgPSBy
ZXNvdXJjZUxvYWRlci5mcmFtZUxvYWRlcigpLT5jbGllbnQoKTsKIAogICAgIFdlYlJlc291cmNl
TG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0ZXJzOwotICAgIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZU9y
KDApOworICAgIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5w
YWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsgfSk7CiAgICAgdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQgPSBmcmFtZUxvYWRlckNsaWVudC5mcmFtZUlEKCkudmFsdWVPcigwKTsKICAg
ICB0cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCA9IGlkZW50aWZpZXI7CiAgICAgYXV0byBz
ZXNzaW9uSUQgPSBmcmFtZUxvYWRlckNsaWVudC5zZXNzaW9uSUQoKTsKQEAgLTE2Nyw3ICsxNjcs
NyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIm
IHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHJlbWVt
YmVyIHRoZSBSZXNvdXJjZUxvYWRlciBpbiBvdXIgcmVjb3JkcyBidXQgbm90IHNjaGVkdWxlIGl0
IGluIHRoZSBOZXR3b3JrUHJvY2Vzcy4KICAgICBpZiAocmVzb3VyY2VMb2FkZXIuZG9jdW1lbnRM
b2FkZXIoKS0+c2NoZWR1bGVBcmNoaXZlTG9hZChyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2Fk
ZXIucmVxdWVzdCgpKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJv
Y2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBo
YW5kbGVkIGFzIGFuIGFyY2hpdmUgcmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVz
b3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJj
aGl2ZSByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNv
dXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNo
aXZlIHJlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIG1fd2ViUmVzb3VyY2VMb2Fk
ZXJzLnNldChpZGVudGlmaWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHJlc291cmNlTG9h
ZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3
NSwxNCArMTc1LDE0IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNv
dXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBpZiAocmVzb3Vy
Y2VMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxv
YWRSZXNvdXJjZShyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCByZXNv
dXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1
bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwg
JyVzJyB3aWxsIGJlIGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlLiIsIHJlc291cmNlTG9h
ZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2Fk
ZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJl
c291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVk
IGZyb20gYXBwbGljYXRpb24gY2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNv
dXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCks
IHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgbV93ZWJS
ZXNvdXJjZUxvYWRlcnMuc2V0KGlkZW50aWZpZXIsIFdlYlJlc291cmNlTG9hZGVyOjpjcmVhdGUo
cmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElz
RGF0YSgpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBX
ZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGxvYWRlZCBh
cyBkYXRhLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVM
b2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgYXMgZGF0YSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRy
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
bG9hZGVkIGFzIGRhdGEgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRl
ci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQo
cmVzb3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTkwLDcgKzE5MCw3
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYg
cmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYg
KGlzUXVpY2tMb29rUHJldmlld1VSTChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkpKSB7
CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlj
a0xvb2sgcmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJz
Y2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2Ug
KGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRp
Zmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJz
Y2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2Ug
KGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIs
IENhY2hlZFJlc291CiAgICAgLy8gaHR0cHM6Ly9ibG9ncy5nbm9tZS5vcmcvYWxleGwvMjAxMi8w
MS8yNi9yZXNvdXJjZXMtaW4tZ2xpYi8KICAgICBpZiAocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgp
LnVybCgpLnByb3RvY29sSXMoInJlc291cmNlIikpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hl
ZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVy
bCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJjZS4iLCByZXNvdXJjZUxvYWRlci51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBh
cyBhIEdSZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNv
dXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNv
dXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCks
IHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxv
YWRlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNl
TG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xl
dG9uKCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgW3RoaXMsIHRyYWNraW5nUGFyYW1ldGVycywg
aWRlbnRpZmllciwgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291
cmNlKSwgcmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmKHJlc291cmNlTG9hZGVyKV0gKFNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChy
ZXN1bHQgIT0gU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQ6OlVuaGFuZGxlZCkgewog
ICAgICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRl
clN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91
Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIiwgcmVzb3VyY2VMb2FkZXIt
PnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgd2ls
bCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0
aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlk
ZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxv
YWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2gg
U2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNvdXJjZUxvYWRl
ci0+b3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9u
bHkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VM
b2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVsZSBVUkwgdGhyb3Vn
aCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNj
aGVkdWxlTG9hZDogdW5hYmxlIHRvIHNjaGVkdWxlIFVSTCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIg
aGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291
cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCks
IHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3Jlc291cmNlTG9hZGVyID0gV1RGTW92ZShyZXNvdXJjZUxvYWRlcild
IHsKICAgICAgICAgICAgICAgICBhdXRvIGVycm9yID0gaW50ZXJuYWxFcnJvcihyZXNvdXJjZUxv
YWRlci0+cmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgICAgICAgICBlcnJvci5zZXRUeXBlKFJl
c291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CkBAIC0yMjcsMTMgKzIyNywxMyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291
cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYkxvYWRlclN0cmF0ZWd5KCkudHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihy
ZXNvdXJjZUxvYWRlcikpCiAgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJM
b2FkZXJTdHJhdGVneSgpLnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxv
YWRlci5nZXQoKSwgcmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJz
LCBzZXNzaW9uSUQsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1h
eGltdW1CdWZmZXJpbmdUaW1lKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIG5v
dCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJl
c291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90
IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgIH0pOwogI2Vs
c2UKICAgICBpZiAoIXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2Fk
ZXIpKQogICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2Fk
ZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzZXNzaW9u
SUQsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZm
ZXJpbmdUaW1lKHJlc291cmNlKSk7CiAgICAgZWxzZQotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkg
YW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZy
YW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291
cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJz
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgaWRlbnRpZmllcik7CiAjZW5kaWYKIH0KIApAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJj
ZUxvYWRlciYgcmVzb3VyY2VMCiAgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLm9wdGlvbnMubW9kZSAh
PSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlKSB7CiAgICAgICAgIEFTU0VSVChsb2FkUGFy
YW1ldGVycy5zb3VyY2VPcmlnaW4pOwogICAgICAgICBpZiAoIWxvYWRQYXJhbWV0ZXJzLnNvdXJj
ZU9yaWdpbikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNv
dXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogbm8gc291cmNlT3JpZ2luIChmcmFtZSA9ICVwLCBw
cmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3Rh
dGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQ
YXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFt
ZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBubyBzb3VyY2VPcmlnaW4gKGZyYW1l
ID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFt
ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgp
KSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgICAgICAgICAgc2NoZWR1
bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KQEAgLTM0Niw5ICszNDYsOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNl
TAogCiAgICAgQVNTRVJUKChsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgJiYgbG9hZFBhcmFtZXRl
cnMud2ViRnJhbWVJRCkgfHwgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9
PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscyk7
CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVM
b2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3Mg
KGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRl
ci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlv
cml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2FkUGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hl
ZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+
KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2Vi
UGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0
ZXJzLmlkZW50aWZpZXIpOwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFy
YW1ldGVycyksIDApKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVz
b3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3
aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQs
IGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwor
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2No
ZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1By
b2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJj
ZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3Qo
KS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQ
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgICAg
ICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5l
dHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQuCiAgICAgICAgIC8vIFRoaXMgbG9h
ZCB3aWxsIG5ldmVyIHN1Y2NlZWQgc28gd2Ugd2lsbCBzY2hlZHVsZSBpdCB0byBmYWlsIGFzeW5j
aHJvbm91c2x5LgogICAgICAgICBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKHJlc291cmNl
TG9hZGVyKTsKQEAgLTUwNywxOSArNTA3LDE5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAg
ICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxv
YWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9
IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAKLSAgICBhdXRvIHBhZ2VJ
RCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CisgICAgYXV0byBwYWdlSUQgPSB3
ZWJQYWdlID8gd2ViUGFnZS0+cGFnZUlEKCkgOiBQYWdlSWRlbnRpZmllciB7IH07CiAgICAgYXV0
byBmcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKICAgICBhdXRv
IHNlc3Npb25JRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CiAKICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lTG9h
ZGVyLmZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hy
b25vdXNseTogbm8gZG9jdW1lbnQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxv
YWRJZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNz
aW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBubyBkb2N1bWVudCAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBw
YWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAg
ICAgIGVycm9yID0gaW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChhdXRvIHN5bmNMb2FkUmVzdWx0ID0gdHJ5TG9hZGluZ1N5bmNo
cm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIoZnJhbWVMb2FkZXIsIHJlc291cmNlTG9hZElk
ZW50aWZpZXIsIHJlcXVlc3QpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIGNhbGxpbmcg
dHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUsIGVycm9y
ID0gJWQpIiwgcGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBzeW5jTG9h
ZFJlc3VsdC0+ZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBj
YWxsaW5nIHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1
LCBlcnJvciA9ICVkKSIsIHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCByZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBzeW5jTG9hZFJlc3VsdC0+ZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgICAgICBl
cnJvciA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQtPmVycm9yKTsKICAgICAgICAgcmVzcG9uc2Ug
PSBXVEZNb3ZlKHN5bmNMb2FkUmVzdWx0LT5yZXNwb25zZSk7CiAgICAgICAgIGRhdGEgPSBXVEZN
b3ZlKHN5bmNMb2FkUmVzdWx0LT5kYXRhKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFt
ZUxvYWRlciwgdW5zaQogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlz
YWJsZXI7CiAKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBhcmFt
ZXRlcnMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1T
eW5jaHJvbm91c0xvYWQ6OlJlcGx5KGVycm9yLCByZXNwb25zZSwgZGF0YSksIDApKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNl
U3luY2hyb25vdXNseTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9jZXNz
IG1lc3NhZ2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlbHUpIiwgcGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgc2VuZGluZyBzeW5jaHJvbm91cyBuZXR3b3Jr
IHByb2Nlc3MgbWVzc2FnZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVz
b3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gd2ViUGFnZSA/
IHdlYlBhZ2UtPmNvcmVQYWdlKCkgOiBudWxscHRyKQogICAgICAgICAgICAgcGFnZS0+ZGlhZ25v
c3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjpzeW5jaHJvbm91c01lc3NhZ2VGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlOjpObyk7CiAgICAgICAgIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwpAQCAt
NTYxLDcgKzU2MSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgfQogfQogCi12b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQp
Cit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmll
ciB3ZWJQYWdlSUQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQYWdlTG9hZENvbXBsZXRlZCh3ZWJQYWdlSUQpLCAwKTsK
IH0KQEAgLTY0OCwxMCArNjQ4LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5l
Y3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBTCiAKICAgICBO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMu
cmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHVybCB9OwotICAgIHBhcmFtZXRlcnMud2ViUGFn
ZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogMDsKLSAgICBwYXJhbWV0ZXJzLndl
YkZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwOworICAgIHBhcmFt
ZXRlcnMud2ViUGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CisgICAgcGFyYW1ldGVycy53ZWJG
cmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBwYXJhbWV0ZXJzLnBhcmVudFBJRCA9
IHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwotICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0g
d2ViUGFnZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRT
ZXNzaW9uSUQoKTsKKyAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UtPnNlc3Npb25J
RCgpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJl
Y29ubmVjdE9ubHk6OlllczsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3Bv
bnNlQWNjZXNzID0gc2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA0
YWY1OTk0MWUzNC4uYWM1MjQ5NjZhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJs
aWM6CiAgICAgCiAgICAgdm9pZCBsb2FkUmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0
cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShXZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxv
bmcgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0Y2hP
cHRpb25zJiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSBm
aW5hbDsKLSAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgZmlu
YWw7CisgICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikg
ZmluYWw7CiAKICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFs
OwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJv
b2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmODhmZGEzMDA3Li44OGJkNTNiZjFmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcApAQCAtODgsMTYgKzg4LDE2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIFJlc291CiAg
ICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIExP
RyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVl
c3QgdG8gJyVzJyIsIHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRh
KCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBpZiAobV9j
b3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJl
TG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QobV9jb3JlTG9hZGVyLmdldCgpLCBwcm9wb3NlZFJlcXVl
c3QsIHJlZGlyZWN0UmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
IndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNr
Rm9yUmVkaXJlY3QgcmV0dXJuZWQgZmFsc2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3
aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0Zv
clJlZGlyZWN0IHJldHVybmVkIGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVl
c3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyldKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFt
X2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkg
YmVjYXVzZSBubyBjb3JlbG9hZGVyIG9yIGlkZW50aWZpZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29y
ZWxvYWRlciBvciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTExMywxMiArMTEzLDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFNl
bmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTCiB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+
dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
KTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIsIHN0YXR1cyA9ICVkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJ
RCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSk7CiAKICAgICBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCiAgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKG1fY29yZUxvYWRl
ci5nZXQoKSwgcmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50
IGlzIGFscmVhZHkgY2FjaGVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5yZXNvdXJjZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2
ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMgYWxy
ZWFkeSBjYWNoZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQu
dG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNSw3ICsx
MzUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgICAgICAgICAgaWYgKG1fY29yZUxv
YWRlciAmJiBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlRGlkUmVjZWl2ZVJlc3Bv
bnNlKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNl
IG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNv
cmVMb2FkZXIgb3Igbm8gSUQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIH07CiAgICAgfQogCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQg
bm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAg
ICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOwogICAgIH0KICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKQEAg
LTE1OCw3ICsxNTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bmV0d29ya0xvYWRNZXRyaWNzKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVM
b2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkRmluaXNoUmVzb3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGgg
PSAlemQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCBtX251bUJ5dGVzUmVj
ZWl2ZWQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9h
ZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5yZXNvdXJjZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3Vs
ZCBub3QgYmUgYWJsZSB0byBmaW5pc2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9u
c2UiKTsKICAgICBtX2NvcmVMb2FkZXItPmRpZEZpbmlzaExvYWRpbmcobmV0d29ya0xvYWRNZXRy
aWNzKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTAogdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9y
JiBlcnJvcikKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCku
c3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJk
aWRGYWlsUmVzb3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291
cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9V
SW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2lu
Z05ldHdvcmtSZXNwb25zZSwgIkxvYWQgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGZpbmlzaCBiZWZv
cmUgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCkBAIC0xNzksNyArMTc5LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGZvciAnJXMnIiwg
bV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlE
KTsKIAogICAgIG1fY29yZUxvYWRlci0+ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgp
OwogfQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2Nr
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExv
YWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQ
cm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNP
ckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVu
aWVkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlv
bnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCktPnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250
ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIHJlc3Bv
bnNlKTsKIH0KQEAgLTE5NiwxMyArMTk2LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0
b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pCiB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxl
UmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nl
c3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2Nv
cmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90
cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZVJlc291cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVm
ZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBT
aGFyZWFibGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8g
Y3JlYXRlIFNoYXJlZEJ1ZmZlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAg
IGlmIChhdXRvKiBmcmFtZSA9IG1fY29yZUxvYWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAg
aWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRp
YWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nS2V5czo6Y3JlYXRlU2hhcmVkQnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZTo6Tm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggN2ZkNzgzMjIzM2EuLjU4NjU0MzcxOGU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01MCw3ICs1MSw3IEBAIHR5cGVk
ZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIGNsYXNzIFdlYlJlc291cmNlTG9h
ZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgSVBDOjpN
ZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgVHJhY2tpbmdQYXJhbWV0ZXJzIHsK
LSAgICAgICAgdWludDY0X3QgcGFnZUlEIHsgMCB9OworICAgICAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQ7CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQgeyAwIH07CiAgICAgICAg
IFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCB7IDAgfTsKICAgICB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCAyMGU0ZDVjNWFkYi4uZmEwNzgyM2ZmM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAg
Ym9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0
aW9uLCBXZWJQYWdlKiBwYWdlKQogICAgIGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRN
YXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWlu
dDY0X3Q+KCkpLml0ZXJhdG9yOwogICAgIGl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uSUQp
OwogCi0gICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCks
IG5vdGlmaWNhdGlvbi0+Ym9keSgpLCBub3RpZmljYXRpb24tPmljb24oKS5zdHJpbmcoKSwgbm90
aWZpY2F0aW9uLT50YWcoKSwgbm90aWZpY2F0aW9uLT5sYW5nKCksIG5vdGlmaWNhdGlvbi0+ZGly
KCksIG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdp
bigpLT50b1N0cmluZygpLCBub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBw
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dOb3RpZmljYXRpb24obm90aWZp
Y2F0aW9uLT50aXRsZSgpLCBub3RpZmljYXRpb24tPmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29u
KCkuc3RyaW5nKCksIG5vdGlmaWNhdGlvbi0+dGFnKCksIG5vdGlmaWNhdGlvbi0+bGFuZygpLCBu
b3RpZmljYXRpb24tPmRpcigpLCBub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbm90aWZpY2F0aW9uSUQpKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CkBAIC0x
NjksNyArMTY5LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiAgICAgaWYgKCFub3RpZmljYXRp
b25JRCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNhbmNlbE5vdGlmaWNh
dGlvbihub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFS
QU0ocGFnZSk7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzID0g
aXQtPnZhbHVlOwotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25J
RHMpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpDbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURzKSk7CiAgICAgc2l6ZV90IGNv
dW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGNvdW50OyArK2kpIHsKICAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9u
ID0gbV9ub3RpZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbklEc1tpXSk7CkBAIC0yMTAs
NyArMjEwLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZp
Y2F0aW9uKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLAogCiAgICAgbV9ub3RpZmljYXRpb25J
RE1hcC5yZW1vdmUobm90aWZpY2F0aW9uSUQpOwogICAgIHJlbW92ZU5vdGlmaWNhdGlvbkZyb21D
b250ZXh0TWFwKG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pOwotICAgIG1fcHJvY2Vzcy5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7Cisg
ICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWREZXN0cm95Tm90aWZpY2F0
aW9uKG5vdGlmaWNhdGlvbklEKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRp
b24pOwogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcAppbmRleCAzNGI1YTY0M2YwMy4uOGNkZGI1MzBkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGNvbnN0IFNlY29u
ZHMgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwMF9tcyB9OyAvLyBPbmx5IHVzZWQg
YnkgbGEKIAogY2xhc3MgU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVi
bGljIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgewogcHVibGljOgotICAgIFNlcnZpY2VXb3JrZXJG
cmFtZUxvYWRlckNsaWVudChXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgY29ubmVjdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQorICAgIFNlcnZpY2VXb3JrZXJGcmFtZUxv
YWRlckNsaWVudChXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogICAgICAgICA6IG1fY29u
bmVjdGlvbihjb25uZWN0aW9uKQogICAgICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAg
ICAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC05NSwxOCArOTUsMTggQEAgcHJpdmF0ZToKICAg
ICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWdu
ZWQgbG9uZykgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KLSAgICBPcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAg
ICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9wYWdlSUQ7IH0KICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fZnJhbWVJRDsgfQogICAgIFN0cmluZyB1c2VyQWdlbnQoY29u
c3QgVVJMJikgZmluYWwgeyByZXR1cm4gbV91c2VyQWdlbnQ7IH0KIAogICAgIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9z
ZXNzaW9uSUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEIHsgMCB9OwogICAg
IFN0cmluZyBtX3VzZXJBZ2VudDsKIH07CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VH
cm91cElEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKaW5kZXggNmNlODNkMWQwOWUuLmZiYjYzMGU0ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3Rv
cmU7CiAKIGNsYXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24o
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwog
ICAgIH5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTk2
LDcgKzk2LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3M7CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsKLSAgICB1
aW50NjRfdCBtX3BhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3Bh
Z2VJRDsKICAgICB1aW50NjRfdCBtX3ByZXZpb3VzU2VydmljZVdvcmtlcklEIHsgMCB9OwogCiAg
ICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBtX3N0b3Jh
Z2VCbG9ja2luZ1BvbGljeSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tp
bmdQb2xpY3k6OkFsbG93QWxsU3RvcmFnZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yLmNwcAppbmRleCA4NTY1OTE2NmNjMi4uZDRhODdjNmQwNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJB
dXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IuY3BwCkBAIC00
MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoV2ViUGFnZSYgd2ViUGFnZSkKICAgICA6
IG1fd2ViUGFnZSh3ZWJQYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVu
dGljYXRvckNvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5wYWdl
SUQoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CiB9CiAKIFdlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRv
cjo6fldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmlu
ZGV4IDQ5NjI5NmY2ZDg4Li4zNDNlODM1YWQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAg
LTE3OCw3ICsxNzgsNyBAQCBGbG9hdFJlY3QgV2ViQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkK
IAogICAgIEZsb2F0UmVjdCBuZXdXaW5kb3dGcmFtZTsKIAotICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
R2V0V2luZG93RnJhbWU6OlJlcGx5KG5ld1dpbmRvd0ZyYW1lKSwgbV9wYWdlLnBhZ2VJRCgpKSkK
KyAgICBpZiAoIW1fcGFnZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5k
b3dGcmFtZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6UmVwbHko
bmV3V2luZG93RnJhbWUpKSkKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCiAgICAgcmV0
dXJuIG5ld1dpbmRvd0ZyYW1lOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50Ojpmb2N1c2VkRnJhbWVDaGFuZ2VkKEZyYW1lKiBmcmFtZSkKIHsKICAgICBXZWJGcmFtZSog
d2ViRnJhbWUgPSBmcmFtZSA/IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSkgOiBudWxs
cHRyOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGb2N1c2VkRnJhbWVDaGFuZ2VkKHdl
YkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDApLCBtX3BhZ2UucGFnZUlEKCkpOworICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZvY3VzZWRGcmFtZUNoYW5nZWQo
d2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMCkpOwogfQogCiBQYWdlKiBXZWJDaHJv
bWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3Qg
TmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKQEAgLTI4OCwxOSArMjg4LDIwIEBA
IFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3Qg
RnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzCiAKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJG
cmFtZTo6ZnJvbUNvcmVGcmFtZShmcmFtZSk7CiAKLSAgICB1aW50NjRfdCBuZXdQYWdlSUQgPSAw
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBuZXdQYWdlSUQ7CiAgICAgT3B0aW9uYWw8
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gcGFyYW1ldGVyczsKLSAgICBpZiAoIXdlYlByb2Nl
c3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q3JlYXRlTmV3UGFnZSh3ZWJGcmFtZS0+aW5mbygpLCB3ZWJGcmFtZS0+cGFnZSgpLT5w
YWdlSUQoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgd2luZG93RmVhdHVyZXMsIG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6
UmVwbHkobmV3UGFnZUlELCBwYXJhbWV0ZXJzKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAo
IW1fcGFnZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlKHdl
YkZyYW1lLT5pbmZvKCksIHdlYkZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpLCByZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLCB3aW5kb3dGZWF0dXJlcywgbmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpSZXBseShuZXdQYWdlSUQsIHBhcmFt
ZXRlcnMpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW5ld1BhZ2VJRCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBBU1NFUlQocGFyYW1ldGVycyk7CiAgICAg
aWYgKHBhcmFtZXRlcnMtPnNlc3Npb25JRCA9PSBtX3BhZ2Uuc2Vzc2lvbklEKCkpCiAgICAgICAg
IHBhcmFtZXRlcnMtPm9sZFBhZ2VJRCA9IG1fcGFnZS5wYWdlSUQoKTsKIAotICAgIHdlYlByb2Nl
c3MuY3JlYXRlV2ViUGFnZShuZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMpKTsKLSAgICBy
ZXR1cm4gd2ViUHJvY2Vzcy53ZWJQYWdlKG5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7CisgICAgd2Vi
UHJvY2Vzcy5jcmVhdGVXZWJQYWdlKCpuZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMpKTsK
KyAgICByZXR1cm4gd2ViUHJvY2Vzcy53ZWJQYWdlKCpuZXdQYWdlSUQpLT5jb3JlUGFnZSgpOwog
fQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvdygpCkBAIC0zMzUsNyArMzM2LDcgQEAgYm9v
bCBXZWJDaHJvbWVDbGllbnQ6OnRvb2xiYXJzVmlzaWJsZSgpCiAgICAgICAgIHJldHVybiB0b29s
YmFyc1Zpc2liaWxpdHkgPT0gQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50OjpVSUVs
ZW1lbnRWaXNpYmlsaXR5OjpWaXNpYmxlOwogICAgIAogICAgIGJvb2wgdG9vbGJhcnNBcmVWaXNp
YmxlID0gdHJ1ZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xi
YXJzQXJlVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZp
c2libGU6OlJlcGx5KHRvb2xiYXJzQXJlVmlzaWJsZSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAg
aWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNB
cmVWaXNpYmxlKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJs
ZTo6UmVwbHkodG9vbGJhcnNBcmVWaXNpYmxlKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgcmV0dXJuIHRvb2xiYXJzQXJlVmlzaWJsZTsKQEAgLTM1Myw3ICszNTQsNyBAQCBib29sIFdl
YkNocm9tZUNsaWVudDo6c3RhdHVzYmFyVmlzaWJsZSgpCiAgICAgICAgIHJldHVybiBzdGF0dXNi
YXJWaXNpYmlsaXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6VUlFbGVt
ZW50VmlzaWJpbGl0eTo6VmlzaWJsZTsKIAogICAgIGJvb2wgc3RhdHVzQmFySXNWaXNpYmxlID0g
dHJ1ZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0Jhcklz
VmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGU6
OlJlcGx5KHN0YXR1c0JhcklzVmlzaWJsZSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFt
X3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNp
YmxlKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6UmVw
bHkoc3RhdHVzQmFySXNWaXNpYmxlKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0
dXJuIHN0YXR1c0JhcklzVmlzaWJsZTsKQEAgLTM4Miw3ICszODMsNyBAQCBib29sIFdlYkNocm9t
ZUNsaWVudDo6bWVudWJhclZpc2libGUoKQogICAgICAgICByZXR1cm4gbWVudWJhclZpc2liaWxp
dHkgPT0gQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50OjpVSUVsZW1lbnRWaXNpYmls
aXR5OjpWaXNpYmxlOwogICAgIAogICAgIGJvb2wgbWVudUJhcklzVmlzaWJsZSA9IHRydWU7Ci0g
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlKCks
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OlJlcGx5KG1lbnVC
YXJJc1Zpc2libGUpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGUoKSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6UmVwbHkobWVudUJhcklzVmlzaWJs
ZSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBtZW51QmFySXNWaXNpYmxl
OwpAQCAtMTE4Niw3ICsxMTg3LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWRDb250
ZW50TWVkaWFFbGVtZW50RGlkQ2hhbmdlKHVpbnQ2NF90IGVsZW1lbnRJRCkKIGJvb2wgV2ViQ2hy
b21lQ2xpZW50Ojp3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBWZWN0
b3I8dWludDhfdD4mIHdyYXBwZWRLZXkpIGNvbnN0CiB7CiAgICAgYm9vbCBzdWNjZWVkZWQ7Ci0g
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXcmFwQ3J5cHRvS2V5KGtleSksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OldyYXBDcnlwdG9LZXk6OlJlcGx5KHN1Y2NlZWRlZCwgd3Jh
cHBlZEtleSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6V3JhcENyeXB0b0tleShrZXkpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpXcmFwQ3J5cHRvS2V5OjpSZXBseShzdWNjZWVkZWQsIHdyYXBwZWRLZXkpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBzdWNjZWVkZWQ7CiB9CkBAIC0xMTk0LDcg
KzExOTUsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0
b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JgogYm9vbCBXZWJDaHJvbWVDbGllbnQ6
OnVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3Rv
cjx1aW50OF90PiYga2V5KSBjb25zdAogewogICAgIGJvb2wgc3VjY2VlZGVkOwotICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXkpLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbndyYXBDcnlwdG9LZXk6OlJlcGx5KHN1Y2NlZWRlZCwg
a2V5KSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpVbndyYXBDcnlwdG9LZXkod3JhcHBlZEtleSksIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlVud3JhcENyeXB0b0tleTo6UmVwbHkoc3VjY2VlZGVkLCBrZXkpKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBzdWNjZWVkZWQ7CiB9CkBAIC0xMjA0LDcg
KzEyMDUsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZl
Y3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPAogU3RyaW5nIFdlYkNocm9tZUNsaWVu
dDo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRl
eCwgY29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAog
ewogICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVu
Z2VTdHJpbmcsIHVybCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZzo6UmVwbHkocmVzdWx0KSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBp
ZiAoIW1fcGFnZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVuZ2VTdHJpbmcsIHVybCks
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zzo6UmVwbHkocmVzdWx0KSkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CkBAIC0xMzE3LDEyICsxMzE4LDEyIEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpCiB9CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3Jh
Z2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkNo
cm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1l
RG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UuaGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1
YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJh
YmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIG1fcGFnZS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1l
RG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBkZDNiMjI1NDM1ZC4uMjkx
YzVlZGRjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM2OSw4ICszNjksOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSBmaW5hbDsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBm
aW5hbDsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9w
RnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKSBmaW5hbDsKKyAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFp
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xv
ckNob29zZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbG9yQ2hvb3Nlci5jcHAKaW5kZXggZDUzNWU1YzU1YzYuLmNiNDAyNDE3MDVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29sb3JDaG9v
c2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q29sb3JDaG9vc2VyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBXZWJDb2xvckNob29zZXI6OldlYkNv
bG9yQ2hvb3NlcihXZWJQYWdlKiBwYWdlLCBDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29u
cwogICAgICwgbV9wYWdlKHBhZ2UpCiB7CiAgICAgbV9wYWdlLT5zZXRBY3RpdmVDb2xvckNob29z
ZXIodGhpcyk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29sb3JQaWNrZXIoaW5p
dGlhbENvbG9yLCBjbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCksIGNsaWVu
dC0+c3VnZ2VzdGVkQ29sb3JzKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbG9yUGlja2VyKGluaXRpYWxDb2xvciwg
Y2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpLCBjbGllbnQtPnN1Z2dlc3Rl
ZENvbG9ycygpKSk7CiB9CiAKIFdlYkNvbG9yQ2hvb3Nlcjo6fldlYkNvbG9yQ2hvb3NlcigpCkBA
IC03NCw3ICs3NCw3IEBAIHZvaWQgV2ViQ29sb3JDaG9vc2VyOjpyZWF0dGFjaENvbG9yQ2hvb3Nl
cihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9wYWdlLT5zZXRBY3RpdmVDb2xvckNob29zZXIo
dGhpcyk7CiAKICAgICBBU1NFUlQobV9jb2xvckNob29zZXJDbGllbnQpOwotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2hvd0NvbG9yUGlja2VyKGNvbG9yLCBtX2NvbG9yQ2hvb3NlckNsaWVu
dC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSwgbV9jb2xvckNob29zZXJDbGllbnQt
PnN1Z2dlc3RlZENvbG9ycygpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihjb2xvciwgbV9jb2xvckNo
b29zZXJDbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCksIG1fY29sb3JDaG9v
c2VyQ2xpZW50LT5zdWdnZXN0ZWRDb2xvcnMoKSkpOwogfQogCiB2b2lkIFdlYkNvbG9yQ2hvb3Nl
cjo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkBAIC04NSw3ICs4NSw3IEBA
IHZvaWQgV2ViQ29sb3JDaG9vc2VyOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IENvbG9yJiBjb2xv
cikKICAgICBpZiAobV9wYWdlLT5hY3RpdmVDb2xvckNob29zZXIoKSAhPSB0aGlzKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldENvbG9yUGlja2VyQ29s
b3IoY29sb3IpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2V0Q29sb3JQaWNrZXJDb2xvcihjb2xvcikpOwogfQogCiB2b2lkIFdl
YkNvbG9yQ2hvb3Nlcjo6ZW5kQ2hvb3NlcigpCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgV2ViQ29s
b3JDaG9vc2VyOjplbmRDaG9vc2VyKCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbmRDb2xvclBpY2tlcigpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5k
Q29sb3JQaWNrZXIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcAppbmRleCBkMDI1ZGZhY2ZhMi4uZDM2YTE1
NGNmZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6fldlYkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcigpIHsgfQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tl
cjo6aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFdURjo6U3RyaW5nJiBrZXkpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVLZXlkb3duSW5EYXRhTGlzdChrZXkp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6SGFuZGxlS2V5ZG93bkluRGF0YUxpc3Qoa2V5KSk7CiB9CiAKIHZvaWQgV2ViRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyOjpkaWRTZWxlY3RPcHRpb24oY29uc3QgV1RGOjpTdHJpbmcmIHNl
bGVjdGVkT3B0aW9uKQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlcjo6ZGlkQ2xvc2VTdWdnZXN0aW9ucygpCiAKIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0
aW9uUGlja2VyOjpjbG9zZSgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbmREYXRh
TGlzdFN1Z2dlc3Rpb25zKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbmREYXRhTGlzdFN1Z2dlc3Rpb25zKCkpOwogfQogCiB2
b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlw
ZShEYXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSB0eXBlKQpAQCAtNzUsNyArNzUsNyBA
QCB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9u
VHlwZShEYXRhTGlzdFN1Z2dlc3Rpb25BYwogICAgIG1fcGFnZS0+c2V0QWN0aXZlRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyKHRoaXMpOwogCiAgICAgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRp
b24gaW5mbyA9IHsgdHlwZSwgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5zdWdnZXN0aW9u
cygpLCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPmVsZW1lbnRSZWN0SW5Sb290Vmlld0Nv
b3JkaW5hdGVzKCkgfTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dEYXRhTGlzdFN1
Z2dlc3Rpb25zKGluZm8pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0RhdGFMaXN0U3VnZ2VzdGlvbnMoaW5mbykpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggZjQyOGZk
MjM5N2UuLjcwNTIwMjViOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMzA5LDcgKzMw
OSw3IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlclVuZG9TdGVwKFVuZG9TdGVwJiBz
dGVwKQogICAgIGF1dG8gc3RlcElEID0gd2ViU3RlcC0+c3RlcElEKCk7CiAKICAgICBtX3BhZ2Ut
PmFkZFdlYlVuZG9TdGVwKHN0ZXBJRCwgV1RGTW92ZSh3ZWJTdGVwKSk7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHN0
ZXBJRCwgc3RlcC5sYWJlbCgpKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpE
aXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyhz
dGVwSUQsIHN0ZXAubGFiZWwoKSksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJl
Z2lzdGVyUmVkb1N0ZXAoVW5kb1N0ZXAmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
aW5kZXggNTI5YzA0NjcwMzAuLjNkY2Q3ZTJlYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6fldlYkZy
YW1lTG9hZGVyQ2xpZW50KCkKIHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lICYmIG1f
ZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCk7
CkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGUKICAgICBpZiAoIXdl
YlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAt
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQ6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBh
Z2UtPnBhZ2VJRCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOworICAgIFJFTEVBU0VfTE9HKE5ldHdv
cmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRo
aXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CiAK
ICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCkBAIC01NzcsNyArNTc3LDcgQEAg
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZEZhaWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAg
ICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgbV9mcmFtZS0+ZnJhbWVJ
RCgpKTsKIAogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKQEAgLTkwMSw3ICs5
MDEsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIGlmIChyZXF1ZXN0ZXIuZnJhbWVJ
RCgpICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKHJlcXVlc3Rlci5mcmFtZUlE
KCkpKQogICAgICAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IHJlcXVlc3Rl
ci5mcmFtZUlEKCk7CiAKLSAgICB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCA9IHJlcXVlc3Rl
ci5wYWdlSUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5w
YWdlSUQoKSkgPyByZXF1ZXN0ZXIucGFnZUlEKCkgOiAwOworICAgIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRDsKKyAgICBpZiAocmVxdWVzdGVyLnBhZ2VJRCgpICYm
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJRCgpKSkKKyAg
ICAgICAgb3JpZ2luYXRpbmdQYWdlSUQgPSByZXF1ZXN0ZXIucGFnZUlEKCk7CiAKICAgICBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YTsKICAgICBuYXZpZ2F0aW9uQWN0
aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSA9IGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZjczYWI4Y2E3M2YuLmM4ZmIyYWYyMTI1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGFwcGx5VG9Eb2N1bWVudExvYWRlcihXZWJzaXRlUG9saWNpZXNEYXRhJiYpOwogCi0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCmluZGV4IGQxNmZlODU3
Nzg0Li4yMDhiYjg4YTNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2
b2lkIFdlYlBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHZp
ZXcsIGludCBpbmRleCkKICAgICBQbGF0Zm9ybVBvcHVwTWVudURhdGEgcGxhdGZvcm1EYXRhOwog
ICAgIHNldFVwUGxhdGZvcm1EYXRhKHBhZ2VDb29yZGluYXRlcywgcGxhdGZvcm1EYXRhKTsKIAot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd1BvcHVwTWVudShwYWdlQ29vcmRpbmF0ZXMs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKS50ZXh0RGly
ZWN0aW9uKCkpLCBpdGVtcywgaW5kZXgsIHBsYXRmb3JtRGF0YSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93UG9wdXBNZW51
KHBhZ2VDb29yZGluYXRlcywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fcG9wdXBDbGllbnQtPm1l
bnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKSksIGl0ZW1zLCBpbmRleCwgcGxhdGZvcm1EYXRhKSk7
CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51OjpoaWRlKCkKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lk
IFdlYlBvcHVwTWVudTo6aGlkZSgpCiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcG9wdXBDbGllbnQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGlkZVBvcHVw
TWVudSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6SGlkZVBvcHVwTWVudSgpKTsKICAgICBtX3BhZ2UtPnNldEFjdGl2ZVBvcHVw
TWVudShudWxscHRyKTsKICAgICBtX3BvcHVwQ2xpZW50LT5wb3B1cERpZEhpZGUoKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFy
Y2hQb3B1cE1lbnUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKaW5kZXggMzNkNDc1NmVkYTIuLmMwZThjMTkxNDRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2Vh
cmNoUG9wdXBNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFdlYlNl
YXJjaFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSwgY29uc3QgVmVjdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgc2VhcmNoSXRlbXMp
LCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgc2VhcmNoSXRlbXMpKTsKIH0KIAogdm9pZCBXZWJT
ZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIFZlY3RvcjxSZWNlbnRTZWFyY2g+JiByZXN1bHRJdGVtcykKQEAgLTY4LDcgKzY4LDcgQEAg
dm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIFZlY3RvcjxSZWMKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRSZWNlbnRTZWFyY2hlcyhuYW1l
KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9hZFJlY2VudFNlYXJjaGVzOjpSZXBseShyZXN1
bHRJdGVtcyksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNoZXMobmFtZSksIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkxvYWRSZWNlbnRTZWFyY2hlczo6UmVwbHkocmVzdWx0SXRlbXMpKTsKIH0KIAogYm9v
bCBXZWJTZWFyY2hQb3B1cE1lbnU6OmVuYWJsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaAppbmRleCBmOTk4NmU0MWNhMi4uY2Y3Y2JmNGY5ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6
CiAKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7
Ci0gICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgUXVpY2tMb29rRG9jdW1lbnREYXRhIG1fZGF0YTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNw
cAppbmRleCAyNzZiODBiZjI4Zi4uMDI0NGRlNDNhZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAgLTk3LDQgKzk3LDE0IEBAIHZv
aWQgRHJhd2luZ0FyZWE6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcklmTmVlZGVkKCkKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdp
bmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
IH0KIAorSVBDOjpDb25uZWN0aW9uKiBEcmF3aW5nQXJlYTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdAoreworICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBEcmF3aW5nQXJlYTo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lkZW50aWZpZXIudG9V
SW50NjQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA4MDY5YTE1OGVlMi4uZWM5NTM3
ZDcwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0Fy
ZWEuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRyYXdpbmdBcmVhSW5mby5oIgogI2lu
Y2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
KyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0
Lmg+CkBAIC02NSw3ICs2Niw3IEBAIGNsYXNzIExheWVyVHJlZUhvc3Q7CiBzdHJ1Y3QgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCi1jbGFz
cyBEcmF3aW5nQXJlYSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CitjbGFzcyBEcmF3
aW5nQXJlYSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJvdGVjdGVkIElQQzo6TWVz
c2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoRHJhd2luZ0FyZWEpOwogCkBAIC0xNTMsMTEgKzE1NCw2IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUsIERyYXdpbmdBcmVh
SWRlbnRpZmllciwgV2ViUGFnZSYpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBz
ZW5kKGNvbnN0IFUmIG1lc3NhZ2UpCi0gICAgewotICAgICAgICByZXR1cm4gbV93ZWJQYWdlLnNl
bmQobWVzc2FnZSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHsgfSk7Ci0gICAgfQotCiAgICAg
RHJhd2luZ0FyZWFUeXBlIG1fdHlwZTsKICAgICBEcmF3aW5nQXJlYUlkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwogICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKQEAgLTE3MCw2ICsxNjYsMTAgQEAgcHJp
dmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CisgICAgCisgICAgLy8g
SVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgogICAgIC8v
IEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggNjkxODMw
YjU5M2MuLmNkNzgyNjhlZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBFdmVu
dERpc3BhdGNoZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVj
dGlvbikKICAgICBjb25uZWN0aW9uLT5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OkV2ZW50RGlzcGF0Y2hlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgp
LCB0aGlzKTsKIH0KIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0X3Qg
cGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBib29sIGNhblJ1YmJlckJh
bmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0
VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjp3
aGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJp
Z2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20p
CiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAg
UGxhdGZvcm1XaGVlbEV2ZW50IHBsYXRmb3JtV2hlZWxFdmVudCA9IHBsYXRmb3JtKHdoZWVsRXZl
bnQpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVuCiB9CiAKICNp
ZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotdm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1
cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50JiBn
ZXN0dXJlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2VzdHVyZUV2ZW50KFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVu
dCkKIHsKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgcGFnZUlELCBnZXN0dXJlRXZlbnRdKCkgbXV0YWJsZSB7CiAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmRpc3BhdGNoR2VzdHVyZUV2ZW50KHBhZ2VJRCwgZ2VzdHVyZUV2ZW50KTsK
QEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2V0UXVldWVkVG91Y2hF
dmVudHNGb3JQYWdlKGNvbnN0IFdlYlBhZ2UmIHdlYlBhZ2UsIFRvdWNoRQogICAgIGRlc3RpbmF0
aW9uUXVldWUgPSBtX3RvdWNoRXZlbnRzLnRha2Uod2ViUGFnZS5wYWdlSUQoKSk7CiB9CiAKLXZv
aWQgRXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OnRv
dWNoRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZl
bnQmIHRvdWNoRXZlbnQpCiB7CiAgICAgYm9vbCB1cGRhdGVMaXN0V2FzRW1wdHk7CiAgICAgewpA
QCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFRvdWNoRXZl
bnRzKCkKIH0KICNlbmRpZgogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2
ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK3Zv
aWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVu
dCYgdwogfQogCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLXZvaWQgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdl
c3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNo
R2VzdHVyZUV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50
JiBnZXN0dXJlRXZlbnQpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAt
MjMyLDkgKzIzMiw5IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVu
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVuCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6c2VuZERpZFJlY2Vp
dmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiBldmVudCwgYm9vbCBkaWRI
YW5kbGVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpzZW5kRGlkUmVjZWl2ZUV2ZW50KFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmIGV2ZW50LCBib29sIGRpZEhhbmRs
ZUV2ZW50KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0
YXRpY19jYXN0PHVpbnQzMl90PihldmVudC50eXBlKCkpLCBkaWRIYW5kbGVFdmVudCksIHBhZ2VJ
RCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KGV2ZW50LnR5cGUoKSksIGRpZEhhbmRsZUV2ZW50KSwgcGFnZUlELnRvVUlu
dDY0KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgKaW5kZXggMWQ0Nzc4NzdlYWEuLmUxYmJiZDQ3OTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNo
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNo
ZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAogI2luY2x1
ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvV2hlZWxFdmVudERlbHRhRmlsdGVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC03NywzOCArNzgsMzggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZvaWQgd2hlZWxF
dmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmLCBib29sIGNhblJ1YmJl
ckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFu
ZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSk7CisgICAgdm9pZCB3aGVlbEV2ZW50
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBjYW5S
dWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJl
ckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOwogI2lmIEVOQUJMRShJT1Nf
VE9VQ0hfRVZFTlRTKQotICAgIHZvaWQgdG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYlRvdWNoRXZlbnQmKTsKKyAgICB2b2lkIHRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VT
VFVSRV9FVkVOVFMpCi0gICAgdm9pZCBnZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJHZXN0dXJlRXZlbnQmKTsKKyAgICB2b2lkIGdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAogCiAgICAgLy8g
VGhpcyBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZvaWQgZGlzcGF0Y2hXaGVl
bEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYpOworICAgIHZvaWQg
ZGlzcGF0Y2hXaGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVl
bEV2ZW50Jik7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBkaXNwYXRj
aFRvdWNoRXZlbnRzKCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQot
ICAgIHZvaWQgZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJH
ZXN0dXJlRXZlbnQmKTsKKyAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykKLSAgICB2b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQodWludDY0
X3QgcGFnZUlELCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlkSGFuZGxlRXZlbnQpOworICAgIHZv
aWQgc2VuZERpZFJlY2VpdmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2Vi
RXZlbnQmLCBib29sIGRpZEhhbmRsZUV2ZW50KTsKICNlbmRpZgogCiAgICAgUmVmPFdvcmtRdWV1
ZT4gbV9xdWV1ZTsKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgTG9jayBtX3Nj
cm9sbGluZ1RyZWVzTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6
OlRocmVhZGVkU2Nyb2xsaW5nVHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXM7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5n
VHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXM7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2Vi
Q29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YUZpbHRl
cjsKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBMb2NrIG1fdG91Y2hFdmVudHNM
b2NrOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50
czsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBUb3VjaEV2ZW50UXVldWU+
IG1fdG91Y2hFdmVudHM7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgppbmRl
eCA1ZTE1NDNjOThjYy4uYWY5MDRiNDUxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KQEAg
LTIxLDExICsyMSwxMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBFdmVudERpc3Bh
dGNoZXIgewotICAgIFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBXZWJLaXQ6OldlYldoZWVs
RXZlbnQgZXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90
dG9tKQorICAgIFdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJL
aXQ6OldlYldoZWVsRXZlbnQgZXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBj
YW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnVi
YmVyQmFuZEF0Qm90dG9tKQogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgIFRvdWNo
RXZlbnQodWludDY0X3QgcGFnZUlELCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCisgICAg
VG91Y2hFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6V2ViVG91
Y2hFdmVudCBldmVudCkKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi0g
ICAgR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQg
ZXZlbnQpCisgICAgR2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQgZXZlbnQpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBiNzUyYzFj
NTRkNC4uYjI5MWRmMGI3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTc1LDcgKzc1LDcgQEAgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2Us
IGNvbnN0IFcKICAgICAvLyBGSVhNRTogV2hpbGUgdXNpbmcgdGhlIGhpZ2ggZW5kIG9mIHRoZSBy
YW5nZSBvZiBEaXNwbGF5SURzIG1ha2VzIGEgY29sbGlzaW9uIHdpdGggcmVhbCwgbm9uLVJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhCiAgICAgLy8gRGlzcGxheUlEcyBsZXNzIGxpa2VseSwgaXQg
aXMgbm90IGVudGlyZWx5IHNhZmUgdG8gaGF2ZSBhIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
IGFuZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYQogICAgIC8vIGNvZWV4aXN0IGluIHRo
ZSBzYW1lIHByb2Nlc3MuCi0gICAgd2ViUGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2Uoc3RkOjpu
dW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpIC0gd2ViUGFnZS5wYWdlSUQoKSk7CisgICAg
d2ViUGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2Uoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJf
dD46Om1heCgpIC0gd2ViUGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIH0KIAogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSgpCkBAIC00MzQs
NyArNDM0LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMo
KQogICAgIFJlZlB0cjxCYWNraW5nU3RvcmVGbHVzaGVyPiBiYWNraW5nU3RvcmVGbHVzaGVyID0g
QmFja2luZ1N0b3JlRmx1c2hlcjo6Y3JlYXRlKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCksIFdURk1vdmUoY29tbWl0RW5jb2RlciksIFdURk1vdmUoY29u
dGV4dHNUb0ZsdXNoKSk7CiAgICAgbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1c2hlciA9IGJhY2tp
bmdTdG9yZUZsdXNoZXI7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2UucGFnZUlE
KCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2UucGFnZUlEKCk7CiAgICAgZGlzcGF0Y2hf
YXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tpbmdTdG9yZUZsdXNoZXIgPSBXVEZNb3ZlKGJhY2tp
bmdTdG9yZUZsdXNoZXIpLCBwYWdlSURdIHsKICAgICAgICAgYmFja2luZ1N0b3JlRmx1c2hlci0+
Zmx1c2goKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yLm1tCmluZGV4IGQ3Y2QyMGZhMGMwLi5kODg5YmU0MTg5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQpAQCAtNTEs
MTIgKzUxLDEyIEBAIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpSZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvcihXZWJQYWdlKiBwYWdlKQogICAgIDogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cihwYWdlLT5jb3JlUGFnZSgpKQogICAgICwgbV93ZWJQYWdlKHBhZ2UpCiB7Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UtPnBhZ2VJ
RCgpLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3dlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksICp0aGlzKTsKIH0KIAogUmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6On5SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcigpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3dlYlBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAK
IHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjaGVkdWxlVHJlZVN0YXRlQ29tbWl0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZVdl
Ykluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZVdlYkluc3BlY3RvclVJLmNwcAppbmRleCAwNTQ0MDQ1NmY0MS4uYzk0MGUwY2QwNDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZVdlYkluc3BlY3Rv
clVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVXZWJJ
bnNwZWN0b3JVSS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JV
STo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogdm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTZW5kTWVz
c2FnZVRvQmFja2VuZChtZXNzYWdlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNlbmRNZXNzYWdlVG9CYWNrZW5k
KG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6d2luZG93T2JqZWN0
Q2xlYXJlZCgpCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJ
Ojpmcm9udGVuZExvYWRlZCgpCiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmNoYW5nZVNo
ZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OlNldFNoZWV0UmVjdChyZWN0KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNldFNoZWV0
UmVjdChyZWN0KSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnN0YXJ0V2luZG93
RHJhZygpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0V2lu
ZG93RHJhZygpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5kb3dEcmFnKCkpOwogfQogCiB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKQEAgLTEy
NCwzNCArMTI0LDM0IEBAIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gUmVt
b3RlV2ViSW5zcGVjdG9yVUk6OnVzZXJJbnRlcmZhY2VMYXlvdXRECiAKIHZvaWQgUmVtb3RlV2Vi
SW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5z
cGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCkp
OwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdygpCiB7CiAgICAg
bV9wYWdlLmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChudWxscHRyKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpGcm9udGVuZERpZENsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpGcm9udGVuZERpZENsb3NlKCkp
OwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpyZW9wZW4oKQogewotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpSZW9wZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlJlb3Bl
bigpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6b3BlbkluTmV3VGFiKGNvbnN0
IFN0cmluZyYgdXJsKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpP
cGVuSW5OZXdUYWIodXJsKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Ok9wZW5Jbk5ld1RhYih1cmwpKTsKIH0KIAog
dm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBj
b25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVB
cykKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFt
ZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX3BhZ2UucGFnZUlEKCkp
OworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2F2
ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpKTsKIH0KIAog
dm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgY29udGVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChm
aWxlbmFtZSwgY29udGVudCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjppbnNw
ZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQpAQCAtMTYxLDcgKzE2MSw3
IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcpCiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNob3dDZXJ0
aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2hvd0NlcnRpZmljYXRlKGNlcnRpZmlj
YXRlSW5mbyksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpTaG93Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVJbmZvKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
LmNwcAppbmRleCBhYmZjZWNkYjFmYi4uY2Y5M2E4ZDA4NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3IuY3BwCkBAIC02MSwxMiArNjEsMTIgQEAgVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcjo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvcihXZWJQYWdlJiB3ZWJQYWdlKQog
ICAgICwgbV9yZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCgwKQogI2VuZGlmCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
d2ViUGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgKnRo
aXMpOwogfQogCiBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjp+Vmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3RvcigpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5wYWdlSUQoKSk7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZS5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpk
aXNwYXRjaERpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxv
YXRQb2ludCBvcmlnaW4sIEZsb2F0UmVjdCB0YXJnZXRSZWN0LCBGbG9hdFJlY3QgdmlzaWJsZUNv
bnRlbnRSZWN0LCBib29sIGZpdEVudGlyZVJlY3QsIGRvdWJsZSB2aWV3cG9ydE1pbmltdW1TY2Fs
ZSwgZG91YmxlIHZpZXdwb3J0TWF4aW11bVNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmlu
ZGV4IDIxMWQ2MDFlZjBiLi5mY2VlMGRmZGZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApA
QCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgSURUb0hpc3RvcnlJdGVtTWFwJiBpZFRvSGlzdG9yeUl0
ZW1NYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
IGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCwgT3Zlcndy
aXRlRXhpc3RpbmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKK3ZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXImIGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKIHsK
ICAgICAvLyBUaGlzIGl0ZW0vaXRlbUlEIHBhaXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0IGlu
IG91ciBtYXAuCiAgICAgQVNTRVJUX1VOVVNFRChvdmVyd3JpdGVFeGlzdGluZ0l0ZW0sIG92ZXJ3
cml0ZUV4aXN0aW5nSXRlbSA9PSBPdmVyd3JpdGVFeGlzdGluZ0l0ZW06OlllcyB8fCAhaWRUb0hp
c3RvcnlJdGVtTWFwKCkuY29udGFpbnMoaXRlbUlEKSk7CkBAIC0xMTYsNyArMTE2LDcgQEAgUmVm
UHRyPEhpc3RvcnlJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRlbUF0SW5kZXgoaW50
IGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBPcHRpb25hbDxCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBpdGVtSUQ7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGl0ZW1JbmRleCksIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXg6OlJlcGx5KGl0ZW1JRCksIG1fcGFn
ZS0+cGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGl0ZW1JbmRleCksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXg6OlJlcGx5KGl0ZW1JRCkpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghaXRlbUlEKQpAQCAtMTMxLDcgKzEzMSw3IEBA
IHVuc2lnbmVkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpiYWNrTGlzdENvdW50KCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50ID0gMDsKLSAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3Vu
dCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQ6OlJl
cGx5KGJhY2tMaXN0Q291bnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNrTGlzdENvdW50
KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudDo6UmVw
bHkoYmFja0xpc3RDb3VudCkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBiYWNr
TGlzdENvdW50OwpAQCAtMTQzLDcgKzE0Myw3IEBAIHVuc2lnbmVkIFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICB1bnNpZ25lZCBmb3J3YXJkTGlzdENvdW50ID0gMDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudCgpLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQ6OlJlcGx5KGZvcndhcmRMaXN0
Q291bnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KCksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudDo6UmVwbHkoZm9y
d2FyZExpc3RDb3VudCkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBmb3J3YXJk
TGlzdENvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKaW5kZXggZjNiMWM4YWY1NDguLmQxYmFhZGI5
MWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNr
Rm9yd2FyZExpc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENsaWVudC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzLAog
ICAgICAgICBObwogICAgIH07Ci0gICAgdm9pZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJ
dGVtPiYmLCB1aW50NjRfdCBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7CisgICAgdm9p
ZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5k
ZXggMTYwZWRlZmQ1OWQuLjJkOWQwODVlM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViQ29v
a2llSmFyOjpXZWJDb29raWVKYXIoKQogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7
CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkucGFnZUlEKCk7CkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6
OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29u
c3QKIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgV2ViQ29va2llSmFy
Ojpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2Vj
dXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+
IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpT
ZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAg
ICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0g
ZmFsc2U7CkBAIC05NSw3ICs5NSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhCiBib29sIFdl
YkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAppbmRleCA5N2RkNzZmNjY0Yy4uNTU5YmQw
ZTUwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUphci5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY29va2llcyhXZWJD
b3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0Q29v
a2llcyhXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKSBmaW5hbDsKICAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6OkRv
Y3VtZW50JikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2Vj
dXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQ
QUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dCBmaW5hbDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNj
ZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklE
JiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29u
c3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSkgZmluYWw7CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDg5MGM1ZTU2YWMwLi40YWY0OTVh
NTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUxpc3RlbmVySUQo
KQogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUoV2ViUGFn
ZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSkKIHsKICAgICBhdXRvIGZyYW1lID0g
Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRlckNsaWVudD4oc3RhdGljX2Nhc3Q8
V2ViRnJhbWVMb2FkZXJDbGllbnQqPigmY29yZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKSkpKTsK
LSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFt
ZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZyYW1lKGZyYW1lLT5mcmFtZUlEKCkp
KTsKIAogICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFtZTsKICAgICBmcmFtZS0+bV9j
b3JlRnJhbWUtPnRyZWUoKS5zZXROYW1lKFN0cmluZygpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBS
ZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShXZWJQYWdlKiBw
YWdlLCBXZWJDb3JlOjpGcmFtZSogYwogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3Vi
ZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewogICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7Ci0gICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgp
KSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwogCiAgICAgYXV0byBjb3Jl
RnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJh
bWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwogICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9
IGNvcmVGcmFtZS5wdHIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGQ3N2U2MzcwYzExLi5iZGI5MmY3NGRhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBA
IC03Miw3ICs3Miw3IEBAIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3RvcigpCiAKIHZvaWQgV2Vi
SW5zcGVjdG9yOjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIHVuZGVyVGVzdCkKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6T3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRl
bmQoY2FuQXR0YWNoV2luZG93KCksIHVuZGVyVGVzdCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Ok9wZW5Mb2NhbEluc3Bl
Y3RvckZyb250ZW5kKGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3I6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgZW5jb2Rl
ZENvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yOjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpCiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbigp
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OkRpZENsb3NlKCkpOwogCiAgICAgLy8gSWYgd2UgdHJpZWQgdG8gY2xvc2UgdGhlIGZyb250ZW5k
IGJlZm9yZSBpdCB3YXMgY3JlYXRlZCwgdGhlbiBubyBjb25uZWN0aW9uIGV4aXN0cyB5ZXQuCiAg
ICAgaWYgKG1fZnJvbnRlbmRDb25uZWN0aW9uKSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmRDb25uZWN0aW9uKCkKIAogdm9pZCBXZWJJbnNwZWN0
b3I6OmJyaW5nVG9Gcm9udCgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJy
aW5nVG9Gcm9udCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSk7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yOjp3aGVuRnJvbnRlbmRDb25uZWN0aW9uRXN0YWJsaXNoZWQoRnVuY3Rpb248dm9pZCgp
PiYmIGNhbGxiYWNrKQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpzdG9w
RWxlbWVudFNlbGVjdGlvbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yOjplbGVtZW50U2VsZWN0aW9u
Q2hhbmdlZChib29sIGFjdGl2ZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
RWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYWN0aXZlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RWxlbWVudFNlbGVjdGlv
bkNoYW5nZWQoYWN0aXZlKSk7CiB9CiAKIGJvb2wgV2ViSW5zcGVjdG9yOjpjYW5BdHRhY2hXaW5k
b3coKQpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjp1cGRhdGVEb2NraW5n
QXZhaWxhYmlsaXR5KCkKIAogICAgIG1fcHJldmlvdXNDYW5BdHRhY2ggPSBjYW5BdHRhY2hXaW5k
b3c7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQXZhaWxhYmlsaXR5
Q2hhbmdlZChjYW5BdHRhY2hXaW5kb3cpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFu
Z2VkKGNhbkF0dGFjaFdpbmRvdykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcApp
bmRleCBjOTY1MmU5NGFmOC4uMjc1NTZkMDFjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
V2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJKFdlYlBhZ2UmIHBhZ2UpCiAjZW5kaWYKIH0K
IAotdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25M
ZXZlbCkKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oUGFnZUlkZW50
aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBp
bnNwZWN0aW9uTGV2ZWwpCiB7CiAgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLnJlc2V0KCk7
CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6dXBkYXRlQ29ubmVjdGlv
bigpCiAgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+b3BlbigpOwogI2VuZGlmCiAKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25D
bGllbnRQb3J0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OlNldEZyb250ZW5kQ29ubmVjdGlvbihjb25uZWN0aW9uQ2xpZW50UG9y
dCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yVUk6OndpbmRvd09iamVjdENsZWFyZWQoKQpAQCAtMTI4LDE0ICsxMjgsMTQgQEAg
dm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQoKQogICAgIHNldERvY2tTaWRlKG1f
ZG9ja1NpZGUpOwogICAgIHNldElzVmlzaWJsZShtX2lzVmlzaWJsZSk7CiAKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6RnJvbnRlbmRMb2FkZWQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRl
bnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkZyb250ZW5kTG9hZGVk
KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKICAgICBicmluZ1Rv
RnJvbnQoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6c3RhcnRXaW5kb3dEcmFnKCkKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5kb3dEcmFnKCksIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpT
dGFydFdpbmRvd0RyYWcoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkp
CkBAIC0xNDcsMTIgKzE0NywxMiBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93Qnko
ZmxvYXQgeCwgZmxvYXQgeSkKIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6YnJpbmdUb0Zyb250KCkK
IHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpC
cmluZ1RvRnJvbnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2JhY2tlbmRDb25uZWN0aW9u
KSB7CiAgICAgICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKQEAgLTE2Nywx
MyArMTY3LDEzIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKICAgICBpZiAo
bV9mcm9udGVuZEhvc3QpCiAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50
KCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yVUk6OnJlb3BlbigpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OlJlb3BlbigpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6UmVvcGVuKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiB9CiAKIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24g
V2ViSW5zcGVjdG9yVUk6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSBjb25zdApAQCAt
MTg2LDE2ICsxODYsMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6cmVxdWVzdFNldERvY2tTaWRl
KERvY2tTaWRlIHNpZGUpCiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpOwogICAgIHN3aXRjaCAoc2lkZSkgewogICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2Vk
OgotICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2goKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7CisgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvY2tTaWRl
OjpSaWdodDoKLSAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoUmlnaHQoKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaFJpZ2h0KCks
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRG9ja1NpZGU6OkxlZnQ6Ci0gICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaExl
ZnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIHdlYlByb2Nlc3MucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OkF0dGFjaExlZnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgotICAgICAgICB3ZWJQcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAg
ICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEJvdHRvbSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyLnRvVUludDY0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0yNDMsMTcgKzI0
MywxNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpzZXRJc1Zpc2libGUoYm9vbCB2aXNpYmxlKQog
CiB2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25l
ZCBoZWlnaHQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KGhlaWdodCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQp
LCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogewot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdp
ZHRoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VT
aGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVjdCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVjdCksIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yVUk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKQEAgLTI2NCwyMiArMjY0LDIy
IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkK
IAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2F2ZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9y
Y2VTYXZlQXMpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5h
bWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5h
bWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6YXBwZW5k
KGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQp
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29u
dGVudCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBtX2luc3BlY3RlZFBhZ2VJZGVu
dGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjppbnNwZWN0ZWRV
UkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0
ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50
NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dDZXJ0aWZpY2F0ZShjb25zdCBD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6U2hvd0NlcnRpZmljYXRlKGNlcnRpZmljYXRlSW5mbyksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTaG93Q2Vy
dGlmaWNhdGUoY2VydGlmaWNhdGVJbmZvKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd0NvbnNvbGUoKQpAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnBhZ2VVbnBhdXNlZCgpCiAKIHZvaWQg
V2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb0JhY2tl
bmQobWVzc2FnZSksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUku
aAppbmRleCA4MzgxYmYxY2VkZS4uOTQyNGJmZTFmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKQEAg
LTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2Vi
SW5zcGVjdG9yVUkgbWVzc2FnZXMKLSAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24odWludDY0
X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNw
ZWN0aW9uTGV2ZWwpOworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2ln
bmVkIGluc3BlY3Rpb25MZXZlbCk7CiAgICAgdm9pZCB1cGRhdGVDb25uZWN0aW9uKCk7CiAKICAg
ICB2b2lkIHNob3dDb25zb2xlKCk7CkBAIC0xMzMsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICAv
LyBjb3JlUGFnZSgpLCBzaW5jZSB3ZSBtYXkgbmVlZCBpdCBhZnRlciB0aGUgZnJvbnRlbmQncyBw
YWdlIGhhcyBzdGFydGVkIGRlc3RydWN0aW9uLgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXIqIG1fZnJvbnRlbmRDb250cm9sbGVyIHsgbnVsbHB0ciB9OwogCi0gICAgdWludDY0X3Qg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIGJvb2wgbV91bmRlclRlc3QgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9kb2NraW5nVW5hdmFpbGFibGUgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc1Zpc2libGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgppbmRleCBkZWEw
ZmU1ODRkNC4uNDMxOTBhYTgzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsy
MSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJIHsKLSAg
ICBFc3RhYmxpc2hDb25uZWN0aW9uKHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBi
b29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQorICAgIEVzdGFibGlzaENv
bm5lY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIs
IGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiAgICAgVXBkYXRlQ29u
bmVjdGlvbigpCiAKICAgICBBdHRhY2hlZEJvdHRvbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDNiYWFmZDE4NTRjLi4zZTZhZjczMTc4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM2
MCw3ICszNjAsNyBAQCBwcml2YXRlOgogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpS
ZWZDb3VudGVkTGVha0NvdW50ZXIsIHdlYlBhZ2VDb3VudGVyLCAoIldlYlBhZ2UiKSk7CiAKLVJl
ZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK1JlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUo
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogewogICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJ
RCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogCkBAIC0zNzAsNyArMzcwLDcgQEAgUmVmPFdlYlBh
Z2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWUKICAgICByZXR1cm4gcGFnZTsKIH0KIAotV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQor
V2ViUGFnZTo6V2ViUGFnZShJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX3ZpZXdT
aXplKHBhcmFtZXRlcnMudmlld1NpemUpCiAgICAgLCBtX2Fsd2F5c1Nob3dzSG9yaXpvbnRhbFNj
cm9sbGVyIHsgcGFyYW1ldGVycy5hbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciB9CkBAIC02
MDMsMTQgKzYwMywxNCBAQCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgbV9wYWdlLT5hZGRMYXlvdXRN
aWxlc3RvbmVzKHsgRGlkRmlyc3RMYXlvdXQsIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dCB9KTsKIAogICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsK
LSAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOworICAgIHdlYlByb2Nlc3MuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZUlELnRvVUludDY0KCksICp0aGlzKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBkb25lIGluIHRoZSBvYmplY3QgY29uc3RydWN0b3JzLCBhbmQgdGhlIG9iamVjdHMgdGhl
bXNlbHZlcyBzaG91bGQgYmUgbWVzc2FnZSByZWNlaXZlcnMuCi0gICAgd2ViUHJvY2Vzcy5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOwotICAgIHdlYlByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJ
RCwgKnRoaXMpOwotICAgIHdlYlByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpS
ZW1vdGVXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRo
aXMpOworICAgIHdlYlByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgKnRoaXMp
OworICAgIHdlYlByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCAqdGhpcyk7
CisgICAgd2ViUHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELnRvVUludDY0KCksICp0
aGlzKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgd2ViUHJvY2Vzcy5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CisgICAgd2ViUHJvY2Vzcy5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcGFnZUlELnRvVUludDY0KCksICp0aGlzKTsKICNlbmRpZgogCiAjaWZuZGVmIE5ERUJV
RwpAQCAtODMxLDcgKzgzMSw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGFnZTo6bWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBjb25zdAogCiB1aW50NjRfdCBXZWJQYWdlOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2VJRCgpOworICAgIHJldHVy
biBwYWdlSUQoKS50b1VJbnQ2NCgpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBA
IC0xNDIwLDEzICsxNDIwLDEzIEBAIHZvaWQgV2ViUGFnZTo6Y2xvc2UoKQogICAgIGlmIChtX3Vz
ZUFzeW5jU2Nyb2xsaW5nKQogICAgICAgICB3ZWJQcm9jZXNzLmV2ZW50RGlzcGF0Y2hlcigpLnJl
bW92ZVNjcm9sbGluZ1RyZWVGb3JQYWdlKHRoaXMpOwogI2VuZGlmCi0gICAgd2ViUHJvY2Vzcy5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlSUQpOworICAgIHdlYlByb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOwogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGluIHRoZSBvYmplY3QgZGVz
dHJ1Y3RvcnMsIGFuZCB0aGUgb2JqZWN0cyB0aGVtc2VsdmVzIHNob3VsZCBiZSBtZXNzYWdlIHJl
Y2VpdmVycy4KLSAgICB3ZWJQcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKLSAgICB3ZWJQ
cm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwotICAgIHdlYlByb2Nlc3MucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisgICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKKyAgICB3ZWJQcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CisgICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlJlbW90ZVdlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICB3ZWJQcm9jZXNzLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIHdlYlByb2Nlc3MucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09B
KSB8fCBQTEFURk9STShHVEspCiAgICAgbV92aWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yID0g
bnVsbHB0cjsKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZvaWQgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3
YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkCiAg
ICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTG9hZGluZywgIkluIFdl
YlByb2Nlc3MgcGlkICVpLCBXZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFj
ay9mb3J3YXJkIFVSTCAlcyIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9wYWdlSUQsIGl0ZW0t
PnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhMb2FkaW5nLCAiSW4gV2Vi
UHJvY2VzcyBwaWQgJWksIFdlYlBhZ2UgJSIgUFJJdTY0ICIgaXMgbmF2aWdhdGluZyB0byBiYWNr
L2ZvcndhcmQgVVJMICVzIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpLCBpdGVtLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEFTU0VSVCgh
bV9wZW5kaW5nTmF2aWdhdGlvbklEKTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZp
Z2F0aW9uSUQ7CkBAIC0yMDc2LDcgKzIwNzYsNyBAQCBib29sIFdlYlBhZ2U6OnNldEZpeGVkTGF5
b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmICghdmlldyB8fCB2aWV3LT5maXhl
ZExheW91dFNpemUoKSA9PSBzaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMT0df
V0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJ
RCA8PCAiIHNldEZpeGVkTGF5b3V0U2l6ZSAiIDw8IHNpemUpOworICAgIExPR19XSVRIX1NUUkVB
TShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0
KCkgPDwgIiBzZXRGaXhlZExheW91dFNpemUgIiA8PCBzaXplKTsKICAgICB2aWV3LT5zZXRGaXhl
ZExheW91dFNpemUoc2l6ZSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZp
eGVkTGF5b3V0U2l6ZURpZENoYW5nZShzaXplKSk7CkBAIC0yNTA0LDcgKzI1MDQsNyBAQCBjb25z
dCBXZWJFdmVudCogV2ViUGFnZTo6Y3VycmVudEV2ZW50KCkKIHZvaWQgV2ViUGFnZTo6ZnJlZXpl
TGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbiByZWFzb24pCiB7CiAgICAgUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlBhZ2UgKFBhZ2VJRD0lbGx1KSAtIEFkZGlu
ZyBhIHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJlZTsgY3VycmVudCByZWFzb25zIGFyZSAl
ZCIsCi0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29u
KSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOworICAgICAgICB0aGlzLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRy
ZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy5h
ZGQocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7
CiB9CkBAIC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmZyZWV6ZUxheWVyVHJlZShM
YXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogdm9pZCBXZWJQYWdlOjp1bmZyZWV6ZUxheWVy
VHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogewogICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQYWdlIChQYWdlSUQ9JWxsdSkgLSBSZW1vdmluZyBh
IHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJlZTsgY3VycmVudCByZWFzb25zIGFyZSAlZCIs
Ci0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwg
bV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOworICAgICAgICB0aGlzLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVG
cmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy5yZW1v
dmUocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7
CiB9CkBAIC0zMTY4LDcgKzMxNjgsNyBAQCB2b2lkIFdlYlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFu
Z2UoKQogCiB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5
U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0
eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpCiB7
Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAi
IDw8IHBhZ2VJRCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUp
OworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2Ug
IiA8PCBwYWdlSUQoKS50b1VJbnQ2NCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFj
dGl2aXR5U3RhdGUpOwogCiAgICAgYXV0byBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0
aXZpdHlTdGF0ZTsKICAgICBtX2FjdGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRlOwpAQCAtMzE3
Niw3ICszMTc2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBBY3QKICAgICBpZiAoY2hhbmdlZCkK
ICAgICAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShtX3BhZ2UsICJzZXRBY3Rpdml0eVN0YXRlIGNhbGxlZCBvbiAlIiBQUkl1NjQgIiBidXQgV2Vi
Q29yZSBwYWdlIHdhcyBudWxsIiwgcGFnZUlEKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
bV9wYWdlLCAic2V0QWN0aXZpdHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJdTY0ICIgYnV0IFdlYkNv
cmUgcGFnZSB3YXMgbnVsbCIsIHBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIGlmIChtX3BhZ2Up
IHsKICAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+PiBj
dXJyZW50bHlDaGFuZ2luZ0FjdGl2aXR5U3RhdGUgeyBtX2xhc3RBY3Rpdml0eVN0YXRlQ2hhbmdl
cywgY2hhbmdlZCB9OwogICAgICAgICBtX3BhZ2UtPnNldEFjdGl2aXR5U3RhdGUoYWN0aXZpdHlT
dGF0ZSk7CkBAIC00MzM5LDcgKzQzMzksNyBAQCB2b2lkIFdlYlBhZ2U6Om1haW5GcmFtZURpZExh
eW91dCgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpIHsKICAgICAgICAgSW50U2l6ZSBuZXdDb250ZW50U2l6
ZSA9IGZyYW1lVmlldy0+Y29udGVudHNTaXplKCk7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShW
aXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlEIDw8ICIgbWFpbkZy
YW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVudFNpemUp
OworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBh
Z2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRp
bmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVudFNpemUpOwogICAgICAgICBpZiAobV92
aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNTaXplKG5ld0NvbnRlbnRTaXplKSkKICAg
ICAgICAgICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKICAgICB9CkBAIC01NzQy
LDcgKzU3NDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1l
KQogICAgIAogICAgIGJvb2wgdmlld3BvcnRDaGFuZ2VkID0gZmFsc2U7CiAKLSAgICBMT0dfV0lU
SF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8
PCAiIGRpZENvbW1pdExvYWQgc2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBjb3JlRnJhbWUt
PnZpZXcoKS0+Y29udGVudHNTaXplKCkpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVj
dHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBkaWRD
b21taXRMb2FkIHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgY29yZUZyYW1lLT52aWV3KCkt
PmNvbnRlbnRzU2l6ZSgpKTsKICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29u
dGVudHNTaXplKGNvcmVGcmFtZS0+dmlldygpLT5jb250ZW50c1NpemUoKSkpCiAgICAgICAgIHZp
ZXdwb3J0Q2hhbmdlZCA9IHRydWU7CiAKQEAgLTYwNTYsNyArNjA1Niw3IEBAIHZvaWQgV2ViUGFn
ZTo6c2VuZEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICAvLyBJZiB0aGF0IGlzIHRoZSBjYXNlLCBq
dXN0IHNlbmQgd2hhdCB3ZSBoYXZlIChpLmUuIGRvbid0IGluY2x1ZGUgcG9zdC1sYXlvdXQgZGF0
YSkgYW5kIHdhaXQgdW50aWwgdGhlCiAgICAgLy8gbmV4dCBsYXllciB0cmVlIGNvbW1pdCB0byBj
b21wdXRlIGFuZCBzZW5kIHRoZSBjb21wbGV0ZSBFZGl0b3JTdGF0ZSBvdmVyLgogICAgIGF1dG8g
c3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RWRpdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSwgcGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSwgcGFnZUlEKCkudG9VSW50
NjQoKSk7CiAKICAgICBpZiAoc3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAg
IHNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCk7CkBAIC02MjM3LDcgKzYyMzcsNyBAQCB2
b2lkIFdlYlBhZ2U6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6
T2JqZWN0KiBtZXNzYWdlQm9keSkKIAogdm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZUlnbm9yaW5n
RnVsbHlTeW5jaHJvbm91c01vZGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmpl
Y3QqIG1lc3NhZ2VCb2R5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFu
ZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkpKSwgcGFnZUlEKCksIElQQzo6
U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5jaHJvbm91c01vZGUpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEoV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9k
eSkpKSwgcGFnZUlEKCkudG9VSW50NjQoKSwgSVBDOjpTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5
bmNocm9ub3VzTW9kZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cG9zdFN5bmNocm9ub3VzTWVzc2Fn
ZUZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3Nh
Z2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDg2OGFlOTJmMmZiLi5lYWQ3YjQ5NmVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjQs
NiArNjQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW50U2l6ZUhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUG9p
bnRlcklELmg+CkBAIC0yNzMsNyArMjc0LDkgQEAgdXNpbmcgV0tFdmVudE1vZGlmaWVycyA9IHVp
bnQzMl90OwogCiBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVi
bGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2U+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlBhZ2U+IGNyZWF0ZSh1aW50NjRfdCBwYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgdXNpbmcgSWRlbnRpZmllciA9IFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyOworICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRlKElk
ZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisKICAgICB2aXJ0dWFsIH5X
ZWJQYWdlKCk7CiAKICAgICB2b2lkIHJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYmKTsKQEAgLTI4Myw3ICsyODYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdl
YlBhZ2UqIGZyb21Db3JlUGFnZShXZWJDb3JlOjpQYWdlKik7CiAKICAgICBXZWJDb3JlOjpQYWdl
KiBjb3JlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQotICAgIHVpbnQ2NF90
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgSWRlbnRpZmllciBwYWdl
SUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+c2Vzc2lvbklEKCk7IH0KICAgICBib29sIHVz
ZXNFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT51c2VzRXBoZW1lcmFs
U2Vzc2lvbigpOyB9CiAKQEAgLTExNjYsNyArMTE2OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHNl
bmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiBy
ZXBseSkKICAgICB7CiAgICAgICAgIGNhbmNlbEdlc3R1cmVzQmxvY2tlZE9uU3luY2hyb25vdXNS
ZXBsaWVzKCk7Ci0gICAgICAgIHJldHVybiBzZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZN
b3ZlKHJlcGx5KSwgbV9wYWdlSUQsIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNP
cHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKKyAgICAgICAgcmV0dXJu
IHNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1Q
bGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RE9NUGFz
dGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyKTsKQEAgLTExOTksNyArMTIwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFVzZXJJc0ludGVyYWN0aW5nKGJvb2wgdXNlcklzSW50ZXJhY3RpbmcpIHsgbV91c2VySXNJbnRl
cmFjdGluZyA9IHVzZXJJc0ludGVyYWN0aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgV2ViUGFn
ZShJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9pZCB1
cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKQEAgLTE1ODUsNyArMTU4OCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xv
YWQoKTsKIAotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIElkZW50aWZpZXIgbV9wYWdlSUQ7
CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwogICAgIFJlZlB0
cjxXZWJGcmFtZT4gbV9tYWluRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCmluZGV4IGQ5NmE3
ZDdkZGE5Li5iNzc5OWI0ZmJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6V2ViUGFnZUluc3BlY3RvclRhcmdldChXZWJQ
YWdlJiBwYWdlKQogCiBTdHJpbmcgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6aWRlbnRpZmllcigp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50
NjQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6Y29ubmVjdChJbnNwZWN0
b3I6OkZyb250ZW5kQ2hhbm5lbCYgY2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLmgKaW5kZXggMzAxYjEzOWUxZDIuLjZiN2VjNWIxNmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaApAQCAtMjYsMTMgKzI2LDE1
IEBACiAjaWZuZGVmIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlX2gKICNkZWZpbmUg
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2VfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiB9
CiAKIEBpbnRlcmZhY2UgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UgOiBOU09iamVj
dCB7CiAgICAgV2ViS2l0OjpXZWJQYWdlKiBtX3BhZ2U7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7
CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgaWQgbV9wYXJlbnQ7
CiAgICAgYm9vbCBtX2hhc01haW5GcmFtZVBsdWdpbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
QmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQppbmRleCAzZDNmMzU1NTNlNi4uNjE2NWEwMWZlNjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTE0
OCw3ICsxNDgsNyBAQCAtICh2b2lkKXNldFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSopcGFnZQog
ICAgICAgICBhdXRvKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwogICAgICAgICBtX2hhc01h
aW5GcmFtZVBsdWdpbiA9IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpID8gZnJhbWUtPmRvY3Vt
ZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSA6IGZhbHNlOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IG1fcGFnZUlEID0gMDsKKyAgICAgICAgbV9wYWdlSUQgPSB7IH07CiAgICAgICAgIG1faGFzTWFp
bkZyYW1lUGx1Z2luID0gZmFsc2U7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBhMDdjYTQ1ZDMzNy4uYjZh
ZTg0MzI3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCkBAIC0yNjYsOCArMjY2LDggQEAgYm9vbCBXZWJQYWdlOjpleGVjdXRl
S2V5cHJlc3NDb21tYW5kc0ludGVybmFsKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0Nv
bW0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIGJvb2wgY29tbWFuZFdhc0hhbmRsZWRCeVVJUHJvY2VzcyA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVTYXZlZENvbW1hbmRCeVNl
bGVjdG9yKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3I6OlJlcGx5
KGNvbW1hbmRXYXNIYW5kbGVkQnlVSVByb2Nlc3MpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICAg
ICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29tbWFuZEJ5
U2VsZWN0b3IoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpLAorICAgICAgICAgICAgICAgICAgICBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcjo6UmVw
bHkoY29tbWFuZFdhc0hhbmRsZWRCeVVJUHJvY2VzcykpOwogICAgICAgICAgICAgICAgIGV2ZW50
V2FzSGFuZGxlZCB8PSBjb21tYW5kV2FzSGFuZGxlZEJ5VUlQcm9jZXNzOwogICAgICAgICAgICAg
fQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXgg
NWNlNjljY2Y4MzMuLjYxNzRiMGEzYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAg
ICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0aWNzKSksIDApOwogICAgIH0pOwogCi0gICAg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qg
b3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKSB7Cisg
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlk
ZW50aWZpZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9t
YWluKSB7CiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihzZXNzaW9uSUQsIGRvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsKICAgICB9KTsKICNlbmRp
ZgpAQCAtNjY3LDE2ICs2NjcsMTYgQEAgV2ViUGFnZSogV2ViUHJvY2Vzczo6Zm9jdXNlZFdlYlBh
Z2UoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogICAgIAotV2ViUGFnZSogV2ViUHJvY2Vzczo6
d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CitXZWJQYWdlKiBXZWJQcm9jZXNzOjp3ZWJQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlTWFw
LmdldChwYWdlSUQpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0
X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQg
V2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIC8vIEl0IGlzIG5lY2Vzc2Fy
eSB0byBjaGVjayBmb3IgcGFnZSBleGlzdGVuY2UgaGVyZSBzaW5jZSBkdXJpbmcgYSB3aW5kb3cu
b3BlbigpIChvciB0YXJnZXRlZAogICAgIC8vIGxpbmspIHRoZSBXZWJQYWdlIGdldHMgY3JlYXRl
ZCBib3RoIGluIHRoZSBzeW5jaHJvbm91cyBoYW5kbGVyIGFuZCB0aHJvdWdoIHRoZSBub3JtYWwg
d2F5LiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4+OjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0
ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOwogICAgIGF1dG8gb2xkUGFnZUlEID0g
cGFyYW1ldGVycy5vbGRQYWdlSUQgPyBwYXJhbWV0ZXJzLm9sZFBhZ2VJRC52YWx1ZSgpIDogcGFn
ZUlEOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBBU1NFUlQoIXJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUpOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
Y3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhCiAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCi12b2lkIFdl
YlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1h
cC5jb250YWlucyhwYWdlSUQpKTsKIApAQCAtMTQ1MCw3ICsxNDUwLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbikKIAogI2Vu
ZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0
X3QsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQordm9p
ZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShQYWdlSWRlbnRpZmllciwg
T3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpCiB7CiAgICAg
aWYgKGNoYW5nZWQgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAg
IHVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uOjpWaXNpYmlsaXR5
SGFzQ2hhbmdlZCk7CkBAIC0xNjI0LDEzICsxNjI0LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2Vu
ZFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBVUkwmIHVybCkKICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZENvbGxlY3RQcmV3
YXJtSW5mb3JtYXRpb24ocmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5n
Ojpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNz
OjpwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpw
YWdlRGlkRW50ZXJXaW5kb3coUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fcGFnZXNJ
bldpbmRvd3MuYWRkKHBhZ2VJRCk7CiAgICAgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1l
ci5zdG9wKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50
NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVhdmVXaW5kb3coUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fcGFnZXNJbldpbmRvd3MucmVtb3ZlKHBhZ2VJRCk7
CiAKQEAgLTE2NzMsNyArMTY3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5hYmxlUHJpdmF0ZUJy
b3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZSkKICAgICBpZiAoZW5hYmxlKQogICAgICAgICBl
bnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwogCi0g
ICAgVmVjdG9yPHVpbnQ2NF90PiBwYWdlSURzOworICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEczsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXApIHsKICAgICAgICAgaWYg
KHBhZ2UudmFsdWUpCiAgICAgICAgICAgICBwYWdlSURzLmFwcGVuZChwYWdlLmtleSk7CkBAIC0x
ODUzLDcgKzE4NTMsNyBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENO
ZXR3b3JrKCkKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2
NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQordm9pZCBXZWJQcm9j
ZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWlu
dDY0X3QgcGFnZUdyb3VwSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7CiAg
ICAgLy8gV2UgYXJlIGluIHRoZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRo
ZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFBy
b2Nlc3MKICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4g
U1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNv
bm5lY3Rpb24gYXMgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA1
MjVkZjE4M2YyMi4uMTg1N2NlYTBlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lmIFBMQVRG
T1JNKE1BQykKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KQEAgLTE0NSw5
ICsxNDYsOSBAQCBwdWJsaWM6CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNv
bm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQo
KTsgfQogCi0gICAgV2ViUGFnZSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OwotICAg
IHZvaWQgY3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJik7Ci0gICAgdm9pZCByZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBwYWdlSUQpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
IGNvbnN0OworICAgIHZvaWQgY3JlYXRlV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFM
OjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBXZWJQYWdlKiBmb2N1
c2VkV2ViUGFnZSgpIGNvbnN0OwogCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVuZGxl
KCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQpAQCAtMTk5LDggKzIw
MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKIAotICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KHVp
bnQ2NF90IHBhZ2VJRCk7Ci0gICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBh
Z2VJRCk7CisgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3coV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyhXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cik7CiAKICAgICB2b2lkIG5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmlyZWQoKTsKIApA
QCAtMjE5LDcgKzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlUGFnZXMo
KTsKICAgICB2b2lkIGdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCBwYWdlQWN0aXZpdHlT
dGF0ZURpZENoYW5nZSh1aW50NjRfdCBwYWdlSUQsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKKyAgICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZz4gY2hhbmdlZCk7CiAKICAgICB2b2lkIHNldEhpZGRlblBhZ2VET01UaW1lclRo
cm90dGxpbmdJbmNyZWFzZUxpbWl0KGludCBtaWxsaXNlY29uZHMpOwogCkBAIC0zNTksNyArMzYw
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVp
bnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNzaW9u
SUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogI2VuZGlmCiAK
QEAgLTQ2MCw3ICs0NjEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5Pj4gbV9wYWdlR3JvdXBNYXA7CiAgICAgUmVmUHRyPElu
amVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwogCkBAIC01MTQsNyArNTE1LDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgbV9wcm9jZXNzSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCi0gICAg
SGFzaFNldDx1aW50NjRfdD4gbV9wYWdlc0luV2luZG93czsKKyAgICBIYXNoU2V0PFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBtX3BhZ2VzSW5XaW5kb3dzOwogICAgIFdlYkNvcmU6OlRpbWVyIG1f
bm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXI7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U+IG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGIzOWIz
OGMxODNjLi41N2EyNjU2MzQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMo
c3RydWN0IFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycykK
IAogICAgICMgQ3JlYXRlIGEgbmV3IHBhZ2UuCi0gICAgQ3JlYXRlV2ViUGFnZSh1aW50NjRfdCBu
ZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFnZUNy
ZWF0aW9uUGFyYW1ldGVycykKKyAgICBDcmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG5ld1BhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBw
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzKQogCiAgICAgUHJld2FybUdsb2JhbGx5KCk7CiAgICAgUHJl
d2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViQ29yZTo6UHJld2FybUluZm9ybWF0
aW9uIHByZXdhcm1JbmZvcm1hdGlvbikKQEAgLTExMSw3ICsxMTEsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0
OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lv
bklEKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
cyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBz
dHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBp
bml0aWFsU2Vzc2lvbklEKQogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAwYmQ5MGFmOTE4Ny4uMGU5NDI5NjA0OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1h
cC5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNl
c3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgYwogCiAgICAg
Ly8gTmFtZXNwYWNlIElEcyBmb3Igc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2
YWxlbnQgdG8gd2ViIHBhZ2UgSURzCiAgICAgLy8gc28gd2UgY2FuIGdldCB0aGUgcmlnaHQgcGFn
ZSBoZXJlLgotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJQYWdlKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRl
bnRpZmllclR5cGU+KG1fc3RvcmFnZU5hbWVzcGFjZUlEKSk7CiAgICAgaWYgKCF3ZWJQYWdlKQog
ICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDI5YmE3ZDhhOGEzLi5lY2FmNjY1MTlkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
QXJlYU1hcC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9y
YWdlQXJlYS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5j
cHAKaW5kZXggYjM5MDgxZTZlM2MuLjgwOTYyMzQyNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCkBAIC00MCwxMiArNDAsMTIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRl
bnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIu
dG9VSW50NjQoKSwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMp
CitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVF
cGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
dW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewogICAgIHJldHVybiBjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShpZGVudGlmaWVyLCBxdW90YUluQnl0ZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmgKaW5kZXggNjc1N2UzYjgxODguLjFiZmVjNDhiODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgK
QEAgLTM5LDggKzM5LDggQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFj
ZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBz
dGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsK
KyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
KTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcyk7CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRl
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcyk7CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJh
bnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vz
c2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbQppbmRleCBmYzY1OTg2MzI1Mi4uMWQ0M2UyN2QzZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLm1tCkBAIC0xNzAsNyArMTcwLDcgQEAgUmVmPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZShXZWJQYWdlJiBwYWdlKQogUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcihXZWJQYWdlJiBwYWdlKQogICAg
IDogbV9wYWdlKCZwYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBwYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMp
OwogfQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp+UGxheWJhY2tTZXNzaW9uTWFuYWdlcigp
CkBAIC0xOTAsMTMgKzE5MCwxMyBAQCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp+UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcigpCiAgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsKIAogICAgIGlmICht
X3BhZ2UpCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aW52YWxpZGF0ZSgpCiB7CiAgICAgQVNTRVJU
KG1fcGFnZSk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFn
ZSA9IG51bGxwdHI7CiB9CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbQogICAgIGFkZENsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQp
OwogCiAgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OlNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQobV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKQEAgLTI5MSw3ICsyOTEsNyBAQCB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIo
KQogICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKIAogICAgIG1fcGFnZS0+dmlk
ZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
cigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpKTsK
IH0KIAogdWludDY0X3QgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y29udGV4dElkRm9yTWVkaWFF
bGVtZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKQEAgLTMxOCwy
NyArMzE4LDI3IEBAIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OmN1cnJlbnRQbGF5YmFja0NvbnRyb2xzRWxlbWVuCiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6ZHVyYXRpb25DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1
cmF0aW9uKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpEdXJhdGlvbkNoYW5nZWQoY29udGV4dElkLCBkdXJhdGlvbiksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpEdXJhdGlvbkNoYW5nZWQoY29udGV4dElkLCBkdXJhdGlvbikpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRUaW1lQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkN1cnJl
bnRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OkN1cnJlbnRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBh
bmNob3JUaW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YnVmZmVyZWRU
aW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkJ1
ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6QnVmZmVyZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHBsYXliYWNrU3RhcnRlZFRpbWUpCiB7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXli
YWNrU3RhcnRlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgcGxheWJhY2tTdGFydGVkVGltZSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBs
YXliYWNrU3RhcnRlZFRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpy
YXRlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5
YmFja1JhdGUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1Jh
dGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UmF0ZUNoYW5nZWQoY29udGV4dElkLCBpc1BsYXlpbmcs
IHBsYXliYWNrUmF0ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWth
YmxlUmFuZ2VzQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OlRpbWVS
YW5nZXMmIHRpbWVSYW5nZXMsIGRvdWJsZSBsYXN0TW9kaWZpZWRUaW1lLCBkb3VibGUgbGl2ZVVw
ZGF0ZUludGVydmFsKQpAQCAtMzQ5LDM3ICszNDksMzcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBX
ZWIKICAgICAgICAgZG91YmxlIGVuZCA9IHRpbWVSYW5nZXMucmFuZ2VzKCkuZW5kKGkpLnRvRG91
YmxlKCk7CiAgICAgICAgIHJhbmdlc1ZlY3Rvci5hcHBlbmQoeyBzdGFydCwgZW5kIH0pOwogICAg
IH0KLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6U2Vla2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKGNvbnRleHRJZCwgV1RGTW92ZShyYW5nZXNW
ZWN0b3IpLCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWwpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6U2Vla2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKGNvbnRleHRJZCwgV1RGTW92ZShy
YW5nZXNWZWN0b3IpLCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWwpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2FuUGxheUZhc3RSZXZlcnNlQ2hh
bmdlZChjb250ZXh0SWQsIHZhbHVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlGYXN0UmV2
ZXJzZUNoYW5nZWQoY29udGV4dElkLCB2YWx1ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChj
b250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0
ZWRJbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9y
PE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25z
LCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0
ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmlj
ZU5hbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZChjb250ZXh0SWQsIGVu
YWJsZWQsIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNl
TmFtZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5n
ZWQoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSks
IGxvY2FsaXplZERldmljZU5hbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjphdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWlu
dDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChj
b250ZXh0SWQsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNl
bGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxl
TWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0
SWQsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp3
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBi
b29sIGRpc2FibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCA1ZDYxMTBiNzkwOS4uZmRlY2QzYzAy
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0xMTcsNyArMTE3LDcgQEAgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcihXZWJQYWdlJiBwYWdlLCBQbGF5YmFja1Nl
c3Npb25NYW4KICAgICA6IG1fcGFnZSgmcGFnZSkKICAgICAsIG1fcGxheWJhY2tTZXNzaW9uTWFu
YWdlcihwbGF5YmFja1Nlc3Npb25NYW5hZ2VyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHBhZ2UucGFnZUlEKCkudG9VSW50
NjQoKSwgKnRoaXMpOwogfQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp+VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcigpCkBAIC0xMzgsMTMgKzEzOCwxMyBAQCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Ojp+VmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpCiAgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsK
ICAgICAKICAgICBpZiAobV9wYWdlKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLnRv
VUludDY0KCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmludmFsaWRhdGUo
KQogewogICAgIEFTU0VSVChtX3BhZ2UpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2
NCgpKTsKICAgICBtX3BhZ2UgPSBudWxscHRyOwogfQogCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxl
bWVudChIVE1MVmlkZW9FbGVtZW4KICAgICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250
ZXh0KCktPnNldFJvb3RMYXllcih2aWRlb0xheWVyKTsKICAgICB9CiAKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVu
V2l0aElEKGNvbnRleHRJZCwgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRl
eHRJRCgpLCB2aWRlb1JlY3QsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW50ZXJmYWNl
LT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBzdGFuZGJ5KSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFj
ZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dz
UGljdHVyZUluUGljdHVyZSwgc3RhbmRieSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50KQpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJD
b3JlOjpIVE1MVmlkCiAgICAgICAgIHJldHVybjsKIAogICAgIGludGVyZmFjZS5zZXRJc0FuaW1h
dGluZyh0cnVlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkLCBpbmxpbmVWaWRlb0ZyYW1lKHZp
ZGVvRWxlbWVudCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElk
LCBpbmxpbmVWaWRlb0ZyYW1lKHZpZGVvRWxlbWVudCkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB0YXJnZXRNb2RlKQpAQCAtMzI0LDcg
KzMyNCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVl
blRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6CiAKICAgICBpbnRlcmZhY2Uuc2V0VGFy
Z2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25U
b01vZGUoY29udGV4dElkLCB0YXJnZXRNb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxs
c2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShjb250ZXh0SWQsIHRhcmdldE1vZGUpKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHZpZGVvRWxlbWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKHRh
cmdldE1vZGUpOwpAQCAtMzM2LDEzICszMzYsMTMgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjoK
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aGFzVmlkZW9DaGFuZ2VkKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCBoYXNWaWRlbykKIHsKICAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlk
ZW8oY29udGV4dElkLCBoYXNWaWRlbyksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlk
ZW8oY29udGV4dElkLCBoYXNWaWRlbykpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBGbG9h
dFNpemUmIHZpZGVvRGltZW5zaW9ucykKIHsKICAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9E
aW1lbnNpb25zKGNvbnRleHRJZCwgdmlkZW9EaW1lbnNpb25zKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29udGV4dElkLCB2aWRlb0RpbWVuc2lvbnMpKTsKIH0K
IAogI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OgpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVz
dFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4dElkKQogCiAgICAgYXV0byYgbW9kZWwg
PSBlbnN1cmVNb2RlbChjb250ZXh0SWQpOwogICAgIEludFJlY3QgaW5saW5lUmVjdCA9IGlubGlu
ZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxlbWVudCgpKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SW5saW5lUmVjdChjb250ZXh0
SWQsIGlubGluZVJlY3QsIGlubGluZVJlY3QgIT0gSW50UmVjdCgwLCAwLCAwLCAwKSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpTZXRJbmxpbmVSZWN0KGNvbnRleHRJZCwgaW5saW5lUmVjdCwgaW5saW5l
UmVjdCAhPSBJbnRSZWN0KDAsIDAsIDAsIDApKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKQEAg
LTM3OCw3ICszNzgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRl
b0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgbW9kZWwtPnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlz
KSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJ
ZCwgdHJ1ZSksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAg
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpT
ZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIHRydWUpKTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CiB9CkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgICAgICAg
ICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSwgcHJv
dGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFz
VmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRl
eHRJZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dGhpcywgY29udGV4dElkXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0g
ICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+
cGFnZUlEKCkpOworICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsK
ICNlbHNlCiAgICAgQ0FMYXllciogdmlkZW9MYXllciA9IGludGVyZmFjZS0+bGF5ZXJIb3N0aW5n
Q29udGV4dCgpLT5yb290TGF5ZXIoKTsKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAg
ICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAg
ICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNj
cmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAg
ICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgICAgICB9KTsKICAgICB9KTsK
ICNlbmRpZgpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
dGhpcyksIHZpZGVvRWxlbWVudCA9IFdURk1vdmUodmlkZW9FbGVtZW50KSwgY29udGV4dElkXSB7
CiAgICAgICAgIHZpZGVvRWxlbWVudC0+d2lsbEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgICAgIGlm
IChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRU
b0V4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlE
KCkpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihjb250
ZXh0SWQpKTsKICAgICB9KTsKIH0KIApAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQs
IGludGVyZmFjZV0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRo
aXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxs
c2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0pOwogI2Vsc2UKICAgICBtb2RlbC0+d2FpdEZvclBy
ZXBhcmVkRm9ySW5saW5lVGhlbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNv
bnRleHRJZCwgaW50ZXJmYWNlLCBtb2RlbF0gKCkgbXV0YWJsZSB7CkBAIC00OTgsNyArNDk4LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRf
dCBjb250ZXh0SWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UtPnNldExheWVy
SG9zdGluZ0NvbnRleHQobnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTU1NSw3ICs1NTUsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBj
b250ZXh0SWQsIGJvbwogCiAgICAgaWYgKCFpc1BhZ2VWaXNpYmxlKQogICAgICAgICBtb2RlbC52
aWRlb0VsZW1lbnQoKS0+c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoZmFsc2UpOwotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJl
ZFRvUmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCB0cnVlLCBpbmxpbmVWaWRlb0ZyYW1lKCptb2Rl
bC52aWRlb0VsZW1lbnQoKSkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVyblRv
SW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVt
ZW50KCkpKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFJvdXRl
U2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQodWludDY0X3QgY29udGV4dElkLCBNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRl
eHRVSUQ6OkFzeW5jUmVwbHkmJiByZXBseSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IDJlMTkwYjAzNWY3Li5iOWNlNzlkMjc0
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tCkBAIC01MzksNyArNTM5LDcgQEAgc3RhdGljIE5TVVJMICpvcmlnaW4oV2ViUGFnZSYg
cGFnZSkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJldGFpblB0cjxOU0Fy
cmF5PE5TU3RyaW5nICo+PiBhY3RpdmVQYWdlc09yaWdpbnMoY29uc3QgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFdlYlBhZ2U+PiYgcGFnZU1hcCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxO
U1N0cmluZyAqPj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhhc2hNYXA8UGFnZUlkZW50aWZp
ZXIsIFJlZlB0cjxXZWJQYWdlPj4mIHBhZ2VNYXApCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PE5TU3RyaW5nICo+PiBhY3RpdmVPcmlnaW5zID0gYWRvcHROUyhbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA5
ODcyYzMxYmE1OC4uNzk2MDI0YzhjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAK
QEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZQogICAgIFJlc291cmNl
SGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGZyYW1lTG9hZGVyLm5ldHdvcmtpbmdD
b250ZXh0KCksIHJlcXVlc3QsIG9wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpD
cmVkZW50aWFsczo6T21pdCA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRf
dCAvKndlYlBhZ2VJRCovKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VMb2Fk
Q29tcGxldGVkKFBhZ2VJZGVudGlmaWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aAppbmRleCA1NWIzNjk3NTMwNi4uNWY2MmY3NzdhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRSZXNvdXJjZShX
ZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9ucyYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyPiYmKT4m
JikgZmluYWw7CiAgICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6OkZy
YW1lTG9hZGVyJiwgdW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0Y2hP
cHRpb25zJiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JikgZmluYWw7
Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpIGZpbmFsOwor
ICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGZpbmFs
OwogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAg
ICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDEzODU1ODNhZjI5Li5iMTQwM2Qw
NTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIGZpbmFsOwogICAgIGJvb2wgaGFz
V2ViVmlldygpIGNvbnN0IGZpbmFsOyAvLyBtYWlubHkgZm9yIGFzc2VydGlvbnMKIAotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3
Zjg2OWYxZGRjYi4uN2ViYTNhOThhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBA
IC0yMDksNyArMjA5LDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50KFdlYkZyYW1lICp3ZWJGcmFtZSkKIHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiB9Cg==
</data>
<flag name="commit-queue"
          id="386510"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>370554</attachid>
            <date>2019-05-23 19:48:52 -0700</date>
            <delta_ts>2019-05-24 08:50:21 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews104 for mac-highsierra-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>819852</size>
            <attacher name="EWS Watchlist">ews-watchlist</attacher>
            
              <data encoding="base64">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
iRmbV+qBECxNhCS27Fp4uxBTMWMUG3sgFRsnQhJb97K7AHMhYvSKHZByxXlQtKZ1ldYUsWlNywi1
UgEErTvl5FbXl/s2ZVxeuQc6sDwRhtj9W3ihtrUYpIxLLPdAJ5YnwhD7U7qV6Ye+FNtJ18eMSyz3
QCeWJ0IRU20L1QV/NyZsWmM1QqtpfwSpZfcqtap+GdUUcVmlDuiw0jwYWn/Bcb0z1jeDdyXZVzi6
nHO5lb3Q4ZWTYQg+yC3okk7HgMtsrE6HNc6CogSvF0oxYFOKxQiVxu0xlNRrdRdHh8dsRqEWIVHc
HUHo0bSyeh3tY8BlNFanQxpnQVEatFcPqqteTPsYhs+gbK+oUxeEYnkmNLU1xLv+8bPBlZ07/YhV
8NwRseN5PgzNJ6vCMhkPUEpJc465FItO6ASLuTD0Vlo2sDO6BVvq9eeYS6/ohE6vmAtFz7hlt4bq
lk9vnOpCaTa31AMhWpoIRcyCc/UtjH6K2LymcoRcqQCC1jPI9qnT1bmRDZkJGZdX7oEOLE+EIxbe
JMv6JqxNGZ/YVI9SLFVAEfs2KFv/StqU8YlN9SjFUgUMMaPhDlxjVX/5riN+MaE9/4jNr+6IkLGe
D0fzcHWOac2B9Rwz90AJd0A7xwzdXp1jhv1ZzzFzD6RiaOeYodvLc8ywPec5ZuqAlAvrHHP6IFj/
j+BSxuWVe6ADyxPhiPm1+g41mHch4vMaO6DkGudB0TK2utq78JjNKdQiRIq7Iwj9LfUAj7K6wr/G
bC/ZrvC5BzqtPBGemOquxVTHK6Y6ajHVoYl9Mocrsc4cWMVCD8RiYSI0sQ28+SsyH0JWs9gFMVqc
6X+oTYvH97zxJz//MgXp2+0vYazjStp4Kyh+Od4OEKDLb67PZj8AUEsDBAoAAAAAANaZt04AAAAA
AAAAAAAAAABDABwAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LWNyYXNoLWZvY3VzZWQtZWxl
bWVudC1jaGFuZ2UtYWN0dWFsLnR4dFVUCQADk1PnXJNT51x1eAsAAQT1AQAABBQAAABQSwMECgAC
AAAA1pm3ThWuewEUAAAAFAAAAEUAHABhY2Nlc3NpYmlsaXR5L2FjY2Vzc2liaWxpdHktY3Jhc2gt
Zm9jdXNlZC1lbGVtZW50LWNoYW5nZS1leHBlY3RlZC50eHRVVAkAA5NT51yTU+dcdXgLAAEE9QEA
AAQUAAAAUEFTUyBpZiBubyBjcmFzaC4gIApQSwMECgAAAAAA1pm3TgAAAAAAAAAAAAAAABIAHABh
Y2Nlc3NpYmlsaXR5L21hYy9VVAkAA5NT51zGU+dcdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAKqZ
t04AAAAAAAAAAAAAAAAuABwAYWNjZXNzaWJpbGl0eS9tYWMvYWJici1hY3JvbnltLXRhZ3MtYWN0
dWFsLnR4dFVUCQADP1PnXD9T51x1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAqpm3TtUCgt87AQAA
xgIAADAAHABhY2Nlc3NpYmlsaXR5L21hYy9hYmJyLWFjcm9ueW0tdGFncy1leHBlY3RlZC50eHRV
VAkAAz9T51w/U+dcdXgLAAEE9QEAAAQUAAAAxVJNb8IwDL3nV1i9dJMqDvwDhLoLINBarbu6iSkR
IZkcV9B/v7R8TJN24bSLlTjPfi/PbppGNau5WgffEUNNUZSMoT7YCOMpxQMK5OiE2KNQyl4kh31g
0MSC1oNgF+Ec+BhBB2bS4oYCrNeuN9Z3gG3LI6gA1Bz8cBovgN5cX1CEbdsLzZTaeoi91hRjAUPo
4Wydg0gEmCJbihD2kO0WVZXBKaGwo4TcB+fCmQy0A2R1WdWw3G5267Ius9RTjfCJahYTk+8Wd8IP
dD295IvP8vKV5JCp09+mZP4KyYC8CewMNNYQNNTm1046eCEvs4duU01t3wKP9RvkI/E7JkeXCZkM
ig/Cv7kKOP3UTMTCPd1kXx17Xjm1Kyvz/5B8IDTES3LuadXjAt4k39Zg3zs37JBjmu6dRf0asVLf
UEsDBAoAAAAAANaZt04AAAAAAAAAAAAAAAA/ABwAYWNjZXNzaWJpbGl0eS9tYWMvYWNjZXNzaWJp
bGl0eS1tYWtlLWZpcnN0LXJlc3BvbmRlci1hY3R1YWwudHh0VVQJAAOTU+dck1PnXHV4CwABBPUB
AAAEFAAAAFBLAwQUAAIACADWmbdOAARfHMUAAAA6AQAAQQAcAGFjY2Vzc2liaWxpdHkvbWFjL2Fj
Y2Vzc2liaWxpdHktbWFrZS1maXJzdC1yZXNwb25kZXItZXhwZWN0ZWQudHh0VVQJAAOTU+dck1Pn
XHV4CwABBPUBAAAEFAAAAJXPsW7DMAwE0F1fcfAc9AO6BY071bARC+isyFRMRDULUaqhv68SIEPH
LpzuDo+WNCOvLsOpsmb+IUt+3STKtQ7uRu+cNJ9Jv2VbKGGXdFN4SYl8jvXFmHGDFu9J9YAqBTvH
CCWCazcxKSSgm47z3OGrpdyVWjJIjLLTgktFZ/vZ4m0cpo/e9l3bNKdxaBFf1HzytsgOVjRcW84r
IdxNSE/UK3IqZI4PBF84cq7/aQcXlcxd+PwklBjr5JI2YOs+5s0fpTG/UEsDBAoAAAAAANaZt04A
AAAAAAAAAAAAAAAkABwAYWNjZXNzaWJpbGl0eS9tYWMvYXR0cmlidXRlZC1zdHJpbmcvVVQJAAOT
U+dcxlPnXHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACqmbdOAAAAAAAAAAAAAAAAbgAcAGFjY2Vz
c2liaWxpdHkvbWFjL2F0dHJpYnV0ZWQtc3RyaW5nL2F0dHJpYnV0ZWQtc3RyaW5nLWRvZXMtbm90
LWluY2x1ZGVzLW1pc3NwZWxsZWQtZm9yLW5vbi1lZGl0YWJsZS1hY3R1YWwudHh0VVQJAAM/U+dc
P1PnXHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACqmbdO2yjSqv4AAAACAgAAcAAcAGFjY2Vzc2li
aWxpdHkvbWFjL2F0dHJpYnV0ZWQtc3RyaW5nL2F0dHJpYnV0ZWQtc3RyaW5nLWRvZXMtbm90LWlu
Y2x1ZGVzLW1pc3NwZWxsZWQtZm9yLW5vbi1lZGl0YWJsZS1leHBlY3RlZC50eHRVVAkAAz9T51w/
U+dcdXgLAAEE9QEAAAQUAAAAxZBBboMwEEX3PsWUDY2UIOUAWaCIrIpAhUW3BgawYuzKM1bC7Ws3
RVV6gW5G9vf3/08jBCMxLIo+UWsc/l7bWRFELcxZMnzr0M/YX5WZIDway+C8AWvC0RxwUCw7jYAa
FzRMmRCVAfJ9j0R7WK2HmwoZhAgyTKeQwI6Q1HnTJLAEl5wwOEertb3hAN0KSVs0LZyrsn4r2iIJ
mSLaQTK7hl1AyZQZ8F6Nr2n+USr64YcTHNMdvJzgcIyw7Dz+309iyapv8c5ZDFGdZxweURfrol5K
d0X3Ls2EZ2tYKkP55nxuSfew/Jp3sWiUmramx7pHr/VaS0eBaiMRT6sU4gtQSwMECgAAAAAA1pm3
TgAAAAAAAAAAAAAAAFcAHABhY2Nlc3NpYmlsaXR5L21hYy9hdHRyaWJ1dGVkLXN0cmluZy9hdHRy
aWJ1dGVkLXN0cmluZy1mb3ItcmFuZ2Utd2l0aC1vcHRpb25zLWFjdHVhbC50eHRVVAkAA5NT51yT
U+dcdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIANaZt06q5si+0AAAAEgBAABZABwAYWNjZXNzaWJp
bGl0eS9tYWMvYXR0cmlidXRlZC1zdHJpbmcvYXR0cmlidXRlZC1zdHJpbmctZm9yLXJhbmdlLXdp
dGgtb3B0aW9ucy1leHBlY3RlZC50eHRVVAkAA5NT51yTU+dcdXgLAAEE9QEAAAQUAAAAbZBBasQw
DEX3PsUn69I7lJJdSwLxBTyxkphx7Klk48ntR2HaQqEbIaHH+7JbZo89yI1iJI+mo7FbEBSSAkpS
mXTYXIErhcOlFsVEu7RiyazcvWB3fCUGu7TS6bgKXPLIKR4IaY7Vq0RTfmJ+VWgbJTB9VY0j/2rM
kCB1nknkBUeuaCFGCBGcVg7qyQu68W2aOuxKuZWUXHKMuan5cqCz/WTxPnyOH73tO3WaE39eqi+j
+41mDRsS/b+wLT8X34csNcZjdCzqP3+GKxnzJ8SYB1BLAwQKAAAAAACqmbdOAAAAAAAAAAAAAAAA
HgAcAGFjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC10ZXh0L1VUCQADP1PnXMZT51x1eAsAAQT1AQAA
BBQAAABQSwMECgAAAAAAqpm3TgAAAAAAAAAAAAAAADQAHABhY2Nlc3NpYmlsaXR5L21hYy9zZWFy
Y2gtdGV4dC9zZWFyY2gtdGV4dC1hY3R1YWwudHh0VVQJAAM/U+dcP1PnXHV4CwABBPUBAAAEFAAA
AFBLAwQUAAIACACqmbdO4uLsCkwBAABABQAANgAcAGFjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC10
ZXh0L3NlYXJjaC10ZXh0LWV4cGVjdGVkLnR4dFVUCQADP1PnXD9T51x1eAsAAQT1AQAABBQAAADF
lE1PwzAMhu/9FVYvBQlVfNy4IVROTJtYDkiIQ9q4bViWjHxsC78eZ50EF4QmRdqxfv0+cdzYbET4
DLJbQWvNTkNv9vAR1hsHZosWPMmKf0UQZqiLgjWv7PYe2Ammk5LphFE68Oi8Oyi8lUr6CN6AQ267
kezkwb2HQW5RAwfnufVSD7AxUnvgWlBQSIudl0ZP+USa7HTCXIMLXYfOXUE0AXZSKVIxodBKpLp6
KBcPy2UJa8riA1Jmb5QyOxTQRihZs2TwOJ8tnhvWlMQsUjpYdEH5WqEe/Ah0j5spnsqtnbdU5JOx
jL5m3K7QvnA94MXkert+v0yWKvWiysg7tD4nkJqZE8f+xt1N8daI+C9OHnH0iqpz2LIUT6NRncPm
4wbp0U/6QQtaYC81ipy/Os17Tt7PBTLjjvuhD0rFBbeOxj5tJRswrcBfs18U31BLAwQKAAAAAADU
mbdOAAAAAAAAAAAAAAAAHgAcAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L1VUCQADj1Pn
XMZT51x1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAqpm3TgAAAAAAAAAAAAAAADYAHABhY2Nlc3Np
YmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0xLWFjdHVhbC50eHRVVAkAAz9T51w/
U+dcdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIAKqZt06DJowr2AAAAJIBAAA4ABwAYWNjZXNzaWJp
bGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMS1leHBlY3RlZC50eHRVVAkAAz9T51w/
U+dcdXgLAAEE9QEAAAQUAAAAlZA/T8MwEMV3f4qnLF0QAyMbqrKBGikeWB3n0hiucfCfpubTc6ZS
hcTU5YZ7v3vv2XomfGVnPzEEvy2Y/AUf+bRG+DMFJJHZfBeM/violG7f9dMz9B1Hd8GSMLuIRDHF
X8UMjl0qSB6RmGyCWUYEWtlYEu6SsLk0yyauVb1xzi/idlgQs7UU4wOKz8IyCyC+MoMj6TCh6V76
vsFJKHMkISfP7DcaMRQ0uu019oe37rXVbSOequI1MHOClN3V9rvr9pb9T7i2mDJz6UyIYl7fGTLV
T/2ToNQPUEsDBAoAAAAAANSZt04AAAAAAAAAAAAAAAA2ABwAYWNjZXNzaWJpbGl0eS9tYWMvc2Vs
ZWN0LXRleHQvc2VsZWN0LXRleHQtMi1hY3R1YWwudHh0VVQJAAOPU+dcj1PnXHV4CwABBPUBAAAE
FAAAAFBLAwQUAAIACADUmbdOI9FNPtgAAACSAQAAOAAcAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVj
dC10ZXh0L3NlbGVjdC10ZXh0LTItZXhwZWN0ZWQudHh0VVQJAAOPU+dcj1PnXHV4CwABBPUBAAAE
FAAAAJWQP0/DMBDFd3+KpyxdEAMjG6qygRopHlgd59IYrnHwn6bm03OmUoXE1MXDvZ/fe3d6Jnxl
Zz8xBL8tmPwFH/m0RvgzBSSR2XwXjP74qJRu3/XTM/Qdn+6CJWF2EYliir+KGRy7VJA8IjHZBLOM
CLSysSTcJWFzaZZJXKt645xfxO2wIGZrKcYHFJ+FZRZAfOUNjqTDhKZ76fsGJ6HMkYScPLPfaMRQ
0Oi219gf3rrXVreNeKqK18DMCVJ2V9fYXae37H/CtcWUmUtnQhTzumfIVI/6J0GpH1BLAwQKAAAA
AADWmbdOAAAAAAAAAAAAAAAAHwAcAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS9VVAkA
A5NT51zGU+dcdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAKqZt04AAAAAAAAAAAAAAABJABwAYWNj
ZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11c2VyLWluZm8tdGV4dGFy
ZWEtYWN0dWFsLnR4dFVUCQADQFPnXEBT51x1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAqpm3Tv3m
DXYqAQAAHAsAAEsAHABhY2Nlc3NpYmlsaXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdl
LXVzZXItaW5mby10ZXh0YXJlYS1leHBlY3RlZC50eHRVVAkAA0BT51xAU+dcdXgLAAEE9QEAAAQU
AAAA7ZZRS8MwFIXf8ysueRaxP2HMPgzUFVpEGD7E5HYLZMnovXHrvzeVipNVpvhiR1/6kBzO/XKS
whHVxhIwEhO8KhcR9Eb5NYIPbGurFdvgCSJhA9bXAYxidS3E0gNFrZHoCtoQYW+dA0IElb6NRYJQ
gyxmZSlhm1RqjUlZB+fCHg28tCCrvKxgvrwv7vIql8lTdHJQxqB5OJoOHWATsd/WHJWbv0NW7Q5p
1SBFxwtv8PDcaWdPFR64ZMX4KcuN5VODx+7Epw542KFmNAPbxx6d5zCCTMvWr+WYkG/RIaOcUr6c
lFc356iT4jx4b/M9+5BxdnZ09pPR2Whveh55VLyFoulh/vphTqn9+9/5cmJb+NSteIrtL7H1rbWO
zrWFaiiV0Y9+Kb40UiHeAFBLAwQKAAAAAADWmbdOAAAAAAAAAAAAAAAASgAcAGFjY2Vzc2liaWxp
dHkvbWFjL3ZhbHVlLWNoYW5nZS92YWx1ZS1jaGFuZ2UtdXNlci1pbmZvLXRleHRmaWVsZC1hY3R1
YWwudHh0VVQJAAOTU+dck1PnXHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADWmbdOtxCiGycBAAC2
CQAATAAcAGFjY2Vzc2liaWxpdHkvbWFjL3ZhbHVlLWNoYW5nZS92YWx1ZS1jaGFuZ2UtdXNlci1p
bmZvLXRleHRmaWVsZC1leHBlY3RlZC50eHRVVAkAA5NT51yTU+dcdXgLAAEE9QEAAAQUAAAA7ZbB
SsQwEIbveYqhZxH7CEvtYUHdQosIi4fYTLuBmCydidu+valUXNlKFUHs0ksOmZ9/vkwmZESx0wSM
xAQv0niEcidtjWAd60qXkrWzBJ6wAW0rB0qyvBRiY4F8WSLRBXTOw0EbA4QIMqyNRgJXQZSt8jyC
56CSNQZl5YxxB1Tw1EFUpHkByeY2u0mLNAqeopeDVArV3VF26AEbj0O4ZC9N8gZZdHukbYPkDa+t
wvax164eCmw5Z8n4IUuV5lOD+/7Epw7Y7rFkVCPhY4/ecxwhCtva1tGckK/RIOMfIW+vpqiDYhp8
sPmafcw4nkwdfyd1PNubTjzPijeTtDTmjxtzqdq/f87nU7a1Db8+L2X7TdmGearyxnSZbCiMSe+T
j/g0KwnxClBLAwQKAAAAAADUmbdOAAAAAAAAAAAAAAAAGgAcAGFjY2Vzc2liaWxpdHkvdGV4dC1t
YXJrZXIvVVQJAAOPU+dcxlPnXHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACqmbdOAAAAAAAAAAAA
AAAAVgAcAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvY2hhcmFjdGVyLW9mZnNldC12aXNpYmxl
LXBvc2l0aW9uLWNvbnZlcnNpb24taGFuZy1hY3R1YWwudHh0VVQJAAM/U+dcP1PnXHV4CwABBPUB
AAAEFAAAAFBLAwQUAAIACACqmbdOEQrbK6sAAADiAAAAWAAcAGFjY2Vzc2liaWxpdHkvdGV4dC1t
YXJrZXIvY2hhcmFjdGVyLW9mZnNldC12aXNpYmxlLXBvc2l0aW9uLWNvbnZlcnNpb24taGFuZy1l
eHBlY3RlZC50eHRVVAkAAz9T51w/U+dcdXgLAAEE9QEAAAQUAAAATY9BCsIwEEX3OcWQjRspdeEB
RLpTLDQXiO0kDaZJzSS0vb1TQXDzYWbe//xRuGYh1OgIMlJmHXUGizm7YHlAwDDwac0w6fTCBNF8
17O2CEsMhwyjDrYS4hGASt8j0RG2WGBx3gMhgmZNDmm3yvbSdRImpjiASRO9jwsO8NxAqqZTcH3c
21ujGsmZYsd/saZ4v7U6EdN731SQq/9b2JDwXfiRU13X52oejPgAUEsDBAoAAAAAANSZt04AAAAA
AAAAAAAAAAA+ABwAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91
cy1uZXh0LWFjdHVhbC50eHRVVAkAA49T51yPU+dcdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIANSZ
t0444w3f7gEAANkIAABAABwAYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1w
cmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dFVUCQADj1PnXI9T51x1eAsAAQT1AQAABBQAAADdVs2O
0zAQvvsphl6SSqugTeHCrVplBdKWVjQSB8TBcSaNF8cJtkOb8z4AV268Io/AJM2uulVRs2VVJA4Z
Jc583/x4ZmyHG8eYI3nJBEDKmODac2BRoXCMJwJShIz9+vnjjp7vjHFIGItzacGhdSRzBE34l5XB
b7Ks2/WNg4KbL2ggq7VwstQWuEGQRaWwQO0wBVEaQyZUEzA212BrIdDaC2jKGtZSKXIBgZM0Ei2U
GYwW0+VyBAVp8RWSZlYqVa6JKmlgFEfLGK7ms8VNFEcj4mSteudL0IpZ588Hrld4g3rlcn9vdQwU
0qsdFO8ckolU0jXR1u/r0sQPMN86bvr3cSBt9LXmqqPtuJyp8Ul0qNOhZNYZqVeP4F0QfrEXkMa1
kvokqOe8f2kxHLZtYYd8zebJLVUTbG1RaRgw7e83IODTNI6nV29n0fv4M1X4joXhnqXeabjLHdzk
CTiK5UQkdW6PfFHZ9dAqPlBk4QCsqKmJ9cEemDw/ZRiIXKp06t7pFDd+OP6r1vCyk+rb497R0YJF
eSvjI/PljxYPEZPa9sv6Bm2tXHA/bi+gX+gTt02K1w5r75zW7o6nRdDA5pXF9GMu6fCouMD9BE3O
5jI/X3bgfKaS/zKq+73qLwlZrVSz4IYq6WEAsEcXAMZ+A1BLAwQKAAAAAADOmbdOAAAAAAAAAAAA
AAAACwAcAGFuaW1hdGlvbnMvVVQJAAOEU+dcxlPnXHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAADS
mbdOAAAAAAAAAAAAAAAADgAcAGFuaW1hdGlvbnMvM2QvVVQJAAOLU+dcxlPnXHV4CwABBPUBAAAE
FAAAAFBLAwQKAAAAAACqmbdOAAAAAAAAAAAAAAAANgAcAGFuaW1hdGlvbnMvM2QvY2hhbmdlLXRy
YW5zZm9ybS1pbi1lbmQtZXZlbnQtYWN0dWFsLnR4dFVUCQADP1PnXD9T51x1eAsAAQT1AQAABBQA
AABQSwMEFAACAAgAqpm3TiwxRuMvAQAA8gIAADgAHABhbmltYXRpb25zLzNkL2NoYW5nZS10cmFu
c2Zvcm0taW4tZW5kLWV2ZW50LWV4cGVjdGVkLnR4dFVUCQADP1PnXD9T51x1eAsAAQT1AQAABBQA
AACdkV9LwzAUxd/9FJf1pYUiydZ2deCDYwwFRZExEPGhf65rMDQjTV1n8bubdp3tyuqDeUnI/Z1z
7k14sEcJgQKT2MSCjH0h+IQUHiEXAM+YxijXDHcDCB+QU6+Vz7mIPqC8XT3cfw+iv7CI91DOHxcv
B9a3qdfAU98p6MSr4Z73U9+4Zv0GPcIrLBSUhtJbn3eI1+UBKghknrbcjsUqqcAZjG4UqARBu4J4
r48Ks8PdRiKmEIoCskTkXANhFuUS66LEuCpdjs4NsbhbH9vSY3YG6T6zb7ttz+OCknHvnU2JPFDs
E2ErMqaYSDG2TswnzqkBvIZCav0MTLrVbQvOYjBIvay3TjZ1r2yXNmJafR3p/7J5PpS61O4Jdeom
ElzIa2O5rKK6Sf/O+SOFEL9O+QFQSwMECgAAAAAA0pm3TgAAAAAAAAAAAAAAADgAHABhbmltYXRp
b25zLzNkL21hdHJpeC10cmFuc2Zvcm0tdHlwZS1hbmltYXRpb24tYWN0dWFsLnR4dFVUCQADi1Pn
XItT51x1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA0pm3TgMqG341AQAA6AIAADoAHABhbmltYXRp
b25zLzNkL21hdHJpeC10cmFuc2Zvcm0tdHlwZS1hbmltYXRpb24tZXhwZWN0ZWQudHh0VVQJAAOL
U+dci1PnXHV4CwABBPUBAAAEFAAAAJWR3WvCMBTF3/dXXOqLghs32M4i7GEissHGhhZhzD30406D
sZEkW9vJ/ve1frTa6WB5CYTfOffkXOFnpMA30MQ2tkDzLwIXMb1GvAAYURyRmnBKziDijJx17FLe
FzJcwPrOe3z4PouWsIwyWPefBi9b1m27O7br2ilj7oatWQ/uJ3tnhnjI7/G9wKPUwLph8quexeke
8QAFBOojrriER2ZegD2wnm/HY7iEqZVQsODGU36s36VaXtlTC1ZKrkiZDPKXHAlkmj+SoCXFprBj
GrSfgJZLMnMezyAUUhMY2QMHrVrm/igvZLSN63Q7ZWBWxK0WUGvqYH/blpqKhG/4J8FKam64jClq
HXWHNX3l7VTmrFjZb/PTnk5lutPBazALpZDqpjEcYn7eTn7hX1P+GoLobob8AFBLAwQKAAAAAACq
mbdOAAAAAAAAAAAAAAAAMAAcAGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVsZS1uYW1lLW51bGwt
YWN0dWFsLnR4dFVUCQADP1PnXD9T51x1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAqpm3TnvwDq7W
AAAAbwEAADIAHABhbmltYXRpb25zL0NTU0tleWZyYW1lc1J1bGUtbmFtZS1udWxsLWV4cGVjdGVk
LnR4dFVUCQADP1PnXD9T51x1eAsAAQT1AQAABBQAAAB1ULtOxDAQ7P0VI9coEh9AcTqlQIAuOqeP
TLIBC58deW0F/z1rdBS8mil2Z2ZndiTOjPxqswBhs8leKFNi2ES42LDYHFOFCzga80B1bQQ+F084
DPedUqcALvNMzDeosWB33oOJYAWTI0ZcoYeDMRqiZPtCwlyj93GnBc8VeuzNiOPpaXjsx16Lp2p0
vH1d66ZpSzHHaYLjXzm6z12uG/2UBcGm0Fla3uo/13cIRQIvbkGI7Qkp7qD3mbbsYuj+tWyqq+O1
/iqTOtjE0koYORVS6ls1pT4AUEsDBAoAAAAAAM6Zt04AAAAAAAAAAAAAAAAxABwAYW5pbWF0aW9u
cy9DU1NLZXlmcmFtZXNSdWxlLXBhcmFtZXRlcnMtYWN0dWFsLnR4dFVUCQADhFPnXIRT51x1eAsA
AQT1AQAABBQAAABQSwMEFAACAAgAzpm3Trp4zjzuAAAAMAIAADMAHABhbmltYXRpb25zL0NTU0tl
eWZyYW1lc1J1bGUtcGFyYW1ldGVycy1leHBlY3RlZC50eHRVVAkAA4RT51yEU+dcdXgLAAEE9QEA
AAQUAAAArVHLTsQwDLznK6yeQEL9AG6rVQ+Ix1a09yq0bjciTSLbUcnf4yI4sBzZiy+eGc94emRh
kLMVHQjJkl1RkBgsIaw2TFYiFXABjl33iGXeAfyaPcKhfaiNOQXgPI7IfAclZtic98CIYHWSQ4Y4
Q9Ueuq4CZbJdUJFz9D5uOMFbgapvuh6Op+f2qembSjXNDof3n2v1MCSKEocBHP/xUX/tpCS8pLmg
DmTH3NxqPMIN8GPEJC4G6JXQEEW6h5cogCHm5aypl7xiEK4vxWxKGKYriU3o9ctXEpvdP3199zdn
70tribUW/bNQRmN+dWPMJ1BLAwQKAAAAAADWmbdOAAAAAAAAAAAAAAAAGwAcAGFuaW1hdGlvbnMv
Zm9udC12YXJpYXRpb25zL1VUCQADk1PnXMZT51x1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAqpm3
TgAAAAAAAAAAAAAAADIAHABhbmltYXRpb25zL2ZvbnQtdmFyaWF0aW9ucy9mb250LXN0cmV0Y2gt
YWN0dWFsLnR4dFVUCQADP1PnXD9T51x1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAqpm3Tv7B9Yhr
AAAAAgEAADQAHABhbmltYXRpb25zL2ZvbnQtdmFyaWF0aW9ucy9mb250LXN0cmV0Y2gtZXhwZWN0
ZWQudHh0VVQJAAM/U+dcP1PnXHV4CwABBPUBAAAEFAAAAJ3MvQ2DMBAG0N5TfHJPBEGEn44uJZIn
IOgISLbP8p2UsD0bUPAGeG/yns00OocCduWohWgmXTaLlDlR1gMrZ9gP/y3IU6ComBXloxHI/INw
IN32+MXiWQjKA6qmv5VWF+WrvVU+L8quNuYEUEsDBAoAAAAAANaZt04AAAAAAAAAAAAAAAAwABwA
YW5pbWF0aW9ucy9mb250LXZhcmlhdGlvbnMvZm9udC1zdHlsZS1hY3R1YWwudHh0VVQJAAOTU+dc
k1PnXHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADWmbdO9PzyD3QAAAAgAQAAMgAcAGFuaW1hdGlv
bnMvZm9udC12YXJpYXRpb25zL2ZvbnQtc3R5bGUtZXhwZWN0ZWQudHh0VVQJAAOTU+dck1PnXHV4
CwABBPUBAAAEFAAAAJ3MQQ6CMBAF0H1P8dM9jVKdhTt3Lkk4AZhBSYYOtmOE2+MNSHgHeA8WUdfc
2xYV/KDJqmKrsMecdeZsKwbN8L0uHiw8cTJ0hlO4FpTuh6IT23tMLzxFC8P0Bu1l/HwZsQ6RiA70
5/38EgMdy+v9nCjEP+c2UEsDBAoAAAAAANaZt04AAAAAAAAAAAAAAAAUABwAYXBwbGljYXRpb25t
YW5pZmVzdC9VVAkAA5NT51zGU+dcdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAAKqZt04AAAAAAAAA
AAAAAAAxABwAYXBwbGljYXRpb25tYW5pZmVzdC9kZXZlbG9wZXItd2FybmluZ3MtYWN0dWFsLnR4
dFVUCQADQFPnXEBT51x1eAsAAQT1AQAABBQAAABQSwMEFAACAAgAqpm3TtPLv6GEAAAA9QAAADMA
HABhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5ncy1leHBlY3RlZC50eHRVVAkA
A0BT51xAU+dcdXgLAAEE9QEAAAQUAAAAtc1BDoIwEEbhfU/xh709ADtCGjdVDODaTGTQJqUlnQLX
FxYmXsD1e8lXN9eusQYX03XV2ZS4URIXXqB59u5J2cWAiYIbWTIGXtnHmdNpoxT2TfS3lejfjJX8
wogjCsmU8mNJvoAThJhBR3UD7q3Vqv6XG2jiH1Jy2netKmva/lBElPoAUEsDBAoAAAAAANaZt04A
AAAAAAAAAAAAAAA4ABwAYXBwbGljYXRpb25tYW5pZmVzdC9kaXNwbGF5LW1vZGUtYmFkLW1hbmlm
ZXN0LWFjdHVhbC50eHRVVAkAA5NT51yTU+dcdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAIANaZt07J
diQfHwAAACcAAAA6ABwAYXBwbGljYXRpb25tYW5pZmVzdC9kaXNwbGF5LW1vZGUtYmFkLW1hbmlm
ZXN0LWV4cGVjdGVkLnR4dFVUCQADk1PnXJNT51x1eAsAAQT1AQAABBQAAADTSMksLshJrNTNzU9J
1VTQQOZaKSQV5ZcXpxZpcgEAUEsDBAoAAAAAAKqZt04AAAAAAAAAAAAAAAAHABwAY2FudmFzL1VU
CQADP1PnXMZT51x1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAqpm3TgAAAAAAAAAAAAAAAA4AHABj
YW52YXMvcGhpbGlwL1VUCQADP1PnXMZT51x1eAsAAQT1AQAABBQAAABQSwMECgAAAAAA1pm3TgAA
AAAAAAAAAAAAABQAHABjYW52YXMvcGhpbGlwL3Rlc3RzL1VUCQADk1PnXMZT51x1eAsAAQT1AQAA
BBQAAABQSwMECgAAAAAAqpm3TgAAAAAAAAAAAAAAADEAHABjYW52YXMvcGhpbGlwL3Rlc3RzLzJk
LmNhbnZhcy5yZWFkb25seS1hY3R1YWwudHh0VVQJAAM/U+dcP1PnXHV4CwABBPUBAAAEFAAAAFBL
AwQKAAIAAACqmbdOLTGxFQcAAAAHAAAAMwAcAGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuY2FudmFz
LnJlYWRvbmx5LWV4cGVjdGVkLnR4dFVUCQADP1PnXD9T51x1eAsAAQT1AQAABBQAAABQYXNzZWQK
UEsDBAoAAAAAANaZt04AAAAAAAAAAAAAAAAyABwAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52
YXMucmVmZXJlbmNlLWFjdHVhbC50eHRVVAkAA5NT51yTU+dcdXgLAAEE9QEAAAQUAAAAUEsDBAoA
AgAAANaZt04tMbEVBwAAAAcAAAA0ABwAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMucmVm
ZXJlbmNlLWV4cGVjdGVkLnR4dFVUCQADk1PnXJNT51x1eAsAAQT1AQAABBQAAABQYXNzZWQKUEsD
BAoAAAAAANaZt04AAAAAAAAAAAAAAAAMABwAY29tcG9zaXRpbmcvVVQJAAOTU+dcxlPnXHV4CwAB
BPUBAAAEFAAAAFBLAwQKAAAAAACqmbdOAAAAAAAAAAAAAAAAOAAcAGNvbXBvc2l0aW5nL2Fic29s
dXRlLWluc2lkZS1vdXQtb2Ytdmlldy1maXhlZC1hY3R1YWwudHh0VVQJAAM/U+dcP1PnXHV4CwAB
BPUBAAAEFAAAAFBLAwQUAAIACACqmbdOUFnLTpMAAABYAQAAOgAcAGNvbXBvc2l0aW5nL2Fic29s
dXRlLWluc2lkZS1vdXQtb2Ytdmlldy1maXhlZC1leHBlY3RlZC50eHRVVAkAAz9T51w/U+dcdXgL
AAEE9QEAAAQUAAAAdY5BDsIgEEX3nGKWZWOgptG9CzcmngGBBBIzINA03t4CNlITNjPMfzOfP1yD
8MbKeBNvHQjAIFAaF4AdGCuFZvHhZlQRTucpy+PEjxuRxj5V0Ah8ndb536+I3fNCpcOkMcW7F69Z
A/+BvXfXvwDvok3WYU0+MtZ80YbghXzbbqGXo0AVxBIvdaNF26v2XCmhhHwAUEsDBAoAAAAAANaZ
t04AAAAAAAAAAAAAAABEABwAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRpb24tY2hhbmdlZC1p
bi1jb21wb3NpdGVkLWxheWVyLWFjdHVhbC50eHRVVAkAA5NT51yTU+dcdXgLAAEE9QEAAAQUAAAA
UEsDBAoAAgAAANaZt06TBtcyAQAAAAEAAABGABwAY29tcG9zaXRpbmcvYWJzb2x1dGUtcG9zaXRp
b24tY2hhbmdlZC1pbi1jb21wb3NpdGVkLWxheWVyLWV4cGVjdGVkLnR4dFVUCQADk1PnXJNT51x1
eAsAAQT1AQAABBQAAAAKUEsDBAoAAAAAANaZt04AAAAAAAAAAAAAAAAWABwAY29tcG9zaXRpbmcv
YW5pbWF0aW9uL1VUCQADk1PnXMZT51x1eAsAAQT1AQAABBQAAABQSwMECgAAAAAAqpm3TgAAAAAA
AAAAAAAAAEIAHABjb21wb3NpdGluZy9hbmltYXRpb24vYW5pbWF0ZWQtY29tcG9zaXRlZC1pbnNp
ZGUtaGlkZGVuLWFjdHVhbC50eHRVVAkAAz9T51w/U+dcdXgLAAEE9QEAAAQUAAAAUEsDBBQAAgAI
AKqZt07qB7rUkwAAANAAAABEABwAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGVkLWNvbXBv
c2l0ZWQtaW5zaWRlLWhpZGRlbi1leHBlY3RlZC50eHRVVAkAAz9T51w/U+dcdXgLAAEE9QEAAAQU
AAAARY6xCoNAEET7+4rBXjFFGrv8QcD8wOqtccl5K7dLgn+fs0lgmoGZx3uwucFXcphTcclPUK6R
jVw0Q88CTrxxdkg2iQzCW0wmSeLHsEqM/J9EZUNWx5R0fiGRc4EXqs8TaF0I99s4okWTePEGe9Gd
ix9YtKD5L1uvblyaH7k69t3VYPSB6ca+nrZzUmO4Drj0IXwBUEsDBAoAAAAAANaZt04AAAAAAAAA
AAAAAAAyABwAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGlvbi1iYWNraW5nLWFjdHVhbC50
eHRVVAkAA5NT51yTU+dcdXgLAAEE9QEAAAQUAAAAUEsDBAoAAgAAANaZt05jDZpdKQAAACkAAAA0
ABwAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGlvbi1iYWNraW5nLWV4cGVjdGVkLnR4dFVU
CQADk1PnXJNT51x1eAsAAQT1AQAABBQAAABTYXcgbGF5ZXIgZmx1c2hlcyBkdXJpbmcgYW5pbWF0
aW9uOiBQQVNTClBLAwQKAAAAAADWmbdOAAAAAAAAAAAAAAAAIAAcAGNvbXBvc2l0aW5nL2JhY2tm
YWNlLXZpc2liaWxpdHkvVVQJAAOTU+dcxlPnXHV4CwABBPUBAAAEFAAAAFBLAwQKAAAAAACqmbdO
AAAAAAAAAAAAAAAAQQAcAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2Ut
dmlzaWJpbGl0eS0zZC1hY3R1YWwudHh0VVQJAANAU+dcQFPnXHV4CwABBPUBAAAEFAAAAFBLAwQU
AAIACACqmbdOoNCtTCYAAAApAAAAQwAcAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZpc2liaWxpdHkv
YmFja2ZhY2UtdmlzaWJpbGl0eS0zZC1leHBlY3RlZC50eHRVVAkAA0BT51xAU+dcdXgLAAEE9QEA
AAQUAAAAC8nILFYoSS0uUQDS+Xk5lQqlxalppTkKicUKiQoFmRWpOWBpLgBQSwMECgAAAAAA1pm3
TgAAAAAAAAAAAAAAAFUAHABjb21wb3NpdGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNl
LXZpc2liaWxpdHktaGllcmFyY2hpY2FsLXRyYW5zZm9ybS1hY3R1YWwudHh0VVQJAAOTU+dck1Pn
XHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACADWmbdOoNCtTCYAAAApAAAAVwAcAGNvbXBvc2l0aW5n
L2JhY2tmYWNlLXZpc2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1oaWVyYXJjaGljYWwtdHJh
bnNmb3JtLWV4cGVjdGVkLnR4dFVUCQADk1PnXJNT51x1eAsAAQT1AQAABBQAAAALycgsVihJLS5R
ANL5eTmVCqXFqWmlOQqJxQqJCgWZFak5YGkuAFBLAwQKAAAAAADWmbdOAAAAAAAAAAAAAAAAFAAc
AGNvbXBvc2l0aW5nL2JhY2tpbmcvVVQJAAOTU+dcxlPnXHV4CwABBPUBAAAEFAAAAFBLAwQKAAAA
AADWmbdOAAAAAAAAAAAAAAAAMAAcAGNvbXBvc2l0aW5nL2JhY2tpbmcvYW5pbWF0ZS1pbnRvLXZp
ZXctYWN0dWFsLnR4dFVUCQADk1PnXJNT51x1eAsAAQT1AQAABBQAAABQSwMEFAACAAgA1pm3ThOf
InnkAAAAJgIAADIAHABjb21wb3NpdGluZy9iYWNraW5nL2FuaW1hdGUtaW50by12aWV3LWV4cGVj
dGVkLnR4dFVUCQADk1PnXJNT51x1eAsAAQT1AQAABBQAAACNUbGOwjAM3fMVHulA1RQZjvHEwHLS
DceGGEIaaHSQ9JIgxN/TONACukosjv2e7Wc7KzZaOtHUWvovcVGOAYyEkbV1UORFQSaL4NaeTOVh
zssI4wd2hJC/2ux/gnXqMwQha1UBJ0rW+lA5ZYC3URu/KhE41JhIaU1QJvjvRvydVGqbqgZVU92z
8qA6EY31OmhrAItJnKGcPoxAGd1FMF4EyyfytgCne034a23lxNkv0h79hG8sQSnBCeN31h1hzaP6
uPsVMhtY33z8F20Nf0DHOMW8RJjlM+zZTa9499IbbcYyxq5QSwMECgAAAAAAqpm3TgAAAAAAAAAA
AAAAAEAAHABjb21wb3NpdGluZy9iYWNraW5nL2FuaW1hdGUtaW50by12aWV3LXdpdGgtZGVzY2Vu
ZGFudC1hY3R1YWwudHh0VVQJAAM/U+dcP1PnXHV4CwABBPUBAAAEFAAAAFBLAwQUAAIACACqmbdO
k2otWfsAAADDAgAAQgAcAGNvbXBvc2l0aW5nL2JhY2tpbmcvYW5pbWF0ZS1pbnRvLXZpZXctd2l0
aC1kZXNjZW5kYW50LWV4cGVjdGVkLnR4dFVUCQADP1PnXD9T51x1eAsAAQT1AQAABBQAAACNUbFO
wzAQ3f0VNzZDI9vVpTAiBhYkBtiqDsYxxALsYLtC/D3JuaRJaCqW8917Z7+n5ye2uguqbayO9+rb
BAawUk43PgAvOadS9OCzP7g6wrWQPYxXOBBKv1n3+ph8MDcpKd2YGgRRurHvdTAORDd181yJwKWH
idTeJeNSfGjV58HkZ/OtRdV8b6q8qE5E66NN1jtAvuk9VNXIwtijpEgk/0NfNEMrKSgXX3z4gJ0o
kcN6SJfKHnbHHs+iXREjdI0VlhJhW27xxO4nimciuBgDkcPXkw2UxXzhmIQg0Y2YJUErdVBf8TZ/
3DSFf4YFMJ5O/W+Xz74WrGDsB1BLAwQKAAAAAADVmbdOAAAAAAAAAAAAAAAAEwAcAGNvbXBvc2l0
aW5nL2NhbnZhcy9VVAkAA5FT51zGU+dcdXgLAAEE9QEAAAQUAAAAUEsDBAoAAAAAANWZt04AAAAA
AAAAAAAAAABHABwAY29tcG9zaXRpbmcvY2FudmFzL2FjY2VsZXJhdGVkLWNhbnZhcy1jb21wb3Np
dGluZy1zaXplLWxpbWl0LWFjdHVhbC50eHRVVAkAA5FT51yRU+dcdXgLAAEE9QEAAAQUAAAAUEsD
BBQAAgAIANWZt07jl3D/EAEAACcDAABJABwAY29tcG9zaXRpbmcvY2FudmFzL2FjY2VsZXJhdGVk
LWNhbnZhcy1jb21wb3NpdGluZy1zaXplLWxpbWl0LWV4cGVjdGVkLnR4dFVUCQADkVPnXJFT51x1
eAsAAQT1AQAABBQAAAC9kLFuwyAQhnee4rbGSwSkTt25kbJE6lJ1J3ANqBa4gJv27Qs4llNXHipV
XeDu/4+7j3tGb14MBohaROA7kMK+i5CEs4katDlp9Nm0UDNOP3jTUPAYXNtH4ywoZ28iSI8iIggp
sUWfQgVHIV+NPUGILpWvCQGy2nvRaSPDQXyiJwArYaV2Huia0nJUWTy63qoANadN1rfsjo2W1KZV
Hi2wlKV83rCIy++LLZ2NaGN47MRbj8AmY2y+uSgLA4rRuWDKAsqMml5N+AbBePbT1uYFyotzeBhY
JohiTWsMu1SVt3hVUP2abnPLl/Hohe/HD/qQBj+ZFlVpP2P8T3zOt0v8nA789/SP+MdouPNZkYqQ
L1BLAwQUAAIACADZmbdOzNEcbPcCAACUCQAADQAcAGVycm9yX2xvZy50eHRVVAkAA5lT51y5Uudc
dXgLAAEE9QEAAAQUAAAAvVXbTttAEH3vV0zzAkiNb3FIbAlVEGiJGigioTxECG3sAS94d63ddQN/
37HDJVwCiahQHhLtzp5zMmcu41FWwgG7haAFfhT7fuy1nKjr+UEAgedHZzA2Jo+nTEv6WfAUgk4U
hWewvU+33mYMftBxPPr4cRi2Yg8M6r+oIUFt+QVPmEXgBhj0tp+cre8ww5OeksZqxqU1cRWxtQWj
45M9+Pp948t4gbS2Fy4jLVpKWqrQwOHvEXCZ5GWKwCT0d2Ga8SQDwWyS0b3N8P6tZAJfUxY6XtT2
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
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA15m3Tg3Y7QO/BAAAxxUAABwAGAAAAAAAAQAAAKSBblEA
ADI4NDc1LXB5dGhvbl9zdGFja190cmFjZS50eHRVVAUAA5ZT51x1eAsAAQT1AQAABBQAAABQSwEC
HgMUAAIACADXmbdOYf5fEcEEAADTFQAAHAAYAAAAAAABAAAApIGDVgAAMjg0NzctcHl0aG9uX3N0
YWNrX3RyYWNlLnR4dFVUBQADllPnXHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKqZt07YpTsc
YksAAJQDAQAhABgAAAAAAAEAAACkgZpbAABXZWJLaXRUZXN0UnVubmVyLTI4NDMyLXNhbXBsZS50
eHRVVAUAAz9T51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACqmbdOEvCPaWNLAACUAwEAIQAY
AAAAAAABAAAApIFXpwAAV2ViS2l0VGVzdFJ1bm5lci0yODQzNC1zYW1wbGUudHh0VVQFAAM/U+dc
dXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqpm3TuN6jcNhSwAAlAMBACEAGAAAAAAAAQAAAKSB
FfMAAFdlYktpdFRlc3RSdW5uZXItMjg0MzYtc2FtcGxlLnR4dFVUBQADP1PnXHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIAKqZt04LJScCY0sAAJQDAQAhABgAAAAAAAEAAACkgdE+AQBXZWJLaXRU
ZXN0UnVubmVyLTI4NDM4LXNhbXBsZS50eHRVVAUAAz9T51x1eAsAAQT1AQAABBQAAABQSwECHgMU
AAIACACqmbdO3NnaIl9LAACUAwEAIQAYAAAAAAABAAAApIGPigEAV2ViS2l0VGVzdFJ1bm5lci0y
ODQ0MC1zYW1wbGUudHh0VVQFAAM/U+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqpm3TrIU
nz1gSwAAlAMBACEAGAAAAAAAAQAAAKSBSdYBAFdlYktpdFRlc3RSdW5uZXItMjg0NDItc2FtcGxl
LnR4dFVUBQADQFPnXHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKqZt06X5klcYksAAJQDAQAh
ABgAAAAAAAEAAACkgQQiAgBXZWJLaXRUZXN0UnVubmVyLTI4NDQ2LXNhbXBsZS50eHRVVAUAAz9T
51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACqmbdOJXr33F5LAACUAwEAIQAYAAAAAAABAAAA
pIHBbQIAV2ViS2l0VGVzdFJ1bm5lci0yODQ1Mi1zYW1wbGUudHh0VVQFAAM/U+dcdXgLAAEE9QEA
AAQUAAAAUEsBAh4DFAACAAgAqpm3TvgX5VFgSwAAlAMBACEAGAAAAAAAAQAAAKSBerkCAFdlYktp
dFRlc3RSdW5uZXItMjg0NTYtc2FtcGxlLnR4dFVUBQADP1PnXHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAKqZt05JrM3PX0sAAJQDAQAhABgAAAAAAAEAAACkgTUFAwBXZWJLaXRUZXN0UnVubmVy
LTI4NDU5LXNhbXBsZS50eHRVVAUAAz9T51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACqmbdO
F6Kg0GhLAACUAwEAIQAYAAAAAAABAAAApIHvUAMAV2ViS2l0VGVzdFJ1bm5lci0yODQ2Mi1zYW1w
bGUudHh0VVQFAAM/U+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqpm3TrOhF09jSwAAlAMB
ACEAGAAAAAAAAQAAAKSBspwDAFdlYktpdFRlc3RSdW5uZXItMjg0NjQtc2FtcGxlLnR4dFVUBQAD
P1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKqZt047Vf8YZ0sAAJQDAQAhABgAAAAAAAEA
AACkgXDoAwBXZWJLaXRUZXN0UnVubmVyLTI4NDY4LXNhbXBsZS50eHRVVAUAAz9T51x1eAsAAQT1
AQAABBQAAABQSwECHgMUAAIACACqmbdOenUsYl5LAACUAwEAIQAYAAAAAAABAAAApIEyNAQAV2Vi
S2l0VGVzdFJ1bm5lci0yODQ3MC1zYW1wbGUudHh0VVQFAAM/U+dcdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DFAACAAgAqpm3Tv5jZWxjSwAAlAMBACEAGAAAAAAAAQAAAKSB638EAFdlYktpdFRlc3RSdW5u
ZXItMjg0NzItc2FtcGxlLnR4dFVUBQADQFPnXHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKqZ
t06U9ojyY0sAAJQDAQAhABgAAAAAAAEAAACkganLBABXZWJLaXRUZXN0UnVubmVyLTI4NDc0LXNh
bXBsZS50eHRVVAUAAz9T51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACqmbdO/getwF5LAACU
AwEAIQAYAAAAAAABAAAApIFnFwUAV2ViS2l0VGVzdFJ1bm5lci0yODQ3Ni1zYW1wbGUudHh0VVQF
AAM/U+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqpm3TpMcEk1lSwAAlAMBACEAGAAAAAAA
AQAAAKSBIGMFAFdlYktpdFRlc3RSdW5uZXItMjg0Nzgtc2FtcGxlLnR4dFVUBQADP1PnXHV4CwAB
BPUBAAAEFAAAAFBLAQIeAxQAAgAIAM6Zt0447ga2YksAAJQDAQAhABgAAAAAAAEAAACkgeCuBQBX
ZWJLaXRUZXN0UnVubmVyLTI4NjE4LXNhbXBsZS50eHRVVAUAA4RT51x1eAsAAQT1AQAABBQAAABQ
SwECHgMUAAIACADSmbdO7rfCeWVLAACUAwEAIQAYAAAAAAABAAAApIGd+gUAV2ViS2l0VGVzdFJ1
bm5lci0yODYyMC1zYW1wbGUudHh0VVQFAAOLU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
1Jm3Tk5Ji1xgSwAAlAMBACEAGAAAAAAAAQAAAKSBXUYGAFdlYktpdFRlc3RSdW5uZXItMjg2MjEt
c2FtcGxlLnR4dFVUBQADj1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANSZt05IpbM3a0sA
AJQDAQAhABgAAAAAAAEAAACkgRiSBgBXZWJLaXRUZXN0UnVubmVyLTI4NjIyLXNhbXBsZS50eHRV
VAUAA49T51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADVmbdO+d/lfGVLAACUAwEAIQAYAAAA
AAABAAAApIHe3QYAV2ViS2l0VGVzdFJ1bm5lci0yODYyMy1zYW1wbGUudHh0VVQFAAORU+dcdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1pm3ThNUJnVoSwAAlAMBACEAGAAAAAAAAQAAAKSBnikH
AFdlYktpdFRlc3RSdW5uZXItMjg2MjQtc2FtcGxlLnR4dFVUBQADk1PnXHV4CwABBPUBAAAEFAAA
AFBLAQIeAxQAAgAIANaZt05ingOwXksAAJQDAQAhABgAAAAAAAEAAACkgWF1BwBXZWJLaXRUZXN0
UnVubmVyLTI4NjI1LXNhbXBsZS50eHRVVAUAA5NT51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CADWmbdO/JWnn1lLAACUAwEAIQAYAAAAAAABAAAApIEawQcAV2ViS2l0VGVzdFJ1bm5lci0yODYy
Ni1zYW1wbGUudHh0VVQFAAOTU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1pm3Tu+1MrVi
SwAAlAMBACEAGAAAAAAAAQAAAKSBzgwIAFdlYktpdFRlc3RSdW5uZXItMjg2Mjctc2FtcGxlLnR4
dFVUBQADk1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANaZt075Z36zYEsAAJQDAQAhABgA
AAAAAAEAAACkgYtYCABXZWJLaXRUZXN0UnVubmVyLTI4NjI4LXNhbXBsZS50eHRVVAUAA5NT51x1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADWmbdO4FxREmJLAACUAwEAIQAYAAAAAAABAAAApIFG
pAgAV2ViS2l0VGVzdFJ1bm5lci0yODYyOS1zYW1wbGUudHh0VVQFAAOTU+dcdXgLAAEE9QEAAAQU
AAAAUEsBAh4DFAACAAgA1pm3TmzsMDNeSwAAlAMBACEAGAAAAAAAAQAAAKSBA/AIAFdlYktpdFRl
c3RSdW5uZXItMjg2MzAtc2FtcGxlLnR4dFVUBQADk1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIANaZt07Z3oSaYksAAJQDAQAhABgAAAAAAAEAAACkgbw7CQBXZWJLaXRUZXN0UnVubmVyLTI4
NjMxLXNhbXBsZS50eHRVVAUAA5NT51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADWmbdOIdmy
jltLAACUAwEAIQAYAAAAAAABAAAApIF5hwkAV2ViS2l0VGVzdFJ1bm5lci0yODYzMi1zYW1wbGUu
dHh0VVQFAAOTU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1pm3TgPJKBZnSwAAlAMBACEA
GAAAAAAAAQAAAKSBL9MJAFdlYktpdFRlc3RSdW5uZXItMjg2MzMtc2FtcGxlLnR4dFVUBQADk1Pn
XHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANaZt05ysdJeX0sAAJQDAQAhABgAAAAAAAEAAACk
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
VAUAA0BT51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADWmbdOAAAAAAAAAAAAAAAAQwAYAAAA
AAAAAAAApIGKPQsAYWNjZXNzaWJpbGl0eS9hY2Nlc3NpYmlsaXR5LWNyYXNoLWZvY3VzZWQtZWxl
bWVudC1jaGFuZ2UtYWN0dWFsLnR4dFVUBQADk1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAA
ANaZt04VrnsBFAAAABQAAABFABgAAAAAAAEAAACkgQc+CwBhY2Nlc3NpYmlsaXR5L2FjY2Vzc2li
aWxpdHktY3Jhc2gtZm9jdXNlZC1lbGVtZW50LWNoYW5nZS1leHBlY3RlZC50eHRVVAUAA5NT51x1
eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADWmbdOAAAAAAAAAAAAAAAAEgAYAAAAAAAAABAA7UGa
PgsAYWNjZXNzaWJpbGl0eS9tYWMvVVQFAAOTU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
qpm3TgAAAAAAAAAAAAAAAC4AGAAAAAAAAAAAAKSB5j4LAGFjY2Vzc2liaWxpdHkvbWFjL2FiYnIt
YWNyb255bS10YWdzLWFjdHVhbC50eHRVVAUAAz9T51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIA
CACqmbdO1QKC3zsBAADGAgAAMAAYAAAAAAABAAAApIFOPwsAYWNjZXNzaWJpbGl0eS9tYWMvYWJi
ci1hY3JvbnltLXRhZ3MtZXhwZWN0ZWQudHh0VVQFAAM/U+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4D
CgAAAAAA1pm3TgAAAAAAAAAAAAAAAD8AGAAAAAAAAAAAAKSB80ALAGFjY2Vzc2liaWxpdHkvbWFj
L2FjY2Vzc2liaWxpdHktbWFrZS1maXJzdC1yZXNwb25kZXItYWN0dWFsLnR4dFVUBQADk1PnXHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIANaZt04ABF8cxQAAADoBAABBABgAAAAAAAEAAACkgWxB
CwBhY2Nlc3NpYmlsaXR5L21hYy9hY2Nlc3NpYmlsaXR5LW1ha2UtZmlyc3QtcmVzcG9uZGVyLWV4
cGVjdGVkLnR4dFVUBQADk1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANaZt04AAAAAAAAA
AAAAAAAkABgAAAAAAAAAEADtQaxCCwBhY2Nlc3NpYmlsaXR5L21hYy9hdHRyaWJ1dGVkLXN0cmlu
Zy9VVAUAA5NT51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqmbdOAAAAAAAAAAAAAAAAbgAY
AAAAAAAAAAAApIEKQwsAYWNjZXNzaWJpbGl0eS9tYWMvYXR0cmlidXRlZC1zdHJpbmcvYXR0cmli
dXRlZC1zdHJpbmctZG9lcy1ub3QtaW5jbHVkZXMtbWlzc3BlbGxlZC1mb3Itbm9uLWVkaXRhYmxl
LWFjdHVhbC50eHRVVAUAAz9T51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACqmbdO2yjSqv4A
AAACAgAAcAAYAAAAAAABAAAApIGyQwsAYWNjZXNzaWJpbGl0eS9tYWMvYXR0cmlidXRlZC1zdHJp
bmcvYXR0cmlidXRlZC1zdHJpbmctZG9lcy1ub3QtaW5jbHVkZXMtbWlzc3BlbGxlZC1mb3Itbm9u
LWVkaXRhYmxlLWV4cGVjdGVkLnR4dFVUBQADP1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAA
ANaZt04AAAAAAAAAAAAAAABXABgAAAAAAAAAAACkgVpFCwBhY2Nlc3NpYmlsaXR5L21hYy9hdHRy
aWJ1dGVkLXN0cmluZy9hdHRyaWJ1dGVkLXN0cmluZy1mb3ItcmFuZ2Utd2l0aC1vcHRpb25zLWFj
dHVhbC50eHRVVAUAA5NT51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADWmbdOqubIvtAAAABI
AQAAWQAYAAAAAAABAAAApIHrRQsAYWNjZXNzaWJpbGl0eS9tYWMvYXR0cmlidXRlZC1zdHJpbmcv
YXR0cmlidXRlZC1zdHJpbmctZm9yLXJhbmdlLXdpdGgtb3B0aW9ucy1leHBlY3RlZC50eHRVVAUA
A5NT51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqmbdOAAAAAAAAAAAAAAAAHgAYAAAAAAAA
ABAA7UFORwsAYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXRleHQvVVQFAAM/U+dcdXgLAAEE9QEA
AAQUAAAAUEsBAh4DCgAAAAAAqpm3TgAAAAAAAAAAAAAAADQAGAAAAAAAAAAAAKSBpkcLAGFjY2Vz
c2liaWxpdHkvbWFjL3NlYXJjaC10ZXh0L3NlYXJjaC10ZXh0LWFjdHVhbC50eHRVVAUAAz9T51x1
eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACqmbdO4uLsCkwBAABABQAANgAYAAAAAAABAAAApIEU
SAsAYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXRleHQvc2VhcmNoLXRleHQtZXhwZWN0ZWQudHh0
VVQFAAM/U+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA1Jm3TgAAAAAAAAAAAAAAAB4AGAAA
AAAAAAAQAO1B0EkLAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10ZXh0L1VUBQADj1PnXHV4CwAB
BPUBAAAEFAAAAFBLAQIeAwoAAAAAAKqZt04AAAAAAAAAAAAAAAA2ABgAAAAAAAAAAACkgShKCwBh
Y2Nlc3NpYmlsaXR5L21hYy9zZWxlY3QtdGV4dC9zZWxlY3QtdGV4dC0xLWFjdHVhbC50eHRVVAUA
Az9T51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACqmbdOgyaMK9gAAACSAQAAOAAYAAAAAAAB
AAAApIGYSgsAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0LXRleHQtMS1leHBl
Y3RlZC50eHRVVAUAAz9T51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADUmbdOAAAAAAAAAAAA
AAAANgAYAAAAAAAAAAAApIHiSwsAYWNjZXNzaWJpbGl0eS9tYWMvc2VsZWN0LXRleHQvc2VsZWN0
LXRleHQtMi1hY3R1YWwudHh0VVQFAAOPU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1Jm3
TiPRTT7YAAAAkgEAADgAGAAAAAAAAQAAAKSBUkwLAGFjY2Vzc2liaWxpdHkvbWFjL3NlbGVjdC10
ZXh0L3NlbGVjdC10ZXh0LTItZXhwZWN0ZWQudHh0VVQFAAOPU+dcdXgLAAEE9QEAAAQUAAAAUEsB
Ah4DCgAAAAAA1pm3TgAAAAAAAAAAAAAAAB8AGAAAAAAAAAAQAO1BnE0LAGFjY2Vzc2liaWxpdHkv
bWFjL3ZhbHVlLWNoYW5nZS9VVAUAA5NT51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqmbdO
AAAAAAAAAAAAAAAASQAYAAAAAAAAAAAApIH1TQsAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hh
bmdlL3ZhbHVlLWNoYW5nZS11c2VyLWluZm8tdGV4dGFyZWEtYWN0dWFsLnR4dFVUBQADQFPnXHV4
CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKqZt0795g12KgEAABwLAABLABgAAAAAAAEAAACkgXhO
CwBhY2Nlc3NpYmlsaXR5L21hYy92YWx1ZS1jaGFuZ2UvdmFsdWUtY2hhbmdlLXVzZXItaW5mby10
ZXh0YXJlYS1leHBlY3RlZC50eHRVVAUAA0BT51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADW
mbdOAAAAAAAAAAAAAAAASgAYAAAAAAAAAAAApIEnUAsAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUt
Y2hhbmdlL3ZhbHVlLWNoYW5nZS11c2VyLWluZm8tdGV4dGZpZWxkLWFjdHVhbC50eHRVVAUAA5NT
51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADWmbdOtxCiGycBAAC2CQAATAAYAAAAAAABAAAA
pIGrUAsAYWNjZXNzaWJpbGl0eS9tYWMvdmFsdWUtY2hhbmdlL3ZhbHVlLWNoYW5nZS11c2VyLWlu
Zm8tdGV4dGZpZWxkLWV4cGVjdGVkLnR4dFVUBQADk1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoA
AAAAANSZt04AAAAAAAAAAAAAAAAaABgAAAAAAAAAEADtQVhSCwBhY2Nlc3NpYmlsaXR5L3RleHQt
bWFya2VyL1VUBQADj1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKqZt04AAAAAAAAAAAAA
AABWABgAAAAAAAAAAACkgaxSCwBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL2NoYXJhY3Rlci1v
ZmZzZXQtdmlzaWJsZS1wb3NpdGlvbi1jb252ZXJzaW9uLWhhbmctYWN0dWFsLnR4dFVUBQADP1Pn
XHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKqZt04RCtsrqwAAAOIAAABYABgAAAAAAAEAAACk
gTxTCwBhY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL2NoYXJhY3Rlci1vZmZzZXQtdmlzaWJsZS1w
b3NpdGlvbi1jb252ZXJzaW9uLWhhbmctZXhwZWN0ZWQudHh0VVQFAAM/U+dcdXgLAAEE9QEAAAQU
AAAAUEsBAh4DCgAAAAAA1Jm3TgAAAAAAAAAAAAAAAD4AGAAAAAAAAAAAAKSBeVQLAGFjY2Vzc2li
aWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1hY3R1YWwudHh0VVQF
AAOPU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA1Jm3TjjjDd/uAQAA2QgAAEAAGAAAAAAA
AQAAAKSB8VQLAGFjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMt
bmV4dC1leHBlY3RlZC50eHRVVAUAA49T51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADOmbdO
AAAAAAAAAAAAAAAACwAYAAAAAAAAABAA7UFZVwsAYW5pbWF0aW9ucy9VVAUAA4RT51x1eAsAAQT1
AQAABBQAAABQSwECHgMKAAAAAADSmbdOAAAAAAAAAAAAAAAADgAYAAAAAAAAABAA7UGeVwsAYW5p
bWF0aW9ucy8zZC9VVAUAA4tT51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqmbdOAAAAAAAA
AAAAAAAANgAYAAAAAAAAAAAApIHmVwsAYW5pbWF0aW9ucy8zZC9jaGFuZ2UtdHJhbnNmb3JtLWlu
LWVuZC1ldmVudC1hY3R1YWwudHh0VVQFAAM/U+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
qpm3TiwxRuMvAQAA8gIAADgAGAAAAAAAAQAAAKSBVlgLAGFuaW1hdGlvbnMvM2QvY2hhbmdlLXRy
YW5zZm9ybS1pbi1lbmQtZXZlbnQtZXhwZWN0ZWQudHh0VVQFAAM/U+dcdXgLAAEE9QEAAAQUAAAA
UEsBAh4DCgAAAAAA0pm3TgAAAAAAAAAAAAAAADgAGAAAAAAAAAAAAKSB91kLAGFuaW1hdGlvbnMv
M2QvbWF0cml4LXRyYW5zZm9ybS10eXBlLWFuaW1hdGlvbi1hY3R1YWwudHh0VVQFAAOLU+dcdXgL
AAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA0pm3TgMqG341AQAA6AIAADoAGAAAAAAAAQAAAKSBaVoL
AGFuaW1hdGlvbnMvM2QvbWF0cml4LXRyYW5zZm9ybS10eXBlLWFuaW1hdGlvbi1leHBlY3RlZC50
eHRVVAUAA4tT51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqmbdOAAAAAAAAAAAAAAAAMAAY
AAAAAAAAAAAApIESXAsAYW5pbWF0aW9ucy9DU1NLZXlmcmFtZXNSdWxlLW5hbWUtbnVsbC1hY3R1
YWwudHh0VVQFAAM/U+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqpm3TnvwDq7WAAAAbwEA
ADIAGAAAAAAAAQAAAKSBfFwLAGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVsZS1uYW1lLW51bGwt
ZXhwZWN0ZWQudHh0VVQFAAM/U+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAzpm3TgAAAAAA
AAAAAAAAADEAGAAAAAAAAAAAAKSBvl0LAGFuaW1hdGlvbnMvQ1NTS2V5ZnJhbWVzUnVsZS1wYXJh
bWV0ZXJzLWFjdHVhbC50eHRVVAUAA4RT51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACADOmbdO
unjOPO4AAAAwAgAAMwAYAAAAAAABAAAApIEpXgsAYW5pbWF0aW9ucy9DU1NLZXlmcmFtZXNSdWxl
LXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0VVQFAAOEU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAA1pm3TgAAAAAAAAAAAAAAABsAGAAAAAAAAAAQAO1BhF8LAGFuaW1hdGlvbnMvZm9udC12YXJp
YXRpb25zL1VUBQADk1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKqZt04AAAAAAAAAAAAA
AAAyABgAAAAAAAAAAACkgdlfCwBhbmltYXRpb25zL2ZvbnQtdmFyaWF0aW9ucy9mb250LXN0cmV0
Y2gtYWN0dWFsLnR4dFVUBQADP1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKqZt07+wfWI
awAAAAIBAAA0ABgAAAAAAAEAAACkgUVgCwBhbmltYXRpb25zL2ZvbnQtdmFyaWF0aW9ucy9mb250
LXN0cmV0Y2gtZXhwZWN0ZWQudHh0VVQFAAM/U+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA
1pm3TgAAAAAAAAAAAAAAADAAGAAAAAAAAAAAAKSBHmELAGFuaW1hdGlvbnMvZm9udC12YXJpYXRp
b25zL2ZvbnQtc3R5bGUtYWN0dWFsLnR4dFVUBQADk1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAxQA
AgAIANaZt070/PIPdAAAACABAAAyABgAAAAAAAEAAACkgYhhCwBhbmltYXRpb25zL2ZvbnQtdmFy
aWF0aW9ucy9mb250LXN0eWxlLWV4cGVjdGVkLnR4dFVUBQADk1PnXHV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAANaZt04AAAAAAAAAAAAAAAAUABgAAAAAAAAAEADtQWhiCwBhcHBsaWNhdGlvbm1h
bmlmZXN0L1VUBQADk1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAKqZt04AAAAAAAAAAAAA
AAAxABgAAAAAAAAAAACkgbZiCwBhcHBsaWNhdGlvbm1hbmlmZXN0L2RldmVsb3Blci13YXJuaW5n
cy1hY3R1YWwudHh0VVQFAANAU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgAqpm3TtPLv6GE
AAAA9QAAADMAGAAAAAAAAQAAAKSBIWMLAGFwcGxpY2F0aW9ubWFuaWZlc3QvZGV2ZWxvcGVyLXdh
cm5pbmdzLWV4cGVjdGVkLnR4dFVUBQADQFPnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANaZ
t04AAAAAAAAAAAAAAAA4ABgAAAAAAAAAAACkgRJkCwBhcHBsaWNhdGlvbm1hbmlmZXN0L2Rpc3Bs
YXktbW9kZS1iYWQtbWFuaWZlc3QtYWN0dWFsLnR4dFVUBQADk1PnXHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIANaZt07JdiQfHwAAACcAAAA6ABgAAAAAAAEAAACkgYRkCwBhcHBsaWNhdGlvbm1h
bmlmZXN0L2Rpc3BsYXktbW9kZS1iYWQtbWFuaWZlc3QtZXhwZWN0ZWQudHh0VVQFAAOTU+dcdXgL
AAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAAqpm3TgAAAAAAAAAAAAAAAAcAGAAAAAAAAAAQAO1BF2UL
AGNhbnZhcy9VVAUAAz9T51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqmbdOAAAAAAAAAAAA
AAAADgAYAAAAAAAAABAA7UFYZQsAY2FudmFzL3BoaWxpcC9VVAUAAz9T51x1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAADWmbdOAAAAAAAAAAAAAAAAFAAYAAAAAAAAABAA7UGgZQsAY2FudmFzL3Bo
aWxpcC90ZXN0cy9VVAUAA5NT51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqmbdOAAAAAAAA
AAAAAAAAMQAYAAAAAAAAAAAApIHuZQsAY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jYW52YXMucmVh
ZG9ubHktYWN0dWFsLnR4dFVUBQADP1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAAKqZt04t
MbEVBwAAAAcAAAAzABgAAAAAAAEAAACkgVlmCwBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNhbnZh
cy5yZWFkb25seS1leHBlY3RlZC50eHRVVAUAAz9T51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAA
AADWmbdOAAAAAAAAAAAAAAAAMgAYAAAAAAAAAAAApIHNZgsAY2FudmFzL3BoaWxpcC90ZXN0cy8y
ZC5jYW52YXMucmVmZXJlbmNlLWFjdHVhbC50eHRVVAUAA5NT51x1eAsAAQT1AQAABBQAAABQSwEC
HgMKAAIAAADWmbdOLTGxFQcAAAAHAAAANAAYAAAAAAABAAAApIE5ZwsAY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5jYW52YXMucmVmZXJlbmNlLWV4cGVjdGVkLnR4dFVUBQADk1PnXHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAANaZt04AAAAAAAAAAAAAAAAMABgAAAAAAAAAEADtQa5nCwBjb21wb3Np
dGluZy9VVAUAA5NT51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqmbdOAAAAAAAAAAAAAAAA
OAAYAAAAAAAAAAAApIH0ZwsAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRlLW91dC1vZi12aWV3
LWZpeGVkLWFjdHVhbC50eHRVVAUAAz9T51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACqmbdO
UFnLTpMAAABYAQAAOgAYAAAAAAABAAAApIFmaAsAY29tcG9zaXRpbmcvYWJzb2x1dGUtaW5zaWRl
LW91dC1vZi12aWV3LWZpeGVkLWV4cGVjdGVkLnR4dFVUBQADP1PnXHV4CwABBPUBAAAEFAAAAFBL
AQIeAwoAAAAAANaZt04AAAAAAAAAAAAAAABEABgAAAAAAAAAAACkgW1pCwBjb21wb3NpdGluZy9h
YnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBvc2l0ZWQtbGF5ZXItYWN0dWFsLnR4dFVU
BQADk1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAgAAANaZt06TBtcyAQAAAAEAAABGABgAAAAA
AAEAAACkgetpCwBjb21wb3NpdGluZy9hYnNvbHV0ZS1wb3NpdGlvbi1jaGFuZ2VkLWluLWNvbXBv
c2l0ZWQtbGF5ZXItZXhwZWN0ZWQudHh0VVQFAAOTU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAA
AAAA1pm3TgAAAAAAAAAAAAAAABYAGAAAAAAAAAAQAO1BbGoLAGNvbXBvc2l0aW5nL2FuaW1hdGlv
bi9VVAUAA5NT51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqmbdOAAAAAAAAAAAAAAAAQgAY
AAAAAAAAAAAApIG8agsAY29tcG9zaXRpbmcvYW5pbWF0aW9uL2FuaW1hdGVkLWNvbXBvc2l0ZWQt
aW5zaWRlLWhpZGRlbi1hY3R1YWwudHh0VVQFAAM/U+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAAC
AAgAqpm3TuoHutSTAAAA0AAAAEQAGAAAAAAAAQAAAKSBOGsLAGNvbXBvc2l0aW5nL2FuaW1hdGlv
bi9hbmltYXRlZC1jb21wb3NpdGVkLWluc2lkZS1oaWRkZW4tZXhwZWN0ZWQudHh0VVQFAAM/U+dc
dXgLAAEE9QEAAAQUAAAAUEsBAh4DCgAAAAAA1pm3TgAAAAAAAAAAAAAAADIAGAAAAAAAAAAAAKSB
SWwLAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9hbmltYXRpb24tYmFja2luZy1hY3R1YWwudHh0VVQF
AAOTU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DCgACAAAA1pm3TmMNml0pAAAAKQAAADQAGAAAAAAA
AQAAAKSBtWwLAGNvbXBvc2l0aW5nL2FuaW1hdGlvbi9hbmltYXRpb24tYmFja2luZy1leHBlY3Rl
ZC50eHRVVAUAA5NT51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAADWmbdOAAAAAAAAAAAAAAAA
IAAYAAAAAAAAABAA7UFMbQsAY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9VVAUAA5NT
51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqmbdOAAAAAAAAAAAAAAAAQQAYAAAAAAAAAAAA
pIGmbQsAY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0eS9iYWNrZmFjZS12aXNpYmlsaXR5
LTNkLWFjdHVhbC50eHRVVAUAA0BT51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACACqmbdOoNCt
TCYAAAApAAAAQwAYAAAAAAABAAAApIEhbgsAY29tcG9zaXRpbmcvYmFja2ZhY2UtdmlzaWJpbGl0
eS9iYWNrZmFjZS12aXNpYmlsaXR5LTNkLWV4cGVjdGVkLnR4dFVUBQADQFPnXHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAANaZt04AAAAAAAAAAAAAAABVABgAAAAAAAAAAACkgcRuCwBjb21wb3Np
dGluZy9iYWNrZmFjZS12aXNpYmlsaXR5L2JhY2tmYWNlLXZpc2liaWxpdHktaGllcmFyY2hpY2Fs
LXRyYW5zZm9ybS1hY3R1YWwudHh0VVQFAAOTU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA
1pm3TqDQrUwmAAAAKQAAAFcAGAAAAAAAAQAAAKSBU28LAGNvbXBvc2l0aW5nL2JhY2tmYWNlLXZp
c2liaWxpdHkvYmFja2ZhY2UtdmlzaWJpbGl0eS1oaWVyYXJjaGljYWwtdHJhbnNmb3JtLWV4cGVj
dGVkLnR4dFVUBQADk1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANaZt04AAAAAAAAAAAAA
AAAUABgAAAAAAAAAEADtQQpwCwBjb21wb3NpdGluZy9iYWNraW5nL1VUBQADk1PnXHV4CwABBPUB
AAAEFAAAAFBLAQIeAwoAAAAAANaZt04AAAAAAAAAAAAAAAAwABgAAAAAAAAAAACkgVhwCwBjb21w
b3NpdGluZy9iYWNraW5nL2FuaW1hdGUtaW50by12aWV3LWFjdHVhbC50eHRVVAUAA5NT51x1eAsA
AQT1AQAABBQAAABQSwECHgMUAAIACADWmbdOE58ieeQAAAAmAgAAMgAYAAAAAAABAAAApIHCcAsA
Y29tcG9zaXRpbmcvYmFja2luZy9hbmltYXRlLWludG8tdmlldy1leHBlY3RlZC50eHRVVAUAA5NT
51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAACqmbdOAAAAAAAAAAAAAAAAQAAYAAAAAAAAAAAA
pIEScgsAY29tcG9zaXRpbmcvYmFja2luZy9hbmltYXRlLWludG8tdmlldy13aXRoLWRlc2NlbmRh
bnQtYWN0dWFsLnR4dFVUBQADP1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAxQAAgAIAKqZt06Tai1Z
+wAAAMMCAABCABgAAAAAAAEAAACkgYxyCwBjb21wb3NpdGluZy9iYWNraW5nL2FuaW1hdGUtaW50
by12aWV3LXdpdGgtZGVzY2VuZGFudC1leHBlY3RlZC50eHRVVAUAAz9T51x1eAsAAQT1AQAABBQA
AABQSwECHgMKAAAAAADVmbdOAAAAAAAAAAAAAAAAEwAYAAAAAAAAABAA7UEDdAsAY29tcG9zaXRp
bmcvY2FudmFzL1VUBQADkVPnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAANWZt04AAAAAAAAA
AAAAAABHABgAAAAAAAAAAACkgVB0CwBjb21wb3NpdGluZy9jYW52YXMvYWNjZWxlcmF0ZWQtY2Fu
dmFzLWNvbXBvc2l0aW5nLXNpemUtbGltaXQtYWN0dWFsLnR4dFVUBQADkVPnXHV4CwABBPUBAAAE
FAAAAFBLAQIeAxQAAgAIANWZt07jl3D/EAEAACcDAABJABgAAAAAAAEAAACkgdF0CwBjb21wb3Np
dGluZy9jYW52YXMvYWNjZWxlcmF0ZWQtY2FudmFzLWNvbXBvc2l0aW5nLXNpemUtbGltaXQtZXhw
ZWN0ZWQudHh0VVQFAAORU+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA2Zm3TszRHGz3AgAA
lAkAAA0AGAAAAAAAAQAAAKSBZHYLAGVycm9yX2xvZy50eHRVVAUAA5lT51x1eAsAAQT1AQAABBQA
AABQSwECHgMUAAIACADwmbdOck9Dp3oDAAAQDgAAEQAYAAAAAAABAAAApIGieQsAZnVsbF9yZXN1
bHRzLmpzb25VVAUAA8RT51x1eAsAAQT1AQAABBQAAABQSwECHgMUAAIACABimbdO20B2Bb4FAAC7
EAAACgAYAAAAAAABAAAApIFnfQsAaHR0cGQuY29uZlVUBQADt1LnXHV4CwABBPUBAAAEFAAAAFBL
AQIeAxQAAgAIAPCZt05c3wltTHsAAPkJBAAdABgAAAAAAAEAAACkgWmDCwBsYXlvdXRfdGVzdF9w
ZXJmX21ldHJpY3MuanNvblVUBQADw1PnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGOZt04A
AAAAAAAAAAAAAAAaABgAAAAAAAAAAACkgQz/CwBweXdlYnNvY2tldC53cy5sb2ctZXJyLnR4dFVU
BQADuVLnXHV4CwABBPUBAAAEFAAAAFBLAQIeAwoAAAAAAGOZt04AAAAAAAAAAAAAAAAaABgAAAAA
AAAAAACkgWD/CwBweXdlYnNvY2tldC53cy5sb2ctb3V0LnR4dFVUBQADuVLnXHV4CwABBPUBAAAE
FAAAAFBLAQIeAwoAAAAAAGOZt04AAAAAAAAAAAAAAAAbABgAAAAAAAAAAACkgbT/CwBweXdlYnNv
Y2tldC53c3MubG9nLWVyci50eHRVVAUAA7pS51x1eAsAAQT1AQAABBQAAABQSwECHgMKAAAAAABj
mbdOAAAAAAAAAAAAAAAAGwAYAAAAAAAAAAAApIEJAAwAcHl3ZWJzb2NrZXQud3NzLmxvZy1vdXQu
dHh0VVQFAAO6UudcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8Zm3TkUeJ7UEMgAAn+8AAAwA
GAAAAAAAAQAAAKSBXgAMAHJlc3VsdHMuaHRtbFVUBQADxVPnXHV4CwABBPUBAAAEFAAAAFBLAQIe
AxQAAgAIAPCZt04IFanh5QMAAJEKAAAKABgAAAAAAAEAAACkgagyDABzdGF0cy5qc29uVVQFAAPE
U+dcdXgLAAEE9QEAAAQUAAAAUEsBAh4DFAACAAgA8Jm3TiARcMtYBQAAVSIAABkAGAAAAAAAAQAA
AKSB0TYMAHdwdHdrX3Byb2Nlc3NfbG9nLm91dC50eHRVVAUAA8NT51x1eAsAAQT1AQAABBQAAABQ
SwUGAAAAAKIAogD6RQAAfDwMAAAA
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370572</attachid>
            <date>2019-05-24 08:50:21 -0700</date>
            <delta_ts>2019-05-24 08:56:39 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>198206_PageIdentifier_wip.patch</filename>
            <type>text/plain</type>
            <size>620630</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwNy4uYjNiY2FkZDlkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjIsNiArMTIz
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVu
dGlmaWVyPFQ+PiB7CiAgICAgdHlwZWRlZiBPYmplY3RJZGVudGlmaWVySGFzaDxUPiBIYXNoOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VD4mIGlkZW50aWZpZXIpCit7CisgICAg
dHMgPDwgaWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNmExZjVm
MWQ3MS4uYjZhOGY4OWFiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTcsNiArMTIxNyw3IEBACiAJCTQ2ODJEMjAwMUY3
OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RC
IC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkx
NEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJn
ZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2Mjcw
MEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFj
dERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEEyMDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTYyMDdE
NjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFj
dEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZCOTUxOTcyMDdENjM0MDAwQTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3
RDYzMkMwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1OTksNiArNzYwMCw3IEBACiAJ
CTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01SZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4
Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJh
Y3RET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RE
T01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEMyMDdENjMy
OTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxOTcsNiArMjAxOTksNyBAQAogCQkJCTkzMDJCMEJF
MEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLywKIAkJCQk3QTY3NEJEQTBG
OUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggKi8sCisJCQkJNDZCNjUw
REIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8sCiAJCQkJMkQ1QzlDRkIx
OUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5LmNwcCAqLywKIAkJCQkyRDVDOUNGQzE5QzdC
NTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCAqLywKIAkJCQkyRDVDOUNGRDE5QzdCNTJFMDBC
M0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCAqLywKQEAgLTI5ODcxLDYgKzI5ODc0
LDcgQEAKIAkJCQlCQzMwNUM3QTBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIxRUIwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRN
TE9MaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTdFOUIwQTFBODNFMzAwN0ZC
OEM1IC8qIEpTSFRNTE9wdEdyb3VwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZCNjUw
REQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODBFN0U5OTBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MT3B0aW9uRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDQ4QTI5QkYwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUQwMTczRDEyN0U4Mjg2MDAxNTAzNUYg
LyogSlNIVE1MT3V0cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAKaW5kZXggNzY5MTJjYWViOGEuLjBlN2Q1NDIwNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29sYXRlZFRyZWUoKSk7
CiB9CiAKLVJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRpYWxpemVQYWdl
VHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYgY2FjaGUpCitSZWY8QVhJ
c29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjppbml0aWFsaXplUGFnZVRyZWVGb3JJRChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmIGNhY2hlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIHRyZWUgPSBjYWNoZS0+Z2VuZXJhdGVJ
c29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIFJlZlB0cjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEIHRy
ZWVJRCkKICAgICByZXR1cm4gdHJlZUlEQ2FjaGUoKS5nZXQodHJlZUlEKTsKIH0KIAotUmVmPEFY
SXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRf
dCBwYWdlSUQpCitSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tl
cihzX2NhY2hlTG9jayk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBB
WElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpCiAgICAg
cmV0dXJuIG5ld1RyZWU7CiB9CiAKLVJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OnRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKQorUmVmUHRyPEFYSXNvbGF0ZWRUcmVl
PiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoc19jYWNoZUxvY2spOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aAppbmRleCBjMDc1ZDViMDE2Ny4uNmVlYzI2NDUxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUp
CiAKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZU5vZGUuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtNDMsOSArNDQsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlKCk7CiAgICAg
dmlydHVhbCB+QVhJc29sYXRlZFRyZWUoKTsKIAotICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRy
ZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRyZWVGb3JJRCh1
aW50NjRfdCBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBhZ2VJRChQYWdl
SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJl
ZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlkZW50aWZpZXIsIEFYT2JqZWN0Q2FjaGUm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJRCk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZFRyZWVOb2RlPiByb290Tm9kZSgpOwpAQCAt
NzAsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRUcmVlKCk7CiAKICAgICBzdGF0
aWMgSGFzaE1hcDxBWElzb2xhdGVkVHJlZUlELCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZUlE
Q2FjaGUoKTsKLSAgICBzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgUmVmPEFYSXNvbGF0ZWRUcmVl
Pj4mIHRyZWVQYWdlQ2FjaGUoKTsKKyAgICBzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwg
UmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKTsKIAogICAgIC8vIE9ubHkgYWNj
ZXNzIG9uIEFYIHRocmVhZCByZXF1ZXN0aW5nIGRhdGEuCiAgICAgSGFzaE1hcDxBWElELCBSZWY8
QVhJc29sYXRlZFRyZWVOb2RlPj4gbV9yZWFkZXJUaHJlYWROb2RlTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggZTcwYTlmN2ZlNTUuLmQzNTQxNjczZWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTc3NjYsNyArNzc2Niw3IEBAIExvZ2dlciYgRG9jdW1lbnQ6OmxvZ2dlcigp
CiAgICAgcmV0dXJuICptX2xvZ2dlcjsKIH0KICAgICAKLU9wdGlvbmFsPHVpbnQ2NF90PiBEb2N1
bWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBEb2N1bWVudDo6
cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGMwNzY1NTY1MDZhLi5hMjQ4MWRm
OGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJN
ZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUg
Ik9yaWVudGF0aW9uTm90aWZpZXIuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgogI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgpAQCAtNjM1LDcgKzYzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICAgdm9pZCBj
bGVhckFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBj
b25zdDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7CiAgICAg
Ly8gdG8gZ2V0IHZpc3VhbGx5IG9yZGVyZWQgaGVicmV3IGFuZCBhcmFiaWMgcGFnZXMgcmlnaHQK
ICAgICB2b2lkIHNldFZpc3VhbGx5T3JkZXJlZCgpOwogICAgIGJvb2wgdmlzdWFsbHlPcmRlcmVk
KCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxseU9yZGVyZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5jcHAKaW5kZXggYjFiZWQ4ZjAzMmYuLjMzZTI3ODYzODM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpj
b29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgYXV0
byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3Vt
ZW50LCB1cmwpOwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJh
bWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJ
RCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTExMCw3ICsxMTAsNyBA
QCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvYwogdm9pZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAg
IGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29s
IENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQmKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vz
c2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4g
Q29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Np
b25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1CiBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1
bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgU3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHUKIGJv
b2wgQ29va2llSmFyOjpnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBjb29raWVzKSBjb25zdAogewogICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7Cisg
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUg
PSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkucGFnZUlEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggMGRiMDdjNmQx
MmUuLjI4MWY4NGM0OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llcyhE
b2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0OwotICAg
IHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tp
ZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNz
aW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+JikgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRmMGJiODZkZGQ1Li4xZjdhMjlj
NGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZnJhbWVMb2Fk
ZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9w
dDsgfQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVjMzkxMjdhMWFkLi4wNzQ4NzYxMThkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWls
ZXN0b25lLmgiCiAjaW5jbHVkZSAiTGlua0ljb24uaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTEyNiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikgPSAwOwog
Ci0gICAgdmlydHVhbCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDhhODIzODFmMDE4Li40NWZlYjYzNWY3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCisjaW5jbHVkZSAiUGFn
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1
ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LmgiCkBAIC01Nyw3ICs1OCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExvYWRlclN0
cmF0ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlKEZyYW1lJiwg
Q2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
JiYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
RnJhbWVMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3Rv
cjxjaGFyPiYgZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1
aW50NjRfdCB3ZWJQYWdlSUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZUxvYWRDb21wbGV0
ZWQoUGFnZUlkZW50aWZpZXIpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUmVzb3Vy
Y2VMb2FkZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoUmVzb3Vy
Y2VMb2FkZXImLCBib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFj
dGlvbi5jcHAKaW5kZXggNzc0NTAwMWU3OGEuLmYyNmE5YWFmMmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIE5hdmlnYXRpb25BY3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVzdGVyKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fdXJsIHsgVVJMIHsgZG9jdW1lbnQudXJsKCkg
fSB9CiAgICAgLCBtX29yaWdpbiB7IG1ha2VSZWZQdHIoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KSkgfQotICAgICwgbV9wYWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBz
dGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQo
KS52YWx1ZU9yKDApLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlE
KCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjx1aW50NjRfdCwgdWludDY0X3Q+KDAsIDAp
IH0KKyAgICAsIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIgeyBkb2N1bWVudC5mcmFtZSgpID8gc3Rk
OjptYWtlX3BhaXIoZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCku
dmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5j
bGllbnQoKS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjxQYWdlSWRlbnRp
ZmllciwgdWludDY0X3Q+KHsgfSwgMCkgfQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uaAppbmRleCAxYTQ0ZjkxZDM2OC4uZWQ3ZDA5Y2YyODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTYzLDE0ICs2
NCwxNCBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYp
OwogICAgIE5hdmlnYXRpb25BY3Rpb24mIG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwog
Ci0gICAgdXNpbmcgUGFnZUlEQW5kRnJhbWVJRFBhaXIgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyog
cGFnZUlEICovLCB1aW50NjRfdCAvKiBmcmFtZUlEICovPjsKKyAgICB1c2luZyBQYWdlSURBbmRG
cmFtZUlEUGFpciA9IHN0ZDo6cGFpcjxQYWdlSWRlbnRpZmllciwgdWludDY0X3QgLyogZnJhbWVJ
RCAqLz47CiAgICAgY2xhc3MgUmVxdWVzdGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlcXVl
c3Rlcihjb25zdCBEb2N1bWVudCYpOwogCiAgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KICAgICAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5
T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fb3JpZ2luOyB9Ci0gICAgICAgIHVpbnQ2NF90IHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KKyAg
ICAgICAgUGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRG
cmFtZUlEUGFpci5maXJzdDsgfQogICAgICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5zZWNvbmQ7IH0KICAgICBwcml2YXRlOgogICAg
ICAgICBVUkwgbV91cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmNwcAppbmRleCAxNGJjMmYzYmVlZi4uZmZhZGExYzQ1YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNjAsNyArNjAsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzVXBkYXRlZENhbGxiYWNr
KFdURjo6RnVuY3Rpb248dm9pZChWZWN0bwogICAgIG1fbm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKG5vdGlmaWNhdGlvbkNhbGxiYWNrKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFdURjo6RnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbik+JiYgY2FsbGJhY2spCit2b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
Q2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlk
ZW50aWZpZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9t
YWluKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIW1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKTsKICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXJDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJl
c29sdXRpb24oY29uc3QgRG9jCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9j
dW1lbnQmIG9wZW5lckRvY3VtZW50KQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVu
dGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQogewogICAgIGF1
dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7CiAgICAgUmVnaXN0cmFibGVEb21h
aW4gb3BlbmVyRG9tYWluIHsgb3BlbmVyVXJsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGM0NjYxYjA0NzYwLi5kZTFjOTRhNzJjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzQWN0aXZpdHlSZWNvcmQu
aCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3MuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3Rh
dGlzdGljc0ZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291
cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVpbnQ2NF90LCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFBhZ2VJZGVudGlmaWVyLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvZ1VzZXJJ
bnRlcmFjdGlvbk5vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TG9nV2ViU29ja2V0TG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBXYWxsVGltZSk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TG9nU3VicmVzb3VyY2VMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIFdhbGxUaW1lKT4mJik7CkBAIC05NCwxMyArOTUsMTMgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIERv
Y3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3Vt
ZW50JiBvcGVuZXJEb2N1bWVudCk7CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVE
b21haW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwog
ICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdURjo6V2FsbFRpbWU+IG1fbGFzdFJlcG9y
dGVkVXNlckludGVyYWN0aW9uTWFwOwogICAgIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYpPiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwotICAgIEZ1bmN0aW9u
PHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdWludDY0X3Qs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
Jik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrOwogICAgIEZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fbG9n
VXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dXZWJTb2NrZXRMb2FkaW5nTm90aWZpY2F0aW9uQ2Fs
bGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dTdWJy
ZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCmluZGV4IGYzNTM5MGM4YzNhLi41MmIyZTk0YjdlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCkBAIC00ODYsOCArNDg2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVm
UHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmls
ZW5hbWVzICovKSA9IDA7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypz
dWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywg
dWludDY0X3QgLypmcmFtZUlEKi8sIHVpbnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVn
aXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYg
Lyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0X3QgLypwYWdl
SUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duOjpObyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21h
aW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRp
ZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywg
UmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJ
RCovLCBQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpO
bywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7IH0KICNlbmRpZgogCiAjaWYgRU5B
QkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2xvYmFsRnJhbWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1l
SWRlbnRpZmllci5oCmluZGV4IDE1NmM5Y2QyMDVkLi4wZDdiM2RiZjcyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCkBAIC0yNSwxMyArMjUsMTQgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZyYW1lIGlkZW50
aWZpZXIgdGhhdCBpcyB1bmlxdWUgYWNyb3NzIGFsbCBXZWJDb250ZW50IHByb2Nlc3Nlcy4KIHN0
cnVjdCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgewotICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICBQ
YWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgdWludDY0X3QgZnJhbWVJRDsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTQ3LDcg
KzQ4LDcgQEAgdm9pZCBHbG9iYWxGcmFtZUlkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPEdsb2JhbEZyYW1l
SWRlbnRpZmllcj4gR2xvYmFsRnJhbWVJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgZGVjb2RlciA+PiBwYWdlSUQ7CiAgICAgaWYgKCFwYWdl
SUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVu
dGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ0ZDVmOGQy
OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRpZmll
ci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51
bSBQYWdlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGFnZUlkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkuaAppbmRleCAxMTU5MDUwY2QzMi4uYjNkNmUzOGJjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
YW1lU2l0ZUluZm8uaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMzgsNyArMzksNyBAQCBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkgewogICAgIFNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm87CiAgICAgVVJMIHVybDsKICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMgeyBJbmNsdWRlU2VjdXJlQ29va2llczo6
Tm8gfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKQEAgLTcxLDggKzcyLDExIEBAIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5PiBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eTo6ZGVjb2RlKERlCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
ZnJhbWVJRCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQucGFnZUlEKSkKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEOworICAgIGRlY29kZXIgPj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5wYWdlSUQgPSAqcGFnZUlEOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluY2x1ZGVTZWN1cmVDb29raWVzKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CmluZGV4IDNiMThlNjJmZTM5Li42M2RmMDU4OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAt
NjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0K
ICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29v
a2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlEKSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3Jh
bnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7
CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7
CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAg
ICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChw
YWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vz
cy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAg
IGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1lSUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdl
U3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwog
ICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21h
aW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhm
cm9tRG9tYWluKSkKICAgICAgICAgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJl
dmFsZW50UmVzb3VyY2UuYWRkKHBhZ2VJRCwgdG9Eb21haW4pOwpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZygpCiAgICAgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9u
VGVzdE1vZGUgPSB0cnVlOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHksIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0CitPcHRpb25hbDxTZWNvbmRz
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdl
SUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2Uu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDAzMDIwMGRmOWM0Li4zZjM5YzhhY2Q4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRp
YWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdp
c3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNp
ZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9t
YWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4g
bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1aW50
NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFzaDx1
aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0
X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVsdEhh
c2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmlnYXRl
ZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dp
dGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRp
b25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDYzNzQwMzUyYzRhLi41NTdlOTc3YjRk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0yOTQsNyArMjk0
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkgKnVu
ZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1cm4gZmlsdGVyZWRDb29raWVz
OwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkKK3N0YXRpYyBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYg
KHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFn
ZUlEKSkKQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZgogfQogCiBl
bnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVI
VFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJ
bmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQogewogICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
KTsKIApAQCAtMzYzLDEyICszNjMsMTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENvb2tp
ZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENvb2tp
ZVN0b3JhZ2VEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
K3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
ckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywg
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNs
dWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29r
aWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcyk7
CiB9CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KICAgICByZXR1
cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwg
aGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFk
ZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRU
UE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIApAQCAtNDQzLDcgKzQ0Myw3IEBAIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFy
KCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggODc5YzBiMTll
OTYuLmI2ODljM2UyNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3MTYsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAg
ICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQzLDcgKzc0Myw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3Qg
U3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSUQgZnJh
bWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
U3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSUQgZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgT3BlbmVyUGFnZUlEIG9wZW5l
clBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihE
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Ms
IFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWlu
KQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgIT0gb3BlbmVyRG9t
YWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTgxNCw3ICs4MTQsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFs
KFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21h
aW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWlu
JiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9t
YWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2Fz
U2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3Vi
RnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1l
RG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNy4uYmZjMjMzOTY4NTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC02NCw3ICs2
NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNTdG9yYWdlSWZOZWVkZWQoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKSBvdmVycmlkZTsKIAotICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MmJiwgT3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCBncmFuZGZhdGhlckRhdGFGb3JEb21haW5zKGNvbnN0IEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+Jikgb3ZlcnJpZGU7CiAKQEAgLTkxLDkgKzkxLDkgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQ
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92
ZXJyaWRlOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRv
cEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNv
bnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFt
ZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJy
aWRlOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9n
RnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29s
IGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25z
dCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwpAQCAtMTUyLDcgKzE1Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVkIHJlY3Vyc2l2ZWx5RmluZE5v
blByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhpc0RvbWFpbih1bnNpZ25lZCBwcmlt
YXJ5RG9tYWluSUQsIFN0ZFNldDx1bnNpZ25lZD4mIG5vblByZXZhbGVudFJlZGlyZWN0aW9uU291
cmNlcywgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscyk7CiAgICAgdm9pZCBzZXREb21h
aW5zQXNQcmV2YWxlbnQoU3RkU2V0PHVuc2lnbmVkPiYmKTsKLSAgICB2b2lkIGdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlv
bmFsPEZyYW1lSUQ+LCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAg
ICB2b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50KCk7CiAgICAg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1
Z01vZGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDBlZTdmOTYzODk0Li5hNWYyNjI0ZTQzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAg
LTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6
c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UtPnNj
aGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6Rm9yY2VJbW1lZGlhdGVXcml0ZTo6WWVzKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mIHMKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSUQgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIEZyYW1lSUQgZnJhbWVJ
RCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogCkBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYg
c3UKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBPcGVuZXJQYWdlSUQgb3BlbmVyUGFn
ZUlELCBPcGVuZXJEb21haW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewog
ICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgIT0gb3BlbmVyRG9tYWluKTsK
ICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTI4Nyw3ICsyODcsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lcihEb21haW5JbgogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1v
dmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBX
VEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpO
bywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZy
YW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBw
cm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7CiAKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRgogICAg
IGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZN
b3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4m
JiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCA0
NGVmYmY0ZGVjMS4uNDVmN2UxYjc1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZv
aWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAgIHZvaWQgc3luY1N0b3JhZ2VJ
bW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdlSUQsIE9w
ZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdyYW5kZmF0aGVy
RGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKSBvdmVycmlk
ZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhbGN1bGF0ZUFuZFN1
Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRv
cEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlE
LCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGVk
VG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21h
aW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpIG92ZXJyaWRlOwogICAgIHZv
aWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7CkBA
IC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGluY3JlbWVudFJlY29yZHNEZWxl
dGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpIG92ZXJyaWRl
OwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYs
IFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVkIHJlY3Vyc2l2ZWx5R2V0QWxs
RG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbihjb25zdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21haW4+JiwgdW5zaWduZWQgbnVtYmVy
T2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlE
PiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAg
ICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJr
QXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudChSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVidWdNb2RlKFJlc291cmNlTG9hZFN0
YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGVuc3VyZVByZXZhbGVu
dFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3Li5kNzc5OGIyNWQxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtOTAsOCArOTAsNiBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAg
ICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7
CiAgICAgCiAgICAgdmlydHVhbCB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CkBAIC0x
MTAsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RvcmFnZUlmTmVl
ZGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgPSAw
OwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihE
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3Bl
bmVySUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNj
ZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGdyYW5kZmF0aGVy
RXhpc3RpbmdXZWJzaXRlRGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTYx
LDkgKzE1OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsgfTsKICAgICB2b2lkIHNldFByZXZhbGVudFJl
c291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNv
bnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFt
ZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYs
IFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGly
ZWN0LCBib29sIGlzTWFpbkZyYW1lKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvZ1VzZXJJbnRl
cmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggODcxYjE5ZDJmMDcuLjYyMjQzMGNk
OGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yCiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VB
Y2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHN1YkZyYW1lRG9tYWluICE9IHRvcEZy
YW1lRG9tYWluKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjk4LDEyICsy
OTgsMTIgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VB
Y2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHMKICAgICB9KTsKIH0KIAotYm9vbCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQp
Citib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gbV9uZXR3b3JrU2Vzc2lvbiA/IG1fbmV0
d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLmhhc1N0b3JhZ2VBY2Nlc3MocmVz
b3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBhZ2VJRCkgOiBmYWxzZTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhh
c0FjY2Vzcyk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyKGNvbnN0IFIKICAgICBjYWxsYmFjayhmYWxzZSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKHN1YkZyYW1lRG9tYWluID09IHRv
cEZyYW1lRG9tYWluKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkOjpZZXMsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOwpAQCAtMzYy
LDcgKzM2Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpCiAgICAgfSk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1
aW50NjRfdCBvcGVuZXJQYWdlSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQor
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVEb21haW4mJiBvcGVu
ZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzc1LDcg
KzM3NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFJlZ2lzdHJhYmxlCiAgICAgfSk7CiB9CiAKLXZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBwb3N0VGFzayhbdGhp
cywgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgdG9wRnJh
bWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENvcHkoKSwgZnJhbWVJRCwgcGFnZUlE
LCBwcm9tcHRXYXNTaG93biwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJgogICAgIH0pOwogfQogCi1TdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQor
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpn
cmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBib29sIGlzU3Rv
cmFnZUdyYW50ZWQgPSBmYWxzZTsKIApAQCAtNDA5LDcgKzQwOSw3IEBAIFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0CiAgICAgcmV0dXJuIGlzU3RvcmFnZUdyYW50ZWQgPyBTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDo6WWVzIDogU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRs
ZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1l
RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggODc1OWQ2MDE2
NmEuLjc5Y2YyNDYwMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGUu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04Miw4ICs4Myw2IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwog
ICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVpbnQ2NF90OwotICAgIHVzaW5nIFBh
Z2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQgPSB1aW50NjRfdDsKICAgICB1c2lu
ZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biA9IFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEwNCw3ICsxMDMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3Zh
bChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxk
U3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJ
RCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsK
KyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0
IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAKICAgICB2
b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwogCkBAIC0xMTgsMTEgKzExNywxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVXZWJzaXRl
RGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFz
aE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91
bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0
cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNp
dGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBib29sIHNob3VsZE5vdGlmeVBhZ2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYp
OwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4s
IFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgZ3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxG
cmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgaGFzSGFkVXNlcklu
dGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICBib29sIGhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
RnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4s
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4m
LCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lkIHNldExhc3RTZWVuKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRS
ZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxl
bnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBT
dHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwg
UGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
Jik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdWJGcmFt
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxsVXBkYXRlUHJldmFsZW50RG9tYWlu
c1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNhbGxSZW1vdmVEb21h
aW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+Jik7Ci0gICAgdm9pZCBj
YWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVI
YW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQcm9jZXNzKCk7CiAKQEAgLTE4Miw3
ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRy
eUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3Rh
bFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJm
cmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsKIAogICAgIHZvaWQgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwotICAg
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJik7CisgICAg
dm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJRCwgT3BlbmVyRG9tYWlu
JiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhv
c3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5NzE4MzZhZGEuLjRkM2QxNjlmNmFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxp
Z2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgICAgICBT
dHJpbmcgcmVmZXJyZXI7CiAgICAgICAgIFN0cmluZyB1c2VyQWdlbnQ7CiAgICAgICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRDsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQ7
CiAgICAgICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IDNkNzFm
OGY2YjFiLi45MmM4YjdhZTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKQEAgLTQ0
Miw3ICs0NDIsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVM
b2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyCiAgICAgQVNTRVJUKCFtX25ldHdv
cmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRpZmllcikpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQ
YWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYWdlTG9hZENvbXBs
ZXRlZChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCiB7CiAgICAgc3RvcEFsbE5ldHdvcmtBY3Rp
dml0eVRyYWNraW5nRm9yUGFnZSh3ZWJQYWdlSUQpOwogfQpAQCAtNTEyLDcgKzUxMiw3IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChQQUw6OlNlc3NpCiAgICAgbG9hZGVyLT5jb252ZXJ0VG9Eb3dubG9hZChkb3du
bG9hZElELCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJl
Q29va2llc0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvJiBuZXR3
b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNz
aW9uSUQpOwogICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNvb2tpZXNG
b3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1
bHQuc2Vjb25kKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0
Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIGF1dG8mIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNl
c3Npb25JRCk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNldENvb2tpZXNGcm9tRE9NKGZp
cnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGNvb2tpZVN0cmlu
Zyk7CkBAIC01NDIsMTMgKzU0MiwxMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbQogICAgIGNv
bXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25J
RCkuY29va2llc0VuYWJsZWQoKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgYXV0byByZXN1bHQgPSBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9u
SUQpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5m
bywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiByZXN1bHQ7CiAgICAgc3RvcmFnZVNlc3Npb24obmV0d29y
a1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5nZXRSYXdDb29raWVzKGZpcnN0UGFydHksIHNhbWVTaXRl
SW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlc3VsdCk7CkBAIC02MzgsMTMgKzYzOCwxMyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjplbnN1cmVMZWdhY3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCkKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNj
ZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZW1v
dmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3Jh
Z2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQog
ICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGZyYW1l
SUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNs
ZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAg
IGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Np
b24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPmNsZWFyUGFnZVNwZWNpZmlj
RGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MocGFnZUlEKTsKQEAgLTY5Nyw3ICs2OTcsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byBuZXR3b3JrU2Vzc2lv
biA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAg
ICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKQEAgLTcwOSw3ICs3MDksNyBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwogfQogCi12b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAt
NzIxLDcgKzcyMSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBpZiAoYXV0byBuZXR3b3JrU2Vzc2lvbiA9
IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBp
ZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKCkpCkBAIC03NDUsNyArNzQ1LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKICAgICBTZWN1
cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiB9CiAKLU9wdGlvbmFs
PE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpz
dGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRl
bnRpZmllciByZXNvdXJjZUlELCBib29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklEKQorT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wg
aXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiB7CiAgICAg
aWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwpAQCAtODE0LDcgKzgxNCw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZygpCiAgICAgbV9uZXR3b3JrQWN0aXZpdHlU
cmFja2Vycy5jbGVhcigpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBhZ2VJRCkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZp
dHlUcmFja2luZ0ZvclBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGZvciAoYXV0
byYgYWN0aXZpdHlUcmFja2VyIDogbV9uZXR3b3JrQWN0aXZpdHlUcmFja2VycykgewogICAgICAg
ICBpZiAoYWN0aXZpdHlUcmFja2VyLnBhZ2VJRCA9PSBwYWdlSUQpCkBAIC04MjYsNyArODI2LDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rp
dml0eVRyYWNraW5nRm9yUGFnZSh1aW50NjQKICAgICB9KTsKIH0KIAotc2l6ZV90IE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kUm9vdE5ldHdvcmtBY3Rpdml0eSh1aW50NjRfdCBw
YWdlSUQpCitzaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290TmV0
d29ya0FjdGl2aXR5KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gbV9uZXR3
b3JrQWN0aXZpdHlUcmFja2Vycy5maW5kTWF0Y2hpbmcoWyZdKGNvbnN0IGF1dG8mIGl0ZW0pIHsK
ICAgICAgICAgcmV0dXJuIGl0ZW0uaXNSb290QWN0aXZpdHkgJiYgaXRlbS5wYWdlSUQgPT0gcGFn
ZUlEOwpAQCAtOTAzLDE3ICs5MDMsMTcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y2xlYXJDb25uZWN0aW9uSGFzVXBsb2FkcygpCiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6
OkNsZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMobV93ZWJQcm9jZXNzSWRlbnRpZmllciksIDApOwog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBh
Z2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNBZGRl
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQogewogICAgIG1fbmV0d29ya1Byb2Nlc3MtPndl
YlBhZ2VXYXNBZGRlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCwgcGFnZUlELCBvbGRQ
YWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdl
V2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fbmV0
d29ya1Byb2Nlc3MtPndlYlBhZ2VXYXNSZW1vdmVkKG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lv
bklELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3
ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25z
dCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKQogewogICAgIG1fbmV0d29y
a1Byb2Nlc3MtPndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIG5l
d1Nlc3Npb25JRCwgcGFnZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGNiYzdi
YmZlOGY1Li4wNmQ1Nzk2ODgyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xv
YWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzMs
NyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBtX25ldHdvcmtMb2FkSW5mb3JtYXRpb25CeUlE
LnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVz
b3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29sIGlzTWFpblJlc291cmNlLCBjb25z
dCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlc291
cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3Qg
UEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0b3BUcmFja2luZ1Jlc291cmNlTG9hZChSZXNv
dXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNv
bXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdp
c3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldENvbm5lY3Rp
b25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAK
LSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNo
YW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOwor
ICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Np
b25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4m
IHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhO
ZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcik7CkBAIC0xNzAsMTYg
KzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNv
bm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKIAog
ICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Ci0g
ICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpOworICAgIHZvaWQg
cGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jv
c3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVS
TCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwg
RG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50
aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAgIHZvaWQgY29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNvb2tpZXNGb3JET00oUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVz
QWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgY29va2llc0VuYWJsZWQo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZv
aWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdl
YkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9p
ZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6
OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBnZXRS
YXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29v
a2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUp
OwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVu
dFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAgcHJpdmF0ZToKICAgICBDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQp
OwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHJlbW92ZVN0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBsb2dXZWJTb2NrZXRMb2FkaW5nKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKTsKICAg
ICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJl
ZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9tYWluKTsKICAgICB2b2lkIHJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIzOSwyOSArMjQwLDI5IEBAIHByaXZhdGU6CiAg
ICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcigpID0gZGVmYXVsdDsKICAgICAg
ICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKGNvbnN0IFJlc291cmNlTmV0d29ya0Fj
dGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZp
dHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYmKSA9IGRlZmF1bHQ7Ci0g
ICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQpCisg
ICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBhZ2VJRCB7IHBhZ2VJRCB9CiAgICAgICAgICAg
ICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0
eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUGFnZSB9CiAgICAgICAgIHsK
ICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcih1aW50
NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCkKKyAgICAgICAg
UmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlEKQogICAgICAgICAgICAgOiBw
YWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAgLCByZXNvdXJjZUlEIHsgcmVzb3VyY2VJRCB9
CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6
OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAgICAgICB1
aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlEIHsgMCB9Owog
ICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsgZmFsc2UgfTsKICAgICAgICAgTmV0d29ya0Fj
dGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7CiAgICAgfTsKIAogICAgIHZvaWQgc3RvcEFs
bE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0gICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2
aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgc2l6ZV90IGZpbmRSb290
TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBzdG9wQWxsTmV0d29y
a0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBz
aXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
ICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBmN2M5N2VlYmIyMS4u
ODMzZTc0ZmNmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMjYsMTggKzI2LDE4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQZXJmb3JtU3luY2hyb25vdXNMb2FkKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVycykg
LT4gKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiBkYXRhKSBTeW5jaHJvbm91cwogICAgIExvYWRQaW5n
KFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVzb3VyY2VMb2FkUGFyYW1l
dGVycykKICAgICBSZW1vdmVMb2FkSWRlbnRpZmllcih1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyKQotICAgIFBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKKyAgICBQ
YWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCiAgICAg
UHJlZmV0Y2hETlMoU3RyaW5nIGhvc3RuYW1lKQogICAgIFByZWNvbm5lY3RUbyh1aW50NjRfdCBw
cmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycyBsb2FkUGFyYW1ldGVycyk7CiAKICAgICBTdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKICAgICBDb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2Fk
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVT
aXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNj
ZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBTZXRDb29raWVzRnJvbURPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFN0cmluZyBjb29raWVTdHJpbmcpCisgICAg
Q29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJl
Q29va2llcykgU3luY2hyb25vdXMKKyAgICBTZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFN0cmluZyBjb29raWVTdHJpbmcp
CiAgICAgQ29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBl
bmFibGVkKSBTeW5jaHJvbm91cwotICAgIENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwotICAgIEdldFJh
d0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKKyAgICBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBz
dHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJl
Q29va2llcykgU3luY2hyb25vdXMKKyAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2Ft
ZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5hbWUpCiAKICAgICBSZWdpc3RlckZp
bGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250ZW50VHlwZSkKQEAgLTU2LDE2ICs1
NiwxNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgRW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFJlbW92ZVN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCk7Ci0gICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Cisg
ICAgUmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKKyAgICBD
bGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKTsKICAgICBMb2dV
c2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBkb21haW4pCiAgICAgTG9nV2ViU29ja2V0TG9hZGluZyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVu
KQogICAgIExvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKQogICAgIExvZ1N1YnJl
c291cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBzb3VyY2VEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdl
dERvbWFpbikKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29y
ZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGljcykKLSAgICBIYXNTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
c3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VB
Y2Nlc3MpIEFzeW5jCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQorICAgIEhhc1N0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4g
KGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKKyAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZy
YW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKSAtPiAoZW51bTpi
b29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9v
bCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFz
eW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCiAjZW5kaWYKIAogICAgIEFkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmlnaW4sIFN0cmluZyBkZXN0aW5hdGlv
blByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKQEAgLTg3LDcgKzg3LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAgICAgU2V0V2ViUHJvY2Vzc0lkZW50
aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vzc0lkZW50aWZpZXIpCiAKLSAg
ICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCkKLSAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKLSAgICBXZWJQcm9jZXNzU2Vzc2lvbkNo
YW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBWZWN0b3I8dWludDY0X3Q+IHBhZ2Vz
KQorICAgIFdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlE
KQorICAgIFdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQorICAgIFdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQ
QUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZXMpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggZDE0YjFkZTlkOTEuLjQwOTcxNGQ2NjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3Bw
CkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVPcmlnaW4oY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4pCiAgICAgcmV0dXJuIHVybC5w
cm90b2NvbElzRGF0YSgpIHx8IHVybC5wcm90b2NvbElzQmxvYigpIHx8ICFvcmlnaW4gfHwgb3Jp
Z2luLT5jYW5SZXF1ZXN0KHVybCk7CiB9CiAKLU5ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xv
YWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgRmV0Y2hPcHRpb25zJiYg
b3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIEhUVFBIZWFkZXJNYXAmJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBVUkwm
JiB1cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIFByZWZsaWdodFBv
bGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdy
YWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MsIExv
YWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKK05ldHdvcmtMb2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRD
aGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgRmV0Y2hPcHRpb25zJiYgb3B0
aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIEhUVFBIZWFkZXJNYXAmJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBV
UkwmJiB1cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBzb3VyY2VPcmlnaW4sIFByZWZsaWdo
dFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNV
cGdyYWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3Ms
IExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKICAgICA6IG1fb3B0aW9ucyhXVEZNb3ZlKG9wdGlv
bnMpKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICwgbV9uZXR3b3JrUHJvY2Vz
cyhuZXR3b3JrUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5oCmluZGV4IDMxZDExYzNhOGFlLi41N2RmMWRhNDY4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBA
IC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExv
YWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwgT3RoZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hl
Y2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNv
cmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3Jh
ZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7
CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hP
cHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0
X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYm
IHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0
TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOwogICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsK
IAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRyaXBsZXQgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgbV9zdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8
TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7
CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9m
cmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFk
ZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJN
YXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRl
cnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJz
LmgKaW5kZXggODk2Mzk5ZDEzMzIuLjg5NzMwY2Y5ZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKQEAgLTI3LDYgKzI3
LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtBY3Rpdml0eVRyYWNrZXIuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Np
b25JRC5oPgpAQCAtMzgsNyArMzksNyBAQCBlbnVtIGNsYXNzIFByZWNvbm5lY3RPbmx5IHsgTm8s
IFllcyB9OwogCiBjbGFzcyBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgewogcHVibGljOgotICAgIHVp
bnQ2NF90IHdlYlBhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQ7CiAgICAgdWludDY0X3Qgd2ViRnJhbWVJRCB7IDAgfTsKICAgICBXVEY6OlByb2Nlc3NJ
RCBwYXJlbnRQSUQgeyAwIH07CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEIHsgUEFMOjpT
ZXNzaW9uSUQ6OmVtcHR5U2Vzc2lvbklEKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYTVkNmY1Y2ZjYzcuLjI5ZDE3Zjk5ZjAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cApAQCAtMTE1NSw3ICsxMTU1LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXMKICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpjb21taXR0ZWRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpjb21taXR0ZWRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi0+Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihmcm9tRG9t
YWluLCB0b0RvbWFpbiwgcGFnZUlEKTsKQEAgLTE5NTQsNyArMTk1NCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29ja2V0KGJvb2wgYWxs
b3dzLCBDb21wbGV0CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZShQ
YWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAo
IURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNh
bXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NjIsNyArMTk2Miw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2Uod2ViUGFnZUlELCBt
ZXNzYWdlLCBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlOjpObyksIDApOwogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2Vi
UGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSByZXN1bHQsIFNob3VsZFNhbXBsZSBzaG91bGRT
YW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1
bHQoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSByZXN1bHQs
IFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xOTcwLDcgKzE5NzAsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFn
bm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdAogICAg
IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh3ZWJQYWdlSUQsIG1lc3NhZ2Us
IGRlc2NyaXB0aW9uLCByZXN1bHQsIFNob3VsZFNhbXBsZTo6Tm8pLCAwKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3Qgd2Vi
UGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoVmFsdWUoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlm
aWNhbnRGaWd1cmVzLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlh
Z25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxl
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYxOSw3ICsyNjE5LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVzb3VyY2VMb2FkZXImIGxvYWRlcikK
ICAgICAgICAgc2Vzc2lvbi0+cmVtb3ZlS2VwdEFsaXZlTG9hZChsb2FkZXIpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
b2xkUGFnZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKIHsKICAgICBpZiAoIXBhZ2VJ
RCB8fCAhb2xkUGFnZUlEKSB7CiAgICAgICAgIExPR19FUlJPUigiQ2Fubm90IGFkZCBwYWdlIHdp
dGggaW52YWxpZCBpZCIpOwpAQCAtMjYzOCwxMyArMjYzOCwxMyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNl
c3Npb25JRAogICAgICAgICByZXR1cm4gc2Vzc2lvbklEOwogICAgIH0pOwogCi0gICAgc3RvcmFn
ZU1hbmFnZXIuY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUlELCBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIHN0b3JhZ2VNYW5hZ2VyLmFkZEFsbG93
ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELCBjb25uZWN0aW9uKTsK
KyAgICBzdG9yYWdlTWFuYWdlci5jcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQu
dG9VSW50NjQoKSwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKKyAgICBz
dG9yYWdlTWFuYWdlci5hZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9u
KHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKICAgICBpZiAocGFnZUlEICE9IG9sZFBh
Z2VJRCkKLSAgICAgICAgc3RvcmFnZU1hbmFnZXIuY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShvbGRQYWdlSUQsIHBhZ2VJRCk7CisgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLmNsb25lU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2Uob2xkUGFnZUlELnRvVUludDY0KCksIHBhZ2VJRC50b1VJbnQ2NCgp
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBh
Z2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgaWYgKCFwYWdlSUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5u
b3QgcmVtb3ZlIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjU3LDggKzI2NTcsOCBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFBBTDo6U2Vzc2lvbgogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvJiBzdG9y
YWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2VyKCk7Ci0gICAgc3RvcmFnZU1hbmFn
ZXIucmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQs
IGNvbm5lY3Rpb24pOwotICAgIHN0b3JhZ2VNYW5hZ2VyLmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShwYWdlSUQpOworICAgIHN0b3JhZ2VNYW5hZ2VyLnJlbW92ZUFsbG93ZWRTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELnRvVUludDY0KCksIGNvbm5lY3Rpb24p
OworICAgIHN0b3JhZ2VNYW5hZ2VyLmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdl
SUQudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NXYXNE
aXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQpAQCAtMjY3NCw3ICsyNjc0
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKS0+
c3RvcmFnZU1hbmFnZXIoKS5wcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKGNvbm5lY3Rpb24pOwog
fQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VJRHMpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9j
ZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Np
b25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxQYWdlSWRlbnRpZmllcj4mIHBhZ2VJRHMp
CiB7CiAgICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCk7CiAgICAg
QVNTRVJUKG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5jb250YWlucyhjb25uZWN0aW9uSUQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRleCA3YWNi
M2Y5Njc1Yy4uZWJmM2I3ZmU2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Zl
dGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvSURCU2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2
aWNlV29ya2VyVHlwZXMuaD4KQEAgLTEzNiw4ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcg
TmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2lu
ZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsK
LSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1
aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBOZXR3b3JrUHJv
Y2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMTkw
LDkgKzE4OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gRGlhZ25v
c3RpYyBtZXNzYWdlcyBsb2dnaW5nLgotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWlu
dDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5n
UmVzdWx0VHlwZSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0Rp
YWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8
Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtMjU4LDcg
KzI1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9E
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9wRnJh
bWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYm
KTsKLSAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9t
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q3Jv
c3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNl
dENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtMjcxLDEwICsyNzAs
MTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlv
bihQQUw6OlNlc3Npb25JRCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlB
dXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKIAotICAgIHZvaWQgd2ViUGFnZVdhc0Fk
ZGVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IG9sZFBhZ2VJRCk7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5l
Y3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHdlYlBh
Z2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlBhZ2VX
YXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcik7CiAgICAgdm9pZCB3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29u
bmVjdGlvbiYpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVj
dGlvbiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+Jik7CisgICAgdm9p
ZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mKTsKICAgICB2b2lkIGdl
dExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWls
cz4mJik+JiYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IGQ5ZmVlMDc4ZmU3Li5mNWVmNTMwMTM0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzEs
NyArMTMxLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewog
ICAgIFNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiByZWRpcmVjdGVkVG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9w
RnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gcmVkaXJlY3RlZEZyb21Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+
ICgpIEFzeW5jCi0gICAgQ29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZyb21E
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCB1aW50NjRfdCBwYWdl
SUQpIC0+ICgpIEFzeW5jCisgICAgQ29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGZyb21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+ICgpIEFzeW5jCiAgICAgU2V0Q3Jvc3NTaXRlTG9h
ZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0b0RvbWFpbikgLT4gKCkgQXN5bmMKICAgICBSZXNldENyb3NzU2l0ZUxvYWRzV2l0
aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgp
IEFzeW5jCiAgICAgRGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4sIGJvb2wgaW5jbHVkZUh0dHBP
bmx5Q29va2llcykgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKaW5kZXgg
NThhYWNiOTkzZGIuLjMzY2RjNGQxN2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcApA
QCAtMTA3LDggKzEwNywxMSBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3VyYwogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53ZWJQYWdlSUQpKQorICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSUQ7CisgICAgZGVjb2RlciA+PiB3ZWJQYWdlSUQ7Cisg
ICAgaWYgKCF3ZWJQYWdlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXN1bHQud2Vi
UGFnZUlEID0gKndlYlBhZ2VJRDsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lndl
YkZyYW1lSUQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZmUyNjUz
NmYyMWMuLmY0Y2JhZTJkYWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNzQsMTggKzE3NCwxOCBAQCB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICBtX25ldHdvcmtMb2Fk
Q2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfSwgdGhp
cywgW3RoaXNdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBXVEY6OnN3aXRjaE9uKHJl
c3VsdCwKICAgICAgICAgICAgICAgICBbdGhpc10gKFJlc291cmNlRXJyb3ImIGVycm9yKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBlcnJvciBj
aGVja2luZyAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3Vz
ID0gJWQsIHBhcmVudFBJRCA9ICVkLCBlcnJvci5kb21haW4gPSAle3B1YmxpY31zLCBlcnJvci5j
b2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlz
LT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVycm9yLmRvbWFpbigp
LnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IGVycm9yIGNoZWNraW5nIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0g
JWQsIGVycm9yLmRvbWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNvZGUgPSAlZCkiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5j
aHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21haW4oKS51dGY4KCku
ZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZXJy
b3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmRpZEZh
aWxMb2FkaW5nKGVycm9yKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIFt0
aGlzXSAoTmV0d29ya0xvYWRDaGVja2VyOjpSZWRpcmVjdGlvblRyaXBsZXQmIHRyaXBsZXQpIHsK
ICAgICAgICAgICAgICAgICAgICAgdGhpcy0+bV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVx
dWVzdEZvckNhY2hlZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+
d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRyaXBsZXQucmVxdWVzdCksIFdURk1v
dmUodHJpcGxldC5yZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQucmVkaXJlY3RSZXNw
b25zZSkpOwotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFy
dDogc3ludGhldGljIHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVSTCB3YXMgbW9kaWZp
ZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
LCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNl
KCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBzeW50aGV0aWMg
cmVkaXJlY3Qgc2VudCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdhcyBtb2RpZmllZCAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9
ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgp
LCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAg
ICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMtPmNhblVzZUNhY2hlKHJlcXVl
c3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCks
IG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVu
dFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNv
dXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwog
ICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+cmV0cmlldmVDYWNoZUVudHJ5KHJlcXVlc3Qp
OwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9
CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkK
ICAgICB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBvbmNlIG1fbmV0d29y
a0xvYWRDaGVja2VyIGlzIHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgogICAgIGlmIChjYW5V
c2VDYWNoZShvcmlnaW5hbFJlcXVlc3QoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpLCBtX3Bh
cmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3Rh
cnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNv
dXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCksIG1f
cGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICByZXRyaWV2ZUNhY2hlRW50cnkob3JpZ2lu
YWxSZXF1ZXN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI3LDEzICsyMjcsMTMg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIGxvYWRlci0+bG9nU2xvd0NhY2hlUmV0
cmlldmVJZk5lZWRlZChpbmZvKTsKIAogICAgICAgICBpZiAoIWVudHJ5KSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIG5v
dCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNo
ZUVudHJ5OiBSZXNvdXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3Vy
Y2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVy
LT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgICAgIGlmIChlbnRyeS0+aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNl
QWdlQ2FwKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBj
YXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwog
ICAgICAgICAgICAgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbiA9IFdURk1vdmUo
ZW50cnkpOwogICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRhdGlvblJlcXVlc3Qg
PSBvcmlnaW5hbFJlcXVlc3QoKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9h
ZChXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CkBAIC0yNDEs
MjEgKzI0MSwyMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVu
dHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgfQogI2VuZGlmCiAg
ICAgICAgIGlmIChlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3Qg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFu
ZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5j
aHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJj
ZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFdpbGxT
ZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShlbnRyeSkp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChsb2FkZXItPm1f
cGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnktPnJlc3BvbnNlKCkuY2Vy
dGlmaWNhdGVJbmZvKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJl
dHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBjZXJ0aWZp
Y2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5
OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNlcnRpZmljYXRlIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAg
ICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJz
dExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSB8fCByZXF1ZXN0LmNhY2hlUG9saWN5KCkgPT0gV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlDYWNoZURhdGEpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
VmFsaWRhdGluZyBjYWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVk
LCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmV0cmlldmVDYWNoZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRl
cnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAg
ICAgICAgIGxvYWRlci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9tIGNhY2hlIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmV0cmlldmVkIHJl
c291cmNlIGZyb20gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNT
eW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICBsb2FkZXItPmRpZFJldHJpZXZlQ2Fj
aGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgfSk7CiB9CkBAIC0yNjMsNyArMjYzLDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnRO
ZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYWQgbG9hZCkKIHsK
ICAgICBpZiAobG9hZCA9PSBGaXJzdExvYWQ6OlllcykgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBp
c1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJl
c291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRl
bnNpb25zKCk7CiAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQog
ICAgIH0KICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygi
QXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIChpZD0lIiBQ
Ukl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNz
aW9uSUQoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0TmV0
d29ya0xvYWQ6IEF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lv
biB0aGF0IGRvZXMgbm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQUkl1NjQg
IikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9w
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDog
QXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIHRoYXQgZG9l
cyBub3QgZXhpc3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklEPSUiIFBSSXU2NCAiKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7
CiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVz
c2FnZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpp
bnZhbGlkU2Vzc2lvbklES2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAg
ICBkaWRGYWlsTG9hZGluZyhpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpz
dGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAg
cGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtMb2Fk
ID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nvbm5lY3Rpb24tPmJs
b2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCi0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3Jr
TG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7
cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRl
c2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQogCiB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3du
bG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQogewotICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5n
IE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIp
OworICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxv
YWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRv
d25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAg
CiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSByZXNvdXJjZSBjYW1lIGZyb20gdGhlIGRp
c2sgY2FjaGUuCiAgICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7CkBAIC0zNDAsNyArMzQwLDcgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJvcnQ6IENhbmNlbGlu
ZyByZXNvdXJjZSBsb2FkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAgICAgICAgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
KTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAgICAgaWYgKG1fcGFy
YW1ldGVycy5vcHRpb25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX2lz
S2VwdEFsaXZlKSB7CiAgICAgICAgIG1faXNLZXB0QWxpdmUgPSB0cnVlOwpAQCAtMzg0LDEyICsz
ODQsMTIgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRG
b3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgeEYKICAgICB9CiAgICAgY2FzZSBYRnJhbWVP
cHRpb25zQ29uZmxpY3Q6IHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9ICJNdWx0aXBs
ZSAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXJzIHdpdGggY29uZmxpY3RpbmcgdmFsdWVzICgnIiAr
IHhGcmFtZU9wdGlvbnMgKyAiJykgZW5jb3VudGVyZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicuIEZhbGxpbmcgYmFjayB0byAnREVO
WScuIjsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2Ug
eyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3Nh
Z2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdl
TGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
Y2FzZSBYRnJhbWVPcHRpb25zSW52YWxpZDogewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdl
ID0gIkludmFsaWQgJ1gtRnJhbWUtT3B0aW9ucycgaGVhZGVyIGVuY291bnRlcmVkIHdoZW4gbG9h
ZGluZyAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInOiAnIiAr
IHhGcmFtZU9wdGlvbnMgKyAiJyBpcyBub3QgYSByZWNvZ25pemVkIGRpcmVjdGl2ZS4gVGhlIGhl
YWRlciB3aWxsIGJlIGlnbm9yZWQuIjsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3Vy
Y2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIo
KSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogICAgIH0KQEAgLTQxNiw3ICs0MTYsNyBAQCBib29sIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJh
bWVPcHRpbwogICAgICAgICBTdHJpbmcgeEZyYW1lT3B0aW9ucyA9IG1fcmVzcG9uc2UuaHR0cEhl
YWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpYRnJhbWVPcHRpb25zKTsKICAgICAgICAgaWYgKCF4
RnJhbWVPcHRpb25zLmlzTnVsbCgpICYmIHNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRp
b25zKHhGcmFtZU9wdGlvbnMsIHJlc3BvbnNlLnVybCgpKSkgewogICAgICAgICAgICAgU3RyaW5n
IGVycm9yTWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGRpc3BsYXkgJyIgKyByZXNwb25zZS51cmwoKS5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGluIGEgZnJhbWUgYmVjYXVzZSBp
dCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyB4RnJhbWVPcHRpb25zICsgIicuIjsKLSAg
ICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxl
dmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xl
TWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJp
dHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTQyNSw3ICs0MjUsNyBAQCBib29sIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJh
bWVPcHRpbwogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25I
YW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBodHRwU3RhdHVzQ29kZSA9ICVk
LCBsZW5ndGggPSAlIiBQUklkNjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFt
ZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJlY2VpdmVkUmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5n
dGgoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBodHRwU3RhdHVzQ29kZSA9ICVkLCBsZW5ndGggPSAlIiBQUklkNjQgIiki
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcmVjZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVz
Q29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKTsKIAogICAg
IG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlY2VpdmVkUmVzcG9uc2UpOwogCkBAIC01MDUsNyArNTA1
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNv
dXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0
ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCBy
ZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2
aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0
KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAg
ICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgQVNTRVJUKCFt
X2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IHJlcAogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBsZW5ndGggPSAlemQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX251bUJ5dGVzUmVjZWl2ZWQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9udW1CeXRl
c1JlY2VpdmVkKTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0
cmljcyhpZGVudGlmaWVyKCksIG5ldHdvcmtMb2FkTWV0cmljcyk7CkBAIC01NjksNyArNTY5LDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxMb2FkaW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc1RpbWVv
dXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgaXNBY2Nlc3NDb250cm9sID0gJWQsIGVyckNv
ZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0Nh
bmNlbGxhdGlvbigpLCBlcnJvci5pc0FjY2Vzc0NvbnRyb2woKSwgZXJyb3IuZXJyb3JDb2RlKCkp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxMb2FkaW5nOiAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgaXNBY2Nlc3NDb250cm9s
ID0gJWQsIGVyckNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgZXJyb3Iu
aXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlzQWNjZXNzQ29udHJv
bCgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0
d29ya0xvYWRNZXRyaWNzKCkpCiAgICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTmV0d29ya0xv
YWRJbmZvcm1hdGlvbihpZGVudGlmaWVyKCkpOwpAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVl
c3QmJiBuZXdSZXF1ZXN0CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJjb250aW51ZVdpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRS
ZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKIAog
ICAgIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMgPSBpc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFsczsKIApAQCAtOTg4LDYgKzk4OCwxMSBAQCBzdGF0aWMgU3RyaW5nIGVz
Y2FwZUlERm9ySlNPTihjb25zdCBPcHRpb25hbDx1aW50NjRfdD4mIHZhbHVlKQogICAgIHJldHVy
biB2YWx1ZSA/IFN0cmluZzo6bnVtYmVyKHZhbHVlLnZhbHVlKCkpIDogU3RyaW5nKCJOb25lIl9z
KTsKIH07CiAKK3N0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiYgdmFsdWUpCit7CisgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1i
ZXIodmFsdWUtPnRvVUludDY0KCkpIDogU3RyaW5nKCJOb25lIl9zKTsKK307CisKIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKG1fY29ubmVjdGlvbiwgc2Vzc2lvbklE
KCkpKTsKQEAgLTk5OCw3ICsxMDAzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omxv
Z0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKICAgICBsb2dDb29raWVJbmZvcm1hdGlvbihtX2Nv
bm5lY3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0
IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCku
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1
ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJl
ZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRp
YyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9n
Z2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRp
b25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJ
bmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRl
bnRpZmllcikKIHsKICAgICBBU1NFUlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dD
b29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lv
bklEKCkpKTsKIApAQCAtMTAyNSw3ICsxMDMwLDcgQEAgc3RhdGljIHZvaWQgbG9nQmxvY2tlZENv
b2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW8K
ICN1bmRlZiBMT0NBTF9MT0dfSUZfQUxMT1dFRAogfQogCi1zdGF0aWMgdm9pZCBsb2dDb29raWVJ
bmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0
aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRl
cm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3Ry
aW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
aWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRM
b2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vz
c2lvbklEKCkpKTsKIApAQCAtMTA4Niw3ICsxMDkxLDcgQEAgc3RhdGljIHZvaWQgbG9nQ29va2ll
SW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVj
dGkKICN1bmRlZiBMT0NBTF9MT0dfSUZfQUxMT1dFRAogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9i
amVjdCwgY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IGlkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3Jt
YXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0
cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDk5LDE3ICsxMTA0LDE3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyYKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsIG1l
c3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsb25nKQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlkZW50
aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgbWVz
c2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQoVVJMJiYgcmVwb3J0VVJMLCBSZWY8Rm9ybURh
dGE+JiYgcmVwb3J0KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRDU1BWaW9s
YXRpb25SZXBvcnQgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgV1RGTW92ZShyZXBvcnRVUkwp
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgV1RGTW92ZShyZXBvcnQpIH0gfSwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZENTUFZpb2xh
dGlvblJlcG9ydCB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBXVEZNb3ZlKHJlcG9ydFVSTCks
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZNb3ZlKHJlcG9ydCkgfSB9LCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQoV2ViQ29yZTo6U2VjdXJpdHlQ
b2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCYmIGV2ZW50SW5pdCkKIHsKLSAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCB7IG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBXVEZNb3ZlKGV2ZW50SW5pdCkgfSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RW5xdWV1ZVNlY3VyaXR5UG9s
aWN5VmlvbGF0aW9uRXZlbnQgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgV1RGTW92ZShldmVu
dEluaXQpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dTbG93Q2FjaGVSZXRyaWV2ZUlmTmVlZGVkKGNvbnN0
IE5ldHdvcmtDYWNoZTo6Q2FjaGU6OlJldHJpZXZlSW5mbyYgaW5mbykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGE4
YTMwMDVjMTQyLi5hOGY2ZDMxNTc5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBAIC04NCw3ICs4NCw3IEBAIHB1Ymxp
YzoKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFt
ZXRlcnMuc2Vzc2lvbklEOyB9CiAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXI7IH0KICAgICB1aW50NjRf
dCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQ7IH0KLSAg
ICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
OyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRDsgfQogCiAgICAgc3RydWN0IFN5bmNocm9ub3VzTG9hZERh
dGE7CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5m
b3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxh
YmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2
NF90PiBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbihO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBPcHRpb25hbDx1aW50NjRf
dD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzYWJsZUV4dHJhTmV0d29ya0xv
YWRNZXRyaWNzQ2FwdHVyZSgpIHsgbV9zaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJp
Y3MgPSBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmgKaW5kZXggYzdmMzg2YjNkN2MuLjhiYmMxNjk3ODU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVFbnRyeS5oIgogI2luY2x1ZGUgIk5l
dHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC04NCw3ICs4NSw3IEBAIGVudW0gY2xhc3MgVXNlRGVj
aXNpb24gewogICAgIE5vRHVlVG9FeHBpcmVkUmVkaXJlY3QKIH07CiAKLXVzaW5nIEdsb2JhbEZy
YW1lSUQgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyp3ZWJQYWdlSUQqLywgdWludDY0X3QgLyp3ZWJG
cmFtZUlEKi8+OwordXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+OwogCiBjbGFzcyBDYWNoZSA6IHB1
YmxpYyBSZWZDb3VudGVkPENhY2hlPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKaW5kZXgg
OTY1YzZmYTY2NGIuLjJkZDBlN2Q0NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw3ICs0
Miw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tD
b2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogICAgIGZyaWVuZCBjbGFzcyBO
ZXR3b3JrU2Vzc2lvbkNvY29hOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFU
YXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1Bv
bGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5n
UG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RP
bmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3
b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRpYyBS
ZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdv
cmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdl
YkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGlu
Z1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFBy
ZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0
d29ya0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdl
SUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpKTsKICAgICB9CkBAIC03MCwxMiArNzAsMTIgQEAg
cHVibGljOgogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3M7IH0KIAogICAgIHVpbnQ2NF90IGZy
YW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSUQ7IH07Ci0gICAgdWludDY0X3QgcGFnZUlE
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH07CiAKICAgICBTdHJpbmcgZGVz
Y3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlm
ZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wg
c2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHks
IGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtB
Y3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lv
biYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBX
ZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFz
a0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tl
cj4pOwogCiAgICAgYm9vbCB0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciYpOwogICAgIHZvaWQgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVy
ZmFjZUlmTmVlZGVkKF9fc3Ryb25nIE5TVVJMUmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRT
bmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZik7CkBAIC05Myw3ICs5Myw3IEBA
IHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2s7CiAg
ICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAg
IHVpbnQ2NF90IG1fZnJhbWVJRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCiAgICAgYm9vbCBtX2hhc0JlZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3Jh
Z2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMzVlNDQzYjllZTkuLjI4YTA1
ZTgwZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTE2MCw3ICsxNjAsNyBAQCBzdGF0aWMg
dm9pZCB1cGRhdGVUYXNrV2l0aEZpcnN0UGFydHlGb3JTYW1lU2l0ZUNvb2tpZXMoTlNVUkxTZXNz
aW9uRGF0YVRhc2sqIHRhcwogI2VuZGlmCiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3
b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNr
Q2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdp
dGhDcmVkZW50aWFscywgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29y
ZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29u
dGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJv
b2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9u
bHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmln
YXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRy
YWNrZXIpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29y
a1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNv
ZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3Vs
ZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBP
cHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQog
ICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdFdpdGhDcmVkZW50
aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQogICAgICwg
bV9mcmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC0yMzYsNyArMjM2
LDcgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtT
ZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICBpZiAoc2hvdWxkQmxvY2tDb29raWVz
KSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIGlmIChtX3Nlc3Npb24tPnNo
b3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxs
dSwgdGFza0lEID0gJWx1OiBCbG9ja2luZyBjb29raWVzIGZvciBVUkwgJXMiLCB0aGlzLCBwYWdl
SUQsIGZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBuc1Jl
cXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdv
cmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJh
bWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwg
dGhpcywgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sg
dGFza0lkZW50aWZpZXJdLCBuc1JlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcp
OwogI2Vsc2UKICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBCbG9ja2luZyBjb29r
aWVzIGZvciBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5h
YnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbmRpZgpAQCAtMzY2LDcgKzM2Niw3IEBAIHZv
aWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMgPSBtX3N0
b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzIHx8IG1fc2Vzc2lvbi0+bmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKCkuc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG1fZnJhbWVJRCwgbV9wYWdl
SUQpOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChtX3Nlc3Npb24tPnNob3Vs
ZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQg
PSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiAlcyBjb29raWVzIGZvciByZWRp
cmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRCwgbV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylb
bV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29va2llcyA/ICJCbG9ja2luZyIg
OiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3
b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwg
dGFza0lEID0gJWx1OiAlcyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lk
ZW50aWZpZXJdLCAoc2hvdWxkQmxvY2tDb29raWVzID8gIkJsb2NraW5nIiA6ICJOb3QgYmxvY2tp
bmciKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAg
TE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSAlcyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMi
LCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29va2llcyA/ICJCbG9ja2lu
ZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CiAjZW5kaWYKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29h
Ojp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgog
ICAgIGlmICghc2hvdWxkQmxvY2tDb29raWVzKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CiAgICAgICAgIGlmIChtX3Nlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0
d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0
aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUs
IHRhc2tJRCA9ICVsdTogTm90IHBhcnRpdGlvbmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwg
JXMiLCB0aGlzLCBtX3BhZ2VJRCwgbV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRh
c2tJZGVudGlmaWVyXSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3
b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwg
dGFza0lEID0gJWx1OiBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMgZm9yIHJlZGlyZWN0IFVSTCAl
cyIsIHRoaXMsIG1fcGFnZUlELnRvVUludDY0KCksIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcp
W21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CiAjZWxzZQogICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IE5vdCBwYXJ0
aXRpb25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRp
Zmllcl0sIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCBkNWY5ODFlNDUz
NC4uZjg2NDU0ZGRhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01l
c3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2Vu
ZGVyLmgKQEAgLTM0LDkgKzM0LDkgQEAgY2xhc3MgTWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+TWVzc2FnZVNlbmRlcigpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9v
bCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9u
cyA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzZW5kKG1lc3NhZ2UsIG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCksIHsgfSk7CisgICAgICAgIHJldHVybiBzZW5kKG1lc3NhZ2UsIG1l
c3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCksIHNlbmRPcHRpb25zKTsKICAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQpA
QCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVz
dGluYXRpb25JRCwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CiAKLSAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgc2VuZFdpdGhBc3lu
Y1JlcGx5KFQmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+Cisg
ICAgdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFu
ZGxlcikKICAgICB7CiAgICAgICAgIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNTI1MTQ5MDJhYmIuLjViOTc1MzAzMDViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIwNSw2ICsyMDUsNyBA
QCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogICAgICAg
ICAnU3RyaW5nJywKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAg
ICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAgICAgJ1dlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdl
SGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcApp
bmRleCBhNmEwMDk5NTUwMC4uZTYwNWE0NTk0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJUGFnZUhhbmRsZS5jcHAKQEAgLTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJ
IHsKIAotUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQp
CitSZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJ
RCwgZmFsc2UpKTsKIH0KIAotUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9j
b252ZXJ0aW5nKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpj
cmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAot
UGFnZUhhbmRsZTo6UGFnZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVy
dGluZykKK1BhZ2VIYW5kbGU6OlBhZ2VIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBib29sIGlzQXV0b2NvbnZlcnRpbmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAg
LCBtX2lzQXV0b2NvbnZlcnRpbmcoaXNBdXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwx
NiBAQCB2b2lkIFBhZ2VIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAKIGJvb2wgUGFnZUhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRy
PE9iamVjdD4mIHJlc3VsdCkKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShwYWdlSUQpKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQ7CisgICAgZGVjb2RlciA+PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKGlzQXV0b2NvbnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICByZXN1bHQgPSBpc0F1dG9jb252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmco
cGFnZUlEKSA6IGNyZWF0ZShwYWdlSUQpOworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcg
PyBjcmVhdGVBdXRvY29udmVydGluZygqcGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVBhZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgK
aW5kZXggZjMwZmFmYmRjMzEuLjdkN2FkYzY4OWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElQYWdlSGFuZGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQVBJUGFnZUhhbmRs
ZV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTM4
LDIwICszOSwyMCBAQCBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgUGFnZUhhbmRsZSA6IHB1Ymxp
YyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUhhbmRsZT4gewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgc3RhdGlj
IFJlZjxQYWdlSGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyh1aW50NjRfdCBwYWdlSUQpOwor
ICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KTsKKyAgICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNyZWF0ZUF1dG9jb252ZXJ0aW5nKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5QYWdlSGFuZGxlKCk7CiAKLSAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAg
Ym9vbCBpc0F1dG9jb252ZXJ0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dG9jb252ZXJ0aW5n
OyB9CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgUmVmUHRyPE9iamVjdD4mKTsKIAogcHJpdmF0ZToK
LSAgICBleHBsaWNpdCBQYWdlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBpc0F1dG9jb252
ZXJ0aW5nKTsKKyAgICBleHBsaWNpdCBQYWdlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBib29sIGlzQXV0b2NvbnZlcnRpbmcpOwogCi0gICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7
CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgY29uc3Qg
Ym9vbCBtX2lzQXV0b2NvbnZlcnRpbmc7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KaW5kZXggMWNiOWU2Yzdk
NDEuLmZlNWI5Mzg3MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC00NCw3ICs0NCw3IEBAIFJlbW90ZU9i
amVjdFJlZ2lzdHJ5OjpSZW1vdGVPYmplY3RSZWdpc3RyeShfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSAqcmVtb3RlT2JqZWN0CiAgICAgLCBtX21lc3NhZ2VTZW5kZXIocGFnZSkKICAgICAsIG1fdGFr
ZUJhY2tncm91bmRBY3Rpdml0eVRva2VuKFtdIHsgcmV0dXJuIFByb2Nlc3NUaHJvdHRsZXI6OkJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCk7IH0pCiAgICAgLCBtX2lzUmVnaXN0ZXJlZEFzTWVzc2Fn
ZVJlY2VpdmVyKHRydWUpCi0gICAgLCBtX21lc3NhZ2VSZWNlaXZlcklEKHBhZ2UucGFnZUlEKCkp
CisgICAgLCBtX21lc3NhZ2VSZWNlaXZlcklEKHBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSkKIHsK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fbWVzc2FnZVJl
Y2VpdmVySUQsICp0aGlzKTsKICAgICBwYWdlLnNldFJlbW90ZU9iamVjdFJlZ2lzdHJ5KCp0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5n
Q29udGV4dEhhbmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dEhhbmRsZS5tbQppbmRleCA1OGNiMWRkMmI1ZS4uN2U5N2YxNzZjMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhh
bmRsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0Nv
bnRleHRIYW5kbGUubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogQGltcGxlbWVudGF0aW9uIFdLQnJv
d3NpbmdDb250ZXh0SGFuZGxlCiAKLS0gKGlkKV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFn
ZUlECistIChpZClfaW5pdFdpdGhQYWdlSUQ6KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKXBhZ2VJ
RAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmls
OwpAQCAtNDAsNyArNDAsNyBAQCAtIChpZClfaW5pdFdpdGhQYWdlSUQ6KHVpbnQ2NF90KXBhZ2VJ
RAogCiAtIChOU1VJbnRlZ2VyKWhhc2gKIHsKLSAgICByZXR1cm4gX3BhZ2VJRDsKKyAgICByZXR1
cm4gX3BhZ2VJRC50b1VJbnQ2NCgpOwogfQogCiAtIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdApA
QCAtNTMsNyArNTMsNyBAQCAtIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdAogCiAtICh2b2lkKWVu
Y29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiB7Ci0gICAgW2NvZGVyIGVuY29kZUludDY0
Ol9wYWdlSUQgZm9yS2V5OkAicGFnZUlEIl07CisgICAgW2NvZGVyIGVuY29kZUludDY0Ol9wYWdl
SUQudG9VSW50NjQoKSBmb3JLZXk6QCJwYWdlSUQiXTsKIH0KIAogLSAoaWQpaW5pdFdpdGhDb2Rl
cjooTlNDb2RlciAqKWNvZGVyCkBAIC02MSw3ICs2MSw3IEBAIC0gKGlkKWluaXRXaXRoQ29kZXI6
KE5TQ29kZXIgKiljb2RlcgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgX3BhZ2VJRCA9IFtjb2RlciBkZWNvZGVJbnQ2NEZvcktleTpA
InBhZ2VJRCJdOworICAgIF9wYWdlSUQgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllclR5cGU+KFtjb2RlciBkZWNvZGVJbnQ2NEZvcktleTpAInBhZ2VJRCJdKTsK
IAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKaW5k
ZXggMmE5ZTY0NjI4MWEuLjQzZTQxZTI0Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVy
bmFsLmgKQEAgLTI0LDExICsyNCwxMiBAQAogICovCiAKICNpbXBvcnQgIldLQnJvd3NpbmdDb250
ZXh0SGFuZGxlLmgiCisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAKIEBpbnRl
cmZhY2UgV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgKCkKIAotQHByb3BlcnR5IChub25hdG9taWMs
IHJlYWRvbmx5LCBnZXR0ZXIgPSBfcGFnZUlEKSB1aW50NjRfdCBwYWdlSUQ7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1fcGFnZUlEKSBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQ7CiAKLS0gKGlkKV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlEOwor
LSAoaWQpX2luaXRXaXRoUGFnZUlEOihXZWJDb3JlOjpQYWdlSWRlbnRpZmllcilwYWdlSUQ7CiAK
IEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRleCBlYjhhMGI2NjE3YS4uZDRlMWMyNTAw
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSVBDOjpDb25u
ZWN0aW9uKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdAogCiB1aW50NjRfdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiAqbV9kZXN0aW5hdGlv
bklEOworICAgIHJldHVybiBtX2Rlc3RpbmF0aW9uSUQtPnRvVUludDY0KCk7CiB9CiAKIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNhbk1ha2VQYXltZW50cyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIHJlcGx5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hh
bnRJZGVudGlmaQogICAgIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZp
ZXIsIGRvbWFpbk5hbWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1lbnRVSSh1aW50NjRfdCBkZXN0aW5h
dGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRp
bmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNv
bnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVz
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQYXltZW50VUkoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlu
a0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8mIGNvb3JkaW5hdG9yID0gYWN0aXZlUGF5
bWVudENvb3JkaW5hdG9yUHJveHkoKSkKICAgICAgICAgY29vcmRpbmF0b3ItPmRpZENhbmNlbFBh
eW1lbnRTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAppbmRleCBkMjM3ZWFiM2RhYi4uNmU0
YTg1Y2YyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNs
dWRlICJQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0x
MTUsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbk1ha2VQYXltZW50cyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhB
Y3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IGRvbWFpbk5hbWUsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKTsKICAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7Ci0gICAgdm9pZCBzaG93UGF5bWVudFVJKHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworICAgIHZvaWQgc2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VS
TFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKICAgICB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdN
ZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+Jik7CkBAIC0x
NDcsNyArMTQ4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ2xpZW50JiBtX2NsaWVudDsK
LSAgICBPcHRpb25hbDx1aW50NjRfdD4gbV9kZXN0aW5hdGlvbklEOworICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX2Rlc3RpbmF0aW9uSUQ7CiAKICAgICBlbnVtIGNsYXNz
IFN0YXRlIHsKICAgICAgICAgLy8gSWRsZSAtIE5vdGhpbmcncyBoYXBwZW5pbmcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGRkMzEzMTI3YmY0Li4xZGU0Y2Rk
Y2U0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMwLDcg
KzMwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgewogICAgIENh
bk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0
cmluZyBkb21haW5OYW1lLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGNhbk1h
a2VQYXltZW50cykgQXN5bmMKICAgICBPcGVuUGF5bWVudFNldHVwKFN0cmluZyBtZXJjaGFudElk
ZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKLSAg
ICBTaG93UGF5bWVudFVJKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5r
SWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBh
eW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU2hvd1BheW1l
bnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4g
bGlua0ljb25VUkxTdHJpbmdzLCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dCBwYXltZW50UmVxdWVzdCkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogICAgIENvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uKFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24gcGF5
bWVudE1lcmNoYW50U2Vzc2lvbikKICAgICBDb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9u
KE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiB1cGRhdGUpCiAgICAgQ29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdD
b250YWN0VXBkYXRlPiB1cGRhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA2ZWIz
MzVmMDdkMy4uOWRlYjc2ZmYxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcApAQCAtNzUs
NyArNzUsNyBAQCB1aW50NjRfdCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmFkZENoYWxsZW5nZVRv
Q2hhbGxlbmdlTWFwKENoYWxsZW5nZSYmIGNoYWxsZW5nZQogICAgIHJldHVybiBjaGFsbGVuZ2VJ
RDsKIH0KIAotYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNob3VsZENvYWxlc2NlQ2hhbGxl
bmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0Citib29sIEF1dGhlbnRpY2F0aW9uTWFu
YWdlcjo6c2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5n
ZSkgY29uc3QKIHsKICAgICBpZiAoIWNhbkNvYWxlc2NlQ2hhbGxlbmdlKGNoYWxsZW5nZSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBWZWN0b3I8dWludDY0X3Q+
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0
X3QgY2hhbAogICAgIHJldHVybiBjaGFsbGVuZ2VzVG9Db2FsZXNjZTsKIH0KIAotdm9pZCBBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKHBhZ2VJRCk7CiAgICAgQVNTRVJUKGZyYW1lSUQpOwpAQCAtMTI0LDcg
KzEyNCw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1CiAKIHZvaWQgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2Vu
ZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIHVpbnQ2NF90IGR1bW15UGFnZUlEID0gMDsKKyAgICBQYWdl
SWRlbnRpZmllciBkdW1teVBhZ2VJRDsKICAgICB1aW50NjRfdCBjaGFsbGVuZ2VJRCA9IGFkZENo
YWxsZW5nZVRvQ2hhbGxlbmdlTWFwKHsgZHVtbXlQYWdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KTsKICAgICAKICAgICAvLyBDb2FsZXNj
ZSBjaGFsbGVuZ2VzIGluIHRoZSBzYW1lIHByb3RlY3Rpb24gc3BhY2UgYW5kIGluIHRoZSBzYW1l
IHBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9B
dXRoZW50aWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCmluZGV4IDdmZTM5OWUwYjdlLi44NmU3NDRjMTA4
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJO
ZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVu
dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25I
YW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciog
c3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25s
b2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdm9pZCBjb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsJiYpOwpAQCAtNjksNyArNzAsNyBAQCBwdWJsaWM6
CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IENoYWxsZW5nZSB7Ci0gICAgICAgIHVpbnQ2NF90IHBh
Z2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAgICAgICBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2U7CiAgICAgICAgIENoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyOwogICAgIH07CkBAIC04Myw3
ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHVpbnQ2NF90IGFkZENoYWxs
ZW5nZVRvQ2hhbGxlbmdlTWFwKENoYWxsZW5nZSYmKTsKLSAgICBib29sIHNob3VsZENvYWxlc2Nl
Q2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRD
b2FsZXNjZUNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgY2hhbGxl
bmdlSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgY29uc3Q7CiAK
ICAgICBWZWN0b3I8dWludDY0X3Q+IGNvYWxlc2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90
IGNoYWxsZW5nZUlEKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
VGV4dElucHV0Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4
dC5oCmluZGV4IDRmNzVmZDgwNmY2Li41NGQ0Mjc3Yjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1RleHRJbnB1dENvbnRleHQuaApAQCAtMjksMTMgKzI5LDE0IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9Eb2N1bWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnRJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgVGV4dElu
cHV0Q29udGV4dCB7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kaW5nUmVjdDsKIAotICAg
IHVpbnQ2NF90IHdlYlBhZ2VJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHdlYlBhZ2VJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1
bWVudElkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6RWxlbWVudElkZW50aWZpZXIgZWxlbWVudElk
ZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5jcHAKaW5kZXggOWRiYjM2YTQ1NTMuLmQ5MDBhMTY3MzNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMzUsMTIgKzM1LDEy
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8
V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJh
Y2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0
X3QgcGFnZUlEKQorUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW06OmNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlKSwgcGFnZUlEKSk7CiB9CiAKLVdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlz
dEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIDogbV9pdGVtU3RhdGUoV1RG
TW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQog
ICAgICwgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXIobV9pdGVtU3RhdGUuaWRlbnRpZmllci5wcm9j
ZXNzSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uaAppbmRleCA4NzJlZjE4MDk1ZC4uYmEzNDQ4MGNkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQ2LDcgKzQ3LDcgQEAgY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6QmFja0ZvcndhcmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50
NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3Jl
YXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGljIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0
dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWludDY0
X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9jZXNz
SWRlbnRpZmllcihjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmllcikg
eyBtX2xhc3RQcm9jZXNzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4Miwx
MiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3Vz
cGVuZGVkUGFnZUZyb21Qcm9jZXNzUG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlIG1faXRlbVN0YXRlOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1f
bGFzdFByb2Nlc3NJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBt
X3N1c3BlbmRlZFBhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBlOWRhNjBhZWViZS4uMGNiZmQwMzQ2YWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCkBAIC0zOTIsNyArMzkyLDcgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvciA9IFdU
Rk1vdmUoKmJhY2tncm91bmRDb2xvcik7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1aW50NjRf
dD4+IG9sZFBhZ2VJRDsKKyAgICBPcHRpb25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IG9s
ZFBhZ2VJRDsKICAgICBkZWNvZGVyID4+IG9sZFBhZ2VJRDsKICAgICBpZiAoIW9sZFBhZ2VJRCkK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBjMmJlODQxNDZiMy4uOTAxMjdiYzMx
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFQcm9kdWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2luYXRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CkBA
IC0yMDIsNyArMjAzLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKIAotICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KaW5kZXggYzY1NDg0ZjU1MTIuLjcx
MWEyNjE5ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVj
dEdyYXBoLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgu
bW0KQEAgLTMwMiw3ICszMDIsNyBAQCBib29sIE9iakNPYmplY3RHcmFwaDo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgUmV0YWluUHRyPGlkPiYgcmVzdWx0KQogICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhZ2VJRCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAg
ICAgcmVzdWx0ID0gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5p
dFdpdGhQYWdlSUQ6cGFnZUlEXSk7CisgICAgICAgIHJlc3VsdCA9IGFkb3B0TlMoW1tXS0Jyb3dz
aW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZUlEOm1ha2VPYmplY3RJZGVudGlm
aWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4ocGFnZUlEKV0pOwogICAgICAgICBicmVh
azsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dL
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4
IGVkODYzNTgyMDFiLi41OTcwMWExMzQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2Fk
ZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2Uq
CiAgICAgICAgIG1pbGVzdG9uZXMuYWRkKFdlYkNvcmU6OkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dCk7CiAKICAgICBpZiAobWlsZXN0b25lcykKLSAgICAgICAgd2ViUGFnZVByb3h5LT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25l
cyhtaWxlc3RvbmVzKSwgd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7CisgICAgICAgIHdlYlBhZ2VQ
cm94eS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyht
aWxlc3RvbmVzKSk7CiAKICAgICB3ZWJQYWdlUHJveHktPnNldExvYWRlckNsaWVudChXVEZNb3Zl
KGxvYWRlckNsaWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAxMDc1NzgxYWYy
Yy4uMmY5Y2ZlOTQyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC01NCw2ICs1NCw3IEBA
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTdHJpbmcgQXV0b21hdGlvbkNvbW1hbmRFcnJvcjo6dG9Q
cm90b2NvbFN0cmluZygpCiB7CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5
JiBmcmEKICAgICB9CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1Bl
bmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFw
KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0
aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmUHRyPElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCiB7CiAgICAg
SW5zcGVjdG9yOjpFcnJvclN0cmluZyB0aW1lb3V0RXJyb3IgPSBTVFJJTkdfRk9SX1BSRURFRklO
RURfRVJST1JfTkFNRShUaW1lb3V0KTsKICAgICBmb3IgKGF1dG8gaWQgOiBjb3B5VG9WZWN0b3Io
bWFwLmtleXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCA2NWViM2U0NmU1Yi4uZjM5YzA2
MWI1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJT
aGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCIK
ICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0yMjUsNyArMjI2LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdlKFdlYlBh
Z2VQcm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRl
Z3ksIFNlY29uZHMsIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2U+JiYpOwogICAgIHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJG
cmFtZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJh
dGVneSwgU2Vjb25kcywgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZT4mJik7Ci0gICAgdm9pZCByZXNwb25kVG9QZW5kaW5nUGFnZU5hdmlnYXRpb25DYWxsYmFj
a3NXaXRoVGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mKTsKKyAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdQ
YWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2U+PiYpOwogICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ0ZyYW1lTmF2aWdhdGlvbkNhbGxiYWNr
c1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOwogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoKTsK
IApAQCAtMjgwLDIyICsyODEsMjIgQEAgcHJpdmF0ZToKICAgICBSZWY8SW5zcGVjdG9yOjpBdXRv
bWF0aW9uQmFja2VuZERpc3BhdGNoZXI+IG1fZG9tYWluRGlzcGF0Y2hlcjsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yOjpBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPiBtX2RvbWFp
bk5vdGlmaWVyOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYlBhZ2VIYW5k
bGVNYXA7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdlYlBhZ2VNYXA7
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3RyaW5nPiBtX3dlYlBhZ2VI
YW5kbGVNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBt
X2hhbmRsZVdlYlBhZ2VNYXA7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fd2Vi
RnJhbWVIYW5kbGVNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdl
YkZyYW1lTWFwOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25J
bkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVu
ZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKKyAg
ICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbklu
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFj
a3NQZXJQYWdlOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5C
cm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJGcmFtZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5k
aW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJGcmFtZTsKLSAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6
Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZTsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVy
UGFnZTsKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKLSAgICBI
YXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5k
RXJyb3I+KT4+IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRp
b25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0Zs
dXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VT
RV9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRp
b25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNo
ZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5k
aW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsKICNlbmRpZgogCiAgICAgdWlu
dDY0X3QgbV9uZXh0RXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tJRCB7IDEgfTsKQEAgLTMxOSw3
ICszMjAsNyBAQCBwcml2YXRlOgogICAgIC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciBBUElz
IHRha2UgYSBzZXQgb2YgaW5wdXQgc291cmNlcy4gV2UgYWxzbyBpbnRlcm4gdGhlc2UKICAgICAv
LyBzbyB0aGF0IHByZXZpb3VzIGlucHV0IHNvdXJjZSBzdGF0ZSBpcyB1c2VkIGFzIGluaXRpYWwg
c3RhdGUgZm9yIGxhdGVyIGNvbW1hbmRzLgogICAgIEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0
U291cmNlPj4gbV9pbnB1dFNvdXJjZXM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVy
Pj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZF
Ul9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCiAgICAgLy8gS2VlcCB0cmFjayBvZiBjdXJyZW50bHkg
YWN0aXZlIG1vZGlmaWVycyBhY3Jvc3MgbXVsdGlwbGUga2V5c3Ryb2tlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eS5tbQppbmRleCBmMDVkNzljMGQwMS4uMTIxMzFiOWIzNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0KQEAgLTMwMiw3ICszMDIsNyBAQCBSZWY8UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5PiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShXZWJQYWdlUHJveAog
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHko
V2ViUGFnZVByb3h5JiBwYWdlKQogICAgIDogbV9wYWdlKCZwYWdlKQogewotICAgIG1fcGFnZS0+
cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCksICp0aGlz
KTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpLnRvVUludDY0KCksICp0aGlzKTsKIH0KIAogUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Ojp+UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KCkKQEAgLTMxNCw3ICszMTQsNyBA
QCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6On5QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHkoKQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0ZSgpCiB7
Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UgPSBudWxscHRy
OwogCiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92ZShtX2NvbnRleHRNYXApOwpAQCAtNTI3
LDk0ICs1MjcsOTQgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmhhbmRsZUNv
bnRyb2xsZWRFbGVtZW50SURSZXNwb25zZSh1aW50NjRfdCBjb24KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnBsYXkodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGxheShjb250ZXh0SWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpwYXVzZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsK
LSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2ds
ZVBsYXlTdGF0ZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBsYXlTdGF0ZShjb250
ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Ny
dWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2NydWJiaW5nKGNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjplbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQogewot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2Ny
dWJiaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2NydWJiaW5nKGNvbnRleHRJZCkp
OwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2Vla1RvVGltZSh1aW50
NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lLCBkb3VibGUgdG9sZXJhbmNlQmVmb3JlLCBkb3Vi
bGUgdG9sZXJhbmNlQWZ0ZXIpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwgdGltZSwgdG9sZXJhbmNlQmVm
b3JlLCB0b2xlcmFuY2VBZnRlciksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2Vla1RvVGltZShjb250ZXh0SWQs
IHRpbWUsIHRvbGVyYW5jZUJlZm9yZSwgdG9sZXJhbmNlQWZ0ZXIpKTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91
YmxlIHRpbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpGYXN0U2Vlayhjb250ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkZhc3RTZWVr
KGNvbnRleHRJZCwgdGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0Zv
cndhcmQoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nRm9yd2FyZChjb250
ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nh
bm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nQmFja3dhcmQoY29u
dGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nQmFja3dhcmQoY29udGV4dElkKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbmRTY2FubmluZyh1aW50
NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpFbmRTY2FubmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNj
YW5uaW5nKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGlu
ZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6U2VsZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpTZWxlY3RBdWRpb01lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpKTsKIH0KIAogdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1aW50
NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGNv
bnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihj
b250ZXh0SWQsIGluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Ojp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1cmVJ
blBpY3R1cmUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQaWN0dXJlSW5QaWN0dXJl
KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9n
Z2xlTXV0ZWQodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlTXV0ZWQoY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnNldE11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBtdXRlZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNl
dE11dGVkKGNvbnRleHRJZCwgbXV0ZWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldE11dGVkKGNvbnRleHRJ
ZCwgbXV0ZWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFZv
bHVtZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB2b2x1bWUpCiB7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRWb2x1bWUoY29udGV4dElk
LCB2b2x1bWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0SWQsIHZvbHVtZSkpOwog
fQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0UGxheWluZ09uU2Vjb25k
U2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAobV9wYWdl
KQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlNldFBsYXlpbmdPblNlY29uZFNjcmVlbihjb250ZXh0SWQsIHZhbHVlKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6U2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKGNvbnRleHRJZCwgdmFsdWUpKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJlcXVlc3RDb250cm9sbGVkRWxlbWVu
dElEKCkKIHsKICAgICBpZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCi0gICAgICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6SGFuZGxlQ29udHJv
bGxlZEVsZW1lbnRJRFJlcXVlc3QobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdChtX2NvbnRyb2xzTWFu
YWdlckNvbnRleHRJZCkpOwogfQogCiBQbGF0Zm9ybVBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSog
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpjb250cm9sc01hbmFnZXJJbnRlcmZhY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IDZiYTQ3OWUwNjBhLi43N2YyZjJmYzRmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMzI1LDcgKzMyNSw3IEBAIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYg
cGFnZSwgUGxhCiAgICAgOiBtX3BhZ2UoJnBhZ2UpCiAgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eShwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7Ci0gICAgbV9wYWdlLT5w
cm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSwgKnRoaXMp
OworICAgIG1fcGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+
cGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMpOwogfQogCiBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoKQpAQCAtMzM3LDcgKzMzNyw3IEBA
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6flZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eSgpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjppbnZhbGlkYXRlKCkKIHsK
LSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZSA9IG51bGxwdHI7
CiAKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4dE1hcCk7CkBAIC02MjAs
NDMgKzYyMCw0MyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cHJlcGFyZWRU
b0V4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQs
IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
LCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKGNvbnRleHRJZCwg
bW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2NyZWVu
TW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhKSk7CiB9CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5saW5lUmVjdChjb250ZXh0SWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90
IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90
IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4
dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBG
dWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbHNj
cmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0
SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxs
c2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgbV9wYWdlLT5k
aWRFeGl0RnVsbHNjcmVlbigpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVl
bihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQp
KTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwogfQogCkBAIC02NzAsNyArNjcw
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2Ny
ZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAgICAg
W21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgbW9kZWwt
PnNldExheWVySG9zdFZpZXcobnVsbHB0cik7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogCiAgICAgaW50
ZXJmYWNlLT5zZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9k
ZU5vbmUpOwogICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKQEAgLTY4OCwy
NSArNjg4LDI1IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xh
eWVyRnJhbWUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlCiAgICAgICAgIG1hY2hfcG9ydF9u
YW1lX3QgZmVuY2VQb3J0ID0gZmVuY2VTZW5kUmlnaHQubGVha1NlbmRSaWdodCgpOwogI2VuZGlm
CiAKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoY29udGV4dElkLCBmcmFtZSwgSVBDOjpBdHRhY2ht
ZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6U2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKGNvbnRleHRJZCwgZnJhbWUsIElQQzo6QXR0YWNo
bWVudChmZW5jZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSkpOwogICAgIH0KIH0KIAog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KHVp
bnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5
IGdyYXZpdHkpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oY29udGV4dElkLCAodW5zaWduZWQpZ3Jh
dml0eSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKGNvbnRleHRJZCwg
KHVuc2lnbmVkKWdyYXZpdHkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIG1f
cGFnZS0+dWlDbGllbnQoKS5oYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZShtX3Bh
Z2UsIG1vZGUgJiBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUlu
UGljdHVyZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2RlKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2RlKSk7CiB9CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWlu
dDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNWaWV3VmlzaWJsZSA9IG1fcGFnZS0+aXNW
aWV3VmlzaWJsZSgpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3Vmlz
aWJsZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRleHRJ
ZCwgaXNWaWV3VmlzaWJsZSkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggZjkxNDY4MTFjNTUuLjQ0
MGZkMGRiNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpw
ZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlM
b29rdXBBdExvY2F0aW9uKHBvaW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihwb2ludCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rp
b24oKQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlv
bmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlvbmFyeUxv
b2t1cE9mQ3VycmVudFNlbGVjdGlvbigpKTsKIH0KICAgICAKICNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQpAQCAtMjM0LDEyICsyMzQsMTIgQEAgY29uc3QgU3RyaW5nJiBXZWJQYWdlUHJveHk6OnBheW1l
bnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmkKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNlaXZlcihXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJlbmNlJiBtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJlY2VpdmVyKQogewot
ICAgIHByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgbV9w
YWdlSUQsIG1lc3NhZ2VSZWNlaXZlcik7CisgICAgcHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZl
cihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBtZXNzYWdlUmVjZWl2
ZXIpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5hdG9yUmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29uc3QgSVBDOjpTdHJp
bmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7Ci0gICAgcHJvY2VzcygpLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtX3BhZ2VJRCk7CisgICAgcHJv
Y2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKIH0KIAogI2VuZGlmCkBAIC0yNjYsMTcgKzI2NiwxNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVzdW1lU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UmKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3BlYWtpbmdFcnJvck9jY3Vy
cmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikKIHsKLSAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3BlYWtpbmdFcnJvck9jY3VycmVkKCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTcGVha2luZ0Vycm9yT2Nj
dXJyZWQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpib3VuZGFyeUV2ZW50T2NjdXJyZWQo
V2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCBXZWJDb3JlOjpTcGVl
Y2hCb3VuZGFyeSBzcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KQogewotICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCb3VuZGFyeUV2ZW50T2NjdXJyZWQoc3Bl
ZWNoQm91bmRhcnkgPT0gV2ViQ29yZTo6U3BlZWNoQm91bmRhcnk6OlNwZWVjaFdvcmRCb3VuZGFy
eSwgY2hhckluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJv
dW5kYXJ5RXZlbnRPY2N1cnJlZChzcGVlY2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpTcGVlY2hCb3Vu
ZGFyeTo6U3BlZWNoV29yZEJvdW5kYXJ5LCBjaGFySW5kZXgpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnZvaWNlc0RpZENoYW5nZSgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlZvaWNlc0RpZENoYW5nZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Vm9pY2VzRGlkQ2hhbmdlKCkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShTUEVF
Q0hfU1lOVEhFU0lTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tCmluZGV4IDJhYTc0OGYwMDRmLi5mZjhkY2Q0MGQxMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTEzODAsNyArMTM4MCw3IEBAIFdl
YlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBsRGVsZWdhdGU+ICp2aWV3
LCBXS1dlYlZpZXcgKm91dGVyV2ViCiBXZWJWaWV3SW1wbDo6fldlYlZpZXdJbXBsKCkKIHsKICAg
ICBpZiAobV9yZW1vdGVPYmplY3RSZWdpc3RyeSkgewotICAgICAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlT2Jq
ZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmplY3RSZWdpc3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgICAgICBbbV9yZW1vdGVPYmplY3RS
ZWdpc3RyeSBfaW52YWxpZGF0ZV07CiAgICAgICAgIG1fcmVtb3RlT2JqZWN0UmVnaXN0cnkgPSBu
aWw7CiAgICAgfQpAQCAtMTk5NywxMyArMTk5NywxMyBAQCBmbG9hdCBXZWJWaWV3SW1wbDo6aW50
cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5k
b3dEaWRPcmRlck9mZlNjcmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIsIHRoaXMsIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBh
Z2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgp
LnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2lu
ZG93SXNBY3RpdmUgfSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT25T
Y3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2Ug
JWxsdSkgd2luZG93RGlkT3JkZXJPblNjcmVlbiIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93
RGlkT3JkZXJPblNjcmVlbiIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAg
ICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0
ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9KTsK
IH0KIApAQCAtMjA3MSw3ICsyMDcxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkQ2hh
bmdlTGF5ZXJIb3N0aW5nKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkQ2hhbmdlT2Nj
bHVzaW9uU3RhdGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAg
KHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUiLCB0aGlzLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdl
ICVsbHUpIHdpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5wYWdl
SUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApAQCAtMjIzNCwxOSArMjIzNCwx
OSBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRpZXMoKQog
CiB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkSGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3Rh
dGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkSGlkZSIsIHRoaXMsIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBh
Z2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkp
OwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkVW5oaWRlKCkK
IHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZp
ZXdEaWRVbmhpZGUiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlT
dGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRVbmhpZGUiLCB0aGlzLCBt
X3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCiB2b2lkIFdl
YlZpZXdJbXBsOjphY3RpdmVTcGFjZURpZENoYW5nZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3Rh
dGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSBhY3RpdmVTcGFjZURpZENoYW5nZSIsIHRo
aXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0lt
cGwgJXAgKHBhZ2UgJWxsdSkgYWN0aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBh
Z2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCkBAIC0zODI3LDcgKzM4Mjcs
NyBAQCBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqV2ViVmlld0ltcGw6OnJlbW90ZU9iamVjdFJl
Z2lzdHJ5KCkKIHsKICAgICBpZiAoIW1fcmVtb3RlT2JqZWN0UmVnaXN0cnkpIHsKICAgICAgICAg
bV9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IGFkb3B0TlMoW1tfV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eSBhbGxvY10gX2luaXRXaXRoV2ViUGFnZVByb3h5Om1fcGFnZV0pOwotICAgICAgICBtX3BhZ2Ut
PnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQo
KSwgW21fcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0UmVnaXN0cnldKTsKKyAgICAg
ICAgbV9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgW21fcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3RlT2Jq
ZWN0UmVnaXN0cnldKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9yZW1vdGVPYmplY3RSZWdpc3Ry
eS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggY2E3
Njg3ZjZiNTIuLmI5MzAxMjg1OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZQogICAgICAg
ICByZXR1cm47CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9u
RGVjaXNpb24oZ2VvbG9jYXRpb25JRCwgYWxsb3dlZCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1p
c3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBhbGxvd2VkKSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShhbGxvd2VkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmluZGV4IDYyYjA3MjlmOGE1Li4wZjQxMDIwZWE3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNw
cApAQCAtNTAsMTkgKzUwLDE5IEBAIEluc3BlY3RvclRhcmdldFByb3h5OjpJbnNwZWN0b3JUYXJn
ZXRQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGFyCiB2b2lkIEluc3Bl
Y3RvclRhcmdldFByb3h5Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBjaGFu
bmVsKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25uZWN0SW5zcGVjdG9yKGlk
ZW50aWZpZXIoKSwgY2hhbm5lbC5jb25uZWN0aW9uVHlwZSgpKSwgbV9wYWdlLnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0b3Io
aWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCYp
CiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3BhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRl
bnRpZmllcigpKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OnNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9wYWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkp
Ci0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZE1l
c3NhZ2VUb1RhcmdldEJhY2tlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRNZXNzYWdl
VG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM0NDNiMzg1ZmFjLi4yZDk5NjZlM2M4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0
dGEKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3Qg
Y2hhbGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0
X3QgY2hhbGxlbmdlSUQpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChh
dXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbV9wcm9jZXNzUG9vbC5zZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChwYWdlSUQpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5j
aGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGlj
TWVzc2FnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBs
ZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uo
cGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1c2UgYnkg
dGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkgYmUgZ29u
ZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC0zODIsNyArMzgyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWUKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZSht
ZXNzYWdlLCBkZXNjcmlwdGlvbiwgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQz
Ml90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5
IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdv
bmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzkzLDcgKzM5Myw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQobWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgc2hvdWxkU2FtcGxlKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUg
dmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJv
eHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNr
IGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFn
ZSBtYXkgYmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC03MzYs
NyArNzM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRHcmFuZGZhdGhlcmVkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXMKICAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRHcmFuZGZhdGhlcmVkKHNlc3Npb25JRCwg
cmVzb3VyY2VEb21haW4sIGlzR3JhbmRmYXRoZXJlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbmZpcm0odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25m
aXJtKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojpub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
RmluaXNoZWQodW5zaWduZWQKICAgICBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0
aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUobWVzc2FnZUJvZHkp
LnB0cigpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb21taXR0ZWRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbW1pdHRlZENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMjBhNzk5OGM0ZGMu
LjJiZWM2OGZkODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCArODEsNiBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAg
ICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdl
SUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBleHBs
aWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBAIC0xMzEsNyArMTI5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYpOwot
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJRCwgRnJhbWVJRCwgY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJt
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGlt
ZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGJvb2wg
ZGVidWdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9u
SUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFp
biYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5h
dmlnYXRlZFRvRG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYs
IGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZv
aWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRl
RGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1
ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwor
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGxvZ1Rl
c3RpbmdFdmVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGYuLjIyZmZmZDE5ODgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50
aWZpZXIpCiAKLSAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQorICAgIERpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWlu
dDY0X3QgY2hhbGxlbmdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQogICAgIERp
ZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC0zNSw5ICszNSw5IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCiAKICAgICAj
IERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZwotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAgTG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmlu
ZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1
aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJs
ZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dEaWFnbm9zdGljTWVzc2FnZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3Jp
cHRpb24sIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAg
IExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3Vs
dCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAgTG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2ln
bmVkIHNpZ25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCiAgICAgTG9nR2xvYmFsRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoU3Ry
aW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBz
aWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxk
U2FtcGxlKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTQ2LDcg
KzQ2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCkKICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5p
c2hlZCgpCiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVk
KHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVu
dFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW5zKQotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1
YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikg
LT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNj
ZXNzQ29uZmlybShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNj
ZXNzKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5z
V2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBmODc2MWIxZjNmNC4uM2YyODczMmFiNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNy
CiB7CiAgICAgYXV0byByZXF1ZXN0ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNy
ZWF0ZShbdGhpcywgbm90aWZpY2F0aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1fcGFnZSldKGJvb2wg
YWxsb3dlZCkgewogICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5vdGlmaWNhdGlvbklE
KTsKLSAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93
ZWQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9u
SUQsIGFsbG93ZWQpKTsKICAgICB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQobm90aWZp
Y2F0aW9uSUQsIHJlcXVlc3QucHRyKCkpOwogICAgIHJldHVybiByZXF1ZXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZhZTFmM2ZjYTg4Li4yYWFmZjFl
YzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdl
UHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAgIHVpbnQ2NF90IGdsb2Jh
bE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwogICAgIGF1
dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGlj
b25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklE
KTsKLSAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIg
PSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsK
KyAgICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBh
aXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklE
KTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQs
IG5vdGlmaWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRp
b25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRp
b24uY29weVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0
aW9uLmdldCgpKTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwK
ICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90LCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikK
K3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
LCBQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikK
IHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29s
IHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBh
Z2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5k
Tm90aWZpY2F0aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdl
Tm90aWZpY2F0aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBw
YWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250
YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEzICsxNDEsMTMgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNs
ZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZp
bHRlckZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBh
Z2VJRCgpOworICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CiAKICAg
ICBWZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAgICBnbG9iYWxOb3Rp
ZmljYXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUo
KSk7CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKSwgZW5kID0g
bV9ub3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgdWludDY0
X3Qgd2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAgYXV0byB3ZWJQYWdlSUQgPSBp
dC0+a2V5LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+
a2V5LnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VO
b3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFs
Tm90CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7Cisg
ICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3
ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3
ZWJQYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0
X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFs
dWUuZmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNS4uZTc4ZGFiYTZmZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQ
cm9jZXNzUG9vbCopOwogCi0gICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24pKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCB1aW50
NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5v
dGlmaWNhdGlvbklEcyk7CisgICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24pKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlm
aWNhdGlvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
cGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pOwogCiAgICAg
Ly8gV2ViQ29udGV4dFN1cHBsZW1lbnQKQEAgLTg4LDkgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwog
ICAgIC8vIFBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFuZCB0aGUgd2ViIHByb2Nlc3Mn
cyBub3RpZmljYXRpb24gSUQKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8dWludDY0
X3QsIHVpbnQ2NF90Pj4gbV9nbG9iYWxOb3RpZmljYXRpb25NYXA7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4+IG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwOwogICAgIC8vIEtleSBwYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFn
ZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElEOyB2YWx1ZSBwYWlyIGNv
bXByaXNlZCBvZiBnbG9iYWwgbm90aWZpY2F0aW9uIElELCBhbmQgbm90aWZpY2F0aW9uIG9iamVj
dAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1
aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CisgICAg
SGFzaE1hcDxzdGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90Piwgc3Rk
OjpwYWlyPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9u
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDQ1YTFmMGY1YjVjLi40NDFhMjEy
OWJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcApAQCAtNDcsNiArNDcsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBjaGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMs
ICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hh
bm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10
LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCkBAIC02MSw5ICs2Myw5IEBAIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQ
cm9jZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBw
YWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQ
YWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdl
dCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
IlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQg
PSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2
NCgpLCBuYXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCi0gICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgbV9wcm9jZXNzLT5h
ZGRQcm92aXNpb25hbFBhZ2VQcm94eSgqdGhpcyk7CiAKICAgICBpZiAobV9wcm9jZXNzLT5zdGF0
ZSgpID09IEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcpCkBAIC05OSw4ICsx
MDEsOCBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KCkKICAg
ICBpZiAoJm1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZtX3BhZ2Uud2Vic2l0ZURh
dGFTdG9yZSgpKQogICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5n
V2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UucGFnZUlEKCksIG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFT
dG9yZSgpKTsKIAotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkudG9V
SW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CiAgICAgbV9w
cm9jZXNzLT5yZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihtX3BhZ2UudmlzaXRlZExpbmtTdG9y
ZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwogCiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYoKV0gewpAQCAtMTE3LDcgKzExOSw3IEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmNvbm5lY3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rpb24m
IGNvbm5lY3Rpb24pCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJt
aW5hdGUoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5n
LCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlE
KCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLnByb3Zpc2lvbmFsUHJvY2Vzc0RpZFRlcm1pbmF0
ZSgpOwogfQogCkBAIC0xMzIsNyArMTM0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
Y2FuY2VsKCkKICAgICBpZiAobV9wcm92aXNpb25hbExvYWRVUkwuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
ImNhbmNlbDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSBmb3Ig
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2VsOiBTaW11bGF0aW5nIGEgZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdl
SUQoKS50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQobV9tYWluRnJhbWUpOwogICAgIGF1dG8gZXJy
b3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCk7CiAgICAgZXJyb3Iuc2V0VHlw
ZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwpAQCAtMTUxLDE0
ICsxNTMsMTQgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2Uo
KQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5n
JiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJM
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
d2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAibG9hZERhdGE6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIG1f
cGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5h
dmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdl
YkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQ
b2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChB
UEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dh
cHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCku
dG9VSW50NjQoKSk7CiAKICAgICAvLyBJZiB0aGlzIGlzIGEgY2xpZW50LXNpZGUgcmVkaXJlY3Qg
Y29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBuZXcgcHJvY2VzcyB3aWxsIG92
ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2FzZSwKICAgICAvLyB3ZSBuZWVk
IHRvIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgZnJvbUl0ZW0ncyBwcm9jZXNzSWRlbnRpZmllciBhcyB3
ZSB3YW50IGZ1dHVyZSBuYXZpZ2F0aW9ucyB0byB0aGlzIEJhY2tGb3J3YXJkIGl0ZW0gdG8gaGFw
cGVuIGluIHRoZQpAQCAtMTcxLDcgKzE3Myw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzCiAK
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZp
Z2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBPcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgYXV0byBpdGVtU3Rh
dGVzID0gbV9wYWdlLmJhY2tGb3J3YXJkTGlzdCgpLmZpbHRlcmVkSXRlbVN0YXRlcyhbdGhpcywg
dGFyZ2V0SXRlbSA9ICZpdGVtXShhdXRvJiBpdGVtKSB7CiAgICAgICAgIGlmIChhdXRvKiBwYWdl
ID0gaXRlbS5zdXNwZW5kZWRQYWdlKCkpIHsKQEAgLTE4MCw4ICsxODIsOCBAQCB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAmaXRlbSAhPSB0YXJnZXRJ
dGVtOwogICAgIH0pOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBk
YXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goV1RGTW92ZShpdGVtU3RhdGVzKSksIG1fcGFn
ZS5wYWdlSUQoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1Rv
QmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIGl0ZW0uaXRlbUlEKCks
ICpuYXZpZ2F0aW9uLmJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSgpLCBXZWJDb3JlOjpTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVCYWNrRm9y
d2FyZExpc3RGb3JSZWF0dGFjaChXVEZNb3ZlKGl0ZW1TdGF0ZXMpKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25J
RCgpLCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUo
KSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzKSkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0
YXJ0KCk7CiB9CiAKQEAgLTE5Niw3ICsxOTgsNyBAQCBpbmxpbmUgYm9vbCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6dmFsaWRhdGVJbnB1dCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBPcHRpb25hbAog
CiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
ImRpZENyZWF0ZU1haW5GcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwg
ZnJhbWVJRCk7CiAgICAgQVNTRVJUKCFtX21haW5GcmFtZSk7CiAKICAgICBtX21haW5GcmFtZSA9
IFdlYkZyYW1lUHJveHk6OmNyZWF0ZShtX3BhZ2UsIGZyYW1lSUQpOwpAQCAtMjM0LDcgKzIzNiw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWluCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1l
SUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlv
bklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJ
bnQ2NCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFs
TG9hZFVSTC5pc051bGwoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB1cmw7CiAKQEAg
LTI1NCw3ICsyNTYsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29ucwogICAgIGlmICghdmFsaWRh
dGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1l
SUQsIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2
NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAg
ICAgQVNTRVJUKCFtX3Byb3Zpc2lvbmFsTG9hZFVSTC5pc051bGwoKSk7CiAgICAgbV9wcm92aXNp
b25hbExvYWRVUkwgPSB7IH07CiAKQEAgLTI3MCw5ICsyNzIsOSBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aQogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2Fw
cGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlE
KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9w
YWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAgbV9w
cm92aXNpb25hbExvYWRVUkwgPSB7IH07Ci0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgp
LnRvVUludDY0KCkpOwogCiAgICAgbV93YXNDb21taXR0ZWQgPSB0cnVlOwogICAgIG1fcGFnZS5j
b21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlwZSwgZnJh
bWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmljYXRlSW5m
bywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2Vy
RGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KQEAgLTI5NSw3ICsyOTcsNyBAQCB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbgogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAorICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0
ZW5lcklEKQogewogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQp
KQpAQCAtMzQxLDcgKzM0Myw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmJhY2tGb3J3
YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlCiB9CiAKIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVk
UmVwbHkmJiByZXBseSkKIHsKQEAgLTM3NCw2ICszNzYsMTYgQEAgdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VuKGNvbnN0IElQQzo6
RGF0YVIKIH0KICNlbmRpZgogCitJUEM6OkNvbm5lY3Rpb24qIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvY2Vz
cy0+Y29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBtX3BhZ2UucGFn
ZUlEKCkudG9VSW50NjQoKTsKK30KKwogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRl
Y29kZXIpCiB7CiAgICAgQVNTRVJUKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCA2NDU2YzFmOTE2
ZC4uYjg2M2ZkZDAzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVk
ZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBAIC01OCw3ICs1OSw3
IEBAIHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTsKIHN0cnVjdCBVUkxTY2hlbWVUYXNrUGFy
YW1ldGVyczsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogCi1jbGFzcyBQcm92aXNp
b25hbFBhZ2VQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiB7CitjbGFzcyBQcm92aXNpb25hbFBhZ2VQ
cm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdl
U2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQcm92aXNpb25hbFBhZ2VQ
cm94eShXZWJQYWdlUHJveHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBzdGQ6OnVuaXF1ZV9w
dHI8U3VzcGVuZGVkUGFnZVByb3h5PiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBib29sIGlzU2Vy
dmVyUmVkaXJlY3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQpOwpAQCAtOTIsOSArOTMsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAg
ICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7
CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsK
IAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiwgRnJhbWVJbmZvRGF0YSYmLAotICAgICAgICB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLAogICAg
ICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlw
ZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
Y29uc3QgVXNlckRhdGEmKTsKQEAgLTExMCw3ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c3RhcnRVUkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQg
YmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+
JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0
X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQg
ZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBT
dHJpbmcmIGZpbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCA2Njc5ZDQ1YmQ5OS4uZTZmNWYxNGQ2ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94
eS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6bG9h
ZChjb25zdCBTdHJpbmcmIGRlYnVnZ2FibGVUeXBlLCBjb25zdCBTdHJpbmcmIGIKICAgICBtX2Rl
YnVnZ2FibGVUeXBlID0gZGVidWdnYWJsZVR5cGU7CiAgICAgbV9iYWNrZW5kQ29tbWFuZHNVUkwg
PSBiYWNrZW5kQ29tbWFuZHNVUkw7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6SW5pdGlhbGl6ZShkZWJ1Z2dhYmxl
VHlwZSwgYmFja2VuZENvbW1hbmRzVVJMKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6
SW5pdGlhbGl6ZShkZWJ1Z2dhYmxlVHlwZSwgYmFja2VuZENvbW1hbmRzVVJMKSk7CiAgICAgbV9p
bnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIFdlYkluc3BlY3RvclByb3h5Ojpp
bnNwZWN0b3JQYWdlVVJMKCkpKTsKIH0KIApAQCAtODEsNyArODEsNyBAQCB2b2lkIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpzaG93KCkKIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JV
STo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3Bl
Y3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSkpOwogfQogCiB2b2lkIFJlbW90
ZVdlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZERpZENsb3NlKCkKQEAgLTE1Miw3ICsxNTIsNyBA
QCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5k
b3coKQogCiAgICAgdHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSwgbnVsbHB0cik7
CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
aW5zcGVjdG9yUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkudG9V
SW50NjQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJl
YWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFnZSwgV2ViSW5zcGVjdG9yUHJveHk6Omlu
c3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiAgICAgaWYgKCFt
X2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVj
dG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgdW50cmFja0lu
c3BlY3RvclBhZ2UobV9pbnNwZWN0b3JQYWdlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1YTE0ZmJlNGRj
ZC4uYjJmNzcyOWZkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eTo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0KIAotdm9pZCBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eT4mJiBjaGFsbGVuZ2UpCit2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYm
IGNoYWxsZW5nZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKICAgICBVTlVTRURfUEFS
QU0oZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LmgKaW5kZXggOTMyNDVmMGRjNzYuLmU5MzY1YWZhYzRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5o
CkBAIC00MSwxNCArNDEsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
PiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk+JiYpOwogCiAgICAgdm9pZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpOwogICAgIHZv
aWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSB7IHJldHVybiBtX3JlZ2lz
dHJhYmxlRG9tYWluOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VyUGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAKIHByaXZhdGU6CiAg
ICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAg
ICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1aW50NjRfdCBt
X3NlcnZpY2VXb3JrZXJQYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9zZXJ2aWNlV29ya2VyUGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCAxMzQ2
ZmNjMDVjNS4uNjc0YjNmMDY4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcApAQCAtODksMTAgKzg5LDEwIEBAIFN1c3BlbmRlZFBhZ2VQcm94
eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQ
cm94eT4mCiAjZW5kaWYKIHsKICAgICBtX3Byb2Nlc3MtPmluY3JlbWVudFN1c3BlbmRlZFBhZ2VD
b3VudCgpOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7
CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgKnRo
aXMpOwogCiAgICAgbV9zdXNwZW5zaW9uVGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChzdXNwZW5z
aW9uVGltZW91dCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJ
c1N1c3BlbmRlZCh0cnVlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0cnVlKSk7CiB9CiAKIFN1c3BlbmRlZFBhZ2VQcm94eTo6
flN1c3BlbmRlZFBhZ2VQcm94eSgpCkBAIC0xMTMsNyArMTEzLDcgQEAgU3VzcGVuZGVkUGFnZVBy
b3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKICAgICBjbG9zZSgpOwogCiAgICAgaWYgKG1fc3Vz
cGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6U3VzcGVuZGluZykKLSAgICAgICAgbV9w
cm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICBtX3Byb2Nlc3Mt
PnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIC8vIFdlIGNh
bGwgbWF5YmVTaHV0RG93bigpIGFzeW5jaHJvbm91c2x5IHNpbmNlIHRoZSBTdXNwZW5kZWRQYWdl
IGlzIGN1cnJlbnRseSBiZWluZyByZW1vdmVkIGZyb20gdGhlIFdlYlByb2Nlc3NQb29sCiAgICAg
Ly8gYW5kIHdlIHdhbnQgdG8gYXZvaWQgcmUtZW50ZXJpbmcgV2ViUHJvY2Vzc1Bvb2wgbWV0aG9k
cy4KQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5k
KCkKICAgICBBU1NFUlQobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpTdXNw
ZW5kZWQpOwogCiAgICAgbV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNwZW5zaW9uU3RhdGU6OlJlc3Vt
ZWQ7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRl
ZChmYWxzZSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0SXNTdXNwZW5kZWQoZmFsc2UpKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmNs
b3NlKCkKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xvc2Uo
KQogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQYWdl
UHJveHk6OmNsb3NlKCkiLCB0aGlzKTsKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CiB9CiAKIHZvaWQgU3VzcGVu
ZGVkUGFnZVByb3h5OjpwYWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKQEAg
LTIwMyw3ICsyMDMsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVl
c3RUb1N1c3BlbmQoU3VzcGVuc2lvblN0YXRlIG5ld1N1c3BlbnNpbwogICAgIG1fc3VzcGVuc2lv
blRva2VuID0gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3BhZ2UucGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJ
RCgpLnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1fc3VzcGVuc2lvblN0YXRlID09IFN1c3BlbnNp
b25TdGF0ZTo6RmFpbGVkVG9TdXNwZW5kKQogICAgICAgICBjbG9zZVdpdGhvdXRGbGFzaGluZygp
OwpAQCAtMjQyLDExICsyNDIsMjEgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLAogewogfQogCitJ
UEM6OkNvbm5lY3Rpb24qIFN1c3BlbmRlZFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdAoreworICAgIHJldHVybiBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKTsKK30KKwor
dWludDY0X3QgU3VzcGVuZGVkUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpOworfQorCiAj
aWYgIUxPR19ESVNBQkxFRAogCiBjb25zdCBjaGFyKiBTdXNwZW5kZWRQYWdlUHJveHk6OmxvZ2dp
bmdTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBkZWJ1Z1N0cmluZygiKDB4IiwgaGV4KHJl
aW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSksICIgcGFnZSBJRCAiLCBtX3BhZ2UucGFn
ZUlEKCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3N1
c3BlbnNpb25TdGF0ZSksICcpJyk7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoMHgiLCBoZXgo
cmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBwYWdlIElEICIsIG1fcGFnZS5w
YWdlSUQoKS50b1VJbnQ2NCgpLCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9zdXNwZW5zaW9uU3RhdGUpLCAnKScpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggMGRhZDA1NGIyNzIu
LjYzNWViYTAwMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NU
aHJvdHRsZXIuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTM5LDcgKzQwLDcgQEAgY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5OwogCiBlbnVtIGNsYXNzIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSA6IGJvb2wgeyBObywgWWVzIH07CiAKLWNsYXNzIFN1
c3BlbmRlZFBhZ2VQcm94eSBmaW5hbDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB7CitjbGFzcyBTdXNwZW5kZWRQ
YWdlUHJveHkgZmluYWw6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBD
OjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5
PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3VzcGVuZGVk
UGFnZVByb3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90
IG1haW5GcmFtZUlELCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUpOwpAQCAtNzEsNiArNzIsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICBJ
UEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIAog
ICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IG1fcHJv
Y2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRleCA5NzEx
YjIzMzcyMS4uMjYwMDhiMTQxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5jcHAKQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbgogICAg
IHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKHdvcmxkLCBudW1iZXJSZW1vdmVkKTsKIH0KIAot
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0Rh
dGEmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFS
ZWZlcmVuY2UpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmgKaW5kZXggNjIzMzAxMTE2ZWQuLjBlZDM2YTU5Y2MzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJB
UElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJVc2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRl
bnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hD
b3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTExMCw3ICsxMTEsNyBA
QCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAK
LSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1
aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAog
ICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQmKTsK
ICAgICB2b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRXb3Js
ZCYsIHVuc2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODE3MTQzNTFmY2UuLjI1
YTRlMjkxMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSArMjQsNSBAQAogICovCiAKIG1lc3NhZ2VzIC0+IFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5IHsKLURpZFBvc3RNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJ
RCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBt
ZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2FudHNDb25uZWN0
aW9uCitEaWRQb3N0TWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVj
dCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhh
bmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRzQ29ubmVjdGlvbgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDFmMjYwMjkxY2M3Li5iZDM3
YmEwYzk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMTE5LDcg
KzExOSw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNh
cHR1cmVEZXZpY2VzQ2hhbmdlZCgpCiAgICAgICAgIGlmIChtX2dyYW50ZWRSZXF1ZXN0cy5pc0Vt
cHR5KCkgJiYgISpvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2Fw
dHVyZURldmljZXNDaGFuZ2VkKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXB0dXJlRGV2aWNlc0NoYW5nZWQoKSk7CiAgICAgfTsK
IAogICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3Bh
Z2UubWFpbkZyYW1lKCktPnVybCgpKTsKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFVzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkZW55UmVxdWVzdCh1aW50NjRfdCB1c2Vy
TWVkaWFJRCwgVQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgdXNlck1lZGlhSUQsICIs
IHJlYXNvbjogIiwgcmVhc29uKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNE
ZW5pZWQodXNlck1lZGlhSUQsIHRvV2ViQ29yZShyZWFzb24pLCBpbnZhbGlkQ29uc3RyYWludCks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVz
ZXJNZWRpYUFjY2Vzc1dhc0RlbmllZCh1c2VyTWVkaWFJRCwgdG9XZWJDb3JlKHJlYXNvbiksIGlu
dmFsaWRDb25zdHJhaW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwogICAg
IFVOVVNFRF9QQVJBTShpbnZhbGlkQ29uc3RyYWludCk7CkBAIC0yOTYsMTEgKzI5NiwxMSBAQCBi
b29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpncmFudEFjY2Vzcyhj
b25zdCBVc2VyTWVkaWFQZXJtaXNzaQogICAgIH0KIAogICAgICsrbV9oYXNQZW5kaW5nQ2FwdHVy
ZTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkIHsgcmVxdWVzdC51
c2VyTWVkaWFJRCgpLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCksIHJlcXVlc3QudmlkZW9EZXZpY2Uo
KSwgcmVxdWVzdC5kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoKSB9LCBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cih0aGlzKV0geworICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQgeyByZXF1ZXN0LnVzZXJN
ZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9EZXZpY2UoKSwgcmVxdWVzdC52aWRlb0RldmljZSgpLCBy
ZXF1ZXN0LmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIC0tbV9oYXNQZW5kaW5nQ2FwdHVyZTsKLSAgICB9LCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCkBAIC02MDgsNyAr
NjA4LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51
bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDYKIAogICAgICAgICAgICAgYm9vbCByZXZl
YWxJZHNBbmRMYWJlbHMgPSBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIHx8IHdhc0dyYW50ZWRW
aWRlb09yQXVkaW9BY2Nlc3MoZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uZ2V0KCks
IHRvcExldmVsRG9jdW1lbnRPcmlnaW4uZ2V0KCkpOwogCi0gICAgICAgICAgICBtX3BhZ2UucHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVt
ZXJhdGlvbiB7IHVzZXJNZWRpYUlELCBjb21wdXRlRmlsdGVyZWREZXZpY2VMaXN0KHJldmVhbElk
c0FuZExhYmVscywgZGV2aWNlSURIYXNoU2FsdCksIGRldmljZUlESGFzaFNhbHQsIG9yaWdpbkhh
c1BlcnNpc3RlbnRBY2Nlc3MgfSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRp
b24geyB1c2VyTWVkaWFJRCwgY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChyZXZlYWxJZHNBbmRM
YWJlbHMsIGRldmljZUlESGFzaFNhbHQpLCBkZXZpY2VJREhhc2hTYWx0LCBvcmlnaW5IYXNQZXJz
aXN0ZW50QWNjZXNzIH0pOwogICAgICAgICB9KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAppbmRleCAyNDgxODJkODA5
Mi4uZGIxOGE0NWIwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dl
c3R1cmVDb250cm9sbGVyLmNwcApAQCAtNjYsMTAgKzY2LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9h
dCBtaW5pbXVtU2Nyb2xsRXZlbnRSYXRpb0ZvclN3aXBlID0gMC41Owogc3RhdGljIGNvbnN0IGZs
b2F0IHN3aXBlU25hcHNob3RSZW1vdmFsUmVuZGVyVHJlZVNpemVUYXJnZXRGcmFjdGlvbiA9IDAu
NTsKICNlbmRpZgogCi1zdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgVmlld0dlc3R1cmVDb250cm9s
bGVyKj4mIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpCitzdGF0aWMgSGFzaE1h
cDxQYWdlSWRlbnRpZmllciwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4mIHZpZXdHZXN0dXJlQ29u
dHJvbGxlcnNGb3JBbGxQYWdlcygpCiB7CiAgICAgLy8gVGhlIGtleSBpbiB0aGlzIG1hcCBpcyB0
aGUgYXNzb2NpYXRlZCBwYWdlIElELgotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PHVpbnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVy
czsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVmll
d0dlc3R1cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJlQ29udHJvbGxlcnM7CiAgICAgcmV0dXJu
IHZpZXdHZXN0dXJlQ29udHJvbGxlcnMuZ2V0KCk7CiB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2
b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb21Qcm9jZXNzKCkKICAgICBp
ZiAoIW1faXNDb25uZWN0ZWRUb1Byb2Nlc3MpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fd2Vi
UGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5w
YWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1faXNDb25uZWN0
ZWRUb1Byb2Nlc3MgPSBmYWxzZTsKIH0KIApAQCAtMTEyLDExICsxMTIsMTEgQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmNvbm5lY3RUb1Byb2Nlc3MoKQogICAgIGlmIChtX2lzQ29ubmVj
dGVkVG9Qcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9j
ZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCksICp0aGlzKTsK
KyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdl
UHJveHkucGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMpOwogICAgIG1faXNDb25uZWN0ZWRUb1By
b2Nlc3MgPSB0cnVlOwogfQogCi1WaWV3R2VzdHVyZUNvbnRyb2xsZXIqIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1cmUodWludDY0X3QgcGFnZUlELCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBnZXN0dXJlSUQpCitWaWV3R2VzdHVyZUNvbnRyb2xsZXIq
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1cmUoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBnZXN0dXJlSUQpCiB7
CiAgICAgYXV0byBnZXN0dXJlQ29udHJvbGxlckl0ZXIgPSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJz
Rm9yQWxsUGFnZXMoKS5maW5kKHBhZ2VJRCk7CiAgICAgaWYgKGdlc3R1cmVDb250cm9sbGVySXRl
ciA9PSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKS5lbmQoKSkKQEAgLTU0Nyw3
ICs1NDcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Zm9yY2VSZXBhaW50SWZOZWVk
ZWQoKQogCiAgICAgbV9oYXNPdXRzdGFuZGluZ1JlcGFpbnRSZXF1ZXN0ID0gdHJ1ZTsKIAotICAg
IHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAgIGF1dG8gcGFn
ZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAgICAgR2VzdHVyZUlEIGdlc3R1cmVJRCA9
IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBtX3dlYlBhZ2VQcm94eS5mb3JjZVJlcGFpbnQoVm9p
ZENhbGxiYWNrOjpjcmVhdGUoW3BhZ2VJRCwgZ2VzdHVyZUlEXSAoQ2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxlciA9IGNvbnRyb2xs
ZXJGb3JHZXN0dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKQEAgLTYxNyw3ICs2MTcsNyBAQCB2b2lk
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVxdWVzdFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9u
SWZOZWVkZWQoKQogICAgIGF1dG8mIHByb2Nlc3MgPSBtX3dlYlBhZ2VQcm94eS5wcm92aXNpb25h
bFBhZ2VQcm94eSgpID8gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKS0+cHJv
Y2VzcygpIDogbV93ZWJQYWdlUHJveHkucHJvY2VzcygpOwogICAgIGF1dG8gdGhyZXNob2xkID0g
bV9zbmFwc2hvdFJlbW92YWxUcmFja2VyLnJlbmRlclRyZWVTaXplVGhyZXNob2xkKCk7CiAKLSAg
ICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNl
dFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHRocmVzaG9sZCksIG1fd2ViUGFn
ZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJl
R2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xk
KHRocmVzaG9sZCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVy
LmgKaW5kZXggNDMxYzI3NjZkMDguLmMxNjcwZDNhOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0xNzUs
NyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxlckZv
ckdlc3R1cmUodWludDY0X3QgcGFnZUlELCBHZXN0dXJlSUQpOworICAgIHN0YXRpYyBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JHZXN0dXJlKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBHZXN0dXJlSUQpOwogCiAgICAgc3RhdGljIEdlc3R1cmVJRCB0YWtlTmV4dEdlc3R1cmVJ
RCgpOwogICAgIHZvaWQgd2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAppbmRleCBmMmU3YjkzNDA1
Ny4uOTkxZGMyZmNmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0
ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5r
U3RvcmUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0b3JlOjp3ZWJQ
cm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6Q29ubmUKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZp
c2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU2hhcmVkU3RyaW5nSGFzaCBs
aW5rSGFzaCkKK3ZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRlZExpbmtIYXNoRnJvbVBh
Z2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNoIGxpbmtIYXNoKQogewog
ICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFn
ZUlEKSkgewogICAgICAgICBpZiAoIXdlYlBhZ2VQcm94eS0+YWRkc1Zpc2l0ZWRMaW5rcygpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4IDA2ZjIwYmE5
MWNiLi4wMmI0OWJhYzU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5r
U3RvcmUuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkSW52YWxpZGF0
ZVNoYXJlZE1lbW9yeSgpIGZpbmFsOwogICAgIHZvaWQgZGlkVXBkYXRlU2hhcmVkU3RyaW5nSGFz
aGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoPiYgYWRkZWRIYXNoZXMs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoPiYgcmVtb3ZlZEhhc2hlcykg
ZmluYWw7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCk7CisgICAgdm9pZCBhZGRWaXNpdGVkTGlu
a0hhc2hGcm9tUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkU3Ry
aW5nSGFzaCk7CiAKICAgICB2b2lkIHNlbmRTdG9yZUhhbmRsZVRvUHJvY2VzcyhXZWJQcm9jZXNz
UHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5r
U3RvcmUubWVzc2FnZXMuaW4KaW5kZXggZTc4NjJlMzY1YjAuLjJlNjZjNDI4MDhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMu
aW4KQEAgLTIxLDUgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gVmlzaXRl
ZExpbmtTdG9yZSB7Ci0gICAgQWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBsaW5rSGFzaCkKKyAgICBBZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGxpbmtIYXNoKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0
aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwCmlu
ZGV4IGI1YTVjODIzNGQ4Li45ODA1ZTAxNTY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dl
YkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAtNDUsMTIgKzQ1LDEyIEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6OldlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5KQog
ICAgIDogbV93ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5KQogewotICAgIG1fd2ViUGFnZVByb3h5
LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JD
b29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBh
Z2VJRCgpLCAqdGhpcyk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSwgKnRo
aXMpOwogfQogCiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6fldlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvclByb3h5KCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7
CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFsKHVpbnQ2NF90IG1l
c3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBXZWJDb3JlOjpQdWJs
aWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAppbmRleCA4N2IwYWZjMjBjMi4u
MGRiZTBhZmI0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRD
b21tYW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21t
YW5kUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94eTo6
dW5hcHBseSgpCiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFnZS0+aGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VW5hcHBseUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdl
SUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JT
eW5jUmVwbHkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVk
aXRDb21tYW5kKG1fY29tbWFuZElEKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VF
dmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogICAgIG1fcGFnZS0+cmVnaXN0ZXJFZGl0Q29t
bWFuZCgqdGhpcywgVW5kb09yUmVkbzo6UmVkbyk7CiB9CiAKQEAgLTY0LDcgKzY0LDcgQEAgdm9p
ZCBXZWJFZGl0Q29tbWFuZFByb3h5OjpyZWFwcGx5KCkKICAgICBpZiAoIW1fcGFnZSB8fCAhbV9w
YWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFwcGx5RWRpdENvbW1hbmQobV9j
b21tYW5kSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVz
c2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZWFwcGx5RWRpdENvbW1hbmQobV9jb21tYW5kSUQpLCBJUEM6OlNlbmRP
cHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAgICAg
bV9wYWdlLT5yZWdpc3RlckVkaXRDb21tYW5kKCp0aGlzLCBVbmRvT3JSZWRvOjpVbmRvKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAppbmRleCA1Yzg1MWI3
Mjc1NS4uYjAxYjMwNTA1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZFVSTChjb25z
dCBVUkwmIHVybCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTEluRnJhbWUodXJs
LCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWRVUkxJbkZyYW1lKHVybCwgbV9mcmFtZUlEKSk7CiB9CiAKIHZvaWQg
V2ViRnJhbWVQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBj
b25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3Qg
VVJMJiBiYXNlVVJMKQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmxvYWRE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVAog
ICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YUluRnJhbWUoZGF0YSwgTUlNRVR5cGUs
IGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9mcmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YUluRnJhbWUoZGF0YSwg
TUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9mcmFtZUlEKSk7CiB9CiAKIHZvaWQg
V2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmcoKSBjb25zdApAQCAtMTAzLDcgKzEwMyw3IEBAIHZv
aWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmcoKSBjb25zdAogICAgIGlmICghbV9wYWdlLT5o
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3RvcExvYWRpbmdGcmFtZShtX2ZyYW1lSUQpKTsKIH0KICAgICAKIGJvb2wgV2ViRnJhbWVQcm94
eTo6Y2FuUHJvdmlkZVNvdXJjZSgpIGNvbnN0CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBXZWJG
cmFtZVByb3h5Ojpjb2xsYXBzZVNlbGVjdGlvbigpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbGxhcHNlU2VsZWN0aW9uSW5G
cmFtZShtX2ZyYW1lSUQpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwCmluZGV4IDhlOTNiMWRjMmQw
Li4zZjhiZjEwYjcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKQEAgLTQ0LDI1ICs0NCwyNSBAQCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KFdlYlBhZ2VQcm94eSYg
cGFnZSwgV2ViRnVsbAogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2NsaWVudChjbGllbnQp
CiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBh
Z2VJRCgpLCAqdGhpcyk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksICp0aGlzKTsKIH0KIAogV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eTo6fldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkoKQogewotICAgIG1fcGFn
ZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJ
RCgpLnRvVUludDY0KCkpOwogICAgIG1fY2xpZW50LmNsb3NlRnVsbFNjcmVlbk1hbmFnZXIoKTsK
IH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp3aWxsRW50ZXJGdWxsU2NyZWVu
KCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLndpbGxFbnRlckZ1bGxzY3JlZW4o
Jm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6V2lsbEVudGVyRnVsbFNjcmVlbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEVudGVyRnVs
bFNjcmVlbigpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRl
ckZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50KCkuZGlkRW50ZXJG
dWxsc2NyZWVuKCZtX3BhZ2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViRnVsbFNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbFNjcmVlbigpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlk
RW50ZXJGdWxsU2NyZWVuKCkpOwogCiAgICAgaWYgKG1fcGFnZS5pc0NvbnRyb2xsZWRCeUF1dG9t
YXRpb24oKSkgewogICAgICAgICBpZiAoV2ViQXV0b21hdGlvblNlc3Npb24qIGF1dG9tYXRpb25T
ZXNzaW9uID0gbV9wYWdlLnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9u
KCkpCkBAIC03MywxMyArNzMsMTMgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojpk
aWRFbnRlckZ1bGxTY3JlZW4oKQogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp3aWxs
RXhpdEZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50KCkud2lsbEV4
aXRGdWxsc2NyZWVuKCZtX3BhZ2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbFNjcmVlbigpLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6
V2lsbEV4aXRGdWxsU2NyZWVuKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZEV4aXRGdWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgp
LmRpZEV4aXRGdWxsc2NyZWVuKCZtX3BhZ2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjpEaWRFeGl0RnVsbFNjcmVlbigpKTsKICAgICAKICAgICBpZiAobV9wYWdlLmlzQ29udHJv
bGxlZEJ5QXV0b21hdGlvbigpKSB7CiAgICAgICAgIGlmIChXZWJBdXRvbWF0aW9uU2Vzc2lvbiog
YXV0b21hdGlvblNlc3Npb24gPSBtX3BhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21h
dGlvblNlc3Npb24oKSkKQEAgLTg5LDEyICs4OSwxMiBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHk6OmRpZEV4aXRGdWxsU2NyZWVuKCkKIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5OjpzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wgYW5pbWF0aW5nKQogewotICAgIG1f
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEFu
aW1hdGluZ0Z1bGxTY3JlZW4oYW5pbWF0aW5nKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEFuaW1hdGluZ0Z1bGxT
Y3JlZW4oYW5pbWF0aW5nKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
cmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1h
bmFnZXI6OlJlcXVlc3RFeGl0RnVsbFNjcmVlbigpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMDgsMjcg
KzEwOCwyNyBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNj
cmVlbihib29sIHdpdGhLZXlib2FyZCwgQ29tcGxldGlvbgogCiB2b2lkIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6OnNhdmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2F2ZVNjcm9sbFBvc2l0aW9u
KCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpTYXZlU2Nyb2xsUG9zaXRpb24oKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBtX3BhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpSZXN0b3JlU2Ny
b2xsUG9zaXRpb24oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlc3RvcmVTY3JvbGxQb3NpdGlvbigpKTsKIH0KIAog
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRGdWxsc2NyZWVuSW5zZXRzKGNvbnN0
IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBpbnNldHMpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkluc2V0
cyhpbnNldHMpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkluc2V0cyhpbnNldHMpKTsKIH0KIAog
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRGdWxsc2NyZWVuQXV0b0hpZGVEdXJh
dGlvbihTZWNvbmRzIGR1cmF0aW9uKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5BdXRvSGlkZUR1cmF0aW9u
KGR1cmF0aW9uKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6
V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5BdXRvSGlkZUR1cmF0aW9uKGR1cmF0
aW9uKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVl
bkNvbnRyb2xzSGlkZGVuKGJvb2wgaGlkZGVuKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5Db250cm9sc0hp
ZGRlbihoaWRkZW4pLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkNvbnRyb2xzSGlkZGVuKGhpZGRl
bikpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNsb3NlKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCAxMmJiMjYx
ZDA3Yy4uMDNhMGE5ZTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNw
ZWN0b3JQcm94eS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgV2ViSW5zcGVjdG9yUHJveHk6OldlYklu
c3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSkKIHsKICAgICBpZiAoaW5z
cGVjdGVkUGFnZSAmJiBpbnNwZWN0ZWRQYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKSB7CiAgICAg
ICAgIG1faW5zcGVjdGVkUGFnZSA9IGluc3BlY3RlZFBhZ2U7Ci0gICAgICAgIG1faW5zcGVjdGVk
UGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwg
KnRoaXMpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMpOwogICAgIH0KIH0K
IApAQCAtODgsNyArODgsNyBAQCBXZWJQcmVmZXJlbmNlcyYgV2ViSW5zcGVjdG9yUHJveHk6Omlu
c3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpIGNvbnN0CiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpp
bnZhbGlkYXRlKCkKIHsKICAgICBpZiAobV9pbnNwZWN0ZWRQYWdlKQotICAgICAgICBtX2luc3Bl
Y3RlZFBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBjbG9zZUZy
b250ZW5kUGFnZUFuZFdpbmRvdygpOwogICAgIHBsYXRmb3JtSW52YWxpZGF0ZSgpOwpAQCAtMTAx
LDcgKzEwMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5z
cGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSk7CiB9CiAK
IC8vIFB1YmxpYyBBUElzCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6Y29ubmVjdCgpCiAgICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAKICAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNw
YXRjaGVyOjpOb3RpZnlOZWVkRGVidWdnZXJCcmVhaygpLCAwKTsKLSAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSwgbV9pbnNw
ZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNob3coKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNo
b3coKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlKCkK
ICAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNw
ZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpDbG9zZSgp
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSk7CiAKICAgICBjbG9zZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpOwogfQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnJlb3BlbigpCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZXNldCgpCiB7CiAgICAgaWYg
KG1faW5zcGVjdGVkUGFnZSkgewotICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2lu
c3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+
cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgICAgIG1faW5zcGVjdGVkUGFnZSA9IG51bGxwdHI7
CiAgICAgfQogfQpAQCAtMTk2LDEwICsxOTYsMTAgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
dXBkYXRlRm9yTmV3UGFnZVByb2Nlc3MoV2ViUGFnZVByb3h5KiBpbnNwZWN0ZWRQYWdlKQogICAg
IEFTU0VSVChpbnNwZWN0ZWRQYWdlKTsKIAogICAgIG1faW5zcGVjdGVkUGFnZSA9IGluc3BlY3Rl
ZFBhZ2U7Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lu
c3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9j
ZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCks
ICp0aGlzKTsKIAogICAgIGlmIChtX2luc3BlY3RvclBhZ2UpCi0gICAgICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25u
ZWN0aW9uKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3Rv
clBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25uZWN0aW9uKCkp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBD
OjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1l
bnQgY29ubmVjdGlvbklkZW50aWZpCiAgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVy
KSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEZyb250ZW5kQ29ubmVjdGlvbihjb25uZWN0aW9u
SWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgp
CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd0NvbnNvbGUo
KQogCiAgICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dDb25zb2xlKCksIG1faW5z
cGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6c2hvd1Jlc291cmNlcygpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAot
ICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U2hvd1Jlc291cmNlcygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2lu
c3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jlc291cmNlcygp
KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1RpbWVsaW5lcygpCkBAIC0yMzcs
NyArMjM3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1RpbWVsaW5lcygpCiAKICAg
ICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1RpbWVsaW5lcygpLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6U2hvd1RpbWVsaW5lcygpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQpAQCAtMjQ3
LDcgKzI0Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JG
cmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSkKIAogICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwog
Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIG1faW5zcGVj
dGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0b20oKQpAQCAtMjc4LDE5
ICsyNzgsMTkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKEF0dGFjaG1lbnRTaWRl
IHNpZGUpCiAgICAgaWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlUHJlZmVy
ZW5jZXMoKS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZCh0cnVlKTsKIAotICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNo
ZWQodHJ1ZSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSk7CiAKICAg
ICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpC
b3R0b206Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6QXR0YWNoZWRCb3R0b20oKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBdHRh
Y2htZW50U2lkZTo6UmlnaHQ6Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9y
UGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCkpOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgQXR0YWNobWVudFNpZGU6OkxlZnQ6Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZExlZnQoKSwgbV9p
bnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkBAIC0zMDcsOCArMzA3LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0
YWNoKCkKICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJl
bmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGZhbHNlKTsKIAotICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNo
ZWQoZmFsc2UpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKLSAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKGZhbHNlKSk7CisgICAgbV9pbnNwZWN0
b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSk7CiAKICAg
ICBwbGF0Zm9ybURldGFjaCgpOwogfQpAQCAtMzQxLDkgKzM0MSw5IEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnRvZ2dsZVBhZ2VQcm9maWxpbmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBp
ZiAobV9pc1Byb2ZpbGluZ1BhZ2UpCi0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcFBhZ2VQcm9maWxpbmcoKSwgbV9pbnNw
ZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpKTsKICAgICBlbHNlCi0gICAg
ICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U3RhcnRQYWdlUHJvZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQ
YWdlUHJvZmlsaW5nKCkpOwogCiAgICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mgbm90
aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCiAgICAgbV9pc1Byb2ZpbGluZ1BhZ2UgPSAhbV9pc1By
b2ZpbGluZ1BhZ2U7CkBAIC0zNTYsMTAgKzM1NiwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
Ojp0b2dnbGVFbGVtZW50U2VsZWN0aW9uKCkKIAogICAgIGlmIChtX2VsZW1lbnRTZWxlY3Rpb25B
Y3RpdmUpIHsKICAgICAgICAgbV9pZ25vcmVFbGVtZW50U2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsK
LSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpTdG9wRWxlbWVudFNlbGVjdGlvbigpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgp
KTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlN0b3BFbGVtZW50U2VsZWN0aW9uKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbm5lY3Qo
KTsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpTdGFydEVsZW1lbnRTZWxlY3Rpb24oKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTdGFydEVsZW1lbnRTZWxlY3Rpb24oKSk7CiAgICAgfQogfQogCkBAIC0zOTEsNyArMzkx
LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQYWdlKCkKIAogICAg
IHRyYWNrSW5zcGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UsIG1faW5zcGVjdGVkUGFnZSk7CiAK
LSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMp
OwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VV
UkwoKm1faW5zcGVjdG9yUGFnZSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwo
KSk7CiB9CiAKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVu
TG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlcwogICAg
IGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNo
Q29ubmVjdGlvbihtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCwgaW5zcGVj
dGlvbkxldmVsKCkpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3Rv
clBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9u
KG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0LCBpbnNwZWN0aW9uTGV2ZWwo
KSkpOwogCiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlRnJvbnRlbmQpOwogICAgIG1faXNBY3RpdmVG
cm9udGVuZCA9IHRydWU7CkBAIC00MjMsMjYgKzQyMywyNiBAQCB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRl
clRlcwogICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNoZWQoKTsKICAgICAg
ICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0
b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKIAotICAgICAg
ICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwor
ICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0
QXR0YWNoZWQobV9pc0F0dGFjaGVkKSk7CiAKICAgICAgICAgaWYgKG1faXNBdHRhY2hlZCkgewog
ICAgICAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7CiAgICAgICAgICAgICBjYXNl
IEF0dGFjaG1lbnRTaWRlOjpCb3R0b206Ci0gICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9t
KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCkp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRT
aWRlOjpSaWdodDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2luc3BlY3Rv
clBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpMZWZ0OgotICAg
ICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpBdHRhY2hlZExlZnQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6QXR0YWNoZWRMZWZ0KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hlZCgpLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCkpOwogCi0gICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXREb2Nr
aW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OlNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9jYW5BdHRhY2gpKTsKICAgICB9CiAKICAgICBtX2lu
c3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgbV91bmRlclRlc3QgPyBXZWJJbnNw
ZWN0b3JQcm94eTo6aW5zcGVjdG9yVGVzdFBhZ2VVUkwoKSA6IFdlYkluc3BlY3RvclByb3h5Ojpp
bnNwZWN0b3JQYWdlVVJMKCkpKTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpvcGVuKCkKIAogICAgIFNldEZvclNjb3BlPGJvb2w+IGlzT3BlbmluZyhtX2lzT3Bl
bmluZywgdHJ1ZSk7CiAgICAgbV9pc1Zpc2libGUgPSB0cnVlOwotICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRJc1Zpc2libGUo
bV9pc1Zpc2libGUpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3Rv
clBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRJc1Zpc2libGUobV9pc1Zp
c2libGUpKTsKIAogICAgIGlmIChtX2lzQXR0YWNoZWQpCiAgICAgICAgIHBsYXRmb3JtQXR0YWNo
KCk7CkBAIC00ODUsOCArNDg1LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2VGcm9u
dGVuZFBhZ2VBbmRXaW5kb3coKQogCiAgICAgdW50cmFja0luc3BlY3RvclBhZ2UobV9pbnNwZWN0
b3JQYWdlKTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpTZXRJc1Zpc2libGUobV9pc1Zpc2libGUpLCBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSkp
OworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7CiAKICAg
ICBpZiAobV9pc0FjdGl2ZUZyb250ZW5kKSB7CiAgICAgICAgIG1faXNBY3RpdmVGcm9udGVuZCA9
IGZhbHNlOwpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFj
aEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGlmIChtX2luc3BlY3RvclBhZ2UgJiYgIW1fdW5kZXJUZXN0KQotICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9j
a2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0dGFjaCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkp
OworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSk7CiAKICAgICBwbGF0Zm9ybUF0
dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQobV9jYW5BdHRhY2gpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNjU2YzhkY2M1OWMuLjlkODE4NGE3NjkyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4MSwxMiArMzgx
LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JNb3N0VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc2Vs
ZWN0ZWRQYWdlKTsKIH0KIAotUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUo
UGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRf
dCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCitS
ZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xp
ZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUlELCBX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0
X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQor
V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQobWFrZVdl
YWtQdHIocGFnZUNsaWVudCkpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1
cmF0aW9uKSkKICAgICAsIG1fbmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2
aWdhdGlvbkNsaWVudD4oKSkKQEAgLTQzNSw3ICs0MzUsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3Ms
IHVpbgogI2VuZGlmCiAgICAgLCBtX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6
Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6cmVzZXRSZWNlbnRDcmFzaENvdW50KQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb25zdHJ1
Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghbV9jb25maWd1
cmF0aW9uLT5kcmF3c0JhY2tncm91bmQoKSkKICAgICAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBD
b2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIFdlYlBhZ2VQcm94
eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYg
cHJvY2VzcywgdWluCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGRpZEF0
dGFjaFRvUnVubmluZ1Byb2Nlc3MoKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
SUQsICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELnRvVUludDY0KCks
ICp0aGlzKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRGVwcmVjYXRlZEdsb2Jh
bFNldHRpbmdzOjpzZXREaXNhYmxlU2NyZWVuU2l6ZU92ZXJyaWRlKHByZWZlcmVuY2VzU3RvcmUo
KS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmRpc2FibGVTY3JlZW5TaXpl
T3ZlcnJpZGVLZXkoKSkpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vzcywg
dWluCiAKIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MtPndlYlBhZ2UobV9wYWdl
SUQpICE9IHRoaXMpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTYxMyw3ICs2MTMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGll
bnQ+JiYgdWlDbGllbnQpCiAgICAgbV91aUNsaWVudCA9IFdURk1vdmUodWlDbGllbnQpOwogCiAg
ICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlDbGll
bnQtPmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKSwgbV9wYWdlSUQpOworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwobV91aUNsaWVudC0+Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkpKTsKIAogICAg
IHNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkpOwogICAgIHNldE5lZWRz
Rm9udEF0dHJpYnV0ZXMobV91aUNsaWVudC0+bmVlZHNGb250QXR0cmlidXRlcygpKTsKQEAgLTYz
MCw3ICs2MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGllbnQpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlSWNvbkxvYWRpbmdDbGllbnQo
aGFzQ2xpZW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KHN0ZDo6
dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+JiYgZmluZENsaWVudCkKQEAgLTcwOCwxMCArNzA4
LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogICAg
IEFTU0VSVCghaGFzUnVubmluZ1Byb2Nlc3MoKSk7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBX
ZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAgICBtX3Byb2Nlc3Mt
PnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgYXV0byYgcHJvY2Vzc1Bvb2wgPSBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCk7CiAKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1
bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiAg
ICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7CiAKICAgICBtX3Byb2Nlc3MtPmFkZEV4aXN0
aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpCZWdpbnNVc2luZ0RhdGFTdG9yZTo6
WWVzKTsKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhpcyk7CisgICAgbV9w
cm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCAqdGhpcyk7CiAKICAgICBmaW5p
c2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoSXNQcm9jZXNzU3dhcDo6Tm8pOwogfQpAQCAtNzYzLDcg
Kzc2Myw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxl
KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBTdXNw
ZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCkpOwogICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlx
dWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5G
cmFtZUlELCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ01vZGUpOwogCi0gICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQ
Ukl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFj
ay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dp
bmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZy
b21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOworICAgIExPRyhQcm9jZXNzU3dhcHBp
bmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBm
b3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgp
LnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJp
bmcoKSA6IDApOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBmb3JjZWQgYSBzd2FwIHRoZW4gaXQg
bWF5IG5vdCBiZSB3ZWItY29tcGF0aWJsZSB0byBrZWVwIHRoZSBwcmV2aW91cyBwYWdlIGJlY2F1
c2Ugb3RoZXIgd2luZG93cyBtYXkgaGF2ZSBhbiBvcGVuZXIgbGluayB0byBpdC4gV2UgdGh1cyBj
bG9zZSBpdCBhcyBzb29uIGFzIHdlCiAgICAgLy8gY2FuIGRvIHNvIHdpdGhvdXQgZmxhc2hpbmcu
CkBAIC03ODEsNyArNzgxLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFn
ZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKIHZvaWQgV2ViUGFn
ZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
c3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+JiYgZHJhd2luZ0FyZWEsIFJlZlB0cjxX
ZWJGcmFtZVByb3h5PiYmIG1haW5GcmFtZSkKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1dlYlByb2Nlc3M6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3
YXBUb1dlYlByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBtX3By
b2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJv
Y2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOwpAQCAtNzk2LDcgKzc5Niw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
c3RkOjp1bmlxdWVfCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7CiAKICAgICBtX3By
b2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpCZWdpbnNV
c2luZ0RhdGFTdG9yZTo6Tm8pOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0
aGlzKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELnRvVUludDY0KCksICp0aGlz
KTsKIAogICAgIGZpbmlzaEF0dGFjaGluZ1RvV2ViUHJvY2VzcyhJc1Byb2Nlc3NTd2FwOjpZZXMp
OwogfQpAQCAtODczLDEwICs4NzMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRv
UnVubmluZ1Byb2Nlc3MoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9y
UmVsb2FkOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2Ug
aXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAgICAgCkBAIC04ODUsMTQgKzg4NSwxNCBAQCBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogICAgIGxh
dW5jaFByb2Nlc3MocmVnaXN0cmFibGVEb21haW4pOwogCiAgICAgaWYgKCFtX2JhY2tGb3J3YXJk
TGlzdC0+Y3VycmVudEl0ZW0oKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVsb2Fk
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3VycmVudCBpdGVtIHRvIHJlbG9hZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZVJl
bG9hZE5hdmlnYXRpb24oKTsKIAogICAgIC8vIFdlIGFsbG93IHN0YWxlIGNvbnRlbnQgd2hlbiBy
ZWxvYWRpbmcgYSBXZWJQcm9jZXNzIHRoYXQncyBiZWVuIGtpbGxlZCBvciBjcmFzaGVkLgotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShu
YXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVt
KCktPml0ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5h
dmlnYXRpb25JRCgpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlEKCks
IEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtOTAwLDEwICs5
MDAsMTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9j
ZXNzRm9yUmVsb2FkKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
YXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQ
cm9jZXNzV2l0aEl0ZW06IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTkxNSw3ICs5MTUsNyBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NXaXRo
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdAogCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZp
Z2F0aW9uU3RhdGUtPmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbihpdGVtLCBtX2JhY2tGb3J3
YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJk
KTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3
YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgRnJhbWVM
b2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6
Ok5vLCBXVEY6Om51bGxvcHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5p
dGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3Bv
bnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC05
NTYsNyArOTU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBpZiAobV9pc0Ns
b3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiY2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAg
bV9pc0Nsb3NlZCA9IHRydWU7CiAKQEAgLTEwMDksOSArMTAwOSw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjbG9zZSgpCiAKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucmVtb3ZlQWxsU3Vz
cGVuZGVkUGFnZXNGb3JQYWdlKCp0aGlzKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNsb3NlKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgV2ViUHJv
Y2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7Ci0gICAgbV9wcm9jZXNzLT5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9ucyh0aGlzKTsKIAog
ICAgIC8vIE51bGwgb3V0IHJlbGF0ZWQgV2ViUGFnZVByb3h5IHRvIGF2b2lkIGxlYWtzLgpAQCAt
MTAzMSwxNCArMTAzMSwxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5Q2xvc2U6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICAvLyBDbG9zZSB3aXRob3V0IGRlbGF5IGlmIHRo
ZSBwcm9jZXNzIGFsbG93cyBpdC4gT3VyIGdvYWwgaXMgdG8gdGVybWluYXRlCiAgICAgLy8gdGhl
IHByb2Nlc3MsIHNvIHdlIGNoZWNrIGEgcGVyLXByb2Nlc3Mgc3RhdHVzIGJpdC4KICAgICBpZiAo
bV9wcm9jZXNzLT5pc1N1ZGRlblRlcm1pbmF0aW9uRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VHJ5Q2xvc2Uo
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeUNsb3NlKCkpOwog
ICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAgICAgcmV0dXJu
IGZhbHNlOwogfQpAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8K
ICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3Q6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0LnVy
bCgpIH0pOwpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1
ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIHsK
ICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRp
b246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9
IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC0xMTE0LDE2ICsxMTE0LDE2IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgIHdpbGxBY3F1aXJlVW5pdmVyc2FsRmls
ZVJlYWRTYW5kYm94RXh0ZW5zaW9uKHByb2Nlc3MpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFt
ZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFRv
UHJvY2Vzcyhwcm9jZXNzLCBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFt
ZXRlcnMpKTsKICAgICBwcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0K
IAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEaXJlY3RvcnlVUkxT
dHJpbmcsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsb2FkRmlsZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTog
cGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTEzMiw3ICsxMTMyLDcgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxT
dHJpbmcsIGNvbnMKIAogICAgIFVSTCBmaWxlVVJMID0gVVJMKFVSTCgpLCBmaWxlVVJMU3RyaW5n
KTsKICAgICBpZiAoIWZpbGVVUkwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWw6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTE0Miw3ICsxMTQyLDcgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBlbHNlIHsKICAgICAgICAgcmVzb3VyY2VEaXJl
Y3RvcnlVUkwgPSBVUkwoVVJMKCksIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nKTsKICAgICAg
ICAgaWYgKCFyZXNvdXJjZURpcmVjdG9yeVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcmVzb3VyY2UgVVJM
IGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcmVzb3VyY2UgVVJMIGlzIG5vdCBsb2Nh
bDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9CiAgICAgfQpAQCAtMTE2NCw3ICsxMTY0LDcgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxT
dHJpbmcsIGNvbnMKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJz
KTsKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgcmVz
b3VyY2VEaXJlY3RvcnlVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpKTsKICAgICBtX3Byb2Nl
c3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRp
b247CkBAIC0xMTcyLDEwICsxMTcyLDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERh
dGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFn
ZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTE4
OSw3ICsxMTg5LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2Fk
RGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb246IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdp
dGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVCgh
bV9pc0Nsb3NlZCk7CiAKQEAgLTEyMDksMTkgKzEyMDksMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9j
ZXNzLAogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAg
ICAgcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVSTCk7Ci0g
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRl
cnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFRvUHJvY2Vzcyhwcm9jZXNzLCBNZXNzYWdlczo6V2Vi
UGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMpKTsKICAgICBwcm9jZXNzLT5yZXNwb25zaXZl
bmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5h
dGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUg
cHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0
dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMg
dGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCiAgICAgLy8g
aGFuZGxlZCBwcm9wZXJseS4KICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lzTG9hZGluZ0FsdGVy
bmF0ZUhUTUxTdHJpbmdGb3JGYWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNs
b3NlZCAob3Igb3RoZXIpOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChv
ciBvdGhlcik6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTEyNTIsMTYgKzEyNTIsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRB
bHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFMK
IAogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVS
TCk7CiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCB1bnJl
YWNoYWJsZVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2Fk
QWx0ZXJuYXRlSFRNTChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTChsb2FkUGFyYW1ldGVycykpOwogICAgIG1f
cHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWRXZWJBcmNoaXZlRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNs
b3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNzksMTYg
KzEyNzksMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRh
dGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXMKICAgICBsb2FkUGFyYW1ldGVycy51
c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhKS5nZXQoKSk7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1l
dGVycyk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRh
KGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBJbnRQb2ludCBk
b2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazog
cGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazog
cGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEyOTgsMjAgKzEyOTgsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2Vz
cyhSZWdpc3RyYWJsZURvbWFpbiB7IFVSTChVUkwoKSwgdXJsU3RyaW5nKSB9KTsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TmF2aWdhdGVUb1BERkxpbmtXaXRoU2lt
dWxhdGVkQ2xpY2sodXJsU3RyaW5nLCBkb2N1bWVudFBvaW50LCBzY3JlZW5Qb2ludCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRvUERGTGlua1dpdGhT
aW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRvY3VtZW50UG9pbnQsIHNjcmVlblBvaW50KSk7CiAg
ICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJzdG9wTG9hZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3RvcExvYWRpbmc6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2lt
dWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTdG9wTG9hZGluZygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U3RvcExvYWRpbmcoKSk7CiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlKSB7
CiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5jYW5jZWwoKTsKICAgICAgICAgbV9wcm92aXNp
b25hbFBhZ2UgPSBudWxscHRyOwpAQCAtMTMyMSw3ICsxMzIxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnN0b3BMb2FkaW5nKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZWxvYWQ6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlbG9hZDogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogCkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVs
b2FkT3B0aW9uPiBvcAogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFdlYkNvcmU6OlJlbG9hZE9w
dGlvbjo6RGlzYWJsZUNvbnRlbnRCbG9ja2VycykpCiAgICAgICAgIG5hdmlnYXRpb24tPnNldFVz
ZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoZmFsc2UpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG9w
dGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCks
IG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIG1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlv
bjsKQEAgLTEzOTgsNyArMTM5OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQ
cm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJC
YWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRl
bTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAg
ICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0
ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKQEAgLTE0MTIsNyArMTQxMiw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtCiAgICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRl
bUlzSW5TYW1lRG9jdW1lbnQoaXRlbSkpCiAgICAgICAgIG5hdmlnYXRpb24gPSBtX25hdmlnYXRp
b25TdGF0ZS0+Y3JlYXRlQmFja0ZvcndhcmROYXZpZ2F0aW9uKGl0ZW0sIG1fYmFja0ZvcndhcmRM
aXN0LT5jdXJyZW50SXRlbSgpLCBmcmFtZUxvYWRUeXBlKTsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uID8gbmF2
aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVtLml0ZW1JRCgpLCBmcmFtZUxvYWRUeXBl
LCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZp
Z2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVtLml0ZW1JRCgpLCBm
cmFtZUxvYWRUeXBlLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxv
cHQpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAg
ICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xNDIwLDE0ICsxNDIwLDE0IEBAIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9y
d2FyZExpc3RJdGVtCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVT
Y3JvbGxQb3NpdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlv
bjogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHBhZ2Ug
aXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlS
ZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBhZGRl
ZCwgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4mJiByZW1vdmVkKQpAQCAtMTQ4
OSw3ICsxNDg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbnRyb2xsZWRCeUF1dG9tYXRp
b24oYm9vbCBjb250cm9sbGVkKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRD
b250cm9sbGVkQnlBdXRvbWF0aW9uKGNvbnRyb2xsZWQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihjb250cm9sbGVkKSk7
CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlv
bihtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRp
b24pKTsKIH0KIApAQCAtMTUxNCw3ICsxNTE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldElu
ZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0SW5kaWNhdGluZyhpbmRpY2F0aW5nKSk7CiB9CiAKIGJvb2wgV2ViUGFn
ZVByb3h5OjphbGxvd3NSZW1vdGVJbnNwZWN0aW9uKCkgY29uc3QKQEAgLTE1NTAsNyArMTU1MCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckluc3BlY3RvclRhcmdldHMoKQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCiB7Ci0gICAgU3RyaW5nIHBhZ2VU
YXJnZXRJZCA9IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQpOworICAgIFN0cmluZyBwYWdl
VGFyZ2V0SWQgPSBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAg
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJ
ZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0KIApAQCAtMTU2MSw3
ICsxNTYxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBP
cHRpb25hbDxDb2xvcj4mIGNvbG9yKQogCiAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsK
ICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihjb2xvcikp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRl
bnRJbnNldCkKQEAgLTE1NzcsOSArMTU3Nyw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUb3BD
b250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQogICAgIE1hY2hTZW5kUmlnaHQgZmVuY2Ug
PSBtX2RyYXdpbmdBcmVhLT5jcmVhdGVGZW5jZSgpOwogCiAgICAgYXV0byBmZW5jZUF0dGFjaG1l
bnQgPSBJUEM6OkF0dGFjaG1lbnQoZmVuY2UubGVha1NlbmRSaWdodCgpLCBNQUNIX01TR19UWVBF
X01PVkVfU0VORCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRU
b3BDb250ZW50SW5zZXRGZW5jZWQoY29udGVudEluc2V0LCBmZW5jZUF0dGFjaG1lbnQpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VG9wQ29udGVudEluc2V0RmVu
Y2VkKGNvbnRlbnRJbnNldCwgZmVuY2VBdHRhY2htZW50KSk7CiAjZWxzZQotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VG9wQ29udGVudEluc2V0KGNvbnRlbnRJbnNl
dCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50
SW5zZXQoY29udGVudEluc2V0KSk7CiAjZW5kaWYKIH0KIApAQCAtMTU5MSw3ICsxNTkxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVuZGVybGF5Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIG1fdW5kZXJsYXlDb2xvciA9IGNvbG9yOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNz
KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VW5kZXJs
YXlDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0VW5kZXJsYXlDb2xvcihjb2xvcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmll
d1dpbGxTdGFydExpdmVSZXNpemUoKQpAQCAtMTYwMCwxNCArMTYwMCwxNCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6dmlld1dpbGxTdGFydExpdmVSZXNpemUoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBjbG9zZU92ZXJsYXllZFZpZXdzKCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpWaWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxTdGFydExpdmVSZXNpemUoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojp2aWV3V2lsbEVuZExpdmVSZXNpemUoKQogewogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Vmlld1dpbGxFbmRMaXZlUmVzaXplKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbEVuZExpdmVSZXNpemUoKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFJlZ2lvbiYgcmVnaW9u
KQpAQCAtMTcwMSw3ICsxNzAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdEaWRFbnRlcldp
bmRvdygpCiAgICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlID0gcGFnZUNsaWVu
dCgpLnZpZXdMYXllckhvc3RpbmdNb2RlKCk7CiAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9kZSAh
PSBsYXllckhvc3RpbmdNb2RlKSB7CiAgICAgICAgIG1fbGF5ZXJIb3N0aW5nTW9kZSA9IGxheWVy
SG9zdGluZ01vZGU7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3RpbmdNb2RlKSwgbV9wYWdlSUQpOworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGlu
Z01vZGUpKTsKICAgICB9CiB9CiAKQEAgLTE3NTAsNyArMTc1MCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogICAgIGF1dG8gYWN0aXZpdHlTdGF0
ZUNoYW5nZUlEID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID8g
dGFrZU5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQoKSA6IHN0YXRpY19jYXN0PEFjdGl2aXR5U3Rh
dGVDaGFuZ2VJRD4oQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyk7CiAKICAgICBpZiAo
Y2hhbmdlZCB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFz
eW5jaHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5
KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWN0aXZp
dHlTdGF0ZShtX2FjdGl2aXR5U3RhdGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgbV9uZXh0QWN0
aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0QWN0aXZpdHlTdGF0ZShtX2FjdGl2aXR5U3RhdGUsIGFjdGl2aXR5
U3RhdGVDaGFuZ2VJRCwgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcykpOwogCiAg
ICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5jbGVhcigpOwogCkBAIC0xODUz
LDcgKzE4NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF5ZXJIb3N0aW5nTW9kZURpZENoYW5n
ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbGF5ZXJIb3N0aW5nTW9kZSA9IGxheWVySG9z
dGluZ01vZGU7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXll
ckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3RpbmdNb2RlKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rp
dml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKQpAQCAtMTg5NSwyMSArMTg5
NSwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwg
Ym9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5
Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluaXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tl
eWJvYXJkRXZlbnRWYWxpZCwga2V5Ym9hcmRFdmVudCwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2xlYXJTZWxlY3Rpb24oKQogewogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Q2xlYXJTZWxlY3Rpb24oKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNsZWFyU2VsZWN0aW9uKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVz
dG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpCiB7CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50
KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2VsZWN0
aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTE5MjAsNyArMTkyMCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1l
LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RMZXZl
bCgpCkBAIC0xOTI4LDcgKzE5MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5jcmVhc2VMaXN0
TGV2ZWwoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxpc3RMZXZl
bCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5jcmVhc2VMaXN0
TGV2ZWwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNyZWFzZUxpc3RMZXZlbCgpCkBA
IC0xOTM2LDcgKzE5MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjcmVhc2VMaXN0TGV2ZWwo
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZWNyZWFzZUxpc3RMZXZlbCgpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGVjcmVhc2VMaXN0TGV2ZWwo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSgpCkBAIC0xOTQ0LDcg
KzE5NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlTGlzdFR5cGUoKQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VMaXN0VHlwZSgpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlTGlzdFR5cGUoKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVj
dGlvbikKQEAgLTE5NTIsNyArMTk1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYXNlV3Jp
dGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhc2VXcml0aW5nRGlyZWN0
aW9uKGRpcmVjdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlRm9udEF0dHJp
YnV0ZXNBZnRlckVkaXRvclN0YXRlQ2hhbmdlKCkKQEAgLTE5NzYsNyArMTk3Niw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKGJvb2wgbmVlZHNGb250QXR0cmli
dXRlcykKICAgICBtX25lZWRzRm9udEF0dHJpYnV0ZXMgPSBuZWVkc0ZvbnRBdHRyaWJ1dGVzOwog
CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0TmVlZHNGb250QXR0cmlidXRlcyhuZWVkc0ZvbnRBdHRyaWJ1
dGVzKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXROZWVk
c0ZvbnRBdHRyaWJ1dGVzKG5lZWRzRm9udEF0dHJpYnV0ZXMpKTsKIH0KIAogYm9vbCBXZWJQYWdl
UHJveHk6Om1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKCkgY29uc3QKQEAgLTE5OTksNyArMTk5
OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRl
VXBkYXRlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2hlZHVs
ZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVj
dEFsbCgpCkBAIC0yMDA3LDcgKzIwMDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0QWxs
KCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0QWxsKCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RBbGwoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0yMDE4LDcgKzIwMTgsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5h
bWUsIGNvbnN0IFN0cmluZyYgYQogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbW1hbmROYW1l
LCBhcmd1bWVudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUsIGFyZ3Vt
ZW50LCBjYWxsYmFja0lEKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVk
aXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1l
bnQpCkBAIC0yMDMxLDcgKzIwMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRD
b21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYQogICAgIGlm
IChjb21tYW5kTmFtZSA9PSBpZ25vcmVTcGVsbGluZ0NvbW1hbmROYW1lKQogICAgICAgICArK21f
cGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50OwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZE5hbWUsIGFy
Z3VtZW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVF
ZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgYXJndW1lbnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChj
b25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrKQpAQCAtMjA0Miw3ICsyMDQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RG
b250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWIKICAg
ICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9udEF0dHJp
YnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChj
YWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXR0cmlidXRlc0NhbGxi
YWNrKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCkBAIC0yMDYzLDcgKzIwNjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0RWRpdGFibGUoZWRpdGFibGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0RWRpdGFibGUoZWRpdGFibGUpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRNZWRpYVN0cmVhbUNhcHR1cmVNdXRlZChib29sIG11dGVkKQpAQCAtMjEyOCw5ICsyMTI4
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFn
Q29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWcKIAogICAgIEFTU0VSVChkcmFnRGF0YS5wbGF0
Zm9ybURhdGEoKSk7CiAgICAgV2ViU2VsZWN0aW9uRGF0YSBzZWxlY3Rpb24oKmRyYWdEYXRhLnBs
YXRmb3JtRGF0YSgpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLmNsaWVudFBvc2l0aW9u
KCksIGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCksIGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3Bl
cmF0aW9uTWFzaygpLCBzZWxlY3Rpb24sIGRyYWdEYXRhLmZsYWdzKCkpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFj
dGlvbiwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEuZ2xvYmFsUG9zaXRpb24o
KSwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIHNlbGVjdGlvbiwgZHJh
Z0RhdGEuZmxhZ3MoKSkpOwogI2Vsc2UKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rp
b24oYWN0aW9uLCBkcmFnRGF0YSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVu
c2lvbnNGb3JVcGxvYWQpKTsKICNlbmRpZgogfQogCkBAIC0yMTYwLDcgKzIxNjAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwg
Y29uc3QgSW50UG9pbnQmIGdsbwogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJh
Z0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0aW9uKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdFbmRlZChjbGllbnRQb3NpdGlv
biwgZ2xvYmFsUG9zaXRpb24sIG9wZXJhdGlvbikpOwogICAgIHNldERyYWdDYXJldFJlY3QoeyB9
KTsKIH0KIApAQCAtMjE3MiwxMyArMjE3MiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVy
Zm9ybURyYWdPcGVyYXRpb24oYm9vbCBoYW5kbGVkKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0RHJhZygpCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU3RhcnREcmFnKCksIG1fcGFnZUlEKTsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU3RhcnREcmFnKCkpOwogfQogICAg
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdDYW5jZWxsZWQoKQogewogICAgIGlmIChoYXNSdW5u
aW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRyYWdDYW5jZWxsZWQoKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEcmFnQ2FuY2VsbGVkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kRHJh
Z2dpbmcoKQpAQCAtMjI3Nyw3ICsyMjc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NO
ZXh0UXVldWVkTW91c2VFdmVudCgpCiAgICAgfQogCiAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICJV
SVByb2Nlc3M6IHNlbnQgbW91c2UgZXZlbnQgJXMgKHF1ZXVlIHNpemUgJXp1KSIsIHdlYk1vdXNl
RXZlbnRUeXBlU3RyaW5nKGV2ZW50VHlwZSksIG1fbW91c2VFdmVudFF1ZXVlLnNpemUoKSk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50KSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQp
KTsKIH0KIAogI2lmIE1FUkdFX1dIRUVMX0VWRU5UUwpAQCAtMjQzNyw3ICsyNDM3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYgZXZlbnQpCiAKICAgICBpZiAobV9rZXlFdmVudFF1ZXVlLnNpemUoKSA9PSAxKSB7
IC8vIE90aGVyd2lzZSwgc2VudCBmcm9tIERpZFJlY2VpdmVFdmVudCBtZXNzYWdlIGhhbmRsZXIu
CiAgICAgICAgIExPRyhLZXlIYW5kbGluZywgIiBVSSBwcm9jZXNzOiBzZW50IGtleUV2ZW50IGZy
b20gaGFuZGxlS2V5Ym9hcmRFdmVudCIpOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OktleUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVudChldmVudCkpOwogICAgIH0KIH0KIApAQCAtMjY0Myw3
ICsyNjQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnRTeW5jaHJvbm91
c2x5KE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogCiAgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKLSAgICBi
b29sIHJlcGx5UmVjZWl2ZWQgPSBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUb3VjaEV2ZW50U3luYyhldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3lu
Yzo6UmVwbHkoaGFuZGxlZCksIG1fcGFnZUlELCAxX3MpOworICAgIGJvb2wgcmVwbHlSZWNlaXZl
ZCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYyhldmVudCksIE1l
c3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYzo6UmVwbHkoaGFuZGxlZCksIDFfcyk7CiAg
ICAgLy8gSWYgdGhlIHN5bmMgcmVxdWVzdCBoYXMgdGltZWQgb3V0LCB3ZSBzaG91bGQgY29uc2lk
ZXIgdGhlIGV2ZW50IGhhbmRsZWQuIFRoZSBXZWIgUHJvY2VzcyBpcyB0b28gYnVzeSB0byBhbnN3
ZXIgYW55IHF1ZXN0aW9ucywgc28gdGhlIGRlZmF1bHQgYWN0aW9uIGlzIGFsc28gbGlrZWx5IHRv
IGhhdmUgaXNzdWVzLgogICAgIGlmICghcmVwbHlSZWNlaXZlZCkKICAgICAgICAgaGFuZGxlZCA9
IHRydWU7CkBAIC0yNjg3LDcgKzI2ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91
Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICBpZiAoIW1faXNQ
YWdlU3VzcGVuZGVkKSB7CiAgICAgICAgIG1fdG91Y2hFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7
CiAgICAgICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCks
IG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChl
dmVudCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX3RvdWNoRXZlbnRRdWV1ZS5pc0Vt
cHR5KCkpIHsKICAgICAgICAgICAgIGJvb2wgaXNFdmVudEhhbmRsZWQgPSBmYWxzZTsKQEAgLTI3
MDgsMTIgKzI3MDgsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29u
c3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRT
KQogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbFBvaW50ZXIoV2ViQ29yZTo6UG9pbnRlcklEIHBv
aW50ZXJJZCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRvY3VtZW50UG9pbnQpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxQb2ludGVyKHBvaW50ZXJJ
ZCwgZG9jdW1lbnRQb2ludCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDYW5jZWxQb2ludGVyKHBvaW50ZXJJZCwgZG9jdW1lbnRQb2ludCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6dG91Y2hXaXRoSWRlbnRpZmllcldhc1JlbW92ZWQoV2ViQ29yZTo6UG9pbnRl
cklEIHBvaW50ZXJJZCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlRvdWNoV2l0aElkZW50aWZpZXJXYXNSZW1vdmVkKHBvaW50ZXJJZCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChw
b2ludGVySWQpKTsKIH0KICNlbmRpZgogCkBAIC0yNzIyLDcgKzI3MjIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2Nyb2xsQnkoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVs
YXJpdHkgZ3JhbnVsYQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY3JvbGxCeShk
aXJlY3Rpb24sIGdyYW51bGFyaXR5KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNjcm9sbEJ5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKQpAQCAtMjczMCw3ICsyNzMw
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVB
cmVhKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxl
Y3Rpb25JblZpc2libGVBcmVhKCkpOwogfQogCiBjbGFzcyBXZWJQYWdlUHJveHk6OlBvbGljeURl
Y2lzaW9uU2VuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UG9saWN5RGVjaXNpb25TZW5kZXI+IHsK
QEAgLTI4NzMsNyArMjg3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURl
Y2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbioKIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9t
Q29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3Vt
ZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2Vj
dXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIEFTU0VSVChtX3By
b3Zpc2lvbmFsUGFnZSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29t
bWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcHJvdmlzaW9u
YWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbW1pdFByb3Zpc2lvbmFsUGFnZTogcHJl
dmlvdXNQSUQgPSAlaSwgbmV3UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MgPSBtX21haW5GcmFtZSA/IG1ha2VP
cHRpb25hbChtX21haW5GcmFtZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9wdDsKIApAQCAtMjg4
OSwxNCArMjg4OSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdl
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiAgICAgcHJvY2Vzc0Rp
ZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRpb25Td2FwKTsKIAot
ICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgYXV0byogbmF2aWdhdGlvbiA9IG5h
dmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obV9wcm92aXNpb25hbFBhZ2UtPm5hdmlnYXRpb25J
RCgpKTsKICAgICBib29sIGRpZFN1c3BlbmRQcmV2aW91c1BhZ2UgPSBuYXZpZ2F0aW9uID8gc3Vz
cGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSgqbmF2aWdhdGlvbiwgbWFpbkZyYW1lSURJblByZXZp
b3VzUHJvY2VzcywgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGll
bnQoKSwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKSA6IGZhbHNlOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgbV93
ZWJzaXRlRGF0YVN0b3JlLnB0cigpID09ICZtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLndl
YnNpdGVEYXRhU3RvcmUoKSA/IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpO
byA6IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwogCiAgICAgLy8g
VGhlcmUgaXMgbm8gd2F5IHdlJ2xsIGJlIGFibGUgdG8gcmV0dXJuIHRvIHRoZSBwYWdlIGluIHRo
ZSBwcmV2aW91cyBwYWdlIHNvIGNsb3NlIGl0LgogICAgIGlmICghZGlkU3VzcGVuZFByZXZpb3Vz
UGFnZSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgp
LCBwYWdlSUQoKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCkpOwog
CiAgICAgc3dhcFRvV2ViUHJvY2VzcyhtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLCBtX3By
b3Zpc2lvbmFsUGFnZS0+dGFrZURyYXdpbmdBcmVhKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5tYWlu
RnJhbWUoKSk7CiAKQEAgLTI5MTMsNyArMjkxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21t
aXRQcm92aXNpb25hbFBhZ2UodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVBy
b3h5PiYmIHN1c3BlbmRlZFBhZ2VQcm94eSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBuZXdQcm9j
ZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlD
bGllbnQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlv
bkluTmV3UHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBuZXdQcm9j
ZXNzUElEID0gJWksIGhhc1N1c3BlbmRlZFBhZ2UgPSAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEh
c3VzcGVuZGVkUGFnZVByb3h5KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIG5ld1By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKICAgICBM
T0coTG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGluIGEg
bmV3IHdlYiBwcm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5s
b2dnaW5nU3RyaW5nKCkpOwogCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlKSB7CkBAIC0yOTM4
LDcgKzI5MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgIGlmIChtX2JhY2tGb3J3
YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSAmJiAobmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0
KCkgPT0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIHx8IG5hdmlnYXRpb24ubG9ja0hpc3Rvcnko
KSA9PSBMb2NrSGlzdG9yeTo6WWVzKSkgewogICAgICAgICAvLyBJZiBXZWJDb3JlIGlzIHN1cHBv
c2VkIHRvIGxvY2sgdGhlIGhpc3RvcnkgZm9yIHRoaXMgbG9hZCwgdGhlbiB0aGUgbmV3IHByb2Nl
c3MgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCBoaXN0b3J5IGl0ZW0gc28gaXQgY2Fu
IHVwZGF0ZQogICAgICAgICAvLyBpdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS4KLSAg
ICAgICAgbmV3UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VycmVudEhpc3Rv
cnlJdGVtRm9yUmVhdHRhY2gobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1T
dGF0ZSgpKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kVG9Qcm9jZXNzKG5ld1Byb2Nlc3MsIE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaChtX2JhY2tG
b3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbVN0YXRlKCkpKTsKICAgICB9CiAKICAgICAv
LyBGSVhNRTogV29yayBvdXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xp
Y3kgZGVsZWdhdGUsIGV0YwpAQCAtMjk4OCw3ICsyOTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFVzZXJBZ2VudChtX3VzZXJBZ2VudCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VyQWdlbnQobV91c2VyQWdlbnQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIGFwcGxpY2F0aW9uTmFtZSkKQEAgLTMwMjUsNyArMzAyNSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKICAgICBtX2lzUGFn
ZVN1c3BlbmRlZCA9IGZhbHNlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0
c0FuZEFuaW1hdGlvbnMoKQpAQCAtMzAzNSw3ICszMDM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKICAgICBtX2lzUGFnZVN1
c3BlbmRlZCA9IHRydWU7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRp
b25zKCkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoKSBj
b25zdApAQCAtMzA1Miw3ICszMDUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVRl
eHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1l
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRF
bmNvZGluZ05hbWUoZW5jb2RpbmdOYW1lKSk7CiB9CiAKIFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJv
eHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CkBAIC0zMDc0LDcgKzMwNzQsNyBAQCBTZXNzaW9uU3RhdGUg
V2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxib29sIChXZWJCYWNrRm9y
d2FyZExpc3RJdAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlc3Rv
cmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdh
dGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdG9yZUZyb21T
ZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOwogCiAgICAgbV9zZXNzaW9uUmVzdG9yYXRpb25SZW5kZXJUcmVlU2l6ZSA9IDA7
CiAgICAgbV9oaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCA9IGZhbHNlOwpAQCAtMzA4Myw3ICsz
MDgzLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJv
bVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2kKIAogICAgIGlmIChoYXNCYWNrRm9yd2Fy
ZExpc3QpIHsKICAgICAgICAgbV9iYWNrRm9yd2FyZExpc3QtPnJlc3RvcmVGcm9tU3RhdGUoV1RG
TW92ZShzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRMaXN0U3RhdGUpKTsKLSAgICAgICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0ZvcndhcmRM
aXN0LT5pdGVtU3RhdGVzKCkpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpKTsK
IAogICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9u
KCk7CiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRDYW5Hb0JhY2sodHJhbnNhY3Rpb24sIG1f
YmFja0ZvcndhcmRMaXN0LT5iYWNrSXRlbSgpKTsKQEAgLTMxMzEsNyArMzEzMSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRUZXh0Wm9vbUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dFpvb21GYWN0b3IobV90ZXh0Wm9vbUZh
Y3RvciksIG1fcGFnZUlEKTsgCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dFpv
b21GYWN0b3IobV90ZXh0Wm9vbUZhY3RvcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCkBAIC0zMTQ2LDcgKzMxNDYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2Vab29tRmFjdG9yKG1fcGFnZVpv
b21GYWN0b3IpLCBtX3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBh
Z2Vab29tRmFjdG9yKG1fcGFnZVpvb21GYWN0b3IpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUg
dGV4dFpvb21GYWN0b3IpCkBAIC0zMTYyLDcgKzMxNjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0
ZXh0WgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlQW5kVGV4dFpvb21G
YWN0b3JzKG1fcGFnZVpvb21GYWN0b3IsIG1fdGV4dFpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMobV9w
YWdlWm9vbUZhY3RvciwgbV90ZXh0Wm9vbUZhY3RvcikpOwogfQogCiBkb3VibGUgV2ViUGFnZVBy
b3h5OjpwYWdlWm9vbUZhY3RvcigpIGNvbnN0CkBAIC0zMTkyLDcgKzMxOTIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2NhbGVQYWdlKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdp
bikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlKHNjYWxlLCBvcmln
aW4pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlKHNj
YWxlLCBvcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFnZUluVmlld0Nv
b3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIGNlbnRlckluVmlld0Nvb3Jk
aW5hdGVzKQpAQCAtMzIwNCw3ICszMjA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFn
ZUluVmlld0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIGNlbnQKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMo
c2NhbGUsIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKHNjYWxlLCBjZW50ZXJJ
blZpZXdDb29yZGluYXRlcykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVWaWV3KGRv
dWJsZSBzY2FsZSkKQEAgLTMyMTYsNyArMzIxNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY2Fs
ZVZpZXcoZG91YmxlIHNjYWxlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2Fs
ZVZpZXcoc2NhbGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Nh
bGVWaWV3KHNjYWxlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnRyaW5zaWNEZXZp
Y2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKQEAgLTMyMzUsNyArMzIzNSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQg
ZGlzcGxheUlEKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dTY3JlZW5E
aWRDaGFuZ2UoZGlzcGxheUlEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OldpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpKTsKIH0KIAogZmxvYXQgV2ViUGFn
ZVByb3h5OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CkBAIC0zMjc0LDcgKzMyNzQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCkKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdl
KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2Nlc3NpYmlsaXR5
U2V0dGluZ3NEaWRDaGFuZ2UoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VGaXhl
ZExheW91dChib29sIGZpeGVkKQpAQCAtMzI5MSw3ICszMjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAg
LTMzMDQsNyArMzMwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Rml4ZWRMYXlvdXRTaXplKHNpemUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NIb3Jpem9u
dGFsU2Nyb2xsZXIpCkBAIC0zMzE3LDcgKzMzMTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c0hvcml6b250YWxT
YwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c0hvcml6b250
YWxTY3JvbGxlcihhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxl
cihhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NWZXJ0aWNh
bFNjcm9sbGVyKQpAQCAtMzMzMCw3ICszMzMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEFs
d2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGwK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNj
cm9sbGVyKGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlciksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYWx3YXlz
U2hvd3NWZXJ0aWNhbFNjcm9sbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpsaXN0ZW5G
b3JMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1p
bGVzdG9uZXMpCkBAIC0zMzQzLDcgKzMzNDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGlzdGVu
Rm9yTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPgog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVz
KG1pbGVzdG9uZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlz
dGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlv
bnMpCkBAIC0zMzU2LDcgKzMzNTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NT
Y3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoc3VwcHJl
c3NBbmltYXRpb25zKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhzdXBwcmVzc0FuaW1hdGlvbnMpKTsKIH0KIAog
Ym9vbCBXZWJQYWdlUHJveHk6OnJ1YmJlckJhbmRzQXRMZWZ0KCkgY29uc3QKQEAgLTM0MDgsNyAr
MzQwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRp
bmcoYm9vbCBlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhlbmFibGVWZXJ0aWNhbFJ1
YmJlckJhbmRpbmcpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZykp
OwogfQogICAgIAogYm9vbCBXZWJQYWdlUHJveHk6OnZlcnRpY2FsUnViYmVyQmFuZGluZ0lzRW5h
YmxlZCgpIGNvbnN0CkBAIC0zNDI1LDcgKzM0MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoYm9vbCBlbmFibGVIb3Jpem9udGFsUnViYmVy
QgogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVIb3Jpem9udGFsUnVi
YmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGlu
ZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZykpOwogfQogICAgIAogYm9vbCBXZWJQYWdl
UHJveHk6Omhvcml6b250YWxSdWJiZXJCYW5kaW5nSXNFbmFibGVkKCkgY29uc3QKQEAgLTM0NDIs
NyArMzQ0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9u
ZFBhZ2UoYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhCiAKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShiYWNrZ3JvdW5kRXh0
ZW5kc0JleW9uZFBhZ2UpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFn
ZSkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6YmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdl
KCkgY29uc3QKQEAgLTM0NTksNyArMzQ1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdp
bmF0aW9uTW9kZShXZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlIG1vZGUpCiAKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25Nb2RlKG1vZGUpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbk1vZGUobW9kZSkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhib29s
IGJlaGF2ZXNMaWtlQ29sdW1ucykKQEAgLTM0NzEsNyArMzQ3MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJvb2wgYmVoYXZlc0xpa2VDb2x1
bW5zKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uQmVoYXZl
c0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNM
aWtlQ29sdW1ucykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxlbmd0aChkb3Vi
bGUgcGFnZUxlbmd0aCkKQEAgLTM0ODMsNyArMzQ4Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRQYWdlTGVuZ3RoKGRvdWJsZSBwYWdlTGVuZ3RoKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRQYWdlTGVuZ3RoKHBhZ2VMZW5ndGgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMoZG91YmxlIGdhcCkKQEAgLTM0OTUsNyAr
MzQ5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMoZG91YmxlIGdh
cCkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0R2FwQmV0d2VlblBhZ2VzKGdh
cCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRHYXBCZXR3ZWVu
UGFnZXMoZ2FwKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uTGluZUdy
aWRFbmFibGVkKGJvb2wgbGluZUdyaWRFbmFibGVkKQpAQCAtMzUwNyw3ICszNTA3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbCBsaW5lR3Jp
ZEVuYWJsZWQpCiAgICAgCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0
aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlk
RW5hYmxlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGFnZVNjYWxlRmFjdG9yRGlkQ2hh
bmdlKGRvdWJsZSBzY2FsZUZhY3RvcikKQEAgLTM1MzIsMjcgKzM1MzIsMjcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0
aW9ucyBvcHRpb25zLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMs
IG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5k
T3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1h
eE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmlu
ZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCkKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEltYWdlRm9yRmluZE1hdGNo
KG1hdGNoSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2VsZWN0RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEZpbmRNYXRjaChtYXRjaEluZGV4KSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEZpbmRNYXRjaChtYXRjaElu
ZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlRmluZFVJKCkKIHsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRP
cHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCkBAIC0zNTYwLDcgKzM1NjAs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hl
cyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0
IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIEZ1bmN0aW9uPHZv
aWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtMzU3MSw3
ICszNTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50
MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYKICAgICB9CiAKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNl
cyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1h
dGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2Fy
eSgpCkBAIC0zNTk2LDE0ICszNTk2LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vCiAgICAg
fQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxk
TmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdl
c3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdEluRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3Jp
cHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFp
bHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIEFT
U0VSVChtYWluRnJhbWUoKS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpOwogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJhbWUoZnJhbWVJRCwg
c2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbkZyYW1lKGZyYW1lSUQsIHNjcmlw
dCwgZm9yY2VVc2VyR2VzdHVyZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQpAQCAtMzYxNCw3ICszNjE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVF
eHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QKICAgICB9CiAg
ICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJU
cmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1l
KFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYs
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNjI2LDcgKzM2
MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94
eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVu
ZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCks
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBA
IC0zNjM4LDcgKzM2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmlu
ZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYQogICAgIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNTdHJpbmcoY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250
ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAt
MzY0OSw3ICszNjQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNBdHRyaWJ1
dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXQKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApAQCAtMzY2Miw3ICszNjYy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRl
bnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJy
b3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNjc0LDcgKzM2NzQsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJ
RHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJh
Y2tJRCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzY4Niw3ICszNjg2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoRnVuY3Rpb248dm9pZCAoQVBJ
OjpEYXRhKiwgQ2FsbGJhY2tCYXMKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRh
KGNhbGxiYWNrSUQpKTsKIH0KICNlbmRpZgogCkBAIC0zNjk4LDcgKzM2OTgsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgU3RyaQogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9y
Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNzA5LDcgKzM3MDks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5j
dGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYgogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEo
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRT
ZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQpAQCAtMzcyMCw3ICszNzIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2kK
ICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5SZXNvdXJjZURh
dGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwg
QVBJOjpVUkwqIHJlc291cmNlVVJMLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzczMSw3ICszNzMxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZy
YW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZyb21GcmFtZShmcmFt
ZS0+ZnJhbWVJRCgpLCByZXNvdXJjZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZy
YW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc0Miw3ICszNzQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lk
IChBUEkKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hpdmVPZkZy
YW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtMzc3
Niw3ICszNzc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9p
ZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fZHJhd2luZ0FyZWEtPndh
aXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpOwotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSk7
CiB9CiAKIHN0YXRpYyBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBwcmludGluZ1NlbmRPcHRp
b25zKGJvb2wgaXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pCkBAIC0zODAyLDcgKzM4MDIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogICAgIC8vIGV2
ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJIHByb2Nlc3MsIHNvIHRoYXQgb3ZlcnJpZGVzIGdl
dCByZW1vdmVkLgogCiAgICAgLy8gUHJlZmVyZW5jZXMgbmVlZCB0byBiZSB1cGRhdGVkIGR1cmlu
ZyBzeW5jaHJvbm91cyBwcmludGluZyB0byBtYWtlICJwcmludCBiYWNrZ3JvdW5kcyIgcHJlZmVy
ZW5jZSB3b3JrIHdoZW4gdG9nZ2xlZCBmcm9tIGEgcHJpbnQgZGlhbG9nIGNoZWNrYm94LgotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2Uo
cHJlZmVyZW5jZXNTdG9yZSgpKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1Bl
cmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3RvcmUoKSksIHByaW50aW5nU2VuZE9w
dGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCkBAIC0zOTMyLDgg
KzM5MzIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAgaWYgKGZyYW1lLT5pc01haW5G
cmFtZSgpICYmIG5hdmlnYXRpb25JRCkKICAgICAgICAgbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25T
dGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAotICAgIExPRyhMb2FkaW5nLCAiV2Vi
UGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBS
SXU2NCAiLCB1cmwgJXMiLCBtX3BhZ2VJRCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
ZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7
CisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBw
aWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2
NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1fcGFnZUlELnRvVUludDY0
KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwg
dXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBhdXRv
IHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTM5ODUs
NyArMzk4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQ
Ukl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlELCBuYXZp
Z2F0aW9uSUQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDAx
NCw3ICs0MDE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjwKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5LCBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRM
aXN0KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIndpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ3
aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQ
cm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQwMjcsNyArNDAyNyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxD
bGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZv
ckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC00MDc0LDggKzQwNzQsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdl
UHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVy
cm9yLmVycm9yQ29kZSgpKTsKKyAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCksIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCBlcnJvci5kb21haW4o
KS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJv
dGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MTQxLDkgKzQxNDEsOSBAQCBz
dGF0aWMgYm9vbCBpc05vblVuaXF1ZU5hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb24oY29uc3Qg
U2VjdXJpdHlPcmlnaW5EYXRhIHJlcQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWlu
dDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
JiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8
SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIg
UFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJdTY0LCBt
X3BhZ2VJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQ
YWdlUHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24g
JSIgUFJJdTY0LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOwogICAgIExPRyhC
YWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0LCBiYWNrL2Zvcndh
cmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2luZ1N0cmluZygpKTsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJh
bWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1l
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJh
bWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkp
OwogCkBAIC00MjU0LDcgKzQyNTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJh
bWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQyNzgsNyArNDI3OCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9y
RnJhbWUgLSBXZWJQYWdlUHJveHkgJXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIgZGlk
RmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRpb25JRCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVu
dFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDMyMyw3ICs0MzIzLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBk
b21haW4gPSAlcywgY29kZSA9ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJy
b3JDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxM
b2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCBlcnJvci5kb21haW4o
KS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJv
dGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MzY1LDcgKzQzNjUsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJs
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1l
SUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsK
IApAQCAtNDUzNSw3ICs0NTM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2FmZUJyb3dz
aW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW4KICNlbmRpZgog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKKyAgICBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAgICAgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZy
YW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRp
b25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCkBAIC00NTQzLDcgKzQ1NDMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcgogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiYgZnJhbWVTZWN1cml0eU9yaWdpbiwKLSAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0Rh
dGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CkBAIC00NTUx
LDcgKzQ1NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogICAgIE1FU1NBR0VfQ0hFQ0so
cHJvY2VzcywgZnJhbWUpOwogCiAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRl
cjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0gKGF1
dG8uLi4gYXJncykgewotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1f
cGFnZUlEKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKICAgICB9KTsKIAogICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24ocHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3Jp
Z2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92
ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsCkBAIC00NTU5LDcgKzQ1NTksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Ms
IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsCiAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewogICAgIExP
RyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
IC0gT3JpZ2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdldCBVUkwgJXMiLCBvcmlnaW5hbFJlcXVl
c3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKQEAgLTQ2OTksNyArNDY5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzCiAgICAgICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09ICZmcmFtZSkK
ICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvLmNvcHlS
ZWYoKTsKICAgICAgICAgZWxzZSBpZiAoIWZyb21BUEkpCi0gICAgICAgICAgICBzb3VyY2VGcmFt
ZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
b3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKSA6
IG51bGxwdHIpOworICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86
OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8gcHJv
Y2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CiAKICAgICAgICAg
YXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZp
dHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogICAg
ICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJ
bk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KQEAgLTQ3NzIsNyArNDc3Miw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgV2ViRnJhbWVQcm94eSYgZnJh
bWUsIGNvbnN0IFVSTCYgcGFnCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAg
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTQ3OTAsNyArNDc5MCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1
aW50NjRfdCBmcmFtZUlELCBib29sIGlzCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRp
ZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVk
UmVwbHkmJiByZXBseSkKIHsKQEAgLTQ4MjEsNyArNDgyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVC
cm93c2luZ1dhcm5pbmcpOwogCiAgICAgICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25T
ZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUo
cHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdIChhdXRvLi4uIGFyZ3MpIHsKLSAg
ICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7Cisg
ICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNp
b24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLikpOwogICAgICAgICB9KTsKIAogICAgICAg
ICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgV1RGOjpudWxs
b3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpAQCAtNDg3MCw3ICs0ODcwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAh
c2FmZUJyb3dzaW5nV2FybmluZyk7CiAKICAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNp
c2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1v
dmUocHJvY2VzcyldIChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0
ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3Rl
bmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgfSk7CiAgICAg
ICAgIAogICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdh
dGlvbi5nZXQoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpAQCAtNDkwNyw3ICs0
OTA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJv
Y2Vzcywgc291cmNlRnJhbWUpOwogCiAgICAgbV9mb3JtQ2xpZW50LT53aWxsU3VibWl0Rm9ybSgq
dGhpcywgKmZyYW1lLCAqc291cmNlRnJhbWUsIHRleHRGaWVsZFZhbHVlcywgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0oKSB7
Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGludWVXaWxs
U3VibWl0Rm9ybShmcmFtZUlELCBsaXN0ZW5lcklEKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250aW51ZVdpbGxTdWJtaXRGb3JtKGZyYW1lSUQsIGxpc3Rl
bmVySUQpKTsKICAgICB9KTsKIH0KIApAQCAtNDkyMyw3ICs0OTIzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25E
YXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRp
b25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgV2ViTmF2
aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFT
aGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC00OTQzLDcgKzQ5NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJl
ZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rv
cihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTcwLDcgKzQ5NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5n
LCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZy
YW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9y
bVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGll
bnQoKSk7CiAKQEAgLTUwMTgsMTQgKzUwMTgsMTQgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUla
RVJfQURESVRJT05TXzYKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3
UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dG
ZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0
IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBX
aW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdl
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcywg
bV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwot
ICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFn
ZUlEKSk7CisgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IG1fcHJv
Y2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CiAgICAgYXV0byBt
YWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwoKSA6IFVSTCgpOwog
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSld
IChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFu
ZXdQYWdlKSB7Ci0gICAgICAgICAgICByZXBseSgwLCBXVEY6Om51bGxvcHQpOworICAgICAgICAg
ICAgcmVwbHkoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKQEAgLTUzNzQsNyArNTM3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBm
cmFtCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1NoYXJlU2hlZXQoY29uc3QgU2hhcmVEYXRhV2l0
aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBTaGFyZVNoZWV0Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ewogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gKGJvb2wg
YWNjZXNzKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
Q29tcGxldGVTaGFyZVNoZWV0KGFjY2VzcywgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVTaGFyZVNoZWV0KGFjY2Vzcywg
Y2FsbGJhY2tJRCkpOwogICAgIH07CiAgICAgCiAgICAgcGFnZUNsaWVudCgpLnNob3dTaGFyZVNo
ZWV0KHNoYXJlRGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTQwNiw3ICs1
NDA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKGZsb2F0IHZvbHVtZSkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1lKHZvbHVt
ZSksIG1fcGFnZUlEKTsgICAgCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWVkaWFW
b2x1bWUodm9sdW1lKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNdXRlZChXZWJDb3Jl
OjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mgc3RhdGUpCkBAIC01NDIyLDcgKzU0MjIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6
TXV0ZWRTdGF0ZUZsYWdzIHN0YXRlKQogICAgICAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6
c2luZ2xldG9uKCkubXV0ZUNhcHR1cmVNZWRpYVN0cmVhbXNFeGNlcHRJbigqdGhpcyk7CiAjZW5k
aWYKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TXV0ZWQoc3Rh
dGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TXV0ZWQoc3Rh
dGUpKTsKICAgICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgQWN0aXZpdHlTdGF0ZTo6SXNBdWRp
YmxlLCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pOwogfQogCkBAIC01NDQ0LDcg
KzU0NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAgICAgICAg
IHJldHVybjsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0dXJlKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0dXJlKCkpOwogI2VuZGlmCiB9CiAK
QEAgLTU0NTMsNyArNTQ1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wQWxsTWVkaWFQbGF5
YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BBbGxNZWRpYVBsYXli
YWNrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wQWxsTWVk
aWFQbGF5YmFjaygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxNZWRpYVBs
YXliYWNrKCkKQEAgLTU0NjEsNyArNTQ2MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5k
QWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3Bl
bmRBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQpAQCAtNTQ2OSw3ICs1NDY5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkpOwogfQogCiAjaWYg
RU5BQkxFKE1FRElBX1NFU1NJT04pCkBAIC01NDc4LDcgKzU0NzgsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlwZSks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVNZWRpYUV2ZW50
KGV2ZW50VHlwZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZNZWRpYUVs
ZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQpAQCAtNTQ4Niw3ICs1NDg2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2
b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9s
dW1lLCBlbGVtZW50SUQpKTsKIH0KICNlbmRpZgogCkBAIC01NTAwLDcgKzU1MDAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sIG1heVN0YXJ0
TWVkaWEpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWF5U3RhcnRNZWRpYVdo
ZW5JbldpbmRvdyhtYXlTdGFydE1lZGlhKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cobWF5U3RhcnRNZWRpYSkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJv
eHkmIGRvd25sb2FkKQpAQCAtNTU0Nyw3ICs1NTQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlQ29sb3IoY29sb3IpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlQ29sb3IoY29sb3IpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yUGlja2VyKCkKQEAgLTU1NTYsNyArNTU1Niw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmRDb2xvclBpY2tlcigpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZEVuZENvbG9yUGlja2VyKCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRDb2xvclBpY2tlcigpKTsKIH0KICNlbmRpZgogCkBA
IC01NTkwLDcgKzU1OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2xvc2VTdWdnZXN0aW9u
cygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3du
ID0gbnVsbHB0cjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENs
b3NlU3VnZ2VzdGlvbnMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZENsb3NlU3VnZ2VzdGlvbnMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTZWxl
Y3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKQEAgLTU1OTgsNyArNTU5OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxl
Y3RlZE9wdGlvbikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0RGF0
YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pKTsKIH0K
IAogI2VuZGlmCkBAIC01NjUxLDcgKzU2NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWxs
b3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJvb2wgYWxsb3dzKQogICAgICAgICByZXR1
cm47CiAgICAgbV9hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2sgPSBhbGxvd3M7CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsbG93c01lZGlhRG9j
dW1lbnRJbmxpbmVQbGF5YmFjayhhbGxvd3MpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGFsbG93cykp
OwogfQogI2VuZGlmCiAKQEAgLTU4MzQsMTcgKzU4MzQsMTcgQEAgSVBDOjpDb25uZWN0aW9uKiBX
ZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3Qg
V2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fcGFnZUlEOworICAgIHJldHVybiBtX3BhZ2VJRC50b1VJbnQ2NCgpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVBy
b3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVu
dShuZXdTZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJ
bmRleCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEZyb21JdGVtRm9yUG9wdXBN
ZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBpbmRleCkKIHsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRGb3JBY3RpdmVQb3B1cE1lbnUoaW5kZXgp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEZvckFjdGl2
ZVBvcHVwTWVudShpbmRleCkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6aXNQcm9jZXNzaW5n
S2V5Ym9hcmRFdmVudHMoKSBjb25zdApAQCAtNTg3OSwxMyArNTg3OSwxMyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSTo6TwogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5LCBtYWtlIHN1
cmUgd2UgbGF1bmNoIHRoZSBpbml0aWFsIHByb2Nlc3MgaWYgdGhlIGNsaWVudCBhc2tzIHRvIHBv
c3QgYSBtZXNzYWdlIHRvIGl0cyBpbmplY3RlZCBidW5kbGUgYmVmb3JlIGRvaW5nIGEgbG9hZC4K
ICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKLSAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdl
TmFtZSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2Fn
ZUJvZHkpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQ
b3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0YShwcm9jZXNzKCku
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkuZ2V0KCkpKSk7CiB9CiAKICNp
ZiBQTEFURk9STShHVEspCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZmFpbGVkVG9TaG93UG9wdXBNZW51
KCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZhaWxlZFRvU2hv
d1BvcHVwTWVudSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmFp
bGVkVG9TaG93UG9wdXBNZW51KCkpOwogfQogI2VuZGlmCiAKQEAgLTU5NTIsNyArNTk1Miw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0
YSYmIGNvbnRleHRNZW51Q29udGV4dERhCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvdygp
OwogCiAgICAgLy8gTm8gbWF0dGVyIHRoZSByZXN1bHQgb2YgaW50ZXJuYWxTaG93Q29udGV4dE1l
bnUsIGFsd2F5cyBub3RpZnkgdGhlIFdlYlByb2Nlc3MgdGhhdCB0aGUgbWVudSBpcyBoaWRkZW4g
c28gaXQgc3RhcnRzIGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBhZ2Fpbi4KLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlkZGVuKCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUhpZGRlbigpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRl
eHRNZW51SXRlbURhdGEmIGl0ZW0pCkBAIC02MDMwLDEyICs2MDMwLDEyIEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1E
YXRhJiBpdGVtKQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0xl
YXJuU3BlbGxpbmcgfHwgaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVT
cGVsbGluZykKICAgICAgICAgKyttX3BlbmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3Vu
dDsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0SXRl
bUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoaXRlbSkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVLZXlFdmVudCgpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUZvcktleUV2
ZW50KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVu
dUZvcktleUV2ZW50KCkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQogCkBA
IC02MDUxLDEwICs2MDUxLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zv
ck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmaWxlVVJMcy5zaXplKCk7ICsraSkKICAgICAgICAgU2FuZGJveEV4
dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBl
OjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBh
bmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZXMpKTsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5k
SWNvbihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJl
ZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0
cmluZ0FuZEljb24oZmlsZVVSTHMsIGRpc3BsYXlTdHJpbmcsIGljb25EYXRhID8gaWNvbkRhdGEt
PmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0YVJlZmVyZW5jZSgpKSk7CiAKICAgICBtX29wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRM
aXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MDc5LDEwICs2MDc5LDEwIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmls
ZVVSTHMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4dGVu
c2lvbkhhbmRsZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0
ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykp
OwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENo
b29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKSk7CiAK
ICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MDkzLDcgKzYwOTMsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkQ2FuY2VsRm9yT3BlblBhbmVsKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKSk7CiAgICAgCiAg
ICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwogICAgIG1fb3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAtNjEwMSw3ICs2MTAxLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9wZW5QYW5lbCgpCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKIHsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkdmFuY2VUb05leHRNaXNz
cGVsbGluZyhzdGFydEJlZm9yZVNlbGVjdGlvbiksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpBZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rp
b24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0
IFN0cmluZyYgd29yZCkKQEAgLTYxMDksNyArNjEwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
aGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCiAgICAgaWYgKHdvcmQuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNoYW5nZVNwZWxsaW5nVG9Xb3JkKHdvcmQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlU3BlbGxpbmdUb1dvcmQod29yZCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWY8V2ViRWRpdENvbW1hbmRQ
cm94eT4mJiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVkbykKQEAgLTYxMjgsNyAr
NjEyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVFZGl0Q29tbWFuZChXZWJFZGl0Q29t
bWFuZFByb3h5JiBjb21tYW5kKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRS
ZW1vdmVFZGl0Q29tbWFuZChjb21tYW5kLmNvbW1hbmRJRCgpKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUVkaXRDb21tYW5kKGNvbW1hbmQuY29tbWFu
ZElEKCkpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmNhblVuZG8oKQpAQCAtNjIxNywxMiAr
NjIxNywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBUZXh0Q2hlY2tpbgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEZpbmlzaENoZWNraW5nVGV4dChyZXF1ZXN0SUQsIHJl
c3VsdCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRGaW5pc2hD
aGVja2luZ1RleHQocmVxdWVzdElELCByZXN1bHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxDaGVja2luZ1RleHQocmVxdWVz
dElEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbENo
ZWNraW5nVGV4dChyZXF1ZXN0SUQpKTsKIH0KIC8vIE90aGVyCiAKQEAgLTYzNTEsNyArNjM1MSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlw
ZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICBib29sIGNhblByb2Nlc3NNb3JlS2V5RXZlbnRzID0g
IW1fa2V5RXZlbnRRdWV1ZS5pc0VtcHR5KCk7CiAgICAgICAgIGlmIChjYW5Qcm9jZXNzTW9yZUtl
eUV2ZW50cykgewogICAgICAgICAgICAgTE9HKEtleUhhbmRsaW5nLCAiIFVJIHByb2Nlc3M6IHNl
bnQga2V5RXZlbnQgZnJvbSBkaWRSZWNlaXZlRXZlbnQiKTsKLSAgICAgICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0
KCkpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlF
dmVudChtX2tleUV2ZW50UXVldWUuZmlyc3QoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
VGhlIGNhbGwgdG8gZG9uZVdpdGhLZXlFdmVudCBtYXkgY2xvc2UgdGhpcyBXZWJQYWdlLgpAQCAt
NjcxNSw3ICs2NzE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lU2V0TGFyZ2VzdEZyYW1l
Q2hhbmdlZCh1aW50NjRfdCBmcmFtZUlEKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0Rp
ZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVz
cG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjcyNyw3ICs2NzI3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9j
ZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzIzMyw3
ICs3MjMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQ2xlYXIoKQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4m
IGdhbWVwYWREYXRhcywgYm9vbCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKQogewotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2aXR5KGdhbWVwYWRE
YXRhcywgc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHYW1lcGFkQWN0aXZpdHkoZ2FtZXBhZERhdGFzLCBzaG91bGRNYWtl
R2FtZXBhZHNWaXNpYmxlKSk7CiB9CiAKICNlbmRpZgpAQCAtNzUzOSw3ICs3NTM5LDcgQEAgYm9v
bCBXZWJQYWdlUHJveHk6OndpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRzKCkgY29uc3QK
IAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNp
ZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNpdGVQb2xpY2llcyksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVXZWJzaXRlUG9saWNpZXMo
d2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
aW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZp
bGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCkBAIC03NTQ5
LDcgKzc1NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JD
dXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6YmFja0ZvcndhcmRSZW1vdmVkSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
JiBpdGVtSUQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRS
ZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKGJvb2wgY2FuUnVuTW9kYWwpCkBAIC03NTYy
LDcgKzc1NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwoYm9vbCBjYW5S
dW5Nb2RhbCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwo
bV9jYW5SdW5Nb2RhbCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRDYW5SdW5Nb2RhbChtX2NhblJ1bk1vZGFsKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5Ojpj
YW5SdW5Nb2RhbCgpCkBAIC03NTc2LDcgKzc1NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVn
aW5QcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
ZgogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+
ZnJhbWVJRCgpLCBwcmludEluZm8pLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lz
UGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8pLCBwcmludGluZ1Nl
bmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmVuZFByaW50aW5nKCkKQEAgLTc1ODUsNyArNzU4NSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjplbmRQcmludGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNJblBy
aW50aW5nTW9kZSA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RW5kUHJpbnRpbmcoKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZv
cm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVu
ZFByaW50aW5nKCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBSZWY8
Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtNzU5OCw3ICs3NTk4LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+
Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAg
ICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHBy
aW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQ
ZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb21wdXRlUGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNh
bGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVy
YXRpb24pKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzYxMSw3ICs3NjExLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiBmcmFtZSwg
Y29uc3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxs
YmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
KSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1h
Z2UoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50
T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1JlY3RUb0ltYWdl
KGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgcmVjdCwgaW1hZ2VTaXplLCBjYWxsYmFja0lE
KSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiBm
cmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJf
dCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTc2MjMsNyArNzYyMyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFjaykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2Vz
VG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50
T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYo
ZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIGNhbGxiYWNrSUQpLCBw
cmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0K
ICNlbGlmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmlu
dGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFJl
ZjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC03NjM2LDcgKzc2MzYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSog
ZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNr
LT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsK
ICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJp
bnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1Bl
cmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRyYXdQYWdlc0ZvclByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJh
Y2tJRCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
bikpOwogfQogI2VuZGlmCiAKQEAgLTc2ODEsNyArNzY4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3TGF5b3V0U2l6ZSkKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld0xheW91dFNpemUodmlld0xheW91dFNp
emUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld0xheW91
dFNpemUodmlld0xheW91dFNpemUpKTsKICAgICBtX2RyYXdpbmdBcmVhLT52aWV3TGF5b3V0U2l6
ZURpZENoYW5nZSgpOwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTc3MDAsNyArNzcwMCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGJv
b2wgc2hvdWxkRXhwYW5kKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRv
U2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KHNob3VsZEV4cGFuZCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9W
aWV3SGVpZ2h0KHNob3VsZEV4cGFuZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUp
CkBAIC03NzEzLDcgKzc3MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpegogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
KHZpZXdwb3J0U2l6ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHZpZXdwb3J0U2l6ZSkpOwogfQogCiAj
aWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQpAQCAtNzc4NCw3ICs3Nzg0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCBy
ZXNwb25zZSwgY29uc3QgU3RyaW5nJgogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFsdGVybmF0
aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQogewogICAgIGlmICghaXNDbG9z
ZWQoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVB
bHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCkp
OwogfQogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCkBAIC03ODI1LDcgKzc4MjUs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0
LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxl
Y3Rpb25FbmQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0
LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCByZXBsYWNlbWVudFJh
bmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBpbnQ2
NF90IHNlbGVjdGlvblN0YXJ0LCBpbnQ2NF90IHNlbGVjdGlvbkxlbmd0aCkKQEAgLTc4MzMsNyAr
NzgzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3Ry
aW5nJiBjb21wb3NpdGlvblN0cmluZywgaW50NjRfdCBzCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCBzZWxlY3Rpb25T
dGFydCwgc2VsZWN0aW9uTGVuZ3RoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgc2VsZWN0aW9uU3Rh
cnQsIHNlbGVjdGlvbkxlbmd0aCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsQ29t
cG9zaXRpb24oKQpAQCAtNzg0MSw3ICs3ODQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNl
bENvbXBvc2l0aW9uKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxDb21w
b3NpdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2Vs
Q29tcG9zaXRpb24oKSk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCkBAIC03ODU4LDcg
Kzc4NTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNj
cm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogICAgIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9y
ID0gcGlubmluZzsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihw
aW5uaW5nKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRT
Y3JvbGxQaW5uaW5nQmVoYXZpb3IocGlubmluZykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJs
YXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUpCkBAIC03ODc2LDcgKzc4NzYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9s
bGJhck92ZXJsYXlTdAogICAgICAgICBzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2UgPSBzdGF0aWNf
Y2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHNjcm9sbGJhclN0eWxlLnZhbHVlKCkpOwogCiAg
ICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9y
TWVzc2FnZSksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZSkpOwogfQogCiAj
aWYgRU5BQkxFKFdFQl9DUllQVE8pCkBAIC03OTIxLDcgKzc5MjEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJ
bmRleCwgY29ucwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29u
dGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlk
ZXIobWltZVR5cGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRk
TUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKG1pbWVUeXBlKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRl
Q2hhbmdlcyYmIGNoYW5nZXMpCkBAIC03OTI5LDcgKzc5MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBj
aGFuZ2VzKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1
dGVzKFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Q2hhbmdlRm9udEF0dHJpYnV0ZXMoV1RGTW92ZShjaGFuZ2VzKSkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMp
CkBAIC03OTM3LDcgKzc5MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJD
b3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2VzKSkpOwogfQogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCkBAIC03OTQ1LDcgKzc5NDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAoaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFRleHRBc3luYyh0ZXh0KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5z
ZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBs
YWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmIG9wdGlvbnMpCkBAIC03OTUzLDcgKzc5
NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYg
dGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9w
dGlvbnMpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRl
eHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpoYXNNYXJrZWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY2FsbGJhY2spCkBAIC03OTYyLDcgKzc5NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
bV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wYWdlSUQpOworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBX
VEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5n
ZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzk3Myw3ICs3OTczLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5n
UmFuZ2UsIENhbGxiYWMKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdURjo6RnVu
Y3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQpAQCAtNzk4NCw3ICs3OTg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNl
bGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGIK
ICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2Vs
ZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3Jl
OjpJbnRQb2ludCYgcG9pbnQsIFdURjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC03OTk1LDcgKzc5OTUsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBwb2ludCwgVwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMocG9pbnQsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVy
SW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5n
ZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNv
bnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCkBAIC04MDA2LDcgKzgwMDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9y
Q2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVAogICAgIH0K
IAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFu
Z2UsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9u
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxp
bmU+JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25z
dCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpCkBAIC04MDE3LDcgKzgwMTcsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQs
IGNvbnN0IFZlY3RvcjxDb21wb3NpdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uQXN5bmModGV4dCwg
dW5kZXJsaW5lcywgc2VsZWN0aW9uUmFuZ2UsIHJlcGxhY2VtZW50UmFuZ2UpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb25Bc3luYyh0ZXh0LCB1
bmRlcmxpbmVzLCBzZWxlY3Rpb25SYW5nZSwgcmVwbGFjZW1lbnRSYW5nZSkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQpAQCAtODAyNSw3ICs4MDI1
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb25Bc3luYygpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uQXN5
bmMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFD
b2xsZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC04MDUwLDcgKzgwNTAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50U2l6ZSBiaXRtYXBT
aXplLCBTbmFwc2hvdE9wdGlvbgogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNu
YXBzaG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4oKQpAQCAtODIwOCw3ICs4
MjA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lv
bkluZm8oUmVmPE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2sKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBj
YWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrKSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RB
Y3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZv
KGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5vd1BsYXlpbmdJbmZvQ2Fs
bGJhY2soYm9vbCBoYXNBY3RpdmVTZXNzaW9uLCBib29sIHJlZ2lzdGVyZWRBc05vd1BsYXlpbmdB
cHBsaWNhdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUg
ZWxhcHNlZFRpbWUsIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKQEAgLTgyNTEsMjIgKzgyNTEsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1
dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlFdmVudCBldmVudCwgT3B0aW9uU2V0PEEKICNp
ZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlv
bkhpdFRlc3RBdExvY2F0aW9uKEZsb2F0UG9pbnQgcG9pbnQpCiB7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9j
YXRpb24ocG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVy
Zm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKHBvaW50KSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKQogewotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRV
cGRhdGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRDYW5j
ZWwoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRl
QWN0aW9uRGlkQ2FuY2VsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpJbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVz
dChjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgcmVzdWx0LCBib29sIGNvbnRlbnRQcmV2ZW50
c0RlZmF1bHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTgyODEsNyArODI4MSw3IEBA
IE5TT2JqZWN0ICpXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xs
ZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBY2Nl
cHRlZENhbmRpZGF0ZShXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgYWNjZXB0ZWRDYW5kaWRh
dGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBY2Nl
cHRlZENhbmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0
ZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUo
KQpAQCAtODI5OSwxNyArODI5OSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlU3lzdGVt
QXBwZWFyYW5jZShib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFVzZVN5c3RlbUFwcGVhcmFuY2UodXNlU3lzdGVtQXBwZWFyYW5jZSks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VTeXN0ZW1BcHBl
YXJhbmNlKHVzZVN5c3RlbUFwcGVhcmFuY2UpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWlnaHQpCiB7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JU
ZXN0aW5nKGhlaWdodCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGhlaWdodCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhpbnQgaGVpZ2h0KQogewot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9vdGVyQmFubmVySGVp
Z2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpKTsKIH0KIAogI2Vu
ZGlmCkBAIC04MzM1LDcgKzgzMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VPck1lZGlh
RG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wg
c2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKQogewotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRz
KHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMo
c2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpoYW5kbGVBdXRvRmlsbEJ1dHRvbkNsaWNrKGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkK
QEAgLTgzODQsNyArODM4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQbGF5YmFja1Rhcmdl
dCh1aW50NjRfdCBjb250ZXh0SWQsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoY29udGV4dElkLCB0
YXJnZXQtPnRhcmdldENvbnRleHQoKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRleHRJZCwgdGFyZ2V0LT50YXJnZXRD
b250ZXh0KCkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNl
QXZhaWxhYmxlRGlkQ2hhbmdlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBhdmFpbGFibGUpCkBA
IC04MzkyLDcgKzgzOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZp
Y2VBdmFpbGFibGVEaWRDaGFuZ2UodWludDY0X3QgY29udGV4dElkLCBibwogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShj
b250ZXh0SWQsIGF2YWlsYWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShjb250ZXh0SWQsIGF2YWls
YWJsZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tU
YXJnZXQodWludDY0X3QgY29udGV4dElkLCBib29sIHNob3VsZFBsYXkpCkBAIC04NDAwLDcgKzg0
MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQo
dWludDY0X3QgY29udGV4dElkLCBib29sIHNob3VsZAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjb250ZXh0SWQsIHNob3VsZFBs
YXkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkUGxh
eVRvUGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBzaG91bGRQbGF5KSk7CiB9CiAjZW5kaWYKIApA
QCAtODQyNiw3ICs4NDI2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyV2hlZWxFdmVudFRl
c3RUcmlnZ2VyKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFyV2hl
ZWxFdmVudFRlc3RUcmlnZ2VyKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoV1RGOjpGdW5jdGlvbjx2b2lkIChD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKQEAgLTg0NDksNyArODQ0OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wgc2hv
dWxkU2NhbGVWaWV3VG9GaXREb2N1CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVu
dCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRTY2Fs
ZVZpZXdUb0ZpdERvY3VtZW50KHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCkBAIC04NDY5LDcg
Kzg0NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25z
dCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwogICAgICAgICBib29sIGRlY2lzaW9u
ID0gKGJvb2wpY2FsbGJhY2tGdW5jdGlvbjsKICAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50
aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlvbmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQoKTsKIAotICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24o
ZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZv
ckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZpZXIpKTsK
ICAgICB9KTsKIH0KIApAQCAtODQ4OCw3ICs4NDg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGRpc2FibGVkKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFJlc291cmNlQ2FjaGluZ0Rp
c2FibGVkKGRpc2FibGVkKSk7CiB9CiAKIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24gV2ViUGFnZVByb3h5Ojp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkKQEAgLTg1
MDEsNyArODUwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uKFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXRECiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlVmFsaWRhdGlvbk1lc3NhZ2UoKQpAQCAtODU0
OCwxNCArODU0OCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQWxsb3dQb2ludGVyTG9jaygp
CiAgICAgQ0dEaXNwbGF5SGlkZUN1cnNvcihDR01haW5EaXNwbGF5SUQoKSk7CiAgICAgQ0dBc3Nv
Y2lhdGVNb3VzZUFuZE1vdXNlQ3Vyc29yUG9zaXRpb24oZmFsc2UpOwogI2VuZGlmCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRBY3F1aXJlUG9pbnRlckxvY2soKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEFjcXVpcmVQb2ludGVy
TG9jaygpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZW55UG9pbnRlckxvY2so
KQogewogICAgIEFTU0VSVChtX2lzUG9pbnRlckxvY2tQZW5kaW5nICYmICFtX2lzUG9pbnRlckxv
Y2tlZCk7CiAgICAgbV9pc1BvaW50ZXJMb2NrUGVuZGluZyA9IGZhbHNlOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRl
ckxvY2soKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jaygp
CkBAIC04NTY2LDEyICs4NTY2LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRl
clVubG9jaygpCiAgICAgICAgIENHRGlzcGxheVNob3dDdXJzb3IoQ0dNYWluRGlzcGxheUlEKCkp
OwogI2VuZGlmCiAgICAgICAgIG1fdWlDbGllbnQtPmRpZExvc2VQb2ludGVyTG9jayh0aGlzKTsK
LSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRMb3NlUG9pbnRl
ckxvY2soKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRM
b3NlUG9pbnRlckxvY2soKSk7CiAgICAgfQogCiAgICAgaWYgKG1faXNQb2ludGVyTG9ja1BlbmRp
bmcpIHsKICAgICAgICAgbV91aUNsaWVudC0+ZGlkTG9zZVBvaW50ZXJMb2NrKHRoaXMpOwotICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2lu
dGVyTG9jaygpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpKTsKICAgICB9CiAKICAgICBtX2lzUG9pbnRlckxvY2tl
ZCA9IGZhbHNlOwpAQCAtODU5Miw3ICs4NTkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVS
TFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYgaGFuZGwK
ICAgICBhdXRvIGlkZW50aWZpZXJSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlm
aWVyLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKICAgICBBU1NFUlRfVU5VU0VE
KGlkZW50aWZpZXJSZXN1bHQsIGlkZW50aWZpZXJSZXN1bHQuaXNOZXdFbnRyeSk7CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxl
cihpZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGlkZW50
aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOwogfQogCiBXZWJVUkxTY2hlbWVI
YW5kbGVyKiBXZWJQYWdlUHJveHk6OnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpCkBAIC04NjUxLDcgKzg2NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWZm
ZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UodXNlRGFya0FwcGVhcmFuY2UoKSwgdXNl
SW5hY3RpdmVBcHBlYXJhbmNlKCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSh1c2VEYXJrQXBwZWFyYW5jZSgpLCB1
c2VJbmFjdGl2ZUFwcGVhcmFuY2UoKSkpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC04
NjkwLDcgKzg2OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChSZWY8
QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIEZ1bmN0aW9uPAogCiAgICAgYXV0byBhdHRh
Y2htZW50SWRlbnRpZmllciA9IGF0dGFjaG1lbnQtPmlkZW50aWZpZXIoKTsKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGF0dGFjaG1lbnRJZGVudGlm
aWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC0+ZmlsZU5h
bWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGF0dGFjaG1lbnRJ
ZGVudGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC0+
ZmlsZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwgY2FsbGJhY2tJRCkpOwogICAg
IG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0KGF0dGFjaG1lbnRJZGVu
dGlmaWVyLCBXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKIH0KIApAQCAtODcwNiw3ICs4NzA2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6
QXR0YWNobWVudCYgYXR0YWNobWVudCwKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEg
fTsKIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRB
dHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9y
RGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUo
KSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2ht
ZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNo
bWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJl
ZmVyZW5jZSksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVy
QXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKQEAgLTg4NjYsNyArODg2Niw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQoY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxs
YmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFj
a0lEKSk7CiB9CiAjZW5kaWYKIApAQCAtODkzMCw3ICs4OTMwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcG9ydFBhZ2VMb2FkUmVzdWx0KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGVmZXJzTG9hZGluZ0ZvclRlc3RpbmcoYm9vbCBkZWZlcnNM
b2FkaW5nKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RGVm
ZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZykpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0SXNWaWV3VmlzaWJsZShib29sJiByZXN1bHQpCkBAIC04OTQyLDcgKzg5
NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUoKQog
ewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JM
T0NLSU5HKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gbW9kaWZpZXJzID0gUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50U3RhdGVPZk1vZGlmaWVyS2V5cygpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQ3VycmVudE1vZGlmaWVyU3Rh
dGUobW9kaWZpZXJzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVw
ZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKG1vZGlmaWVycykpOwogI2VuZGlmCiB9CiAKQEAgLTg5
ODQsMTkgKzg5ODQsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxBY3F1aXJlVW5pdmVyc2Fs
RmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKFdlYlByb2Nlc3NQcm94eSYKIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoZG91YmxlIGFscGhhLCBkb3Vi
bGUgYmV0YSwgZG91YmxlIGdhbW1hKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwgZ2Ft
bWEpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2ltdWxhdGVEZXZp
Y2VPcmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEpKTsKIH0KIAogI2lmIEVOQUJM
RShEQVRBX0RFVEVDVElPTikKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRldGVjdERhdGFJbkFsbEZy
YW1lcyhXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlcyB0eXBlcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGFnZTo6RGV0ZWN0RGF0YUluQWxsRnJhbWVzKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0
eXBlcykpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGV0ZWN0RGF0YUluQWxsRnJhbWVzKHN0
YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBlcykpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcygpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCiAjZW5kaWYKQEAgLTkxNDYsNyArOTE0Niw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3Qg
cmVjdCwgQ29tcGxldGlvbkhhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpU
ZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IG1fcGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlRl
eHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4
dElucHV0Q29udGV4dCYgY29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTkxNTYsNyArOTE1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYgY29udGV4dCwg
Q29tcGxlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c1RleHRJbnB1
dENvbnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c1RleHRJbnB1
dENvbnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogTG9n
Z2VyJiBXZWJQYWdlUHJveHk6OmxvZ2dlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCmluZGV4IDZjNWFkNjI1ZDEyLi5hNmU4ZmUxODJmNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgogI2luY2x1ZGUgIldlYlVuZG9TdGVwSUQuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNp
ZXNEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CkBAIC04Miw2ICs4
Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQ
cm9kdWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2Ny
ZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5oPgpAQCAtMzgyLDE0ICszODQsMTQgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQ
STo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICNlbmRpZgogICAgICwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2VQcm94eT4gewogcHVibGljOgotICAgIHN0YXRpYyBS
ZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVp
bnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOworICAgIHN0YXRp
YyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAgICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKICAgICBzdGF0aWMgdm9pZCBmb3JNb3N0
VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJQYWdlUHJveHkqKT4mJik7
CiAKICAgICBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29u
c3Q7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQor
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZUlEOyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIApAQCAtMTUw
Miw3ICsxNTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlv
bkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViTmF2aWdhdGlvbkRh
dGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9u
YWxVUkxGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1
aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCi0gICAgICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYm
LCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLAorICAgICAg
ICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5m
b0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCiAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9u
c2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJik7CkBAIC0xNTExLDcgKzE1MTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkUmVxdWVz
dFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdh
dGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRy
ZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdU
Rjo6bnVsbG9wdCk7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4mJik7
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAg
ICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAg
ICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUpOwpAQCAtMTU0OSw5ICsxNTUxLDkgQEAgV0VCUEFHRVBST1hZX0xPQURP
UFRJTUlaRVJfQURESVRJT05TXzEKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90
YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VV
c2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KHVpbnQ2NF90KT4mJik7Ci0KKyAgICAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VD
bGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmKTsKKyAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nl
c3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZvaWQgbm90
aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0oKTsKQEAgLTE1NzMsNiArMTU3NSwxMSBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRp
b25SZWFzb24pOwogCiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYpOworICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFRvUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIFUmJiBtZXNzYWdlLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0
aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9jZXNzLnNlbmQoV1RGTW92ZSht
ZXNzYWdlKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgc2VuZE9wdGlvbnMpOworICAgIH0KIAogICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+KSBvdmVycmlkZTsK
QEAgLTE2MjcsMTMgKzE2MzQsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lOYXZp
Z2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViRnJhbWVQcm94eSYs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYs
IFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRh
JiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYm
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAog
ICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29u
c3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJh
bWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwK
LSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisg
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsK
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE2NTUsNyArMTY2Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpOwogCiAgICAgLy8gVUkgY2xpZW50Ci0gICAg
dm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ld1BhZ2Uo
Y29uc3QgRnJhbWVJbmZvRGF0YSYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6Oldp
bmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNob3dQYWdl
KCk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9p
ZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYpOwpAQCAtMjMyNyw3ICsyMzM0
LDcgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzIKICAgICBSZWZQdHI8
V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4gbV92YWxpZGF0aW9uQnViYmxlOwogI2VuZGlmCiAK
LSAgICBjb25zdCB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBtX3BhZ2VJRDsKIAogICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5kZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9hZGRzVmlzaXRlZExpbmtzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDZmY2VjZGM2YjY1
Li5iMWU3OTkyMjNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogICAgICMgVUkgbWVzc2FnZXMKLSAgICBDcmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcywgc3RydWN0IFdlYktpdDo6TmF2
aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEpIC0+ICh1aW50NjRfdCBuZXdQ
YWdlSUQsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gbmV3UGFn
ZVBhcmFtZXRlcnMpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRlTmV3UGFnZShzdHJ1Y3QgV2ViS2l0
OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzIHdpbmRvd0ZlYXR1
cmVzLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBuZXdQYWdlSUQsIE9w
dGlvbmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gbmV3UGFnZVBhcmFtZXRl
cnMpIFN5bmNocm9ub3VzCiAgICAgU2hvd1BhZ2UoKQogICAgIENsb3NlUGFnZShib29sIHN0b3BS
ZXNwb25zaXZlbmVzc1RpbWVyKQogICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFt
ZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmln
aW4sIFN0cmluZyBtZXNzYWdlKSAtPiAoKSBTeW5jaHJvbm91cwpAQCAtMTA0LDggKzEwNCw4IEBA
IG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIFBvbGljeSBtZXNzYWdlcwogICAg
IERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFN0cmluZyBkb3dubG9hZEF0
dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkK
LSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJ
RCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdp
bmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZv
RGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdh
dGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpX
ZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5bmNocm9ub3VzCisgICAgRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVj
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKKyAgICBEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZy
YW1lLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmln
aW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRh
dGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9u
c2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9s
aWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6
OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNE
YXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5bmNocm9ub3VzCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3
V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZl
dGltZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZl
dGltZU9ic2VydmVyLmNwcAppbmRleCBjODAyM2RlNDE2MS4uZjQ5NzE1MWQ3NWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZl
ci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6
YWRkV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHJvY2UKICAgICBSRUxF
QVNFX0FTU0VSVCghcHJvY2Vzcy5pc1ByZXdhcm1lZCgpKTsKIAogICAgIGlmIChtX3Byb2Nlc3Nl
cy5hZGQoJnByb2Nlc3MpLmlzTmV3RW50cnkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0coTG9hZGlu
ZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIo
KSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywg
IiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwg
d2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgICAgICB3ZWJQcm9jZXNzV2ls
bE9wZW5Db25uZWN0aW9uKHByb2Nlc3MsICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAgICAgfQog
CkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OnJlbW92
ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYlByCiAgICAgd2ViUGFnZURp
ZENsb3NlQ29ubmVjdGlvbih3ZWJQYWdlUHJveHksICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAK
ICAgICBpZiAobV9wcm9jZXNzZXMucmVtb3ZlKCZwcm9jZXNzKSkgewotICAgICAgICBSRUxFQVNF
X0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2Vi
UGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9j
ZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgICAgICBSRUxFQVNF
X0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2Vi
UGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9j
ZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAg
ICAgIHdlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24ocHJvY2VzcywgKnByb2Nlc3MuY29ubmVj
dGlvbigpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5jcHAKaW5kZXggMGUxMzlmMzBkOWMuLjBiOGIzNDVlZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMjk2LDkgKzEyOTYsOSBAQCBib29sIFdl
YlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFdlYnNp
dGVEYXRhU3RvcmUmIHN0bwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VC
ZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3Rv
cmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0
ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFT
dG9yZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5hZGQoZGF0
YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PHVpbnQ2NF90PigpKS5pdGVyYXRvci0+dmFsdWUu
YWRkKHBhZ2VJRCk7CisgICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuYWRk
KGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDxQYWdlSWRlbnRpZmllcj4oKSkuaXRlcmF0
b3ItPnZhbHVlLmFkZChwYWdlSUQpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQu
aXNOZXdFbnRyeSk7CiAKICAgICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQo
KTsKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVz
aW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhCiAgICAgfQog
fQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVp
bnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9
IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXNzaW9uVG9Q
YWdlSURzTWFwLmZpbmQoc2Vzc2lvbklEKTsKQEAgLTIyMTEsNyArMjIxMSw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnJlaW5zdGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29y
a1Byb2Nlc3NQcm94eSYKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVNlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CitTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdl
SUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBUaGlzIGlz
IGluZWZmaWNpZW50LgogICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3Nl
cnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKQEAgLTI1MTksNyArMjUxOSw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkK
ICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyQ3VycmVu
dE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpj
b21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNz
UG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICghbV9uZXR3b3Jr
UHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDE2
NTU0NWIxYTJmLi41M2IyMzVhZWY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCkBAIC0xOTMsOCArMTkzLDggQEAgcHVibGljOgogCiAgICAgUmVmPFdlYlBhZ2VQ
cm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRp
b24+JiYpOwogCi0gICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0
X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0gICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJz
aXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHZv
aWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAgICAgYm9v
bCBoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJikgY29uc3Q7
CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fY29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCk7IH0KQEAgLTM2NSw3ICszNjUs
NyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nl
c3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIE9wdGlvbmFsPFBBTDo6U2Vz
c2lvbklEPik7Ci0gICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogc2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgY29uc3QgSGFzaE1hcDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNl
V29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3Nlczsg
fQogICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJv
b2wgYWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0g
YWxsb3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3Jr
ZXIoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdv
cmtlcjsgfQpAQCAtNDkzLDcgKzQ5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmREaXNwbGF5
Q29uZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpOwogICAgIHZvaWQgY2xlYXJD
dXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoKTsKIAotICAgIHZvaWQgY29tbWl0dGVkQ3Jv
c3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIGNvbW1pdHRl
ZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogI2lm
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQgc2V0U2FuZGJveEVuYWJs
ZWQoYm9vbCBlbmFibGVkKSB7IG1fc2FuZGJveEVuYWJsZWQgPSBlbmFibGVkOyB9OwpAQCAtNzU4
LDcgKzc1OCw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXRocyBtX3Jlc29sdmVkUGF0aHM7
CiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV9zZXNz
aW9uVG9QYWdlSURzTWFwOworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7CiAgICAgUnVuTG9v
cDo6VGltZXI8V2ViUHJvY2Vzc1Bvb2w+IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0
aW9uVGltZXI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggODIwMzQ2NWNiMjguLjY3ODMxZTIwNzgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTEx
MCwxMCArMTEwLDkgQEAgV2ViUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NG
b3JJZGVudGlmaWVyKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWYKICAgICByZXR1cm4gYWxsUHJv
Y2Vzc2VzKCkuZ2V0KGlkZW50aWZpZXIpOwogfQogCi11aW50NjRfdCBXZWJQcm9jZXNzUHJveHk6
OmdlbmVyYXRlUGFnZUlEKCkKK1BhZ2VJZGVudGlmaWVyIFdlYlByb2Nlc3NQcm94eTo6Z2VuZXJh
dGVQYWdlSUQoKQogewotICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVQYWdlSUQ7Ci0gICAgcmV0
dXJuICsrdW5pcXVlUGFnZUlEOworICAgIHJldHVybiBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKIH0KIAogc3RhdGljIFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwJiBnbG9iYWxQ
YWdlTWFwKCkKQEAgLTMzMCw3ICszMjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2h1dERv
d24oKQogICAgIG1fcHJvY2Vzc1Bvb2wtPmRpc2Nvbm5lY3RQcm9jZXNzKHRoaXMpOwogfQogCi1X
ZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCitX
ZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgcmV0dXJuIGdsb2JhbFBhZ2VNYXAoKS5nZXQocGFnZUlEKTsKIH0KQEAgLTM2
Myw3ICszNjIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NU
ZWxlbWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCogbWVzc2FnZQogCiBSZWY8V2ViUGFnZVByb3h5
PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwg
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7Ci0gICAg
dWludDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IGdl
bmVyYXRlUGFnZUlEKCk7CiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQ
cm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdURk1vdmUocGFnZUNvbmZp
Z3VyYXRpb24pKTsKIAogICAgIGFkZEV4aXN0aW5nV2ViUGFnZSh3ZWJQYWdlLmdldCgpLCBCZWdp
bnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKQEAgLTQxNSwxMCArNDE0LDEwIEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgRW5kc1VzaW5n
RGF0YVN0b3JlIGVuCiAgICAgbWF5YmVTaHV0RG93bigpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExp
bmtTdG9yZSwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0
ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvJiB1c2VycyA9IG1fdmlzaXRlZExpbmtTdG9y
ZXNXaXRoVXNlcnMuZW5zdXJlKCZ2aXNpdGVkTGlua1N0b3JlLCBbXSB7Ci0gICAgICAgIHJldHVy
biBIYXNoU2V0PHVpbnQ2NF90PiB7IH07CisgICAgICAgIHJldHVybiBIYXNoU2V0PFBhZ2VJZGVu
dGlmaWVyPiB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJUKCF1c2Vy
cy5jb250YWlucyhwYWdlSUQpKTsKQEAgLTQyOCw3ICs0MjcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExp
bmtTdG9yZQogICAgICAgICB2aXNpdGVkTGlua1N0b3JlLmFkZFByb2Nlc3MoKnRoaXMpOwogfQog
Ci12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRl
ZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUm
IHZpc2l0ZWRMaW5rU3RvcmUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvIGl0
ID0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5maW5kKCZ2aXNpdGVkTGlua1N0b3JlKTsK
ICAgICBpZiAoaXQgPT0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbmQoKSkKQEAgLTU0
MSw3ICs1NDAsNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtleWJvYXJkQWNjZXNzRW5h
YmxlZCgpCiB9CiAjZW5kaWYKIAotYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFs
UGFnZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29sIFdlYlByb2Nlc3NQcm94eTo6
aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsK
ICAgICBmb3IgKGF1dG8qIHByb3Zpc2lvbmFsUGFnZSA6IG1fcHJvdmlzaW9uYWxQYWdlcykgewog
ICAgICAgICBpZiAocHJvdmlzaW9uYWxQYWdlLT5wYWdlKCkucGFnZUlEKCkgPT0gcGFnZUlEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA5YTZjYmYxZjQ2
MC4uYWQzZjAzOGRkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NoYXJlZFN0cmluZ0hhc2guaD4KQEAgLTk3LDcgKzk4LDcgQEAgZW51bSBjbGFzcyBBbGxv
d1Byb2Nlc3NDYWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVi
bGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNs
aWVudCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRs
ZXJDbGllbnQgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFdlYkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDx1
aW50NjRfdCwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOworICAgIHR5cGVkZWYgSGFz
aE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5
TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFQSTo6VXNlckluaXRp
YXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKICAgICBlbnVtIGNsYXNzIElz
UHJld2FybWVkIHsKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJz
aXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIHN0YXRpYyBXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsK
LSAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAg
c3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZW51bSBjbGFzcyBCZWdpbnNVc2luZ0RhdGFT
dG9yZSA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0xNDksMTAgKzE1MCwxMCBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3ModWludDY0X3Qg
cGFnZUlEKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3MoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVk
TGlua1N0b3JlJiwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5r
U3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQg
YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRM
aW5rU3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFkZFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jiwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CkBA
IC0zMTEsNyArMzEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ViUGFnZU1lZGlhU3RhdGVEaWRD
aGFuZ2UoV2ViUGFnZVByb3h5Jik7CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgdWludDY0X3Qg
Z2VuZXJhdGVQYWdlSUQoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZ2Vu
ZXJhdGVQYWdlSUQoKTsKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJz
aXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQpOwogCiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5CkBAIC0zNTQsNyArMzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZUNvbnRl
eHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKICNlbmRp
ZgogCi0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWludDY0X3QgcGFnZUlEKSBj
b25zdDsKKyAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0ZUJhY2tGb3J3YXJkSXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7CiAKICAgICAvLyBQbHVnaW5zCkBAIC00
NDcsNyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFByb3Zpc2lvbmFsUGFnZVByb3h5
Kj4gbV9wcm92aXNpb25hbFBhZ2VzOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25NYXAgbV91c2Vy
SW5pdGlhdGVkQWN0aW9uTWFwOwogCi0gICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFz
aFNldDx1aW50NjRfdC8qIHBhZ2VJRCAqLz4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7
CisgICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAgICAgSGFzaFNldDxXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eGllczsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2Fi
bGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFu
ZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNw
cAppbmRleCBlMzU1MzE5ZWE0Yy4uN2Q1NzVhNDA0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9p
ZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjp0YXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smIHRh
c2spCiAgICAgcGxhdGZvcm1UYXNrQ29tcGxldGVkKHRhc2spOwogfQogCi12b2lkIFdlYlVSTFNj
aGVtZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IHRhc2tJRCkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6cmVtb3ZlVGFza0Zyb21QYWdl
TWFwKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQogewogICAgIGF1dG8g
aXRlcmF0b3IgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5maW5kKHBhZ2VJRCk7CiAgICAgQVNT
RVJUKGl0ZXJhdG9yICE9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCA4OTk3NmM2MWY4
My4uYjdhZjA3NTk3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVIYW5kbGVyLmgKQEAgLTY2LDEzICs2NiwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9p
ZCBwbGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtVGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNr
JikgPSAwOwogCi0gICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCB0YXNrSUQpOworICAgIHZvaWQgcmVtb3ZlVGFza0Zyb21QYWdlTWFwKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSUQpOwogICAgIFdlYlByb2Nlc3NQcm94
eSogcHJvY2Vzc0ZvclRhc2tJZGVudGlmaWVyKHVpbnQ2NF90KSBjb25zdDsKIAogICAgIHVpbnQ2
NF90IG1faWRlbnRpZmllcjsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxXZWJVUkxTY2hl
bWVUYXNrPj4gbV90YXNrczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBIYXNoU2V0PHVpbnQ2NF90
Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgSGFzaFNldDx1aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyOwogICAg
IAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jTG9hZENvbXBsZXRpb25IYW5k
bGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmlu
ZGV4IDE5YTZiYjg0YzNjLi45YjdhZDVlMjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgYXV0byBXZWJVUkxTY2hl
bWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlc3BvbnMKICAgICAgICAgbV9zeW5jUmVzcG9uc2UgPSByZXNwb25zZTsKIAogICAgIG1fcmVx
dWVzdCA9IHJlcXVlc3Q7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
UkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRl
bnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlLCByZXF1ZXN0KSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFBlcmZv
cm1SZWRpcmVjdGlvbihtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlm
aWVyLCByZXNwb25zZSwgcmVxdWVzdCkpOwogCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5v
bmU7CiB9CkBAIC05Myw3ICs5Myw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgaWYg
KGlzU3luYygpKQogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJl
c3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJl
c3BvbnNlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50
aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSkpOwogICAgIHJldHVybiBFeGNlcHRpb25U
eXBlOjpOb25lOwogfQogCkBAIC0xMTgsNyArMTE4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNr
OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9u
VHkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURh
dGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgeyBidWZm
ZXIgfSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVS
TFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIo
KSwgbV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6
Ok5vbmU7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRp
ZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAg
ICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1l
SGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBs
ZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9y
KSk7CiAgICAgbV91cmxTY2hlbWVIYW5kbGVyLT50YXNrQ29tcGxldGVkKCp0aGlzKTsKIAogICAg
IHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwpAQCAtMTY5LDQgKzE2OSwxNCBAQCB2b2lkIFdl
YlVSTFNjaGVtZVRhc2s6OnN0b3AoKQogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcih7
IH0sIGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9KTsKIH0KIAor
SVBDOjpDb25uZWN0aW9uKiBXZWJVUkxTY2hlbWVUYXNrOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpOworfQorCit1
aW50NjRfdCBXZWJVUkxTY2hlbWVUYXNrOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmgKaW5kZXggYjg3MjA3M2JkMjcuLjdmMTRiOTg2MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC01MSwxMyArNTIsMTMgQEAgY2xhc3MgV2Vi
UGFnZVByb3h5OwogCiB1c2luZyBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPjsKIAotY2xh
c3MgV2ViVVJMU2NoZW1lVGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+
LCBwdWJsaWMgSW5zdGFuY2VDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+IHsKK2NsYXNzIFdlYlVS
TFNjaGVtZVRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVUYXNrPiwgcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJbnN0YW5jZUNvdW50ZWQ8V2ViVVJMU2NoZW1l
VGFzaz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlVSTFNjaGVtZVRhc2spOwogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFzaz4gY3JlYXRlKFdlYlVSTFNjaGVt
ZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9uSGFu
ZGxlciYmKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJ
ZGVudGlmaWVyOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vz
cygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQogCiAgICAgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9
CkBAIC04MCw2ICs4MSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViVVJMU2NoZW1l
VGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5
JiwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNM
b2FkQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVy
CisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZp
bmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmlu
YWw7CiAKICAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuICEhbV9zeW5jQ29tcGxldGlv
bkhhbmRsZXI7IH0KIApAQCAtODcsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94
eSogbV9wYWdlOwogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICB1
aW50NjRfdCBtX2lkZW50aWZpZXI7Ci0gICAgdWludDY0X3QgbV9wYWdlSWRlbnRpZmllcjsKKyAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9yZXNwb25zZVNlbnQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRl
eCAwYmY1MTEyYTllNC4uMGE4YjBjMTEyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNTc2LDcg
KzE1NzYsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVt
ZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUsIENvbXBsZQogICAgICAgICBwcm9jZXNzUG9vbC0+
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0
dXJlZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9y
ID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAotdm9pZCBXZWJzaXRl
RGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byog
d2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghd2Vi
UGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDY0MmUzMzA5ZDA3Li44MjJjM2ZjNzYzNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTEzNSw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModWlu
dDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9t
YWlucyk+JiYpOworICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBk
b21haW5zKT4mJik7CiAgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1ByZXZhbGVudFJl
c291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0
ZWRGcm9tLCBjb25zdCBVUkwmIGhvc3RSZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDc2MGExZDAwOWRlLi4wMTc5OTVh
NTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYklu
c3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVS
TCwgY29uc3QgU3RyCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdy
aXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwg
YWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1f
aW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNh
dmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pKTsKICAgICB9OwogCiAgICAgaWYgKCFmb3Jj
ZVNhdmVEaWFsb2cpIHsKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3Qg
UwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9y
UGFnZSA9IHdlYlZpZXcoKS0+X3BhZ2UuZ2V0KCk7Ci0gICAgaW5zcGVjdG9yUGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVh
bFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBpbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgaW5z
cGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVu
ZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IGY3MGYxYTRhYzRkLi5jNTczODZl
MzQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEyMiw3ICsxMjIs
NyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmRpZFVwZGF0ZUdl
b21ldHJ5KCkKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZv
ckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUNoYW5nZUlEKQogewogICAgIFNl
Y29uZHMgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNv
bmRzKDI1MCk7Ci0gICAgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0
ZT4obV93ZWJQYWdlUHJveHkucGFnZUlEKCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0LCBJ
UEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7
CisgICAgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZT4obV93ZWJQ
YWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQs
IElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVz
KTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3aWxsU2Vu
ZFVwZGF0ZUdlb21ldHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9t
YWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDUwMjQxZDhiZjYyLi5mNTNmYjIx
ZTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dl
c3R1cmVDb250cm9sbGVyTWFjLm1tCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZl
bnQsIEZsb2EKIAogICAgICAgICAvLyBGSVhNRTogV2UgZHJvcCB0aGUgZmlyc3QgZnJhbWUgb2Yg
dGhlIGdlc3R1cmUgb24gdGhlIGZsb29yLCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdGhlIHZpc2li
bGUgY29udGVudCBib3VuZHMgeWV0LgogICAgICAgICBtX21hZ25pZmljYXRpb24gPSBtX3dlYlBh
Z2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RH
ZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgp
KTsKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKSk7
CiAgICAgICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21hcnRNYWduaWZpY2F0aW9u
ID0gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgVmll
d0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0
UG9pbnQgb3JpZ2luKQogICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdHZXN0dXJl
VHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93ZWJQYWdlUHJveHkucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RH
ZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwgbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCkpOworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlv
bkdlc3R1cmUob3JpZ2luKSk7CiB9CiAKIHN0YXRpYyBmbG9hdCBtYXhpbXVtUmVjdGFuZ2xlQ29t
cG9uZW50RGVsdGEoRmxvYXRSZWN0IGEsIEZsb2F0UmVjdCBiKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0K
aW5kZXggMjE1MTY2MmQzNDcuLjVhNjgzMDk2ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAg
LTE5Myw3ICsxOTMsNyBAQCAtICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsQmVn
aW5BbmltYXRpb246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlYwogICAgIC8vIEZJWE1FOiBD
b25uZWN0aW9uIGNhbiBiZSBudWxsIGlmIHRoZSBwcm9jZXNzIGlzIGNsb3NlZDsgd2Ugc2hvdWxk
IGNsZWFuIHVwIGJldHRlciBpbiB0aGF0IGNhc2UuCiAgICAgaWYgKF9zdGF0ZSA9PSBXZWJLaXQ6
OkltbWVkaWF0ZUFjdGlvblN0YXRlOjpQZW5kaW5nKSB7CiAgICAgICAgIGlmIChhdXRvKiBjb25u
ZWN0aW9uID0gX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIGJv
b2wgcmVjZWl2ZWRSZXBseSA9IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRU
ZXN0PihfcGFnZS0+cGFnZUlEKCksIFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoNTAwKSk7Cisg
ICAgICAgICAgICBib29sIHJlY2VpdmVkUmVwbHkgPSBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlz
cGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtSW1tZWRp
YXRlQWN0aW9uSGl0VGVzdD4oX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIFNlY29uZHM6OmZy
b21NaWxsaXNlY29uZHMoNTAwKSk7CiAgICAgICAgICAgICBpZiAoIXJlY2VpdmVkUmVwbHkpCiAg
ICAgICAgICAgICAgICAgX3N0YXRlID0gV2ViS2l0OjpJbW1lZGlhdGVBY3Rpb25TdGF0ZTo6VGlt
ZWRPdXQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCAwMDdkODdkZmNkOC4uZjRhYjkxZTg5YjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0KQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgYwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBh
dG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsK
IAotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSk7
CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC01MjIsNyArNTIyLDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVu
dCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUg
Y2xvc2VGaWxlXTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10p
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0
cmluZ10pKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFu
Z2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0K
aW5kZXggODdjNjhiMzM0ODUuLjQ1NWQyZDVkNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6d2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgRmxvYXRSZWN0JiB2
aWV3RnJhbWVJbldpbmRvdwogICAgIC8vIEluIGNhc2UgdGhlIFVJIGNsaWVudCBvdmVycmlkZXMg
Z2V0V2luZG93RnJhbWUoKSwgd2UgY2FsbCBpdCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSBzZW5kIHRo
ZSBhcHByb3ByaWF0ZSB3aW5kb3cgZnJhbWUuCiAgICAgbV91aUNsaWVudC0+d2luZG93RnJhbWUo
KnRoaXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHZpZXdGcmFtZUlu
V2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXNdIChGbG9hdFJl
Y3Qgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKSB7CiAgICAgICAgIEZsb2F0UmVjdCB3
aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMgPSBwYWdlQ2xpZW50KCkuY29u
dmVydFRvVXNlclNwYWNlKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcyk7Ci0gICAgICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dBbmRWaWV3RnJhbWVzQ2hh
bmdlZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIHdpbmRvd0ZyYW1lSW5VbmZsaXBw
ZWRTY3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywgYWNjZXNz
aWJpbGl0eVZpZXdDb29yZGluYXRlcyksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6V2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQod2luZG93RnJhbWVJblNjcmVl
bkNvb3JkaW5hdGVzLCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMsIHZp
ZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMp
KTsKICAgICB9KTsKIH0KIApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYWluRnJhbWVJc1Nj
cm9sbGFibGUoaXNTY3JvbGxhYmxlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnRE
aWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYg
cmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4m
IGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkK
QEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0
QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2Vy
dERpY3RhdGVkVGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRpY3RhdGlvbkFsdGVy
bmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXApLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5n
ZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCkpOwogI2Vsc2UKICAg
ICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMucmVnaXN0ZXJVbmRvR3Jv
dXAgPSByZWdpc3RlclVuZG9Hcm91cDsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRp
dGluZ1JhbmdlJgogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXR0cmlidXRlZFN1
YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxi
YWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1JhbmdlJiBh
Y3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25z
dCBTdHJpbmcmLCBkb3VibGUsIGJvCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgCi0gICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNlbGVjdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNlbGVjdGlvbihjYWxsYmFja0lE
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb25DYWxsYmFjayhjb25z
dCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9uSGFzTXVs
dGlwbGVGb250cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMjcxLDcgKzI3MSw3IEBAIFN0
cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgICAg
ICByZXR1cm4gdmFsdWU7CiAgICAgCiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgy
MCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdT
ZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91
dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBh
c3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVybiB2YWx1
ZTsKIH0KIApAQCAtMjgyLDggKzI4Miw4IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyCiAgICAg
U2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHVpbnQ2NF90IHNpemUgPSAwOwogICAg
IGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nlc3MoKS5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVi
b2FyZFR5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBs
eShoYW5kbGUsIHNpemUpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJv
YXJkVHlwZSksCisgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9y
UGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIGlm
IChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxT
aGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRs
ZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CkBAIC0yOTcsMTQgKzI5Nywx
NCBAQCBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0
IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAg
IGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nlc3MoKS5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9h
cmROYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZDo6
UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmRO
YW1lKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZDo6UmVw
bHkocmVzdWx0KSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2Vs
ZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKHR5cGVzLCBk
YXRhKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VTZWxl
Y3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEpKTsKIH0KICNlbmRpZgogCkBAIC0z
MzQsMjIgKzMzNCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZENvbXBsZXhUZXh0SW5wdXRU
b1BsdWdpbih1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHBsdWdpbkNv
bXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB0ZXh0SW5wdXQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbihwbHVnaW5D
b21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgdGV4dElucHV0KSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1cHBlcmNhc2VXb3JkKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6VXBwZXJjYXNlV29yZCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6VXBwZXJjYXNlV29yZCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omxvd2Vy
Y2FzZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb3dl
cmNhc2VXb3JkKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb3dl
cmNhc2VXb3JkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FwaXRhbGl6ZVdvcmQoKQog
ewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBpdGFsaXplV29yZCgp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwaXRhbGl6ZVdvcmQo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQo
Ym9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgaXNTbWFydElu
c2VydERlbGV0ZUVuYWJsZWQpCiAKICAgICBUZXh0Q2hlY2tlcjo6c2V0U21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKTsKICAgICBtX2lzU21hcnRJbnNl
cnREZWxldGVFbmFibGVkID0gaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7Ci0gICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChp
c1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8pCkBA
IC0zOTUsNyArMzk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyVUlQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoZWxl
bWVudFRva2VuLCB3aW5kb3dUb2tlbiksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoZWxlbWVudFRva2Vu
LCB3aW5kb3dUb2tlbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGx1Z2luRm9jdXNPcldp
bmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmll
ciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hhc0ZvY3VzKQpAQCAtNDI0LDcgKzQyNCw3
IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZlbnQo
Y29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50CiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwog
ICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7Ci0gICAgcHJvY2VzcygpLnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoZXZl
bnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50OjpS
ZXBseShyZXN1bHQpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoZXZlbnQpLCBN
ZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50OjpSZXBseShy
ZXN1bHQpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM1
LDcgKzQzNSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphY2NlcHRzRmlyc3RNb3VzZShpbnQgZXZl
bnROdW1iZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVuCiAKICAgICBib29sIHJlc3VsdCA9
IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7Ci0gICAgcHJvY2Vz
cygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZShldmVudE51
bWJlciwgZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91c2U6OlJlcGx5
KHJlc3VsdCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVyLCBldmVudCksIE1lc3Nh
Z2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZTo6UmVwbHkocmVzdWx0KSwgbWVzc2FnZVRp
bWVvdXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKaW5k
ZXggZmY0NDkzNDFkOWUuLjZhYWMzYTdjMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAt
NDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYlBheW1lbnRDb29yZGluYXRvcjo6
V2ViUGF5bWVudENvb3JkaW5hdG9yKFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAgOiBtX3dlYlBhZ2Uo
d2ViUGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMp
OwogfQogCiBXZWJQYXltZW50Q29vcmRpbmF0b3I6On5XZWJQYXltZW50Q29vcmRpbmF0b3IoKQpA
QCAtMTY4LDcgKzE2OCw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENvb3JkaW5hdG9y
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBheW1lbnRD
b29yZGluYXRvcjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3dlYlBhZ2UucGFnZUlEKCk7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKS50
b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVNZXJj
aGFudChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHkuY3BwCmluZGV4IGIxY2JjOTYzYjBlLi40NTRjYTZiYzg0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViRnJh
bWUmIGZyYW1lKQogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgZXJyb3JNZXNzYWdlLCBlcnJvclR5
cGUpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3Rz
SW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBj
YWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbihQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBl
Y3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRf
dCBjYWxsYmFja0lEKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zMTIsNyArMzEyLDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRFdmFsdWF0ZUphdmFTY3JpcHRG
dW5jdGlvbih1aW50NjRfdCBmcmFtZUlELAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxsYmFja0lELCByZXN1bHQsIGVy
cm9yVHlwZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29s
dmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmlu
Zz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2
NF90IHBhZ2VJRCwgdWkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxk
RnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6
cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5k
bGUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWlu
dDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBA
IC0zODgsNyArMzg4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZl
Q2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwKICAgICBjb21wbGV0aW9u
SGFuZGxlcihXVEY6Om51bGxvcHQsIGZyYW1lRnJvbUVsZW1lbnQtPmZyYW1lSUQoKSk7CiB9CiAK
LXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFt
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVD
aGlsZEZyYW1lV2l0aE5hbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBh
Z2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFw
YWdlKSB7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDYKICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBh
Z2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAg
aWYgKCFwYWdlKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmEK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHBhcmVudEZyYW1lLT5mcmFtZUlE
KCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJhbWUodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Ojpmb2N1c0ZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0aWMgV2Vi
Q29yZTo6RmxvYXRQb2ludCBjb252ZXJ0UG9pbnRGcm9tRnJhbWVDbGllbnRUb1Jvb3RWaWV3KFdl
YkNvcmU6OkZyYW1lVgogICAgIHJldHVybiBjbGllbnRQb2ludDsKIH0KIAotdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3
SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxX
ZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dChQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9s
bEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBP
cHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBh
Z2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHJlc3VsdEVs
ZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBpc09ic2N1cmVkKTsKIH0KIAot
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzAzLDcgKzcwMyw3IEBAIHN0YXRpYyBX
ZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoV2ViUGFnZSYgcGFnZSwg
V2ViQ29yZTo6RWxlbWVuCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJv
b2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBT
aGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAKQEAgLTc1MSw3ICs3NTEsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpE
aWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIHsgfSksIDApOwogfQogCi12b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzc2LDcgKzc3Niw3IEBAIHZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0
LCBmb3VuZENvb2tpZXMpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRl
bGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29r
aWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkZWxldGVDb29r
aWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2ll
TmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5oCmluZGV4IDYyOTU0MWQyMGJhLi4xMTY3NjQ1Mjc3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJDb29yZGluYXRlU3lzdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCwx
NyArNjEsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGJ5IFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkgbWVzc2FnZXMKLSAgICB2b2lkIGV2YWx1YXRlSmF2YVNj
cmlwdEZ1bmN0aW9uKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBs
aWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHJlc29s
dmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1l
V2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3Qp
PiYmKTsKLSAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWlu
dDY0X3QpPiYmKTsKLSAgICB2b2lkIGZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlEKTsKLSAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1Zp
ZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2lu
dD4sIGJvb2wpPiYmKTsKLSAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7Ci0gICAgdm9pZCB0YWtlU2NyZWVuc2hvdCh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29s
IHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2llKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOworICAgIHZvaWQgZXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywg
Ym9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE9y
ZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90
IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0
X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhh
bmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+
JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBy
ZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1l
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYm
KTsKKyAgICB2b2lkIGZvY3VzRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGZyYW1lSUQpOworICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9s
bEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6
SW50UG9pbnQ+LCBib29sKT4mJik7CisgICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCB0
YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlw
VG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29raWVzRm9y
RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4p
PiYmKTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8U3RyaW5nPik+JiYpOwogCiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkZW50aWZpZXI7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGFhMTIxOWUyZWYxLi5kNzJmODlkMjYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSwyMSArMjEsMjEgQEAKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSB7Ci0gICAgRXZhbHVhdGVK
YXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGlj
aXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFj
a0lEKQorICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGZ1bmN0aW9uLCBWZWN0b3I8U3Ry
aW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50
IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFJlc29sdmVDaGls
ZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50
MzJfdCBvcmRpbmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZy
YW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0aW9u
YWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2
ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1l
SUQpIEFzeW5jCi0gICAgUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFt
ZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsKSAt
PiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisg
ICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0aW9u
YWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2
ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUs
IHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0
cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYwogCi0gICAgRm9jdXNGcmFt
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCisgICAgRm9jdXNGcmFtZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCiAKLSAgICBDb21w
dXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGVudW06dWludDhfdCBX
ZWJLaXQ6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgLT4gKE9wdGlvbmFsPFN0
cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6
OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCBpc09ic2N1cmVkKSBBc3luYworICAg
IENvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lz
dGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVj
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlz
T2JzY3VyZWQpIEFzeW5jCiAKLSAgICBTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJp
bmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBTZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUp
IC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKIAotICAgIFRha2VTY3JlZW5z
aG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUs
IGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0
X3QgY2FsbGJhY2tJRCkKKyAgICBUYWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9s
bEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiAKLSAgICBHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+IGNvb2tpZXMpIEFzeW5jCi0gICAgRGVsZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+
IGVycm9yVHlwZSkgQXN5bmMKKyAgICBHZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBl
cnJvclR5cGUsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIEFzeW5jCisgICAgRGVs
ZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5
bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGFlMzg4M2Q4NmI2Li5hZjg5ZDc4
ODE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJQYWdlKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAgaWYg
KGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkp
KSkKICAgICAgICAgICAgIHdlYlBhZ2UtPmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShjb25uZWN0
aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAw
NGFlMGU0NWQ1ZS4uMjc4YjYwMTg0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBA
QCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJl
c291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIGF1dG8mIGZyYW1lTG9hZGVyQ2xpZW50ID0g
cmVzb3VyY2VMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCk7CiAKICAgICBXZWJSZXNvdXJj
ZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzIHRyYWNraW5nUGFyYW1ldGVyczsKLSAgICB0cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVP
cigwKTsKKyAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQu
cGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pOwogICAgIHRyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlEID0gZnJhbWVMb2FkZXJDbGllbnQuZnJhbWVJRCgpLnZhbHVlT3IoMCk7CiAg
ICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQgPSBpZGVudGlmaWVyOwogICAgIGF1dG8g
c2Vzc2lvbklEID0gZnJhbWVMb2FkZXJDbGllbnQuc2Vzc2lvbklEKCk7CkBAIC0xNjcsNyArMTY3
LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVy
JiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAvLyB0aGVuIHdlIHNob3VsZCByZW1l
bWJlciB0aGUgUmVzb3VyY2VMb2FkZXIgaW4gb3VyIHJlY29yZHMgYnV0IG5vdCBzY2hlZHVsZSBp
dCBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLmRvY3VtZW50
TG9hZGVyKCktPnNjaGVkdWxlQXJjaGl2ZUxvYWQocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlBy
b2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUg
aGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJl
c291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFy
Y2hpdmUgcmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRl
ci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVz
b3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJj
aGl2ZSByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICBtX3dlYlJlc291cmNlTG9h
ZGVycy5zZXQoaWRlbnRpZmllciwgV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNvdXJjZUxv
YWRlciwgdHJhY2tpbmdQYXJhbWV0ZXJzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
NzUsMTQgKzE3NSwxNCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogCiAgICAgaWYgKHJlc291
cmNlTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVM
b2FkUmVzb3VyY2UocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgcmVz
b3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVk
dWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJs
ICclcycgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZS4iLCByZXNvdXJjZUxv
YWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9h
ZGVkIGZyb20gYXBwbGljYXRpb24gY2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBy
ZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRl
ZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIG1fd2Vi
UmVzb3VyY2VMb2FkZXJzLnNldChpZGVudGlmaWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRl
KHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJ
c0RhdGEoKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2Vzcykg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBsb2FkZWQg
YXMgZGF0YS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxl
TG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJl
IGxvYWRlZCBhcyBkYXRhIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2Fk
ZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxMb2Fk
KHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5MCw3ICsxOTAs
NyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIm
IHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlm
IChpc1F1aWNrTG9va1ByZXZpZXdVUkwocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpKSkg
ewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVy
U3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVp
Y2tMb29rIHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAi
c2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNl
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAi
c2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNl
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVy
LCBDYWNoZWRSZXNvdQogICAgIC8vIGh0dHBzOi8vYmxvZ3MuZ25vbWUub3JnL2FsZXhsLzIwMTIv
MDEvMjYvcmVzb3VyY2VzLWluLWdsaWIvCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLnJlcXVlc3Qo
KS51cmwoKS5wcm90b2NvbElzKCJyZXNvdXJjZSIpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2No
ZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1
cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQg
YXMgYSBHUmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRl
ci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVz
b3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVz
b3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgp
LCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VM
b2FkZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjExLDExICsyMTEsMTEgQEAgdm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJj
ZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmds
ZXRvbigpLmhhbmRsZUZldGNoKHJlc291cmNlTG9hZGVyLCBzZXNzaW9uSUQsIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFtZXRlcnMs
IGlkZW50aWZpZXIsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNv
dXJjZSksIHJlc291cmNlTG9hZGVyID0gbWFrZVJlZihyZXNvdXJjZUxvYWRlcildIChTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdCByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAo
cmVzdWx0ICE9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpIHsK
ICAgICAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2Fk
ZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB0aHJv
dWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSIsIHJlc291cmNlTG9hZGVy
LT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIHdp
bGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3Jp
dGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCks
IHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBp
ZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VM
b2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdo
IFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzb3VyY2VMb2Fk
ZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpP
bmx5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNl
TG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2NoZWR1bGUgVVJMIHRocm91
Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJz
Y2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNlV29ya2Vy
IGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNv
dXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICBj
YWxsT25NYWluVGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIp
XSB7CiAgICAgICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJyb3IocmVzb3VyY2VM
b2FkZXItPnJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlwZShS
ZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwpAQCAtMjI3LDEzICsyMjcsMTMgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNv
dXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIo
cmVzb3VyY2VMb2FkZXIpKQogICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
TG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VM
b2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVy
cywgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBt
YXhpbXVtQnVmZmVyaW5nVGltZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCBu
b3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBy
ZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIG5v
dCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJl
c291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0
KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICB9KTsKICNl
bHNlCiAgICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9h
ZGVyKSkKICAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9h
ZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2Vzc2lv
bklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVm
ZmVyaW5nVGltZShyZXNvdXJjZSkpOwogICAgIGVsc2UKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5
IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNv
dXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVy
cyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRy
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZy
YW1lSUQsIGlkZW50aWZpZXIpOwogI2VuZGlmCiB9CiAKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3Vy
Y2VMb2FkZXImIHJlc291cmNlTAogICAgIGlmIChsb2FkUGFyYW1ldGVycy5vcHRpb25zLm1vZGUg
IT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkgewogICAgICAgICBBU1NFUlQobG9hZFBh
cmFtZXRlcnMuc291cmNlT3JpZ2luKTsKICAgICAgICAgaWYgKCFsb2FkUGFyYW1ldGVycy5zb3Vy
Y2VPcmlnaW4pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVz
b3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAoZnJhbWUgPSAlcCwg
cHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0
YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2Fk
UGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJh
bWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogbm8gc291cmNlT3JpZ2luIChmcmFt
ZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJh
bWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHko
KSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53
ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICAgICAgICAgIHNjaGVk
dWxlSW50ZXJuYWxseUZhaWxlZExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0zNDYsOSArMzQ2LDkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJj
ZUwKIAogICAgIEFTU0VSVCgobG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0
ZXJzLndlYkZyYW1lSUQpIHx8IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kg
PT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMp
OwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxl
TG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNz
IChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2Fk
ZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJp
b3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2No
ZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVk
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50
PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1l
dGVycy5pZGVudGlmaWVyKTsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBh
cmFtZXRlcnMpLCAwKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJl
c291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ug
d2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlE
LCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNj
aGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQ
cm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3Vy
Y2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0
KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2Fk
UGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICAg
ICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBO
ZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgogICAgICAgICAvLyBUaGlzIGxv
YWQgd2lsbCBuZXZlciBzdWNjZWVkIHNvIHdlIHdpbGwgc2NoZWR1bGUgaXQgdG8gZmFpbCBhc3lu
Y2hyb25vdXNseS4KICAgICAgICAgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChyZXNvdXJj
ZUxvYWRlcik7CkBAIC01MDcsMTkgKzUwNywxOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQog
ICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVM
b2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwogICAgIFdlYlBhZ2UqIHdlYlBhZ2Ug
PSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogCi0gICAgYXV0byBwYWdl
SUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+cGFnZUlEKCkgOiAwOworICAgIGF1dG8gcGFnZUlEID0g
d2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogUGFnZUlkZW50aWZpZXIgeyB9OwogICAgIGF1
dG8gZnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CiAgICAgYXV0
byBzZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Np
b25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogCiAgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZUxv
YWRlci5mcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHk6IG5vIGRvY3VtZW50IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VM
b2FkSWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vz
c2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogbm8gZG9jdW1lbnQgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwg
cGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAg
ICAgICBlcnJvciA9IGludGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAoYXV0byBzeW5jTG9hZFJlc3VsdCA9IHRyeUxvYWRpbmdTeW5j
aHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyKGZyYW1lTG9hZGVyLCByZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCByZXF1ZXN0KSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBjYWxsaW5n
IHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1LCBlcnJv
ciA9ICVkKSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3luY0xv
YWRSZXN1bHQtPmVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQg
Y2FsbGluZyB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFuZGxlciAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVs
dSwgZXJyb3IgPSAlZCkiLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2Fk
SWRlbnRpZmllciwgc3luY0xvYWRSZXN1bHQtPmVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAg
ZXJyb3IgPSBXVEZNb3ZlKHN5bmNMb2FkUmVzdWx0LT5lcnJvcik7CiAgICAgICAgIHJlc3BvbnNl
ID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+cmVzcG9uc2UpOwogICAgICAgICBkYXRhID0gV1RG
TW92ZShzeW5jTG9hZFJlc3VsdC0+ZGF0YSk7CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJh
bWVMb2FkZXIsIHVuc2kKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRp
c2FibGVyOwogCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQYXJh
bWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3Jt
U3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5ldHdvcmsgcHJvY2Vz
cyBtZXNzYWdlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmll
cik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9h
ZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29y
ayBwcm9jZXNzIG1lc3NhZ2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIHJl
c291cmNlTG9hZElkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXV0byogcGFnZSA9IHdlYlBhZ2Ug
PyB3ZWJQYWdlLT5jb3JlUGFnZSgpIDogbnVsbHB0cikKICAgICAgICAgICAgIHBhZ2UtPmRpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNM
b2dnaW5nS2V5czo6c3luY2hyb25vdXNNZXNzYWdlRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZTo6Tm8pOwogICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKQEAg
LTU2MSw3ICs1NjEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgIH0KIH0KIAotdm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlE
KQordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlEKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGFnZUxvYWRDb21wbGV0ZWQod2ViUGFnZUlEKSwgMCk7
CiB9CkBAIC02NDgsMTAgKzY0OCwxMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25u
ZWN0VG8oRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCBjb25zdCBVUkwmIHVybCwgUwogCiAgICAg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJz
LnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKLSAgICBwYXJhbWV0ZXJzLndlYlBh
Z2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7Ci0gICAgcGFyYW1ldGVycy53
ZWJGcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKKyAgICBwYXJh
bWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOworICAgIHBhcmFtZXRlcnMud2Vi
RnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgcGFyYW1ldGVycy5wYXJlbnRQSUQg
PSBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKLSAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9
IHdlYlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCk7CisgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlLT5zZXNzaW9u
SUQoKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFBy
ZWNvbm5lY3RPbmx5OjpZZXM7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNw
b25zZUFjY2VzcyA9IHNob3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXgg
NGFmNTk5NDFlMzQuLmFjNTI0OTY2YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogICAgIAogICAgIHZvaWQgbG9hZFJlc291cmNlKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6RnJhbWVMb2FkZXImLCB1bnNpZ25lZCBs
b25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkg
ZmluYWw7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpIGZp
bmFsOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
IGZpbmFsOwogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5h
bDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBi
b29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjg4ZmRhMzAwNy4uODhiZDUzYmYxZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTg4LDE2ICs4OCwxNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBSZXNvdQog
ICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBM
T0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgaWYgKG1f
Y29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXli
ZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KG1fY29yZUxvYWRlci5nZXQoKSwgcHJvcG9zZWRSZXF1
ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFj
a0ZvclJlZGlyZWN0IHJldHVybmVkIGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
d2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJhY2tG
b3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIG1fY29yZUxvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocHJvcG9zZWRSZXF1
ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7CiAgICAgICAgIGlmICgh
bV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5
IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBvciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG5vIGNv
cmVsb2FkZXIgb3IgaWRlbnRpZmllciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogCkBAIC0xMTMsMTIgKzExMywxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRT
ZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlUwogdm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9yICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2FkZXIt
PnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc3RhdHVzID0gJWQpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkpOwogCiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKIAogICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShtX2NvcmVMb2Fk
ZXIuZ2V0KCksIHJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJk
aWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSB0aGUgY29udGVu
dCBpcyBhbHJlYWR5IGNhY2hlZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFs
cmVhZHkgY2FjaGVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzUsNyAr
MTM1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICAgICAgICAgIGlmIChtX2NvcmVM
b2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVz
ZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFy
YW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBubyBj
b3JlTG9hZGVyIG9yIG5vIElEIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICB9OwogICAgIH0KIApAQCAtMTQ4LDcg
KzE0OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxk
IG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAg
ICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZy
YW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlEKTsKICAgICB9CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCkBA
IC0xNTgsNyArMTU4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3Mm
IG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3Jl
TG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3Ro
ID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRlc1Jl
Y2VpdmVkKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hSZXNvdXJjZUxv
YWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRlc1JlY2VpdmVkKTsKIAogICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTG9hZCBzaG91
bGQgbm90IGJlIGFibGUgdG8gZmluaXNoIGJlZm9yZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3Bv
bnNlIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKG5ldHdvcmtMb2FkTWV0
cmljcyk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0wKIHZvaWQg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgp
LnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkRmFpbFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxSZXNv
dXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3Np
bmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3VsZCBub3QgYmUgYWJsZSB0byBmaW5pc2ggYmVm
b3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIApAQCAtMTc5LDcgKzE3OSw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBmb3IgJyVzJyIs
IG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTogKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJ
RCk7CiAKICAgICBtX2NvcmVMb2FkZXItPmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KTsKIH0KQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9j
a0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BM
b2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2Vi
UHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25z
T3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVy
bCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURl
bmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRp
b25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZy
YW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgbV9jb3JlTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpLT5zdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29u
dGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCByZXNw
b25zZSk7CiB9CkBAIC0xOTYsMTMgKzE5NiwxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpz
dG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaQog
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJs
ZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9j
ZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9j
b3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90
cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1
ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20g
U2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRv
IGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAg
ICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAg
IGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5k
aWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRp
YWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpT
aG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDdmZDc4MzIyMzNhLi41ODY1NDM3MThlNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJj
ZUxvYWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTAsNyArNTEsNyBAQCB0eXBl
ZGVmIHVpbnQ2NF90IFJlc291cmNlTG9hZElkZW50aWZpZXI7CiBjbGFzcyBXZWJSZXNvdXJjZUxv
YWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZGVyPiwgcHVibGljIElQQzo6
TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFRyYWNraW5nUGFyYW1ldGVycyB7
Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRCB7IDAgfTsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEOwogICAgICAgICB1aW50NjRfdCBmcmFtZUlEIHsgMCB9OwogICAgICAg
ICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQgeyAwIH07CiAgICAgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMjBlNGQ1YzVhZGIuLmZhMDc4MjNmZjNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBA
IGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNh
dGlvbiwgV2ViUGFnZSogcGFnZSkKICAgICBhdXRvIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0
TWFwLmFkZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgVmVjdG9yPHVp
bnQ2NF90PigpKS5pdGVyYXRvcjsKICAgICBpdC0+dmFsdWUuYXBwZW5kKG5vdGlmaWNhdGlvbklE
KTsKIAotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT50aXRsZSgp
LCBub3RpZmljYXRpb24tPmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uKCkuc3RyaW5nKCksIG5v
dGlmaWNhdGlvbi0+dGFnKCksIG5vdGlmaWNhdGlvbi0+bGFuZygpLCBub3RpZmljYXRpb24tPmRp
cigpLCBub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKSwgbm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAg
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Tm90aWZpY2F0aW9uKG5vdGlm
aWNhdGlvbi0+dGl0bGUoKSwgbm90aWZpY2F0aW9uLT5ib2R5KCksIG5vdGlmaWNhdGlvbi0+aWNv
bigpLnN0cmluZygpLCBub3RpZmljYXRpb24tPnRhZygpLCBub3RpZmljYXRpb24tPmxhbmcoKSwg
bm90aWZpY2F0aW9uLT5kaXIoKSwgbm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5vdGlmaWNhdGlvbklEKSk7CiAgICAg
cmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwpAQCAt
MTY5LDcgKzE2OSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKE5vdGlm
aWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogICAgIGlmICghbm90aWZpY2F0
aW9uSUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDYW5jZWxOb3RpZmlj
YXRpb24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQp
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BB
UkFNKHBhZ2UpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
cjo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyA9
IGl0LT52YWx1ZTsKLSAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9u
SURzKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q2xlYXJOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbklEcykpOwogICAgIHNpemVfdCBj
b3VudCA9IG5vdGlmaWNhdGlvbklEcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjb3VudDsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlv
biA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25JRHNbaV0pOwpAQCAtMjEw
LDcgKzIxMCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlm
aWNhdGlvbihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwKIAogICAgIG1fbm90aWZpY2F0aW9u
SURNYXAucmVtb3ZlKG5vdGlmaWNhdGlvbklEKTsKICAgICByZW1vdmVOb3RpZmljYXRpb25Gcm9t
Q29udGV4dE1hcChub3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uKTsKLSAgICBtX3Byb2Nlc3Mu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkpOwor
ICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRGVzdHJveU5vdGlmaWNh
dGlvbihub3RpZmljYXRpb25JRCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0
aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKaW5kZXggMzRiNWE2NDNmMDMuLjhjZGRiNTMwZDdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBjb25zdCBTZWNv
bmRzIHN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQgeyAxMDBfbXMgfTsgLy8gT25seSB1c2Vk
IGJ5IGxhCiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1
YmxpYyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBTZXJ2aWNlV29ya2Vy
RnJhbWVMb2FkZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKKyAgICBTZXJ2aWNlV29ya2VyRnJhbWVM
b2FkZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKICAgICAgICAgOiBtX2Nv
bm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAg
ICAgICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtOTUsMTggKzk1LDE4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlciosIHVuc2ln
bmVkIGxvbmcpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9Cisg
ICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2ZyYW1lSUQ7IH0KICAgICBTdHJpbmcgdXNlckFnZW50KGNv
bnN0IFVSTCYpIGZpbmFsIHsgcmV0dXJuIG1fdXNlckFnZW50OyB9CiAKICAgICBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwogICAgIFBBTDo6U2Vzc2lvbklEIG1f
c2Vzc2lvbklEOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9OworICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRCB7IDAgfTsKICAg
ICBTdHJpbmcgbV91c2VyQWdlbnQ7CiB9OwogCi1XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBj
b25uZWN0aW9uLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNv
bm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIDogbV9jb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9wYWdlR3JvdXBJRChwYWdl
R3JvdXBJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oCmluZGV4IDZjZTgzZDFkMDllLi5mYmI2MzBlNGUxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0
b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsK
ICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC05
Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzOwogICAgIHVpbnQ2NF90IG1fcGFnZUdyb3VwSUQ7Ci0gICAg
dWludDY0X3QgbV9wYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9w
YWdlSUQ7CiAgICAgdWludDY0X3QgbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCB7IDAgfTsKIAog
ICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9y
YWdlQmxvY2tpbmdQb2xpY3kgeyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2Nr
aW5nUG9saWN5OjpBbGxvd0FsbFN0b3JhZ2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL1dlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggODU2NTkxNjZjYzIuLmQ0YTg3YzZkMDYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2Vi
QXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcApAQCAt
NDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkF1dGhlbnRpY2F0b3JDb29yZGlu
YXRvcjo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAg
OiBtX3dlYlBhZ2Uod2ViUGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dGhl
bnRpY2F0b3JDb29yZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFn
ZUlEKCkudG9VSW50NjQoKSwgKnRoaXMpOwogfQogCiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0
b3I6On5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApp
bmRleCA0OTYyOTZmNmQ4OC4uMzQzZTgzNWFkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBA
IC0xNzgsNyArMTc4LDcgQEAgRmxvYXRSZWN0IFdlYkNocm9tZUNsaWVudDo6d2luZG93UmVjdCgp
CiAKICAgICBGbG9hdFJlY3QgbmV3V2luZG93RnJhbWU7CiAKLSAgICBpZiAoIVdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkdldFdpbmRvd0ZyYW1lOjpSZXBseShuZXdXaW5kb3dGcmFtZSksIG1fcGFnZS5wYWdlSUQoKSkp
CisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2lu
ZG93RnJhbWUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWU6OlJlcGx5
KG5ld1dpbmRvd0ZyYW1lKSkpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAogICAgIHJl
dHVybiBuZXdXaW5kb3dGcmFtZTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSogZnJhbWUpCiB7CiAgICAgV2ViRnJhbWUq
IHdlYkZyYW1lID0gZnJhbWUgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpIDogbnVs
bHB0cjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9jdXNlZEZyYW1lQ2hhbmdlZCh3
ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGb2N1c2VkRnJhbWVDaGFuZ2Vk
KHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDApKTsKIH0KIAogUGFnZSogV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1
ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIGNvbnN0
IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCkBAIC0yODgsMTkgKzI4OCwyMCBA
QCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlcwogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2Vi
RnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogCi0gICAgdWludDY0X3QgbmV3UGFnZUlEID0g
MDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlEOwogICAgIE9wdGlvbmFs
PFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7Ci0gICAgaWYgKCF3ZWJQcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJhbWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2UoKS0+
cGFnZUlEKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHdpbmRvd0ZlYXR1cmVzLCBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6
OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVycyksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYg
KCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZSh3
ZWJGcmFtZS0+aW5mbygpLCB3ZWJGcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSwgcmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKSwgd2luZG93RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6UmVwbHkobmV3UGFnZUlELCBwYXJh
bWV0ZXJzKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFuZXdQYWdlSUQp
CiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMpOwogICAg
IGlmIChwYXJhbWV0ZXJzLT5zZXNzaW9uSUQgPT0gbV9wYWdlLnNlc3Npb25JRCgpKQogICAgICAg
ICBwYXJhbWV0ZXJzLT5vbGRQYWdlSUQgPSBtX3BhZ2UucGFnZUlEKCk7CiAKLSAgICB3ZWJQcm9j
ZXNzLmNyZWF0ZVdlYlBhZ2UobmV3UGFnZUlELCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSk7Ci0gICAg
cmV0dXJuIHdlYlByb2Nlc3Mud2ViUGFnZShuZXdQYWdlSUQpLT5jb3JlUGFnZSgpOworICAgIHdl
YlByb2Nlc3MuY3JlYXRlV2ViUGFnZSgqbmV3UGFnZUlELCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSk7
CisgICAgcmV0dXJuIHdlYlByb2Nlc3Mud2ViUGFnZSgqbmV3UGFnZUlEKS0+Y29yZVBhZ2UoKTsK
IH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3coKQpAQCAtMzM1LDcgKzMzNiw3IEBAIGJv
b2wgV2ViQ2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUoKQogICAgICAgICByZXR1cm4gdG9v
bGJhcnNWaXNpYmlsaXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6VUlF
bGVtZW50VmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICAKICAgICBib29sIHRvb2xiYXJzQXJlVmlz
aWJsZSA9IHRydWU7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29s
YmFyc0FyZVZpc2libGUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVW
aXNpYmxlOjpSZXBseSh0b29sYmFyc0FyZVZpc2libGUpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAg
IGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJz
QXJlVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2li
bGU6OlJlcGx5KHRvb2xiYXJzQXJlVmlzaWJsZSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIHJldHVybiB0b29sYmFyc0FyZVZpc2libGU7CkBAIC0zNTMsNyArMzU0LDcgQEAgYm9vbCBX
ZWJDaHJvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUoKQogICAgICAgICByZXR1cm4gc3RhdHVz
YmFyVmlzaWJpbGl0eSA9PSBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxl
bWVudFZpc2liaWxpdHk6OlZpc2libGU7CiAKICAgICBib29sIHN0YXR1c0JhcklzVmlzaWJsZSA9
IHRydWU7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJ
c1Zpc2libGUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxl
OjpSZXBseShzdGF0dXNCYXJJc1Zpc2libGUpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICgh
bV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlz
aWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGU6OlJl
cGx5KHN0YXR1c0JhcklzVmlzaWJsZSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJl
dHVybiBzdGF0dXNCYXJJc1Zpc2libGU7CkBAIC0zODIsNyArMzgzLDcgQEAgYm9vbCBXZWJDaHJv
bWVDbGllbnQ6Om1lbnViYXJWaXNpYmxlKCkKICAgICAgICAgcmV0dXJuIG1lbnViYXJWaXNpYmls
aXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6VUlFbGVtZW50VmlzaWJp
bGl0eTo6VmlzaWJsZTsKICAgICAKICAgICBib29sIG1lbnVCYXJJc1Zpc2libGUgPSB0cnVlOwot
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZSgp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlOjpSZXBseShtZW51
QmFySXNWaXNpYmxlKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlKCksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OlJlcGx5KG1lbnVCYXJJc1Zpc2li
bGUpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbWVudUJhcklzVmlzaWJs
ZTsKQEAgLTExODYsNyArMTE4Nyw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkQ29u
dGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCBlbGVtZW50SUQpCiBib29sIFdlYkNo
cm9tZUNsaWVudDo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVj
dG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KSBjb25zdAogewogICAgIGJvb2wgc3VjY2VlZGVkOwot
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V3JhcENyeXB0b0tleShrZXkpLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXcmFwQ3J5cHRvS2V5OjpSZXBseShzdWNjZWVkZWQsIHdy
YXBwZWRLZXkpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OldyYXBDcnlwdG9LZXkoa2V5KSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6V3JhcENyeXB0b0tleTo6UmVwbHkoc3VjY2VlZGVkLCB3cmFwcGVkS2V5KSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc3VjY2VlZGVkOwogfQpAQCAtMTE5NCw3
ICsxMTk1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYKIGJvb2wgV2ViQ2hyb21lQ2xpZW50
Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0
b3I8dWludDhfdD4mIGtleSkgY29uc3QKIHsKICAgICBib29sIHN1Y2NlZWRlZDsKLSAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5KSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5OjpSZXBseShzdWNjZWVkZWQs
IGtleSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXkpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpVbndyYXBDcnlwdG9LZXk6OlJlcGx5KHN1Y2NlZWRlZCwga2V5KSkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc3VjY2VlZGVkOwogfQpAQCAtMTIwNCw3
ICsxMjA1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShjb25zdCBW
ZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwKIFN0cmluZyBXZWJDaHJvbWVDbGll
bnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5k
ZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkgY29uc3QK
IHsKICAgICBTdHJpbmcgcmVzdWx0OwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxl
bmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAg
aWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGlj
S2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLCB1cmwp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJp
bmc6OlJlcGx5KHJlc3VsdCkpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQpAQCAtMTMxNywxMiArMTMxOCwxMiBAQCB2b2lkIFdlYkNocm9tZUNs
aWVudDo6ZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKQogfQogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYXNTdG9y
YWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxl
RG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJD
aHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFt
ZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wYWdlLmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShz
dWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0
U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1l
RG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBtX3BhZ2UucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFt
ZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZGQzYjIyNTQzNWQuLjI5
MWM1ZWRkYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNjksOCArMzY5LDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
ZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJikgZmluYWw7CisgICAgdm9pZCBo
YXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29s
b3JDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDb2xvckNob29zZXIuY3BwCmluZGV4IGQ1MzVlNWM1NWM2Li5jYjQwMjQxNzA1YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbG9yQ2hv
b3Nlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNvbG9yQ2hvb3Nlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViQ29sb3JDaG9vc2VyOjpXZWJD
b2xvckNob29zZXIoV2ViUGFnZSogcGFnZSwgQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNv
bnMKICAgICAsIG1fcGFnZShwYWdlKQogewogICAgIG1fcGFnZS0+c2V0QWN0aXZlQ29sb3JDaG9v
c2VyKHRoaXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbG9yUGlja2VyKGlu
aXRpYWxDb2xvciwgY2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpLCBjbGll
bnQtPnN1Z2dlc3RlZENvbG9ycygpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihpbml0aWFsQ29sb3Is
IGNsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSwgY2xpZW50LT5zdWdnZXN0
ZWRDb2xvcnMoKSkpOwogfQogCiBXZWJDb2xvckNob29zZXI6On5XZWJDb2xvckNob29zZXIoKQpA
QCAtNzQsNyArNzQsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6cmVhdHRhY2hDb2xvckNob29z
ZXIoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fcGFnZS0+c2V0QWN0aXZlQ29sb3JDaG9vc2Vy
KHRoaXMpOwogCiAgICAgQVNTRVJUKG1fY29sb3JDaG9vc2VyQ2xpZW50KTsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihjb2xvciwgbV9jb2xvckNob29zZXJDbGll
bnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCksIG1fY29sb3JDaG9vc2VyQ2xpZW50
LT5zdWdnZXN0ZWRDb2xvcnMoKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29sb3JQaWNrZXIoY29sb3IsIG1fY29sb3JD
aG9vc2VyQ2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpLCBtX2NvbG9yQ2hv
b3NlckNsaWVudC0+c3VnZ2VzdGVkQ29sb3JzKCkpKTsKIH0KIAogdm9pZCBXZWJDb2xvckNob29z
ZXI6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtODUsNyArODUsNyBA
QCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYgY29s
b3IpCiAgICAgaWYgKG1fcGFnZS0+YWN0aXZlQ29sb3JDaG9vc2VyKCkgIT0gdGhpcykKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRDb2xvclBpY2tlckNv
bG9yKGNvbG9yKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNldENvbG9yUGlja2VyQ29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBX
ZWJDb2xvckNob29zZXI6OmVuZENob29zZXIoKQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFdlYkNv
bG9yQ2hvb3Nlcjo6ZW5kQ2hvb3NlcigpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kQ29sb3JQaWNrZXIoKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVu
ZENvbG9yUGlja2VyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKaW5kZXggZDAyNWRmYWNmYTIuLmQzNmEx
NTRjZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcApA
QCAtNDcsNyArNDcsNyBAQCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6On5XZWJEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXIoKSB7IH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXI6OmhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBXVEY6OlN0cmluZyYga2V5KQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5ZG93bkluRGF0YUxpc3Qoa2V5
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkhhbmRsZUtleWRvd25JbkRhdGFMaXN0KGtleSkpOwogfQogCiB2b2lkIFdlYkRhdGFM
aXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBz
ZWxlY3RlZE9wdGlvbikKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXI6OmRpZENsb3NlU3VnZ2VzdGlvbnMoKQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2Vz
dGlvblBpY2tlcjo6Y2xvc2UoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0
YUxpc3RTdWdnZXN0aW9ucygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygpKTsKIH0KIAog
dm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5
cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgdHlwZSkKQEAgLTc1LDcgKzc1LDcg
QEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlv
blR5cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWMKICAgICBtX3BhZ2UtPnNldEFjdGl2ZURhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcih0aGlzKTsKIAogICAgIERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0
aW9uIGluZm8gPSB7IHR5cGUsIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+c3VnZ2VzdGlv
bnMoKSwgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5lbGVtZW50UmVjdEluUm9vdFZpZXdD
b29yZGluYXRlcygpIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93RGF0YUxpc3RT
dWdnZXN0aW9ucyhpbmZvKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dEYXRhTGlzdFN1Z2dlc3Rpb25zKGluZm8pKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGY0Mjhm
ZDIzOTdlLi43MDUyMDI1YjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTMwOSw3ICsz
MDksNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvU3RlcChVbmRvU3RlcCYg
c3RlcCkKICAgICBhdXRvIHN0ZXBJRCA9IHdlYlN0ZXAtPnN0ZXBJRCgpOwogCiAgICAgbV9wYWdl
LT5hZGRXZWJVbmRvU3RlcChzdGVwSUQsIFdURk1vdmUod2ViU3RlcCkpOwotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyhz
dGVwSUQsIHN0ZXAubGFiZWwoKSksIG1fcGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6
RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8o
c3RlcElELCBzdGVwLmxhYmVsKCkpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2
ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojpy
ZWdpc3RlclJlZG9TdGVwKFVuZG9TdGVwJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IDUyOWMwNDY3MDMwLi4zZGNkN2UyZWMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6On5XZWJG
cmFtZUxvYWRlckNsaWVudCgpCiB7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZSAmJiBt
X2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCktPnBhZ2VJRCgp
OwpAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlCiAgICAgaWYgKCF3
ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAg
LSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQ
YWdlLT5wYWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBSRUxFQVNFX0xPRyhOZXR3
b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9u
YWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0
aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOwog
CiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIApAQCAtNTc3LDcgKzU3Nyw3IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGYWlsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7Cisg
ICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGlkRmFpbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fZnJhbWUtPmZyYW1l
SUQoKSk7CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCkBAIC05MDEsNyAr
OTAxLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBpZiAocmVxdWVzdGVyLmZyYW1l
SUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShyZXF1ZXN0ZXIuZnJhbWVJ
RCgpKSkKICAgICAgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPSByZXF1ZXN0
ZXIuZnJhbWVJRCgpOwogCi0gICAgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQgPSByZXF1ZXN0
ZXIucGFnZUlEKCkgJiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShyZXF1ZXN0ZXIu
cGFnZUlEKCkpID8gcmVxdWVzdGVyLnBhZ2VJRCgpIDogMDsKKyAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQ7CisgICAgaWYgKHJlcXVlc3Rlci5wYWdlSUQoKSAm
JiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5wYWdlSUQoKSkpCisg
ICAgICAgIG9yaWdpbmF0aW5nUGFnZUlEID0gcmVxdWVzdGVyLnBhZ2VJRCgpOwogCiAgICAgTmF2
aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGE7CiAgICAgbmF2aWdhdGlvbkFj
dGlvbkRhdGEubmF2aWdhdGlvblR5cGUgPSBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGY3M2FiOGNhNzNmLi5jOGZiMmFmMjEyNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmKTsKIAot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAppbmRleCBkMTZmZTg1
Nzc4NC4uMjA4YmI4OGEzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAg
dm9pZCBXZWJQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2
aWV3LCBpbnQgaW5kZXgpCiAgICAgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIHBsYXRmb3JtRGF0YTsK
ICAgICBzZXRVcFBsYXRmb3JtRGF0YShwYWdlQ29vcmRpbmF0ZXMsIHBsYXRmb3JtRGF0YSk7CiAK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUocGFnZUNvb3JkaW5hdGVz
LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCkudGV4dERp
cmVjdGlvbigpKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd1BvcHVwTWVu
dShwYWdlQ29vcmRpbmF0ZXMsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3BvcHVwQ2xpZW50LT5t
ZW51U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCkpLCBpdGVtcywgaW5kZXgsIHBsYXRmb3JtRGF0YSkp
OwogfQogCiB2b2lkIFdlYlBvcHVwTWVudTo6aGlkZSgpCkBAIC0xMTksNyArMTE5LDcgQEAgdm9p
ZCBXZWJQb3B1cE1lbnU6OmhpZGUoKQogICAgIGlmICghbV9wYWdlIHx8ICFtX3BvcHVwQ2xpZW50
KQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhpZGVQb3B1
cE1lbnUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkhpZGVQb3B1cE1lbnUoKSk7CiAgICAgbV9wYWdlLT5zZXRBY3RpdmVQb3B1
cE1lbnUobnVsbHB0cik7CiAgICAgbV9wb3B1cENsaWVudC0+cG9wdXBEaWRIaWRlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2Vh
cmNoUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCmluZGV4IDMzZDQ3NTZlZGEyLi5jMGU4YzE5MTQ0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNl
YXJjaFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBXZWJT
ZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUsIGNvbnN0IFZlY3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1z
KSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKSk7CiB9CiAKIHZvaWQgV2Vi
U2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgcmVzdWx0SXRlbXMpCkBAIC02OCw3ICs2OCw3IEBA
IHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNoZXMobmFt
ZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRSZWNlbnRTZWFyY2hlczo6UmVwbHkocmVz
dWx0SXRlbXMpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6TG9hZFJlY2VudFNlYXJjaGVzKG5hbWUpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpMb2FkUmVjZW50U2VhcmNoZXM6OlJlcGx5KHJlc3VsdEl0ZW1zKSk7CiB9CiAKIGJv
b2wgV2ViU2VhcmNoUG9wdXBNZW51OjplbmFibGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50LmgKaW5kZXggZjk5ODZlNDFjYTIuLmNmN2NiZjRmOWU3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRl
OgogCiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRp
OwotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIFF1aWNrTG9va0RvY3VtZW50RGF0YSBtX2RhdGE7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5j
cHAKaW5kZXggMjc2YjgwYmYyOGYuLjAyNDRkZTQzYWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC05Nyw0ICs5NywxNCBAQCB2
b2lkIERyYXdpbmdBcmVhOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXJJZk5lZWRlZCgpCiAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3
aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7
CiB9CiAKK0lQQzo6Q29ubmVjdGlvbiogRHJhd2luZ0FyZWE6Om1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgRHJhd2luZ0FyZWE6Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVudGlmaWVyLnRv
VUludDY0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggODA2OWExNThlZTIuLmVjOTUz
N2Q3MGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKICNp
bmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVj
dC5oPgpAQCAtNjUsNyArNjYsNyBAQCBjbGFzcyBMYXllclRyZWVIb3N0Owogc3RydWN0IFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIAotY2xh
c3MgRHJhd2luZ0FyZWEgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgRHJh
d2luZ0FyZWEgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByb3RlY3RlZCBJUEM6Ok1l
c3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKERyYXdpbmdBcmVhKTsKIApAQCAtMTUzLDExICsxNTQsNiBAQCBwdWJsaWM6
CiBwcm90ZWN0ZWQ6CiAgICAgRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlLCBEcmF3aW5nQXJl
YUlkZW50aWZpZXIsIFdlYlBhZ2UmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
c2VuZChjb25zdCBVJiBtZXNzYWdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2ViUGFnZS5z
ZW5kKG1lc3NhZ2UsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCB7IH0pOwotICAgIH0KLQogICAg
IERyYXdpbmdBcmVhVHlwZSBtX3R5cGU7CiAgICAgRHJhd2luZ0FyZWFJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CkBAIC0xNzAsNiArMTY2LDEwIEBAIHBy
aXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZl
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIAorICAgIC8v
IElQQzo6TWVzc2FnZVNlbmRlcgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICAv
LyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDY5MTgz
MGI1OTNjLi5jZDc4MjY4ZWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgRXZl
bnREaXNwYXRjaGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24pCiAgICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpFdmVudERpc3BhdGNoZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1ZS5nZXQo
KSwgdGhpcyk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBjYW5SdWJiZXJC
YW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRB
dFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
d2hlZWxFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRS
aWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9t
KQogewogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAg
IFBsYXRmb3JtV2hlZWxFdmVudCBwbGF0Zm9ybVdoZWVsRXZlbnQgPSBwbGF0Zm9ybSh3aGVlbEV2
ZW50KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVu
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbgogfQogCiAj
aWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXN0
dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYg
Z2VzdHVyZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1cmVFdmVudChQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZl
bnQpCiB7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFr
ZVJlZigqdGhpcyksIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSgpIG11dGFibGUgewogICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5kaXNwYXRjaEdlc3R1cmVFdmVudChwYWdlSUQsIGdlc3R1cmVFdmVudCk7
CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmdldFF1ZXVlZFRvdWNo
RXZlbnRzRm9yUGFnZShjb25zdCBXZWJQYWdlJiB3ZWJQYWdlLCBUb3VjaEUKICAgICBkZXN0aW5h
dGlvblF1ZXVlID0gbV90b3VjaEV2ZW50cy50YWtlKHdlYlBhZ2UucGFnZUlEKCkpOwogfQogCi12
b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdl
YktpdDo6V2ViVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjp0
b3VjaEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2
ZW50JiB0b3VjaEV2ZW50KQogewogICAgIGJvb2wgdXBkYXRlTGlzdFdhc0VtcHR5OwogICAgIHsK
QEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hUb3VjaEV2
ZW50cygpCiB9CiAjZW5kaWYKIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxF
dmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit2
b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBFdmVudERpc3BhdGNo
ZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZl
bnQmIHcKIH0KIAogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi12b2lkIEV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJH
ZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRj
aEdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCYgZ2VzdHVyZUV2ZW50KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAg
LTIzMiw5ICsyMzIsOSBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZl
bnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKQotdm9pZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRSZWNl
aXZlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJFdmVudCYgZXZlbnQsIGJvb2wgZGlk
SGFuZGxlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6c2VuZERpZFJlY2VpdmVFdmVudChQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiBldmVudCwgYm9vbCBkaWRIYW5k
bGVFdmVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oZXZlbnQudHlwZSgpKSwgZGlkSGFuZGxlRXZlbnQpLCBwYWdl
SUQpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19j
YXN0PHVpbnQzMl90PihldmVudC50eXBlKCkpLCBkaWRIYW5kbGVFdmVudCksIHBhZ2VJRC50b1VJ
bnQ2NCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDFkNDc3ODc3ZWFhLi5lMWJiYmQ0Nzk2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKICNpbmNs
dWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1doZWVsRXZlbnREZWx0YUZpbHRlci5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNzcsMzggKzc4LDM4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKLSAgICB2b2lkIHdoZWVs
RXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBjYW5SdWJi
ZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJh
bmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOworICAgIHZvaWQgd2hlZWxFdmVu
dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViV2hlZWxFdmVudCYsIGJvb2wgY2Fu
UnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJi
ZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsKICNpZiBFTkFCTEUoSU9T
X1RPVUNIX0VWRU5UUykKLSAgICB2b2lkIHRvdWNoRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJUb3VjaEV2ZW50Jik7CisgICAgdm9pZCB0b3VjaEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dF
U1RVUkVfRVZFTlRTKQotICAgIHZvaWQgZ2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViR2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBnZXN0dXJlRXZlbnQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAKIAogICAgIC8v
IFRoaXMgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB2b2lkIGRpc3BhdGNoV2hl
ZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKKyAgICB2b2lk
IGRpc3BhdGNoV2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViV2hl
ZWxFdmVudCYpOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgZGlzcGF0
Y2hUb3VjaEV2ZW50cygpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykK
LSAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
R2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBkaXNwYXRjaEdlc3R1cmVFdmVudChXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpCi0gICAgdm9pZCBzZW5kRGlkUmVjZWl2ZUV2ZW50KHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmLCBib29sIGRpZEhhbmRsZUV2ZW50KTsKKyAgICB2
b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdl
YkV2ZW50JiwgYm9vbCBkaWRIYW5kbGVFdmVudCk7CiAjZW5kaWYKIAogICAgIFJlZjxXb3JrUXVl
dWU+IG1fcXVldWU7CiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIExvY2sgbV9z
Y3JvbGxpbmdUcmVlc011dGV4OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3Jl
OjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOwogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OldoZWVsRXZlbnREZWx0YUZpbHRlcj4gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0
ZXI7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgTG9jayBtX3RvdWNoRXZlbnRz
TG9jazsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBUb3VjaEV2ZW50UXVldWU+IG1fdG91Y2hFdmVu
dHM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVG91Y2hFdmVudFF1ZXVl
PiBtX3RvdWNoRXZlbnRzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KaW5k
ZXggNWUxNTQzYzk4Y2MuLmFmOTA0YjQ1MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCkBA
IC0yMSwxMSArMjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gRXZlbnREaXNw
YXRjaGVyIHsKLSAgICBXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVl
bEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFu
ZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJv
dHRvbSkKKyAgICBXaGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2Vi
S2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wg
Y2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1
YmJlckJhbmRBdEJvdHRvbSkKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICBUb3Vj
aEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorICAg
IFRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlRv
dWNoRXZlbnQgZXZlbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQot
ICAgIEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50
IGV2ZW50KQorICAgIEdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggYjc1MmMx
YzU0ZDQuLmIyOTFkZjBiN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC03NSw3ICs3NSw3IEBAIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdl
LCBjb25zdCBXCiAgICAgLy8gRklYTUU6IFdoaWxlIHVzaW5nIHRoZSBoaWdoIGVuZCBvZiB0aGUg
cmFuZ2Ugb2YgRGlzcGxheUlEcyBtYWtlcyBhIGNvbGxpc2lvbiB3aXRoIHJlYWwsIG5vbi1SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYQogICAgIC8vIERpc3BsYXlJRHMgbGVzcyBsaWtlbHksIGl0
IGlzIG5vdCBlbnRpcmVseSBzYWZlIHRvIGhhdmUgYSBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YSBhbmQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEKICAgICAvLyBjb2VleGlzdCBpbiB0
aGUgc2FtZSBwcm9jZXNzLgotICAgIHdlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkpOworICAg
IHdlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoKQpAQCAtNDM0
LDcgKzQzNCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJz
KCkKICAgICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0b3JlRmx1c2hlciA9
IEJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLCBXVEZNb3ZlKGNvbW1pdEVuY29kZXIpLCBXVEZNb3ZlKGNv
bnRleHRzVG9GbHVzaCkpOwogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXIgPSBiYWNr
aW5nU3RvcmVGbHVzaGVyOwogCi0gICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJ
RCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgpOwogICAgIGRpc3BhdGNo
X2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNr
aW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXIt
PmZsdXNoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvci5tbQppbmRleCBkN2NkMjBmYTBjMC4uZDg4OWJlNDE4OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVT
Y3JvbGxpbmdDb29yZGluYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KQEAgLTUx
LDEyICs1MSwxMiBAQCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6UmVtb3RlU2Nyb2xsaW5n
Q29vcmRpbmF0b3IoV2ViUGFnZSogcGFnZSkKICAgICA6IEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IocGFnZS0+Y29yZVBhZ2UoKSkKICAgICAsIG1fd2ViUGFnZShwYWdlKQogewotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlLT5wYWdl
SUQoKSwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV93ZWJQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CiB9CiAKIFJl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp+UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IoKQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV93ZWJQYWdlLT5wYWdlSUQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogfQog
CiB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVRyZWVTdGF0ZUNvbW1p
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVX
ZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggMDU0NDA0NTZmNDEuLmM5NDBlMGNkMDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVXZWJJbnNwZWN0
b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlV2Vi
SW5zcGVjdG9yVUkuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
VUk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIHZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1l
c3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTZW5kTWVzc2FnZVRvQmFja2Vu
ZChtZXNzYWdlKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OndpbmRvd09iamVj
dENsZWFyZWQoKQpAQCAtMTAyLDEyICsxMDIsMTIgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JV
STo6ZnJvbnRlbmRMb2FkZWQoKQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpjaGFuZ2VT
aGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVjdCksIG1fcGFnZS5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTZXRTaGVl
dFJlY3QocmVjdCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzdGFydFdpbmRv
d0RyYWcoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTdGFydFdp
bmRvd0RyYWcoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0V2luZG93RHJhZygpKTsKIH0KIAogdm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCkBAIC0x
MjQsMzQgKzEyNCwzNCBAQCBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIFJl
bW90ZVdlYkluc3BlY3RvclVJOjp1c2VySW50ZXJmYWNlTGF5b3V0RAogCiB2b2lkIFJlbW90ZVdl
Ykluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgp
KTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQogewogICAg
IG1fcGFnZS5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQobnVsbHB0cik7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6RnJvbnRlbmREaWRDbG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6RnJvbnRlbmREaWRDbG9zZSgp
KTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6cmVvcGVuKCkKIHsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6UmVvcGVuKCksIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpSZW9w
ZW4oKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6Om9wZW5Jbk5ld1RhYihjb25z
dCBTdHJpbmcmIHVybCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
T3BlbkluTmV3VGFiKHVybCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpPcGVuSW5OZXdUYWIodXJsKSk7CiB9CiAK
IHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZl
QXMpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5h
bWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNh
dmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSk7CiB9CiAK
IHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVj
dG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCksIG1fcGFnZS5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpBcHBlbmQo
ZmlsZW5hbWUsIGNvbnRlbnQpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6aW5z
cGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKQEAgLTE2MSw3ICsxNjEs
NyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nKQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzaG93Q2Vy
dGlmaWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCiB7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNob3dDZXJ0aWZpY2F0ZShjZXJ0aWZp
Y2F0ZUluZm8pLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2hvd0NlcnRpZmljYXRlKGNlcnRpZmljYXRlSW5mbykp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rv
ci5jcHAKaW5kZXggYWJmY2VjZGIxZmIuLmNmOTNhOGQwODRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yLmNwcApAQCAtNjEsMTIgKzYxLDEyIEBAIFZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3I6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoV2ViUGFnZSYgd2ViUGFnZSkK
ICAgICAsIG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQoMCkKICNlbmRpZgog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksICp0
aGlzKTsKIH0KIAogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6flZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3IoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCkpOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVH
ZW9tZXRyeUNvbGxlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlE
KCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6
ZGlzcGF0Y2hEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZs
b2F0UG9pbnQgb3JpZ2luLCBGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgRmxvYXRSZWN0IHZpc2libGVD
b250ZW50UmVjdCwgYm9vbCBmaXRFbnRpcmVSZWN0LCBkb3VibGUgdmlld3BvcnRNaW5pbXVtU2Nh
bGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApp
bmRleCAyMTFkNjAxZWYwYi4uZmNlZTBkZmRmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAK
QEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIElEVG9IaXN0b3J5SXRlbU1hcCYgaWRUb0hpc3RvcnlJ
dGVtTWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVy
JiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCB1aW50NjRfdCBwYWdlSUQsIE92ZXJ3
cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0pCit2b2lkIFdlYkJhY2tGb3J3
YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0pCiB7
CiAgICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWlyIHNob3VsZCBub3QgYWxyZWFkeSBleGlzdCBp
biBvdXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQob3ZlcndyaXRlRXhpc3RpbmdJdGVtLCBvdmVy
d3JpdGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZZXMgfHwgIWlkVG9I
aXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwpAQCAtMTE2LDcgKzExNiw3IEBAIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGlu
dCBpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgT3B0aW9uYWw8QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gaXRlbUlEOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleChpdGVtSW5kZXgpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4OjpSZXBseShpdGVtSUQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleChpdGVtSW5kZXgpLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4OjpSZXBseShpdGVtSUQpKSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWl0ZW1JRCkKQEAgLTEzMSw3ICsxMzEsNyBA
QCB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RDb3VudCgpIGNvbnN0
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdW5zaWduZWQgYmFja0xpc3RDb3VudCA9IDA7Ci0g
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291
bnQoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNrTGlzdENvdW50OjpS
ZXBseShiYWNrTGlzdENvdW50KSwgbV9wYWdlLT5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Ut
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3Vu
dCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQ6OlJl
cGx5KGJhY2tMaXN0Q291bnQpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gYmFj
a0xpc3RDb3VudDsKQEAgLTE0Myw3ICsxNDMsNyBAQCB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAg
ICAgdW5zaWduZWQgZm9yd2FyZExpc3RDb3VudCA9IDA7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50OjpSZXBseShmb3J3YXJkTGlz
dENvdW50KSwgbV9wYWdlLT5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2UtPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudCgpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQ6OlJlcGx5KGZv
cndhcmRMaXN0Q291bnQpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICByZXR1cm4gZm9yd2Fy
ZExpc3RDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCmluZGV4IGYzYjFjOGFmNTQ4Li5kMWJhYWRi
OTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRDbGllbnQuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFllcywK
ICAgICAgICAgTm8KICAgICB9OwotICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5
SXRlbT4mJiwgdWludDY0X3QgcGFnZUlELCBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0pOworICAgIHZv
aWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRl
bnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCmlu
ZGV4IDE2MGVkZWZkNTlkLi4yZDlkMDg1ZTNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYkNv
b2tpZUphcjo6V2ViQ29va2llSmFyKCkKIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2Vi
Q29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtNjYsNyArNjYsNyBAQCBTdHJpbmcgV2ViQ29va2llSmFy
Ojpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNv
bnN0CiB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9j
dW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8q
IGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxv
YWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtODMsNyArODMsNyBAQCBib29sIFdlYkNvb2tpZUph
cjo6Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50KSBjb25z
dAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6
U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9
IGZhbHNlOwpAQCAtOTUsNyArOTUsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1
cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYQogYm9vbCBX
ZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mIHJhd0Nvb2tpZXMp
IGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwog
ICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJ
RCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggOTdkZDc2ZjY2NGMuLjU1OWJk
MGU1MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGNvb2tpZXMoV2Vi
Q29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldENv
b2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykgZmluYWw7CiAgICAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpE
b2N1bWVudCYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
UEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0Fj
Y2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25J
RCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNv
bnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA4OTBjNWU1NmFjMC4uNGFmNDk1
YTUxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVMaXN0ZW5lcklE
KCkKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBh
Z2UqIHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUpCiB7CiAgICAgYXV0byBmcmFtZSA9
IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KHN0YXRpY19jYXN0
PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oJmNvcmVGcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpKSk7
Ci0gICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVNYWluRnJh
bWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFtZShmcmFtZS0+ZnJhbWVJRCgp
KSk7CiAKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUgPSBjb3JlRnJhbWU7CiAgICAgZnJhbWUtPm1f
Y29yZUZyYW1lLT50cmVlKCkuc2V0TmFtZShTdHJpbmcoKSk7CkBAIC0xMjEsNyArMTIxLDcgQEAg
UmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUoV2ViUGFnZSog
cGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1
YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBIVE1MRnJhbWVP
d25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsKICAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0
ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOwotICAgIHBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQo
KSksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGF1dG8gY29y
ZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgpLCBvd25lckVsZW1lbnQsIGZy
YW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUg
PSBjb3JlRnJhbWUucHRyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBkNzdlNjM3MGMxMS4uYmRiOTJmNzRkYTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBXZWJJbnNwZWN0b3I6On5XZWJJbnNwZWN0b3IoKQogCiB2b2lkIFdl
Ykluc3BlY3Rvcjo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9vbCB1bmRlclRlc3QpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Ok9wZW5Mb2NhbEluc3BlY3RvckZyb250
ZW5kKGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpPcGVuTG9jYWxJbnNw
ZWN0b3JGcm9udGVuZChjYW5BdHRhY2hXaW5kb3coKSwgdW5kZXJUZXN0KSk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yOjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGVuY29k
ZWRDb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFdlYkluc3Bl
Y3Rvcjo6c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVj
dGlvbklkZW50aQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2VGcm9udGVuZENvbm5lY3Rpb24o
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpEaWRDbG9zZSgpKTsKIAogICAgIC8vIElmIHdlIHRyaWVkIHRvIGNsb3NlIHRoZSBmcm9udGVu
ZCBiZWZvcmUgaXQgd2FzIGNyZWF0ZWQsIHRoZW4gbm8gY29ubmVjdGlvbiBleGlzdHMgeWV0Lgog
ICAgIGlmIChtX2Zyb250ZW5kQ29ubmVjdGlvbikgewpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbigpCiAKIHZvaWQgV2ViSW5zcGVj
dG9yOjpicmluZ1RvRnJvbnQoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpC
cmluZ1RvRnJvbnQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCkpOwogfQogCiB2b2lkIFdlYklu
c3BlY3Rvcjo6d2hlbkZyb250ZW5kQ29ubmVjdGlvbkVzdGFibGlzaGVkKEZ1bmN0aW9uPHZvaWQo
KT4mJiBjYWxsYmFjaykKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c3Rv
cEVsZW1lbnRTZWxlY3Rpb24oKQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6ZWxlbWVudFNlbGVjdGlv
bkNoYW5nZWQoYm9vbCBhY3RpdmUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OkVsZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKGFjdGl2ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkVsZW1lbnRTZWxlY3Rp
b25DaGFuZ2VkKGFjdGl2ZSkpOwogfQogCiBib29sIFdlYkluc3BlY3Rvcjo6Y2FuQXR0YWNoV2lu
ZG93KCkKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6dXBkYXRlRG9ja2lu
Z0F2YWlsYWJpbGl0eSgpCiAKICAgICBtX3ByZXZpb3VzQ2FuQXR0YWNoID0gY2FuQXR0YWNoV2lu
ZG93OwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEF2YWlsYWJpbGl0
eUNoYW5nZWQoY2FuQXR0YWNoV2luZG93KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQXZhaWxhYmlsaXR5Q2hh
bmdlZChjYW5BdHRhY2hXaW5kb3cpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAK
aW5kZXggYzk2NTJlOTRhZjguLjI3NTU2ZDAxY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC01OCw3ICs1OCw3IEBA
IFdlYkluc3BlY3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlJiBwYWdlKQogI2VuZGlmCiB9
CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9u
TGV2ZWwpCit2b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKFBhZ2VJZGVu
dGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQg
aW5zcGVjdGlvbkxldmVsKQogewogICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci5yZXNldCgp
OwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnVwZGF0ZUNvbm5lY3Rp
b24oKQogICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPm9wZW4oKTsKICNlbmRpZgogCi0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEZyb250ZW5kQ29ubmVjdGlvbihjb25uZWN0aW9u
Q2xpZW50UG9ydCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpTZXRGcm9udGVuZENvbm5lY3Rpb24oY29ubmVjdGlvbkNsaWVudFBv
cnQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RDbGVhcmVkKCkKQEAgLTEyOCwxNCArMTI4LDE0IEBA
IHZvaWQgV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKCkKICAgICBzZXREb2NrU2lkZSht
X2RvY2tTaWRlKTsKICAgICBzZXRJc1Zpc2libGUobV9pc1Zpc2libGUpOwogCi0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6OkZyb250ZW5kTG9hZGVkKCksIG1faW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpGcm9udGVuZExvYWRl
ZCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogCiAgICAgYnJpbmdU
b0Zyb250KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnN0YXJ0V2luZG93RHJhZygpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0V2luZG93RHJhZygpLCBtX2lu
c3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
U3RhcnRXaW5kb3dEcmFnKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5
KQpAQCAtMTQ3LDEyICsxNDcsMTIgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5
KGZsb2F0IHgsIGZsb2F0IHkpCiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgp
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX2lu
c3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
QnJpbmdUb0Zyb250KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9
CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKIHsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9iYWNrZW5kQ29ubmVjdGlv
bikgewogICAgICAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5pbnZhbGlkYXRlKCk7CkBAIC0xNjcs
MTMgKzE2NywxMyBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdygpCiAgICAgaWYg
KG1fZnJvbnRlbmRIb3N0KQogICAgICAgICBtX2Zyb250ZW5kSG9zdC0+ZGlzY29ubmVjdENsaWVu
dCgpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IDA7CisgICAgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllciA9IHsgfTsKICAgICBtX3VuZGVyVGVzdCA9IGZhbHNlOwogfQogCiB2
b2lkIFdlYkluc3BlY3RvclVJOjpyZW9wZW4oKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpSZW9wZW4oKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6OlJlb3BlbigpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
LnRvVUludDY0KCkpOwogfQogCiBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
IFdlYkluc3BlY3RvclVJOjp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkgY29uc3QKQEAg
LTE4NiwxNiArMTg2LDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnJlcXVlc3RTZXREb2NrU2lk
ZShEb2NrU2lkZSBzaWRlKQogICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKTsKICAgICBzd2l0Y2ggKHNpZGUpIHsKICAgICBjYXNlIERvY2tTaWRlOjpVbmRvY2tl
ZDoKLSAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGV0YWNoKCksIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIpOworICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2goKSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2NrU2lk
ZTo6UmlnaHQ6Ci0gICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaFJpZ2h0KCksIG1faW5zcGVj
dGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hSaWdodCgp
LCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICBicmVhazsK
ICAgICBjYXNlIERvY2tTaWRlOjpMZWZ0OgotICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hM
ZWZ0KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICB3ZWJQcm9jZXNzLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpBdHRhY2hMZWZ0KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRvbToKLSAgICAgICAgd2ViUHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAg
ICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMjQzLDE3ICsy
NDMsMTcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0SXNWaXNpYmxlKGJvb2wgdmlzaWJsZSkK
IAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWdu
ZWQgaGVpZ2h0KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQoaGVpZ2h0
KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJ
bnNwZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCB3aWR0aCkKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh3
aWR0aCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2hhbmdl
U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6U2V0U2hlZXRSZWN0KHJlY3QpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0U2hlZXRSZWN0KHJlY3QpLCBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvclVJOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0yNjQsMjIgKzI2NCwy
MiBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwp
CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNhdmUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZv
cmNlU2F2ZUFzKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTYXZlKGZpbGVu
YW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyksIG1faW5zcGVjdGVkUGFn
ZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTYXZlKGZpbGVu
YW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyksIG1faW5zcGVjdGVkUGFn
ZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmFwcGVu
ZChjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNv
bnRlbnQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9pbnNwZWN0ZWRQYWdlSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVk
VVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVj
dGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpzaG93Q2VydGlmaWNhdGUoY29uc3Qg
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6OlNob3dDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZUluZm8pLCBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2hvd0Nl
cnRpZmljYXRlKGNlcnRpZmljYXRlSW5mbyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9V
SW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dDb25zb2xlKCkKQEAgLTM0
OSw3ICszNDksNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpwYWdlVW5wYXVzZWQoKQogCiB2b2lk
IFdlYkluc3BlY3RvclVJOjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNlbmRNZXNzYWdlVG9CYWNr
ZW5kKG1lc3NhZ2UpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1faW5zcGVj
dGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
LmgKaW5kZXggODM4MWJmMWNlZGUuLjk0MjRiZmUxZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CkBA
IC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZl
cmVuY2UpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQogCiAgICAgLy8gQ2FsbGVkIGJ5IFdl
Ykluc3BlY3RvclVJIG1lc3NhZ2VzCi0gICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKHVpbnQ2
NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5z
cGVjdGlvbkxldmVsKTsKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNp
Z25lZCBpbnNwZWN0aW9uTGV2ZWwpOwogICAgIHZvaWQgdXBkYXRlQ29ubmVjdGlvbigpOwogCiAg
ICAgdm9pZCBzaG93Q29uc29sZSgpOwpAQCAtMTMzLDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAg
Ly8gY29yZVBhZ2UoKSwgc2luY2Ugd2UgbWF5IG5lZWQgaXQgYWZ0ZXIgdGhlIGZyb250ZW5kJ3Mg
cGFnZSBoYXMgc3RhcnRlZCBkZXN0cnVjdGlvbi4KICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyKiBtX2Zyb250ZW5kQ29udHJvbGxlciB7IG51bGxwdHIgfTsKIAotICAgIHVpbnQ2NF90
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBib29sIG1fdW5kZXJUZXN0IHsg
ZmFsc2UgfTsKICAgICBib29sIG1fZG9ja2luZ1VuYXZhaWxhYmxlIHsgZmFsc2UgfTsKICAgICBi
b29sIG1faXNWaXNpYmxlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KaW5kZXggZGVh
MGZlNTg0ZDQuLjQzMTkwYWE4MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpAQCAtMjEsNyAr
MjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSSB7Ci0g
ICAgRXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwg
Ym9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKKyAgICBFc3RhYmxpc2hD
b25uZWN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVy
LCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogICAgIFVwZGF0ZUNv
bm5lY3Rpb24oKQogCiAgICAgQXR0YWNoZWRCb3R0b20oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzYmFhZmQxODU0Yy4uM2U2YWY3MzE3ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0z
NjAsNyArMzYwLDcgQEAgcHJpdmF0ZToKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6
UmVmQ291bnRlZExlYWtDb3VudGVyLCB3ZWJQYWdlQ291bnRlciwgKCJXZWJQYWdlIikpOwogCi1S
ZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRl
KElkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKIHsKICAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdl
SUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKIApAQCAtMzcwLDcgKzM3MCw3IEBAIFJlZjxXZWJQ
YWdlPiBXZWJQYWdlOjpjcmVhdGUodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1lCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLVdlYlBhZ2U6OldlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
K1dlYlBhZ2U6OldlYlBhZ2UoSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV92aWV3
U2l6ZShwYXJhbWV0ZXJzLnZpZXdTaXplKQogICAgICwgbV9hbHdheXNTaG93c0hvcml6b250YWxT
Y3JvbGxlciB7IHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgfQpAQCAt
NjAzLDE0ICs2MDMsMTQgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIG1fcGFnZS0+YWRkTGF5b3V0
TWlsZXN0b25lcyh7IERpZEZpcnN0TGF5b3V0LCBEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQgfSk7CiAKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCk7
Ci0gICAgd2ViUHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2U6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKKyAgICB3ZWJQcm9jZXNzLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCAqdGhpcyk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgZG9uZSBpbiB0aGUgb2JqZWN0IGNvbnN0cnVjdG9ycywgYW5kIHRoZSBvYmplY3RzIHRo
ZW1zZWx2ZXMgc2hvdWxkIGJlIG1lc3NhZ2UgcmVjZWl2ZXJzLgotICAgIHdlYlByb2Nlc3MuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKLSAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
SUQsICp0aGlzKTsKLSAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0
aGlzKTsKKyAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELnRvVUludDY0KCksICp0aGlz
KTsKKyAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgKnRoaXMp
OworICAgIHdlYlByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVXZWJJ
bnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCAq
dGhpcyk7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIHdlYlByb2Nlc3MuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOworICAgIHdlYlByb2Nlc3MuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCAqdGhpcyk7CiAjZW5kaWYKIAogI2lmbmRlZiBOREVC
VUcKQEAgLTgzMSw3ICs4MzEsNyBAQCBJUEM6OkNvbm5lY3Rpb24qIFdlYlBhZ2U6Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGFnZTo6bWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBwYWdlSUQoKTsKKyAgICByZXR1
cm4gcGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpA
QCAtMTQyMCwxMyArMTQyMCwxMyBAQCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkKICAgICBpZiAobV91
c2VBc3luY1Njcm9sbGluZykKICAgICAgICAgd2ViUHJvY2Vzcy5ldmVudERpc3BhdGNoZXIoKS5y
ZW1vdmVTY3JvbGxpbmdUcmVlRm9yUGFnZSh0aGlzKTsKICNlbmRpZgotICAgIHdlYlByb2Nlc3Mu
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZUlEKTsKKyAgICB3ZWJQcm9jZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgb2JqZWN0IGRl
c3RydWN0b3JzLCBhbmQgdGhlIG9iamVjdHMgdGhlbXNlbHZlcyBzaG91bGQgYmUgbWVzc2FnZSBy
ZWNlaXZlcnMuCi0gICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7Ci0gICAgd2Vi
UHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKLSAgICB3ZWJQcm9jZXNzLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIHdlYlByb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CisgICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOworICAgIHdlYlByb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgd2ViUHJvY2Vzcy5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKKyAgICB3ZWJQcm9jZXNzLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NP
QSkgfHwgUExBVEZPUk0oR1RLKQogICAgIG1fdmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3RvciA9
IG51bGxwdHI7CkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZAog
ICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKExvYWRpbmcsICJJbiBX
ZWJQcm9jZXNzIHBpZCAlaSwgV2ViUGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZpZ2F0aW5nIHRvIGJh
Y2svZm9yd2FyZCBVUkwgJXMiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIG1fcGFnZUlELCBpdGVt
LT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTG9hZGluZywgIkluIFdl
YlByb2Nlc3MgcGlkICVpLCBXZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFj
ay9mb3J3YXJkIFVSTCAlcyIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSwgaXRlbS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBBU1NFUlQo
IW1fcGVuZGluZ05hdmlnYXRpb25JRCk7CiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbmF2
aWdhdGlvbklEOwpAQCAtMjA3Niw3ICsyMDc2LDcgQEAgYm9vbCBXZWJQYWdlOjpzZXRGaXhlZExh
eW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoIXZpZXcgfHwgdmlldy0+Zml4
ZWRMYXlvdXRTaXplKCkgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTE9H
X1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdl
SUQgPDwgIiBzZXRGaXhlZExheW91dFNpemUgIiA8PCBzaXplKTsKKyAgICBMT0dfV0lUSF9TVFJF
QU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2
NCgpIDw8ICIgc2V0Rml4ZWRMYXlvdXRTaXplICIgPDwgc2l6ZSk7CiAgICAgdmlldy0+c2V0Rml4
ZWRMYXlvdXRTaXplKHNpemUpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpG
aXhlZExheW91dFNpemVEaWRDaGFuZ2Uoc2l6ZSkpOwpAQCAtMjUwNCw3ICsyNTA0LDcgQEAgY29u
c3QgV2ViRXZlbnQqIFdlYlBhZ2U6OmN1cnJlbnRFdmVudCgpCiB2b2lkIFdlYlBhZ2U6OmZyZWV6
ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogewogICAgIFJFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQYWdlIChQYWdlSUQ9JWxsdSkgLSBBZGRp
bmcgYSByZWFzb24gJWQgdG8gZnJlZXplIGxheWVyIHRyZWU7IGN1cnJlbnQgcmVhc29ucyBhcmUg
JWQiLAotICAgICAgICB0aGlzLCBtX3BhZ2VJRCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNv
biksIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50b1JhdygpKTsKKyAgICAgICAgdGhpcywgbV9w
YWdlSUQudG9VSW50NjQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJU
cmVlRnJlZXplUmVhc29ucy50b1JhdygpKTsKICAgICBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMu
YWRkKHJlYXNvbik7CiAgICAgdXBkYXRlRHJhd2luZ0FyZWFMYXllclRyZWVGcmVlemVTdGF0ZSgp
OwogfQpAQCAtMjUxMiw3ICsyNTEyLDcgQEAgdm9pZCBXZWJQYWdlOjpmcmVlemVMYXllclRyZWUo
TGF5ZXJUcmVlRnJlZXplUmVhc29uIHJlYXNvbikKIHZvaWQgV2ViUGFnZTo6dW5mcmVlemVMYXll
clRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uIHJlYXNvbikKIHsKICAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUGFnZSAoUGFnZUlEPSVsbHUpIC0gUmVtb3Zpbmcg
YSByZWFzb24gJWQgdG8gZnJlZXplIGxheWVyIHRyZWU7IGN1cnJlbnQgcmVhc29ucyBhcmUgJWQi
LAotICAgICAgICB0aGlzLCBtX3BhZ2VJRCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiks
IG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50b1JhdygpKTsKKyAgICAgICAgdGhpcywgbV9wYWdl
SUQudG9VSW50NjQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVl
RnJlZXplUmVhc29ucy50b1JhdygpKTsKICAgICBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMucmVt
b3ZlKHJlYXNvbik7CiAgICAgdXBkYXRlRHJhd2luZ0FyZWFMYXllclRyZWVGcmVlemVTdGF0ZSgp
OwogfQpAQCAtMzE2OCw3ICszMTY4LDcgQEAgdm9pZCBXZWJQYWdlOjp2aXNpYmlsaXR5RGlkQ2hh
bmdlKCkKIAogdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0
eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZp
dHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKQog
ewotICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2Ug
IiA8PCBwYWdlSUQoKSA8PCAiIHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBhY3Rpdml0eVN0YXRl
KTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdl
ICIgPDwgcGFnZUlEKCkudG9VSW50NjQoKSA8PCAiIHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBh
Y3Rpdml0eVN0YXRlKTsKIAogICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFj
dGl2aXR5U3RhdGU7CiAgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsKQEAgLTMx
NzYsNyArMzE3Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgQWN0CiAgICAgaWYgKGNoYW5nZWQp
CiAgICAgICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UobV9wYWdlLCAic2V0QWN0aXZpdHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJdTY0ICIgYnV0IFdl
YkNvcmUgcGFnZSB3YXMgbnVsbCIsIHBhZ2VJRCgpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KG1fcGFnZSwgInNldEFjdGl2aXR5U3RhdGUgY2FsbGVkIG9uICUiIFBSSXU2NCAiIGJ1dCBXZWJD
b3JlIHBhZ2Ugd2FzIG51bGwiLCBwYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBpZiAobV9wYWdl
KSB7CiAgICAgICAgIFNldEZvclNjb3BlPE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPj4g
Y3VycmVudGx5Q2hhbmdpbmdBY3Rpdml0eVN0YXRlIHsgbV9sYXN0QWN0aXZpdHlTdGF0ZUNoYW5n
ZXMsIGNoYW5nZWQgfTsKICAgICAgICAgbV9wYWdlLT5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2aXR5
U3RhdGUpOwpAQCAtNDMzOSw3ICs0MzM5LDcgQEAgdm9pZCBXZWJQYWdlOjptYWluRnJhbWVEaWRM
YXlvdXQoKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKSB7CiAgICAgICAgIEludFNpemUgbmV3Q29udGVudFNp
emUgPSBmcmFtZVZpZXctPmNvbnRlbnRzU2l6ZSgpOwotICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
VmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIG1haW5G
cmFtZURpZExheW91dCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IG5ld0NvbnRlbnRTaXpl
KTsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQ
YWdlICIgPDwgbV9wYWdlSUQudG9VSW50NjQoKSA8PCAiIG1haW5GcmFtZURpZExheW91dCBzZXR0
aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IG5ld0NvbnRlbnRTaXplKTsKICAgICAgICAgaWYgKG1f
dmlld3BvcnRDb25maWd1cmF0aW9uLnNldENvbnRlbnRzU2l6ZShuZXdDb250ZW50U2l6ZSkpCiAg
ICAgICAgICAgICB2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7CiAgICAgfQpAQCAtNTc0
Miw3ICs1NzQyLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFt
ZSkKICAgICAKICAgICBib29sIHZpZXdwb3J0Q2hhbmdlZCA9IGZhbHNlOwogCi0gICAgTE9HX1dJ
VEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQg
PDwgIiBkaWRDb21taXRMb2FkIHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgY29yZUZyYW1l
LT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJl
Y3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgZGlk
Q29tbWl0TG9hZCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IGNvcmVGcmFtZS0+dmlldygp
LT5jb250ZW50c1NpemUoKSk7CiAgICAgaWYgKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldENv
bnRlbnRzU2l6ZShjb3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkpKQogICAgICAgICB2
aWV3cG9ydENoYW5nZWQgPSB0cnVlOwogCkBAIC02MDU2LDcgKzYwNTYsNyBAQCB2b2lkIFdlYlBh
Z2U6OnNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgpCiAgICAgLy8gSWYgdGhhdCBpcyB0aGUgY2FzZSwg
anVzdCBzZW5kIHdoYXQgd2UgaGF2ZSAoaS5lLiBkb24ndCBpbmNsdWRlIHBvc3QtbGF5b3V0IGRh
dGEpIGFuZCB3YWl0IHVudGlsIHRoZQogICAgIC8vIG5leHQgbGF5ZXIgdHJlZSBjb21taXQgdG8g
Y29tcHV0ZSBhbmQgc2VuZCB0aGUgY29tcGxldGUgRWRpdG9yU3RhdGUgb3Zlci4KICAgICBhdXRv
IHN0YXRlID0gZWRpdG9yU3RhdGUoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkVkaXRvclN0YXRlQ2hhbmdlZChzdGF0ZSksIHBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChzdGF0ZSksIHBhZ2VJRCgpLnRvVUlu
dDY0KCkpOwogCiAgICAgaWYgKHN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQogICAgICAg
ICBzY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpOwpAQCAtNjIzNyw3ICs2MjM3LDcgQEAg
dm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6
Ok9iamVjdCogbWVzc2FnZUJvZHkpCiAKIHZvaWQgV2ViUGFnZTo6cG9zdE1lc3NhZ2VJZ25vcmlu
Z0Z1bGx5U3luY2hyb25vdXNNb2RlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2Jq
ZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okhh
bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpKSksIHBhZ2VJRCgpLCBJUEM6
OlNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hyb25vdXNNb2RlKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJv
ZHkpKSksIHBhZ2VJRCgpLnRvVUludDY0KCksIElQQzo6U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlT
eW5jaHJvbm91c01vZGUpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnBvc3RTeW5jaHJvbm91c01lc3Nh
Z2VGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNz
YWdlQm9keSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4NjhhZTkyZjJmYi4uZWFkN2I0OTZl
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY0
LDYgKzY0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ludFNpemVIYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXku
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bv
aW50ZXJJRC5oPgpAQCAtMjczLDcgKzI3NCw5IEBAIHVzaW5nIFdLRXZlbnRNb2RpZmllcnMgPSB1
aW50MzJfdDsKIAogY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYWdlPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWludDY0X3QgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHVzaW5nIElkZW50aWZpZXIgPSBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2U+IGNyZWF0ZShJ
ZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworCiAgICAgdmlydHVhbCB+
V2ViUGFnZSgpOwogCiAgICAgdm9pZCByZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJik7CkBAIC0yODMsNyArMjg2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBX
ZWJQYWdlKiBmcm9tQ29yZVBhZ2UoV2ViQ29yZTo6UGFnZSopOwogCiAgICAgV2ViQ29yZTo6UGFn
ZSogY29yZVBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KLSAgICB1aW50NjRf
dCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIElkZW50aWZpZXIgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UtPnNlc3Npb25JRCgpOyB9CiAgICAgYm9vbCB1
c2VzRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+dXNlc0VwaGVtZXJh
bFNlc3Npb24oKTsgfQogCkBAIC0xMTY2LDcgKzExNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
ZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYg
cmVwbHkpCiAgICAgewogICAgICAgICBjYW5jZWxHZXN0dXJlc0Jsb2NrZWRPblN5bmNocm9ub3Vz
UmVwbGllcygpOwotICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RG
TW92ZShyZXBseSksIG1fcGFnZUlELCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5j
T3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CisgICAgICAgIHJldHVy
biBzZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9wYWdlSUQudG9V
SW50NjQoKSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3Jt
UGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwogICAgIH0KIAogICAgIFdlYkNvcmU6OkRPTVBh
c3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllcik7CkBAIC0xMTk5LDcgKzEyMDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRVc2VySXNJbnRlcmFjdGluZyhib29sIHVzZXJJc0ludGVyYWN0aW5nKSB7IG1fdXNlcklzSW50
ZXJhY3RpbmcgPSB1c2VySXNJbnRlcmFjdGluZzsgfQogCiBwcml2YXRlOgotICAgIFdlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIFdlYlBh
Z2UoSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQg
dXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCkBAIC0xNTg1LDcgKzE1ODgsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCB1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNvbW1pdHRpbmdM
b2FkKCk7CiAKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBJZGVudGlmaWVyIG1fcGFnZUlE
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKICAgICBSZWZQ
dHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcAppbmRleCBkOTZh
N2Q3ZGRhOS4uYjc3OTliNGZiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXQoV2Vi
UGFnZSYgcGFnZSkKIAogU3RyaW5nIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OmlkZW50aWZpZXIo
KSBjb25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZS5wYWdlSUQo
KSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlLnBhZ2VJRCgpLnRvVUlu
dDY0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OmNvbm5lY3QoSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwmIGNoYW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5oCmluZGV4IDMwMWIxMzllMWQyLi42YjdlYzViMTZmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAgLTI2LDEzICsyNiwx
NSBAQAogI2lmbmRlZiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZV9oCiAjZGVmaW5l
IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlX2gKIAorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwog
fQogCiBAaW50ZXJmYWNlIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIDogTlNPYmpl
Y3QgewogICAgIFdlYktpdDo6V2ViUGFnZSogbV9wYWdlOwotICAgIHVpbnQ2NF90IG1fcGFnZUlE
OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIGlkIG1fcGFyZW50
OwogICAgIGJvb2wgbV9oYXNNYWluRnJhbWVQbHVnaW47CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXggM2QzZjM1NTUzZTYuLjYxNjVhMDFmZTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCkBAIC0x
NDgsNyArMTQ4LDcgQEAgLSAodm9pZClzZXRXZWJQYWdlOihXZWJLaXQ6OldlYlBhZ2UqKXBhZ2UK
ICAgICAgICAgYXV0byogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKICAgICAgICAgbV9oYXNN
YWluRnJhbWVQbHVnaW4gPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKSA/IGZyYW1lLT5kb2N1
bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkgOiBmYWxzZTsKICAgICB9IGVsc2UgewotICAgICAg
ICBtX3BhZ2VJRCA9IDA7CisgICAgICAgIG1fcGFnZUlEID0geyB9OwogICAgICAgICBtX2hhc01h
aW5GcmFtZVBsdWdpbiA9IGZhbHNlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYTA3Y2E0NWQzMzcuLmI2
YWU4NDMyN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQpAQCAtMjY2LDggKzI2Niw4IEBAIGJvb2wgV2ViUGFnZTo6ZXhlY3V0
ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbChjb25zdCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3ND
b21tCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBib29sIGNvbW1hbmRXYXNIYW5kbGVkQnlVSVByb2Nlc3MgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGVjdXRlU2F2ZWRDb21tYW5kQnlT
ZWxlY3Rvcihjb21tYW5kc1tpXS5jb21tYW5kTmFtZSksCi0gICAgICAgICAgICAgICAgICAgIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yOjpSZXBs
eShjb21tYW5kV2FzSGFuZGxlZEJ5VUlQcm9jZXNzKSwgbV9wYWdlSUQpOworICAgICAgICAgICAg
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVTYXZlZENvbW1hbmRC
eVNlbGVjdG9yKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKSwKKyAgICAgICAgICAgICAgICAgICAg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3I6OlJl
cGx5KGNvbW1hbmRXYXNIYW5kbGVkQnlVSVByb2Nlc3MpKTsKICAgICAgICAgICAgICAgICBldmVu
dFdhc0hhbmRsZWQgfD0gY29tbWFuZFdhc0hhbmRsZWRCeVVJUHJvY2VzczsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IDVjZTY5Y2NmODMzLi42MTc0YjBhM2JiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQog
ICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpLCAwKTsKICAgICB9KTsKIAotICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90
IG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbikgewor
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRv
bWFpbikgewogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoc2Vzc2lvbklELCBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7CiAgICAgfSk7CiAjZW5k
aWYKQEAgLTY2NywxNiArNjY3LDE2IEBAIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OmZvY3VzZWRXZWJQ
YWdlKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KICAgICAKLVdlYlBhZ2UqIFdlYlByb2Nlc3M6
OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdAorV2ViUGFnZSogV2ViUHJvY2Vzczo6d2Vi
UGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZU1h
cC5nZXQocGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lk
IFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICAvLyBJdCBpcyBuZWNlc3Nh
cnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5nIGEgd2luZG93
Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0
ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFs
IHdheS4gCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+Pjo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKICAgICBhdXRvIG9sZFBhZ2VJRCA9
IHBhcmFtZXRlcnMub2xkUGFnZUlEID8gcGFyYW1ldGVycy5vbGRQYWdlSUQudmFsdWUoKSA6IHBh
Z2VJRDsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXN1
bHQuaXRlcmF0b3ItPnZhbHVlKTsKQEAgLTY5Myw3ICs2OTMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYQogICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIAotdm9pZCBX
ZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIEFTU0VSVChtX3BhZ2VN
YXAuY29udGFpbnMocGFnZUlEKSk7CiAKQEAgLTE0NTAsNyArMTQ1MCw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24pCiAKICNl
bmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2
NF90LCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCkKK3Zv
aWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoUGFnZUlkZW50aWZpZXIs
IE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQogewogICAg
IGlmIChjaGFuZ2VkICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQogICAgICAg
ICB1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbjo6VmlzaWJpbGl0
eUhhc0NoYW5nZWQpOwpAQCAtMTYyNCwxMyArMTYyNCwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNl
bmRQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgVVJMJiB1cmwpCiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRDb2xsZWN0UHJl
d2FybUluZm9ybWF0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpQcm9jZXNzV2FybWlu
Zzo6Y29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
czo6cGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzczo6
cGFnZURpZEVudGVyV2luZG93KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3BhZ2Vz
SW5XaW5kb3dzLmFkZChwYWdlSUQpOwogICAgIG1fbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGlt
ZXIuc3RvcCgpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVhdmVXaW5kb3codWlu
dDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlV2lsbExlYXZlV2luZG93KFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3BhZ2VzSW5XaW5kb3dzLnJlbW92ZShwYWdlSUQp
OwogCkBAIC0xNjczLDcgKzE2NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuYWJsZVByaXZhdGVC
cm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGUpCiAgICAgaWYgKGVuYWJsZSkKICAgICAgICAg
ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKIAot
ICAgIFZlY3Rvcjx1aW50NjRfdD4gcGFnZUlEczsKKyAgICBWZWN0b3I8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRHM7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwKSB7CiAgICAgICAgIGlm
IChwYWdlLnZhbHVlKQogICAgICAgICAgICAgcGFnZUlEcy5hcHBlbmQocGFnZS5rZXkpOwpAQCAt
MTg1Myw3ICsxODUzLDcgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRD
TmV0d29yaygpCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nl
c3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50
NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKK3ZvaWQgV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVp
bnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQogewog
ICAgIC8vIFdlIGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0
aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQ
cm9jZXNzCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
IFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpD
b25uZWN0aW9uIGFzIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
NTI1ZGYxODNmMjIuLjE4NTdjZWEwZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CkBAIC0xNDUs
OSArMTQ2LDkgQEAgcHVibGljOgogCiAgICAgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKiB3ZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbm5lY3Rpb24uZ2V0
KCk7IH0KIAotICAgIFdlYlBhZ2UqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdDsKLSAg
ICB2b2lkIGNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOwotICAgIHZvaWQgcmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgcGFnZUlEKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgdm9pZCByZW1vdmVXZWJQYWdlKFBB
TDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgV2ViUGFnZSogZm9j
dXNlZFdlYlBhZ2UoKSBjb25zdDsKIAogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KQEAgLTE5OSw4ICsy
MDAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nl
c3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAKLSAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyh1
aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBw
YWdlSUQpOworICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyKTsKKyAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3coV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOwogCiAgICAgdm9pZCBub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKCk7CiAK
QEAgLTIxOSw3ICsyMjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVBhZ2Vz
KCk7CiAgICAgdm9pZCBnZXRBY3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0aW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgcGFnZUFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UodWludDY0X3QgcGFnZUlELCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCk7CisgICAgdm9pZCBwYWdlQWN0aXZpdHlTdGF0ZURpZENo
YW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWc+IGNoYW5nZWQpOwogCiAgICAgdm9pZCBzZXRIaWRkZW5QYWdlRE9NVGltZXJU
aHJvdHRsaW5nSW5jcmVhc2VMaW1pdChpbnQgbWlsbGlzZWNvbmRzKTsKIApAQCAtMzU5LDcgKzM2
MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1
aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vzc2lv
bklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKTsKICNlbmRpZgog
CkBAIC00NjAsNyArNDYxLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4+IG1fcGFnZUdyb3VwTWFwOwogICAgIFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZT4gbV9pbmplY3RlZEJ1bmRsZTsKIApAQCAtNTE0LDcgKzUxNSw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fcHJvY2Vzc0lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKIAotICAg
IEhhc2hTZXQ8dWludDY0X3Q+IG1fcGFnZXNJbldpbmRvd3M7CisgICAgSGFzaFNldDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gbV9wYWdlc0luV2luZG93czsKICAgICBXZWJDb3JlOjpUaW1lciBt
X25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiMzli
MzhjMTgzYy4uNTdhMjY1NjM0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
KHN0cnVjdCBXZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMp
CiAKICAgICAjIENyZWF0ZSBhIG5ldyBwYWdlLgotICAgIENyZWF0ZVdlYlBhZ2UodWludDY0X3Qg
bmV3UGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMpCisgICAgQ3JlYXRlV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBuZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
cGFnZUNyZWF0aW9uUGFyYW1ldGVycykKIAogICAgIFByZXdhcm1HbG9iYWxseSgpOwogICAgIFBy
ZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oc3RydWN0IFdlYkNvcmU6OlByZXdhcm1JbmZvcm1h
dGlvbiBwcmV3YXJtSW5mb3JtYXRpb24pCkBAIC0xMTEsNyArMTExLDcgQEAgbWVzc2FnZXMgLT4g
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgc3RydWN0IFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Np
b25JRCkKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
c3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQg
aW5pdGlhbFNlc3Npb25JRCkKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggMGJkOTBhZjkxODcuLjBlOTQyOTYwNDllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hT
ZXNzaW9uU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGMKIAogICAg
IC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBlcXVp
dmFsZW50IHRvIHdlYiBwYWdlIElEcwogICAgIC8vIHNvIHdlIGNhbiBnZXQgdGhlIHJpZ2h0IHBh
Z2UgaGVyZS4KLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViUGFnZShtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlk
ZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1lc3BhY2VJRCkpOwogICAgIGlmICghd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAppbmRleCAyOWJhN2Q4YThhMy4uZWNhZjY2NTE5ZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3Rv
cmFnZUFyZWEuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCmluZGV4IGIzOTA4MWU2ZTNjLi44MDk2MjM0MjQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVy
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlk
ZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVy
LnRvVUludDY0KCksIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWY8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
KQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoaWRlbnRpZmllciwgcXVvdGFJbkJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCmluZGV4IDY3NTdlM2I4MTg4Li4xYmZlYzQ4Yjg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CkBAIC0zOSw4ICszOSw4IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAg
c3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7
CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpOwogICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpOwogICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubW0KaW5kZXggZmM2NTk4NjMyNTIuLjFkNDNlMjdkM2Y0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5tbQpAQCAtMTcwLDcgKzE3MCw3IEBAIFJlZjxQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
PiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSYgcGFnZSkKIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoV2ViUGFnZSYgcGFnZSkKICAg
ICA6IG1fcGFnZSgmcGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksICp0aGlz
KTsKIH0KIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6flBsYXliYWNrU2Vzc2lvbk1hbmFnZXIo
KQpAQCAtMTkwLDEzICsxOTAsMTMgQEAgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6flBsYXliYWNr
U2Vzc2lvbk1hbmFnZXIoKQogICAgIG1fY2xpZW50Q291bnRzLmNsZWFyKCk7CiAKICAgICBpZiAo
bV9wYWdlKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmludmFsaWRhdGUoKQogewogICAgIEFTU0VS
VChtX3BhZ2UpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3Bh
Z2UgPSBudWxscHRyOwogfQogCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW0KICAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElk
KTsKIAogICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0VXBQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1f
Y29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCkBAIC0yOTEsNyArMjkxLDcgQEAg
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
KCkKICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CiAKICAgICBtX3BhZ2UtPnZp
ZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSk7
CiB9CiAKIHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNvbnRleHRJZEZvck1lZGlh
RWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCkBAIC0zMTgs
MjcgKzMxOCwyNyBAQCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpjdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1lbgogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBk
dXJhdGlvbikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50VGltZUNoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDdXJy
ZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwg
YW5jaG9yVGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1ZmZlcmVk
VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQogewot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpC
dWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OkJ1ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5
YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBsYXliYWNrU3RhcnRlZFRpbWUpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY29udGV4dElkLCBw
bGF5YmFja1N0YXJ0ZWRUaW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
cmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxh
eWJhY2tSYXRlKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0SWQsIGlzUGxheWluZywgcGxheWJhY2tS
YXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5aW5n
LCBwbGF5YmFja1JhdGUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVr
YWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpUaW1l
UmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxpdmVV
cGRhdGVJbnRlcnZhbCkKQEAgLTM0OSwzNyArMzQ5LDM3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3Qg
V2ViCiAgICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2VzLnJhbmdlcygpLmVuZChpKS50b0Rv
dWJsZSgpOwogICAgICAgICByYW5nZXNWZWN0b3IuYXBwZW5kKHsgc3RhcnQsIGVuZCB9KTsKICAg
ICB9Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFuZ2Vz
VmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUo
cmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSk7CiB9
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlGYXN0UmV2ZXJzZUNo
YW5nZWQoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDYW5QbGF5RmFzdFJl
dmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29u
dGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50
NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
Y29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVj
dGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3Rv
cjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
CiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9u
cywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4
dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZp
Y2VOYW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQoY29udGV4dElkLCBl
bmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxvY2FsaXplZERldmlj
ZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFu
Z2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdldFR5cGUp
LCBsb2NhbGl6ZWREZXZpY2VOYW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQo
Y29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFT
ZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJs
ZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4
dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBkaXNhYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNWQ2MTEwYjc5MDkuLmZkZWNkM2Mw
MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMTE3LDcgKzExNyw3IEBAIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoV2ViUGFnZSYgcGFnZSwgUGxheWJhY2tT
ZXNzaW9uTWFuCiAgICAgOiBtX3BhZ2UoJnBhZ2UpCiAgICAgLCBtX3BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIocGxheWJhY2tTZXNzaW9uTWFuYWdlcikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlLnBhZ2VJRCgpLnRvVUlu
dDY0KCksICp0aGlzKTsKIH0KIAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6flZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIoKQpAQCAtMTM4LDEzICsxMzgsMTMgQEAgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6flZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogICAgIG1fY2xpZW50Q291bnRzLmNsZWFyKCk7
CiAgICAgCiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKS50
b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjppbnZhbGlkYXRl
KCkKIHsKICAgICBBU1NFUlQobV9wYWdlKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50
NjQoKSk7CiAgICAgbV9wYWdlID0gbnVsbHB0cjsKIH0KIApAQCAtMjkwLDcgKzI5MCw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0Vs
ZW1lbnQoSFRNTFZpZGVvRWxlbWVuCiAgICAgICAgIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29u
dGV4dCgpLT5zZXRSb290TGF5ZXIodmlkZW9MYXllcik7CiAgICAgfQogCi0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldHVwRnVsbHNjcmVl
bldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5jb250
ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCksIGludGVyZmFj
ZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSwgc3RhbmRieSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4dElkLCBpbnRlcmZh
Y2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZpZGVvUmVjdCwgbV9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCksIGFsbG93
c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxW
aWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCkKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2Vi
Q29yZTo6SFRNTFZpZAogICAgICAgICByZXR1cm47CiAKICAgICBpbnRlcmZhY2Uuc2V0SXNBbmlt
YXRpbmcodHJ1ZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCwgaW5saW5lVmlkZW9GcmFtZSh2
aWRlb0VsZW1lbnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJ
ZCwgaW5saW5lVmlkZW9GcmFtZSh2aWRlb0VsZW1lbnQpKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24o
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFyZ2V0TW9kZSkKQEAgLTMyNCw3
ICszMjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3Jl
ZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OgogCiAgICAgaW50ZXJmYWNlLnNldFRh
cmdldElzRnVsbHNjcmVlbihmYWxzZSk7CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9u
VG9Nb2RlKGNvbnRleHRJZCwgdGFyZ2V0TW9kZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVs
bHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4dElkLCB0YXJnZXRNb2RlKSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2aWRlb0VsZW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTSh0
YXJnZXRNb2RlKTsKQEAgLTMzNiwxMyArMzM2LDEzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Omhhc1ZpZGVvQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pCiB7CiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1Zp
ZGVvKGNvbnRleHRJZCwgaGFzVmlkZW8pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1Zp
ZGVvKGNvbnRleHRJZCwgaGFzVmlkZW8pKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgRmxv
YXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7CiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZpZGVv
RGltZW5zaW9ucyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucyksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGNvbnRleHRJZCwgdmlkZW9EaW1lbnNpb25zKSk7CiB9
CiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eToKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVl
c3RVcGRhdGVJbmxpbmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCkKIAogICAgIGF1dG8mIG1vZGVs
ID0gZW5zdXJlTW9kZWwoY29udGV4dElkKTsKICAgICBJbnRSZWN0IGlubGluZVJlY3QgPSBpbmxp
bmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldElubGluZVJlY3QoY29udGV4
dElkLCBpbmxpbmVSZWN0LCBpbmxpbmVSZWN0ICE9IEludFJlY3QoMCwgMCwgMCwgMCkpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6U2V0SW5saW5lUmVjdChjb250ZXh0SWQsIGlubGluZVJlY3QsIGlubGlu
ZVJlY3QgIT0gSW50UmVjdCgwLCAwLCAwLCAwKSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCkBA
IC0zNzgsNyArMzc4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0Vmlk
ZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogICAgIG1vZGVsLT5zZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVk
VGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0
SWQsIHRydWUpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCB0cnVlKSk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogfQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogICAgICAgICAg
ICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCBmYWxzZSksIHBy
b3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhh
c1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250
ZXh0SWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQot
ICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgfSk7
CiAjZWxzZQogICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheWVySG9zdGlu
Z0NvbnRleHQoKS0+cm9vdExheWVyKCk7CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQog
ICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAg
ICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxz
Y3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
ICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICAgICAgfSk7CiAgICAgfSk7
CiAjZW5kaWYKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OndpbGxFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpLCB2aWRlb0VsZW1lbnQgPSBXVEZNb3ZlKHZpZGVvRWxlbWVudCksIGNvbnRleHRJZF0g
ewogICAgICAgICB2aWRlb0VsZW1lbnQtPndpbGxFeGl0RnVsbHNjcmVlbigpOwogICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVk
VG9FeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oY29u
dGV4dElkKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElk
LCBpbnRlcmZhY2VdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVs
bHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKICNlbHNlCiAgICAgbW9kZWwtPndhaXRGb3JQ
cmVwYXJlZEZvcklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBj
b250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdICgpIG11dGFibGUgewpAQCAtNDk4LDcgKzQ5OCw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0
X3QgY29udGV4dElkKQogICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLT5zZXRMYXll
ckhvc3RpbmdDb250ZXh0KG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVk
VGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC01NTUsNyArNTU1LDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3Qg
Y29udGV4dElkLCBib28KIAogICAgIGlmICghaXNQYWdlVmlzaWJsZSkKICAgICAgICAgbW9kZWwu
dmlkZW9FbGVtZW50KCktPnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGZhbHNlKTsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFy
ZWRUb1JldHVyblRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5saW5lVmlkZW9GcmFtZSgqbW9k
ZWwudmlkZW9FbGVtZW50KCkpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9SZXR1cm5U
b0lubGluZShjb250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxl
bWVudCgpKSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RSb3V0
ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKHVpbnQ2NF90IGNvbnRleHRJZCwgTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250
ZXh0VUlEOjpBc3luY1JlcGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCAyZTE5MGIwMzVmNy4uYjljZTc5ZDI3
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBOU1VSTCAqb3JpZ2luKFdlYlBhZ2Um
IHBhZ2UpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZXRhaW5QdHI8TlNB
cnJheTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxXZWJQYWdlPj4mIHBhZ2VNYXApCitzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk8
TlNTdHJpbmcgKj4+IGFjdGl2ZVBhZ2VzT3JpZ2lucyhjb25zdCBIYXNoTWFwPFBhZ2VJZGVudGlm
aWVyLCBSZWZQdHI8V2ViUGFnZT4+JiBwYWdlTWFwKQogewogICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlT3JpZ2lucyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXgg
OTg3MmMzMWJhNTguLjc5NjAyNGM4Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3Bw
CkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGUKICAgICBSZXNvdXJj
ZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShmcmFtZUxvYWRlci5uZXR3b3JraW5n
Q29udGV4dCgpLCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6
Q3JlZGVudGlhbHM6Ok9taXQgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBT
dG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogfQog
Ci12b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0
X3QgLyp3ZWJQYWdlSUQqLykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwYWdlTG9h
ZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmgKaW5kZXggNTViMzY5NzUzMDYuLjVmNjJmNzc3YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkUmVzb3VyY2Uo
V2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4mJik+
JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXZWJDb3JlOjpG
cmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYpIGZpbmFs
OwotICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSBmaW5hbDsK
KyAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBmaW5h
bDsKIAogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7CiAg
ICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9vbCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxMzg1NTgzYWYyOS4uYjE0MDNk
MDU2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBmaW5hbDsKICAgICBib29sIGhh
c1dlYlZpZXcoKSBjb25zdCBmaW5hbDsgLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCiAKLSAgICBP
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwogICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXgg
N2Y4NjlmMWRkY2IuLjdlYmEzYTk4YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpA
QCAtMjA5LDcgKzIwOSw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNs
aWVudChXZWJGcmFtZSAqd2ViRnJhbWUpCiB7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370573</attachid>
            <date>2019-05-24 08:56:39 -0700</date>
            <delta_ts>2019-05-24 09:49:26 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>198206_PageIdentifier_wip.patch</filename>
            <type>text/plain</type>
            <size>627881</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwNy4uYjNiY2FkZDlkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjIsNiArMTIz
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVu
dGlmaWVyPFQ+PiB7CiAgICAgdHlwZWRlZiBPYmplY3RJZGVudGlmaWVySGFzaDxUPiBIYXNoOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VD4mIGlkZW50aWZpZXIpCit7CisgICAg
dHMgPDwgaWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNmExZjVm
MWQ3MS4uYjZhOGY4OWFiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTcsNiArMTIxNyw3IEBACiAJCTQ2ODJEMjAwMUY3
OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RC
IC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkx
NEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJn
ZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2Mjcw
MEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFj
dERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEEyMDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTYyMDdE
NjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFj
dEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZCOTUxOTcyMDdENjM0MDAwQTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3
RDYzMkMwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1OTksNiArNzYwMCw3IEBACiAJ
CTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01SZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4
Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJh
Y3RET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RE
T01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEMyMDdENjMy
OTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxOTcsNiArMjAxOTksNyBAQAogCQkJCTkzMDJCMEJF
MEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLywKIAkJCQk3QTY3NEJEQTBG
OUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggKi8sCisJCQkJNDZCNjUw
REIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8sCiAJCQkJMkQ1QzlDRkIx
OUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5LmNwcCAqLywKIAkJCQkyRDVDOUNGQzE5QzdC
NTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCAqLywKIAkJCQkyRDVDOUNGRDE5QzdCNTJFMDBC
M0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCAqLywKQEAgLTI5ODcxLDYgKzI5ODc0
LDcgQEAKIAkJCQlCQzMwNUM3QTBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIxRUIwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRN
TE9MaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTdFOUIwQTFBODNFMzAwN0ZC
OEM1IC8qIEpTSFRNTE9wdEdyb3VwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZCNjUw
REQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODBFN0U5OTBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MT3B0aW9uRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDQ4QTI5QkYwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUQwMTczRDEyN0U4Mjg2MDAxNTAzNUYg
LyogSlNIVE1MT3V0cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAKaW5kZXggNzY5MTJjYWViOGEuLjBlN2Q1NDIwNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29sYXRlZFRyZWUoKSk7
CiB9CiAKLVJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRpYWxpemVQYWdl
VHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYgY2FjaGUpCitSZWY8QVhJ
c29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjppbml0aWFsaXplUGFnZVRyZWVGb3JJRChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmIGNhY2hlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIHRyZWUgPSBjYWNoZS0+Z2VuZXJhdGVJ
c29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIFJlZlB0cjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEIHRy
ZWVJRCkKICAgICByZXR1cm4gdHJlZUlEQ2FjaGUoKS5nZXQodHJlZUlEKTsKIH0KIAotUmVmPEFY
SXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRf
dCBwYWdlSUQpCitSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tl
cihzX2NhY2hlTG9jayk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBB
WElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpCiAgICAg
cmV0dXJuIG5ld1RyZWU7CiB9CiAKLVJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OnRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKQorUmVmUHRyPEFYSXNvbGF0ZWRUcmVl
PiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoc19jYWNoZUxvY2spOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aAppbmRleCBjMDc1ZDViMDE2Ny4uNmVlYzI2NDUxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUp
CiAKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZU5vZGUuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtNDMsOSArNDQsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlKCk7CiAgICAg
dmlydHVhbCB+QVhJc29sYXRlZFRyZWUoKTsKIAotICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRy
ZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRyZWVGb3JJRCh1
aW50NjRfdCBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBhZ2VJRChQYWdl
SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJl
ZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlkZW50aWZpZXIsIEFYT2JqZWN0Q2FjaGUm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJRCk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZFRyZWVOb2RlPiByb290Tm9kZSgpOwpAQCAt
NzAsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRUcmVlKCk7CiAKICAgICBzdGF0
aWMgSGFzaE1hcDxBWElzb2xhdGVkVHJlZUlELCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZUlE
Q2FjaGUoKTsKLSAgICBzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgUmVmPEFYSXNvbGF0ZWRUcmVl
Pj4mIHRyZWVQYWdlQ2FjaGUoKTsKKyAgICBzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwg
UmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKTsKIAogICAgIC8vIE9ubHkgYWNj
ZXNzIG9uIEFYIHRocmVhZCByZXF1ZXN0aW5nIGRhdGEuCiAgICAgSGFzaE1hcDxBWElELCBSZWY8
QVhJc29sYXRlZFRyZWVOb2RlPj4gbV9yZWFkZXJUaHJlYWROb2RlTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggZTcwYTlmN2ZlNTUuLmQzNTQxNjczZWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTc3NjYsNyArNzc2Niw3IEBAIExvZ2dlciYgRG9jdW1lbnQ6OmxvZ2dlcigp
CiAgICAgcmV0dXJuICptX2xvZ2dlcjsKIH0KICAgICAKLU9wdGlvbmFsPHVpbnQ2NF90PiBEb2N1
bWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBEb2N1bWVudDo6
cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGMwNzY1NTY1MDZhLi5hMjQ4MWRm
OGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJN
ZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUg
Ik9yaWVudGF0aW9uTm90aWZpZXIuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgogI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgpAQCAtNjM1LDcgKzYzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICAgdm9pZCBj
bGVhckFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBj
b25zdDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7CiAgICAg
Ly8gdG8gZ2V0IHZpc3VhbGx5IG9yZGVyZWQgaGVicmV3IGFuZCBhcmFiaWMgcGFnZXMgcmlnaHQK
ICAgICB2b2lkIHNldFZpc3VhbGx5T3JkZXJlZCgpOwogICAgIGJvb2wgdmlzdWFsbHlPcmRlcmVk
KCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxseU9yZGVyZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5jcHAKaW5kZXggYjFiZWQ4ZjAzMmYuLjMzZTI3ODYzODM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpj
b29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgYXV0
byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3Vt
ZW50LCB1cmwpOwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJh
bWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJ
RCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTExMCw3ICsxMTAsNyBA
QCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvYwogdm9pZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAg
IGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29s
IENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQmKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vz
c2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4g
Q29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Np
b25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1CiBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1
bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgU3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHUKIGJv
b2wgQ29va2llSmFyOjpnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBjb29raWVzKSBjb25zdAogewogICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7Cisg
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUg
PSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkucGFnZUlEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggMGRiMDdjNmQx
MmUuLjI4MWY4NGM0OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llcyhE
b2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0OwotICAg
IHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tp
ZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNz
aW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+JikgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRmMGJiODZkZGQ1Li4xZjdhMjlj
NGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZnJhbWVMb2Fk
ZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9w
dDsgfQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVjMzkxMjdhMWFkLi4wNzQ4NzYxMThkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWls
ZXN0b25lLmgiCiAjaW5jbHVkZSAiTGlua0ljb24uaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTEyNiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikgPSAwOwog
Ci0gICAgdmlydHVhbCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDhhODIzODFmMDE4Li40NWZlYjYzNWY3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCisjaW5jbHVkZSAiUGFn
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1
ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LmgiCkBAIC01Nyw3ICs1OCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExvYWRlclN0
cmF0ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlKEZyYW1lJiwg
Q2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
JiYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
RnJhbWVMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3Rv
cjxjaGFyPiYgZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1
aW50NjRfdCB3ZWJQYWdlSUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZUxvYWRDb21wbGV0
ZWQoUGFnZUlkZW50aWZpZXIpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUmVzb3Vy
Y2VMb2FkZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoUmVzb3Vy
Y2VMb2FkZXImLCBib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFj
dGlvbi5jcHAKaW5kZXggNzc0NTAwMWU3OGEuLmYyNmE5YWFmMmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIE5hdmlnYXRpb25BY3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVzdGVyKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fdXJsIHsgVVJMIHsgZG9jdW1lbnQudXJsKCkg
fSB9CiAgICAgLCBtX29yaWdpbiB7IG1ha2VSZWZQdHIoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KSkgfQotICAgICwgbV9wYWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBz
dGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQo
KS52YWx1ZU9yKDApLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlE
KCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjx1aW50NjRfdCwgdWludDY0X3Q+KDAsIDAp
IH0KKyAgICAsIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIgeyBkb2N1bWVudC5mcmFtZSgpID8gc3Rk
OjptYWtlX3BhaXIoZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCku
dmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5j
bGllbnQoKS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjxQYWdlSWRlbnRp
ZmllciwgdWludDY0X3Q+KHsgfSwgMCkgfQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uaAppbmRleCAxYTQ0ZjkxZDM2OC4uZWQ3ZDA5Y2YyODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTYzLDE0ICs2
NCwxNCBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYp
OwogICAgIE5hdmlnYXRpb25BY3Rpb24mIG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwog
Ci0gICAgdXNpbmcgUGFnZUlEQW5kRnJhbWVJRFBhaXIgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyog
cGFnZUlEICovLCB1aW50NjRfdCAvKiBmcmFtZUlEICovPjsKKyAgICB1c2luZyBQYWdlSURBbmRG
cmFtZUlEUGFpciA9IHN0ZDo6cGFpcjxQYWdlSWRlbnRpZmllciwgdWludDY0X3QgLyogZnJhbWVJ
RCAqLz47CiAgICAgY2xhc3MgUmVxdWVzdGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlcXVl
c3Rlcihjb25zdCBEb2N1bWVudCYpOwogCiAgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KICAgICAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5
T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fb3JpZ2luOyB9Ci0gICAgICAgIHVpbnQ2NF90IHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KKyAg
ICAgICAgUGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRG
cmFtZUlEUGFpci5maXJzdDsgfQogICAgICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5zZWNvbmQ7IH0KICAgICBwcml2YXRlOgogICAg
ICAgICBVUkwgbV91cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmNwcAppbmRleCAxNGJjMmYzYmVlZi4uZmZhZGExYzQ1YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNjAsNyArNjAsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzVXBkYXRlZENhbGxiYWNr
KFdURjo6RnVuY3Rpb248dm9pZChWZWN0bwogICAgIG1fbm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKG5vdGlmaWNhdGlvbkNhbGxiYWNrKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFdURjo6RnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbik+JiYgY2FsbGJhY2spCit2b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
Q2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlk
ZW50aWZpZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9t
YWluKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIW1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKTsKICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXJDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJl
c29sdXRpb24oY29uc3QgRG9jCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9j
dW1lbnQmIG9wZW5lckRvY3VtZW50KQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVu
dGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQogewogICAgIGF1
dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7CiAgICAgUmVnaXN0cmFibGVEb21h
aW4gb3BlbmVyRG9tYWluIHsgb3BlbmVyVXJsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGM0NjYxYjA0NzYwLi5kZTFjOTRhNzJjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzQWN0aXZpdHlSZWNvcmQu
aCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3MuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3Rh
dGlzdGljc0ZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291
cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVpbnQ2NF90LCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFBhZ2VJZGVudGlmaWVyLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvZ1VzZXJJ
bnRlcmFjdGlvbk5vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TG9nV2ViU29ja2V0TG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBXYWxsVGltZSk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TG9nU3VicmVzb3VyY2VMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIFdhbGxUaW1lKT4mJik7CkBAIC05NCwxMyArOTUsMTMgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIERv
Y3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3Vt
ZW50JiBvcGVuZXJEb2N1bWVudCk7CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVE
b21haW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwog
ICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdURjo6V2FsbFRpbWU+IG1fbGFzdFJlcG9y
dGVkVXNlckludGVyYWN0aW9uTWFwOwogICAgIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYpPiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwotICAgIEZ1bmN0aW9u
PHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdWludDY0X3Qs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
Jik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrOwogICAgIEZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fbG9n
VXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dXZWJTb2NrZXRMb2FkaW5nTm90aWZpY2F0aW9uQ2Fs
bGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dTdWJy
ZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCmluZGV4IGYzNTM5MGM4YzNhLi41MmIyZTk0YjdlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCkBAIC00ODYsOCArNDg2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVm
UHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmls
ZW5hbWVzICovKSA9IDA7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypz
dWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywg
dWludDY0X3QgLypmcmFtZUlEKi8sIHVpbnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVn
aXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYg
Lyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0X3QgLypwYWdl
SUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duOjpObyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21h
aW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRp
ZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywg
UmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJ
RCovLCBQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpO
bywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7IH0KICNlbmRpZgogCiAjaWYgRU5B
QkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2xvYmFsRnJhbWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1l
SWRlbnRpZmllci5oCmluZGV4IDE1NmM5Y2QyMDVkLi4wZDdiM2RiZjcyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCkBAIC0yNSwxMyArMjUsMTQgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZyYW1lIGlkZW50
aWZpZXIgdGhhdCBpcyB1bmlxdWUgYWNyb3NzIGFsbCBXZWJDb250ZW50IHByb2Nlc3Nlcy4KIHN0
cnVjdCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgewotICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICBQ
YWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgdWludDY0X3QgZnJhbWVJRDsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTQ3LDcg
KzQ4LDcgQEAgdm9pZCBHbG9iYWxGcmFtZUlkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPEdsb2JhbEZyYW1l
SWRlbnRpZmllcj4gR2xvYmFsRnJhbWVJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgZGVjb2RlciA+PiBwYWdlSUQ7CiAgICAgaWYgKCFwYWdl
SUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVu
dGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ0ZDVmOGQy
OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRpZmll
ci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51
bSBQYWdlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGFnZUlkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkuaAppbmRleCAxMTU5MDUwY2QzMi4uYjNkNmUzOGJjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
YW1lU2l0ZUluZm8uaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMzgsNyArMzksNyBAQCBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkgewogICAgIFNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm87CiAgICAgVVJMIHVybDsKICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMgeyBJbmNsdWRlU2VjdXJlQ29va2llczo6
Tm8gfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKQEAgLTcxLDggKzcyLDExIEBAIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5PiBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eTo6ZGVjb2RlKERlCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
ZnJhbWVJRCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQucGFnZUlEKSkKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEOworICAgIGRlY29kZXIgPj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5wYWdlSUQgPSAqcGFnZUlEOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluY2x1ZGVTZWN1cmVDb29raWVzKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CmluZGV4IDNiMThlNjJmZTM5Li42M2RmMDU4OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAt
NjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0K
ICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29v
a2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlEKSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3Jh
bnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7
CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7
CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAg
ICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChw
YWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vz
cy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAg
IGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1lSUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdl
U3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwog
ICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21h
aW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhm
cm9tRG9tYWluKSkKICAgICAgICAgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJl
dmFsZW50UmVzb3VyY2UuYWRkKHBhZ2VJRCwgdG9Eb21haW4pOwpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZygpCiAgICAgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9u
VGVzdE1vZGUgPSB0cnVlOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHksIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0CitPcHRpb25hbDxTZWNvbmRz
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdl
SUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2Uu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDAzMDIwMGRmOWM0Li4zZjM5YzhhY2Q4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRp
YWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdp
c3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNp
ZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9t
YWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4g
bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1aW50
NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFzaDx1
aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0
X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVsdEhh
c2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmlnYXRl
ZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dp
dGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRp
b25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDYzNzQwMzUyYzRhLi41NTdlOTc3YjRk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0yOTQsNyArMjk0
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkgKnVu
ZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1cm4gZmlsdGVyZWRDb29raWVz
OwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkKK3N0YXRpYyBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYg
KHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFn
ZUlEKSkKQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZgogfQogCiBl
bnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVI
VFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJ
bmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQogewogICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
KTsKIApAQCAtMzYzLDEyICszNjMsMTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENvb2tp
ZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENvb2tp
ZVN0b3JhZ2VEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
K3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
ckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywg
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNs
dWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29r
aWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcyk7
CiB9CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KICAgICByZXR1
cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwg
aGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFk
ZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRU
UE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIApAQCAtNDQzLDcgKzQ0Myw3IEBAIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFy
KCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4IDJj
MTE1NjhmY2U1Li5kNjBkNzBhODM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtNTksNyArNTksNyBAQCBz
dGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3RyaW5nKCk7CiB9
CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQg
Q29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBV
TlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC03NCw3
ICs3NCw3IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2Uo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzCiAgICAgY29va2llSmFyREIuc2V0Q29v
a2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmsp
OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVzRm9y
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29v
a2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7
CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1l
SUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMTEzLDcgKzExMyw3IEBAIGJvb2wg
Q29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuaXNF
bmFibGVkKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBj
b25zdAorYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdv
cmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDFmNzU4NzdhODJiLi5m
NjY0MWVmZWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtMjkx
LDcgKzI5MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBodHRwT25seUNvb2tpZUV4aXN0cyhjb25z
dCBHU0xpc3QqIGNvb2tpZXMsIGNvbnN0IGdjaGFyKiBuYW1lCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtNDQ0LDcg
KzQ0NCw3IEBAIFZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2ll
cyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gY29va2llczsKIH0KIAotYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShm
aXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01MTQsNyArNTE0LDcg
QEAgc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2UKICAgICByZXR1cm4geyBTdHJpbmc6OmZyb21VVEY4
KGNvb2tpZUhlYWRlci5nZXQoKSksIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7
CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKQEAgLTUyMiw3ICs1MjIsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcgogICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgdXJsLCBmYWxzZSwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNs
dWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNF
RF9QQVJBTShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRl
eCA4NzljMGIxOWU5Ni4uYjY4OWMzZTI1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNzE2LDcgKzcxNiw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnN5bmNTdG9yYWdlSW1tZWRp
YXRlbHkoKQogICAgIG1fZGF0YWJhc2UucnVuVmFjdXVtQ29tbWFuZCgpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25z
dCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03NDMsNyArNzQzLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
RnJhbWVJRCBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
RnJhbWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTc5NSw3ICs3OTUsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBPcGVuZXJQ
YWdlSUQgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBv
cGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAh
PSBvcGVuZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtODE0
LDcgKzgxNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluCiAgICAgZ3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3Zl
KG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYg
dG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTgyOCw3ICs4MjgsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiBzdQogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUo
c3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlE
LCBwcm9tcHRXYXNTaG93biwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJ
bnRlcm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlE
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFp
biwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24g
cHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IGJhYjJiN2FlYWI3Li5iZmMyMzM5Njg1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgK
QEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJE
b21haW4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMo
Y29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTEsOSAr
OTEsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYs
IEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3Rh
dHVzKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVz
KT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVk
aXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVy
YWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7CkBAIC0xNTIsNyArMTUyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgUmVzb3VyY2VMb2FkUHJldmFsZW5jZSk7CiAgICAgdW5zaWduZWQgcmVjdXJz
aXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWluc1RoYXRSZWRpcmVjdGVkVG9UaGlzRG9tYWluKHVu
c2lnbmVkIHByaW1hcnlEb21haW5JRCwgU3RkU2V0PHVuc2lnbmVkPiYgbm9uUHJldmFsZW50UmVk
aXJlY3Rpb25Tb3VyY2VzLCB1bnNpZ25lZCBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKTsKICAgICB2
b2lkIHNldERvbWFpbnNBc1ByZXZhbGVudChTdGRTZXQ8dW5zaWduZWQ+JiYpOwotICAgIHZvaWQg
Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCk+JiYpOwogICAgIHZvaWQgbWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxl
bnQoKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGVuc3VyZVByZXZhbGVudFJlc291
cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlRGF0YVJlY29yZHMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggMGVlN2Y5NjM4OTQuLmE1ZjI2MjRl
NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAgICAgICAgbV9wZXJzaXN0ZW50
U3RvcmFnZS0+c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpZZXMpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25z
dCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIyNCw3ICsyMjQsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgcwogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgRnJh
bWVJRCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Rv
cmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgRnJh
bWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9wZW5lclBhZ2VJ
RCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBvcGVuZXJE
b21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAhPSBvcGVu
ZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjg3LDcgKzI4
Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50
ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9wZW5l
ckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9t
YWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4m
JiBzdWJGCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZURv
bWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdh
c1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJG
cmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9t
YWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9t
YWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
Tm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5oCmluZGV4IDQ0ZWZiZjRkZWMxLi40NWY3ZTFiNzU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
eW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5l
clBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
Z3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiYpIG92ZXJyaWRlOwogCkBAIC05Nyw5ICs5Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2Fs
Y3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdy
YW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFt
ZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9t
YWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25z
dCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdh
dGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBv
dmVycmlkZTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5jcmVtZW50
UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiwgUmVzb3VyY2VMb2FkUHJldmFsZW5jZSk7CiAgICAgdW5zaWduZWQgcmVjdXJz
aXZlbHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmLCBIYXNoU2V0PFJlZGlyZWN0ZWRUb0RvbWFpbj4mLCB1bnNp
Z25lZCBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKSBjb25zdDsKLSAgICB2b2lkIGdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlv
bmFsPEZyYW1lSUQ+LCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAg
ICB2b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50KFJlc291cmNl
TG9hZFN0YXRpc3RpY3MmKTsKICAgICBib29sIGlzUHJldmFsZW50RHVlVG9EZWJ1Z01vZGUoUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5z
dXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMGI1Nzc1YmJiNzcuLmQ3Nzk4YjI1
ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC05MCw4
ICs5MCw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVp
bnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQg
PSB1aW50NjRfdDsKICAgICAKICAgICB2aXJ0dWFsIH5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoKTsKQEAgLTExMCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNT
dG9yYWdlSWZOZWVkZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNTdG9yYWdlSW1tZWRp
YXRlbHkoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgT3BlbmVyUGFnZUlELCBPcGVu
ZXJEb21haW4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpID0gMDsKICAgICB2b2lkIHJlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQg
Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CkBAIC0xNjEsOSArMTU5LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNEZWJ1Z01vZGVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9OwogICAgIHZvaWQgc2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1l
SUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4m
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3Rh
dHVzKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21h
aW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBi
b29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA4NzFiMTlkMmYw
Ny4uNjIyNDMwY2Q4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3IK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoc3ViRnJhbWVEb21h
aW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBA
IC0yOTgsMTIgKzI5OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcwogICAgIH0pOwogfQog
Ci1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCkKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBtX25ldHdvcmtTZXNz
aW9uID8gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkuaGFzU3RvcmFn
ZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlE
KSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2Fs
bEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMxNSw3ICszMTUsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NG
b3JGcmFtZUhhbmRsZXIoY29uc3QgUgogICAgIGNhbGxiYWNrKGZhbHNlKTsKIH0KIAotdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoc3ViRnJhbWVE
b21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpO
byk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWkKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVEb21haW4mJiBvcGVu
ZXJEb21haW4pCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBSZWdpc3RyYWJsZURv
bWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGUKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHBv
c3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFt
ZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mCiAgICAgfSk7CiB9CiAKLVN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAg
IGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00MDksNyArNDA5LDcgQEAgU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFu
dFN0b3JhZ2VBY2Nlc3MoY29uc3QKICAgICByZXR1cm4gaXNTdG9yYWdlR3JhbnRlZCA/IFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm87CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsR3JhbnRTdG9yYWdl
QWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRl
eCA4NzU5ZDYwMTY2YS4uNzljZjI0NjAxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhVHlwZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTgyLDggKzgzLDYgQEAg
cHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0g
ICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90
OwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkID0gV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQ7CiAgICAgdXNpbmcgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duID0g
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOwpAQCAtMTA0LDcgKzEwMyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJl
Y29yZHNSZW1vdmFsKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCk7CiAKLSAgICB2b2lkIGdyYW50U3RvcmFn
ZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJh
bWVJRCwgUGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bik+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYm
KTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsVGVybWluYXRlKCk7CiAKQEAgLTExOCwxMSAr
MTE3LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRl
bGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPiYm
LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CiAgICAgdm9pZCByZWdpc3RyYWJsZURvbWFp
bnNXaXRoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wgc2hvdWxk
Tm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYmKT4mJik7Ci0gICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgZ3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgUGFnZUlEKTsKKyAgICBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBncmFudFN0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBo
YXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3Qg
U3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+
LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIGJvb2wgaGFz
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQs
IFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwg
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJG
cmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNl
ZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VmVy
eVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTE2NiwxMSArMTY1LDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgbG9nVGVzdGluZ0V2
ZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgY2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRs
ZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFs
PEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNv
bnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFt
ZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nl
c3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNhbGxVcGRhdGVQcmV2
YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGNvbnN0IFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2Fs
bFJlbW92ZURvbWFpbnNIYW5kbGVyKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsK
LSAgICB2b2lkIGNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY2FsbEhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKTsK
IApAQCAtMTgyLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0
aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVu
c2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWdu
ZWQgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpIGNvbnN0OwogCiAgICAgdm9pZCBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbklu
TmVlZE9mU3RvcmFnZUFjY2VzcyYmLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFp
biYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBP
cGVuZXJEb21haW4mJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiwgU2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCAyYzk3MTgzNmFkYS4uNGQz
ZDE2OWY2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cmluZyByZWZlcnJlcjsKICAgICAgICAgU3RyaW5nIHVzZXJBZ2VudDsKICAg
ICAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwotICAgICAgICB1aW50NjRfdCBwYWdlSUQ7
CisgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgdWludDY0
X3QgZnJhbWVJRDsKICAgICAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggM2Q3MWY4ZjZiMWIuLjkyYzhiN2FlNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIKICAgICBBU1NF
UlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBhZ2VMb2FkQ29tcGxldGVkKHVp
bnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBh
Z2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKIHsKICAgICBzdG9wQWxs
TmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHdlYlBhZ2VJRCk7CiB9CkBAIC01MTIsNyAr
NTEyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2kKICAgICBsb2FkZXItPmNvbnZlcnRUb0Rv
d25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBz
ZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywg
Ym9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9j
ZXNzKCksIHNlc3Npb25JRCk7CiAgICAgYXV0byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Np
b24uY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnMKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5m
aXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAg
ICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24obmV0d29ya1By
b2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2V0Q29va2ll
c0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
Y29va2llU3RyaW5nKTsKQEAgLTU0MiwxMyArNTQyLDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3Mo
KSwgc2Vzc2lvbklEKS5jb29raWVzRW5hYmxlZCgpKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNz
KCksIHNlc3Npb25JRCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwg
c2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
OwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNl
Y29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nv
b2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHJlc3VsdDsKICAgICBzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0KTsKQEAgLTYzOCwx
MyArNjM4LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuc3VyZUxl
Z2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92
ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAo
YXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVTdG9yYWdlQWNjZXNzRm9y
RnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5z
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Y2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdlSUQpOwpAQCAtNjk3
LDcgKzY5Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlCiAgICAgfQogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvIG5l
dHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAtNzA5LDcgKzcwOSw3IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjCiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3Vi
RnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJvY2Vz
cygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKSB7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICBj
b21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzLCBX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIGlmIChhdXRvIG5ldHdv
cmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMo
KQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0K
IAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0X3QgcGFnZUlELCBSZXNv
dXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0
IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCitPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jlc291cmNl
TG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3Vy
Y2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCkKIHsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCkKICAgICBtX25ldHdv
cmtBY3Rpdml0eVRyYWNrZXJzLmNsZWFyKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0ZvclBhZ2UodWludDY0
X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5l
dHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAg
ICAgZm9yIChhdXRvJiBhY3Rpdml0eVRyYWNrZXIgOiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJz
KSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVRyYWNrZXIucGFnZUlEID09IHBhZ2VJRCkKQEAgLTgy
Niw3ICs4MjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxs
TmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NAogICAgIH0pOwogfQogCi1zaXpl
X3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290TmV0d29ya0FjdGl2aXR5
KHVpbnQ2NF90IHBhZ2VJRCkKK3NpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJl
dHVybiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0
byYgaXRlbSkgewogICAgICAgICByZXR1cm4gaXRlbS5pc1Jvb3RBY3Rpdml0eSAmJiBpdGVtLnBh
Z2VJRCA9PSBwYWdlSUQ7CkBAIC05MDMsMTcgKzkwMywxNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRzKCkKICAgICBtX25ldHdv
cmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUG9vbDo6Q2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dlYlByb2Nlc3NJZGVudGlm
aWVyKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBh
Z2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2Vi
UGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7CiAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBw
YWdlSUQsIG9sZFBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc1Jl
bW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc1JlbW92ZWQobV9jb25uZWN0aW9uLmdl
dCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNz
aW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VzKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklE
IG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZXMpCiB7CiAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKG1fY29ubmVjdGlv
bi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggY2JjN2JiZmU4ZjUuLjA2ZDU3OTY4ODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZE1hcC5oIgog
I2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KQEAgLTEzMyw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmV0d29ya0xvYWRJbmZv
cm1hdGlvbkJ5SUQucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0X3Qg
cGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVz
b3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CisgICAgT3B0aW9uYWw8TmV0d29ya0FjdGl2
aXR5VHJhY2tlcj4gc3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29sIGlzTWFpblJlc291
cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3Vy
Y2VMb2FkKFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5
VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUpOwogCiAgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1w
bCYgYmxvYlJlZ2lzdHJ5KCk7CkBAIC0xNDQsOSArMTQ1LDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q29ubmVjdGlvbkhhc1VwbG9hZHMoKTsKICAgICB2b2lkIGNsZWFyQ29ubmVjdGlvbkhhc1Vw
bG9hZHMoKTsKIAotICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCk7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVt
b3ZlZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHdlYlByb2Nl
c3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIHBhZ2VzKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9s
ZFBhZ2VJRCk7CisgICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2Vk
KFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiYgcGFnZXMpOwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsK
QEAgLTE3MCwxNiArMTcxLDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmVjb25uZWN0VG8odWlu
dDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYpOwogCiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCk7
CisgICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCk7CiAgICAgdm9pZCBzdGFydERvd25sb2FkKFBBTDo6
U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSB7IH0pOwogICAgIHZvaWQgY29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCi0gICAgdm9pZCBjb29r
aWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0ZvckRP
TShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjb29r
aWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYm
KTsKLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAg
ICB2b2lkIGdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CiAgICAgdm9p
ZCBkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
Y29va2llTmFtZSk7CiAKICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSk7CkBAIC0yMTgsMTcgKzIxOSwxNyBAQCBwcml2YXRlOgogICAgIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24mIGNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCByZW1vdmVTdG9y
YWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCk7Ci0gICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQg
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZp
Y0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIGxvZ1dlYlNvY2tldExv
YWRpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFz
dFNlZW4pOwogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1
YnJlc291cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4pOwog
ICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CisgICAgdm9pZCBoYXNTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0
X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7
CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklE
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3Qs
IGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtMjM5LDI5ICsyNDAsMjkgQEAg
cHJpdmF0ZToKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKCkgPSBkZWZh
dWx0OwogICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoY29uc3QgUmVzb3Vy
Y2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyJikgPSBkZWZhdWx0OwogICAgICAgICBSZXNvdXJjZU5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIoUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyJiYpID0g
ZGVmYXVsdDsKLSAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKHVpbnQ2NF90
IHBhZ2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKICAgICAgICAgICAgIDogcGFnZUlEIHsgcGFnZUlEIH0K
ICAgICAgICAgICAgICwgaXNSb290QWN0aXZpdHkgeyB0cnVlIH0KICAgICAgICAgICAgICwgbmV0
d29ya0FjdGl2aXR5IHsgTmV0d29ya0FjdGl2aXR5VHJhY2tlcjo6TGFiZWw6OkxvYWRQYWdlIH0K
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlU
cmFja2VyKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlE
KQorICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpCiAgICAg
ICAgICAgICA6IHBhZ2VJRCB7IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIHJlc291cmNlSUQgeyBy
ZXNvdXJjZUlEIH0KICAgICAgICAgICAgICwgbmV0d29ya0FjdGl2aXR5IHsgTmV0d29ya0FjdGl2
aXR5VHJhY2tlcjo6TGFiZWw6OkxvYWRSZXNvdXJjZSB9CiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRCB7IDAgfTsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEOwogICAgICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNl
SUQgeyAwIH07CiAgICAgICAgIGJvb2wgaXNSb290QWN0aXZpdHkgeyBmYWxzZSB9OwogICAgICAg
ICBOZXR3b3JrQWN0aXZpdHlUcmFja2VyIG5ldHdvcmtBY3Rpdml0eTsKICAgICB9OwogCiAgICAg
dm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmcoKTsKLSAgICB2b2lkIHN0b3BBbGxO
ZXR3b3JrQWN0aXZpdHlUcmFja2luZ0ZvclBhZ2UodWludDY0X3QgcGFnZUlEKTsKLSAgICBzaXpl
X3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkodWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHN0
b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0ZvclBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOworICAgIHNpemVfdCBmaW5kUm9vdE5ldHdvcmtBY3Rpdml0eShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7CiAgICAgc2l6ZV90IGZpbmROZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNl
TG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCk7CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9U
RV9VSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGY3
Yzk3ZWViYjIxLi44MzNlNzRmY2Y2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC0yNiwxOCArMjYsMTggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFBlcmZvcm1TeW5jaHJvbm91
c0xvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgVmVjdG9yPGNoYXI+IGRhdGEpIFN5bmNocm9ub3VzCiAg
ICAgTG9hZFBpbmcoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzKQogICAgIFJlbW92ZUxvYWRJZGVudGlmaWVyKHVpbnQ2NF90IHJlc291
cmNlTG9hZElkZW50aWZpZXIpCi0gICAgUGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFn
ZUlEKQorICAgIFBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBh
Z2VJRCkKICAgICBQcmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCiAgICAgUHJlY29ubmVjdFRv
KHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIFN0YXJ0RG93bmxvYWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQogICAg
IENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2Fk
SUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAKLSAgICBDb29raWVzRm9yRE9NKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywg
Ym9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwotICAgIFNldENvb2tpZXNG
cm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgU3RyaW5nIGNvb2tpZVN0
cmluZykKKyAgICBDb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZp
cnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwg
dXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRB
Y2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3RyaW5nIGNv
b2tpZVN0cmluZykKICAgICBDb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+IChib29sIGVuYWJsZWQpIFN5bmNocm9ub3VzCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgR2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBh
cnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIC0+
IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cworICAgIENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZp
cnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwg
dXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRB
Y2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cworICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKICAgICBEZWxldGVDb29raWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAogICAg
IFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQpA
QCAtNTYsMTYgKzU2LDE2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBFbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgUmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cGFnZUlEKTsKKyAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQpOworICAgIENsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQp
OwogICAgIExvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKICAgICBMb2dXZWJTb2NrZXRMb2FkaW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2FsbFRp
bWUgbGFzdFNlZW4pCiAgICAgTG9nU3VicmVzb3VyY2VMb2FkaW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pCiAg
ICAgTG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHNvdXJjZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdGFyZ2V0RG9tYWluKQogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZl
Y3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzKQotICAgIEhh
c1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9w
RnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGJvb2wg
aGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCi0gICAgUmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3Bl
bmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCisgICAg
SGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYworICAgIFJlcXVlc3RTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQp
IC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRl
ZCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRX
YXNTaG93bikgQXN5bmMKKyAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKICNlbmRpZgogCiAgICAg
QWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5n
IGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtODcsNyArODcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBTZXRXZWJQ
cm9jZXNzSWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRp
ZmllcikKIAotICAgIFdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQotICAgIFdlYlBhZ2VXYXNSZW1vdmVk
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQotICAgIFdlYlByb2Nl
c3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIFZlY3Rvcjx1aW50
NjRfdD4gcGFnZXMpCisgICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBvbGRQYWdlSUQpCisgICAgV2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCisgICAgV2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBwYWdlcykKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCBkMTRiMWRlOWQ5MS4uNDA5NzE0ZDY2
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZU9y
aWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICBy
ZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3RvY29sSXNCbG9iKCkgfHwgIW9y
aWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAotTmV0d29ya0xvYWRDaGVja2Vy
OjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBGZXRj
aE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsUmVxdWVzdEhl
YWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwg
UHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wg
aXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQorTmV0d29ya0xvYWRDaGVja2VyOjpO
ZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBGZXRjaE9w
dGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdp
biwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJv
b2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQogICAgIDogbV9vcHRpb25zKFdU
Rk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX25l
dHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMzFkMTFjM2E4YWUuLjU3ZGYxZGE0
NjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgogICAgIGVu
dW0gY2xhc3MgTG9hZFR5cGUgOiBib29sIHsgTWFpbkZyYW1lLCBPdGhlciB9OwogCi0gICAgTmV0
d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYs
IFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBp
c0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gTG9hZFR5
cGU6Ok90aGVyKTsKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmLCBXZWJD
b3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGlj
eSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2Us
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRU
eXBlIHJlcXVlc3RMb2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7CiAgICAgfk5ldHdvcmtMb2Fk
Q2hlY2tlcigpOwogCiAgICAgc3RydWN0IFJlZGlyZWN0aW9uVHJpcGxldCB7CkBAIC0xMjUsNyAr
MTI1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBt
X3N0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklE
OwogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKLSAgICB1aW50NjRf
dCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICB1
aW50NjRfdCBtX2ZyYW1lSUQ7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX29yaWdpbmFs
UmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBjaGVja3MuCiAgICAgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCBtX2ZpcnN0UmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBj
aGVja3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZFBhcmFtZXRlcnMuaAppbmRleCA4OTYzOTlkMTMzMi4uODk3MzBjZjlmZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CkBAIC0zOCw3ICszOSw3IEBAIGVudW0gY2xhc3MgUHJlY29ubmVj
dE9ubHkgeyBObywgWWVzIH07CiAKIGNsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVycyB7CiBwdWJs
aWM6Ci0gICAgdWludDY0X3Qgd2ViUGFnZUlEIHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHdlYlBhZ2VJRDsKICAgICB1aW50NjRfdCB3ZWJGcmFtZUlEIHsgMCB9OwogICAgIFdU
Rjo6UHJvY2Vzc0lEIHBhcmVudFBJRCB7IDAgfTsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQgeyBQQUw6OlNlc3Npb25JRDo6ZW1wdHlTZXNzaW9uSUQoKSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBhNWQ2ZjVjZmNjNy4u
MjlkMTdmOTlmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNl
cwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNv
bW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbW1p
dHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLT5jb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uKGZyb21Eb21haW4sIHRvRG9tYWluLCBwYWdlSUQpOwpAQCAtMTk1NCw3ICsxOTU0LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2Nr
ZXQoYm9vbCBhbGxvd3MsIENvbXBsZXQKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdl
SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hv
dWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0
aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQog
ewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxp
bmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3MKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZSh3
ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1
aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFJlc3VsdChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRU
eXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE5NzAsNyArMTk3MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNv
bnN0IFN0CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHdlYlBhZ2VJ
RCwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgU2hvdWxkU2FtcGxlOjpObyksIDApOwog
fQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1
aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNo
b3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9z
dGljTWVzc2FnZVdpdGhWYWx1ZShQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNp
Z25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAg
ICAgaWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhz
aG91bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47CkBAIC0yNjE5LDcgKzI2MTksNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyKQogICAgICAgICBzZXNzaW9uLT5yZW1vdmVLZXB0QWxpdmVMb2FkKGxvYWRlcik7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBvbGRQYWdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRk
ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQogewogICAg
IGlmICghcGFnZUlEIHx8ICFvbGRQYWdlSUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3Qg
YWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjM4LDEzICsyNjM4LDEzIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFBBTDo6U2Vzc2lvbklECiAgICAgICAgIHJldHVybiBzZXNzaW9uSUQ7CiAgICAgfSk7CiAK
LSAgICBzdG9yYWdlTWFuYWdlci5jcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQs
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAgc3RvcmFnZU1hbmFn
ZXIuYWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQsIGNv
bm5lY3Rpb24pOworICAgIHN0b3JhZ2VNYW5hZ2VyLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKHBhZ2VJRC50b1VJbnQ2NCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpOworICAgIHN0b3JhZ2VNYW5hZ2VyLmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZUNvbm5lY3Rpb24ocGFnZUlELnRvVUludDY0KCksIGNvbm5lY3Rpb24pOwogICAgIGlmIChwYWdl
SUQgIT0gb2xkUGFnZUlEKQotICAgICAgICBzdG9yYWdlTWFuYWdlci5jbG9uZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKG9sZFBhZ2VJRCwgcGFnZUlEKTsKKyAgICAgICAgc3RvcmFnZU1hbmFnZXIu
Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShvbGRQYWdlSUQudG9VSW50NjQoKSwgcGFnZUlE
LnRvVUludDY0KCkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3Zl
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIXBhZ2VJRCkgewogICAgICAgICBMT0df
RVJST1IoIkNhbm5vdCByZW1vdmUgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsKQEAgLTI2NTcsOCAr
MjY1Nyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uCiAgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBz
dG9yYWdlTWFuYWdlci5yZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0
aW9uKHBhZ2VJRCwgY29ubmVjdGlvbik7Ci0gICAgc3RvcmFnZU1hbmFnZXIuZGVzdHJveVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRCk7CisgICAgc3RvcmFnZU1hbmFnZXIucmVtb3ZlQWxs
b3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQudG9VSW50NjQoKSwg
Y29ubmVjdGlvbik7CisgICAgc3RvcmFnZU1hbmFnZXIuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2Vi
UHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0y
Njc0LDcgKzI2NzQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29u
bmVjdGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpLT5zdG9yYWdlTWFuYWdlcigpLnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oY29u
bmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hh
bmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Np
b25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZUlEcykKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVy
PiYgcGFnZUlEcykKIHsKICAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVl
SUQoKTsKICAgICBBU1NFUlQobV9zZXNzaW9uQnlDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rp
b25JRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CmluZGV4IDdhY2IzZjk2NzVjLi5lYmYzYjdmZTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJTZXJ2ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlcklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgpAQCAtMTM2LDggKzEzNyw2IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
OwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVpbnQ2NF90OwotICAgIHVzaW5n
IFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQgPSB1aW50NjRfdDsKIAogICAg
IE5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
Jik7CkBAIC0xOTAsOSArMTg5LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lKCk7CiAKICAg
ICAvLyBEaWFnbm9zdGljIG1lc3NhZ2VzIGxvZ2dpbmcuCi0gICAgdm9pZCBsb2dEaWFnbm9zdGlj
TWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxv
Z0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6RGlhZ25v
c3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAgIHZvaWQg
bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwg
dW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUsIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50Rmln
dXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3Q7
CkBAIC0yNTgsNyArMjU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklELCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFJl
ZGlyZWN0ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6OlNlc3Npb25JRCwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkRnJvbURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBib29sIHNob3Vs
ZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4mJik+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRl
TG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCkBAIC0y
NzEsMTAgKzI3MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVk
QnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0Nv
bnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCi0gICAgdm9pZCB3
ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVk
KElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAg
IHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZv
aWQgd2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHdlYlByb2Nlc3NXYXNEaXNjb25uZWN0
ZWQoSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQo
SVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
KTsKKyAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYpOwog
ICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpP
cmlnaW5EZXRhaWxzPiYmKT4mJik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggZDlmZWUwNzhmZTcuLmY1ZWY1MzAxMzQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTEzMSw3ICsxMzEsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgU2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0ZWRUb0RvbWFpbikgLT4gKCkgQXN5bmMK
ICAgICBTZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdGVkRnJvbURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBS
ZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gKCkgQXN5bmMKLSAgICBDb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtE
ZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4sIHVp
bnQ2NF90IHBhZ2VJRCkgLT4gKCkgQXN5bmMKKyAgICBDb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21h
aW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKCkgQXN5bmMKICAgICBTZXRD
cm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZyb21Eb21haW4sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q3Jvc3NT
aXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKCkgQXN5bmMKICAgICBEZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBp
bmNsdWRlSHR0cE9ubHlDb29raWVzKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmNwcAppbmRleCA1OGFhY2I5OTNkYi4uMzNjZGM0ZDE3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCkBAIC0xMDcsOCArMTA3LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndlYlBhZ2VJRCkpCisg
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHdl
YlBhZ2VJRDsKKyAgICBpZiAoIXdlYlBhZ2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJlc3VsdC53ZWJQYWdlSUQgPSAqd2ViUGFnZUlEOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQud2ViRnJhbWVJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBmZTI2NTM2ZjIxYy4uZjRjYmFlMmRhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE3NCwxOCAr
MTc0LDE4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgICAgIG1f
bmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVl
c3QoKSB9LCB0aGlzLCBbdGhpc10gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIFdURjo6
c3dpdGNoT24ocmVzdWx0LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3Rh
cnQ6IGVycm9yIGNoZWNraW5nIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlz
U3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQsIGVycm9yLmRvbWFpbiA9ICV7cHVibGlj
fXMsIGVycm9yLmNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291
cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCwgZXJy
b3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogZXJyb3IgY2hlY2tpbmcg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBw
YXJlbnRQSUQgPSAlZCwgZXJyb3IuZG9tYWluID0gJXtwdWJsaWN9cywgZXJyb3IuY29kZSA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0
aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVycm9yLmRvbWFp
bigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFlcnJvci5pc0NhbmNlbGxhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy0+ZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgW3RoaXNdIChOZXR3b3JrTG9hZENoZWNrZXI6OlJlZGlyZWN0aW9uVHJpcGxldCYg
dHJpcGxldCkgewogICAgICAgICAgICAgICAgICAgICB0aGlzLT5tX2lzV2FpdGluZ0NvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICB0aGlzLT53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUodHJpcGxldC5yZXF1
ZXN0KSwgV1RGTW92ZSh0cmlwbGV0LnJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUodHJpcGxldC5y
ZWRpcmVjdFJlc3BvbnNlKSk7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0YXJ0OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2VudCBiZWNhdXNlIHJlcXVlc3QgVVJM
IHdhcyBtb2RpZmllZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNo
cm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNN
YWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50
UElEKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6
IHN5bnRoZXRpYyByZWRpcmVjdCBzZW50IGJlY2F1c2UgcmVxdWVzdCBVUkwgd2FzIG1vZGlmaWVk
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwg
cGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFp
blJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJ
RCk7CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBbdGhpc10gKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy0+Y2FuVXNl
Q2FjaGUocmVxdWVzdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9w
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlzU3lu
Y2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJl
c291cmNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMg
PSAlZCwgcGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMt
PmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBh
cmVudFBJRCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5yZXRyaWV2ZUNhY2hlRW50
cnkocmVxdWVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgICAgIH0KQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c3RhcnQoKQogICAgIH0KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoYXQgY29kZSBwYXRoIG9u
Y2UgbV9uZXR3b3JrTG9hZENoZWNrZXIgaXMgdXNlZCBmb3IgYWxsIG5ldHdvcmsgbG9hZHMuCiAg
ICAgaWYgKGNhblVzZUNhY2hlKG9yaWdpbmFsUmVxdWVzdCgpKSkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50
UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hy
b25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CiAgICAgICAgIHJldHJpZXZlQ2FjaGVF
bnRyeShvcmlnaW5hbFJlcXVlc3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMjcs
MTMgKzIyNywxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVu
dHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgbG9hZGVyLT5sb2dT
bG93Q2FjaGVSZXRyaWV2ZUlmTmVlZGVkKGluZm8pOwogCiAgICAgICAgIGlmICghZW50cnkpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmVzb3VyY2Ugbm90IGluIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQs
IGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCks
IGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJy
ZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIG5vdCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAg
ICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXF1ZXN0KSwgRmlyc3RMb2Fk
OjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgaWYgKGVudHJ5LT5oYXNSZWFjaGVkUHJldmFs
ZW50UmVzb3VyY2VBZ2VDYXAoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBoYXMgcmVhY2hlZCBwcmV2YWxlbnQgcmVz
b3VyY2UgYWdlIGNhcCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNo
cm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVD
YWNoZUVudHJ5OiBSZXNvdXJjZSBoYXMgcmVhY2hlZCBwcmV2YWxlbnQgcmVzb3VyY2UgYWdlIGNh
cCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hy
b25vdXMoKSk7CiAgICAgICAgICAgICBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9u
ID0gV1RGTW92ZShlbnRyeSk7CiAgICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmV2YWxpZGF0
aW9uUmVxdWVzdCA9IG9yaWdpbmFsUmVxdWVzdCgpOwogICAgICAgICAgICAgbG9hZGVyLT5zdGFy
dE5ldHdvcmtMb2FkKFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIEZpcnN0TG9hZDo6WWVz
KTsKQEAgLTI0MSwyMSArMjQxLDIxIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRy
aWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICB9
CiAjZW5kaWYKICAgICAgICAgaWYgKGVudHJ5LT5yZWRpcmVjdFJlcXVlc3QoKSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBIYW5kbGlu
ZyByZWRpcmVjdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNo
ZUVudHJ5OiBIYW5kbGluZyByZWRpcmVjdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9
ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2
NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlz
TWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXItPmRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGxvYWRlci0+bV9wYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvICYmICFlbnRyeS0+cmVz
cG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVp
cmVkIGNlcnRpZmljYXRlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3lu
Y2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2
ZUNhY2hlRW50cnk6IFJlc291cmNlIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgY2VydGlmaWNhdGUg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVx
dWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAoZW50cnktPm5lZWRzVmFsaWRhdGlvbigpIHx8IHJlcXVlc3QuY2FjaGVQb2xp
Y3koKSA9PSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmVmcmVzaEFueUNh
Y2hlRGF0YSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVD
YWNoZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFp
blJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFZhbGlkYXRpbmcgY2FjaGUgZW50cnkgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3Vz
KCkpOwogICAgICAgICAgICAgbG9hZGVyLT52YWxpZGF0ZUNhY2hlRW50cnkoV1RGTW92ZShlbnRy
eSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmV0cmlldmVkIHJlc291cmNlIGZyb20g
Y2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBt
X3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBS
ZXRyaWV2ZWQgcmVzb3VyY2UgZnJvbSBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgIGxvYWRlci0+ZGlk
UmV0cmlldmVDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICB9KTsKIH0KQEAgLTI2Myw3
ICsyNjMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9h
ZCBsb2FkKQogewogICAgIGlmIChsb2FkID09IEZpcnN0TG9hZDo6WWVzKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291
cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKIAogICAgICAgICBjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoKTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IEZpcnN0TG9hCiAgICAgfQogICAgIGlmICghbmV0d29ya1Nlc3Npb24pIHsKICAgICAgICAgV1RG
TG9nQWx3YXlzKCJBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xvYWQgd2l0aCBhIHNlc3Np
b24gKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHBhcmFtZXRlcnMuc2Vz
c2lvbklELnNlc3Npb25JRCgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RCgic3RhcnROZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdp
dGggYSBzZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklE
PSUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vz
c2lvbklEKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydE5l
dHdvcmtMb2FkOiBBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xvYWQgd2l0aCBhIHNlc3Np
b24gdGhhdCBkb2VzIG5vdCBleGlzdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzZXNzaW9uSUQ9JSIgUFJJdTY0
ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNl
c3Npb25JRCgpKTsKICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLmxvZ0Rp
YWdub3N0aWNNZXNzYWdlKG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9n
Z2luZ0tleXM6OmludmFsaWRTZXNzaW9uSURLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpO
byk7CiAgICAgICAgIGRpZEZhaWxMb2FkaW5nKGludGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSkp
OwogICAgICAgICByZXR1cm47CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmly
c3RMb2EKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwogICAgIG1f
bmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm1fY29u
bmVjdGlvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vz
c2lvbik7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGRlc2Ny
aXB0aW9uID0gJXtwdWJsaWN9cykiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3
b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNsZWFudXAoTG9hZFJlc3VsdCByZXN1bHQpCkBAIC0zMjIsNyArMzIy
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNsZWFudXAoTG9hZFJlc3VsdCByZXN1
bHQpCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3dubG9hZChEb3du
bG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUkVMRUFTRV9MT0coTG9hZGluZywg
IkNvbnZlcnRpbmcgTmV0d29ya1Jlc291cmNlTG9hZGVyICVwIHRvIGRvd25sb2FkICUiIFBSSXU2
NCAiIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgZG93bmxvYWRJRC5kb3dubG9hZElEKCksIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIkNvbnZlcnRpbmcgTmV0d29y
a1Jlc291cmNlTG9hZGVyICVwIHRvIGRvd25sb2FkICUiIFBSSXU2NCAiIChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgdGhpcywgZG93bmxvYWRJRC5kb3dubG9hZElEKCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyKTsKICAgICAKICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHJlc291cmNlIGNhbWUg
ZnJvbSB0aGUgZGlzayBjYWNoZS4KICAgICBpZiAoIW1fbmV0d29ya0xvYWQpIHsKQEAgLTM0MCw3
ICszNDAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKQogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhYm9y
dDogQ2FuY2VsaW5nIHJlc291cmNlIGxvYWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLAotICAgICAgICBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIpOworICAgICAgICBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAKICAg
ICBpZiAobV9wYXJhbWV0ZXJzLm9wdGlvbnMua2VlcEFsaXZlICYmIG1fcmVzcG9uc2UuaXNOdWxs
KCkgJiYgIW1faXNLZXB0QWxpdmUpIHsKICAgICAgICAgbV9pc0tlcHRBbGl2ZSA9IHRydWU7CkBA
IC0zODQsMTIgKzM4NCwxMiBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50
ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiB4RgogICAgIH0KICAgICBj
YXNlIFhGcmFtZU9wdGlvbnNDb25mbGljdDogewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdl
ID0gIk11bHRpcGxlICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlcnMgd2l0aCBjb25mbGljdGluZyB2
YWx1ZXMgKCciICsgeEZyYW1lT3B0aW9ucyArICInKSBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcg
JyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJy4gRmFsbGluZyBi
YWNrIHRvICdERU5ZJy4iOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25z
b2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRD
b25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICBjYXNlIFhGcmFtZU9wdGlvbnNJbnZhbGlkOiB7CiAgICAgICAgIFN0cmluZyBl
cnJvck1lc3NhZ2UgPSAiSW52YWxpZCAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXIgZW5jb3VudGVy
ZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
ICsgIic6ICciICsgeEZyYW1lT3B0aW9ucyArICInIGlzIG5vdCBhIHJlY29nbml6ZWQgZGlyZWN0
aXZlLiBUaGUgaGVhZGVyIHdpbGwgYmUgaWdub3JlZC4iOwotICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAg
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRl
bnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwg
aWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgfQpAQCAtNDE2LDcgKzQxNiw3IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNl
c3RvcnNPclhGcmFtZU9wdGlvCiAgICAgICAgIFN0cmluZyB4RnJhbWVPcHRpb25zID0gbV9yZXNw
b25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlhGcmFtZU9wdGlvbnMpOwogICAg
ICAgICBpZiAoIXhGcmFtZU9wdGlvbnMuaXNOdWxsKCkgJiYgc2hvdWxkSW50ZXJydXB0TG9hZEZv
clhGcmFtZU9wdGlvbnMoeEZyYW1lT3B0aW9ucywgcmVzcG9uc2UudXJsKCkpKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIlJlZnVzZWQgdG8gZGlzcGxheSAnIiArIHJlc3Bv
bnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgaW4gYSBmcmFt
ZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0byAnIiArIHhGcmFtZU9wdGlvbnMg
KyAiJy4iOwotICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1l
c3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291
cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlm
aWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNl
c3RvcnNPclhGcmFtZU9wdGlvCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0
dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcmVj
ZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUi
IFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCByZWNlaXZlZFJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkpOwogCiAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAg
LTUwNSw3ICs1MDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bvbgogdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1Jl
Y2VpdmVkKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQnVmZmVy
OiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5zaXplKCk7CiAKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwpAQCAtNTM0LDcgKzUzNCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNS
ZWNlaXZlZCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5m
b3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTU2
OSw3ICs1NjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wg
PSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgZXJyb3IuaXNUaW1lb3V0KCks
IGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlzQWNjZXNzQ29udHJvbCgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0Fj
Y2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuaXNB
Y2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIGlmIChzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1v
dmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZpZXIoKSk7CkBAIC03MzEsNyArNzMxLDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOwogCiAgICAgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOwogCkBAIC05ODgsNiArOTg4LDExIEBAIHN0YXRp
YyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUp
CiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUudmFsdWUoKSkgOiBTdHJp
bmcoIk5vbmUiX3MpOwogfTsKIAorc3RhdGljIFN0cmluZyBlc2NhcGVJREZvckpTT04oY29uc3Qg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPyBT
dHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOworfTsK
Kwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9u
LCBzZXNzaW9uSUQoKSkpOwpAQCAtOTk4LDcgKzEwMDMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGxvZ0Nvb2tpZUluZm9y
bWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5h
bFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShv
cmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVl
c3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigpKTsK
IH0KIAotc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxv
Y2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDI1LDcgKzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBs
b2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXN0YXRpYyB2b2lk
IGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9i
amVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZv
cm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDg2LDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9p
ZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aQogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRp
ZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlv
biwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTEwOTksMTcgKzEx
MDQsMTcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9u
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJgogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNZXNz
YWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxv
bmcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VMZXZlbCwgbWVz
c2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsICBtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlkZW50aWZpZXIo
KSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogfQogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2VuZENTUFZpb2xhdGlvblJlcG9ydChVUkwmJiByZXBvcnRVUkws
IFJlZjxGb3JtRGF0YT4mJiByZXBvcnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2VuZENTUFZpb2xhdGlvblJlcG9ydCB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBXVEZNb3Zl
KHJlcG9ydFVSTCksIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZNb3ZlKHJlcG9ydCkgfSB9
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZW5kQ1NQVmlvbGF0aW9uUmVwb3J0IHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIFdURk1vdmUo
cmVwb3J0VVJMKSwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IFdURk1vdmUocmVwb3J0KSB9IH0s
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXZWJDb3Jl
OjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYgZXZlbnRJbml0KQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50IHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIFdURk1vdmUoZXZlbnRJbml0KSB9LCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbnF1ZXVl
U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBX
VEZNb3ZlKGV2ZW50SW5pdCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsK
IH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ1Nsb3dDYWNoZVJldHJpZXZlSWZO
ZWVkZWQoY29uc3QgTmV0d29ya0NhY2hlOjpDYWNoZTo6UmV0cmlldmVJbmZvJiBpbmZvKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggYThhMzAwNWMxNDIuLmE4ZjZkMzE1Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTg0LDcgKzg0
LDcgQEAgcHVibGljOgogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQ7IH0KICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQog
ICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRDsgfQotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25z
dCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViUGFnZUlEOyB9CiAKICAgICBzdHJ1Y3QgU3luY2hy
b25vdXNMb2FkRGF0YTsKIApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IHN0YXRpYyBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKLSAgICBzdGF0aWMgdm9pZCBs
b2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIE9wdGlv
bmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNhYmxlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3NDYXB0dXJlKCkgeyBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcyA9IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCBjN2YzODZiM2Q3Yy4uOGJiYzE2OTc4NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUVudHJ5LmgiCiAj
aW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291
cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KQEAgLTg0LDcgKzg1LDcgQEAgZW51bSBj
bGFzcyBVc2VEZWNpc2lvbiB7CiAgICAgTm9EdWVUb0V4cGlyZWRSZWRpcmVjdAogfTsKIAotdXNp
bmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50
NjRfdCAvKndlYkZyYW1lSUQqLz47Cit1c2luZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47CiAKIGNsYXNz
IENhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaAppbmRleCA5NjVjNmZhNjY0Yi4uMmRkMGU3ZDQ2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgK
QEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKIGNsYXNzIE5ldHdv
cmtEYXRhVGFza0NvY29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtEYXRhVGFzayB7CiAgICAgZnJp
ZW5kIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxO
ZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0Rh
dGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVu
dFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29k
aW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxk
UHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9w
dGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCisg
ICAgc3RhdGljIFJlZjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vz
c2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNr
ZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZy
YW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlm
Ziwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZy
YW1lTmF2aWdhdGlvbiwgbmV0d29ya0FjdGl2aXR5VHJhY2tlcikpOwogICAgIH0KQEAgLTcwLDEy
ICs3MCwxMiBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MoKSB7IHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljczsgfQogCiAgICAg
dWludDY0X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJRDsgfTsKLSAgICB1aW50
NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfTsKKyAgICBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfTsKIAogICAg
IFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE5l
dHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1Bv
bGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVj
b25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9u
YWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOworICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5l
dHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZp
bmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPik7CiAKICAgICBib29sIHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlv
bihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJik7CiAgICAgdm9pZCBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5kUmVx
dWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQoX19zdHJvbmcgTlNVUkxSZXF1ZXN0KiYsIGJvb2wgc2hv
dWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKTsKQEAgLTkz
LDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRGF0YVRhc2s+
IG1fdGFzazsKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3b3JrTG9hZE1l
dHJpY3M7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOwor
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIG1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNz
Q29va2llU3RvcmFnZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCAzNWU0NDNi
OWVlOS4uMjhhMDVlODBkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMTYwLDcgKzE2MCw3
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVRhc2tXaXRoRmlyc3RQYXJ0eUZvclNhbWVTaXRlQ29va2ll
cyhOU1VSTFNlc3Npb25EYXRhVGFzayogdGFzCiAjZW5kaWYKIH0KIAotTmV0d29ya0RhdGFUYXNr
Q29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3
b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBX
ZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2Rp
bmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQ
cmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFp
bkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29y
a0FjdGl2aXR5VHJhY2tlcikKK05ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tD
b2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFs
cywgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6
Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYs
IGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVj
dE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5h
dmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0
eVRyYWNrZXIpCiAgICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0
V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24pCiAgICAgLCBtX2ZyYW1lSUQoZnJhbWVJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKQEAg
LTIzNiw3ICsyMzYsNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29j
b2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogICAgIGlmIChzaG91bGRC
bG9ja0Nvb2tpZXMpIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgaWYgKG1f
c2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZy
YW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIs
IHRoaXMsIHBhZ2VJRCwgZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRp
Zmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywg
IiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQg
PSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiBCbG9ja2luZyBjb29raWVzIGZv
ciBVUkwgJXMiLCB0aGlzLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgKHVuc2lnbmVkIGxv
bmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcu
VVRGOFN0cmluZyk7CiAjZWxzZQogICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IEJs
b2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBuc1Jl
cXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOwogI2VuZGlmCkBAIC0zNjYsNyAr
MzY2LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBib29sIHNob3VsZEJsb2NrQ29v
a2llcyA9IG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3MgfHwgbV9zZXNzaW9uLT5u
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbV9mcmFt
ZUlELCBtX3BhZ2VJRCk7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fc2Vz
c2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkKLSAgICAgICAgUkVMRUFTRV9MT0df
SUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRp
b246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6ICVzIGNvb2tp
ZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIsIHRoaXMsIG1fcGFnZUlELCBtX2ZyYW1lSUQsICh1bnNp
Z25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCAoc2hvdWxkQmxvY2tDb29raWVzID8g
IkJsb2NraW5nIiA6ICJOb3QgYmxvY2tpbmciKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1l
SUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6ICVzIGNvb2tpZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIs
IHRoaXMsIG1fcGFnZUlELnRvVUludDY0KCksIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21f
dGFzayB0YXNrSWRlbnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDog
Ik5vdCBibG9ja2luZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
I2Vsc2UKICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1ICVzIGNvb2tpZXMgZm9yIHJlZGly
ZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCAoc2hvdWxkQmxvY2tDb29raWVz
ID8gIkJsb2NraW5nIiA6ICJOb3QgYmxvY2tpbmciKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICNlbmRpZgpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmCiAgICAgaWYgKCFzaG91bGRCbG9ja0Nvb2tpZXMpIHsKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3Jt
YXRpb24oKSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFt
ZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMgZm9yIHJl
ZGlyZWN0IFVSTCAlcyIsIHRoaXMsIG1fcGFnZUlELCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25n
KVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1l
SUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IE5vdCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVk
aXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgbV9mcmFtZUlELCAodW5z
aWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVs
bHUgTm90IHBhcnRpdGlvbmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCBbbV90YXNr
IHRhc2tJZGVudGlmaWVyXSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNl
bmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4
IGQ1Zjk4MWU0NTM0Li5mODY0NTRkZGE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VTZW5kZXIuaApAQCAtMzQsOSArMzQsOSBAQCBjbGFzcyBNZXNzYWdlU2VuZGVyIHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZXNzYWdlU2VuZGVyKCk7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSkKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSwgT3B0aW9uU2V0PFNlbmRPcHRpb24+
IHNlbmRPcHRpb25zID0geyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHNlbmQobWVzc2FnZSwg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSwgeyB9KTsKKyAgICAgICAgcmV0dXJuIHNlbmQo
bWVzc2FnZSwgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSwgc2VuZE9wdGlvbnMpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdl
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlv
bnMgPSB7IH0pCkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCktPnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUo
cmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9pZCBz
ZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJn
cy4uLik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgQz4KKyAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNv
bXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KS0+c2VuZFdpdGhBc3luY1JlcGx5KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA1MjUxNDkwMmFiYi4uNWI5NzUz
MDMwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjA1
LDYgKzIwNSw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZl
cik6CiAgICAgICAgICdTdHJpbmcnLAogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCisgICAgICAgICdXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAg
ICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSVBhZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VI
YW5kbGUuY3BwCmluZGV4IGE2YTAwOTk1NTAwLi5lNjA1YTQ1OTQ2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcApAQCAtMzEsMTcgKzMxLDE3IEBACiAKIG5h
bWVzcGFjZSBBUEkgewogCi1SZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRlKHVpbnQ2
NF90IHBhZ2VJRCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VI
YW5kbGUocGFnZUlELCBmYWxzZSkpOwogfQogCi1SZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRsZTo6
Y3JlYXRlQXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlEKQorUmVmPFBhZ2VIYW5kbGU+IFBh
Z2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgdHJ1
ZSkpOwogfQogCi1QYWdlSGFuZGxlOjpQYWdlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBp
c0F1dG9jb252ZXJ0aW5nKQorUGFnZUhhbmRsZTo6UGFnZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKICAgICA6IG1fcGFnZUlEKHBh
Z2VJRCkKICAgICAsIG1faXNBdXRvY29udmVydGluZyhpc0F1dG9jb252ZXJ0aW5nKQogewpAQCAt
NTksMTUgKzU5LDE2IEBAIHZvaWQgUGFnZUhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIAogYm9vbCBQYWdlSGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8T2JqZWN0PiYgcmVzdWx0KQogewotICAgIHVpbnQ2NF90IHBhZ2VJRDsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VJRCkpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHBhZ2VJRDsKKyAgICBpZiAoIXBh
Z2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBpc0F1dG9jb252ZXJ0aW5n
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNBdXRvY29udmVydGluZykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRv
Y29udmVydGluZyhwYWdlSUQpIDogY3JlYXRlKHBhZ2VJRCk7CisgICAgcmVzdWx0ID0gaXNBdXRv
Y29udmVydGluZyA/IGNyZWF0ZUF1dG9jb252ZXJ0aW5nKCpwYWdlSUQpIDogY3JlYXRlKCpwYWdl
SUQpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBh
Z2VIYW5kbGUuaAppbmRleCBmMzBmYWZiZGMzMS4uN2Q3YWRjNjg5ZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBB
UElQYWdlSGFuZGxlX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBJ
UEMgewpAQCAtMzgsMjAgKzM5LDIwIEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBQYWdlSGFu
ZGxlIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQYWdlSGFuZGxlPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGUodWludDY0X3QgcGFnZUlEKTsK
LSAgICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVpbnQ2NF90
IHBhZ2VJRCk7CisgICAgc3RhdGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlQXV0b2NvbnZl
cnRpbmcoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgflBhZ2VIYW5kbGUo
KTsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9Cisg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
SUQ7IH0KICAgICBib29sIGlzQXV0b2NvbnZlcnRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzQXV0
b2NvbnZlcnRpbmc7IH0KIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0Owog
ICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBSZWZQdHI8T2JqZWN0PiYpOwog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBhZ2VIYW5kbGUodWludDY0X3QgcGFnZUlELCBib29s
IGlzQXV0b2NvbnZlcnRpbmcpOworICAgIGV4cGxpY2l0IFBhZ2VIYW5kbGUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGJvb2wgaXNBdXRvY29udmVydGluZyk7CiAKLSAgICBjb25zdCB1aW50NjRf
dCBtX3BhZ2VJRDsKKyAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsK
ICAgICBjb25zdCBib29sIG1faXNBdXRvY29udmVydGluZzsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRl
eCAxY2I5ZTZjN2Q0MS4uZmU1YjkzODcxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTQ0LDcgKzQ0LDcg
QEAgUmVtb3RlT2JqZWN0UmVnaXN0cnk6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5KF9XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmplY3QKICAgICAsIG1fbWVzc2FnZVNlbmRlcihwYWdlKQog
ICAgICwgbV90YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oW10geyByZXR1cm4gUHJvY2Vzc1Ro
cm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsgfSkKICAgICAsIG1faXNSZWdpc3Rl
cmVkQXNNZXNzYWdlUmVjZWl2ZXIodHJ1ZSkKLSAgICAsIG1fbWVzc2FnZVJlY2VpdmVySUQocGFn
ZS5wYWdlSUQoKSkKKyAgICAsIG1fbWVzc2FnZVJlY2VpdmVySUQocGFnZS5wYWdlSUQoKS50b1VJ
bnQ2NCgpKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9tZXNzYWdlUmVjZWl2ZXJJRCwgKnRoaXMpOwogICAgIHBhZ2Uuc2V0UmVtb3RlT2JqZWN0UmVn
aXN0cnkoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCmluZGV4IDU4Y2IxZGQyYjVlLi43ZTk3ZjE3
NmMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3Np
bmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgsNyArMjgsNyBAQAogCiBAaW1wbGVtZW50
YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAotLSAoaWQpX2luaXRXaXRoUGFnZUlEOih1
aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBhZ2VJRDooV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0gKGlkKV9pbml0V2l0aFBhZ2VJRDoodWlu
dDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFzaAogewotICAgIHJldHVybiBfcGFnZUlE
OworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7CiB9CiAKIC0gKEJPT0wpaXNFcXVhbDoo
aWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0CiAK
IC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIHsKLSAgICBbY29kZXIg
ZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdlSUQiXTsKKyAgICBbY29kZXIgZW5jb2Rl
SW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpAInBhZ2VJRCJdOwogfQogCiAtIChpZClp
bml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAgLTYxLDcgKzYxLDcgQEAgLSAoaWQpaW5p
dFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcGFnZUlEID0gW2NvZGVyIGRlY29kZUlu
dDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVy
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2NvZGVyIGRlY29kZUludDY0Rm9yS2V5OkAi
cGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50
ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYS4uNDNlNDFlMjRjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0
SGFuZGxlSW50ZXJuYWwuaApAQCAtMjQsMTEgKzI0LDEyIEBACiAgKi8KIAogI2ltcG9ydCAiV0tC
cm93c2luZ0NvbnRleHRIYW5kbGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KIAogQGludGVyZmFjZSBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAoKQogCi1AcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlciA9IF9wYWdlSUQpIHVpbnQ2NF90IHBhZ2VJRDsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9wYWdlSUQpIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKIAotLSAoaWQpX2luaXRXaXRoUGFnZUlEOih1aW50NjRf
dClwYWdlSUQ7CistIChpZClfaW5pdFdpdGhQYWdlSUQ6KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KXBhZ2VJRDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IGViOGEwYjY2MTdh
Li5kNGUxYzI1MDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtNjYsNyArNjYsNyBA
QCBJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICpt
X2Rlc3RpbmF0aW9uSUQ7CisgICAgcmV0dXJuIG1fZGVzdGluYXRpb25JRC0+dG9VSW50NjQoKTsK
IH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y2FuTWFrZVBheW1lbnRzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgcmVwbHkpCkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om9wZW5QYXltZW50U2V0dXAoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpCiAgICAgcGxhdGZvcm1PcGVuUGF5bWVudFNldHVwKG1lcmNo
YW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJM
U3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBh
eW1lbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1lbnRVSShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byYgY29vcmRpbmF0b3Ig
PSBhY3RpdmVQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpKQogICAgICAgICBjb29yZGluYXRvci0+
ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGQyMzdl
YWIzZGFiLi42ZTRhODVjZjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhl
YWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuTWFrZVBheW1l
bnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcm
IG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHNob3dQYXltZW50VUkodWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdV
UkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJp
bmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZh
bGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZv
aWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250
YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0
ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBDbGllbnQm
IG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2Rlc3RpbmF0aW9uSUQ7CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fZGVzdGluYXRpb25JRDsKIAogICAg
IGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90aGluZydzIGhhcHBlbmlu
Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGQzMTMxMjdi
ZjQuLjFkZTRjZGRjZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMzAsNyArMzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSB7CiAgICAgQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoU3RyaW5nIG1lcmNoYW50SWRl
bnRpZmllciwgU3RyaW5nIGRvbWFpbk5hbWUsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4g
KGJvb2wgY2FuTWFrZVBheW1lbnRzKSBBc3luYwogICAgIE9wZW5QYXltZW50U2V0dXAoU3RyaW5n
IG1lcmNoYW50SWRlbnRpZmllciwgU3RyaW5nIGRvbWFpbk5hbWUpIC0+IChib29sIHJlc3VsdCkg
QXN5bmMKIAotICAgIFNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZlY3RvcjxT
dHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAg
ICBTaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBWZWN0
b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3Vz
CiAgICAgQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50
U2Vzc2lvbiBwYXltZW50TWVyY2hhbnRTZXNzaW9uKQogICAgIENvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+IHVwZGF0
ZSkKICAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3Jl
OjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+IHVwZGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3Bw
CmluZGV4IDZlYjMzNWYwN2QzLi45ZGViNzZmZjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
Y3BwCkBAIC03NSw3ICs3NSw3IEBAIHVpbnQ2NF90IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6YWRk
Q2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdlJiYgY2hhbGxlbmdlCiAgICAgcmV0dXJu
IGNoYWxsZW5nZUlEOwogfQogCi1ib29sIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6c2hvdWxkQ29h
bGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgY29uc3QKK2Jvb2wgQXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKSBjb25zdAogewogICAgIGlmICghY2FuQ29hbGVzY2VDaGFsbGVuZ2UoY2hh
bGxlbmdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA4LDcgKzEwOCw3IEBAIFZlY3Rv
cjx1aW50NjRfdD4gQXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb2FsZXNjZUNoYWxsZW5nZXNNYXRj
aGluZyh1aW50NjRfdCBjaGFsCiAgICAgcmV0dXJuIGNoYWxsZW5nZXNUb0NvYWxlc2NlOwogfQog
Ci12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocGFnZUlEKTsKICAgICBBU1NFUlQoZnJhbWVJRCk7
CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHUKIAogdm9pZCBBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6
Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgdWludDY0X3QgZHVtbXlQYWdlSUQgPSAw
OworICAgIFBhZ2VJZGVudGlmaWVyIGR1bW15UGFnZUlEOwogICAgIHVpbnQ2NF90IGNoYWxsZW5n
ZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoeyBkdW1teVBhZ2VJRCwgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwogICAgIAogICAg
IC8vIENvYWxlc2NlIGNoYWxsZW5nZXMgaW4gdGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZSBhbmQg
aW4gdGhlIHNhbWUgcGFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKaW5kZXggN2ZlMzk5ZTBiN2Uu
Ljg2ZTc0NGMxMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNl
bmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2b2lkIGNvbXBsZXRlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik7CkBAIC02OSw3ICs3MCw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hhbGxlbmdlIHsKLSAgICAgICAg
dWludDY0X3QgcGFnZUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7
CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKICAg
ICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXI7CiAgICAg
fTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgdWludDY0
X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdlJiYpOwotICAgIGJvb2wgc2hv
dWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKKyAgICBi
b29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hp
bmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0
SW5wdXRDb250ZXh0LmgKaW5kZXggNGY3NWZkODA2ZjYuLjU0ZDQyNzdiODUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCkBAIC0yOSwxMyArMjksMTQgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0RvY3VtZW50SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWxl
bWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0
cnVjdCBUZXh0SW5wdXRDb250ZXh0IHsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRpbmdS
ZWN0OwogCi0gICAgdWludDY0X3Qgd2ViUGFnZUlkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgd2ViUGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6RG9jdW1lbnRJZGVu
dGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpFbGVtZW50SWRlbnRpZmll
ciBlbGVtZW50SWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCA5ZGJiMzZhNDU1My4uZDkwMGExNjczM2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0z
NSwxMiArMzUsMTIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKLVJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
OjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlLCB1aW50NjRfdCBwYWdlSUQpCitSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6
V2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2l0
ZW1TdGF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJ
RChwYWdlSUQpCiAgICAgLCBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVu
dGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDg3MmVmMTgwOTVkLi5iYTM0NDgwY2Q1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaApAQCAtMjcsNiAr
MjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRl
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiAKIGNs
YXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6
T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFJlZjxXZWJCYWNrRm9yd2FyZExp
c3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKCk7CiAKICAg
ICBzdGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbUZvcklEKGNvbnN0IFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgog
CiAgICAgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9pdGVtU3RhdGUuaWRlbnRpZmllcjsgfQogICAgIGNvbnN0IEJhY2tG
b3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRlbVN0YXRlKCkgeyByZXR1cm4gbV9pdGVtU3RhdGU7IH0K
LSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9
CiAKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50aWZpZXIo
KSBjb25zdCB7IHJldHVybiBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0
TGFzdFByb2Nlc3NJZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKSB7IG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQpAQCAt
ODEsMTIgKzgyLDEyIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2
NF90IHBhZ2VJRCk7CisgICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9p
ZCByZW1vdmVTdXNwZW5kZWRQYWdlRnJvbVByb2Nlc3NQb29sKCk7CiAKICAgICBCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXIgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQ
YWdlUHJveHk+IG1fc3VzcGVuZGVkUGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGU5ZGE2MGFlZWJlLi4wY2Jm
ZDAzNDZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTM5Miw3ICszOTIsNyBAQCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNv
ZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMuYmFja2dyb3Vu
ZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAotICAgIE9wdGlvbmFsPE9wdGlv
bmFsPHVpbnQ2NF90Pj4gb2xkUGFnZUlEOworICAgIE9wdGlvbmFsPE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4gb2xkUGFnZUlEOwogICAgIGlmICgh
b2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGMyYmU4NDE0NmIz
Li45MDEyN2JjMzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW50
U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9NZWRpYVByb2R1Y2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnaW5hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24uaD4KQEAgLTIwMiw3ICsyMDMsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyB7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gYmFja2dyb3VuZENvbG9yOwog
Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG9sZFBhZ2VJRDsKKyAgICBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gb2xkUGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQppbmRleCBjNjU0
ODRmNTUxMi4uNzExYTI2MTk4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNP
YmplY3RHcmFwaC5tbQpAQCAtMzAyLDcgKzMwMiw3IEBAIGJvb2wgT2JqQ09iamVjdEdyYXBoOjpk
ZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8aWQ+JiByZXN1bHQpCiAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFnZUlEKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUg
YWxsb2NdIF9pbml0V2l0aFBhZ2VJRDpwYWdlSURdKTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHRO
UyhbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlSUQ6bWFrZU9i
amVjdElkZW50aWZpZXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXJUeXBlPihwYWdlSUQpXSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5jcHAKaW5kZXggZWQ4NjM1ODIwMWIuLjU5NzAxYTEzNDM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTEyMDYsNyArMTIwNiw3IEBAIHZvaWQgV0tQYWdl
U2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQYWdlTG9hZGVy
Q2xpZW50QmFzZSoKICAgICAgICAgbWlsZXN0b25lcy5hZGQoV2ViQ29yZTo6RGlkRmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0KTsKIAogICAgIGlmIChtaWxlc3RvbmVzKQotICAgICAgICB3ZWJQ
YWdlUHJveHktPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlv
dXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCB3ZWJQYWdlUHJveHktPnBhZ2VJRCgpKTsKKyAgICAg
ICAgd2ViUGFnZVByb3h5LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlvdXRN
aWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsKIAogICAgIHdlYlBhZ2VQcm94eS0+c2V0TG9hZGVyQ2xp
ZW50KFdURk1vdmUobG9hZGVyQ2xpZW50KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCBmNmE3ODY1ZGI3My4uNDVhOTkyNGUwNDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtODU0LDcgKzg1NCw3IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtfY29udGVudFZpZXcgX3dl
YlZpZXdEZXN0cm95ZWRdOwogCiAgICAgaWYgKF9yZW1vdGVPYmplY3RSZWdpc3RyeSkKLSAgICAg
ICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogI2VuZGlmCiAK
ICAgICBfcGFnZS0+Y2xvc2UoKTsKQEAgLTQ2MzAsNyArNDYzMCw3IEBAIC0gKF9XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5ICopX3JlbW90ZU9iamVjdFJlZ2lzdHJ5CiAjZWxzZQogICAgIGlmICghX3Jl
bW90ZU9iamVjdFJlZ2lzdHJ5KSB7CiAgICAgICAgIF9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IGFk
b3B0TlMoW1tfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSBhbGxvY10gX2luaXRXaXRoV2ViUGFnZVBy
b3h5OipfcGFnZV0pOwotICAgICAgICBfcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmplY3RSZWdpc3RyeTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBfcGFnZS0+cGFnZUlEKCksIFtfcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVt
b3RlT2JqZWN0UmVnaXN0cnldKTsKKyAgICAgICAgX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9v
bCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIFtfcmVtb3Rl
T2JqZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0UmVnaXN0cnldKTsKICAgICB9CiAKICAgICByZXR1
cm4gX3JlbW90ZU9iamVjdFJlZ2lzdHJ5LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRl
eCAxMDc1NzgxYWYyYy4uMmY5Y2ZlOTQyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC01
NCw2ICs1NCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTdHJpbmcgQXV0b21hdGlvbkNvbW1h
bmRFcnJvcjo6dG9Qcm90b2NvbFN0cmluZygpCiB7CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShX
ZWJGcmFtZVByb3h5JiBmcmEKICAgICB9CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFj
a0Jhc2U+PiYgbWFwKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGlu
Z1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxQYWdlSWRlbnRpZmll
ciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBt
YXApCiB7CiAgICAgSW5zcGVjdG9yOjpFcnJvclN0cmluZyB0aW1lb3V0RXJyb3IgPSBTVFJJTkdf
Rk9SX1BSRURFRklORURfRVJST1JfTkFNRShUaW1lb3V0KTsKICAgICBmb3IgKGF1dG8gaWQgOiBj
b3B5VG9WZWN0b3IobWFwLmtleXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCA2NWViM2U0
NmU1Yi4uZjM5YzA2MWI1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0yMjUsNyAr
MjI2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRl
T25QYWdlKFdlYlBhZ2VQcm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBh
Z2VMb2FkU3RyYXRlZ3ksIFNlY29uZHMsIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2U+JiYpOwogICAgIHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRl
T25GcmFtZShXZWJGcmFtZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZT4mJik7Ci0gICAgdm9pZCByZXNwb25kVG9QZW5kaW5nUGFnZU5hdmln
YXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mKTsKKyAgICB2b2lkIHJlc3Bv
bmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2U+PiYpOwogICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ0ZyYW1lTmF2aWdh
dGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOwogICAgIHZvaWQgbG9hZFRp
bWVyRmlyZWQoKTsKIApAQCAtMjgwLDIyICsyODEsMjIgQEAgcHJpdmF0ZToKICAgICBSZWY8SW5z
cGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXI+IG1fZG9tYWluRGlzcGF0Y2hlcjsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRj
aGVyPiBtX2RvbWFpbk5vdGlmaWVyOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBt
X3dlYlBhZ2VIYW5kbGVNYXA7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hhbmRs
ZVdlYlBhZ2VNYXA7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3RyaW5n
PiBtX3dlYlBhZ2VIYW5kbGVNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBtX2hhbmRsZVdlYlBhZ2VNYXA7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBT
dHJpbmc+IG1fd2ViRnJhbWVIYW5kbGVNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90
PiBtX2hhbmRsZVdlYkZyYW1lTWFwOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1h
bE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZT4+IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tz
UGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFs
TmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0Nv
bnRleHRDYWxsYmFja3NQZXJQYWdlOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxO
YXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJGcmFtZTsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQ
ZXJGcmFtZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVy
UGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nSW5zcGVjdG9y
Q2FsbGJhY2tzUGVyUGFnZTsKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVSQUNU
SU9OUykKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9t
YXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxi
YWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rp
b248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdLZXli
b2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rp
b248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3Vz
ZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4pPj4gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsKICNlbmRp
ZgogCiAgICAgdWludDY0X3QgbV9uZXh0RXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tJRCB7IDEg
fTsKQEAgLTMxOSw3ICszMjAsNyBAQCBwcml2YXRlOgogICAgIC8vIFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlciBBUElzIHRha2UgYSBzZXQgb2YgaW5wdXQgc291cmNlcy4gV2UgYWxzbyBpbnRlcm4g
dGhlc2UKICAgICAvLyBzbyB0aGF0IHByZXZpb3VzIGlucHV0IHNvdXJjZSBzdGF0ZSBpcyB1c2Vk
IGFzIGluaXRpYWwgc3RhdGUgZm9yIGxhdGVyIGNvbW1hbmRzLgogICAgIEhhc2hTZXQ8UmVmPFNp
bXVsYXRlZElucHV0U291cmNlPj4gbV9pbnB1dFNvdXJjZXM7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFn
ZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8U2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlOwogI2VuZGlmCiAjaWYgRU5B
QkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCiAgICAgLy8gS2VlcCB0cmFjayBv
ZiBjdXJyZW50bHkgYWN0aXZlIG1vZGlmaWVycyBhY3Jvc3MgbXVsdGlwbGUga2V5c3Ryb2tlcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5tbQppbmRleCBmMDVkNzljMGQwMS4uMTIxMzFiOWIzNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAgLTMwMiw3ICszMDIsNyBAQCBSZWY8UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5PiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZShX
ZWJQYWdlUHJveAogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlKQogICAgIDogbV9wYWdlKCZwYWdlKQogewot
ICAgIG1fcGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFn
ZUlEKCksICp0aGlzKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksICp0aGlzKTsKIH0KIAogUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Ojp+UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5KCkKQEAgLTMx
NCw3ICszMTQsNyBAQCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6On5QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHkoKQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aW52
YWxpZGF0ZSgpCiB7Ci0gICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3Bh
Z2UgPSBudWxscHRyOwogCiAgICAgYXV0byBjb250ZXh0TWFwID0gV1RGTW92ZShtX2NvbnRleHRN
YXApOwpAQCAtNTI3LDk0ICs1MjcsOTQgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZSh1aW50NjRfdCBjb24KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnBsYXkodWludDY0X3QgY29udGV4dElkKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGxh
eShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSk7CiB9CiAKIHZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwYXVzZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQYXVz
ZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJZCkpOwogfQogCiB2b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNv
bnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OlRvZ2dsZVBsYXlTdGF0ZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBs
YXlTdGF0ZShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmJlZ2luU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2NydWJiaW5nKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSk7CiB9CiAKIHZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbmRTY3J1YmJpbmcodWludDY0X3QgY29u
dGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6RW5kU2NydWJiaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2NydWJiaW5n
KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2Vl
a1RvVGltZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lLCBkb3VibGUgdG9sZXJhbmNl
QmVmb3JlLCBkb3VibGUgdG9sZXJhbmNlQWZ0ZXIpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwgdGltZSwg
dG9sZXJhbmNlQmVmb3JlLCB0b2xlcmFuY2VBZnRlciksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2Vla1RvVGlt
ZShjb250ZXh0SWQsIHRpbWUsIHRvbGVyYW5jZUJlZm9yZSwgdG9sZXJhbmNlQWZ0ZXIpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmZhc3RTZWVrKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIHRpbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhjb250ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OkZhc3RTZWVrKGNvbnRleHRJZCwgdGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVn
aW5TY2FubmluZ0ZvcndhcmQoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5n
Rm9yd2FyZChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmJlZ2luU2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5n
QmFja3dhcmQoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nQmFja3dhcmQo
Y29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbmRT
Y2FubmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY2FubmluZyhjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQs
IHVpbnQ2NF90IGluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6U2VsZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpTZWxlY3RBdWRpb01lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpKTsK
IH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVNZWRp
YU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1l
ZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Ojp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRv
Z2dsZVBpY3R1cmVJblBpY3R1cmUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQaWN0
dXJlSW5QaWN0dXJlKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6dG9nZ2xlTXV0ZWQodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlTXV0ZWQoY29udGV4
dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldE11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBtdXRlZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OlNldE11dGVkKGNvbnRleHRJZCwgbXV0ZWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldE11
dGVkKGNvbnRleHRJZCwgbXV0ZWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OnNldFZvbHVtZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB2b2x1bWUpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRWb2x1
bWUoY29udGV4dElkLCB2b2x1bWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0SWQs
IHZvbHVtZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0UGxh
eWluZ09uU2Vjb25kU2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKIHsKICAg
ICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OlNldFBsYXlpbmdPblNlY29uZFNjcmVlbihjb250ZXh0SWQsIHZhbHVlKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6U2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKGNvbnRleHRJZCwgdmFs
dWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJlcXVlc3RDb250
cm9sbGVkRWxlbWVudElEKCkKIHsKICAgICBpZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQp
Ci0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
SGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QobV9jb250cm9sc01hbmFnZXJDb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdCht
X2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkpOwogfQogCiBQbGF0Zm9ybVBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZSogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpjb250cm9sc01hbmFnZXJJ
bnRlcmZhY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IDZiYTQ3OWUwNjBhLi43N2Yy
ZjJmYzRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtMzI1LDcgKzMyNSw3IEBAIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5KFdl
YlBhZ2VQcm94eSYgcGFnZSwgUGxhCiAgICAgOiBtX3BhZ2UoJnBhZ2UpCiAgICAgLCBtX3BsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eShwbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkpCiB7Ci0g
ICAgbV9wYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdl
SUQoKSwgKnRoaXMpOworICAgIG1fcGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMpOwogfQogCiBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6On5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkoKQpAQCAtMzM3
LDcgKzMzNyw3IEBAIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6flZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eSgpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjppbnZh
bGlkYXRlKCkKIHsKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFn
ZSA9IG51bGxwdHI7CiAKICAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4dE1h
cCk7CkBAIC02MjAsNDMgKzYyMCw0MyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIAogdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRf
dCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEZ1bGxzY3JlZW5Nb2Rl
KGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVl
c3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhKSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0VXBkYXRlSW5saW5l
UmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5saW5lUmVjdChjb250ZXh0SWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KGNvbnRleHRJZCkpOwogfQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFZpZGVvQ29udGVudExh
eWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpKTsKIH0K
IAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvQ29udGVudExh
eWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkKSk7CiB9CiAK
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1cEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Oldp
bGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbHNj
cmVlbihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsc2NyZWVuKGNv
bnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAg
ICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsK
LSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVu
dGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVl
bihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwogfQogCkBA
IC02NzAsNyArNjcwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZENs
ZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBbQ0FUcmFuc2FjdGlvbiBm
bHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmlld107
CiAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0cik7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRDbGVhbnVwRnVsbHNjcmVlbihj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCkp
OwogCiAgICAgaW50ZXJmYWNlLT5zZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQoY29udGV4dElk
KTsKQEAgLTY4OCwyNSArNjg4LDI1IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlCiAgICAgICAg
IG1hY2hfcG9ydF9uYW1lX3QgZmVuY2VQb3J0ID0gZmVuY2VTZW5kUmlnaHQubGVha1NlbmRSaWdo
dCgpOwogI2VuZGlmCiAKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoY29udGV4dElkLCBmcmFtZSwg
SVBDOjpBdHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKGNvbnRleHRJZCwgZnJhbWUs
IElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSkpOwog
ICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5
ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oY29udGV4dElkLCAo
dW5zaWduZWQpZ3Jhdml0eSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckdyYXZpdHlFbnVt
KGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQs
IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2Rl
KQogewogICAgIG1fcGFnZS0+dWlDbGllbnQoKS5oYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURp
ZENoYW5nZShtX3BhZ2UsIG1vZGUgJiBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2RlKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2RlKSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTWF5UmV0dXJu
VG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNWaWV3VmlzaWJsZSA9
IG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRleHRJ
ZCwgaXNWaWV3VmlzaWJsZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRvSW5s
aW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggZjkx
NDY4MTFjNTUuLjQ0MGZkMGRiNDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9y
bURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihwb2lu
dCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1
cnJlbnRTZWxlY3Rpb24oKQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpw
ZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2Vs
ZWN0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3Jt
RGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpKTsKIH0KICAgICAKICNpZiBFTkFC
TEUoQVBQTEVfUEFZKQpAQCAtMjM0LDEyICsyMzQsMTIgQEAgY29uc3QgU3RyaW5nJiBXZWJQYWdl
UHJveHk6OnBheW1lbnRDb29yZGluYXRvclNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRp
ZmkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckFkZE1lc3NhZ2VSZWNl
aXZlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIGNvbnN0IElQQzo6U3RyaW5nUmVmZXJl
bmNlJiBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgbWVzc2FnZVJl
Y2VpdmVyKQogewotICAgIHByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2Vp
dmVyTmFtZSwgbV9wYWdlSUQsIG1lc3NhZ2VSZWNlaXZlcik7CisgICAgcHJvY2VzcygpLmFkZE1l
c3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBt
ZXNzYWdlUmVjZWl2ZXIpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGF5bWVudENvb3JkaW5h
dG9yUmVtb3ZlTWVzc2FnZVJlY2VpdmVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgY29u
c3QgSVBDOjpTdHJpbmdSZWZlcmVuY2UmIG1lc3NhZ2VSZWNlaXZlck5hbWUpCiB7Ci0gICAgcHJv
Y2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBtX3BhZ2VJ
RCk7CisgICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KIAogI2VuZGlmCkBAIC0yNjYsMTcgKzI2Niwx
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVzdW1lU3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZv
cm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3BlYWtp
bmdFcnJvck9jY3VycmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNl
JikKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3BlYWtpbmdFcnJv
ck9jY3VycmVkKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTcGVh
a2luZ0Vycm9yT2NjdXJyZWQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpib3VuZGFyeUV2
ZW50T2NjdXJyZWQoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmLCBX
ZWJDb3JlOjpTcGVlY2hCb3VuZGFyeSBzcGVlY2hCb3VuZGFyeSwgdW5zaWduZWQgY2hhckluZGV4
KQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCb3VuZGFyeUV2ZW50
T2NjdXJyZWQoc3BlZWNoQm91bmRhcnkgPT0gV2ViQ29yZTo6U3BlZWNoQm91bmRhcnk6OlNwZWVj
aFdvcmRCb3VuZGFyeSwgY2hhckluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkJvdW5kYXJ5RXZlbnRPY2N1cnJlZChzcGVlY2hCb3VuZGFyeSA9PSBXZWJDb3Jl
OjpTcGVlY2hCb3VuZGFyeTo6U3BlZWNoV29yZEJvdW5kYXJ5LCBjaGFySW5kZXgpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnZvaWNlc0RpZENoYW5nZSgpCiB7Ci0gICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZvaWNlc0RpZENoYW5nZSgpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vm9pY2VzRGlkQ2hhbmdlKCkpOwogfQogI2VuZGlmIC8v
IEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDJhYTc0OGYwMDRmLi5mZjhkY2Q0MGQxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTEzODAsNyAr
MTM4MCw3IEBAIFdlYlZpZXdJbXBsOjpXZWJWaWV3SW1wbChOU1ZpZXcgPFdlYlZpZXdJbXBsRGVs
ZWdhdGU+ICp2aWV3LCBXS1dlYlZpZXcgKm91dGVyV2ViCiBXZWJWaWV3SW1wbDo6fldlYlZpZXdJ
bXBsKCkKIHsKICAgICBpZiAobV9yZW1vdGVPYmplY3RSZWdpc3RyeSkgewotICAgICAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+cHJvY2VzcygpLnByb2Nlc3NQb29sKCkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmplY3RSZWdpc3RyeTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgICAgICBbbV9y
ZW1vdGVPYmplY3RSZWdpc3RyeSBfaW52YWxpZGF0ZV07CiAgICAgICAgIG1fcmVtb3RlT2JqZWN0
UmVnaXN0cnkgPSBuaWw7CiAgICAgfQpAQCAtMTk5NywxMyArMTk5NywxMyBAQCBmbG9hdCBXZWJW
aWV3SW1wbDo6aW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdAogCiB2b2lkIFdlYlZp
ZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9mZlNjcmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3Rh
dGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIs
IHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmll
d0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0aGlzLCBtX3Bh
Z2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENo
YW5nZSh7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRv
d0RpZE9yZGVyT25TY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0lt
cGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPblNjcmVlbiIsIHRoaXMsIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2Ug
JWxsdSkgd2luZG93RGlkT3JkZXJPblNjcmVlbiIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9V
SW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJ
c0FjdGl2ZSB9KTsKIH0KIApAQCAtMjA3MSw3ICsyMDcxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
d2luZG93RGlkQ2hhbmdlTGF5ZXJIb3N0aW5nKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93
RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2Vi
Vmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUiLCB0
aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJ
bXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywg
bV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApAQCAtMjIz
NCwxOSArMjIzNCwxOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkQ2hhbmdlQmFja2luZ1By
b3BlcnRpZXMoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlkSGlkZSgpCiB7Ci0gICAgTE9H
KEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkSGlkZSIs
IHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmll
d0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgp
LnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3
RGlkVW5oaWRlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChw
YWdlICVsbHUpIHZpZXdEaWRVbmhpZGUiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBM
T0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRVbmhp
ZGUiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0
aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwog
fQogCiB2b2lkIFdlYlZpZXdJbXBsOjphY3RpdmVTcGFjZURpZENoYW5nZSgpCiB7Ci0gICAgTE9H
KEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSBhY3RpdmVTcGFjZURp
ZENoYW5nZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRl
LCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgYWN0aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlz
LCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCkBAIC0z
ODI3LDcgKzM4MjcsNyBAQCBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqV2ViVmlld0ltcGw6OnJl
bW90ZU9iamVjdFJlZ2lzdHJ5KCkKIHsKICAgICBpZiAoIW1fcmVtb3RlT2JqZWN0UmVnaXN0cnkp
IHsKICAgICAgICAgbV9yZW1vdGVPYmplY3RSZWdpc3RyeSA9IGFkb3B0TlMoW1tfV0tSZW1vdGVP
YmplY3RSZWdpc3RyeSBhbGxvY10gX2luaXRXaXRoV2ViUGFnZVByb3h5Om1fcGFnZV0pOwotICAg
ICAgICBtX3BhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9w
YWdlLT5wYWdlSUQoKSwgW21fcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0UmVnaXN0
cnldKTsKKyAgICAgICAgbV9wYWdlLT5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgW21fcmVtb3RlT2JqZWN0UmVnaXN0
cnkgcmVtb3RlT2JqZWN0UmVnaXN0cnldKTsKICAgICB9CiAKICAgICByZXR1cm4gbV9yZW1vdGVP
YmplY3RSZWdpc3RyeS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKaW5kZXggY2E3Njg3ZjZiNTIuLmI5MzAxMjg1OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Np
b25EZQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlR2VvbG9jYXRp
b25QZXJtaXNzaW9uRGVjaXNpb24oZ2VvbG9jYXRpb25JRCwgYWxsb3dlZCksIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9s
b2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBhbGxvd2VkKSk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShhbGxvd2VkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmluZGV4IDYyYjA3MjlmOGE1Li4w
ZjQxMDIwZWE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
VGFyZ2V0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRh
cmdldFByb3h5LmNwcApAQCAtNTAsMTkgKzUwLDE5IEBAIEluc3BlY3RvclRhcmdldFByb3h5OjpJ
bnNwZWN0b3JUYXJnZXRQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGFy
CiB2b2lkIEluc3BlY3RvclRhcmdldFByb3h5Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRD
aGFubmVsJiBjaGFubmVsKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkK
LSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25uZWN0
SW5zcGVjdG9yKGlkZW50aWZpZXIoKSwgY2hhbm5lbC5jb25uZWN0aW9uVHlwZSgpKSwgbV9wYWdl
LnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5l
Y3RJbnNwZWN0b3IoaWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250
ZW5kQ2hhbm5lbCYpCiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQotICAg
ICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJ
bnNwZWN0b3IoaWRlbnRpZmllcigpKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigp
KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OnNlbmRNZXNzYWdlVG9UYXJnZXRC
YWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9wYWdlLmhhc1J1bm5p
bmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM0NDNiMzg1ZmFjLi4y
ZDk5NjZlM2M4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhj
b25zdCBJUEM6OkF0dGEKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5n
ZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxs
ZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQogICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbV9wcm9jZXNzUG9v
bC5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChwYWdlSUQpKSB7CkBAIC0zNzEs
NyArMzcxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmco
UHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICNlbmRpZgogfQogCi12b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojps
b2dEaWFnbm9zdGljTWVzc2FnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJv
eHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNr
IGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFn
ZSBtYXkgYmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC0zODIs
NyArMzgyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2Fn
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWUKICAgICBwYWdlLT5sb2dEaWFnbm9z
dGljTWVzc2FnZShtZXNzYWdlLCBkZXNjcmlwdGlvbiwgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBs
ZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVz
dWx0KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVj
ayBiZWNhdXNlIGJ5IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBh
Z2UgbWF5IGJlIGdvbmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzkz
LDcgKzM5Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QKICAgICBwYWdlLT5sb2dEaWFnbm9z
dGljTWVzc2FnZVdpdGhSZXN1bHQobWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgc2hvdWxk
U2FtcGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVz
c2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2Fu
dEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBX
ZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhp
cyBudWxsLWNoZWNrIGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBt
YWRlLCB0aGUgcGFnZSBtYXkgYmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRo
aXMsCkBAIC03MzYsNyArNzM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRHcmFu
ZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXMKICAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRHcmFuZGZhdGhlcmVk
KHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGlzR3JhbmRmYXRoZXJlZCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzc0NvbmZpcm0odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NDb25maXJtKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vz
c1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MDgsNyArOTA4
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQKICAgICBXZWJQcm9jZXNzUHJveHk6Om5vdGlm
eVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUo
bWVzc2FnZUJvZHkpLnB0cigpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb21t
aXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNv
bW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRN
ZXNzYWdlKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXgg
MjBhNzk5OGM0ZGMuLjJiZWM2OGZkODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCArODEsNiBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAg
ICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7
CiAKICAgICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBA
IC0xMzEsNyArMTI5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VG
b3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNv
dXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9t
YWlucyk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJRCwg
RnJhbWVJRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NDb25maXJtKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBjb25zdCBTdWJG
cmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFu
ZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRp
b25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNz
aW9uSUQsIGJvb2wgZGVidWdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwo
UEFMOjpTZXNzaW9uSUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jv
c3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdh
dGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFp
biYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVk
RnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAg
ICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQ
cm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBk
aWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGFjaG1l
bnQmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdl
SUQpOwogICAgIHZvaWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBj
b25zdCBXZWJzaXRlRGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0
X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMo
dWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3Qg
cGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91
bGRTYW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFJlc3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdub3N0aWNNZXNz
YWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlw
dGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6
OlNob3VsZFNhbXBsZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGYuLjIyZmZm
ZDE5ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBA
CiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBE
aWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkF0dGFjaG1lbnQgY29u
bmVjdGlvbklkZW50aWZpZXIpCiAKLSAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQorICAgIERpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNo
YWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRh
KHVpbnQ2NF90IGNhbGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVE
YXRhKQogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC0z
NSw5ICszNSw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2
ZXIgewogICAgIFNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmls
ZXMpCiAKICAgICAjIERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZwotICAgIExvZ0RpYWdub3N0
aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlw
dGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAg
TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1l
c3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBlbnVtOmJvb2wgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGljTWVzc2Fn
ZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3Jp
cHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJv
b2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dEaWFnbm9zdGlj
TWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBT
dHJpbmcgZGVzY3JpcHRpb24sIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxk
U2FtcGxlKQorICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVp
bnQzMl90IHJlc3VsdCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCisgICAgTG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUg
dmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiAgICAgTG9nR2xvYmFsRGlhZ25vc3RpY01lc3NhZ2VX
aXRoVmFsdWUoU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVl
LCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKQEAgLTQ2LDcgKzQ2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxl
RG9tYWluc0ZpbmlzaGVkKCkKICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJs
ZURvbWFpbnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVt
ZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0
b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNT
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKQotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29u
ZmlybSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BG
cmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYworICAgIFJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNl
ckRpZEdyYW50QWNjZXNzKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NG
b3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8
V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4+IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluPiBkb21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYKICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBmODc2MWIxZjNmNC4u
M2YyODczMmFiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmNyCiB7CiAgICAgYXV0byByZXF1ZXN0ID0gTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3Q6OmNyZWF0ZShbdGhpcywgbm90aWZpY2F0aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1f
cGFnZSldKGJvb2wgYWxsb3dlZCkgewogICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5v
dGlmaWNhdGlvbklEKTsKLSAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0
aW9uSUQsIGFsbG93ZWQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIHBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24o
bm90aWZpY2F0aW9uSUQsIGFsbG93ZWQpKTsKICAgICB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0
cy5hZGQobm90aWZpY2F0aW9uSUQsIHJlcXVlc3QucHRyKCkpOwogICAgIHJldHVybiByZXF1ZXN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZhZTFmM2Zj
YTg4Li4yYWFmZjFlYzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6
c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAgIHVp
bnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25J
RCgpOwogICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0
bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5v
dGlmaWNhdGlvbklEKTsKLSAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmlj
YXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlm
aWNhdGlvbklEKTsKKyAgICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBub3Rp
ZmljYXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5v
dGlmaWNhdGlvbklEKTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90
aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25zLnNl
dChub3RpZmljYXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklE
LCBub3RpZmljYXRpb24uY29weVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFn
ZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQgV2ViTm90
aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94
eSogd2ViUGFnZSwKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90LCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+JikKK3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90LCBQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+JikKIHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAK
LXN0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29u
c3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMg
Ym9vbCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1
aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQs
IGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewog
ICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNh
dGlvbklEcy5jb250YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEzICsxNDEs
MTMgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9u
cyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRl
ckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJRCA9
IHdlYlBhZ2UtPnBhZ2VJRCgpOworICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFn
ZUlEKCk7CiAKICAgICBWZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAg
ICBnbG9iYWxOb3RpZmljYXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0
aW9uTWFwLnNpemUoKSk7CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVn
aW4oKSwgZW5kID0gbV9ub3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAg
ICAgICAgdWludDY0X3Qgd2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAgYXV0byB3
ZWJQYWdlSUQgPSBpdC0+a2V5LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0
aW9uSUQgPSBpdC0+a2V5LnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQ
YWdlSUQsIHBhZ2VOb3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9u
SURzKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWlu
dDY0X3QgZ2xvYmFsTm90CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVu
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFs
dWUuZmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1LDcgQEAg
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmlj
YXRpb24odWludDY0X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRp
b25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3ZWJQYWdl
SUQgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmly
c3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNS4uZTc4ZGFiYTZm
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNzgsNyArNzgs
NyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eShXZWJQcm9jZXNzUG9vbCopOwogCi0gICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0
aW9uRmlsdGVyRnVuY3Rpb24pKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNh
dGlvbklELCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBk
ZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7CisgICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0
aW9uRmlsdGVyRnVuY3Rpb24pKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0
X3QgcGFnZU5vdGlmaWNhdGlvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFn
ZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7
CiAgICAgdm9pZCBjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rp
b24pOwogCiAgICAgLy8gV2ViQ29udGV4dFN1cHBsZW1lbnQKQEAgLTg4LDkgKzg4LDkgQEAgcHJp
dmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiBt
X3Byb3ZpZGVyOwogICAgIC8vIFBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFuZCB0aGUg
d2ViIHByb2Nlc3MncyBub3RpZmljYXRpb24gSUQKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6
OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Pj4gbV9nbG9iYWxOb3RpZmljYXRpb25NYXA7CisgICAg
SGFzaE1hcDx1aW50NjRfdCwgc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOwogICAgIC8vIEtleSBwYWlyIGNvbXByaXNl
ZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElEOyB2
YWx1ZSBwYWlyIGNvbXByaXNlZCBvZiBnbG9iYWwgbm90aWZpY2F0aW9uIElELCBhbmQgbm90aWZp
Y2F0aW9uIG9iamVjdAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4s
IHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25vdGlmaWNh
dGlvbnM7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVp
bnQ2NF90Piwgc3RkOjpwYWlyPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1f
bm90aWZpY2F0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDQ1YTFmMGY1
YjVjLi40NDFhMjEyOWJlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcApAQCAtNDcsNiArNDcsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlLmlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6
IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fcGFnZS5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdl
UHJveHk6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCkBAIC02MSw5ICs2Myw5IEBAIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBh
Z2UsIFJlZjxXZWJQcm9jZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFs
UGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQg
IiBzdXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKSwgbmF2aWdhdGlvbklELCBzdXNw
ZW5kZWRQYWdlLmdldCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBu
YXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdl
SUQoKS50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCi0g
ICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAgICBtX3By
b2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAg
bV9wcm9jZXNzLT5hZGRQcm92aXNpb25hbFBhZ2VQcm94eSgqdGhpcyk7CiAKICAgICBpZiAobV9w
cm9jZXNzLT5zdGF0ZSgpID09IEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6U3RhdGU6OlJ1bm5pbmcp
CkBAIC05OSw4ICsxMDEsOCBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFn
ZVByb3h5KCkKICAgICBpZiAoJm1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZtX3Bh
Z2Uud2Vic2l0ZURhdGFTdG9yZSgpKQogICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShtX3BhZ2UucGFnZUlEKCksIG1fcHJvY2Vzcy0+
d2Vic2l0ZURhdGFTdG9yZSgpKTsKIAotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LnBhZ2VJRCgpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3Nl
KCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uu
cGFnZUlEKCkudG9VSW50NjQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2Uo
KSk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihtX3BhZ2Uudmlz
aXRlZExpbmtTdG9yZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwogCiAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFtwcm9jZXNzID0gbV9wcm9jZXNzLmNvcHlSZWYoKV0gewpAQCAtMTE3LDcgKzEx
OSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNvbm5lY3Rpb25XaWxsT3BlbihJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnBy
b2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLnByb3Zpc2lvbmFsUHJvY2Vz
c0RpZFRlcm1pbmF0ZSgpOwogfQogCkBAIC0xMzIsNyArMTM0LDcgQEAgdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6Y2FuY2VsKCkKICAgICBpZiAobV9wcm92aXNpb25hbExvYWRVUkwuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZSBmb3IgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2VsOiBTaW11bGF0aW5n
IGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQobV9tYWluRnJhbWUpOwog
ICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCk7CiAgICAg
ZXJyb3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24p
OwpAQCAtMTUxLDE0ICsxNTMsMTQgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlh
bGl6ZVdlYlBhZ2UoKQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3Ry
aW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdl
LnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
ImxvYWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKIAogICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwg
dXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZN
b3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojps
b2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kg
c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Bh
Z2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICAvLyBJZiB0aGlzIGlzIGEgY2xpZW50LXNp
ZGUgcmVkaXJlY3QgY29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBuZXcgcHJv
Y2VzcyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2FzZSwKICAg
ICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgZnJvbUl0ZW0ncyBwcm9jZXNzSWRl
bnRpZmllciBhcyB3ZSB3YW50IGZ1dHVyZSBuYXZpZ2F0aW9ucyB0byB0aGlzIEJhY2tGb3J3YXJk
IGl0ZW0gdG8gaGFwcGVuIGluIHRoZQpAQCAtMTcxLDcgKzE3Myw3IEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2Vi
Q29yZTo6UmVzCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBp
dGVtLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNrRm9y
d2FyZEl0ZW06IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAg
YXV0byBpdGVtU3RhdGVzID0gbV9wYWdlLmJhY2tGb3J3YXJkTGlzdCgpLmZpbHRlcmVkSXRlbVN0
YXRlcyhbdGhpcywgdGFyZ2V0SXRlbSA9ICZpdGVtXShhdXRvJiBpdGVtKSB7CiAgICAgICAgIGlm
IChhdXRvKiBwYWdlID0gaXRlbS5zdXNwZW5kZWRQYWdlKCkpIHsKQEAgLTE4MCw4ICsxODIsOCBA
QCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAmaXRl
bSAhPSB0YXJnZXRJdGVtOwogICAgIH0pOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6VXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goV1RGTW92ZShpdGVtU3Rh
dGVzKSksIG1fcGFnZS5wYWdlSUQoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIGl0
ZW0uaXRlbUlEKCksICpuYXZpZ2F0aW9uLmJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSgpLCBXZWJD
b3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9s
aWNpZXMpKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
cGRhdGVCYWNrRm9yd2FyZExpc3RGb3JSZWF0dGFjaChXVEZNb3ZlKGl0ZW1TdGF0ZXMpKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9u
Lm5hdmlnYXRpb25JRCgpLCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZy
YW1lTG9hZFR5cGUoKSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMs
IFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5l
c3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKQEAgLTE5Niw3ICsxOTgsNyBAQCBpbmxpbmUgYm9vbCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6dmFsaWRhdGVJbnB1dCh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBPcHRpb25hbAogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJh
bWUodWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgImRpZENyZWF0ZU1haW5GcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCku
dG9VSW50NjQoKSwgZnJhbWVJRCk7CiAgICAgQVNTRVJUKCFtX21haW5GcmFtZSk7CiAKICAgICBt
X21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZShtX3BhZ2UsIGZyYW1lSUQpOwpAQCAt
MjM0LDcgKzIzNiw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWluCiAgICAgaWYgKCF2YWxpZGF0
ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5h
dmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5w
YWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVCht
X3Byb3Zpc2lvbmFsTG9hZFVSTC5pc051bGwoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwg
PSB1cmw7CiAKQEAgLTI1NCw3ICsyNTYsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29ucwogICAg
IGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
ImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFn
ZUlEKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25J
RCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQsIG5hdmln
YXRpb25JRCk7CiAgICAgQVNTRVJUKCFtX3Byb3Zpc2lvbmFsTG9hZFVSTC5pc051bGwoKSk7CiAg
ICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB7IH07CiAKQEAgLTI3MCw5ICsyNzIsOSBAQCB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aQogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZp
Z2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBt
X3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUi
IFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25J
RCk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB7IH07Ci0gICAgbV9wcm9jZXNzLT5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9w
YWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgbV93YXNDb21taXR0ZWQgPSB0cnVlOwog
ICAgIG1fcGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBt
aW1lVHlwZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNl
cnRpZmljYXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVD
b250ZW50LCB1c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KQEAgLTI5NSw3ICsyOTcs
NyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbgogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAorICAgIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1
aW50NjRfdCBsaXN0ZW5lcklEKQogewogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBu
YXZpZ2F0aW9uSUQpKQpAQCAtMzQxLDcgKzM0Myw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRl
CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTM3NCw2ICszNzYsMTYgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vu
KGNvbnN0IElQQzo6RGF0YVIKIH0KICNlbmRpZgogCitJUEM6OkNvbm5lY3Rpb24qIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVy
biBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKTsKK30KKwogdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUKGRlY29kZXIubWVzc2FnZVJlY2VpdmVy
TmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRl
eCA2NDU2YzFmOTE2ZC4uYjg2M2ZkZDAzYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVy
LmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgIldlYkZyYW1lUG9s
aWN5TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCkBA
IC01OCw3ICs1OSw3IEBAIHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YTsKIHN0cnVjdCBVUkxT
Y2hlbWVUYXNrUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogCi1j
bGFzcyBQcm92aXNpb25hbFBhZ2VQcm94eSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFByb3Zpc2lvbmFsUGFnZVByb3h5PiB7CitjbGFzcyBQcm92
aXNpb25hbFBhZ2VQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUg
SVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJvdmlzaW9uYWxQYWdl
UHJveHk+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBQcm92
aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBz
dGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBib29sIGlzU2VydmVyUmVkaXJlY3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYs
IFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwpAQCAtOTIsOSArOTMsMTMgQEAgcHJpdmF0
ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICAKKyAgICAvLyBJUEM6Ok1lc3Nh
Z2VTZW5kZXIKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
Y29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLAotICAgICAgICB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQp
OwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmLAogICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNh
blNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTExMCw3ICsxMTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYp
OwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUmJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9E
YXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0
YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5
LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwg
Y29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09L
KQogICAgIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5G
cmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCA2Njc5ZDQ1YmQ5OS4uZTZm
NWYxNGQ2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZVdlYklu
c3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6bG9hZChjb25zdCBTdHJpbmcmIGRlYnVnZ2FibGVUeXBlLCBjb25zdCBTdHJpbmcm
IGIKICAgICBtX2RlYnVnZ2FibGVUeXBlID0gZGVidWdnYWJsZVR5cGU7CiAgICAgbV9iYWNrZW5k
Q29tbWFuZHNVUkwgPSBiYWNrZW5kQ29tbWFuZHNVUkw7CiAKLSAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6SW5pdGlhbGl6
ZShkZWJ1Z2dhYmxlVHlwZSwgYmFja2VuZENvbW1hbmRzVVJMKSwgbV9pbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJ
bnNwZWN0b3JVSTo6SW5pdGlhbGl6ZShkZWJ1Z2dhYmxlVHlwZSwgYmFja2VuZENvbW1hbmRzVVJM
KSk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIFdlYkluc3Bl
Y3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkpKTsKIH0KIApAQCAtODEsNyArODEsNyBAQCB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzaG93KCkKIAogdm9pZCBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVX
ZWJJbnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpLCBtX2luc3BlY3Rv
clBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVdlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSkpOwogfQog
CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpmcm9udGVuZERpZENsb3NlKCkKQEAgLTE1
Miw3ICsxNTIsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVu
ZFBhZ2VBbmRXaW5kb3coKQogCiAgICAgdHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFn
ZSwgbnVsbHB0cik7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vz
cygpLmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFnZSwgV2ViSW5zcGVj
dG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKSk7CiB9CiAKQEAgLTE2MSw3ICsxNjEsNyBAQCB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygp
CiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVt
b3RlV2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0b3JQ
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAg
ICAgdW50cmFja0luc3BlY3RvclBhZ2UobV9pbnNwZWN0b3JQYWdlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCA1YTE0ZmJlNGRjZC4uYjJmNzcyOWZkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsK
IH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBjaGFsbGVuZ2UpCit2b2lkIFNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5PiYmIGNoYWxsZW5nZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKICAg
ICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKaW5kZXggOTMyNDVmMGRjNzYuLmU5MzY1YWZh
YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5oCkBAIC00MSwxNCArNDEsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJv
b2wgaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtl
ckRpcmVjdG9yeSk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5PiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwogCiAgICAgdm9pZCBzdGFydChjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9u
SUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBk
YXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSB7IHJl
dHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAK
IHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC01OSw3ICs1OSw3IEBA
IHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYs
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwog
CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKLSAg
ICB1aW50NjRfdCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cAppbmRleCAxMzQ2ZmNjMDVjNS4uNjc0YjNmMDY4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtODksMTAgKzg5LDEwIEBAIFN1c3Bl
bmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVm
PFdlYlByb2Nlc3NQcm94eT4mCiAjZW5kaWYKIHsKICAgICBtX3Byb2Nlc3MtPmluY3JlbWVudFN1
c3BlbmRlZFBhZ2VDb3VudCgpOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJ
RCgpLCAqdGhpcyk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkudG9V
SW50NjQoKSwgKnRoaXMpOwogCiAgICAgbV9zdXNwZW5zaW9uVGltZW91dFRpbWVyLnN0YXJ0T25l
U2hvdChzdXNwZW5zaW9uVGltZW91dCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0cnVlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZCh0cnVlKSk7CiB9CiAKIFN1c3BlbmRl
ZFBhZ2VQcm94eTo6flN1c3BlbmRlZFBhZ2VQcm94eSgpCkBAIC0xMTMsNyArMTEzLDcgQEAgU3Vz
cGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKICAgICBjbG9zZSgpOwogCiAg
ICAgaWYgKG1fc3VzcGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6U3VzcGVuZGluZykK
LSAgICAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAog
ICAgIC8vIFdlIGNhbGwgbWF5YmVTaHV0RG93bigpIGFzeW5jaHJvbm91c2x5IHNpbmNlIHRoZSBT
dXNwZW5kZWRQYWdlIGlzIGN1cnJlbnRseSBiZWluZyByZW1vdmVkIGZyb20gdGhlIFdlYlByb2Nl
c3NQb29sCiAgICAgLy8gYW5kIHdlIHdhbnQgdG8gYXZvaWQgcmUtZW50ZXJpbmcgV2ViUHJvY2Vz
c1Bvb2wgbWV0aG9kcy4KQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94
eTo6dW5zdXNwZW5kKCkKICAgICBBU1NFUlQobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lv
blN0YXRlOjpTdXNwZW5kZWQpOwogCiAgICAgbV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNwZW5zaW9u
U3RhdGU6OlJlc3VtZWQ7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRJc1N1c3BlbmRlZChmYWxzZSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0SXNTdXNwZW5kZWQoZmFsc2UpKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQ
YWdlUHJveHk6OmNsb3NlKCkKQEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQ
cm94eTo6Y2xvc2UoKQogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBT
dXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkiLCB0aGlzKTsKICAgICBtX2lzQ2xvc2VkID0gdHJ1
ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CiB9CiAK
IHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpwYWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdNb2RlKCkKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlk
UHJvY2Vzc1JlcXVlc3RUb1N1c3BlbmQoU3VzcGVuc2lvblN0YXRlIG5ld1N1c3BlbnNpbwogICAg
IG1fc3VzcGVuc2lvblRva2VuID0gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1fc3VzcGVuc2lvblN0YXRl
ID09IFN1c3BlbnNpb25TdGF0ZTo6RmFpbGVkVG9TdXNwZW5kKQogICAgICAgICBjbG9zZVdpdGhv
dXRGbGFzaGluZygpOwpAQCAtMjQyLDExICsyNDIsMjEgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJv
eHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LAogewogfQogCitJUEM6OkNvbm5lY3Rpb24qIFN1c3BlbmRlZFBhZ2VQcm94eTo6bWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3Byb2Nlc3MtPmNvbm5lY3Rp
b24oKTsKK30KKwordWludDY0X3QgU3VzcGVuZGVkUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2
NCgpOworfQorCiAjaWYgIUxPR19ESVNBQkxFRAogCiBjb25zdCBjaGFyKiBTdXNwZW5kZWRQYWdl
UHJveHk6OmxvZ2dpbmdTdHJpbmcoKSBjb25zdAogewotICAgIHJldHVybiBkZWJ1Z1N0cmluZygi
KDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSksICIgcGFnZSBJRCAi
LCBtX3BhZ2UucGFnZUlEKCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5n
KCIoMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBwYWdlIElE
ICIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zdXNwZW5zaW9uU3RhdGUpLCAnKScpOwogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXgg
MGRhZDA1NGIyNzIuLjYzNWViYTAwMGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1
ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTM5LDcgKzQwLDcgQEAg
Y2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBlbnVtIGNsYXNzIFNob3VsZERlbGF5Q2xvc2luZ1Vu
dGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSA6IGJvb2wgeyBObywgWWVzIH07
CiAKLWNsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eSBmaW5hbDogcHVibGljIElQQzo6TWVzc2FnZVJl
Y2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB7CitjbGFz
cyBTdXNwZW5kZWRQYWdlUHJveHkgZmluYWw6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIs
IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3VzcGVu
ZGVkUGFnZVByb3h5PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgU3VzcGVuZGVkUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIHVpbnQ2NF90IG1haW5GcmFtZUlELCBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5n
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOwpAQCAtNzEsNiArNzIsMTAgQEAgcHJpdmF0ZToK
ICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dCBmaW5hbDsKIAogICAgIFdlYlBhZ2VQcm94eSYgbV9wYWdlOwogICAgIFJlZjxXZWJQcm9jZXNz
UHJveHk+IG1fcHJvY2VzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNw
cAppbmRleCA5NzExYjIzMzcyMS4uMjYwMDhiMTQxZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNl
ckNvbnRlbgogICAgIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKHdvcmxkLCBudW1iZXJSZW1v
dmVkKTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQs
IGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFt
ZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJv
Y2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggNjIzMzAxMTE2ZWQuLjBlZDM2YTU5Y2MzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAK
ICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTEx
MCw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5k
bGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZGlkUG9zdE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKTsKIAogICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250
ZW50V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6VXNl
ckNvbnRlbnRXb3JsZCYsIHVuc2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODE3
MTQzNTFmY2UuLjI1YTRlMjkxMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSArMjQsNSBAQAogICovCiAKIG1lc3Nh
Z2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IHsKLURpZFBvc3RNZXNzYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRh
LCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkg
V2FudHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0
X3QgbWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRzQ29u
bmVjdGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDFmMjYw
MjkxY2M3Li5iZDM3YmEwYzk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHk6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpCiAgICAgICAgIGlmIChtX2dyYW50ZWRS
ZXF1ZXN0cy5pc0VtcHR5KCkgJiYgISpvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Q2FwdHVyZURldmljZXNDaGFuZ2VkKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
ICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXB0dXJlRGV2aWNlc0NoYW5nZWQo
KSk7CiAgICAgfTsKIAogICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShtX3BhZ2UubWFpbkZyYW1lKCktPnVybCgpKTsKQEAgLTE4Miw3ICsxODIsNyBAQCB2
b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkZW55UmVxdWVzdCh1
aW50NjRfdCB1c2VyTWVkaWFJRCwgVQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgdXNl
ck1lZGlhSUQsICIsIHJlYXNvbjogIiwgcmVhc29uKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2VyTWVk
aWFBY2Nlc3NXYXNEZW5pZWQodXNlck1lZGlhSUQsIHRvV2ViQ29yZShyZWFzb24pLCBpbnZhbGlk
Q29uc3RyYWludCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0RlbmllZCh1c2VyTWVkaWFJRCwgdG9XZWJDb3Jl
KHJlYXNvbiksIGludmFsaWRDb25zdHJhaW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShy
ZWFzb24pOwogICAgIFVOVVNFRF9QQVJBTShpbnZhbGlkQ29uc3RyYWludCk7CkBAIC0yOTYsMTEg
KzI5NiwxMSBAQCBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpn
cmFudEFjY2Vzcyhjb25zdCBVc2VyTWVkaWFQZXJtaXNzaQogICAgIH0KIAogICAgICsrbV9oYXNQ
ZW5kaW5nQ2FwdHVyZTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVk
IHsgcmVxdWVzdC51c2VyTWVkaWFJRCgpLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCksIHJlcXVlc3Qu
dmlkZW9EZXZpY2UoKSwgcmVxdWVzdC5kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoKSB9LCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0geworICAgIG1fcGFnZS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQgeyBy
ZXF1ZXN0LnVzZXJNZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9EZXZpY2UoKSwgcmVxdWVzdC52aWRl
b0RldmljZSgpLCByZXF1ZXN0LmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCgpIH0sIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC0tbV9oYXNQZW5kaW5nQ2FwdHVyZTsKLSAgICB9
LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlm
CkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDYKIAogICAgICAgICAg
ICAgYm9vbCByZXZlYWxJZHNBbmRMYWJlbHMgPSBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIHx8
IHdhc0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nlc3MoZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1lbnRP
cmlnaW4uZ2V0KCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4uZ2V0KCkpOwogCi0gICAgICAgICAg
ICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlTWVk
aWFEZXZpY2VFbnVtZXJhdGlvbiB7IHVzZXJNZWRpYUlELCBjb21wdXRlRmlsdGVyZWREZXZpY2VM
aXN0KHJldmVhbElkc0FuZExhYmVscywgZGV2aWNlSURIYXNoU2FsdCksIGRldmljZUlESGFzaFNh
bHQsIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MgfSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAg
ICAgICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZU1lZGlhRGV2
aWNlRW51bWVyYXRpb24geyB1c2VyTWVkaWFJRCwgY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChy
ZXZlYWxJZHNBbmRMYWJlbHMsIGRldmljZUlESGFzaFNhbHQpLCBkZXZpY2VJREhhc2hTYWx0LCBv
cmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIH0pOwogICAgICAgICB9KTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAppbmRl
eCAyNDgxODJkODA5Mi4uZGIxOGE0NWIwMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcApAQCAtNjYsMTAgKzY2LDEwIEBAIHN0YXRp
YyBjb25zdCBmbG9hdCBtaW5pbXVtU2Nyb2xsRXZlbnRSYXRpb0ZvclN3aXBlID0gMC41Owogc3Rh
dGljIGNvbnN0IGZsb2F0IHN3aXBlU25hcHNob3RSZW1vdmFsUmVuZGVyVHJlZVNpemVUYXJnZXRG
cmFjdGlvbiA9IDAuNTsKICNlbmRpZgogCi1zdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgVmlld0dl
c3R1cmVDb250cm9sbGVyKj4mIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpCitz
dGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4mIHZp
ZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpCiB7CiAgICAgLy8gVGhlIGtleSBpbiB0
aGlzIG1hcCBpcyB0aGUgYXNzb2NpYXRlZCBwYWdlIElELgotICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxIYXNoTWFwPHVpbnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1
cmVDb250cm9sbGVyczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxQYWdlSWRl
bnRpZmllciwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJlQ29udHJvbGxlcnM7
CiAgICAgcmV0dXJuIHZpZXdHZXN0dXJlQ29udHJvbGxlcnMuZ2V0KCk7CiB9CiAKQEAgLTEwMyw3
ICsxMDMsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZGlzY29ubmVjdEZyb21Qcm9j
ZXNzKCkKICAgICBpZiAoIW1faXNDb25uZWN0ZWRUb1Byb2Nlc3MpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dl
YlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAg
IG1faXNDb25uZWN0ZWRUb1Byb2Nlc3MgPSBmYWxzZTsKIH0KIApAQCAtMTEyLDExICsxMTIsMTEg
QEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbm5lY3RUb1Byb2Nlc3MoKQogICAgIGlm
IChtX2lzQ29ubmVjdGVkVG9Qcm9jZXNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3dlYlBh
Z2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlE
KCksICp0aGlzKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMpOwogICAgIG1faXND
b25uZWN0ZWRUb1Byb2Nlc3MgPSB0cnVlOwogfQogCi1WaWV3R2VzdHVyZUNvbnRyb2xsZXIqIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1cmUodWludDY0X3QgcGFnZUlE
LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBnZXN0dXJlSUQpCitWaWV3R2VzdHVy
ZUNvbnRyb2xsZXIqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1cmUo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBn
ZXN0dXJlSUQpCiB7CiAgICAgYXV0byBnZXN0dXJlQ29udHJvbGxlckl0ZXIgPSB2aWV3R2VzdHVy
ZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKS5maW5kKHBhZ2VJRCk7CiAgICAgaWYgKGdlc3R1cmVD
b250cm9sbGVySXRlciA9PSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKS5lbmQo
KSkKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Zm9yY2VS
ZXBhaW50SWZOZWVkZWQoKQogCiAgICAgbV9oYXNPdXRzdGFuZGluZ1JlcGFpbnRSZXF1ZXN0ID0g
dHJ1ZTsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwor
ICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAgICAgR2VzdHVyZUlE
IGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBtX3dlYlBhZ2VQcm94eS5mb3Jj
ZVJlcGFpbnQoVm9pZENhbGxiYWNrOjpjcmVhdGUoW3BhZ2VJRCwgZ2VzdHVyZUlEXSAoQ2FsbGJh
Y2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxl
ciA9IGNvbnRyb2xsZXJGb3JHZXN0dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKQEAgLTYxNyw3ICs2
MTcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVxdWVzdFJlbmRlclRyZWVTaXpl
Tm90aWZpY2F0aW9uSWZOZWVkZWQoKQogICAgIGF1dG8mIHByb2Nlc3MgPSBtX3dlYlBhZ2VQcm94
eS5wcm92aXNpb25hbFBhZ2VQcm94eSgpID8gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdl
UHJveHkoKS0+cHJvY2VzcygpIDogbV93ZWJQYWdlUHJveHkucHJvY2VzcygpOwogICAgIGF1dG8g
dGhyZXNob2xkID0gbV9zbmFwc2hvdFJlbW92YWxUcmFja2VyLnJlbmRlclRyZWVTaXplVGhyZXNo
b2xkKCk7CiAKLSAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHRocmVzaG9s
ZCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6
OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0
aW9uVGhyZXNob2xkKHRocmVzaG9sZCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0
KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
ZXdHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1
cmVDb250cm9sbGVyLmgKaW5kZXggNDMxYzI3NjZkMDguLmMxNjcwZDNhOTRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNU
aW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29w
Lmg+CkBAIC0xNzUsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIFZpZXdHZXN0dXJlQ29udHJvbGxlciog
Y29udHJvbGxlckZvckdlc3R1cmUodWludDY0X3QgcGFnZUlELCBHZXN0dXJlSUQpOworICAgIHN0
YXRpYyBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JHZXN0dXJlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBHZXN0dXJlSUQpOwogCiAgICAgc3RhdGljIEdlc3R1cmVJRCB0YWtl
TmV4dEdlc3R1cmVJRCgpOwogICAgIHZvaWQgd2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAppbmRl
eCBmMmU3YjkzNDA1Ny4uOTkxZGMyZmNmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBWaXNpdGVkTGlu
a1N0b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQ
Qzo6Q29ubmUKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFZpc2l0ZWRMaW5r
U3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU2hhcmVk
U3RyaW5nSGFzaCBsaW5rSGFzaCkKK3ZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRlZExp
bmtIYXNoRnJvbVBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNoIGxp
bmtIYXNoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6
OndlYlBhZ2UocGFnZUlEKSkgewogICAgICAgICBpZiAoIXdlYlBhZ2VQcm94eS0+YWRkc1Zpc2l0
ZWRMaW5rcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCmlu
ZGV4IDA2ZjIwYmE5MWNiLi4wMmI0OWJhYzU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZGlkSW52YWxpZGF0ZVNoYXJlZE1lbW9yeSgpIGZpbmFsOwogICAgIHZvaWQgZGlkVXBkYXRlU2hh
cmVkU3RyaW5nSGFzaGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoPiYg
YWRkZWRIYXNoZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoPiYgcmVt
b3ZlZEhhc2hlcykgZmluYWw7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdl
KHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCk7CisgICAgdm9pZCBh
ZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U2hhcmVkU3RyaW5nSGFzaCk7CiAKICAgICB2b2lkIHNlbmRTdG9yZUhhbmRsZVRvUHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KaW5kZXggZTc4NjJlMzY1YjAuLjJlNjZjNDI4
MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3Jl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3Rv
cmUubWVzc2FnZXMuaW4KQEAgLTIxLDUgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2Fn
ZXMgLT4gVmlzaXRlZExpbmtTdG9yZSB7Ci0gICAgQWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2Uo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBsaW5rSGFzaCkKKyAgICBBZGRWaXNpdGVkTGlua0hh
c2hGcm9tUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGxpbmtI
YXNoKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGlj
YXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHkuY3BwCmluZGV4IGI1YTVjODIzNGQ4Li45ODA1ZTAxNTY1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNv
b3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhl
bnRpY2F0aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5LmNwcApAQCAtNDUsMTIg
KzQ1LDEyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KFdlYlBhZ2VQcm94eSYgd2Vi
UGFnZVByb3h5KQogICAgIDogbV93ZWJQYWdlUHJveHkod2ViUGFnZVByb3h5KQogewotICAgIG1f
d2ViUGFnZVByb3h5LnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1
dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fd2Vi
UGFnZVByb3h5LnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2Vzcygp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9y
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkudG9V
SW50NjQoKSwgKnRoaXMpOwogfQogCiBXZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3JQcm94eTo6
fldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvclByb3h5KCkKIHsKLSAgICBtX3dlYlBhZ2VQcm94
eS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9
CiAKIHZvaWQgV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yUHJveHk6Om1ha2VDcmVkZW50aWFs
KHVpbnQ2NF90IG1lc3NhZ2VJZCwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBoYXNoLCBjb25zdCBX
ZWJDb3JlOjpQdWJsaWNLZXlDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zJiBvcHRpb25zKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAppbmRleCA4
N2IwYWZjMjBjMi4uMGRiZTBhZmI0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgV2ViRWRpdENv
bW1hbmRQcm94eTo6dW5hcHBseSgpCiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFnZS0+aGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwg
bV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VW5hcHBseUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogICAgIG1fcGFnZS0+cmVn
aXN0ZXJFZGl0Q29tbWFuZCgqdGhpcywgVW5kb09yUmVkbzo6UmVkbyk7CiB9CiAKQEAgLTY0LDcg
KzY0LDcgQEAgdm9pZCBXZWJFZGl0Q29tbWFuZFByb3h5OjpyZWFwcGx5KCkKICAgICBpZiAoIW1f
cGFnZSB8fCAhbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFwcGx5RWRp
dENvbW1hbmQobV9jb21tYW5kSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246
OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFwcGx5RWRpdENvbW1hbmQobV9jb21tYW5kSUQp
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CiAgICAgbV9wYWdlLT5yZWdpc3RlckVkaXRDb21tYW5kKCp0aGlzLCBVbmRvT3JSZWRv
OjpVbmRvKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApp
bmRleCA1Yzg1MWI3Mjc1NS4uYjAxYjMwNTA1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6
bG9hZFVSTChjb25zdCBVUkwmIHVybCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVS
TEluRnJhbWUodXJsLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkxJbkZyYW1lKHVybCwgbV9mcmFtZUlEKSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
TmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMKQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdlYkZyYW1l
UHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBNSU1FVAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YUluRnJhbWUoZGF0
YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9mcmFtZUlEKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YUlu
RnJhbWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9mcmFtZUlEKSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmcoKSBjb25zdApAQCAtMTAzLDcg
KzEwMyw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmcoKSBjb25zdAogICAgIGlm
ICghbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9hZGluZ0ZyYW1l
KG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U3RvcExvYWRpbmdGcmFtZShtX2ZyYW1lSUQpKTsKIH0KICAgICAKIGJvb2wg
V2ViRnJhbWVQcm94eTo6Y2FuUHJvdmlkZVNvdXJjZSgpIGNvbnN0CkBAIC0yNjIsNyArMjYyLDcg
QEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpjb2xsYXBzZVNlbGVjdGlvbigpCiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShtX2ZyYW1lSUQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbGxhcHNl
U2VsZWN0aW9uSW5GcmFtZShtX2ZyYW1lSUQpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwCmluZGV4
IDhlOTNiMWRjMmQwLi4zZjhiZjEwYjcwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKQEAgLTQ0LDI1ICs0NCwyNSBA
QCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KFdl
YlBhZ2VQcm94eSYgcGFnZSwgV2ViRnVsbAogICAgIDogbV9wYWdlKHBhZ2UpCiAgICAgLCBtX2Ns
aWVudChjbGllbnQpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksICp0aGlzKTsKIH0KIAog
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6fldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkoKQog
ewotICAgIG1fcGFnZS5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fY2xpZW50LmNsb3NlRnVsbFNjcmVl
bk1hbmFnZXIoKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp3aWxsRW50
ZXJGdWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLndpbGxFbnRl
ckZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEVudGVyRnVsbFNjcmVlbigpLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6
V2lsbEVudGVyRnVsbFNjcmVlbigpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5OjpkaWRFbnRlckZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50
KCkuZGlkRW50ZXJGdWxsc2NyZWVuKCZtX3BhZ2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbFNjcmVlbigpLCBt
X3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVu
TWFuYWdlcjo6RGlkRW50ZXJGdWxsU2NyZWVuKCkpOwogCiAgICAgaWYgKG1fcGFnZS5pc0NvbnRy
b2xsZWRCeUF1dG9tYXRpb24oKSkgewogICAgICAgICBpZiAoV2ViQXV0b21hdGlvblNlc3Npb24q
IGF1dG9tYXRpb25TZXNzaW9uID0gbV9wYWdlLnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9t
YXRpb25TZXNzaW9uKCkpCkBAIC03MywxMyArNzMsMTMgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpkaWRFbnRlckZ1bGxTY3JlZW4oKQogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5Ojp3aWxsRXhpdEZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xp
ZW50KCkud2lsbEV4aXRGdWxsc2NyZWVuKCZtX3BhZ2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbFNjcmVlbigp
LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsU2NyZWVuKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNj
cmVlbkNsaWVudCgpLmRpZEV4aXRGdWxsc2NyZWVuKCZtX3BhZ2UpOwotICAgIG1fcGFnZS5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsU2Ny
ZWVuKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbFNjcmVlbigpKTsKICAgICAKICAgICBpZiAobV9w
YWdlLmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpKSB7CiAgICAgICAgIGlmIChXZWJBdXRvbWF0
aW9uU2Vzc2lvbiogYXV0b21hdGlvblNlc3Npb24gPSBtX3BhZ2UucHJvY2VzcygpLnByb2Nlc3NQ
b29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKQEAgLTg5LDEyICs4OSwxMiBAQCB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsU2NyZWVuKCkKIAogdm9pZCBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5OjpzZXRBbmltYXRpbmdGdWxsU2NyZWVuKGJvb2wgYW5pbWF0aW5n
KQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1h
bmFnZXI6OlNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYW5pbWF0aW5nKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEFu
aW1hdGluZ0Z1bGxTY3JlZW4oYW5pbWF0aW5nKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eTo6cmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkKIHsKLSAgICBtX3BhZ2UucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RXhpdEZ1bGxT
Y3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXI6OlJlcXVlc3RFeGl0RnVsbFNjcmVlbigpKTsKIH0KIAogdm9pZCBX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5
Ym9hcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC0xMDgsMjcgKzEwOCwyNyBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnN1
cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCwgQ29tcGxldGlvbgogCiB2b2lkIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNhdmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2F2ZVNj
cm9sbFBvc2l0aW9uKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTYXZlU2Nyb2xsUG9zaXRpb24oKSk7CiB9CiAKIHZv
aWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6cmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIHsK
LSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlc3RvcmVTY3JvbGxQb3NpdGlv
bigpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRGdWxsc2NyZWVu
SW5zZXRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50JiBpbnNldHMpCiB7Ci0gICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVs
bHNjcmVlbkluc2V0cyhpbnNldHMpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkluc2V0cyhpbnNl
dHMpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRGdWxsc2NyZWVu
QXV0b0hpZGVEdXJhdGlvbihTZWNvbmRzIGR1cmF0aW9uKQogewotICAgIG1fcGFnZS5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5BdXRv
SGlkZUR1cmF0aW9uKGR1cmF0aW9uKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5BdXRvSGlkZUR1
cmF0aW9uKGR1cmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
c2V0RnVsbHNjcmVlbkNvbnRyb2xzSGlkZGVuKGJvb2wgaGlkZGVuKQogewotICAgIG1fcGFnZS5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxzY3Jl
ZW5Db250cm9sc0hpZGRlbihoaWRkZW4pLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkNvbnRyb2xz
SGlkZGVuKGhpZGRlbikpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNs
b3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcApp
bmRleCAxMmJiMjYxZDA3Yy4uMDNhMGE5ZTZlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgV2ViSW5zcGVjdG9y
UHJveHk6OldlYkluc3BlY3RvclByb3h5KFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSkKIHsK
ICAgICBpZiAoaW5zcGVjdGVkUGFnZSAmJiBpbnNwZWN0ZWRQYWdlLT5oYXNSdW5uaW5nUHJvY2Vz
cygpKSB7CiAgICAgICAgIG1faW5zcGVjdGVkUGFnZSA9IGluc3BlY3RlZFBhZ2U7Ci0gICAgICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdl
LT5wYWdlSUQoKSwgKnRoaXMpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMp
OwogICAgIH0KIH0KIApAQCAtODgsNyArODgsNyBAQCBXZWJQcmVmZXJlbmNlcyYgV2ViSW5zcGVj
dG9yUHJveHk6Omluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpIGNvbnN0CiB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjppbnZhbGlkYXRlKCkKIHsKICAgICBpZiAobV9pbnNwZWN0ZWRQYWdlKQotICAg
ICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVj
dGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAK
ICAgICBjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOwogICAgIHBsYXRmb3JtSW52YWxpZGF0
ZSgpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNz
YWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgaWYgKCFtX2luc3BlY3Rv
clBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVz
c2FnZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNz
YWdlKSk7CiB9CiAKIC8vIFB1YmxpYyBBUElzCkBAIC0xMjcsNyArMTI3LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6Y29ubmVjdCgpCiAgICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAKICAg
ICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JJ
bnRlcnJ1cHREaXNwYXRjaGVyOjpOb3RpZnlOZWVkRGVidWdnZXJCcmVhaygpLCAwKTsKLSAgICBt
X2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNo
b3coKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OnNob3coKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmNsb3NlKCkKICAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSk7CiAKICAgICBjbG9z
ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOwogfQpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnJlb3BlbigpCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpyZXNldCgp
CiB7CiAgICAgaWYgKG1faW5zcGVjdGVkUGFnZSkgewotICAgICAgICBtX2luc3BlY3RlZFBhZ2Ut
PnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwor
ICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5z
cGVjdGVkUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgICAgIG1faW5zcGVjdGVkUGFn
ZSA9IG51bGxwdHI7CiAgICAgfQogfQpAQCAtMTk2LDEwICsxOTYsMTAgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6dXBkYXRlRm9yTmV3UGFnZVByb2Nlc3MoV2ViUGFnZVByb3h5KiBpbnNwZWN0
ZWRQYWdlKQogICAgIEFTU0VSVChpbnNwZWN0ZWRQYWdlKTsKIAogICAgIG1faW5zcGVjdGVkUGFn
ZSA9IGluc3BlY3RlZFBhZ2U7Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CisgICAgbV9pbnNwZWN0
ZWRQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgp
LnRvVUludDY0KCksICp0aGlzKTsKIAogICAgIGlmIChtX2luc3BlY3RvclBhZ2UpCi0gICAgICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpVcGRhdGVDb25uZWN0aW9uKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVD
b25uZWN0aW9uKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRGcm9udGVuZENv
bm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMjA3LDcg
KzIwNyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJ
UEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpCiAgICAgaWYgKCFtX2luc3BlY3RlZFBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rp
b25JZGVudGlmaWVyKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0
ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEZyb250ZW5kQ29ubmVjdGlv
bihjb25uZWN0aW9uSWRlbnRpZmllcikpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpz
aG93Q29uc29sZSgpCkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
c2hvd0NvbnNvbGUoKQogCiAgICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAKLSAgICBtX2luc3Bl
Y3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dDb25z
b2xlKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29uc29sZSgpKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jlc291cmNlcygpCiAKICAgICBjcmVhdGVGcm9udGVu
ZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U2hvd1Jlc291cmNlcygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hv
d1Jlc291cmNlcygpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1RpbWVsaW5l
cygpCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1RpbWVs
aW5lcygpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1RpbWVsaW5lcygp
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1RpbWVsaW5lcygpKTsKIH0KIAogdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZy
YW1lKQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWlu
UmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSkKIAogICAgIGNyZWF0ZUZyb250
ZW5kUGFnZSgpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQo
KSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0b20o
KQpAQCAtMjc4LDE5ICsyNzgsMTkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKEF0
dGFjaG1lbnRTaWRlIHNpZGUpCiAgICAgaWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0
b3JQYWdlUHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZCh0cnVlKTsKIAot
ICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U2V0QXR0YWNoZWQodHJ1ZSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1f
aW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0
cnVlKSk7CiAKICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICBjYXNlIEF0dGFj
aG1lbnRTaWRlOjpCb3R0b206Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3Rv
clBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSk7CiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBBdHRhY2htZW50U2lkZTo6UmlnaHQ6Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCks
IG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCkpOwogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkxlZnQ6Ci0gICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hl
ZExlZnQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9y
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0zMDcsOCArMzA3LDggQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6ZGV0YWNoKCkKICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3Rv
clBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGZhbHNlKTsKIAot
ICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKLSAgICBt
X2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKGZhbHNlKSk7Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNo
ZWQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFjaCgpOwogfQpAQCAtMzQxLDkgKzM0MSw5IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZVBhZ2VQcm9maWxpbmcoKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9pc1Byb2ZpbGluZ1BhZ2UpCi0gICAgICAgIG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcFBhZ2VQcm9maWxp
bmcoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpKTsKICAg
ICBlbHNlCi0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJvZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U3RhcnRQYWdlUHJvZmlsaW5nKCkpOwogCiAgICAgLy8gRklYTUU6IGhhdmUgdGhlIFdl
YlByb2Nlc3Mgbm90aWZ5IHVzIG9uIHN0YXRlIGNoYW5nZXMuCiAgICAgbV9pc1Byb2ZpbGluZ1Bh
Z2UgPSAhbV9pc1Byb2ZpbGluZ1BhZ2U7CkBAIC0zNTYsMTAgKzM1NiwxMCBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5Ojp0b2dnbGVFbGVtZW50U2VsZWN0aW9uKCkKIAogICAgIGlmIChtX2VsZW1l
bnRTZWxlY3Rpb25BY3RpdmUpIHsKICAgICAgICAgbV9pZ25vcmVFbGVtZW50U2VsZWN0aW9uQ2hh
bmdlID0gdHJ1ZTsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wRWxlbWVudFNlbGVjdGlvbigpLCBtX2luc3BlY3RlZFBh
Z2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlN0b3BFbGVtZW50U2VsZWN0aW9uKCkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGNvbm5lY3QoKTsKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydEVsZW1lbnRTZWxlY3Rpb24oKSwgbV9pbnNwZWN0
ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTdGFydEVsZW1lbnRTZWxlY3Rpb24oKSk7CiAgICAgfQogfQogCkBA
IC0zOTEsNyArMzkxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRQ
YWdlKCkKIAogICAgIHRyYWNrSW5zcGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UsIG1faW5zcGVj
dGVkUGFnZSk7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKKyAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkudG9VSW50
NjQoKSwgKnRoaXMpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLmFzc3VtZVJlYWRB
Y2Nlc3NUb0Jhc2VVUkwoKm1faW5zcGVjdG9yUGFnZSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3Bl
Y3RvckJhc2VVUkwoKSk7CiB9CiAKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1
bmRlclRlcwogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVy
VGVzdCwgaW5zcGVjdGlvbkxldmVsKCkpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxp
c2hDb25uZWN0aW9uKG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0LCBpbnNw
ZWN0aW9uTGV2ZWwoKSkpOwogCiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlRnJvbnRlbmQpOwogICAg
IG1faXNBY3RpdmVGcm9udGVuZCA9IHRydWU7CkBAIC00MjMsMjYgKzQyMywyNiBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFj
aCwgYm9vbCB1bmRlclRlcwogICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNo
ZWQoKTsKICAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRT
aWRlPihpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgp
KTsKIAotICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFnZS0+
cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2V0QXR0YWNoZWQobV9pc0F0dGFjaGVkKSk7CiAKICAgICAgICAgaWYgKG1faXNB
dHRhY2hlZCkgewogICAgICAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7CiAgICAg
ICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206Ci0gICAgICAgICAgICAgICAgbV9p
bnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0
dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAg
ICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFj
aGVkQm90dG9tKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNl
IEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgp
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBtX2luc3BlY3Rv
clBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCkpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRl
OjpMZWZ0OgotICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZExlZnQoKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRMZWZ0KCkpOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hl
ZCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIG1faW5zcGVjdG9y
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCkpOwogCi0gICAg
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUk6OlNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9jYW5BdHRhY2gpKTsKICAgICB9
CiAKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgbV91bmRlclRl
c3QgPyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yVGVzdFBhZ2VVUkwoKSA6IFdlYkluc3Bl
Y3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkpKTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkKIAogICAgIFNldEZvclNjb3BlPGJvb2w+IGlzT3Bl
bmluZyhtX2lzT3BlbmluZywgdHJ1ZSk7CiAgICAgbV9pc1Zpc2libGUgPSB0cnVlOwotICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpT
ZXRJc1Zpc2libGUobV9pc1Zpc2libGUpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRJc1Zp
c2libGUobV9pc1Zpc2libGUpKTsKIAogICAgIGlmIChtX2lzQXR0YWNoZWQpCiAgICAgICAgIHBs
YXRmb3JtQXR0YWNoKCk7CkBAIC00ODUsOCArNDg1LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6Y2xvc2VGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogCiAgICAgdW50cmFja0luc3BlY3RvclBh
Z2UobV9pbnNwZWN0b3JQYWdlKTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRJc1Zpc2libGUobV9pc1Zpc2libGUpLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5z
cGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZSht
X2lzVmlzaWJsZSkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSk7CiAKICAgICBpZiAobV9pc0FjdGl2ZUZyb250ZW5kKSB7CiAgICAgICAgIG1faXNBY3Rp
dmVGcm9udGVuZCA9IGZhbHNlOwpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX2luc3BlY3RvclBhZ2UgJiYgIW1fdW5kZXJUZXN0KQotICAg
ICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0dGFjaCksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSk7CiAKICAg
ICBwbGF0Zm9ybUF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQobV9jYW5BdHRhY2gpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNjU2YzhkY2M1OWMuLjlk
ODE4NGE3NjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTM4MSwxMiArMzgxLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JNb3N0VmlzaWJsZVdlYlBh
Z2VJZkFueShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoc2VsZWN0ZWRQYWdlKTsKIH0KIAotUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVBy
b3h5OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZp
Z3VyYXRpb24pCitSZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2Vz
cywgcGFnZUlELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6
V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25m
aWd1cmF0aW9uKQorV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNs
aWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VD
bGllbnQobWFrZVdlYWtQdHIocGFnZUNsaWVudCkpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkKICAgICAsIG1fbmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVl
UmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKSkKQEAgLTQzNSw3ICs0MzUsNyBAQCBXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIHVpbgogI2VuZGlmCiAgICAgLCBtX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6cmVzZXRSZWNlbnRDcmFz
aENvdW50KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0cnVj
dG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJjb25zdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlm
ICghbV9jb25maWd1cmF0aW9uLT5kcmF3c0JhY2tncm91bmQoKSkKICAgICAgICAgbV9iYWNrZ3Jv
dW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwpAQCAtNDY3LDcgKzQ2Nyw3IEBA
IFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIGRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKTsKIAotICAgIG1fcHJvY2Vzcy0+YWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlE
LnRvVUludDY0KCksICp0aGlzKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgRGVw
cmVjYXRlZEdsb2JhbFNldHRpbmdzOjpzZXREaXNhYmxlU2NyZWVuU2l6ZU92ZXJyaWRlKHByZWZl
cmVuY2VzU3RvcmUoKS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmRpc2Fi
bGVTY3JlZW5TaXplT3ZlcnJpZGVLZXkoKSkpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIFdlYlBhZ2VQ
cm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgdWluCiAKIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MtPndl
YlBhZ2UobV9wYWdlSUQpICE9IHRoaXMpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTYxMyw3
ICs2MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRy
PEFQSTo6VUlDbGllbnQ+JiYgdWlDbGllbnQpCiAgICAgbV91aUNsaWVudCA9IFdURk1vdmUodWlD
bGllbnQpOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKG1fdWlDbGllbnQtPmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKSwgbV9wYWdl
SUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwobV91aUNsaWVudC0+Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVs
KCkpKTsKIAogICAgIHNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkpOwog
ICAgIHNldE5lZWRzRm9udEF0dHJpYnV0ZXMobV91aUNsaWVudC0+bmVlZHNGb250QXR0cmlidXRl
cygpKTsKQEAgLTYzMCw3ICs2MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRp
bmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGll
bnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlSWNvbkxv
YWRpbmdDbGllbnQoaGFzQ2xpZW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5k
Q2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+JiYgZmluZENsaWVudCkKQEAg
LTcwOCwxMCArNzA4LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKICAgICBBU1NFUlQoIW1faXND
bG9zZWQpOwogICAgIEFTU0VSVCghaGFzUnVubmluZ1Byb2Nlc3MoKSk7CiAKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQ
YWdlKCp0aGlzLCBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKLSAg
ICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgYXV0byYgcHJvY2Vzc1Bvb2wgPSBt
X3Byb2Nlc3MtPnByb2Nlc3NQb29sKCk7CiAKQEAgLTcyMyw3ICs3MjMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4pCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7CiAKICAgICBtX3Byb2Nl
c3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpCZWdpbnNVc2lu
Z0RhdGFTdG9yZTo6WWVzKTsKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELCAqdGhp
cyk7CisgICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCAqdGhpcyk7
CiAKICAgICBmaW5pc2hBdHRhY2hpbmdUb1dlYlByb2Nlc3MoSXNQcm9jZXNzU3dhcDo6Tm8pOwog
fQpAQCAtNzYzLDcgKzc2Myw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBh
Z2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBv
c3NpYmxlOiBTdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlS
ZWYoKSwgKm1haW5GcmFtZUlELCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUpOwogCi0gICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBh
Z2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNz
IHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCksIHN1c3BlbmRl
ZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBm
cm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOworICAgIExPRyhQ
cm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5k
ZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1
NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVt
SUQoKS5sb2dTdHJpbmcoKSA6IDApOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBmb3JjZWQgYSBz
d2FwIHRoZW4gaXQgbWF5IG5vdCBiZSB3ZWItY29tcGF0aWJsZSB0byBrZWVwIHRoZSBwcmV2aW91
cyBwYWdlIGJlY2F1c2Ugb3RoZXIgd2luZG93cyBtYXkgaGF2ZSBhbiBvcGVuZXIgbGluayB0byBp
dC4gV2UgdGh1cyBjbG9zZSBpdCBhcyBzb29uIGFzIHdlCiAgICAgLy8gY2FuIGRvIHNvIHdpdGhv
dXQgZmxhc2hpbmcuCkBAIC03ODEsNyArNzgxLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3Bl
bmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQK
IHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2Vzcywgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+JiYgZHJhd2luZ0Fy
ZWEsIFJlZlB0cjxXZWJGcmFtZVByb3h5PiYmIG1haW5GcmFtZSkKIHsKICAgICBBU1NFUlQoIW1f
aXNDbG9zZWQpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1dl
YlByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgInN3YXBUb1dlYlByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAKICAgICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAgIG1fd2Vic2l0ZURhdGFT
dG9yZSA9IG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOwpAQCAtNzk2LDcgKzc5Niw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2Vzcywgc3RkOjp1bmlxdWVfCiAgICAgbV9oYXNSdW5uaW5nUHJvY2VzcyA9IHRydWU7
CiAKICAgICBtX3Byb2Nlc3MtPmFkZEV4aXN0aW5nV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1By
b3h5OjpCZWdpbnNVc2luZ0RhdGFTdG9yZTo6Tm8pOwotICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlSUQsICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELnRvVUlu
dDY0KCksICp0aGlzKTsKIAogICAgIGZpbmlzaEF0dGFjaGluZ1RvV2ViUHJvY2VzcyhJc1Byb2Nl
c3NTd2FwOjpZZXMpOwogfQpAQCAtODczLDEwICs4NzMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nl
c3NGb3JSZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9p
c0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVu
Y2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JS
ZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCkBAIC04ODUsMTQgKzg4NSwxNCBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxv
YWQoKQogICAgIGxhdW5jaFByb2Nlc3MocmVnaXN0cmFibGVEb21haW4pOwogCiAgICAgaWYgKCFt
X2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0
ZW0gdG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3VycmVudCBpdGVt
IHRvIHJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3Rh
dGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAogICAgIC8vIFdlIGFsbG93IHN0YWxlIGNv
bnRlbnQgd2hlbiByZWxvYWRpbmcgYSBXZWJQcm9jZXNzIHRoYXQncyBiZWVuIGtpbGxlZCBvciBj
cmFzaGVkLgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tG
b3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbV9iYWNrRm9yd2FyZExpc3Qt
PmN1cnJlbnRJdGVtKCktPml0ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0Zvcndh
cmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0o
KS0+aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSk7CiAgICAgbV9wcm9jZXNzLT5y
ZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpA
QCAtOTAwLDEwICs5MDAsMTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYg
aXRlbSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9j
ZXNzV2l0aEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogcGFnZSBpcyBjbG9zZWQ6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTkx
NSw3ICs5MTUsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5j
aFByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdAogCiAgICAgYXV0byBuYXZpZ2F0
aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbihpdGVt
LCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhl
ZEJhY2tGb3J3YXJkKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVt
SUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9u
SUQoKSwgaXRlbS5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpKTsKICAgICBtX3By
b2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmln
YXRpb247CkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAg
ICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiY2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOwogCiAgICAgbV9pc0Nsb3NlZCA9IHRydWU7CiAKQEAgLTEwMDksOSArMTAwOSw5IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCku
cmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdlKCp0aGlzKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNsb3NlKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgq
dGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7Ci0gICAgbV9w
cm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3Vw
cGxlbWVudDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9u
cyh0aGlzKTsKIAogICAgIC8vIE51bGwgb3V0IHJlbGF0ZWQgV2ViUGFnZVByb3h5IHRvIGF2b2lk
IGxlYWtzLgpAQCAtMTAzMSwxNCArMTAzMSwxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xv
c2UoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5Q2xv
c2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICAvLyBDbG9zZSB3aXRob3V0
IGRlbGF5IGlmIHRoZSBwcm9jZXNzIGFsbG93cyBpdC4gT3VyIGdvYWwgaXMgdG8gdGVybWluYXRl
CiAgICAgLy8gdGhlIHByb2Nlc3MsIHNvIHdlIGNoZWNrIGEgcGVyLXByb2Nlc3Mgc3RhdHVzIGJp
dC4KICAgICBpZiAobV9wcm9jZXNzLT5pc1N1ZGRlblRlcm1pbmF0aW9uRW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VHJ5Q2xvc2UoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRy
eUNsb3NlKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBTaG8KICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9h
ZFJlcXVlc3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVnaXN0cmFibGVEb21haW4g
eyByZXF1ZXN0LnVybCgpIH0pOwpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXMKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCi0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbjogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgYXV0byB0
cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC0xMTE0LDE2
ICsxMTE0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9u
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgIHdpbGxBY3F1aXJl
VW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKHByb2Nlc3MpOwogICAgIGFkZFBsYXRm
b3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZFRvUHJvY2Vzcyhwcm9jZXNzLCBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVl
c3QobG9hZFBhcmFtZXRlcnMpKTsKICAgICBwcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIH0KIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2Fk
RmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VE
aXJlY3RvcnlVUkxTdHJpbmcsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBpcyBjbG9zZWQ6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRmlsZTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTEzMiw3ICsxMTMyLDcgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKIAogICAgIFVSTCBmaWxlVVJMID0gVVJMKFVSTCgpLCBm
aWxlVVJMU3RyaW5nKTsKICAgICBpZiAoIWZpbGVVUkwuaXNMb2NhbEZpbGUoKSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogZmlsZSBpcyBub3Qg
bG9jYWw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWw6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTE0Miw3
ICsxMTQyLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBlbHNlIHsKICAgICAgICAg
cmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBVUkwoVVJMKCksIHJlc291cmNlRGlyZWN0b3J5VVJMU3Ry
aW5nKTsKICAgICAgICAgaWYgKCFyZXNvdXJjZURpcmVjdG9yeVVSTC5pc0xvY2FsRmlsZSgpKSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTog
cmVzb3VyY2UgVVJMIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcmVzb3VyY2UgVVJM
IGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQpAQCAtMTE2NCw3ICsxMTY0LDcgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJp
bmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxv
YWRQYXJhbWV0ZXJzKTsKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVS
TCgqdGhpcywgcmVzb3VyY2VEaXJlY3RvcnlVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpKTsK
ICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0
dXJuIG5hdmlnYXRpb247CkBAIC0xMTcyLDEwICsxMTcyLDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmln
YXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5n
LCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
RGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZERhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAo
bV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KIApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3Ry
aW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRp
b246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAgLTEyMDksMTkgKzEyMDksMTkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLAogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFt
ZXRlcnMpOwogCiAgICAgcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywg
YmFzZVVSTCk7Ci0gICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEo
bG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFRvUHJvY2Vzcyhwcm9jZXNzLCBN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMpKTsKICAgICBwcm9jZXNz
LT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJl
YWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2Vz
cyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9h
ZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBI
VE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJl
aW5nCiAgICAgLy8gaGFuZGxlZCBwcm9wZXJseS4KICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lz
TG9hZGluZ0FsdGVybmF0ZUhUTUxTdHJpbmdGb3JGYWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1M
OiBwYWdlIGlzIGNsb3NlZCAob3Igb3RoZXIpOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2Ug
aXMgY2xvc2VkIChvciBvdGhlcik6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNTIsMTYgKzEyNTIsMTYgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERh
dGEsIGNvbnN0IFMKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgq
dGhpcywgYmFzZVVSTCk7CiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJM
KCp0aGlzLCB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTChsb2FkUGFyYW1ldGVy
cykpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNo
aXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRh
OiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBjbG9zZWQ6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTEyNzksMTYgKzEyNzksMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZl
RGF0YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXMKICAgICBsb2Fk
UGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVy
cyhsb2FkUGFyYW1ldGVycyk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSk7CiAgICAgbV9wcm9jZXNzLT5y
ZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5h
dmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5n
LCBJbnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11
bGF0ZWRDbGljazogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11
bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11
bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyOTgsMjAgKzEyOTgsMjAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
bGF1bmNoUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiB7IFVSTChVUkwoKSwgdXJsU3RyaW5nKSB9
KTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TmF2aWdhdGVUb1BE
RkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3RyaW5nLCBkb2N1bWVudFBvaW50LCBzY3JlZW5Q
b2ludCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRv
UERGTGlua1dpdGhTaW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRvY3VtZW50UG9pbnQsIHNjcmVl
blBvaW50KSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9wTG9hZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3RvcExvYWRpbmc6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxp
bmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BE
RkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9hZGluZygpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcExvYWRpbmcoKSk7CiAgICAgaWYgKG1fcHJvdmlz
aW9uYWxQYWdlKSB7CiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdlLT5jYW5jZWwoKTsKICAgICAg
ICAgbV9wcm92aXNpb25hbFBhZ2UgPSBudWxscHRyOwpAQCAtMTMyMSw3ICsxMzIxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3B0
aW9ucykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZWxvYWQ6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJl
bG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogCkBAIC0xMzQ2LDcgKzEzNDYsNyBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8
V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcAogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFdlYkNv
cmU6OlJlbG9hZE9wdGlvbjo6RGlzYWJsZUNvbnRlbnRCbG9ja2VycykpCiAgICAgICAgIG5hdmln
YXRpb24tPnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoZmFsc2UpOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+bmF2aWdh
dGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+bmF2
aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwog
ICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1
cm4gbmF2aWdhdGlvbjsKQEAgLTEzOTgsNyArMTM5OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3
YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1l
TG9hZFR5cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0Jh
Y2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFja0Zvcndh
cmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0YSgpKTsK
IAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKQEAgLTE0MTIsNyArMTQxMiw3IEBAIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVu
dEl0ZW0oKS0+aXRlbUlzSW5TYW1lRG9jdW1lbnQoaXRlbSkpCiAgICAgICAgIG5hdmlnYXRpb24g
PSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlQmFja0ZvcndhcmROYXZpZ2F0aW9uKGl0ZW0sIG1f
YmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLCBmcmFtZUxvYWRUeXBlKTsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZp
Z2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVtLml0ZW1JRCgpLCBm
cmFtZUxvYWRUeXBlLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxv
cHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3
YXJkSXRlbShuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVt
Lml0ZW1JRCgpLCBmcmFtZUxvYWRUeXBlLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5v
LCBXVEY6Om51bGxvcHQpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5z
dGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xNDIwLDE0ICsxNDIwLDE0IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlSZXN0b3Jl
U2Nyb2xsUG9zaXRpb24oKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
InRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVT
Y3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9z
aXRpb246IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKiBhZGRlZCwgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4mJiByZW1v
dmVkKQpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbnRyb2xs
ZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGNvbnRyb2xsZWQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihj
b250cm9sbGVkKSk7CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnNlbmRUb05ldHdvcmtp
bmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2Vzc2lvbklzQ29udHJvbGxl
ZEJ5QXV0b21hdGlvbihtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBtX2NvbnRyb2xs
ZWRCeUF1dG9tYXRpb24pKTsKIH0KIApAQCAtMTUxNCw3ICsxNTE0LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKQogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5kaWNhdGluZyhpbmRpY2F0aW5nKSk7CiB9CiAK
IGJvb2wgV2ViUGFnZVByb3h5OjphbGxvd3NSZW1vdGVJbnNwZWN0aW9uKCkgY29uc3QKQEAgLTE1
NTAsNyArMTU1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckluc3BlY3RvclRhcmdldHMo
KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCiB7Ci0gICAg
U3RyaW5nIHBhZ2VUYXJnZXRJZCA9IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQpOworICAg
IFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0
KHBhZ2VUYXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0K
IApAQCAtMTU2MSw3ICsxNTYxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEJhY2tncm91bmRD
b2xvcihjb25zdCBPcHRpb25hbDxDb2xvcj4mIGNvbG9yKQogCiAgICAgbV9iYWNrZ3JvdW5kQ29s
b3IgPSBjb2xvcjsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpLCBt
X3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRD
b2xvcihjb2xvcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VG9wQ29udGVudEluc2V0
KGZsb2F0IGNvbnRlbnRJbnNldCkKQEAgLTE1NzcsOSArMTU3Nyw5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQogICAgIE1hY2hTZW5k
UmlnaHQgZmVuY2UgPSBtX2RyYXdpbmdBcmVhLT5jcmVhdGVGZW5jZSgpOwogCiAgICAgYXV0byBm
ZW5jZUF0dGFjaG1lbnQgPSBJUEM6OkF0dGFjaG1lbnQoZmVuY2UubGVha1NlbmRSaWdodCgpLCBN
QUNIX01TR19UWVBFX01PVkVfU0VORCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXRGZW5jZWQoY29udGVudEluc2V0LCBmZW5jZUF0dGFj
aG1lbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VG9wQ29u
dGVudEluc2V0RmVuY2VkKGNvbnRlbnRJbnNldCwgZmVuY2VBdHRhY2htZW50KSk7CiAjZWxzZQot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VG9wQ29udGVudEluc2V0
KGNvbnRlbnRJbnNldCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRUb3BDb250ZW50SW5zZXQoY29udGVudEluc2V0KSk7CiAjZW5kaWYKIH0KIApAQCAtMTU5MSw3
ICsxNTkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVuZGVybGF5Q29sb3IoY29uc3QgQ29s
b3ImIGNvbG9yKQogICAgIG1fdW5kZXJsYXlDb2xvciA9IGNvbG9yOwogCiAgICAgaWYgKGhhc1J1
bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0VW5kZXJsYXlDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0VW5kZXJsYXlDb2xvcihjb2xvcikpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6dmlld1dpbGxTdGFydExpdmVSZXNpemUoKQpAQCAtMTYwMCwxNCArMTYwMCwxNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld1dpbGxTdGFydExpdmVSZXNpemUoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBjbG9zZU92ZXJsYXllZFZpZXdzKCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxTdGFydExpdmVSZXNpemUoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3V2lsbEVuZExpdmVSZXNpemUoKQogewogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxFbmRMaXZlUmVzaXplKCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbEVuZExpdmVSZXNpemUo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFJl
Z2lvbiYgcmVnaW9uKQpAQCAtMTcwMSw3ICsxNzAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZp
ZXdEaWRFbnRlcldpbmRvdygpCiAgICAgTGF5ZXJIb3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2Rl
ID0gcGFnZUNsaWVudCgpLnZpZXdMYXllckhvc3RpbmdNb2RlKCk7CiAgICAgaWYgKG1fbGF5ZXJI
b3N0aW5nTW9kZSAhPSBsYXllckhvc3RpbmdNb2RlKSB7CiAgICAgICAgIG1fbGF5ZXJIb3N0aW5n
TW9kZSA9IGxheWVySG9zdGluZ01vZGU7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3RpbmdNb2RlKSwgbV9wYWdl
SUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2Rl
KGxheWVySG9zdGluZ01vZGUpKTsKICAgICB9CiB9CiAKQEAgLTE3NTAsNyArMTc1MCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVDaGFuZ2UoKQogICAgIGF1dG8g
YWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJv
bm91c1JlcGx5ID8gdGFrZU5leHRBY3Rpdml0eVN0YXRlQ2hhbmdlSUQoKSA6IHN0YXRpY19jYXN0
PEFjdGl2aXR5U3RhdGVDaGFuZ2VJRD4oQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyk7
CiAKICAgICBpZiAoY2hhbmdlZCB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlT
dGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAhbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxi
YWNrcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0QWN0aXZpdHlTdGF0ZShtX2FjdGl2aXR5U3RhdGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCwgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyksIG1fcGFnZUlEKTsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWN0aXZpdHlTdGF0ZShtX2FjdGl2aXR5U3Rh
dGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxi
YWNrcykpOwogCiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5jbGVhcigp
OwogCkBAIC0xODUzLDcgKzE4NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF5ZXJIb3N0aW5n
TW9kZURpZENoYW5nZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbGF5ZXJIb3N0aW5nTW9k
ZSA9IGxheWVySG9zdGluZ01vZGU7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3Rp
bmdNb2RlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEKQpAQCAt
MTg5NSwyMSArMTg5NSwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJv
b2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwgY29ucwogICAgIH0KIAogICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZv
cndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluaXRpYWxGb2N1cyhm
b3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwga2V5Ym9hcmRFdmVudCwgY2FsbGJhY2tJRCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZWxlY3Rpb24oKQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJTZWxlY3Rpb24oKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFyU2VsZWN0aW9uKCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpCiB7CiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRp
dGFibGVFbGVtZW50KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIFdU
Rjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgYm9vbCwgaW50MzJfdCwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTE5MjAsNyArMTkyMCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFt
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VmFsaWRhdGVDb21tYW5k
KGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbmNy
ZWFzZUxpc3RMZXZlbCgpCkBAIC0xOTI4LDcgKzE5MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aW5jcmVhc2VMaXN0TGV2ZWwoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNy
ZWFzZUxpc3RMZXZlbCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
SW5jcmVhc2VMaXN0TGV2ZWwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNyZWFzZUxp
c3RMZXZlbCgpCkBAIC0xOTM2LDcgKzE5MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjcmVh
c2VMaXN0TGV2ZWwoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZWNyZWFzZUxp
c3RMZXZlbCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGVjcmVh
c2VMaXN0TGV2ZWwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSgp
CkBAIC0xOTQ0LDcgKzE5NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlTGlzdFR5cGUo
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VMaXN0VHlwZSgpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlTGlzdFR5cGUoKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGly
ZWN0aW9uIGRpcmVjdGlvbikKQEAgLTE5NTIsNyArMTk1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGly
ZWN0aW9uKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhc2VX
cml0aW5nRGlyZWN0aW9uKGRpcmVjdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBk
YXRlRm9udEF0dHJpYnV0ZXNBZnRlckVkaXRvclN0YXRlQ2hhbmdlKCkKQEAgLTE5NzYsNyArMTk3
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKGJvb2wgbmVl
ZHNGb250QXR0cmlidXRlcykKICAgICBtX25lZWRzRm9udEF0dHJpYnV0ZXMgPSBuZWVkc0ZvbnRB
dHRyaWJ1dGVzOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TmVlZHNGb250QXR0cmlidXRlcyhuZWVk
c0ZvbnRBdHRyaWJ1dGVzKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKG5lZWRzRm9udEF0dHJpYnV0ZXMpKTsKIH0KIAog
Ym9vbCBXZWJQYWdlUHJveHk6Om1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKCkgY29uc3QKQEAg
LTE5OTksNyArMTk5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY2hlZHVsZUZ1bGxFZGl0b3JT
dGF0ZVVwZGF0ZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVkdWxlRnVs
bEVkaXRvclN0YXRlVXBkYXRlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNlbGVjdEFsbCgpCkBAIC0yMDA3LDcgKzIwMDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0QWxs
KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RBbGwoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5n
JiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCwgV1RGOjpGdW5jdGlvbjx2b2lk
KENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0yMDE4LDcgKzIw
MTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYQogICAgIH0KIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNr
KGNvbW1hbmROYW1lLCBhcmd1bWVudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFu
ZE5hbWUsIGFyZ3VtZW50LCBjYWxsYmFja0lEKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0
cmluZyYgYXJndW1lbnQpCkBAIC0yMDMxLDcgKzIwMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmlu
ZyYgYQogICAgIGlmIChjb21tYW5kTmFtZSA9PSBpZ25vcmVTcGVsbGluZ0NvbW1hbmROYW1lKQog
ICAgICAgICArK21fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVzc2FnZUNvdW50OwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmQoY29t
bWFuZE5hbWUsIGFyZ3VtZW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgYXJndW1lbnQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVu
Y3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyYsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtMjA0Miw3ICsyMDQyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChj
b25zdCBXZWIKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1
ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxl
Y3Rpb25TdGFydChjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXR0
cmlidXRlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yMDYzLDcgKzIwNjMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0RWRpdGFibGUoZWRpdGFibGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0RWRpdGFibGUoZWRpdGFibGUpKTsKIH0KICAgICAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRNZWRpYVN0cmVhbUNhcHR1cmVNdXRlZChib29sIG11dGVkKQpAQCAt
MjEyOCw5ICsyMTI4LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERyYWcKIAogICAgIEFTU0VSVChk
cmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgV2ViU2VsZWN0aW9uRGF0YSBzZWxlY3Rpb24o
KmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLmNs
aWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCksIGRyYWdEYXRhLmRyYWdn
aW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBzZWxlY3Rpb24sIGRyYWdEYXRhLmZsYWdzKCkpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEuZ2xv
YmFsUG9zaXRpb24oKSwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIHNl
bGVjdGlvbiwgZHJhZ0RhdGEuZmxhZ3MoKSkpOwogI2Vsc2UKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRy
YWdEYXRhLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9h
ZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0Nv
bnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwg
c2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpKTsKICNlbmRpZgogfQogCkBAIC0yMTYwLDcgKzIx
NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKGNvbnN0IEludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsbwogewogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0
aW9uKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdFbmRlZChj
bGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIG9wZXJhdGlvbikpOwogICAgIHNldERyYWdD
YXJldFJlY3QoeyB9KTsKIH0KIApAQCAtMjE3MiwxMyArMjE3MiwxMyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybURyYWdPcGVyYXRpb24oYm9vbCBoYW5kbGVkKQogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFN0YXJ0RHJhZygpCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0g
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU3RhcnREcmFnKCks
IG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU3RhcnREcmFn
KCkpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdDYW5jZWxsZWQoKQogewogICAg
IGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRyYWdDYW5jZWxsZWQoKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEcmFnQ2FuY2VsbGVkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRW5kRHJhZ2dpbmcoKQpAQCAtMjI3Nyw3ICsyMjc3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCgpCiAgICAgfQogCiAgICAgTE9HKE1vdXNl
SGFuZGxpbmcsICJVSVByb2Nlc3M6IHNlbnQgbW91c2UgZXZlbnQgJXMgKHF1ZXVlIHNpemUgJXp1
KSIsIHdlYk1vdXNlRXZlbnRUeXBlU3RyaW5nKGV2ZW50VHlwZSksIG1fbW91c2VFdmVudFF1ZXVl
LnNpemUoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2
ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNl
RXZlbnQoZXZlbnQpKTsKIH0KIAogI2lmIE1FUkdFX1dIRUVMX0VWRU5UUwpAQCAtMjQzNyw3ICsy
NDM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0
aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKICAgICBpZiAobV9rZXlFdmVudFF1ZXVlLnNp
emUoKSA9PSAxKSB7IC8vIE90aGVyd2lzZSwgc2VudCBmcm9tIERpZFJlY2VpdmVFdmVudCBtZXNz
YWdlIGhhbmRsZXIuCiAgICAgICAgIExPRyhLZXlIYW5kbGluZywgIiBVSSBwcm9jZXNzOiBzZW50
IGtleUV2ZW50IGZyb20gaGFuZGxlS2V5Ym9hcmRFdmVudCIpOwotICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVudChldmVudCkpOwogICAgIH0KIH0K
IApAQCAtMjY0Myw3ICsyNjQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZl
bnRTeW5jaHJvbm91c2x5KE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogCiAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKICAgICBib29sIGhhbmRsZWQgPSBm
YWxzZTsKLSAgICBib29sIHJlcGx5UmVjZWl2ZWQgPSBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYyhldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpU
b3VjaEV2ZW50U3luYzo6UmVwbHkoaGFuZGxlZCksIG1fcGFnZUlELCAxX3MpOworICAgIGJvb2wg
cmVwbHlSZWNlaXZlZCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3lu
YyhldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYzo6UmVwbHkoaGFuZGxl
ZCksIDFfcyk7CiAgICAgLy8gSWYgdGhlIHN5bmMgcmVxdWVzdCBoYXMgdGltZWQgb3V0LCB3ZSBz
aG91bGQgY29uc2lkZXIgdGhlIGV2ZW50IGhhbmRsZWQuIFRoZSBXZWIgUHJvY2VzcyBpcyB0b28g
YnVzeSB0byBhbnN3ZXIgYW55IHF1ZXN0aW9ucywgc28gdGhlIGRlZmF1bHQgYWN0aW9uIGlzIGFs
c28gbGlrZWx5IHRvIGhhdmUgaXNzdWVzLgogICAgIGlmICghcmVwbHlSZWNlaXZlZCkKICAgICAg
ICAgaGFuZGxlZCA9IHRydWU7CkBAIC0yNjg3LDcgKzI2ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICAg
ICBpZiAoIW1faXNQYWdlU3VzcGVuZGVkKSB7CiAgICAgICAgIG1fdG91Y2hFdmVudFF1ZXVlLmFw
cGVuZChldmVudCk7CiAgICAgICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0
YXJ0KCk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hF
dmVudChldmVudCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VG91Y2hFdmVudChldmVudCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX3RvdWNoRXZl
bnRRdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGJvb2wgaXNFdmVudEhhbmRsZWQgPSBm
YWxzZTsKQEAgLTI3MDgsMTIgKzI3MDgsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRv
dWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAjaWYgRU5BQkxFKFBP
SU5URVJfRVZFTlRTKQogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbFBvaW50ZXIoV2ViQ29yZTo6
UG9pbnRlcklEIHBvaW50ZXJJZCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGRvY3VtZW50UG9p
bnQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxQb2lu
dGVyKHBvaW50ZXJJZCwgZG9jdW1lbnRQb2ludCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDYW5jZWxQb2ludGVyKHBvaW50ZXJJZCwgZG9jdW1lbnRQb2ludCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dG91Y2hXaXRoSWRlbnRpZmllcldhc1JlbW92ZWQoV2Vi
Q29yZTo6UG9pbnRlcklEIHBvaW50ZXJJZCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRvdWNoV2l0aElkZW50aWZpZXJXYXNSZW1vdmVkKHBvaW50ZXJJZCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaFdpdGhJZGVudGlmaWVy
V2FzUmVtb3ZlZChwb2ludGVySWQpKTsKIH0KICNlbmRpZgogCkBAIC0yNzIyLDcgKzI3MjIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2Nyb2xsQnkoU2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwg
U2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTY3JvbGxCeShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbEJ5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKQpAQCAt
MjczMCw3ICsyNzMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbkluVmlz
aWJsZUFyZWEoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rp
b25JblZpc2libGVBcmVhKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCkpOwogfQogCiBjbGFzcyBXZWJQYWdlUHJv
eHk6OlBvbGljeURlY2lzaW9uU2VuZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8UG9saWN5RGVjaXNp
b25TZW5kZXI+IHsKQEAgLTI4NzMsNyArMjg3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbioK
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25z
dCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWlu
c1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZv
cmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAg
IEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbW1pdFByb3Zpc2lv
bmFsUGFnZTogcHJldmlvdXNQSUQgPSAlaSwgbmV3UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJv
Y2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAg
T3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFtZUlESW5QcmV2aW91c1Byb2Nlc3MgPSBtX21haW5G
cmFtZSA/IG1ha2VPcHRpb25hbChtX21haW5GcmFtZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9w
dDsKIApAQCAtMjg4OSwxNCArMjg4OSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJv
dmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiAg
ICAgcHJvY2Vzc0RpZFRlcm1pbmF0ZShQcm9jZXNzVGVybWluYXRpb25SZWFzb246Ok5hdmlnYXRp
b25Td2FwKTsKIAotICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIG1f
cHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgYXV0byogbmF2
aWdhdGlvbiA9IG5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obV9wcm92aXNpb25hbFBhZ2Ut
Pm5hdmlnYXRpb25JRCgpKTsKICAgICBib29sIGRpZFN1c3BlbmRQcmV2aW91c1BhZ2UgPSBuYXZp
Z2F0aW9uID8gc3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZSgqbmF2aWdhdGlvbiwgbWFpbkZy
YW1lSURJblByZXZpb3VzUHJvY2VzcywgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3NTd2FwUmVx
dWVzdGVkQnlDbGllbnQoKSwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKSA6IGZhbHNlOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFn
ZSgqdGhpcywgbV93ZWJzaXRlRGF0YVN0b3JlLnB0cigpID09ICZtX3Byb3Zpc2lvbmFsUGFnZS0+
cHJvY2VzcygpLndlYnNpdGVEYXRhU3RvcmUoKSA/IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5n
RGF0YVN0b3JlOjpObyA6IFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMp
OwogCiAgICAgLy8gVGhlcmUgaXMgbm8gd2F5IHdlJ2xsIGJlIGFibGUgdG8gcmV0dXJuIHRvIHRo
ZSBwYWdlIGluIHRoZSBwcmV2aW91cyBwYWdlIHNvIGNsb3NlIGl0LgogICAgIGlmICghZGlkU3Vz
cGVuZFByZXZpb3VzUGFnZSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDbG9zZSgpLCBwYWdlSUQoKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNsb3NlKCkpOwogCiAgICAgc3dhcFRvV2ViUHJvY2VzcyhtX3Byb3Zpc2lvbmFsUGFnZS0+cHJv
Y2VzcygpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+dGFrZURyYXdpbmdBcmVhKCksIG1fcHJvdmlzaW9u
YWxQYWdlLT5tYWluRnJhbWUoKSk7CiAKQEAgLTI5MTMsNyArMjkxMyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2VQcm94eSwgUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0
ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnRp
bnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBuZXdQcm9jZXNzUElEID0gJWksIGhhc1N1c3BlbmRlZFBhZ2UgPSAlaSIsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQ
YWdlID0gJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCksIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVBy
b3h5KTsKICAgICBMT0coTG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQg
IiAnJXMnIGluIGEgbmV3IHdlYiBwcm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwg
bmF2aWdhdGlvbi5sb2dnaW5nU3RyaW5nKCkpOwogCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdl
KSB7CkBAIC0yOTM4LDcgKzI5MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZp
Z2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgIGlm
IChtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSAmJiAobmF2aWdhdGlvbi5sb2NrQmFj
a0ZvcndhcmRMaXN0KCkgPT0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIHx8IG5hdmlnYXRpb24u
bG9ja0hpc3RvcnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSkgewogICAgICAgICAvLyBJZiBXZWJD
b3JlIGlzIHN1cHBvc2VkIHRvIGxvY2sgdGhlIGhpc3RvcnkgZm9yIHRoaXMgbG9hZCwgdGhlbiB0
aGUgbmV3IHByb2Nlc3MgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCBoaXN0b3J5IGl0
ZW0gc28gaXQgY2FuIHVwZGF0ZQogICAgICAgICAvLyBpdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEg
bmV3IG9uZS4KLSAgICAgICAgbmV3UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Q3VycmVudEhpc3RvcnlJdGVtRm9yUmVhdHRhY2gobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJ
dGVtKCktPml0ZW1TdGF0ZSgpKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kVG9Qcm9jZXNzKG5l
d1Byb2Nlc3MsIE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0
dGFjaChtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbVN0YXRlKCkpKTsKICAg
ICB9CiAKICAgICAvLyBGSVhNRTogV29yayBvdXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0
aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YwpAQCAtMjk4OCw3ICsyOTg4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiAKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJBZ2VudChtX3VzZXJBZ2VudCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VyQWdlbnQobV91c2VyQWdlbnQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSkKQEAgLTMwMjUsNyArMzAyNSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAK
ICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQpAQCAtMzAzNSw3ICszMDM1LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKICAg
ICBtX2lzUGFnZVN1c3BlbmRlZCA9IHRydWU7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zKCkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0
RW5jb2RpbmcoKSBjb25zdApAQCAtMzA1Miw3ICszMDUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUo
ZW5jb2RpbmdOYW1lKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1lKSk7CiB9CiAKIFNlc3Npb25TdGF0
ZSBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CkBAIC0zMDc0LDcgKzMwNzQsNyBAQCBT
ZXNzaW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxib29s
IChXZWJCYWNrRm9yd2FyZExpc3RJdAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdl
UHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUs
IGJvb2wgbmF2aWdhdGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
cmVzdG9yZUZyb21TZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9zZXNzaW9uUmVzdG9yYXRpb25SZW5kZXJU
cmVlU2l6ZSA9IDA7CiAgICAgbV9oaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCA9IGZhbHNlOwpA
QCAtMzA4Myw3ICszMDgzLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2kKIAogICAgIGlmICho
YXNCYWNrRm9yd2FyZExpc3QpIHsKICAgICAgICAgbV9iYWNrRm9yd2FyZExpc3QtPnJlc3RvcmVG
cm9tU3RhdGUoV1RGTW92ZShzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRMaXN0U3RhdGUpKTsKLSAg
ICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1f
YmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVt
U3RhdGVzKCkpKTsKIAogICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRl
LnRyYW5zYWN0aW9uKCk7CiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRDYW5Hb0JhY2sodHJh
bnNhY3Rpb24sIG1fYmFja0ZvcndhcmRMaXN0LT5iYWNrSXRlbSgpKTsKQEAgLTMxMzEsNyArMzEz
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0Wm9vbUZhY3Rvcihkb3VibGUgem9vbUZh
Y3RvcikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dFpvb21GYWN0b3Io
bV90ZXh0Wm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0VGV4dFpvb21GYWN0b3IobV90ZXh0Wm9vbUZhY3RvcikpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCkBAIC0zMTQ2LDcg
KzMxNDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpv
b21GYWN0b3IpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2Vab29tRmFj
dG9yKG1fcGFnZVpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFBhZ2Vab29tRmFjdG9yKG1fcGFnZVpvb21GYWN0b3IpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Vab29tRmFj
dG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3IpCkBAIC0zMTYyLDcgKzMxNjIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhkb3VibGUgcGFnZVpvb21GYWN0
b3IsIGRvdWJsZSB0ZXh0WgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdl
QW5kVGV4dFpvb21GYWN0b3JzKG1fcGFnZVpvb21GYWN0b3IsIG1fdGV4dFpvb21GYWN0b3IpLCBt
X3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9v
bUZhY3RvcnMobV9wYWdlWm9vbUZhY3RvciwgbV90ZXh0Wm9vbUZhY3RvcikpOwogfQogCiBkb3Vi
bGUgV2ViUGFnZVByb3h5OjpwYWdlWm9vbUZhY3RvcigpIGNvbnN0CkBAIC0zMTkyLDcgKzMxOTIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdlKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50
UG9pbnQmIG9yaWdpbikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdl
KHNjYWxlLCBvcmlnaW4pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2NhbGVQYWdlKHNjYWxlLCBvcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxl
UGFnZUluVmlld0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIGNlbnRl
ckluVmlld0Nvb3JkaW5hdGVzKQpAQCAtMzIwNCw3ICszMjA0LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9p
bnQmIGNlbnQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlSW5WaWV3
Q29vcmRpbmF0ZXMoc2NhbGUsIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKHNj
YWxlLCBjZW50ZXJJblZpZXdDb29yZGluYXRlcykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2NhbGVWaWV3KGRvdWJsZSBzY2FsZSkKQEAgLTMyMTYsNyArMzIxNiw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzY2FsZVZpZXcoZG91YmxlIHNjYWxlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTY2FsZVZpZXcoc2NhbGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2NhbGVWaWV3KHNjYWxlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJ
bnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKQEAgLTMyMzUsNyAr
MzIzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZv
cm1EaXNwbGF5SUQgZGlzcGxheUlEKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpX
aW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OldpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpKTsKIH0KIAog
ZmxvYXQgV2ViUGFnZVByb3h5OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CkBAIC0zMjc0LDcg
KzMyNzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hh
bmdlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXNzaWJpbGl0eVNldHRp
bmdzRGlkQ2hhbmdlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpB
Y2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQpAQCAtMzI5MSw3ICszMjkxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKQEAgLTMzMDQsNyArMzMwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhl
ZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wgYWx3YXlz
U2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpCkBAIC0zMzE3LDcgKzMzMTcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93
c0hvcml6b250YWxTYwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNT
aG93c0hvcml6b250YWxTY3JvbGxlcihhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c0hvcml6
b250YWxTY3JvbGxlcihhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcikpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGJvb2wgYWx3YXlz
U2hvd3NWZXJ0aWNhbFNjcm9sbGVyKQpAQCAtMzMzMCw3ICszMzMwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzVmVy
dGljYWxTY3JvbGwKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hv
d3NWZXJ0aWNhbFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlciksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Ny
b2xsZXIoYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpsaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRN
aWxlc3RvbmU+IG1pbGVzdG9uZXMpCkBAIC0zMzQzLDcgKzMzNDMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0
TWlsZXN0b25lPgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlv
dXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBw
cmVzc0FuaW1hdGlvbnMpCkBAIC0zMzU2LDcgKzMzNTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1h
dGlvbnMoc3VwcHJlc3NBbmltYXRpb25zKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhzdXBwcmVzc0FuaW1hdGlv
bnMpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnJ1YmJlckJhbmRzQXRMZWZ0KCkgY29uc3QK
QEAgLTM0MDgsNyArMzQwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRFbmFibGVWZXJ0aWNh
bFJ1YmJlckJhbmRpbmcoYm9vbCBlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpCiAKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhlbmFi
bGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2FsUnVi
YmVyQmFuZGluZykpOwogfQogICAgIAogYm9vbCBXZWJQYWdlUHJveHk6OnZlcnRpY2FsUnViYmVy
QmFuZGluZ0lzRW5hYmxlZCgpIGNvbnN0CkBAIC0zNDI1LDcgKzM0MjUsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoYm9vbCBlbmFibGVIb3Jp
em9udGFsUnViYmVyQgogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVI
b3Jpem9udGFsUnViYmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVIb3Jpem9udGFs
UnViYmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZykpOwogfQogICAgIAog
Ym9vbCBXZWJQYWdlUHJveHk6Omhvcml6b250YWxSdWJiZXJCYW5kaW5nSXNFbmFibGVkKCkgY29u
c3QKQEAgLTM0NDIsNyArMzQ0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5k
RXh0ZW5kc0JleW9uZFBhZ2UoYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhCiAKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShi
YWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRl
bmRzQmV5b25kUGFnZSkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6YmFja2dyb3VuZEV4dGVu
ZHNCZXlvbmRQYWdlKCkgY29uc3QKQEAgLTM0NTksNyArMzQ1OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRQYWdpbmF0aW9uTW9kZShXZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlIG1vZGUpCiAK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25Nb2RlKG1vZGUpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbk1vZGUo
bW9kZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtl
Q29sdW1ucyhib29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKQEAgLTM0NzEsNyArMzQ3MSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJvb2wgYmVo
YXZlc0xpa2VDb2x1bW5zKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdp
bmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucyksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1
bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFn
ZUxlbmd0aChkb3VibGUgcGFnZUxlbmd0aCkKQEAgLTM0ODMsNyArMzQ4Myw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRQYWdlTGVuZ3RoKGRvdWJsZSBwYWdlTGVuZ3RoKQogCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlTGVuZ3RoKHBhZ2VMZW5ndGgpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMoZG91YmxlIGdhcCkK
QEAgLTM0OTUsNyArMzQ5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFn
ZXMoZG91YmxlIGdhcCkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0R2FwQmV0
d2VlblBhZ2VzKGdhcCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdp
bmF0aW9uTGluZUdyaWRFbmFibGVkKGJvb2wgbGluZUdyaWRFbmFibGVkKQpAQCAtMzUwNyw3ICsz
NTA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQo
Ym9vbCBsaW5lR3JpZEVuYWJsZWQpCiAgICAgCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFi
bGVkKGxpbmVHcmlkRW5hYmxlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGFnZVNjYWxl
RmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSBzY2FsZUZhY3RvcikKQEAgLTM1MzIsMjcgKzM1MzIsMjcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3Ry
aW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nTWF0Y2hlcyhzdHJp
bmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENv
dW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcs
IG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJ
bmRleCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEltYWdl
Rm9yRmluZE1hdGNoKG1hdGNoSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2VsZWN0RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCkKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEZpbmRNYXRjaChtYXRjaElu
ZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEZpbmRN
YXRjaChtYXRjaEluZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlRmluZFVJKCkK
IHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCkBAIC0z
NTYwLDcgKzM1NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLAogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhN
YXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50
U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaElu
ZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHks
IEZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
KQpAQCAtMzU3MSw3ICszNTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVz
KFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYKICAgICB9CiAK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3Zl
KG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hl
cyhXVEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwg
Y2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nl
c3NJZk5lY2Vzc2FyeSgpCkBAIC0zNTk2LDE0ICszNTk2LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlw
dCwgYm9vCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdl
c3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQs
IGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lk
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4
Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQogewogICAgIEFTU0VSVChtYWluRnJhbWUoKS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpOwogICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJh
bWUoZnJhbWVJRCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbkZyYW1lKGZy
YW1lSUQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpG
dW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQpAQCAtMzYxNCw3ICszNjE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlbmRlclRyZWVFeHRlcm5hbFJl
cHJlc2VudGF0aW9uKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNv
dXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBA
IC0zNjI2LDcgKzM2MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUo
V2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAg
IG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1l
LT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC0zNjM4LDcgKzM2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29u
dGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYQog
ICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFj
a0lEKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRz
QXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpKTsKIH0KIAogI2lmIFBMQVRGT1JN
KENPQ09BKQpAQCAtMzY0OSw3ICszNjQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRl
bnRzQXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXQKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNBdHRyaWJ1dGVk
U3RyaW5nKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzQXR0cmlidXRl
ZFN0cmluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApAQCAt
MzY2Miw3ICszNjYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBt
X2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29k
ZVByb2ZpbGUoY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxp
bmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNjc0LDcgKzM2NzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3Ry
aW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJP
dXRwdXQoY2FsbGJhY2tJRCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzY4Niw3ICsz
Njg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoRnVuY3Rp
b248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXMKICAgICB9CiAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50
c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpKTsKIH0KICNlbmRpZgogCkBAIC0zNjk4LDcgKzM2OTgs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdU
Rjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaQogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmlu
ZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQ
STo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0z
NzA5LDcgKzM3MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYgogICAgIH0KICAgICAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFzV2Vi
QXJjaGl2ZURhdGEoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzcyMCw3ICszNzIwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBG
dW5jdGlvbjx2b2kKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1h
aW5SZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc291cmNlVVJMLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRh
dGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzczMSw3
ICszNzMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KICAgICB9CiAgICAgCiAgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFGcm9tRnJh
bWUoZnJhbWUtPmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZy
b21GcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNvdXJjZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNr
SUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc0Miw3ICszNzQyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBG
dW5jdGlvbjx2b2lkIChBUEkKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdl
YkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxi
YWNrKQpAQCAtMzc3Niw3ICszNzc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWlu
dChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fZHJh
d2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChj
YWxsYmFja0lEKSk7CiB9CiAKIHN0YXRpYyBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBwcmlu
dGluZ1NlbmRPcHRpb25zKGJvb2wgaXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pCkBAIC0z
ODAyLDcgKzM4MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2Uo
KQogICAgIC8vIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJIHByb2Nlc3MsIHNvIHRoYXQg
b3ZlcnJpZGVzIGdldCByZW1vdmVkLgogCiAgICAgLy8gUHJlZmVyZW5jZXMgbmVlZCB0byBiZSB1
cGRhdGVkIGR1cmluZyBzeW5jaHJvbm91cyBwcmludGluZyB0byBtYWtlICJwcmludCBiYWNrZ3Jv
dW5kcyIgcHJlZmVyZW5jZSB3b3JrIHdoZW4gdG9nZ2xlZCBmcm9tIGEgcHJpbnQgZGlhbG9nIGNo
ZWNrYm94LgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5j
ZXNEaWRDaGFuZ2UocHJlZmVyZW5jZXNTdG9yZSgpKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9w
dGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3RvcmUoKSksIHBy
aW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQp
CkBAIC0zOTMyLDggKzM5MzIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAgaWYgKGZy
YW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKICAgICAgICAgbmF2aWdhdGlvbiA9
IG5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAotICAgIExPRyhM
b2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nlc3MgcGlkICVpIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdh
dGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX3BhZ2VJRCwgcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCwgZnJhbWVJRCk7CisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIg
aW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFt
ZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1fcGFn
ZUlELnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQsIG5h
dmlnYXRpb25JRCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7
CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7
CiAKQEAgLTM5ODUsNyArMzk4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8g
ZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBm
cmFtZUlELCBuYXZpZ2F0aW9uSUQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZy
YW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKIApAQCAtNDAxNCw3ICs0MDE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjwKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5LCBXZWJDb3JlOjpMb2Nr
QmFja0ZvcndhcmRMaXN0KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
IndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAg
IFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQwMjcs
NyArNDAyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJl
Y3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGll
bnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDc0LDggKzQwNzQsOCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFNlY3VyaQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRp
bmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihMb2Fk
aW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlE
LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0
YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0Zjgo
KS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBMT0coTG9hZGluZywgIihMb2FkaW5n
KSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELnRv
VUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0
ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCBl
cnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MTQxLDkg
KzQxNDEsOSBAQCBzdGF0aWMgYm9vbCBpc05vblVuaXF1ZU5hdmlnYXRpb25XaXRoTGlua0RlY29y
YXRpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhIHJlcQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQ
cm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2Vy
dGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVu
dCwgT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQ
YWdlUHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24g
JSIgUFJJdTY0LCBtX3BhZ2VJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBMT0coTG9hZGluZywgIihM
b2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGlu
IG5hdmlnYXRpb24gJSIgUFJJdTY0LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQp
OwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0
LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2lu
Z1N0cmluZygpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21t
aXRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwg
ZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0
TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC00MjU0LDcgKzQyNTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQyNzgsNyArNDI3OCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRG
aW5pc2hMb2FkRm9yRnJhbWUgLSBXZWJQYWdlUHJveHkgJXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIg
UFJJdTY0ICIgZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRpb25JRCk7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDMy
Myw3ICs0MzIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2Fk
Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEo
KSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCBl
cnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MzY1LDcg
KzQzNjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlw
ZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1l
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFn
ZUNsaWVudCgpKTsKIApAQCAtNDUzNSw3ICs0NTM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJl
Z2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0
ZW4KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKKyAgICBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAg
ICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5j
b3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZp
ZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCkBAIC00NTQz
LDcgKzQ1NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcgogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwKLSAgICBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJh
bWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQp
CiB7CkBAIC00NTUxLDcgKzQ1NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogICAgIE1F
U1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogCiAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lE
ZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNv
cHlSZWYoKV0gKGF1dG8uLi4gYXJncykgewotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwg
YXJncy4uLiksIG1fcGFnZUlEKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3Mu
Li4pLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICB9KTsKIAogICAgIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24ocHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92ZShmcmFt
ZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25E
YXRhKSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsCkBAIC00NTU5
LDcgKzQ1NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0
YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVy
KQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uIC0gT3JpZ2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdldCBVUkwgJXMiLCBv
cmlnaW5hbFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQ2OTksNyArNDY5OSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzCiAgICAgICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1l
ID09ICZmcmFtZSkKICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJh
bWVJbmZvLmNvcHlSZWYoKTsKICAgICAgICAgZWxzZSBpZiAoIWZyb21BUEkpCi0gICAgICAgICAg
ICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0
aW5nUGFnZUlEKSA6IG51bGxwdHIpOworICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5n
UGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7
CiAKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwcm9jZXNzLT51c2VySW5p
dGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50
aWZpZXIpOwogICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHBy
ZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KQEAgLTQ3NzIsNyArNDc3
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgV2ViRnJh
bWVQcm94eSYgZnJhbWUsIGNvbnN0IFVSTCYgcGFnCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
UGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTQ3OTAs
NyArNDc5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzCiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTQ4MjEsNyArNDgyMSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU2VjdXJpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dzaW5nV2Fy
bmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCiAgICAgICAgIGF1dG8gc2VuZGVyID0gUG9s
aWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdIChhdXRvLi4u
IGFyZ3MpIHsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBt
X3BhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLikpOwogICAgICAgICB9
KTsKIAogICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbnVsbHB0
ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpAQCAtNDg3MCw3ICs0ODcwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3Np
bmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAKICAgICAgICAgYXV0byBzZW5kZXIg
PSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJv
Y2VzcyA9IFdURk1vdmUocHJvY2VzcyldIChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihm
cmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZy
YW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAg
ICAgfSk7CiAgICAgICAgIAogICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFj
dGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpA
QCAtNDkwNyw3ICs0OTA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKICAgICBNRVNTQUdF
X0NIRUNLKG1fcHJvY2Vzcywgc291cmNlRnJhbWUpOwogCiAgICAgbV9mb3JtQ2xpZW50LT53aWxs
U3VibWl0Rm9ybSgqdGhpcywgKmZyYW1lLCAqc291cmNlRnJhbWUsIHRleHRGaWVsZFZhbHVlcywg
bV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5n
ZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlz
dGVuZXJJRF0oKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q29udGludWVXaWxsU3VibWl0Rm9ybShmcmFtZUlELCBsaXN0ZW5lcklEKSwgbV9wYWdlSUQpOwor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250aW51ZVdpbGxTdWJtaXRGb3JtKGZy
YW1lSUQsIGxpc3RlbmVySUQpKTsKICAgICB9KTsKIH0KIApAQCAtNDkyMyw3ICs0OTIzLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdl
Yk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
Y29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90IGZyYW1lSUQpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGFTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTQzLDcgKzQ5NDMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3Ry
aW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90
IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTcwLDcgKzQ5NzAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291
cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZl
clJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcs
IHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMTgsMTQgKzUwMTgsMTQgQEAgV0VCUEFHRVBST1hZ
X0xPQURPUFRJTUlaRVJfQURESVRJT05TXzYKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVO
ZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVO
ZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpD
cmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNL
KG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEu
ZnJhbWVJRCkpOwotICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9y
aWdpbmF0aW5nUGFnZUlEKSk7CisgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1Bh
Z2VJRCA/IG1fcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7
CiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwo
KSA6IFVSTCgpOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RG
TW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0gICAgICAgICAgICByZXBseSgwLCBXVEY6Om51bGxvcHQp
OworICAgICAgICAgICAgcmVwbHkoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTUzNzQsNyArNTM3NCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpydW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBmcmFtCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1NoYXJlU2hlZXQoY29uc3Qg
U2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBTaGFyZVNoZWV0Q2FsbGJhY2tJRCBj
YWxsYmFja0lEKQogewogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IGNvbXBsZXRp
b25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJh
Y2tJRF0gKGJvb2wgYWNjZXNzKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkQ29tcGxldGVTaGFyZVNoZWV0KGFjY2VzcywgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVTaGFyZVNo
ZWV0KGFjY2VzcywgY2FsbGJhY2tJRCkpOwogICAgIH07CiAgICAgCiAgICAgcGFnZUNsaWVudCgp
LnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpA
QCAtNTQwNiw3ICs1NDA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKGZs
b2F0IHZvbHVtZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1lZGlh
Vm9sdW1lKHZvbHVtZSksIG1fcGFnZUlEKTsgICAgCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0TWVkaWFWb2x1bWUodm9sdW1lKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRN
dXRlZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mgc3RhdGUpCkBAIC01
NDIyLDcgKzU0MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TXV0ZWQoV2ViQ29yZTo6TWVk
aWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIHN0YXRlKQogICAgICAgICBVc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkubXV0ZUNhcHR1cmVNZWRpYVN0cmVhbXNFeGNlcHRJbigq
dGhpcyk7CiAjZW5kaWYKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0TXV0ZWQoc3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0TXV0ZWQoc3RhdGUpKTsKICAgICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgQWN0aXZpdHlT
dGF0ZTo6SXNBdWRpYmxlLCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pOwogfQog
CkBAIC01NDQ0LDcgKzU0NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVy
ZSgpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0dXJlKCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0dXJlKCkpOwog
I2VuZGlmCiB9CiAKQEAgLTU0NTMsNyArNTQ1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9w
QWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BB
bGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTdG9wQWxsTWVkaWFQbGF5YmFjaygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3Bl
bmRBbGxNZWRpYVBsYXliYWNrKCkKQEAgLTU0NjEsNyArNTQ2MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQpAQCAtNTQ2OSw3ICs1NDY5LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkp
OwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCkBAIC01NDc4LDcgKzU0NzgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBldmVudFR5
cGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVNZWRpYUV2ZW50
KGV2ZW50VHlwZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5k
bGVNZWRpYUV2ZW50KGV2ZW50VHlwZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9s
dW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQpAQCAt
NTQ4Niw3ICs1NDg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVt
ZW50KGRvdWJsZSB2b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vm9sdW1lT2ZNZWRp
YUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpKTsKIH0KICNlbmRpZgogCkBAIC01NTAwLDcgKzU1
MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhi
b29sIG1heVN0YXJ0TWVkaWEpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWF5
U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhtYXlTdGFydE1lZGlhKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cobWF5U3Rh
cnRNZWRpYSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0
KERvd25sb2FkUHJveHkmIGRvd25sb2FkKQpAQCAtNTU0Nyw3ICs1NTQ3LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlQ29sb3IoY29sb3IpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlQ29sb3IoY29sb3Ip
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yUGlja2VyKCkKQEAgLTU1NTYs
NyArNTU1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmRDb2xvclBpY2tlcigpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZENvbG9yUGlja2VyKCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRDb2xvclBpY2tlcigpKTsKIH0K
ICNlbmRpZgogCkBAIC01NTkwLDcgKzU1OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2xv
c2VTdWdnZXN0aW9ucygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZGF0YUxpc3RTdWdnZXN0
aW9uc0Ryb3Bkb3duID0gbnVsbHB0cjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENsb3NlU3VnZ2VzdGlvbnMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZENsb3NlU3VnZ2VzdGlvbnMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKQEAgLTU1
OTgsNyArNTU5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTZWxlY3RPcHRpb24oY29uc3Qg
U3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRP
cHRpb24pKTsKIH0KIAogI2VuZGlmCkBAIC01NjUxLDcgKzU2NTEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJvb2wgYWxsb3dzKQog
ICAgICAgICByZXR1cm47CiAgICAgbV9hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2sg
PSBhbGxvd3M7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFs
bG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhhbGxvd3MpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXli
YWNrKGFsbG93cykpOwogfQogI2VuZGlmCiAKQEAgLTU4MzQsMTcgKzU4MzQsMTcgQEAgSVBDOjpD
b25uZWN0aW9uKiBXZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QK
IAogdWludDY0X3QgV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFnZUlEOworICAgIHJldHVybiBtX3BhZ2VJRC50b1VJbnQ2
NCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdl
YlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFj
dGl2ZVBvcHVwTWVudShuZXdTZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUo
bmV3U2VsZWN0ZWRJbmRleCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEZyb21J
dGVtRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBpbmRleCkKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRGb3JBY3RpdmVQb3B1
cE1lbnUoaW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
VGV4dEZvckFjdGl2ZVBvcHVwTWVudShpbmRleCkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6
aXNQcm9jZXNzaW5nS2V5Ym9hcmRFdmVudHMoKSBjb25zdApAQCAtNTg3OSwxMyArNTg3OSwxMyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6TwogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmls
aXR5LCBtYWtlIHN1cmUgd2UgbGF1bmNoIHRoZSBpbml0aWFsIHByb2Nlc3MgaWYgdGhlIGNsaWVu
dCBhc2tzIHRvIHBvc3QgYSBtZXNzYWdlIHRvIGl0cyBpbmplY3RlZCBidW5kbGUgYmVmb3JlIGRv
aW5nIGEgbG9hZC4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxlTWVz
c2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXMobWVzc2FnZUJvZHkpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0
YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkuZ2V0KCkp
KSk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZmFpbGVkVG9T
aG93UG9wdXBNZW51KCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkZhaWxlZFRvU2hvd1BvcHVwTWVudSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RmFpbGVkVG9TaG93UG9wdXBNZW51KCkpOwogfQogI2VuZGlmCiAKQEAgLTU5NTIs
NyArNTk1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUoQ29udGV4dE1l
bnVDb250ZXh0RGF0YSYmIGNvbnRleHRNZW51Q29udGV4dERhCiAgICAgbV9hY3RpdmVDb250ZXh0
TWVudS0+c2hvdygpOwogCiAgICAgLy8gTm8gbWF0dGVyIHRoZSByZXN1bHQgb2YgaW50ZXJuYWxT
aG93Q29udGV4dE1lbnUsIGFsd2F5cyBub3RpZnkgdGhlIFdlYlByb2Nlc3MgdGhhdCB0aGUgbWVu
dSBpcyBoaWRkZW4gc28gaXQgc3RhcnRzIGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBhZ2Fpbi4KLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlkZGVuKCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUhpZGRl
bigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNv
bnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCkBAIC02MDMwLDEyICs2MDMwLDEyIEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250
ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRN
ZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcgfHwgaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0
ZW1UYWdJZ25vcmVTcGVsbGluZykKICAgICAgICAgKyttX3BlbmRpbmdMZWFybk9ySWdub3JlV29y
ZE1lc3NhZ2VDb3VudDsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1l
bnUoaXRlbSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVLZXlF
dmVudCgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0
TWVudUZvcktleUV2ZW50KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb250ZXh0TWVudUZvcktleUV2ZW50KCkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URVhU
X01FTlVTKQogCkBAIC02MDUxLDEwICs2MDUxLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
aG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlVVJMcy5zaXplKCk7ICsraSkKICAgICAg
ICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ldLCBTYW5kYm94RXh0
ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmls
ZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFu
ZWwoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpKTsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNw
bGF5U3RyaW5nQW5kSWNvbihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBpY29u
RGF0YS0+ZGF0YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCkpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxX
aXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMsIGRpc3BsYXlTdHJpbmcsIGljb25EYXRh
ID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0YVJlZmVyZW5jZSgpKSk7CiAK
ICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MDc5LDEwICs2MDc5LDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZmlsZVVSTHMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwo
c2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlcykpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZp
bGVVUkxzKSk7CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7
CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MDkzLDcgKzYw
OTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2FuY2VsRm9yT3BlblBhbmVsKCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxGb3JPcGVuUGFuZWwo
KSk7CiAgICAgCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwog
ICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAtNjEwMSw3ICs2MTAx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9wZW5QYW5lbCgpCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNl
bGVjdGlvbikKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkdmFu
Y2VUb05leHRNaXNzcGVsbGluZyhzdGFydEJlZm9yZVNlbGVjdGlvbiksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRC
ZWZvcmVTZWxlY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZVNwZWxsaW5n
VG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCkKQEAgLTYxMDksNyArNjEwOSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCiAgICAg
aWYgKHdvcmQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZVNwZWxsaW5nVG9Xb3JkKHdvcmQpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlU3BlbGxpbmdUb1dvcmQod29y
ZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWY8V2Vi
RWRpdENvbW1hbmRQcm94eT4mJiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVkbykK
QEAgLTYxMjgsNyArNjEyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVFZGl0Q29tbWFu
ZChXZWJFZGl0Q29tbWFuZFByb3h5JiBjb21tYW5kKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRSZW1vdmVFZGl0Q29tbWFuZChjb21tYW5kLmNvbW1hbmRJRCgpKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUVkaXRDb21tYW5kKGNv
bW1hbmQuY29tbWFuZElEKCkpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmNhblVuZG8oKQpA
QCAtNjIxNywxMiArNjIxNywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdENoZWNraW5n
T2ZTdHJpbmcodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBUZXh0Q2hlY2tpbgogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdCkKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEZpbmlzaENoZWNraW5nVGV4dChy
ZXF1ZXN0SUQsIHJlc3VsdCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRGaW5pc2hDaGVja2luZ1RleHQocmVxdWVzdElELCByZXN1bHQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxDaGVja2lu
Z1RleHQocmVxdWVzdElEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZENhbmNlbENoZWNraW5nVGV4dChyZXF1ZXN0SUQpKTsKIH0KIC8vIE90aGVyCiAKQEAgLTYz
NTEsNyArNjM1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMy
X3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICBib29sIGNhblByb2Nlc3NNb3Jl
S2V5RXZlbnRzID0gIW1fa2V5RXZlbnRRdWV1ZS5pc0VtcHR5KCk7CiAgICAgICAgIGlmIChjYW5Q
cm9jZXNzTW9yZUtleUV2ZW50cykgewogICAgICAgICAgICAgTE9HKEtleUhhbmRsaW5nLCAiIFVJ
IHByb2Nlc3M6IHNlbnQga2V5RXZlbnQgZnJvbSBkaWRSZWNlaXZlRXZlbnQiKTsKLSAgICAgICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQobV9rZXlFdmVu
dFF1ZXVlLmZpcnN0KCkpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpLZXlFdmVudChtX2tleUV2ZW50UXVldWUuZmlyc3QoKSkpOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gVGhlIGNhbGwgdG8gZG9uZVdpdGhLZXlFdmVudCBtYXkgY2xvc2UgdGhpcyBX
ZWJQYWdlLgpAQCAtNjcxNSw3ICs2NzE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lU2V0
TGFyZ2VzdEZyYW1lQ2hhbmdlZCh1aW50NjRfdCBmcmFtZUlEKQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0Rp
ZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjcyNyw3ICs2
NzI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUo
KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNw
b25zaXZlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNzIzMyw3ICs3MjMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQ2xl
YXIoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxH
YW1lcGFkRGF0YT4mIGdhbWVwYWREYXRhcywgYm9vbCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxl
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2
aXR5KGdhbWVwYWREYXRhcywgc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHYW1lcGFkQWN0aXZpdHkoZ2FtZXBhZERhdGFz
LCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKSk7CiB9CiAKICNlbmRpZgpAQCAtNzUzOSw3ICs3
NTM5LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OndpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZl
bnRzKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhX
ZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNpdGVQb2xp
Y2llcyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVXZWJz
aXRlUG9saWNpZXMod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UpCkBAIC03NTQ5LDcgKzc1NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9h
ZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRSZW1vdmVkSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyJiBpdGVtSUQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKGJvb2wgY2FuUnVuTW9k
YWwpCkBAIC03NTYyLDcgKzc1NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9k
YWwoYm9vbCBjYW5SdW5Nb2RhbCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Q2FuUnVuTW9kYWwobV9jYW5SdW5Nb2RhbCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRDYW5SdW5Nb2RhbChtX2NhblJ1bk1vZGFsKSk7CiB9CiAKIGJvb2wgV2Vi
UGFnZVByb3h5OjpjYW5SdW5Nb2RhbCgpCkBAIC03NTc2LDcgKzc1NzYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6YmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJ
bmZvJiBwcmludEluZgogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzSW5QcmludGluZ01vZGUg
PSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5Qcmlu
dGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8pLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5k
T3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8p
LCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmVuZFByaW50aW5nKCkKQEAgLTc1ODUsNyArNzU4NSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbmRQcmludGluZygpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1faXNJblByaW50aW5nTW9kZSA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RW5kUHJpbnRpbmcoKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlv
bnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkVuZFByaW50aW5nKCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1p
bmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJp
bnRJbmZvLCBSZWY8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtNzU5OCw3
ICs3NTk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nKGZyYW1lLT5m
cmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRP
cHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBw
cmludEluZm8sIGNhbGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5n
RE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzYxMSw3
ICs3NjExLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
cmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNp
emUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9y
bWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJh
d1JlY3RUb0ltYWdlKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgcmVjdCwgaW1hZ2VTaXpl
LCBjYWxsYmFja0lEKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50
T3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTc2
MjMsNyArNzYyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluCiAgICAgCiAgICAgYXV0byBj
YWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFjaykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwgY291
bnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9y
bWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJh
d1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIGNh
bGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVy
YXRpb24pKTsKIH0KICNlbGlmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3
UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC03NjM2
LDcgKzc2MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZy
YW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9w
dGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRyYXdQYWdlc0ZvclByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50
SW5mbywgY2FsbGJhY2tJRCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Q
cmludE9wZXJhdGlvbikpOwogfQogI2VuZGlmCiAKQEAgLTc2ODEsNyArNzY4MSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3TGF5b3V0
U2l6ZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld0xheW91dFNpemUo
dmlld0xheW91dFNpemUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0Vmlld0xheW91dFNpemUodmlld0xheW91dFNpemUpKTsKICAgICBtX2RyYXdpbmdBcmVhLT52
aWV3TGF5b3V0U2l6ZURpZENoYW5nZSgpOwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTc3MDAsNyAr
NzcwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9W
aWV3SGVpZ2h0KGJvb2wgc2hvdWxkRXhwYW5kKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KHNob3VsZEV4cGFuZCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRvU2l6aW5nU2hv
dWxkRXhwYW5kVG9WaWV3SGVpZ2h0KHNob3VsZEV4cGFuZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBJbnRTaXplJiB2
aWV3cG9ydFNpemUpCkBAIC03NzEzLDcgKzc3MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
egogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemVGb3JDU1NW
aWV3cG9ydFVuaXRzKHZpZXdwb3J0U2l6ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHZpZXdwb3J0U2l6
ZSkpOwogfQogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQpAQCAtNzc4NCw3
ICs3Nzg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9u
c2UoaW50MzJfdCByZXNwb25zZSwgY29uc3QgU3RyaW5nJgogdm9pZCBXZWJQYWdlUHJveHk6Omhh
bmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQogewogICAg
IGlmICghaXNDbG9zZWQoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVz
dWx0KHJlc3VsdCkpOwogfQogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCkBAIC03
ODI1LDcgKzc4MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3Qg
U3RyaW5nJiB0ZXh0LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlv
blN0YXJ0LCBzZWxlY3Rpb25FbmQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRS
YW5nZUVuZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21w
b3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCBy
ZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9u
U3RyaW5nLCBpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCBpbnQ2NF90IHNlbGVjdGlvbkxlbmd0aCkK
QEAgLTc4MzMsNyArNzgzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRp
b24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgaW50NjRfdCBzCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5n
LCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uTGVuZ3RoKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywg
c2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2FuY2VsQ29tcG9zaXRpb24oKQpAQCAtNzg0MSw3ICs3ODQxLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDYW5jZWxDb21wb3NpdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Q2FuY2VsQ29tcG9zaXRpb24oKSk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQog
CkBAIC03ODU4LDcgKzc4NTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGlubmlu
Z0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogICAgIG1fc2Nyb2xsUGlu
bmluZ0JlaGF2aW9yID0gcGlubmluZzsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbFBpbm5p
bmdCZWhhdmlvcihwaW5uaW5nKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IocGlubmluZykpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNj
cm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUpCkBAIC03ODc2LDcgKzc4NzYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdl
YkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdAogICAgICAgICBzY3JvbGxiYXJTdHlsZUZvck1lc3Nh
Z2UgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHNjcm9sbGJhclN0eWxlLnZh
bHVlKCkpOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9s
bGJhclN0eWxlRm9yTWVzc2FnZSksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9yTWVzc2Fn
ZSkpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCkBAIC03OTIxLDcgKzc5MjEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2ln
bmVkIGtleVNpemVJbmRleCwgY29ucwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkTUlNRVR5cGVX
aXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRNSU1FVHlwZVdpdGhDdXN0b21D
b250ZW50UHJvdmlkZXIobWltZVR5cGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKG1pbWVUeXBlKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpG
b250QXR0cmlidXRlQ2hhbmdlcyYmIGNoYW5nZXMpCkBAIC03OTI5LDcgKzc5MjksNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0
ZUNoYW5nZXMmJiBjaGFuZ2VzKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5n
ZUZvbnRBdHRyaWJ1dGVzKFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udEF0dHJpYnV0ZXMoV1RGTW92ZShjaGFuZ2VzKSkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdl
cyYmIGNoYW5nZXMpCkBAIC03OTM3LDcgKzc5MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hh
bmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2VzKSkp
OwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03OTQ1LDcgKzc5NDUsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAg
ICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFRleHRBc3luYyh0ZXh0KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGlu
Z1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmIG9wdGlvbnMpCkBA
IC03OTUzLDcgKzc5NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNv
bnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdl
LCBXVEZNb3ZlKG9wdGlvbnMpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlv
bnMpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYXNNYXJrZWRUZXh0KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCkBAIC03OTYyLDcgKzc5NjIsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9w
YWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SGFzTWFy
a2VkVGV4dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzk3Myw3ICs3OTczLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2
b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMo
Y2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFz
eW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzk4NCw3ICs3OTg0LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdS
YW5nZSwgQ2FsbGIKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdURjo6RnVuY3Rpb248dm9pZCAodWludDY0
X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC03OTk1LDcg
Kzc5OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5j
KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgVwogICAgIH0KIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMo
cG9pbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0
IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCkBAIC04MDA2LDcgKzgwMDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdl
LCBXVAogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpG
aXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJh
bmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9z
aXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlv
blJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpCkBAIC04MDE3LDcg
KzgwMTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9u
QXN5bmModGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uUmFuZ2UsIHJlcGxhY2VtZW50UmFuZ2Up
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb25B
c3luYyh0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25SYW5nZSwgcmVwbGFjZW1lbnRSYW5nZSkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQpAQCAt
ODAyNSw3ICs4MDI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFz
eW5jKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb25B
c3luYygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNv
bXBvc2l0aW9uQXN5bmMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQZXJm
b3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC04MDUwLDcgKzgw
NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50
U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAgIH0KIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90KHJlY3QsIGJpdG1hcFNpemUs
IG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VGFrZVNuYXBzaG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4oKQpA
QCAtODIwOCw3ICs4MjA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQ
bGF5aW5nU2Vzc2lvbkluZm8oUmVmPE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2sKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWlu
Z1Nlc3Npb25JbmZvKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5vd1Bs
YXlpbmdJbmZvQ2FsbGJhY2soYm9vbCBoYXNBY3RpdmVTZXNzaW9uLCBib29sIHJlZ2lzdGVyZWRB
c05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGR1cmF0
aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUsIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKQEAgLTgyNTEsMjIgKzgyNTEsMjIgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlFdmVudCBldmVudCwgT3B0
aW9uU2V0PEEKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybUlt
bWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKEZsb2F0UG9pbnQgcG9pbnQpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtSW1tZWRpYXRlQWN0aW9u
SGl0VGVzdEF0TG9jYXRpb24ocG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKHBvaW50KSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKQogewot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlk
VXBkYXRlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlh
dGVBY3Rpb25EaWRVcGRhdGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbW1lZGlhdGVB
Y3Rpb25EaWRDYW5jZWwoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpCiB7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlk
Q29tcGxldGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtSW1tZWRpYXRl
QWN0aW9uSGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgcmVzdWx0LCBib29sIGNv
bnRlbnRQcmV2ZW50c0RlZmF1bHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTgyODEs
NyArODI4MSw3IEBAIE5TT2JqZWN0ICpXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkFuaW1h
dGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgYWNj
ZXB0ZWRDYW5kaWRhdGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0ZSksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShhY2Nl
cHRlZENhbmRpZGF0ZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkSGFuZGxlQWNjZXB0
ZWRDYW5kaWRhdGUoKQpAQCAtODI5OSwxNyArODI5OSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0VXNlU3lzdGVtQXBwZWFyYW5jZShib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZVN5c3RlbUFwcGVhcmFuY2UodXNlU3lzdGVt
QXBwZWFyYW5jZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRV
c2VTeXN0ZW1BcHBlYXJhbmNlKHVzZVN5c3RlbUFwcGVhcmFuY2UpKTsKIH0KICAgICAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWlnaHQp
CiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRIZWFkZXJCYW5u
ZXJIZWlnaHRGb3JUZXN0aW5nKGhlaWdodCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGhlaWdodCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhpbnQg
aGVpZ2h0KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9v
dGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQp
KTsKIH0KIAogI2VuZGlmCkBAIC04MzM1LDcgKzgzMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBu
ZXdTaQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3Zl
RXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKQogewotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91
c2VNb3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGREaXNwYXRjaEZha2VNb3Vz
ZU1vdmVFdmVudHMoc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBdXRvRmlsbEJ1dHRvbkNsaWNrKGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKQEAgLTgzODQsNyArODM4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQ
bGF5YmFja1RhcmdldCh1aW50NjRfdCBjb250ZXh0SWQsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQo
Y29udGV4dElkLCB0YXJnZXQtPnRhcmdldENvbnRleHQoKSksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRleHRJZCwgdGFy
Z2V0LT50YXJnZXRDb250ZXh0KCkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBh
dmFpbGFibGUpCkBAIC04MzkyLDcgKzgzOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJu
YWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UodWludDY0X3QgY29udGV4dElkLCBibwog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0
eURpZENoYW5nZShjb250ZXh0SWQsIGF2YWlsYWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShjb250
ZXh0SWQsIGF2YWlsYWJsZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkUGxh
eVRvUGxheWJhY2tUYXJnZXQodWludDY0X3QgY29udGV4dElkLCBib29sIHNob3VsZFBsYXkpCkBA
IC04NDAwLDcgKzg0MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkUGxheVRvUGxh
eWJhY2tUYXJnZXQodWludDY0X3QgY29udGV4dElkLCBib29sIHNob3VsZAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjb250ZXh0
SWQsIHNob3VsZFBsYXkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBzaG91bGRQbGF5KSk7CiB9
CiAjZW5kaWYKIApAQCAtODQyNiw3ICs4NDI2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFy
V2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoV1RGOjpGdW5j
dGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKQEAgLTg0NDksNyAr
ODQ0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3Vt
ZW50KGJvb2wgc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoc2hvdWxkU2NhbGVWaWV3
VG9GaXREb2N1bWVudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1l
bnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigp
CkBAIC04NDY5LDcgKzg0NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9u
Rm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwogICAgICAgICBi
b29sIGRlY2lzaW9uID0gKGJvb2wpY2FsbGJhY2tGdW5jdGlvbjsKICAgICAgICAgYXV0byBuZXdD
YWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlvbmFsQ2FsbGJhY2tJRChtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQoKTsKIAot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNp
c2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZp
ZXIpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExv
YWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lk
ZW50aWZpZXIpKTsKICAgICB9KTsKIH0KIApAQCAtODQ4OCw3ICs4NDg4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGRp
c2FibGVkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFJlc291
cmNlQ2FjaGluZ0Rpc2FibGVkKGRpc2FibGVkKSk7CiB9CiAKIFdlYkNvcmU6OlVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24gV2ViUGFnZVByb3h5Ojp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0
aW9uKCkKQEAgLTg1MDEsNyArODUwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VySW50
ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXRECiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24pKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlVmFsaWRhdGlvbk1lc3Nh
Z2UoKQpAQCAtODU0OCwxNCArODU0OCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQWxsb3dQ
b2ludGVyTG9jaygpCiAgICAgQ0dEaXNwbGF5SGlkZUN1cnNvcihDR01haW5EaXNwbGF5SUQoKSk7
CiAgICAgQ0dBc3NvY2lhdGVNb3VzZUFuZE1vdXNlQ3Vyc29yUG9zaXRpb24oZmFsc2UpOwogI2Vu
ZGlmCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRBY3F1aXJlUG9p
bnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEFj
cXVpcmVQb2ludGVyTG9jaygpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZW55
UG9pbnRlckxvY2soKQogewogICAgIEFTU0VSVChtX2lzUG9pbnRlckxvY2tQZW5kaW5nICYmICFt
X2lzUG9pbnRlckxvY2tlZCk7CiAgICAgbV9pc1BvaW50ZXJMb2NrUGVuZGluZyA9IGZhbHNlOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50
ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RB
Y3F1aXJlUG9pbnRlckxvY2soKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9p
bnRlclVubG9jaygpCkBAIC04NTY2LDEyICs4NTY2LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0UG9pbnRlclVubG9jaygpCiAgICAgICAgIENHRGlzcGxheVNob3dDdXJzb3IoQ0dNYWlu
RGlzcGxheUlEKCkpOwogI2VuZGlmCiAgICAgICAgIG1fdWlDbGllbnQtPmRpZExvc2VQb2ludGVy
TG9jayh0aGlzKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRMb3NlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRMb3NlUG9pbnRlckxvY2soKSk7CiAgICAgfQogCiAgICAgaWYgKG1faXNQb2lu
dGVyTG9ja1BlbmRpbmcpIHsKICAgICAgICAgbV91aUNsaWVudC0+ZGlkTG9zZVBvaW50ZXJMb2Nr
KHRoaXMpOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5v
dEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpKTsKICAgICB9CiAKICAgICBtX2lz
UG9pbnRlckxvY2tlZCA9IGZhbHNlOwpAQCAtODU5Miw3ICs4NTkyLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRs
ZXI+JiYgaGFuZGwKICAgICBhdXRvIGlkZW50aWZpZXJSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRs
ZXJzQnlJZGVudGlmaWVyLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKICAgICBB
U1NFUlRfVU5VU0VEKGlkZW50aWZpZXJSZXN1bHQsIGlkZW50aWZpZXJSZXN1bHQuaXNOZXdFbnRy
eSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVVJM
U2NoZW1lSGFuZGxlcihpZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVI
YW5kbGVyKGlkZW50aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOwogfQogCiBX
ZWJVUkxTY2hlbWVIYW5kbGVyKiBXZWJQYWdlUHJveHk6OnVybFNjaGVtZUhhbmRsZXJGb3JTY2hl
bWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCkBAIC04NjUxLDcgKzg2NTEsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UodXNlRGFya0FwcGVh
cmFuY2UoKSwgdXNlSW5hY3RpdmVBcHBlYXJhbmNlKCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSh1c2VEYXJrQXBw
ZWFyYW5jZSgpLCB1c2VJbmFjdGl2ZUFwcGVhcmFuY2UoKSkpOwogfQogCiAjaWYgUExBVEZPUk0o
Q09DT0EpCkBAIC04NjkwLDcgKzg2OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0
YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIEZ1bmN0aW9uPAogCiAg
ICAgYXV0byBhdHRhY2htZW50SWRlbnRpZmllciA9IGF0dGFjaG1lbnQtPmlkZW50aWZpZXIoKTsK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGF0dGFj
aG1lbnRJZGVudGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNo
bWVudC0+ZmlsZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50
KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3BsYXkoKSwg
YXR0YWNobWVudC0+ZmlsZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwgY2FsbGJh
Y2tJRCkpOwogICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0KGF0
dGFjaG1lbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKIH0KIApAQCAtODcwNiw3
ICs4NzA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVz
KGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwKICAgICAgICAgZGF0YVJlZmVyZW5j
ZSA9IHsgKmRhdGEgfTsKIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50
LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1l
bnQuZmlsZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmli
dXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3Bs
YXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdU
Rk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVy
cmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKQEAgLTg4NjYsNyAr
ODg2Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0
aW9uPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRl
bnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25NYW5p
ZmVzdChjYWxsYmFja0lEKSk7CiB9CiAjZW5kaWYKIApAQCAtODkzMCw3ICs4OTMwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcG9ydFBhZ2VMb2FkUmVzdWx0KGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGVmZXJzTG9hZGluZ0ZvclRlc3Rpbmco
Ym9vbCBkZWZlcnNMb2FkaW5nKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0RGVmZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZykpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0SXNWaWV3VmlzaWJsZShib29sJiByZXN1bHQpCkBA
IC04OTQyLDcgKzg5NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQ3VycmVudE1vZGlm
aWVyU3RhdGUoKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lO
RE9XU0VSVkVSX0JMT0NLSU5HKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gbW9k
aWZpZXJzID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50U3RhdGVPZk1vZGlmaWVyS2V5
cygpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQ3VycmVu
dE1vZGlmaWVyU3RhdGUobW9kaWZpZXJzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKG1vZGlmaWVycykpOwogI2VuZGlm
CiB9CiAKQEAgLTg5ODQsMTkgKzg5ODQsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxBY3F1
aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKFdlYlByb2Nlc3NQcm94eSYKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoZG91Ymxl
IGFscGhhLCBkb3VibGUgYmV0YSwgZG91YmxlIGdhbW1hKQogewotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBo
YSwgYmV0YSwgZ2FtbWEpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEpKTsKIH0K
IAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRldGVj
dERhdGFJbkFsbEZyYW1lcyhXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlcyB0eXBlcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGV0ZWN0RGF0YUluQWxsRnJhbWVzKHN0YXRpY19jYXN0
PHVpbnQ2NF90Pih0eXBlcykpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQp
OworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGV0ZWN0RGF0YUlu
QWxsRnJhbWVzKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBlcykpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVEYXRhRGV0ZWN0ZWRM
aW5rcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRhRGV0ZWN0ZWRMaW5r
cygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiAjZW5kaWYKQEAgLTkxNDYsNyArOTE0
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJDb3Jl
OjpGbG9hdFJlY3QgcmVjdCwgQ29tcGxldGlvbkhhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6OlRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRl
eHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYgY29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTkxNTYsNyArOTE1Niw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29udGV4
dCYgY29udGV4dCwgQ29tcGxlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpG
b2N1c1RleHRJbnB1dENvbnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpG
b2N1c1RleHRJbnB1dENvbnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAogTG9nZ2VyJiBXZWJQYWdlUHJveHk6OmxvZ2dlcigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDZjNWFkNjI1ZDEyLi5hNmU4ZmUxODJmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNs
dWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5oIgorI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlVuZG9TdGVwSUQuaCIKICNpbmNsdWRlICJX
ZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+
CkBAIC04Miw2ICs4Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRTaXplLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZS5oPgpAQCAtMzgyLDE0ICszODQsMTQgQEAgY2xhc3MgV2ViUGFnZVByb3h5
IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICNlbmRp
ZgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2VQcm94eT4gewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdlYlByb2Nl
c3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYp
OworICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdlYlBy
b2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJik7CiAgICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKICAgICBzdGF0aWMg
dm9pZCBmb3JNb3N0VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJQYWdl
UHJveHkqKT4mJik7CiAKICAgICBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKCkgY29uc3Q7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUlEOyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25z
dDsKIApAQCAtMTUwMiw3ICsxNTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmF2aWdhdGVX
aXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgZGlkQ2hh
bmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCi0g
ICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJh
bWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLAorICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCiAgICAgICAgIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAg
ICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNTExLDcgKzE1MTMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpT
aG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNv
cmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Y1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBib29sIGlz
TWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVw
bHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRG
b3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpAQCAtMTU0OSw5ICsxNTUxLDkgQEAgV0VCUEFH
RVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzEKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNl
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90
IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJy
ZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0KKyAgICAKIHByaXZhdGU6Ci0gICAgV2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKKyAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVu
dCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8QVBJOjpQ
YWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAog
ICAgIHZvaWQgbm90aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0oKTsKQEAgLTE1NzMsNiArMTU3NSwx
MSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9j
ZXNzVGVybWluYXRpb25SZWFzb24pOwogCiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYp
OworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFRvUHJvY2VzcyhXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIFUmJiBtZXNzYWdlLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0
aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9jZXNzLnNl
bmQoV1RGTW92ZShtZXNzYWdlKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgc2VuZE9wdGlvbnMpOwor
ICAgIH0KIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIGJvb2wgc2VuZE1lc3NhZ2Uo
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+
KSBvdmVycmlkZTsKQEAgLTE2MjcsMTMgKzE2MzQsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2Vi
RnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEm
JiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAg
ICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBVc2VyRGF0YSYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBG
cmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJh
bWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJv
b2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5
ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAg
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE2NTUsNyArMTY2Miw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoY29uc3QgU3RyaW5nJiB0
aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpOwogCiAgICAgLy8gVUkg
Y2xpZW50Ci0gICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNv
cmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGNy
ZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2
b2lkIHNob3dQYWdlKCk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkm
Jik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYpOwpAQCAt
MjMyNyw3ICsyMzM0LDcgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzIK
ICAgICBSZWZQdHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4gbV92YWxpZGF0aW9uQnViYmxl
OwogI2VuZGlmCiAKLSAgICBjb25zdCB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBjb25zdCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5k
ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hZGRzVmlzaXRlZExpbmtzIHsgdHJ1ZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDZmY2VjZGM2YjY1Li5iMWU3OTkyMjNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgVUkgbWVzc2FnZXMKLSAgICBDcmVhdGVOZXdQYWdl
KHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIHN0cnVjdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcywgc3RydWN0
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEpIC0+ICh1
aW50NjRfdCBuZXdQYWdlSUQsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycz4gbmV3UGFnZVBhcmFtZXRlcnMpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRlTmV3UGFnZShz
dHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVz
IHdpbmRvd0ZlYXR1cmVzLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBu
ZXdQYWdlSUQsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gbmV3
UGFnZVBhcmFtZXRlcnMpIFN5bmNocm9ub3VzCiAgICAgU2hvd1BhZ2UoKQogICAgIENsb3NlUGFn
ZShib29sIHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKQogICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFN0cmluZyBtZXNzYWdlKSAtPiAoKSBTeW5jaHJvbm91cwpAQCAtMTA0
LDggKzEwNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIFBvbGljeSBt
ZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFN0cmlu
ZyBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWlu
dDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRp
b25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUlu
Zm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwg
c3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEp
IC0+IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVy
LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0
X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9u
YWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5bmNocm9u
b3VzCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZy
YW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9y
aWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNw
b25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKKyAg
ICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBi
b29sIGlzTWFpbkZyYW1lLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
ZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3Qg
V2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlv
bklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJz
aXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5bmNocm9ub3VzCiAgICAgRGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6TmF2
aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNl
ckRhdGEgdXNlckRhdGEpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcAppbmRleCBjODAyM2RlNDE2MS4uZjQ5NzE1MWQ3
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGlt
ZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlm
ZXRpbWVPYnNlcnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXZWJQcm9jZXNzTGlmZXRp
bWVPYnNlcnZlcjo6YWRkV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHJv
Y2UKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvY2Vzcy5pc1ByZXdhcm1lZCgpKTsKIAogICAgIGlm
IChtX3Byb2Nlc3Nlcy5hZGQoJnByb2Nlc3MpLmlzTmV3RW50cnkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBh
Z2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vz
c0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAgICAgUkVMRUFTRV9M
T0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lk
ZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgICAgICB3
ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHByb2Nlc3MsICpwcm9jZXNzLmNvbm5lY3Rpb24o
KSk7CiAgICAgfQogCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lT2Jz
ZXJ2ZXI6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYlByCiAg
ICAgd2ViUGFnZURpZENsb3NlQ29ubmVjdGlvbih3ZWJQYWdlUHJveHksICpwcm9jZXNzLmNvbm5l
Y3Rpb24oKSk7CiAKICAgICBpZiAobV9wcm9jZXNzZXMucmVtb3ZlKCZwcm9jZXNzKSkgewotICAg
ICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZl
cjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywg
cHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAg
ICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZl
cjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywg
cHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50
NjQoKSk7CiAgICAgICAgIHdlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24ocHJvY2VzcywgKnBy
b2Nlc3MuY29ubmVjdGlvbigpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMGUxMzlmMzBkOWMuLjBiOGIzNDVlZjhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMjk2LDkgKzEyOTYs
OSBAQCBib29sIFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJz
KGNvbnN0IFdlYnNpdGVEYXRhU3RvcmUmIHN0bwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdl
YnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdp
blVzaW5nV2Vic2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRh
U3RvcmUmIGRhdGFTdG9yZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlE
c01hcC5hZGQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PHVpbnQ2NF90PigpKS5pdGVy
YXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CisgICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1Bh
Z2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDxQYWdlSWRlbnRpZmll
cj4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOwogICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9y
ZS5zZXNzaW9uSUQoKTsKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVE
YXRhCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQor
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKICAgICBhdXRv
IHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0g
bV9zZXNzaW9uVG9QYWdlSURzTWFwLmZpbmQoc2Vzc2lvbklEKTsKQEAgLTIyMTEsNyArMjIxMSw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlaW5zdGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9u
U3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKLVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CitTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eUZyb21QYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIC8vIEZJ
WE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclBy
b2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKQEAgLTI1MTksNyAr
MjUxOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVG
b3JUZXN0aW5nKCkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkpOwogfQogCi12b2lkIFdlYlBy
b2Nlc3NQb29sOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKQordm9p
ZCBXZWJQcm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9t
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlm
ICghbV9uZXR3b3JrUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oCmluZGV4IDE2NTU0NWIxYTJmLi41M2IyMzVhZWY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xOTMsOCArMTkzLDggQEAgcHVibGljOgogCiAgICAg
UmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb24+JiYpOwogCi0gICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRh
U3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0gICAgdm9pZCBwYWdl
RW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9y
ZSYpOworICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlRW5kVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3Jl
Jik7CiAgICAgYm9vbCBoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0
b3JlJikgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCk7IH0KQEAg
LTM2NSw3ICszNjUsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAg
ICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
TmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIE9wdGlv
bmFsPFBBTDo6U2Vzc2lvbklEPik7Ci0gICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogc2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0X3QgcGFnZUlEKSBjb25zdDsK
KyAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
RnJvbVBhZ2VJRChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgY29uc3QgSGFz
aE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtl
clByb2Nlc3NlczsgfQogICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2
aWNlV29ya2VyKGJvb2wgYWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2
aWNlV29ya2VyID0gYWxsb3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZv
clNlcnZpY2VXb3JrZXIoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRl
Rm9yU2VydmljZVdvcmtlcjsgfQpAQCAtNDkzLDcgKzQ5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNlbmREaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpOwogICAg
IHZvaWQgY2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoKTsKIAotICAgIHZvaWQg
Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwg
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2
b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQgc2V0
U2FuZGJveEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fc2FuZGJveEVuYWJsZWQgPSBlbmFibGVk
OyB9OwpAQCAtNzU4LDcgKzc1OCw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXRocyBtX3Jl
c29sdmVkUGF0aHM7CiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBIYXNoU2V0PHVpbnQ2
NF90Pj4gbV9zZXNzaW9uVG9QYWdlSURzTWFwOworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQs
IEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7
CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUHJvY2Vzc1Bvb2w+IG1fc2VydmljZVdvcmtlclByb2Nl
c3Nlc1Rlcm1pbmF0aW9uVGltZXI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggODIwMzQ2NWNiMjgu
LjY3ODMxZTIwNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5jcHAKQEAgLTExMCwxMCArMTEwLDkgQEAgV2ViUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUHJv
eHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWYKICAgICBy
ZXR1cm4gYWxsUHJvY2Vzc2VzKCkuZ2V0KGlkZW50aWZpZXIpOwogfQogCi11aW50NjRfdCBXZWJQ
cm9jZXNzUHJveHk6OmdlbmVyYXRlUGFnZUlEKCkKK1BhZ2VJZGVudGlmaWVyIFdlYlByb2Nlc3NQ
cm94eTo6Z2VuZXJhdGVQYWdlSUQoKQogewotICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVQYWdl
SUQ7Ci0gICAgcmV0dXJuICsrdW5pcXVlUGFnZUlEOworICAgIHJldHVybiBQYWdlSWRlbnRpZmll
cjo6Z2VuZXJhdGUoKTsKIH0KIAogc3RhdGljIFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5
TWFwJiBnbG9iYWxQYWdlTWFwKCkKQEAgLTMzMCw3ICszMjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2h1dERvd24oKQogICAgIG1fcHJvY2Vzc1Bvb2wtPmRpc2Nvbm5lY3RQcm9jZXNzKHRo
aXMpOwogfQogCi1XZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQpCitXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShQYWdlSWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGdsb2JhbFBhZ2VNYXAoKS5nZXQocGFnZUlE
KTsKIH0KQEAgLTM2Myw3ICszNjIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFn
ZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCogbWVzc2FnZQogCiBSZWY8
V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRp
b24pCiB7Ci0gICAgdWludDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKKyAgICBhdXRv
IHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7CiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2ViUGFn
ZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdURk1v
dmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIGFkZEV4aXN0aW5nV2ViUGFnZSh3ZWJQYWdl
LmdldCgpLCBCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKQEAgLTQxNSwxMCArNDE0LDEwIEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFn
ZSwgRW5kc1VzaW5nRGF0YVN0b3JlIGVuCiAgICAgbWF5YmVTaHV0RG93bigpOwogfQogCi12b2lk
IFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9y
ZSYgdmlzaXRlZExpbmtTdG9yZSwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5r
U3RvcmUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvJiB1c2VycyA9IG1fdmlz
aXRlZExpbmtTdG9yZXNXaXRoVXNlcnMuZW5zdXJlKCZ2aXNpdGVkTGlua1N0b3JlLCBbXSB7Ci0g
ICAgICAgIHJldHVybiBIYXNoU2V0PHVpbnQ2NF90PiB7IH07CisgICAgICAgIHJldHVybiBIYXNo
U2V0PFBhZ2VJZGVudGlmaWVyPiB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAg
QVNTRVJUKCF1c2Vycy5jb250YWlucyhwYWdlSUQpKTsKQEAgLTQyOCw3ICs0MjcsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9y
ZSYgdmlzaXRlZExpbmtTdG9yZQogICAgICAgICB2aXNpdGVkTGlua1N0b3JlLmFkZFByb2Nlc3Mo
KnRoaXMpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9y
ZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgdWludDY0X3QgcGFnZUlE
KQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0
ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBhdXRvIGl0ID0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5maW5kKCZ2aXNpdGVk
TGlua1N0b3JlKTsKICAgICBpZiAoaXQgPT0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5l
bmQoKSkKQEAgLTU0MSw3ICs1NDAsNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtleWJv
YXJkQWNjZXNzRW5hYmxlZCgpCiB9CiAjZW5kaWYKIAotYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhh
c1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29sIFdlYlBy
b2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8qIHByb3Zpc2lvbmFsUGFnZSA6IG1fcHJvdmlzaW9u
YWxQYWdlcykgewogICAgICAgICBpZiAocHJvdmlzaW9uYWxQYWdlLT5wYWdlKCkucGFnZUlEKCkg
PT0gcGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRl
eCA5YTZjYmYxZjQ2MC4uYWQzZjAzOGRkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1By
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNz
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NoYXJlZFN0cmluZ0hhc2guaD4KQEAgLTk3LDcgKzk4LDcgQEAgZW51
bSBjbGFzcyBBbGxvd1Byb2Nlc3NDYWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJvY2Vz
c1Byb3h5IDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNpdmVu
ZXNzVGltZXI6OkNsaWVudCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQ
cm94eT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRlIFBy
b2Nlc3NUaHJvdHRsZXJDbGllbnQgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFwOwotICAgIHR5cGVk
ZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOworICAg
IHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5Kj4g
V2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFQ
STo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKICAgICBl
bnVtIGNsYXNzIElzUHJld2FybWVkIHsKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIHN0YXRp
YyBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBh
Z2VJRCk7CisgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7CiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50
JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZW51bSBjbGFzcyBCZWdp
bnNVc2luZ0RhdGFTdG9yZSA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0xNDksMTAgKzE1MCwxMCBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nl
c3ModWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3Mo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0b3Jl
VXNlcihWaXNpdGVkTGlua1N0b3JlJiwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHJlbW92
ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVV
c2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAgICB2
b2lkIGFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGlkRGVz
dHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5Jik7CkBAIC0zMTEsNyArMzEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ViUGFnZU1l
ZGlhU3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5Jik7CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0
aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vz
c1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQpOwogCiAgICAgLy8gQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5CkBAIC0zNTQsNyArMzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4
dElEKTsKICNlbmRpZgogCi0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWludDY0
X3QgcGFnZUlEKSBjb25zdDsKKyAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0ZUJh
Y2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7CiAKICAgICAvLyBQ
bHVnaW5zCkBAIC00NDcsNyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFByb3Zpc2lv
bmFsUGFnZVByb3h5Kj4gbV9wcm92aXNpb25hbFBhZ2VzOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rp
b25NYXAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCi0gICAgSGFzaE1hcDxWaXNpdGVkTGlu
a1N0b3JlKiwgSGFzaFNldDx1aW50NjRfdC8qIHBhZ2VJRCAqLz4+IG1fdmlzaXRlZExpbmtTdG9y
ZXNXaXRoVXNlcnM7CisgICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAgICAg
SGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveGllczsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5h
dGlvbldhc0Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVIYW5kbGVyLmNwcAppbmRleCBlMzU1MzE5ZWE0Yy4uN2Q1NzVhNDA0YjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC0xMDksNyAr
MTA5LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjp0YXNrQ29tcGxldGVkKFdlYlVSTFNj
aGVtZVRhc2smIHRhc2spCiAgICAgcGxhdGZvcm1UYXNrQ29tcGxldGVkKHRhc2spOwogfQogCi12
b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IHRhc2tJRCkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6cmVtb3Zl
VGFza0Zyb21QYWdlTWFwKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQog
ewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5maW5kKHBhZ2VJ
RCk7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRl
eCA4OTk3NmM2MWY4My4uYjdhZjA3NTk3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTY2LDEzICs2NiwxMyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVt
ZVRhc2smKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtVGFza0NvbXBsZXRlZChXZWJV
UkxTY2hlbWVUYXNrJikgPSAwOwogCi0gICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpOworICAgIHZvaWQgcmVtb3ZlVGFza0Zyb21Q
YWdlTWFwKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSUQpOwogICAgIFdl
YlByb2Nlc3NQcm94eSogcHJvY2Vzc0ZvclRhc2tJZGVudGlmaWVyKHVpbnQ2NF90KSBjb25zdDsK
IAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZjxXZWJVUkxTY2hlbWVUYXNrPj4gbV90YXNrczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBIYXNo
U2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CisgICAgSGFzaE1hcDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgSGFzaFNldDx1aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVu
dGlmaWVyOwogICAgIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jTG9hZENv
bXBsZXRpb25IYW5kbGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZVRhc2suY3BwCmluZGV4IDE5YTZiYjg0YzNjLi45YjdhZDVlMjMxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgYXV0
byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlc3BvbnMKICAgICAgICAgbV9zeW5jUmVzcG9uc2UgPSByZXNwb25zZTsK
IAogICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKG1fdXJsU2NoZW1l
SGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlLCByZXF1ZXN0KSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1l
VGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIo
KSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVxdWVzdCkpOwogCiAgICAgcmV0dXJuIEV4Y2Vw
dGlvblR5cGU6Ok5vbmU7CiB9CkBAIC05Myw3ICs5Myw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFz
azo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAt
PiBFCiAgICAgaWYgKGlzU3luYygpKQogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNl
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNr
RGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lk
ZW50aWZpZXIsIHJlc3BvbnNlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZShtX3VybFNjaGVtZUhh
bmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSkpOwogICAgIHJldHVy
biBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCkBAIC0xMTgsNyArMTE4LDcgQEAgYXV0byBXZWJV
UkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikg
LT4gRXhjZXB0aW9uVHkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAg
fQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNr
RGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRp
ZmllciwgeyBidWZmZXIgfSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXIt
PmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSk7CiAgICAgcmV0dXJuIEV4
Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBhdXRvIFdlYlVSTFNj
aGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNl
cHRpb25UeXBlCiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRl
KG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1l
VGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50
aWZpZXIsIGVycm9yKSk7CiAgICAgbV91cmxTY2hlbWVIYW5kbGVyLT50YXNrQ29tcGxldGVkKCp0
aGlzKTsKIAogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwpAQCAtMTY5LDQgKzE2OSwx
NCBAQCB2b2lkIFdlYlVSTFNjaGVtZVRhc2s6OnN0b3AoKQogICAgICAgICBtX3N5bmNDb21wbGV0
aW9uSGFuZGxlcih7IH0sIGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwg
eyB9KTsKIH0KIAorSVBDOjpDb25uZWN0aW9uKiBXZWJVUkxTY2hlbWVUYXNrOjptZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlv
bigpOworfQorCit1aW50NjRfdCBXZWJVUkxTY2hlbWVUYXNrOjptZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggYjg3MjA3M2JkMjcuLjdmMTRiOTg2MDQzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC01MSwxMyArNTIsMTMg
QEAgY2xhc3MgV2ViUGFnZVByb3h5OwogCiB1c2luZyBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVy
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpPjsKIAotY2xhc3MgV2ViVVJMU2NoZW1lVGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVS
TFNjaGVtZVRhc2s+LCBwdWJsaWMgSW5zdGFuY2VDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+IHsK
K2NsYXNzIFdlYlVSTFNjaGVtZVRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVU
YXNrPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJbnN0YW5jZUNvdW50ZWQ8
V2ViVVJMU2NoZW1lVGFzaz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlVSTFNjaGVt
ZVRhc2spOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFzaz4gY3JlYXRl
KFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCB1
aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRD
b21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQogICAgIFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQogCiAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4g
bV9yZXF1ZXN0OyB9CkBAIC04MCw2ICs4MSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2Vi
UHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgCisgICAgLy8gSVBDOjpN
ZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuICEhbV9z
eW5jQ29tcGxldGlvbkhhbmRsZXI7IH0KIApAQCAtODcsNyArOTIsNyBAQCBwcml2YXRlOgogICAg
IFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJv
Y2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Ci0gICAgdWludDY0X3QgbV9wYWdlSWRl
bnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOwog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgYm9vbCBtX3N0b3Bw
ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNwb25zZVNlbnQgeyBmYWxzZSB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAppbmRleCAwYmY1MTEyYTllNC4uMGE4YjBjMTEyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CkBAIC0xNTc2LDcgKzE1NzYsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBh
Z2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUsIENvbXBsZQogICAgICAgICBw
cm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxl
bWV0cnlXYXNDYXB0dXJlZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJh
Y2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAot
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRf
dCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5z
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxsU3Rv
cmFnZUFjY2Vzc0VudHJpZXMoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwog
ICAgIGlmICghd2ViUGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDY0MmUzMzA5ZDA3Li44MjJjM2Zj
NzYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2lu
SGFzaC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTEzNSw3ICsxMzYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXModWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYgZG9tYWlucyk+JiYpOworICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJiBkb21haW5zKT4mJik7CiAgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24o
Y29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBp
c1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKGNvbnN0IFVSTCYg
aG9zdFJlZGlyZWN0ZWRGcm9tLCBjb25zdCBVUkwmIGhvc3RSZWRpcmVjdGVkVG8sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDc2MGExZDAw
OWRlLi4wMTc5OTVhNTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMTY0LDcgKzE2NCw3IEBA
IHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2Nv
bnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpEaWRTYXZl
KFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVj
dG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pKTsKICAgICB9OwogCiAg
ICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFJlbW90
ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZFVSTCwgY29uc3QgUwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAogICAgIFdlYlBhZ2VQcm94
eSogaW5zcGVjdG9yUGFnZSA9IHdlYlZpZXcoKS0+X3BhZ2UuZ2V0KCk7Ci0gICAgaW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpEaWRB
cHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBpbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CisgICAgaW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9y
VUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSkpOwogfQogCiB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJl
Y3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IGY3MGYxYTRh
YzRkLi5jNTczODZlMzQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KQEAg
LTEyMiw3ICsxMjIsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6
OmRpZFVwZGF0ZUdlb21ldHJ5KCkKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQ
cm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUNoYW5nZUlE
KQogewogICAgIFNlY29uZHMgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgPSBTZWNvbmRzOjpm
cm9tTWlsbGlzZWNvbmRzKDI1MCk7Ci0gICAgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRl
QWN0aXZpdHlTdGF0ZT4obV93ZWJQYWdlUHJveHkucGFnZUlEKCksIGFjdGl2aXR5U3RhdGVVcGRh
dGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNz
YWdlQXJyaXZlcyk7CisgICAgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3Bh
dGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlT
dGF0ZT4obV93ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSwgYWN0aXZpdHlTdGF0ZVVw
ZGF0ZVRpbWVvdXQsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01l
c3NhZ2VBcnJpdmVzKTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5Ojp3aWxsU2VuZFVwZGF0ZUdlb21ldHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDUwMjQxZDhi
ZjYyLi5mNTNmYjIxZTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQo
TlNFdmVudCAqZXZlbnQsIEZsb2EKIAogICAgICAgICAvLyBGSVhNRTogV2UgZHJvcCB0aGUgZmly
c3QgZnJhbWUgb2YgdGhlIGdlc3R1cmUgb24gdGhlIGZsb29yLCBiZWNhdXNlIHdlIGRvbid0IGhh
dmUgdGhlIHZpc2libGUgY29udGVudCBib3VuZHMgeWV0LgogICAgICAgICBtX21hZ25pZmljYXRp
b24gPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCksIG1fd2ViUGFnZVBy
b3h5LnBhZ2VJRCgpKTsKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUoKSk7CiAgICAgICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21hcnRN
YWduaWZpY2F0aW9uID0gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMTk2LDcgKzE5Niw3
IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25H
ZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQogICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9
IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwg
bV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0
TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSk7CiB9CiAKIHN0YXRpYyBmbG9hdCBtYXhpbXVt
UmVjdGFuZ2xlQ29tcG9uZW50RGVsdGEoRmxvYXRSZWN0IGEsIEZsb2F0UmVjdCBiKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0KaW5kZXggMjE1MTY2MmQzNDcuLjVhNjgzMDk2ZTgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCAtICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29n
bml6ZXJXaWxsQmVnaW5BbmltYXRpb246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlYwogICAg
IC8vIEZJWE1FOiBDb25uZWN0aW9uIGNhbiBiZSBudWxsIGlmIHRoZSBwcm9jZXNzIGlzIGNsb3Nl
ZDsgd2Ugc2hvdWxkIGNsZWFuIHVwIGJldHRlciBpbiB0aGF0IGNhc2UuCiAgICAgaWYgKF9zdGF0
ZSA9PSBXZWJLaXQ6OkltbWVkaWF0ZUFjdGlvblN0YXRlOjpQZW5kaW5nKSB7CiAgICAgICAgIGlm
IChhdXRvKiBjb25uZWN0aW9uID0gX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCkpIHsKLSAg
ICAgICAgICAgIGJvb2wgcmVjZWl2ZWRSZXBseSA9IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlh
dGVBY3Rpb25IaXRUZXN0PihfcGFnZS0+cGFnZUlEKCksIFNlY29uZHM6OmZyb21NaWxsaXNlY29u
ZHMoNTAwKSk7CisgICAgICAgICAgICBib29sIHJlY2VpdmVkUmVwbHkgPSBjb25uZWN0aW9uLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQ
ZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdD4oX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCks
IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoNTAwKSk7CiAgICAgICAgICAgICBpZiAoIXJlY2Vp
dmVkUmVwbHkpCiAgICAgICAgICAgICAgICAgX3N0YXRlID0gV2ViS2l0OjpJbW1lZGlhdGVBY3Rp
b25TdGF0ZTo6VGltZWRPdXQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCAwMDdkODdkZmNkOC4uZjRh
YjkxZTg5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNw
ZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5z
cGVjdG9yUHJveHlNYWMubW0KQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmlu
ZyYgYwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJM
OmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBl
cnJvcjpOVUxMXTsKIAotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5n
XSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1
dGVTdHJpbmddKSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC01
MjIsNyArNTIyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICBbaGFuZGxlIHdyaXRl
RGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwog
ICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNv
bHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3Rv
clBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVS
TCBhYnNvbHV0ZVN0cmluZ10pKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93
RnJhbWVEaWRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KaW5kZXggODdjNjhiMzM0ODUuLjQ1NWQyZDVkNDAyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE3MSw3ICsxNzEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3Qg
RmxvYXRSZWN0JiB2aWV3RnJhbWVJbldpbmRvdwogICAgIC8vIEluIGNhc2UgdGhlIFVJIGNsaWVu
dCBvdmVycmlkZXMgZ2V0V2luZG93RnJhbWUoKSwgd2UgY2FsbCBpdCBoZXJlIHRvIG1ha2Ugc3Vy
ZSB3ZSBzZW5kIHRoZSBhcHByb3ByaWF0ZSB3aW5kb3cgZnJhbWUuCiAgICAgbV91aUNsaWVudC0+
d2luZG93RnJhbWUoKnRoaXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0
ZXNdIChGbG9hdFJlY3Qgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKSB7CiAgICAgICAg
IEZsb2F0UmVjdCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMgPSBwYWdl
Q2xpZW50KCkuY29udmVydFRvVXNlclNwYWNlKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRl
cyk7Ci0gICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dBbmRW
aWV3RnJhbWVzQ2hhbmdlZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIHdpbmRvd0Zy
YW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGlu
YXRlcywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcyksIG1fcGFnZUlEKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQod2luZG93
RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzLCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29v
cmRpbmF0ZXMsIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3
Q29vcmRpbmF0ZXMpKTsKICAgICB9KTsKIH0KIApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlz
U2Nyb2xsYWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRN
YWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVk
aXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2
ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSwgYm9vbCByZWdpc3Rl
clVuZG9Hcm91cCkKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRp
Y3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXApLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmModGV4dCwgcmVw
bGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCkp
OwogI2Vsc2UKICAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMucmVn
aXN0ZXJVbmRvR3JvdXAgPSByZWdpc3RlclVuZG9Hcm91cDsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5
bmMoY29uc3QgRWRpdGluZ1JhbmdlJgogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFu
Z2UsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNr
SUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0
ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRp
dGluZ1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMjQ5LDcg
KzI0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb24oV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvCiAgICAgCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgCi0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNlbGVjdGlvbihjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNlbGVjdGlv
bihjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb25D
YWxsYmFjayhjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2Vs
ZWN0aW9uSGFzTXVsdGlwbGVGb250cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMjcxLDcg
KzI3MSw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmQoKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgCiAgICAgY29uc3QgU2Vjb25kcyBtZXNz
YWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIG1fcGFnZUlELCBt
ZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmlu
Z1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgbWVzc2FnZVRpbWVvdXQpOwogICAg
IHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjgyLDggKzI4Miw4IEBAIFJlZlB0cjxXZWJDb3JlOjpT
aGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29u
c3QgU3RyCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHVpbnQ2NF90IHNp
emUgPSAwOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nl
c3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQocGFzdGVib2FyZFR5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0
ZWJvYXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOwor
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChwYXN0ZWJvYXJkVHlwZSksCisgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRh
U2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgbWVzc2FnZVRpbWVv
dXQpOwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9y
eTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CkBAIC0y
OTcsMTQgKzI5NywxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0
ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKICAgICBib29sIHJlc3VsdCA9
IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nl
c3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJv
YXJkKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9t
UGFzdGVib2FyZDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFz
dGVib2FyZDo6UmVwbHkocmVzdWx0KSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiB0eXBlcywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmRE
YXRhKHR5cGVzLCBkYXRhKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEpKTsKIH0KICNl
bmRpZgogCkBAIC0zMzQsMjIgKzMzNCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZENvbXBs
ZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SQogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1
Z2luKHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB0ZXh0SW5wdXQpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZENvbXBsZXhUZXh0SW5wdXRUb1Bs
dWdpbihwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgdGV4dElucHV0KSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojp1cHBlcmNhc2VXb3JkKCkKIHsKLSAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VXBwZXJjYXNlV29yZCgpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VXBwZXJjYXNlV29yZCgpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6Omxvd2VyY2FzZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb3dlcmNhc2VXb3JkKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb3dlcmNhc2VXb3JkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FwaXRh
bGl6ZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBp
dGFsaXplV29yZCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2Fw
aXRhbGl6ZVdvcmQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoYm9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkKQEAgLTM1OSw3ICsz
NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJv
b2wgaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpCiAKICAgICBUZXh0Q2hlY2tlcjo6c2V0U21h
cnRJbnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKTsKICAgICBt
X2lzU21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZChpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZv
cm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQ
b3B1cEluZm8pCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVy
VUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxp
dHlUb2tlbnMoZWxlbWVudFRva2VuLCB3aW5kb3dUb2tlbiksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMo
ZWxlbWVudFRva2VuLCB3aW5kb3dUb2tlbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGx1
Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElu
cHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hhc0ZvY3VzKQpAQCAt
NDI0LDcgKzQyNCw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGREZWxheVdpbmRvd09yZGVy
aW5nRm9yRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50CiAKICAgICBib29sIHJlc3Vs
dCA9IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7Ci0gICAgcHJv
Y2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVy
aW5nRXZlbnQoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRl
cmluZ0V2ZW50OjpSZXBseShyZXN1bHQpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZl
bnQoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2
ZW50OjpSZXBseShyZXN1bHQpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIApAQCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphY2NlcHRzRmlyc3RN
b3VzZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVuCiAKICAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7
Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RN
b3VzZShldmVudE51bWJlciwgZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0
TW91c2U6OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVyLCBl
dmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZTo6UmVwbHkocmVzdWx0
KSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3Iu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvci5jcHAKaW5kZXggZmY0NDkzNDFkOWUuLjZhYWMzYTdjMGE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYlBheW1lbnRD
b29yZGluYXRvcjo6V2ViUGF5bWVudENvb3JkaW5hdG9yKFdlYlBhZ2UmIHdlYlBhZ2UpCiAgICAg
OiBtX3dlYlBhZ2Uod2ViUGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBheW1lbnRDb29y
ZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCkudG9VSW50
NjQoKSwgKnRoaXMpOwogfQogCiBXZWJQYXltZW50Q29vcmRpbmF0b3I6On5XZWJQYXltZW50Q29v
cmRpbmF0b3IoKQpAQCAtMTY4LDcgKzE2OCw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVu
dENvb3JkaW5hdG9yOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90
IFdlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dAogewotICAgIHJldHVybiBtX3dlYlBhZ2UucGFnZUlEKCk7CisgICAgcmV0dXJuIG1fd2ViUGFn
ZS5wYWdlSUQoKS50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6
dmFsaWRhdGVNZXJjaGFudChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGIxY2JjOTYzYjBlLi40NTRjYTZiYzg0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9y
RnJhbWUoV2ViRnJhbWUmIGZyYW1lKQogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgZXJyb3JNZXNz
YWdlLCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywg
Ym9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0
LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpl
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50
cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1l
b3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0z
MTIsNyArMzEyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRFdmFsdWF0
ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBmcmFtZUlELAogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxsYmFja0lE
LCByZXN1bHQsIGVycm9yVHlwZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zNTAsNyArMzUwLDcg
QEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhP
cmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51
bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1l
V2l0aE5vZGVIYW5kbGUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2Uq
IHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYg
KCFwYWdlKSB7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZyYW1lRnJvbUVsZW1lbnQtPmZyYW1l
SUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxk
RnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50
NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7
CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZy
YW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBh
cmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBh
Z2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHBhcmVudEZy
YW1lLT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZv
Y3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5Ojpmb2N1c0ZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTUyNyw3ICs1MjcsNyBA
QCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjb252ZXJ0UG9pbnRGcm9tRnJhbWVDbGllbnRU
b1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1lVgogICAgIHJldHVybiBjbGllbnRQb2ludDsKIH0KIAot
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0
LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dChQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0
ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3Jl
OjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC02MzUsNyArNjM1LDcgQEAg
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxv
cHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBpc09ic2N1
cmVkKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25F
bGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVs
ZW1lbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9k
ZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzAzLDcgKzcwMyw3
IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoV2Vi
UGFnZSYgcGFnZSwgV2ViQ29yZTo6RWxlbWVuCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3
SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAKQEAgLTc1MSw3ICs3
NTEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIHsgfSksIDAp
OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFt
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9y
RnJhbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzc2LDcg
Kzc3Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2llc0ZvckZy
YW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGOjpudWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmlu
Zz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpkZWxldGVDb29raWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5oCmluZGV4IDYyOTU0MWQyMGJhLi4xMTY3NjQ1Mjc3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJDb29yZGluYXRlU3lzdGVtLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC02MCwxNyArNjEsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8g
Q2FsbGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgbWVzc2FnZXMKLSAgICB2b2lkIGV2
YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29s
IGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5h
bCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAg
ICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHJlc29s
dmVDaGlsZEZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
PiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIGZvY3VzRnJhbWUodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJD
b3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmKTsKLSAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7Ci0gICAgdm9pZCB0YWtl
U2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYpOwotICAgIHZvaWQgZGVs
ZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tp
ZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOworICAg
IHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+
IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2Fs
bGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlc29sdmVDaGls
ZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVI
YW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0
cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7
CisgICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVp
bnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
dWludDY0X3QpPiYmKTsKKyAgICB2b2lkIGZvY3VzRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGZyYW1lSUQpOworICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9u
YWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJik7CisgICAgdm9pZCBzZWxlY3RPcHRpb25F
bGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
bm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7
CisgICAgdm9pZCB0YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRl
ZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBn
ZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1l
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4pPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOwogCiAgICAgU3RyaW5nIG1fc2Vzc2lv
bklkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IGFhMTIxOWUyZWYxLi5kNzJmODlkMjYzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSwyMSArMjEsMjEgQEAKICMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSB7Ci0g
ICAgRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBl
eHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50
NjRfdCBjYWxsYmFja0lEKQorICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGZ1bmN0aW9u
LCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tB
cmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAg
IFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCB1aW50MzJfdCBvcmRpbmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUs
IHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhh
bmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
KSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5j
Ci0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVp
bnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1
aW50NjRfdCBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJf
dCBvcmRpbmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1l
SUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
KSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5j
CisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5n
PiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZVBhcmVudEZy
YW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4g
KE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYwogCi0g
ICAgRm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCisgICAgRm9j
dXNGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQp
CiAKLSAgICBDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGVu
dW06dWludDhfdCBXZWJLaXQ6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgLT4g
KE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIE9wdGlv
bmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCBpc09ic2N1cmVk
KSBBc3luYworICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0ZVN5c3RlbSBj
b29yZGluYXRlU3lzdGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6
OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBv
aW50LCBib29sIGlzT2JzY3VyZWQpIEFzeW5jCiAKLSAgICBTZWxlY3RPcHRpb25FbGVtZW50KHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChP
cHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBTZWxlY3RPcHRpb25FbGVtZW50
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKIAotICAg
IFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3
cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBUYWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCiAKLSAgICBHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIEFzeW5jCi0gICAgRGVsZXRlQ29va2llKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChPcHRp
b25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBHZXRDb29raWVzRm9yRnJhbWUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9u
YWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIEFz
eW5jCisgICAgRGVsZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVy
cm9yVHlwZSkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGFlMzg4M2Q4
NmI2Li5hZjg5ZDc4ODE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC04OSw3ICs4
OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdl
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkK
KyAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQ
YWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0
aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAgIHdlYlBhZ2UtPmRpZFJlY2VpdmVXZWJQYWdlTWVz
c2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcAppbmRleCAwNGFlMGU0NWQ1ZS4uMjc4YjYwMTg0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTE1
Nyw3ICsxNTcsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3Vy
Y2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIGF1dG8mIGZyYW1lTG9h
ZGVyQ2xpZW50ID0gcmVzb3VyY2VMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCk7CiAKICAg
ICBXZWJSZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzIHRyYWNraW5nUGFyYW1ldGVy
czsKLSAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFn
ZUlEKCkudmFsdWVPcigwKTsKKyAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVM
b2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pOwogICAgIHRy
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlEID0gZnJhbWVMb2FkZXJDbGllbnQuZnJhbWVJRCgpLnZh
bHVlT3IoMCk7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQgPSBpZGVudGlmaWVy
OwogICAgIGF1dG8gc2Vzc2lvbklEID0gZnJhbWVMb2FkZXJDbGllbnQuc2Vzc2lvbklEKCk7CkBA
IC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJl
c291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAvLyB0aGVuIHdl
IHNob3VsZCByZW1lbWJlciB0aGUgUmVzb3VyY2VMb2FkZXIgaW4gb3VyIHJlY29yZHMgYnV0IG5v
dCBzY2hlZHVsZSBpdCBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgaWYgKHJlc291cmNlTG9h
ZGVyLmRvY3VtZW50TG9hZGVyKCktPnNjaGVkdWxlQXJjaGl2ZUxvYWQocmVzb3VyY2VMb2FkZXIs
IHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVs
aW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAn
JXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlLiIsIHJlc291cmNlTG9h
ZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5k
bGVkIGFzIGFuIGFyY2hpdmUgcmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBy
ZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRs
ZWQgYXMgYW4gYXJjaGl2ZSByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJl
c291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICBtX3dl
YlJlc291cmNlTG9hZGVycy5zZXQoaWRlbnRpZmllciwgV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZShyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0ZXJzKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xNzUsMTQgKzE3NSwxNCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hl
ZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogCiAg
ICAgaWYgKHJlc291cmNlTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVI
b3N0KCkubWF5YmVMb2FkUmVzb3VyY2UocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJl
cXVlc3QoKSwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICBMT0co
TmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZS4i
LCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJM
IHdpbGwgYmUgbG9hZGVkIGZyb20gYXBwbGljYXRpb24gY2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3
aWxsIGJlIGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlIChmcmFtZSA9ICVwLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAg
ICAgICAgIG1fd2ViUmVzb3VyY2VMb2FkZXJzLnNldChpZGVudGlmaWVyLCBXZWJSZXNvdXJjZUxv
YWRlcjo6Y3JlYXRlKHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJs
KCkucHJvdG9jb2xJc0RhdGEoKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIo
V2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2ls
bCBiZSBsb2FkZWQgYXMgZGF0YS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6
IFVSTCB3aWxsIGJlIGxvYWRlZCBhcyBkYXRhIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
cmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2
NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIHN0
YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE5MCw3ICsxOTAsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2lmIFVTRShRVUlDS19M
T09LKQogICAgIGlmIChpc1F1aWNrTG9va1ByZXZpZXdVUkwocmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLnVybCgpKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2Vz
cykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5k
bGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291
cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tM
b29rIHJlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZy
YW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291
cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tM
b29rIHJlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJl
c291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBA
QCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJl
c291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIC8vIGh0dHBzOi8vYmxvZ3MuZ25vbWUub3Jn
L2FsZXhsLzIwMTIvMDEvMjYvcmVzb3VyY2VzLWluLWdsaWIvCiAgICAgaWYgKHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzKCJyZXNvdXJjZSIpKSB7CiAgICAgICAgIExP
RyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2No
ZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UuIiwgcmVz
b3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxs
IGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBy
ZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRs
ZWQgYXMgYSBHUmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxv
YWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExv
YWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjExLDExICsy
MTEsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9h
ZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICBXZWJTZXJ2aWNlV29ya2VyUHJv
dmlkZXI6OnNpbmdsZXRvbigpLmhhbmRsZUZldGNoKHJlc291cmNlTG9hZGVyLCBzZXNzaW9uSUQs
IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2lu
Z1BhcmFtZXRlcnMsIGlkZW50aWZpZXIsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVy
aW5nVGltZShyZXNvdXJjZSksIHJlc291cmNlTG9hZGVyID0gbWFrZVJlZihyZXNvdXJjZUxvYWRl
cildIChTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdCByZXN1bHQpIG11dGFibGUgewog
ICAgICAgICBpZiAocmVzdWx0ICE9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpV
bmhhbmRsZWQpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9j
ZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNj
aGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSIsIHJl
c291cmNlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxl
TG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUg
ZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2Fk
ZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVk
dWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUg
PSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBp
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAo
cmVzb3VyY2VMb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdv
cmtlcnNNb2RlOjpPbmx5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2NoZWR1
bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFt
ZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVy
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBT
ZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAg
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVz
b3VyY2VMb2FkZXIpXSB7CiAgICAgICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJy
b3IocmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgZXJy
b3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwpAQCAtMjI3LDEz
ICsyMjcsMTMgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNl
TG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNj
aGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKQogICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nl
c3MocmVzb3VyY2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNr
aW5nUGFyYW1ldGVycywgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVs
ZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxl
TG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsK
ICAgICB9KTsKICNlbHNlCiAgICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVy
KHJlc291cmNlTG9hZGVyKSkKICAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNz
KHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1l
dGVycywgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOwogICAgIGVsc2UKLSAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIG5v
dCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJl
c291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5
IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogI2VuZGlmCiB9CiAKQEAgLTMyNSw3ICsz
MjUsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1By
b2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGlmIChsb2FkUGFyYW1ldGVycy5v
cHRpb25zLm1vZGUgIT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkgewogICAgICAgICBB
U1NFUlQobG9hZFBhcmFtZXRlcnMuc291cmNlT3JpZ2luKTsKICAgICAgICAgaWYgKCFsb2FkUGFy
YW1ldGVycy5zb3VyY2VPcmlnaW4pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAo
ZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9y
aXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogbm8gc291cmNl
T3JpZ2luIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3Vy
Y2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0
KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2Fk
UGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICAg
ICAgICAgIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNDYsOSArMzQ2LDkgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9h
ZGVyJiByZXNvdXJjZUwKIAogICAgIEFTU0VSVCgobG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYm
IGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRl
bnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9y
Q3JlZGVudGlhbHMpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ciwgInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5l
dHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
cmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFt
ZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogUmVzb3VyY2Ug
aXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBw
cmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3Rh
dGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQ
YXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJj
ZUxvYWQobG9hZFBhcmFtZXRlcnMpLCAwKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1
bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5
ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRl
cnMud2ViUGFnZUlELCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5p
ZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJj
ZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGgg
dGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxv
YWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJ
bnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlm
aWVyKTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9h
ZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgogICAgICAg
ICAvLyBUaGlzIGxvYWQgd2lsbCBuZXZlciBzdWNjZWVkIHNvIHdlIHdpbGwgc2NoZWR1bGUgaXQg
dG8gZmFpbCBhc3luY2hyb25vdXNseS4KICAgICAgICAgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVk
TG9hZChyZXNvdXJjZUxvYWRlcik7CkBAIC01MDcsMTkgKzUwNywxOSBAQCB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxv
YWRlciwgdW5zaQogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwogICAgIFdlYlBh
Z2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogCi0g
ICAgYXV0byBwYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+cGFnZUlEKCkgOiAwOworICAgIGF1
dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogUGFnZUlkZW50aWZpZXIg
eyB9OwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6
IDA7CiAgICAgYXV0byBzZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkg
OiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogCiAgICAgYXV0byogZG9jdW1l
bnQgPSBmcmFtZUxvYWRlci5mcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHk6IG5vIGRvY3VtZW50IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJ
RCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogbm8gZG9jdW1l
bnQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlbHUpIiwgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50
aWZpZXIpOwogICAgICAgICBlcnJvciA9IGludGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYXV0byBzeW5jTG9hZFJlc3VsdCA9IHRy
eUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyKGZyYW1lTG9hZGVyLCBy
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0KSkgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZh
aWxlZCBjYWxsaW5nIHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVy
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJWx1LCBlcnJvciA9ICVkKSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRp
Zmllciwgc3luY0xvYWRSZXN1bHQtPmVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5OiBmYWlsZWQgY2FsbGluZyB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1l
SGFuZGxlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICVsdSwgZXJyb3IgPSAlZCkiLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwg
cmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3luY0xvYWRSZXN1bHQtPmVycm9yLmVycm9yQ29kZSgp
KTsKICAgICAgICAgZXJyb3IgPSBXVEZNb3ZlKHN5bmNMb2FkUmVzdWx0LT5lcnJvcik7CiAgICAg
ICAgIHJlc3BvbnNlID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+cmVzcG9uc2UpOwogICAgICAg
ICBkYXRhID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+ZGF0YSk7CkBAIC01NTMsNyArNTUzLDcg
QEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFt
ZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFu
Z0RldGVjdGlvbkRpc2FibGVyOwogCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5l
bnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNM
b2FkKGxvYWRQYXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwgcmVzcG9uc2UsIGRhdGEp
LCAwKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwg
ImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5l
dHdvcmsgcHJvY2VzcyBtZXNzYWdlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VM
b2FkSWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vz
c2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIHNlbmRpbmcgc3luY2hy
b25vdXMgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELnRvVUludDY0KCks
IGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXV0byogcGFn
ZSA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5jb3JlUGFnZSgpIDogbnVsbHB0cikKICAgICAgICAgICAg
IHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2Vi
Q29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6
OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6c3luY2hyb25vdXNNZXNzYWdlRmFpbGVkS2V5KCksIFdl
YkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVz
cG9uc2UoKTsKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAg
IH0KIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0
X3Qgd2ViUGFnZUlEKQordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cGFnZUxvYWRDb21wbGV0ZWQo
UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGFnZUxvYWRDb21wbGV0ZWQod2Vi
UGFnZUlEKSwgMCk7CiB9CkBAIC02NDgsMTAgKzY0OCwxMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCBjb25zdCBVUkwmIHVy
bCwgUwogCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAg
ICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKLSAgICBwYXJh
bWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7Ci0gICAg
cGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDog
MDsKKyAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOworICAgIHBh
cmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgcGFyYW1ldGVy
cy5wYXJlbnRQSUQgPSBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKLSAgICBwYXJhbWV0ZXJz
LnNlc3Npb25JRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lv
bklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQ
YWdlLT5zZXNzaW9uSUQoKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5
ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25u
ZWN0T25seSA9IFByZWNvbm5lY3RPbmx5OjpZZXM7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZXN0
cmljdEhUVFBSZXNwb25zZUFjY2VzcyA9IHNob3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmgKaW5kZXggNGFmNTk5NDFlMzQuLmFjNTI0OTY2YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgbG9hZFJlc291cmNlKFdlYkNvcmU6OkZy
YW1lJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmKSBmaW5hbDsK
ICAgICB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6RnJhbWVMb2FkZXIm
LCB1bnNpZ25lZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdl
YkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3Rvcjxj
aGFyPiYgZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3
ZWJQYWdlSUQpIGZpbmFsOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXImLCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjg4ZmRhMzAwNy4uODhi
ZDUzYmYxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg4LDE2ICs4OCwxNiBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1
ZXN0LCBSZXNvdQogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJl
cXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlE
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwog
CiAgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNo
ZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KG1fY29yZUxvYWRlci5nZXQoKSwg
cHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBtYXli
ZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVM
b2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIG1fY29yZUxvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUo
cHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7CiAg
ICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkg
ewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBl
eGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBvciBpZGVudGlmaWVyIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBi
ZWNhdXNlIG5vIGNvcmVsb2FkZXIgb3IgaWRlbnRpZmllciAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0xMTMsMTIgKzExMywxMiBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0
ZXNUb0JlUwogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZl
UmVzcG9uc2VNZXNzYWdlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9yICclcycuIFN0YXR1cyAlZC4iLCBt
X2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc3RhdHVz
ID0gJWQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIHJl
c3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogCiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25z
ZShtX2NvcmVMb2FkZXIuZ2V0KCksIHJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVz
ZSB0aGUgY29udGVudCBpcyBhbHJlYWR5IGNhY2hlZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBj
b250ZW50IGlzIGFscmVhZHkgY2FjaGVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICAgICAgICAg
IGlmIChtX2NvcmVMb2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpCiAgICAgICAg
ICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5n
IGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQg
YmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICB9OwogICAgIH0K
IApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHBy
b2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNw
b25zZSIpOwogCiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNl
aXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1l
dGVycy5yZXNvdXJjZUlEKTsKICAgICB9CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGRhdGEu
c2l6ZSgpOwogCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBMT0coTmV0d29yaywgIihX
ZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAn
JXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwg
bV9udW1CeXRlc1JlY2VpdmVkKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5p
c2hSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3RyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRlc1JlY2VpdmVkKTsK
IAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNl
LCAiTG9hZCBzaG91bGQgbm90IGJlIGFibGUgdG8gZmluaXNoIGJlZm9yZSB3ZSd2ZSB2YWxpZGF0
ZWQgdGhlIHJlc3BvbnNlIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKG5l
dHdvcmtMb2FkTWV0cmljcyk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0wKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vzcykg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVM
b2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZEZhaWxSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
bV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3VsZCBub3QgYmUgYWJsZSB0
byBmaW5pc2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIApAQCAtMTc5
LDcgKzE3OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQ
cm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
KTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9V
SW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXItPmRpZEJsb2NrQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoKTsKIH0KQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xp
Y3lEZW5pZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgTE9HKE5l
dHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJY
RnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQgZm9yICclcyciLCBtX2Nv
cmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1
cml0eVBvbGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0b3BMb2FkaW5nQWZ0
ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQ6IChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAg
ICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zdG9wTG9hZGluZ0FmdGVyWEZyYW1l
T3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKG1fY29yZUxvYWRlci0+aWRlbnRp
ZmllcigpLCByZXNwb25zZSk7CiB9CkBAIC0xOTYsMTMgKzE5NiwxMyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5
UG9saWN5RGVuaQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNv
bnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBMT0coTmV0d29y
aywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZv
ciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBSZWZQdHI8
U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAK
ICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUg
YnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nl
c3MuIik7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJj
ZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOwogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsK
ICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAg
ICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdl
KFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJD
b3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgp
LCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDdmZDc4MzIyMzNhLi41
ODY1NDM3MThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVj
dGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVS
ZXNvdXJjZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTAsNyAr
NTEsNyBAQCB0eXBlZGVmIHVpbnQ2NF90IFJlc291cmNlTG9hZElkZW50aWZpZXI7CiBjbGFzcyBX
ZWJSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZGVyPiwg
cHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFRyYWNraW5n
UGFyYW1ldGVycyB7Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRCB7IDAgfTsKKyAgICAgICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAgICAgICB1aW50NjRfdCBmcmFtZUlEIHsg
MCB9OwogICAgICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQgeyAwIH07CiAg
ICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05v
dGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMjBlNGQ1YzVhZGIu
LmZhMDc4MjNmZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTUw
LDcgKzE1MCw3IEBAIGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRp
b24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKICAgICBhdXRvIGl0ID0gbV9ub3RpZmlj
YXRpb25Db250ZXh0TWFwLmFkZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSwgVmVjdG9yPHVpbnQ2NF90PigpKS5pdGVyYXRvcjsKICAgICBpdC0+dmFsdWUuYXBwZW5kKG5v
dGlmaWNhdGlvbklEKTsKIAotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0
aW9uLT50aXRsZSgpLCBub3RpZmljYXRpb24tPmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uKCku
c3RyaW5nKCksIG5vdGlmaWNhdGlvbi0+dGFnKCksIG5vdGlmaWNhdGlvbi0+bGFuZygpLCBub3Rp
ZmljYXRpb24tPmRpcigpLCBub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdl
SUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Tm90aWZp
Y2F0aW9uKG5vdGlmaWNhdGlvbi0+dGl0bGUoKSwgbm90aWZpY2F0aW9uLT5ib2R5KCksIG5vdGlm
aWNhdGlvbi0+aWNvbigpLnN0cmluZygpLCBub3RpZmljYXRpb24tPnRhZygpLCBub3RpZmljYXRp
b24tPmxhbmcoKSwgbm90aWZpY2F0aW9uLT5kaXIoKSwgbm90aWZpY2F0aW9uLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5vdGlmaWNhdGlv
bklEKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmlj
YXRpb24pOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6
Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogICAgIGlm
ICghbm90aWZpY2F0aW9uSUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3Mu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpD
YW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAg
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDYW5jZWxOb3RpZmljYXRpb24obm90
aWZpY2F0aW9uSUQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAg
ICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlm
aWNhdGlvbklEcyA9IGl0LT52YWx1ZTsKLSAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVhck5vdGlmaWNhdGlvbnMo
bm90aWZpY2F0aW9uSURzKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Q2xlYXJOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbklEcykpOwog
ICAgIHNpemVfdCBjb3VudCA9IG5vdGlmaWNhdGlvbklEcy5zaXplKCk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb24+
IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25JRHNb
aV0pOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlk
RGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwKIAogICAgIG1f
bm90aWZpY2F0aW9uSURNYXAucmVtb3ZlKG5vdGlmaWNhdGlvbklEKTsKICAgICByZW1vdmVOb3Rp
ZmljYXRpb25Gcm9tQ29udGV4dE1hcChub3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uKTsKLSAg
ICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+
cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRGVz
dHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggMzRiNWE2NDNmMDMuLjhjZGRiNTMwZDdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRp
YyBjb25zdCBTZWNvbmRzIHN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQgeyAxMDBfbXMgfTsg
Ly8gT25seSB1c2VkIGJ5IGxhCiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVu
dCBmaW5hbCA6IHB1YmxpYyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBT
ZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKKyAgICBTZXJ2aWNl
V29ya2VyRnJhbWVMb2FkZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKICAg
ICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAgICAgLCBtX3Nlc3Npb25JRChz
ZXNzaW9uSUQpCiAgICAgICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtOTUsMTggKzk1LDE4IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9
Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
cGFnZUlEOyB9CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZyYW1lSUQ7IH0KICAgICBTdHJpbmcg
dXNlckFnZW50KGNvbnN0IFVSTCYpIGZpbmFsIHsgcmV0dXJuIG1fdXNlckFnZW50OyB9CiAKICAg
ICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwogICAgIFBBTDo6
U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9OworICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJ
RCB7IDAgfTsKICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CiB9OwogCi1XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29u
bmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIDogbV9jb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9wYWdl
R3JvdXBJRChwYWdlR3JvdXBJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDZjZTgzZDFkMDllLi5mYmI2MzBlNGUxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElE
LCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCB1aW50NjRf
dCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmKTsKICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKIAogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
ZmluYWw7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBDOjpDb25uZWN0
aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOwogICAgIHVpbnQ2NF90IG1fcGFnZUdy
b3VwSUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJ
RCB7IDAgfTsKIAogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQ
b2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
U3RvcmFnZUJsb2NraW5nUG9saWN5OjpBbGxvd0FsbFN0b3JhZ2UgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9XZWJBdXRoZW50aWNhdG9y
Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL1dlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvci5jcHAKaW5kZXggODU2NTkxNjZjYzIuLmQ0
YTg3YzZkMDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVu
dGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQXV0aGVudGljYXRpb24vV2ViQXV0aGVudGljYXRvckNvb3JkaW5h
dG9yLmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIFdlYkF1dGhlbnRp
Y2F0b3JDb29yZGluYXRvcjo6V2ViQXV0aGVudGljYXRvckNvb3JkaW5hdG9yKFdlYlBhZ2UmIHdl
YlBhZ2UpCiAgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkF1dGhlbnRpY2F0b3JDb29y
ZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlz
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYkF1dGhlbnRpY2F0b3JDb29yZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3dlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgKnRoaXMpOwogfQogCiBXZWJBdXRoZW50aWNh
dG9yQ29vcmRpbmF0b3I6On5XZWJBdXRoZW50aWNhdG9yQ29vcmRpbmF0b3IoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAppbmRleCA0OTYyOTZmNmQ4OC4uMzQzZTgzNWFkMDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgRmxvYXRSZWN0IFdlYkNocm9tZUNsaWVudDo6
d2luZG93UmVjdCgpCiAKICAgICBGbG9hdFJlY3QgbmV3V2luZG93RnJhbWU7CiAKLSAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lKCksIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpSZXBseShuZXdXaW5kb3dGcmFtZSksIG1fcGFn
ZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6R2V0V2luZG93RnJhbWUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93
RnJhbWU6OlJlcGx5KG5ld1dpbmRvd0ZyYW1lKSkpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3Qo
KTsKIAogICAgIHJldHVybiBuZXdXaW5kb3dGcmFtZTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSogZnJhbWUpCiB7CiAg
ICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gZnJhbWUgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgq
ZnJhbWUpIDogbnVsbHB0cjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9jdXNlZEZy
YW1lQ2hhbmdlZCh3ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGb2N1c2Vk
RnJhbWVDaGFuZ2VkKHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDApKTsKIH0KIAog
UGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVh
dHVyZXMsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCkBAIC0yODgs
MTkgKzI4OCwyMCBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSYg
ZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlcwogCiAgICAgV2ViRnJhbWUqIHdl
YkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogCi0gICAgdWludDY0X3Qg
bmV3UGFnZUlEID0gMDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlEOwog
ICAgIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7Ci0gICAg
aWYgKCF3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJhbWUtPmluZm8oKSwgd2ViRnJh
bWUtPnBhZ2UoKS0+cGFnZUlEKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHdpbmRvd0Zl
YXR1cmVzLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNy
ZWF0ZU5ld1BhZ2U6OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVycyksIG1fcGFnZS5wYWdlSUQo
KSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3Jl
YXRlTmV3UGFnZSh3ZWJGcmFtZS0+aW5mbygpLCB3ZWJGcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSwg
cmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgd2luZG93RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rp
b25EYXRhKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6UmVwbHkobmV3
UGFnZUlELCBwYXJhbWV0ZXJzKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYg
KCFuZXdQYWdlSUQpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNTRVJUKHBhcmFt
ZXRlcnMpOwogICAgIGlmIChwYXJhbWV0ZXJzLT5zZXNzaW9uSUQgPT0gbV9wYWdlLnNlc3Npb25J
RCgpKQogICAgICAgICBwYXJhbWV0ZXJzLT5vbGRQYWdlSUQgPSBtX3BhZ2UucGFnZUlEKCk7CiAK
LSAgICB3ZWJQcm9jZXNzLmNyZWF0ZVdlYlBhZ2UobmV3UGFnZUlELCBXVEZNb3ZlKCpwYXJhbWV0
ZXJzKSk7Ci0gICAgcmV0dXJuIHdlYlByb2Nlc3Mud2ViUGFnZShuZXdQYWdlSUQpLT5jb3JlUGFn
ZSgpOworICAgIHdlYlByb2Nlc3MuY3JlYXRlV2ViUGFnZSgqbmV3UGFnZUlELCBXVEZNb3ZlKCpw
YXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIHdlYlByb2Nlc3Mud2ViUGFnZSgqbmV3UGFnZUlEKS0+
Y29yZVBhZ2UoKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3coKQpAQCAtMzM1LDcg
KzMzNiw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUoKQogICAgICAg
ICByZXR1cm4gdG9vbGJhcnNWaXNpYmlsaXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VV
SUNsaWVudDo6VUlFbGVtZW50VmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICAKICAgICBib29sIHRv
b2xiYXJzQXJlVmlzaWJsZSA9IHRydWU7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0
VG9vbGJhcnNBcmVWaXNpYmxlOjpSZXBseSh0b29sYmFyc0FyZVZpc2libGUpLCBtX3BhZ2UucGFn
ZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkdldFRvb2xiYXJzQXJlVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29s
YmFyc0FyZVZpc2libGU6OlJlcGx5KHRvb2xiYXJzQXJlVmlzaWJsZSkpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIHJldHVybiB0b29sYmFyc0FyZVZpc2libGU7CkBAIC0zNTMsNyArMzU0
LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUoKQogICAgICAgICBy
ZXR1cm4gc3RhdHVzYmFyVmlzaWJpbGl0eSA9PSBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlD
bGllbnQ6OlVJRWxlbWVudFZpc2liaWxpdHk6OlZpc2libGU7CiAKICAgICBib29sIHN0YXR1c0Jh
cklzVmlzaWJsZSA9IHRydWU7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpH
ZXRTdGF0dXNCYXJJc1Zpc2libGUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVz
QmFySXNWaXNpYmxlOjpSZXBseShzdGF0dXNCYXJJc1Zpc2libGUpLCBtX3BhZ2UucGFnZUlEKCkp
KQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0
YXR1c0JhcklzVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJ
c1Zpc2libGU6OlJlcGx5KHN0YXR1c0JhcklzVmlzaWJsZSkpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiBzdGF0dXNCYXJJc1Zpc2libGU7CkBAIC0zODIsNyArMzgzLDcgQEAg
Ym9vbCBXZWJDaHJvbWVDbGllbnQ6Om1lbnViYXJWaXNpYmxlKCkKICAgICAgICAgcmV0dXJuIG1l
bnViYXJWaXNpYmlsaXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6VUlF
bGVtZW50VmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICAKICAgICBib29sIG1lbnVCYXJJc1Zpc2li
bGUgPSB0cnVlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJh
cklzVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxl
OjpSZXBseShtZW51QmFySXNWaXNpYmxlKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1f
cGFnZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxl
KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OlJlcGx5KG1l
bnVCYXJJc1Zpc2libGUpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbWVu
dUJhcklzVmlzaWJsZTsKQEAgLTExODYsNyArMTE4Nyw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
Ojpmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCBlbGVtZW50SUQp
CiBib29sIFdlYkNocm9tZUNsaWVudDo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhf
dD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KSBjb25zdAogewogICAgIGJvb2wg
c3VjY2VlZGVkOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V3JhcENyeXB0
b0tleShrZXkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXcmFwQ3J5cHRvS2V5OjpSZXBseShz
dWNjZWVkZWQsIHdyYXBwZWRLZXkpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdl
LnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldyYXBDcnlwdG9LZXkoa2V5KSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6V3JhcENyeXB0b0tleTo6UmVwbHkoc3VjY2VlZGVkLCB3cmFw
cGVkS2V5KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc3VjY2VlZGVkOwog
fQpAQCAtMTE5NCw3ICsxMTk1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OndyYXBDcnlwdG9L
ZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYKIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFw
cGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtleSkgY29uc3QKIHsKICAgICBib29sIHN1Y2NlZWRl
ZDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVud3JhcENyeXB0b0tleSh3
cmFwcGVkS2V5KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5OjpSZXBs
eShzdWNjZWVkZWQsIGtleSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXkp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbndyYXBDcnlwdG9LZXk6OlJlcGx5KHN1Y2NlZWRl
ZCwga2V5KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc3VjY2VlZGVkOwog
fQpAQCAtMTIwNCw3ICsxMjA1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3JhcENyeXB0
b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwKIFN0cmluZyBX
ZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25l
ZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwm
IHVybCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwotICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJ
bmRleCwgY2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWdu
ZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS5wYWdl
SUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdl
U3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCkpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJp
bmcoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTMxNywxMiArMTMxOCwxMiBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6ZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKQogfQog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4s
IFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wYWdlLmhhc1N0b3JhZ2VBY2Nl
c3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFt
ZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFp
biYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RG
TW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZGQz
YjIyNTQzNWQuLjI5MWM1ZWRkYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNjksOCArMzY5
LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3Rz
KCkgZmluYWw7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZv
aWQgaGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1l
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJikgZmluYWw7
CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
c3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duKT4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJ
RU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ29sb3JDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuY3BwCmluZGV4IGQ1MzVlNWM1NWM2Li5jYjQwMjQx
NzA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNvbG9yQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViQ29sb3JD
aG9vc2VyOjpXZWJDb2xvckNob29zZXIoV2ViUGFnZSogcGFnZSwgQ29sb3JDaG9vc2VyQ2xpZW50
KiBjbGllbnQsIGNvbnMKICAgICAsIG1fcGFnZShwYWdlKQogewogICAgIG1fcGFnZS0+c2V0QWN0
aXZlQ29sb3JDaG9vc2VyKHRoaXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0Nv
bG9yUGlja2VyKGluaXRpYWxDb2xvciwgY2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290
VmlldygpLCBjbGllbnQtPnN1Z2dlc3RlZENvbG9ycygpKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihp
bml0aWFsQ29sb3IsIGNsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSwgY2xp
ZW50LT5zdWdnZXN0ZWRDb2xvcnMoKSkpOwogfQogCiBXZWJDb2xvckNob29zZXI6On5XZWJDb2xv
ckNob29zZXIoKQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6cmVhdHRh
Y2hDb2xvckNob29zZXIoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fcGFnZS0+c2V0QWN0aXZl
Q29sb3JDaG9vc2VyKHRoaXMpOwogCiAgICAgQVNTRVJUKG1fY29sb3JDaG9vc2VyQ2xpZW50KTsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihjb2xvciwgbV9jb2xv
ckNob29zZXJDbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCksIG1fY29sb3JD
aG9vc2VyQ2xpZW50LT5zdWdnZXN0ZWRDb2xvcnMoKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29sb3JQaWNrZXIoY29s
b3IsIG1fY29sb3JDaG9vc2VyQ2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290Vmlldygp
LCBtX2NvbG9yQ2hvb3NlckNsaWVudC0+c3VnZ2VzdGVkQ29sb3JzKCkpKTsKIH0KIAogdm9pZCBX
ZWJDb2xvckNob29zZXI6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAt
ODUsNyArODUsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6c2V0U2VsZWN0ZWRDb2xvcihjb25z
dCBDb2xvciYgY29sb3IpCiAgICAgaWYgKG1fcGFnZS0+YWN0aXZlQ29sb3JDaG9vc2VyKCkgIT0g
dGhpcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRD
b2xvclBpY2tlckNvbG9yKGNvbG9yKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldENvbG9yUGlja2VyQ29sb3IoY29sb3IpKTsK
IH0KIAogdm9pZCBXZWJDb2xvckNob29zZXI6OmVuZENob29zZXIoKQpAQCAtOTMsNyArOTMsNyBA
QCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6ZW5kQ2hvb3NlcigpCiAgICAgaWYgKCFtX3BhZ2UpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kQ29sb3JQaWNr
ZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkVuZENvbG9yUGlja2VyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
YXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKaW5kZXggZDAyNWRm
YWNmYTIuLmQzNmExNTRjZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6
On5XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoKSB7IH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXI6OmhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBXVEY6OlN0
cmluZyYga2V5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5ZG93bklu
RGF0YUxpc3Qoa2V5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUtleWRvd25JbkRhdGFMaXN0KGtleSkpOwogfQogCiB2
b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFdU
Rjo6U3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZENsb3NlU3VnZ2VzdGlvbnMoKQogCiB2b2lkIFdlYkRh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6Y2xvc2UoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9u
cygpKTsKIH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpc3BsYXlXaXRo
QWN0aXZhdGlvblR5cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgdHlwZSkKQEAg
LTc1LDcgKzc1LDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpc3BsYXlX
aXRoQWN0aXZhdGlvblR5cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWMKICAgICBtX3BhZ2UtPnNldEFj
dGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcih0aGlzKTsKIAogICAgIERhdGFMaXN0U3VnZ2Vz
dGlvbkluZm9ybWF0aW9uIGluZm8gPSB7IHR5cGUsIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVu
dC0+c3VnZ2VzdGlvbnMoKSwgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5lbGVtZW50UmVj
dEluUm9vdFZpZXdDb29yZGluYXRlcygpIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
aG93RGF0YUxpc3RTdWdnZXN0aW9ucyhpbmZvKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dEYXRhTGlzdFN1Z2dlc3Rpb25z
KGluZm8pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3Bw
CmluZGV4IGY0MjhmZDIzOTdlLi43MDUyMDI1YjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAK
QEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvU3Rl
cChVbmRvU3RlcCYgc3RlcCkKICAgICBhdXRvIHN0ZXBJRCA9IHdlYlN0ZXAtPnN0ZXBJRCgpOwog
CiAgICAgbV9wYWdlLT5hZGRXZWJVbmRvU3RlcChzdGVwSUQsIFdURk1vdmUod2ViU3RlcCkpOwot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVkaXRDb21t
YW5kRm9yVW5kbyhzdGVwSUQsIHN0ZXAubGFiZWwoKSksIG1fcGFnZS0+cGFnZUlEKCksIElQQzo6
U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29t
bWFuZEZvclVuZG8oc3RlcElELCBzdGVwLmxhYmVsKCkpLCBJUEM6OlNlbmRPcHRpb246OkRpc3Bh
dGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgV2ViRWRp
dG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFVuZG9TdGVwJikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCmluZGV4IDUyOWMwNDY3MDMwLi4zZGNkN2UyZWMxOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6On5XZWJGcmFtZUxvYWRlckNsaWVudCgpCiB7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICBpZiAo
bV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ZyYW1lLT5wYWdl
KCktPnBhZ2VJRCgpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBl
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPRyhO
ZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlz
aW9uYWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiki
LCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBSRUxF
QVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX2ZyYW1lLT5m
cmFtZUlEKCkpOwogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIApAQCAtNTc3
LDcgKzU3Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCksIG1fZnJhbWUtPmZy
YW1lSUQoKSk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIG1f
ZnJhbWUtPmZyYW1lSUQoKSk7CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwog
CkBAIC05MDEsNyArOTAxLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBpZiAocmVx
dWVzdGVyLmZyYW1lSUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShyZXF1
ZXN0ZXIuZnJhbWVJRCgpKSkKICAgICAgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1l
SUQgPSByZXF1ZXN0ZXIuZnJhbWVJRCgpOwogCi0gICAgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQgPSByZXF1ZXN0ZXIucGFnZUlEKCkgJiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShyZXF1ZXN0ZXIucGFnZUlEKCkpID8gcmVxdWVzdGVyLnBhZ2VJRCgpIDogMDsKKyAgICBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQ7CisgICAgaWYgKHJlcXVlc3Rl
ci5wYWdlSUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5w
YWdlSUQoKSkpCisgICAgICAgIG9yaWdpbmF0aW5nUGFnZUlEID0gcmVxdWVzdGVyLnBhZ2VJRCgp
OwogCiAgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGE7CiAgICAg
bmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUgPSBhY3Rpb24tPm5hdmlnYXRpb25U
eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGY3M2FiOGNhNzNmLi5jOGZi
MmFmMjEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVz
RGF0YSYmKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsK
KyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmlu
YWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBmaW5hbDsKICAgICBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcApp
bmRleCBkMTZmZTg1Nzc4NC4uMjA4YmI4OGEzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCkBAIC0xMTEs
NyArMTExLDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwg
RnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiAgICAgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIHBs
YXRmb3JtRGF0YTsKICAgICBzZXRVcFBsYXRmb3JtRGF0YShwYWdlQ29vcmRpbmF0ZXMsIHBsYXRm
b3JtRGF0YSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUocGFn
ZUNvb3JkaW5hdGVzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9wb3B1cENsaWVudC0+bWVudVN0
eWxlKCkudGV4dERpcmVjdGlvbigpKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2hvd1BvcHVwTWVudShwYWdlQ29vcmRpbmF0ZXMsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3Bv
cHVwQ2xpZW50LT5tZW51U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCkpLCBpdGVtcywgaW5kZXgsIHBs
YXRmb3JtRGF0YSkpOwogfQogCiB2b2lkIFdlYlBvcHVwTWVudTo6aGlkZSgpCkBAIC0xMTksNyAr
MTE5LDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OmhpZGUoKQogICAgIGlmICghbV9wYWdlIHx8ICFt
X3BvcHVwQ2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkhpZGVQb3B1cE1lbnUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhpZGVQb3B1cE1lbnUoKSk7CiAgICAgbV9wYWdlLT5z
ZXRBY3RpdmVQb3B1cE1lbnUobnVsbHB0cik7CiAgICAgbV9wb3B1cENsaWVudC0+cG9wdXBEaWRI
aWRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCmluZGV4IDMzZDQ3NTZlZGEyLi5j
MGU4YzE5MTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUs
IHNlYXJjaEl0ZW1zKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKSk7CiB9
CiAKIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgcmVzdWx0SXRlbXMpCkBAIC02
OCw3ICs2OCw3IEBAIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjCiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2FkUmVjZW50
U2VhcmNoZXMobmFtZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRSZWNlbnRTZWFyY2hl
czo6UmVwbHkocmVzdWx0SXRlbXMpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9hZFJlY2VudFNlYXJjaGVzKG5hbWUpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNoZXM6OlJlcGx5KHJlc3VsdEl0ZW1z
KSk7CiB9CiAKIGJvb2wgV2ViU2VhcmNoUG9wdXBNZW51OjplbmFibGVkKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggZjk5ODZlNDFjYTIuLmNmN2NiZjRmOWU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9z
L1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNTMsNyArNTMs
NyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3Qg
U3RyaW5nIG1fdXRpOwotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIFF1aWNrTG9va0RvY3VtZW50RGF0
YSBtX2RhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5jcHAKaW5kZXggMjc2YjgwYmYyOGYuLjAyNDRkZTQzYWRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC05Nyw0
ICs5NywxNCBAQCB2b2lkIERyYXdpbmdBcmVhOjpyZW1vdmVNZXNzYWdlUmVjZWl2ZXJJZk5lZWRl
ZCgpCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiB9CiAKK0lQQzo6Q29ubmVjdGlvbiogRHJhd2luZ0FyZWE6Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgRHJhd2luZ0Fy
ZWE6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
ZGVudGlmaWVyLnRvVUludDY0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggODA2OWEx
NThlZTIuLmVjOTUzN2Q3MGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJl
YUluZm8uaCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIldlYlBh
Z2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Zsb2F0UmVjdC5oPgpAQCAtNjUsNyArNjYsNyBAQCBjbGFzcyBMYXllclRyZWVIb3N0Owog
c3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNT
dG9yZTsKIAotY2xhc3MgRHJhd2luZ0FyZWEgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
eworY2xhc3MgRHJhd2luZ0FyZWEgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByb3Rl
Y3RlZCBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYXdpbmdBcmVhKTsKIApAQCAtMTUzLDExICsxNTQs
NiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBl
LCBEcmF3aW5nQXJlYUlkZW50aWZpZXIsIFdlYlBhZ2UmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IG1fd2ViUGFnZS5zZW5kKG1lc3NhZ2UsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCB7IH0pOwot
ICAgIH0KLQogICAgIERyYXdpbmdBcmVhVHlwZSBtX3R5cGU7CiAgICAgRHJhd2luZ0FyZWFJZGVu
dGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CkBAIC0xNzAsNiAr
MTY2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwor
ICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZSBoYW5k
bGVycy4KICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3Bw
CmluZGV4IDY5MTgzMGI1OTNjLi5jZDc4MjY4ZWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC04Nyw3ICs4Nyw3
IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24pCiAgICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9xdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2
ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9v
bCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNh
blJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCit2b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6d2hlZWxFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYldo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5S
dWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVy
QmFuZEF0Qm90dG9tKQogewogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKQogICAgIFBsYXRmb3JtV2hlZWxFdmVudCBwbGF0Zm9ybVdoZWVsRXZlbnQgPSBwbGF0
Zm9ybSh3aGVlbEV2ZW50KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6d2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVs
RXZlbgogfQogCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLXZvaWQgRXZlbnREaXNw
YXRjaGVyOjpnZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYkdl
c3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1cmVF
dmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50
JiBnZXN0dXJlRXZlbnQpCiB7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSgpIG11dGFibGUg
ewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaEdlc3R1cmVFdmVudChwYWdlSUQsIGdl
c3R1cmVFdmVudCk7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6Omdl
dFF1ZXVlZFRvdWNoRXZlbnRzRm9yUGFnZShjb25zdCBXZWJQYWdlJiB3ZWJQYWdlLCBUb3VjaEUK
ICAgICBkZXN0aW5hdGlvblF1ZXVlID0gbV90b3VjaEV2ZW50cy50YWtlKHdlYlBhZ2UucGFnZUlE
KCkpOwogfQogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKK3ZvaWQgRXZlbnRE
aXNwYXRjaGVyOjp0b3VjaEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0
OjpXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQogewogICAgIGJvb2wgdXBkYXRlTGlzdFdhc0Vt
cHR5OwogICAgIHsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hUb3VjaEV2ZW50cygpCiB9CiAjZW5kaWYKIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdo
ZWVsRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAg
ICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYldoZWVsRXZlbnQmIHcKIH0KIAogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi12
b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdl
Ykdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKQEAgLTIzMiw5ICsyMzIsOSBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbgogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotdm9pZCBFdmVudERpc3BhdGNoZXI6
OnNlbmREaWRSZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJFdmVudCYgZXZl
bnQsIGJvb2wgZGlkSGFuZGxlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6c2VuZERpZFJl
Y2VpdmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiBldmVudCwg
Ym9vbCBkaWRIYW5kbGVFdmVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJl
Y2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXZlbnQudHlwZSgpKSwgZGlkSGFuZGxl
RXZlbnQpLCBwYWdlSUQpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2
ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90PihldmVudC50eXBlKCkpLCBkaWRIYW5kbGVFdmVudCks
IHBhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDFkNDc3ODc3ZWFhLi5l
MWJiYmQ0Nzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9u
LmgiCiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1doZWVsRXZlbnREZWx0YUZpbHRlci5oPgogI2lu
Y2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNzcsMzggKzc4LDM4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKLSAg
ICB2b2lkIHdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50Jiwg
Ym9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29s
IGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOworICAgIHZv
aWQgd2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViV2hlZWxFdmVu
dCYsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwg
Ym9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsKICNp
ZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICB2b2lkIHRvdWNoRXZlbnQodWludDY0X3Qg
cGFnZUlELCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CisgICAgdm9pZCB0b3VjaEV2ZW50KFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAjZW5kaWYKICNpZiBF
TkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQgZ2VzdHVyZUV2ZW50KHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBnZXN0dXJlRXZlbnQo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogI2VuZGlm
CiAKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB2b2lk
IGRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQm
KTsKKyAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgV2ViV2hlZWxFdmVudCYpOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAg
IHZvaWQgZGlzcGF0Y2hUb3VjaEV2ZW50cygpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1BQ19HRVNU
VVJFX0VWRU5UUykKLSAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBkaXNwYXRjaEdlc3R1cmVFdmVu
dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0gICAgdm9pZCBzZW5kRGlkUmVjZWl2
ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmLCBib29sIGRpZEhhbmRsZUV2
ZW50KTsKKyAgICB2b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFdlYkV2ZW50JiwgYm9vbCBkaWRIYW5kbGVFdmVudCk7CiAjZW5kaWYKIAogICAg
IFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQog
ICAgIExvY2sgbV9zY3JvbGxpbmdUcmVlc011dGV4OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOwor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpUaHJl
YWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOwogI2VuZGlmCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OldoZWVsRXZlbnREZWx0YUZpbHRlcj4gbV9yZWNlbnRXaGVlbEV2
ZW50RGVsdGFGaWx0ZXI7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgTG9jayBt
X3RvdWNoRXZlbnRzTG9jazsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBUb3VjaEV2ZW50UXVldWU+
IG1fdG91Y2hFdmVudHM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVG91
Y2hFdmVudFF1ZXVlPiBtX3RvdWNoRXZlbnRzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVz
c2FnZXMuaW4KaW5kZXggNWUxNTQzYzk4Y2MuLmFmOTA0YjQ1MTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1l
c3NhZ2VzLmluCkBAIC0yMSwxMSArMjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMg
LT4gRXZlbnREaXNwYXRjaGVyIHsKLSAgICBXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
S2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wg
Y2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1
YmJlckJhbmRBdEJvdHRvbSkKKyAgICBXaGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRB
dExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9w
LCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5U
UykKLSAgICBUb3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJUb3VjaEV2ZW50
IGV2ZW50KQorICAgIFRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBX
ZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RV
UkVfRVZFTlRTKQotICAgIEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2Vi
R2VzdHVyZUV2ZW50IGV2ZW50KQorICAgIEdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQogI2VuZGlmCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0K
aW5kZXggYjc1MmMxYzU0ZDQuLmIyOTFkZjBiN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC03NSw3ICs3NSw3IEBAIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQ
YWdlJiB3ZWJQYWdlLCBjb25zdCBXCiAgICAgLy8gRklYTUU6IFdoaWxlIHVzaW5nIHRoZSBoaWdo
IGVuZCBvZiB0aGUgcmFuZ2Ugb2YgRGlzcGxheUlEcyBtYWtlcyBhIGNvbGxpc2lvbiB3aXRoIHJl
YWwsIG5vbi1SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYQogICAgIC8vIERpc3BsYXlJRHMgbGVz
cyBsaWtlbHksIGl0IGlzIG5vdCBlbnRpcmVseSBzYWZlIHRvIGhhdmUgYSBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYSBhbmQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEKICAgICAvLyBj
b2VleGlzdCBpbiB0aGUgc2FtZSBwcm9jZXNzLgotICAgIHdlYlBhZ2Uud2luZG93U2NyZWVuRGlk
Q2hhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFn
ZUlEKCkpOworICAgIHdlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9
CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEoKQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OmZsdXNoTGF5ZXJzKCkKICAgICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0
b3JlRmx1c2hlciA9IEJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLCBXVEZNb3ZlKGNvbW1pdEVuY29kZXIp
LCBXVEZNb3ZlKGNvbnRleHRzVG9GbHVzaCkpOwogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZs
dXNoZXIgPSBiYWNraW5nU3RvcmVGbHVzaGVyOwogCi0gICAgdWludDY0X3QgcGFnZUlEID0gbV93
ZWJQYWdlLnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgpOwog
ICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3RvcmVGbHVzaGVyID0g
V1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAgICAgICAgIGJhY2tpbmdT
dG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQppbmRleCBkN2NkMjBmYTBjMC4uZDg4OWJlNDE4OTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0
b3IubW0KQEAgLTUxLDEyICs1MSwxMiBAQCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6UmVt
b3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IoV2ViUGFnZSogcGFnZSkKICAgICA6IEFzeW5jU2Nyb2xs
aW5nQ29vcmRpbmF0b3IocGFnZS0+Y29yZVBhZ2UoKSkKICAgICAsIG1fd2ViUGFnZShwYWdlKQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93
ZWJQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCAqdGhp
cyk7CiB9CiAKIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjp+UmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3IoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV93ZWJQYWdlLT5wYWdlSUQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVTY3JvbGxpbmdDb29y
ZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UtPnBhZ2VJRCgpLnRvVUlu
dDY0KCkpOwogfQogCiB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVsZVRy
ZWVTdGF0ZUNvbW1pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggMDU0NDA0NTZmNDEuLmM5NDBl
MGNkMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1v
dGVXZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1fcGFnZS5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTZW5kTWVz
c2FnZVRvQmFja2VuZChtZXNzYWdlKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6
OndpbmRvd09iamVjdENsZWFyZWQoKQpAQCAtMTAyLDEyICsxMDIsMTIgQEAgdm9pZCBSZW1vdGVX
ZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQoKQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clVJOjpjaGFuZ2VTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVjdCksIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpTZXRTaGVldFJlY3QocmVjdCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJ
OjpzdGFydFdpbmRvd0RyYWcoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpTdGFydFdpbmRvd0RyYWcoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0V2luZG93RHJhZygpKTsK
IH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZs
b2F0IHkpCkBAIC0xMjQsMzQgKzEyNCwzNCBAQCBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0
RGlyZWN0aW9uIFJlbW90ZVdlYkluc3BlY3RvclVJOjp1c2VySW50ZXJmYWNlTGF5b3V0RAogCiB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQoKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkJy
aW5nVG9Gcm9udCgpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5k
b3coKQogewogICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobnVsbHB0cik7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eTo6RnJvbnRlbmREaWRDbG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6RnJvbnRl
bmREaWRDbG9zZSgpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6cmVvcGVuKCkK
IHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6UmVvcGVuKCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpSZW9wZW4oKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6Om9wZW5J
bk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6T3BlbkluTmV3VGFiKHVybCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpPcGVuSW5OZXdUYWIo
dXJsKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNhdmUoY29uc3QgU3RyaW5n
JiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJv
b2wgZm9yY2VTYXZlQXMpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVj
dG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2
ZUFzKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmFwcGVuZChjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVt
b3RlV2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCksIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNw
ZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKQEAg
LTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjppbnNwZWN0ZWRVUkxD
aGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clVJOjpzaG93Q2VydGlmaWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8pCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNob3dDZXJ0aWZp
Y2F0ZShjZXJ0aWZpY2F0ZUluZm8pLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2hvd0NlcnRpZmljYXRlKGNlcnRp
ZmljYXRlSW5mbykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvci5jcHAKaW5kZXggYWJmY2VjZGIxZmIuLmNmOTNhOGQwODRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5
Q29sbGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtNjEsMTIgKzYxLDEyIEBAIFZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoV2ViUGFn
ZSYgd2ViUGFnZSkKICAgICAsIG1fcmVuZGVyVHJlZVNpemVOb3RpZmljYXRpb25UaHJlc2hvbGQo
MCkKICNlbmRpZgogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0
cnlDb2xsZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV93ZWJQYWdlLnBhZ2VJRCgpLnRv
VUludDY0KCksICp0aGlzKTsKIH0KIAogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6flZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dlYlBhZ2UucGFnZUlEKCkpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3dl
YlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgVmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvcjo6ZGlzcGF0Y2hEaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRp
b25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luLCBGbG9hdFJlY3QgdGFyZ2V0UmVjdCwgRmxvYXRS
ZWN0IHZpc2libGVDb250ZW50UmVjdCwgYm9vbCBmaXRFbnRpcmVSZWN0LCBkb3VibGUgdmlld3Bv
cnRNaW5pbXVtU2NhbGUsIGRvdWJsZSB2aWV3cG9ydE1heGltdW1TY2FsZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlz
dFByb3h5LmNwcAppbmRleCAyMTFkNjAxZWYwYi4uZmNlZTBkZmRmZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExp
c3RQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIElEVG9IaXN0b3J5SXRlbU1hcCYg
aWRUb0hpc3RvcnlJdGVtTWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi12b2lkIFdlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCB1aW50NjRfdCBw
YWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0pCit2b2lk
IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlz
dGluZ0l0ZW0pCiB7CiAgICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWlyIHNob3VsZCBub3QgYWxy
ZWFkeSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQob3ZlcndyaXRlRXhpc3Rp
bmdJdGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZ
ZXMgfHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwpAQCAtMTE2LDcg
KzExNiw3IEBAIFJlZlB0cjxIaXN0b3J5SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6Oml0
ZW1BdEluZGV4KGludCBpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
T3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gaXRlbUlEOwotICAgIGlmICghV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleChpdGVtSW5kZXgp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4OjpSZXBseShp
dGVtSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleChpdGVtSW5kZXgpLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4OjpSZXBseShpdGVt
SUQpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWl0ZW1JRCkKQEAgLTEz
MSw3ICsxMzEsNyBAQCB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xpc3RD
b3VudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdW5zaWduZWQgYmFja0xpc3RD
b3VudCA9IDA7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2Fy
ZEJhY2tMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNr
TGlzdENvdW50OjpSZXBseShiYWNrTGlzdENvdW50KSwgbV9wYWdlLT5wYWdlSUQoKSkpCisgICAg
aWYgKCFtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJk
QmFja0xpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tM
aXN0Q291bnQ6OlJlcGx5KGJhY2tMaXN0Q291bnQpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICByZXR1cm4gYmFja0xpc3RDb3VudDsKQEAgLTE0Myw3ICsxNDMsNyBAQCB1bnNpZ25lZCBXZWJC
YWNrRm9yd2FyZExpc3RQcm94eTo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0CiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgdW5zaWduZWQgZm9yd2FyZExpc3RDb3VudCA9IDA7Ci0gICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50OjpSZXBs
eShmb3J3YXJkTGlzdENvdW50KSwgbV9wYWdlLT5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Ut
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RD
b3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291
bnQ6OlJlcGx5KGZvcndhcmRMaXN0Q291bnQpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBy
ZXR1cm4gZm9yd2FyZExpc3RDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCmluZGV4IGYzYjFjOGFm
NTQ4Li5kMWJhYWRiOTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRDbGllbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9OwotICAgIHZvaWQgYWRkSXRlbUZyb21VSVBy
b2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJD
b3JlOjpIaXN0b3J5SXRlbT4mJiwgdWludDY0X3QgcGFnZUlELCBPdmVyd3JpdGVFeGlzdGluZ0l0
ZW0pOworICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0Zv
cndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7CiAKICAgICB2b2lkIGNs
ZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuY3BwCmluZGV4IDE2MGVkZWZkNTlkLi4yZDlkMDg1ZTNiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIFdlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKCkKIFN0cmluZyBXZWJDb29raWVKYXI6
OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29u
c3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAg
aWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtNjYsNyArNjYsNyBAQCBTdHJpbmcg
V2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZykKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtODMsNyArODMsNyBAQCBib29s
IFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRv
Y3VtZW50KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29v
a2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CiB7CiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tp
ZXNBY2Nlc3NlZCA9IGZhbHNlOwpAQCAtOTUsNyArOTUsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBX
ZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVz
dEhlYQogYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
IHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAg
ICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAg
ICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggOTdkZDc2
ZjY2NGMuLjU1OWJkMGU1MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb29raWVKYXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5n
IGNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICAg
ICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0cmluZykgZmluYWw7CiAgICAgYm9vbCBjb29raWVzRW5hYmxlZChjb25z
dCBXZWJDb3JlOjpEb2N1bWVudCYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6cGFpcjxTdHJpbmcs
IFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcykgY29uc3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2Vj
dXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQ
QUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpE
b2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3QgZmlu
YWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwogcHJpdmF0ZToKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA4OTBjNWU1
NmFjMC4uNGFmNDk1YTUxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJh
dGVMaXN0ZW5lcklEKCkKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFp
bkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUpCiB7CiAgICAg
YXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJDbGllbnQ+
KHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oJmNvcmVGcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkpKSk7Ci0gICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRD
cmVhdGVNYWluRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBw
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFtZShmcmFt
ZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUgPSBjb3JlRnJhbWU7CiAg
ICAgZnJhbWUtPm1fY29yZUZyYW1lLT50cmVlKCkuc2V0TmFtZShTdHJpbmcoKSk7CkBAIC0xMjEs
NyArMTIxLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJh
bWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMKIFJlZjxXZWJGcmFtZT4gV2ViRnJh
bWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsKICAgICBhdXRvIGZyYW1l
ID0gY3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOwotICAg
IHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJh
bWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsKIAog
ICAgIGF1dG8gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgpLCBvd25l
ckVsZW1lbnQsIGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKICAgICBmcmFtZS0+
bV9jb3JlRnJhbWUgPSBjb3JlRnJhbWUucHRyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBkNzdlNjM3MGMxMS4uYmRiOTJm
NzRkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yLmNwcApAQCAtNzIsNyArNzIsNyBAQCBXZWJJbnNwZWN0b3I6On5XZWJJbnNwZWN0b3Io
KQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9vbCB1
bmRlclRlc3QpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Ok9wZW5Mb2NhbElu
c3BlY3RvckZyb250ZW5kKGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpP
cGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChjYW5BdHRhY2hXaW5kb3coKSwgdW5kZXJUZXN0KSk7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBDOjpBdHRh
Y2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTEwOCw3ICsxMDgsNyBAQCB2
b2lkIFdlYkluc3BlY3Rvcjo6c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBl
bmNvZGVkQ29ubmVjdGlvbklkZW50aQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2VGcm9udGVu
ZENvbm5lY3Rpb24oKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9z
ZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpEaWRDbG9zZSgpKTsKIAogICAgIC8vIElmIHdlIHRyaWVkIHRvIGNsb3Nl
IHRoZSBmcm9udGVuZCBiZWZvcmUgaXQgd2FzIGNyZWF0ZWQsIHRoZW4gbm8gY29ubmVjdGlvbiBl
eGlzdHMgeWV0LgogICAgIGlmIChtX2Zyb250ZW5kQ29ubmVjdGlvbikgewpAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbigpCiAKIHZv
aWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCkpOwogfQog
CiB2b2lkIFdlYkluc3BlY3Rvcjo6d2hlbkZyb250ZW5kQ29ubmVjdGlvbkVzdGFibGlzaGVkKEZ1
bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIFdlYklu
c3BlY3Rvcjo6c3RvcEVsZW1lbnRTZWxlY3Rpb24oKQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6ZWxl
bWVudFNlbGVjdGlvbkNoYW5nZWQoYm9vbCBhY3RpdmUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6OkVsZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKGFjdGl2ZSksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkVs
ZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKGFjdGl2ZSkpOwogfQogCiBib29sIFdlYkluc3BlY3Rvcjo6
Y2FuQXR0YWNoV2luZG93KCkKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6
dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpCiAKICAgICBtX3ByZXZpb3VzQ2FuQXR0YWNoID0g
Y2FuQXR0YWNoV2luZG93OwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFj
aEF2YWlsYWJpbGl0eUNoYW5nZWQoY2FuQXR0YWNoV2luZG93KSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQXZh
aWxhYmlsaXR5Q2hhbmdlZChjYW5BdHRhY2hXaW5kb3cpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JVSS5jcHAKaW5kZXggYzk2NTJlOTRhZjguLjI3NTU2ZDAxY2FiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC01
OCw3ICs1OCw3IEBAIFdlYkluc3BlY3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlJiBwYWdl
KQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24o
dWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25l
ZCBpbnNwZWN0aW9uTGV2ZWwpCit2b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0
aW9uKFBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVz
dCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogewogICAgIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0
Y2hlci5yZXNldCgpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnVw
ZGF0ZUNvbm5lY3Rpb24oKQogICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPm9wZW4oKTsKICNlbmRp
ZgogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEZyb250ZW5kQ29ubmVjdGlv
bihjb25uZWN0aW9uQ2xpZW50UG9ydCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRGcm9udGVuZENvbm5lY3Rpb24oY29ubmVj
dGlvbkNsaWVudFBvcnQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RDbGVhcmVkKCkKQEAgLTEyOCwx
NCArMTI4LDE0IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKCkKICAgICBz
ZXREb2NrU2lkZShtX2RvY2tTaWRlKTsKICAgICBzZXRJc1Zpc2libGUobV9pc1Zpc2libGUpOwog
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkZyb250ZW5kTG9hZGVkKCksIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpG
cm9udGVuZExvYWRlZCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwog
CiAgICAgYnJpbmdUb0Zyb250KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnN0YXJ0V2lu
ZG93RHJhZygpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0V2luZG93
RHJhZygpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6U3RhcnRXaW5kb3dEcmFnKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeShmbG9h
dCB4LCBmbG9hdCB5KQpAQCAtMTQ3LDEyICsxNDcsMTIgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6
bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmJy
aW5nVG9Gcm9udCgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9G
cm9udCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9V
SW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCks
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9iYWNr
ZW5kQ29ubmVjdGlvbikgewogICAgICAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5pbnZhbGlkYXRl
KCk7CkBAIC0xNjcsMTMgKzE2NywxMyBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRv
dygpCiAgICAgaWYgKG1fZnJvbnRlbmRIb3N0KQogICAgICAgICBtX2Zyb250ZW5kSG9zdC0+ZGlz
Y29ubmVjdENsaWVudCgpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IDA7Cisg
ICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IHsgfTsKICAgICBtX3VuZGVyVGVzdCA9IGZh
bHNlOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpyZW9wZW4oKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpSZW9wZW4oKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlJlb3BlbigpLCBtX2luc3BlY3RlZFBh
Z2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uIFdlYkluc3BlY3RvclVJOjp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
KCkgY29uc3QKQEAgLTE4NiwxNiArMTg2LDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnJlcXVl
c3RTZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQogICAgIGF1dG8mIHdlYlByb2Nlc3MgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKTsKICAgICBzd2l0Y2ggKHNpZGUpIHsKICAgICBjYXNlIERvY2tT
aWRlOjpVbmRvY2tlZDoKLSAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGV0YWNoKCksIG1faW5zcGVj
dGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2goKSwgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBEb2NrU2lkZTo6UmlnaHQ6Ci0gICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaFJpZ2h0
KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICB3ZWJQcm9jZXNzLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpB
dHRhY2hSaWdodCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIERvY2tTaWRlOjpMZWZ0OgotICAgICAgICB3ZWJQcm9jZXNz
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpBdHRhY2hMZWZ0KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICB3
ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpBdHRhY2hMZWZ0KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9V
SW50NjQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRvbToKLSAg
ICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIpOworICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpA
QCAtMjQzLDE3ICsyNDMsMTcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0SXNWaXNpYmxlKGJv
b2wgdmlzaWJsZSkKIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dI
ZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRXaW5kb3dI
ZWlnaHQoaGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25l
ZCB3aWR0aCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRX
aW5kb3dXaWR0aCh3aWR0aCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3JVSTo6Y2hhbmdlU2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0U2hlZXRSZWN0KHJlY3QpLCBtX2luc3BlY3RlZFBh
Z2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0U2hlZXRS
ZWN0KHJlY3QpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2
b2lkIFdlYkluc3BlY3RvclVJOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCkBAIC0y
NjQsMjIgKzI2NCwyMiBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpvcGVuSW5OZXdUYWIoY29uc3Qg
U3RyaW5nJiB1cmwpCiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNhdmUoY29uc3QgV1RGOjpTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNv
ZGVkLCBib29sIGZvcmNlU2F2ZUFzKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpTYXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyksIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpTYXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyksIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yVUk6OmFwcGVuZChjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdURjo6U3Ry
aW5nJiBjb250ZW50KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQo
ZmlsZW5hbWUsIGNvbnRlbnQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9pbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JV
STo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcp
LCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX2luc3BlY3RlZFBhZ2VJZGVu
dGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpzaG93Q2VydGlm
aWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCiB7Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNob3dDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZUluZm8p
LCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6U2hvd0NlcnRpZmljYXRlKGNlcnRpZmljYXRlSW5mbyksIG1faW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dDb25z
b2xlKCkKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpwYWdlVW5wYXVz
ZWQoKQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNlbmRN
ZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2Fn
ZSksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3RvclVJLmgKaW5kZXggODM4MWJmMWNlZGUuLjk0MjRiZmUxZjI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluc3BlY3RvckNv
bnRyb2xsZXI7CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVJ
bnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBD
OjpTdHJpbmdSZWZlcmVuY2UpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQogCiAgICAgLy8g
Q2FsbGVkIGJ5IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzCi0gICAgdm9pZCBlc3RhYmxpc2hDb25u
ZWN0aW9uKHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwg
dW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKTsKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24o
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5k
ZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpOwogICAgIHZvaWQgdXBkYXRlQ29ubmVj
dGlvbigpOwogCiAgICAgdm9pZCBzaG93Q29uc29sZSgpOwpAQCAtMTMzLDcgKzEzNCw3IEBAIHBy
aXZhdGU6CiAgICAgLy8gY29yZVBhZ2UoKSwgc2luY2Ugd2UgbWF5IG5lZWQgaXQgYWZ0ZXIgdGhl
IGZyb250ZW5kJ3MgcGFnZSBoYXMgc3RhcnRlZCBkZXN0cnVjdGlvbi4KICAgICBXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyKiBtX2Zyb250ZW5kQ29udHJvbGxlciB7IG51bGxwdHIgfTsKIAot
ICAgIHVpbnQ2NF90IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgeyAwIH07CisgICAgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBib29sIG1f
dW5kZXJUZXN0IHsgZmFsc2UgfTsKICAgICBib29sIG1fZG9ja2luZ1VuYXZhaWxhYmxlIHsgZmFs
c2UgfTsKICAgICBib29sIG1faXNWaXNpYmxlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMu
aW4KaW5kZXggZGVhMGZlNTg0ZDQuLjQzMTkwYWE4MzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5p
bgpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJJbnNw
ZWN0b3JVSSB7Ci0gICAgRXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdl
SWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKKyAg
ICBFc3RhYmxpc2hDb25uZWN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBh
Z2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQog
ICAgIFVwZGF0ZUNvbm5lY3Rpb24oKQogCiAgICAgQXR0YWNoZWRCb3R0b20oKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzYmFhZmQxODU0Yy4u
M2U2YWY3MzE3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAgcHJpdmF0ZToKIAogREVGSU5FX0RFQlVHX09OTFlf
R0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCB3ZWJQYWdlQ291bnRlciwgKCJXZWJQ
YWdlIikpOwogCi1SZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZWY8V2ViUGFnZT4gV2Vi
UGFnZTo6Y3JlYXRlKElkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycykKIHsKICAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcg
V2ViUGFnZShwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKIApAQCAtMzcwLDcgKzM3MCw3
IEBAIFJlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUodWludDY0X3QgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLVdlYlBh
Z2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycykKK1dlYlBhZ2U6OldlYlBhZ2UoSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogbV9wYWdlSUQocGFnZUlEKQog
ICAgICwgbV92aWV3U2l6ZShwYXJhbWV0ZXJzLnZpZXdTaXplKQogICAgICwgbV9hbHdheXNTaG93
c0hvcml6b250YWxTY3JvbGxlciB7IHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Ny
b2xsZXIgfQpAQCAtNjAzLDE0ICs2MDMsMTQgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIG1fcGFn
ZS0+YWRkTGF5b3V0TWlsZXN0b25lcyh7IERpZEZpcnN0TGF5b3V0LCBEaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXQgfSk7CiAKICAgICBhdXRvJiB3ZWJQcm9jZXNzID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCk7Ci0gICAgd2ViUHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKKyAgICB3
ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCAqdGhpcyk7CiAKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgb2JqZWN0IGNvbnN0cnVjdG9ycywgYW5kIHRo
ZSBvYmplY3RzIHRoZW1zZWx2ZXMgc2hvdWxkIGJlIG1lc3NhZ2UgcmVjZWl2ZXJzLgotICAgIHdl
YlByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKLSAgICB3ZWJQcm9jZXNzLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlSUQsICp0aGlzKTsKLSAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlSUQsICp0aGlzKTsKKyAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlELnRvVUlu
dDY0KCksICp0aGlzKTsKKyAgICB3ZWJQcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSwgKnRoaXMpOworICAgIHdlYlByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCAqdGhpcyk7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIHdlYlBy
b2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCwgKnRoaXMpOworICAgIHdlYlByb2Nlc3Mu
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCAqdGhpcyk7CiAjZW5kaWYKIAog
I2lmbmRlZiBOREVCVUcKQEAgLTgzMSw3ICs4MzEsNyBAQCBJUEM6OkNvbm5lY3Rpb24qIFdlYlBh
Z2U6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGFnZTo6
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBwYWdlSUQo
KTsKKyAgICByZXR1cm4gcGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQpAQCAtMTQyMCwxMyArMTQyMCwxMyBAQCB2b2lkIFdlYlBhZ2U6OmNsb3NlKCkK
ICAgICBpZiAobV91c2VBc3luY1Njcm9sbGluZykKICAgICAgICAgd2ViUHJvY2Vzcy5ldmVudERp
c3BhdGNoZXIoKS5yZW1vdmVTY3JvbGxpbmdUcmVlRm9yUGFnZSh0aGlzKTsKICNlbmRpZgotICAg
IHdlYlByb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKKyAgICB3ZWJQcm9jZXNzLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0
aGUgb2JqZWN0IGRlc3RydWN0b3JzLCBhbmQgdGhlIG9iamVjdHMgdGhlbXNlbHZlcyBzaG91bGQg
YmUgbWVzc2FnZSByZWNlaXZlcnMuCi0gICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJ
RCk7Ci0gICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKLSAgICB3ZWJQcm9j
ZXNzLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOworICAgIHdlYlByb2Nlc3MucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CisgICAgd2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOworICAgIHdlYlByb2Nlc3MucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAg
d2ViUHJvY2Vzcy5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5N
YW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKKyAgICB3ZWJQcm9jZXNz
LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAjZW5kaWYKICNpZiBQ
TEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oR1RLKQogICAgIG1fdmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3RvciA9IG51bGxwdHI7CkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCB2b2lkIFdlYlBhZ2U6
OmdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBCYWNrRm9y
d2FyZEl0ZW1JZAogICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKExv
YWRpbmcsICJJbiBXZWJQcm9jZXNzIHBpZCAlaSwgV2ViUGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZp
Z2F0aW5nIHRvIGJhY2svZm9yd2FyZCBVUkwgJXMiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIG1f
cGFnZUlELCBpdGVtLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTG9h
ZGluZywgIkluIFdlYlByb2Nlc3MgcGlkICVpLCBXZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmln
YXRpbmcgdG8gYmFjay9mb3J3YXJkIFVSTCAlcyIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSwgaXRlbS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAK
ICAgICBBU1NFUlQoIW1fcGVuZGluZ05hdmlnYXRpb25JRCk7CiAgICAgbV9wZW5kaW5nTmF2aWdh
dGlvbklEID0gbmF2aWdhdGlvbklEOwpAQCAtMjA3Niw3ICsyMDc2LDcgQEAgYm9vbCBXZWJQYWdl
OjpzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoIXZpZXcg
fHwgdmlldy0+Zml4ZWRMYXlvdXRTaXplKCkgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdl
ICIgPDwgbV9wYWdlSUQgPDwgIiBzZXRGaXhlZExheW91dFNpemUgIiA8PCBzaXplKTsKKyAgICBM
T0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpIDw8ICIgc2V0Rml4ZWRMYXlvdXRTaXplICIgPDwgc2l6ZSk7CiAgICAg
dmlldy0+c2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpGaXhlZExheW91dFNpemVEaWRDaGFuZ2Uoc2l6ZSkpOwpAQCAtMjUwNCw3ICsy
NTA0LDcgQEAgY29uc3QgV2ViRXZlbnQqIFdlYlBhZ2U6OmN1cnJlbnRFdmVudCgpCiB2b2lkIFdl
YlBhZ2U6OmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogewog
ICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQYWdlIChQYWdlSUQ9
JWxsdSkgLSBBZGRpbmcgYSByZWFzb24gJWQgdG8gZnJlZXplIGxheWVyIHRyZWU7IGN1cnJlbnQg
cmVhc29ucyBhcmUgJWQiLAotICAgICAgICB0aGlzLCBtX3BhZ2VJRCwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50b1JhdygpKTsKKyAgICAg
ICAgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNv
biksIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50b1JhdygpKTsKICAgICBtX2xheWVyVHJlZUZy
ZWV6ZVJlYXNvbnMuYWRkKHJlYXNvbik7CiAgICAgdXBkYXRlRHJhd2luZ0FyZWFMYXllclRyZWVG
cmVlemVTdGF0ZSgpOwogfQpAQCAtMjUxMiw3ICsyNTEyLDcgQEAgdm9pZCBXZWJQYWdlOjpmcmVl
emVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uIHJlYXNvbikKIHZvaWQgV2ViUGFnZTo6
dW5mcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uIHJlYXNvbikKIHsKICAgICBS
RUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUGFnZSAoUGFnZUlEPSVsbHUp
IC0gUmVtb3ZpbmcgYSByZWFzb24gJWQgdG8gZnJlZXplIGxheWVyIHRyZWU7IGN1cnJlbnQgcmVh
c29ucyBhcmUgJWQiLAotICAgICAgICB0aGlzLCBtX3BhZ2VJRCwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50b1JhdygpKTsKKyAgICAgICAg
dGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiks
IG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50b1JhdygpKTsKICAgICBtX2xheWVyVHJlZUZyZWV6
ZVJlYXNvbnMucmVtb3ZlKHJlYXNvbik7CiAgICAgdXBkYXRlRHJhd2luZ0FyZWFMYXllclRyZWVG
cmVlemVTdGF0ZSgpOwogfQpAQCAtMzE2OCw3ICszMTY4LDcgQEAgdm9pZCBXZWJQYWdlOjp2aXNp
YmlsaXR5RGlkQ2hhbmdlKCkKIAogdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlv
blNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hh
bmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNh
bGxiYWNrSURzKQogewotICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0g
PDwgIldlYlBhZ2UgIiA8PCBwYWdlSUQoKSA8PCAiIHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBh
Y3Rpdml0eVN0YXRlKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFt
IDw8ICJXZWJQYWdlICIgPDwgcGFnZUlEKCkudG9VSW50NjQoKSA8PCAiIHNldEFjdGl2aXR5U3Rh
dGUgdG8gIiA8PCBhY3Rpdml0eVN0YXRlKTsKIAogICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZp
dHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7CiAgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlT
dGF0ZTsKQEAgLTMxNzYsNyArMzE3Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0
ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgQWN0CiAgICAg
aWYgKGNoYW5nZWQpCiAgICAgICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAotICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UobV9wYWdlLCAic2V0QWN0aXZpdHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJ
dTY0ICIgYnV0IFdlYkNvcmUgcGFnZSB3YXMgbnVsbCIsIHBhZ2VJRCgpKTsKKyAgICBBU1NFUlRf
V0lUSF9NRVNTQUdFKG1fcGFnZSwgInNldEFjdGl2aXR5U3RhdGUgY2FsbGVkIG9uICUiIFBSSXU2
NCAiIGJ1dCBXZWJDb3JlIHBhZ2Ugd2FzIG51bGwiLCBwYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAg
ICBpZiAobV9wYWdlKSB7CiAgICAgICAgIFNldEZvclNjb3BlPE9wdGlvblNldDxBY3Rpdml0eVN0
YXRlOjpGbGFnPj4gY3VycmVudGx5Q2hhbmdpbmdBY3Rpdml0eVN0YXRlIHsgbV9sYXN0QWN0aXZp
dHlTdGF0ZUNoYW5nZXMsIGNoYW5nZWQgfTsKICAgICAgICAgbV9wYWdlLT5zZXRBY3Rpdml0eVN0
YXRlKGFjdGl2aXR5U3RhdGUpOwpAQCAtNDMzOSw3ICs0MzM5LDcgQEAgdm9pZCBXZWJQYWdlOjpt
YWluRnJhbWVEaWRMYXlvdXQoKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKEZy
YW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKSB7CiAgICAgICAgIEludFNpemUg
bmV3Q29udGVudFNpemUgPSBmcmFtZVZpZXctPmNvbnRlbnRzU2l6ZSgpOwotICAgICAgICBMT0df
V0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJ
RCA8PCAiIG1haW5GcmFtZURpZExheW91dCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IG5l
d0NvbnRlbnRTaXplKTsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3Ry
ZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQudG9VSW50NjQoKSA8PCAiIG1haW5GcmFtZURp
ZExheW91dCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IG5ld0NvbnRlbnRTaXplKTsKICAg
ICAgICAgaWYgKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldENvbnRlbnRzU2l6ZShuZXdDb250
ZW50U2l6ZSkpCiAgICAgICAgICAgICB2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7CiAg
ICAgfQpAQCAtNTc0Miw3ICs1NzQyLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdl
YkZyYW1lKiBmcmFtZSkKICAgICAKICAgICBib29sIHZpZXdwb3J0Q2hhbmdlZCA9IGZhbHNlOwog
Ci0gICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIg
PDwgbV9wYWdlSUQgPDwgIiBkaWRDb21taXRMb2FkIHNldHRpbmcgY29udGVudCBzaXplIHRvICIg
PDwgY29yZUZyYW1lLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICBMT0dfV0lUSF9TVFJF
QU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2
NCgpIDw8ICIgZGlkQ29tbWl0TG9hZCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IGNvcmVG
cmFtZS0+dmlldygpLT5jb250ZW50c1NpemUoKSk7CiAgICAgaWYgKG1fdmlld3BvcnRDb25maWd1
cmF0aW9uLnNldENvbnRlbnRzU2l6ZShjb3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkp
KQogICAgICAgICB2aWV3cG9ydENoYW5nZWQgPSB0cnVlOwogCkBAIC02MDU2LDcgKzYwNTYsNyBA
QCB2b2lkIFdlYlBhZ2U6OnNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgpCiAgICAgLy8gSWYgdGhhdCBp
cyB0aGUgY2FzZSwganVzdCBzZW5kIHdoYXQgd2UgaGF2ZSAoaS5lLiBkb24ndCBpbmNsdWRlIHBv
c3QtbGF5b3V0IGRhdGEpIGFuZCB3YWl0IHVudGlsIHRoZQogICAgIC8vIG5leHQgbGF5ZXIgdHJl
ZSBjb21taXQgdG8gY29tcHV0ZSBhbmQgc2VuZCB0aGUgY29tcGxldGUgRWRpdG9yU3RhdGUgb3Zl
ci4KICAgICBhdXRvIHN0YXRlID0gZWRpdG9yU3RhdGUoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChzdGF0ZSksIHBhZ2VJRCgpKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChzdGF0ZSksIHBh
Z2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgaWYgKHN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXRE
YXRhKQogICAgICAgICBzY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpOwpAQCAtNjIzNyw3
ICs2MjM3LDcgQEAgdm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiAKIHZvaWQgV2ViUGFnZTo6cG9zdE1l
c3NhZ2VJZ25vcmluZ0Z1bGx5U3luY2hyb25vdXNNb2RlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5h
bWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkhhbmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpKSksIHBh
Z2VJRCgpLCBJUEM6OlNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hyb25vdXNNb2RlKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUs
IFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXMobWVzc2FnZUJvZHkpKSksIHBhZ2VJRCgpLnRvVUludDY0KCksIElQQzo6U2VuZE9wdGlvbjo6
SWdub3JlRnVsbHlTeW5jaHJvbm91c01vZGUpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnBvc3RTeW5j
aHJvbm91c01lc3NhZ2VGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6
T2JqZWN0KiBtZXNzYWdlQm9keSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4NjhhZTkyZjJm
Yi4uZWFkN2I0OTZlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ludFNpemVIYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BvaW50ZXJJRC5oPgpAQCAtMjczLDcgKzI3NCw5IEBAIHVzaW5nIFdLRXZlbnRN
b2RpZmllcnMgPSB1aW50MzJfdDsKIAogY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVj
dEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxXZWJQYWdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWlu
dDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHVzaW5nIElk
ZW50aWZpZXIgPSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKKyAgICBzdGF0aWMgUmVmPFdlYlBh
Z2U+IGNyZWF0ZShJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworCiAg
ICAgdmlydHVhbCB+V2ViUGFnZSgpOwogCiAgICAgdm9pZCByZWluaXRpYWxpemVXZWJQYWdlKFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CkBAIC0yODMsNyArMjg2LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBXZWJQYWdlKiBmcm9tQ29yZVBhZ2UoV2ViQ29yZTo6UGFnZSopOwogCiAgICAg
V2ViQ29yZTo6UGFnZSogY29yZVBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0K
LSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIElk
ZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KICAgICBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UtPnNlc3Npb25JRCgpOyB9
CiAgICAgYm9vbCB1c2VzRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+
dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsgfQogCkBAIC0xMTY2LDcgKzExNjksNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBzZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYgcmVwbHkpCiAgICAgewogICAgICAgICBjYW5jZWxHZXN0dXJlc0Jsb2NrZWRP
blN5bmNocm9ub3VzUmVwbGllcygpOwotICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZSht
ZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIG1fcGFnZUlELCBTZWNvbmRzOjppbmZpbml0eSgpLCBJ
UEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7Cisg
ICAgICAgIHJldHVybiBzZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwg
bV9wYWdlSUQudG9VSW50NjQoKSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09w
dGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwogICAgIH0KIAogICAgIFdl
YkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CkBAIC0xMTk5LDcgKzEyMDIsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRVc2VySXNJbnRlcmFjdGluZyhib29sIHVzZXJJc0ludGVyYWN0aW5nKSB7
IG1fdXNlcklzSW50ZXJhY3RpbmcgPSB1c2VySXNJbnRlcmFjdGluZzsgfQogCiBwcml2YXRlOgot
ICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYp
OworICAgIFdlYlBhZ2UoSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsK
IAogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCkBAIC0xNTg1LDcgKzE1ODgsNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRl
ckNvbW1pdHRpbmdMb2FkKCk7CiAKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBJZGVudGlm
aWVyIG1fcGFnZUlEOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFn
ZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNw
cAppbmRleCBkOTZhN2Q3ZGRhOS4uYjc3OTliNGZiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3Bw
CkBAIC00MSw3ICs0MSw3IEBAIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OldlYlBhZ2VJbnNwZWN0
b3JUYXJnZXQoV2ViUGFnZSYgcGFnZSkKIAogU3RyaW5nIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6
OmlkZW50aWZpZXIoKSBjb25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKCJwYWdlLSIsIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlLnBh
Z2VJRCgpLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OmNv
bm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwmIGNoYW5uZWwpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCmluZGV4IDMwMWIxMzllMWQyLi42YjdlYzVi
MTZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAg
LTI2LDEzICsyNiwxNSBAQAogI2lmbmRlZiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFz
ZV9oCiAjZGVmaW5lIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlX2gKIAorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFz
cyBXZWJQYWdlOwogfQogCiBAaW50ZXJmYWNlIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlIDogTlNPYmplY3QgewogICAgIFdlYktpdDo6V2ViUGFnZSogbV9wYWdlOwotICAgIHVpbnQ2
NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAg
IGlkIG1fcGFyZW50OwogICAgIGJvb2wgbV9oYXNNYWluRnJhbWVQbHVnaW47CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXggM2QzZjM1NTUzZTYu
LjYxNjVhMDFmZTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlLm1tCkBAIC0xNDgsNyArMTQ4LDcgQEAgLSAodm9pZClzZXRXZWJQYWdlOihXZWJLaXQ6Oldl
YlBhZ2UqKXBhZ2UKICAgICAgICAgYXV0byogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKICAg
ICAgICAgbV9oYXNNYWluRnJhbWVQbHVnaW4gPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKSA/
IGZyYW1lLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkgOiBmYWxzZTsKICAgICB9IGVs
c2UgewotICAgICAgICBtX3BhZ2VJRCA9IDA7CisgICAgICAgIG1fcGFnZUlEID0geyB9OwogICAg
ICAgICBtX2hhc01haW5GcmFtZVBsdWdpbiA9IGZhbHNlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYTA3
Y2E0NWQzMzcuLmI2YWU4NDMyN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMjY2LDggKzI2Niw4IEBAIGJvb2wgV2Vi
UGFnZTo6ZXhlY3V0ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbChjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6S2V5cHJlc3NDb21tCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBib29sIGNvbW1hbmRXYXNIYW5kbGVkQnlVSVByb2Nlc3MgPSBmYWxz
ZTsKLSAgICAgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGVjdXRlU2F2
ZWRDb21tYW5kQnlTZWxlY3Rvcihjb21tYW5kc1tpXS5jb21tYW5kTmFtZSksCi0gICAgICAgICAg
ICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVTYXZlZENvbW1hbmRCeVNl
bGVjdG9yOjpSZXBseShjb21tYW5kV2FzSGFuZGxlZEJ5VUlQcm9jZXNzKSwgbV9wYWdlSUQpOwor
ICAgICAgICAgICAgICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVT
YXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKSwKKyAgICAgICAg
ICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29tbWFuZEJ5
U2VsZWN0b3I6OlJlcGx5KGNvbW1hbmRXYXNIYW5kbGVkQnlVSVByb2Nlc3MpKTsKICAgICAgICAg
ICAgICAgICBldmVudFdhc0hhbmRsZWQgfD0gY29tbWFuZFdhc0hhbmRsZWRCeVVJUHJvY2VzczsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCmluZGV4IDVjZTY5Y2NmODMzLi42MTc0YjBhM2JiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIFdlYlByb2Nlc3M6Oldl
YlByb2Nlc3MoKQogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpLCAwKTsKICAg
ICB9KTsKIAotICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5l
ckRvbWFpbikgeworICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0
U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIG9wZW5lckRvbWFpbikgewogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoc2Vzc2lvbklELCBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7CiAg
ICAgfSk7CiAjZW5kaWYKQEAgLTY2NywxNiArNjY3LDE2IEBAIFdlYlBhZ2UqIFdlYlByb2Nlc3M6
OmZvY3VzZWRXZWJQYWdlKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KICAgICAKLVdlYlBhZ2Uq
IFdlYlByb2Nlc3M6OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdAorV2ViUGFnZSogV2Vi
UHJvY2Vzczo6d2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIG1fcGFnZU1hcC5nZXQocGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCit2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICAvLyBJ
dCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVy
aW5nIGEgd2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFn
ZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3Vn
aCB0aGUgbm9ybWFsIHdheS4gCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+
Pjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKKyAg
ICBhdXRvIHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKICAgICBhdXRv
IG9sZFBhZ2VJRCA9IHBhcmFtZXRlcnMub2xkUGFnZUlEID8gcGFyYW1ldGVycy5vbGRQYWdlSUQu
dmFsdWUoKSA6IHBhZ2VJRDsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAg
QVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKQEAgLTY5Myw3ICs2OTMsNyBAQCB2b2lk
IFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYQogICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsK
IH0KIAotdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIEFT
U0VSVChtX3BhZ2VNYXAuY29udGFpbnMocGFnZUlEKSk7CiAKQEAgLTE0NTAsNyArMTQ1MCw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVS
ZWFzb24pCiAKICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKHVpbnQ2NF90LCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4g
Y2hhbmdlZCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoUGFn
ZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFu
Z2VkKQogewogICAgIGlmIChjaGFuZ2VkICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlKQogICAgICAgICB1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNv
bjo6VmlzaWJpbGl0eUhhc0NoYW5nZWQpOwpAQCAtMTYyNCwxMyArMTYyNCwxMyBAQCB2b2lkIFdl
YlByb2Nlc3M6OnNlbmRQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgVVJMJiB1cmwpCiAgICAgcGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpE
aWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpQ
cm9jZXNzV2FybWluZzo6Y29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpKSwgMCk7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzczo6cGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQg
V2ViUHJvY2Vzczo6cGFnZURpZEVudGVyV2luZG93KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBtX3BhZ2VzSW5XaW5kb3dzLmFkZChwYWdlSUQpOwogICAgIG1fbm9uVmlzaWJsZVByb2Nl
c3NDbGVhbnVwVGltZXIuc3RvcCgpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVh
dmVXaW5kb3codWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlV2lsbExlYXZl
V2luZG93KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3BhZ2VzSW5XaW5kb3dzLnJl
bW92ZShwYWdlSUQpOwogCkBAIC0xNjczLDcgKzE2NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVu
YWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGUpCiAgICAgaWYgKGVuYWJs
ZSkKICAgICAgICAgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1By
b2Nlc3MoKTsKIAotICAgIFZlY3Rvcjx1aW50NjRfdD4gcGFnZUlEczsKKyAgICBWZWN0b3I8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRHM7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwKSB7
CiAgICAgICAgIGlmIChwYWdlLnZhbHVlKQogICAgICAgICAgICAgcGFnZUlEcy5hcHBlbmQocGFn
ZS5rZXkpOwpAQCAtMTg1Myw3ICsxODUzLDcgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vz
czo6bGliV2ViUlRDTmV0d29yaygpCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12
b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkK
K3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vz
c2lvbklEKQogewogICAgIC8vIFdlIGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBw
cm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0
aGUgTmV0d29yayBQcm9jZXNzCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVy
bHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKaW5kZXggNTI1ZGYxODNmMjIuLjE4NTdjZWEwZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4u
aD4KICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVz
Lmg+CkBAIC0xNDUsOSArMTQ2LDkgQEAgcHVibGljOgogCiAgICAgV2ViQ29ubmVjdGlvblRvVUlQ
cm9jZXNzKiB3ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3dlYkNv
bm5lY3Rpb24uZ2V0KCk7IH0KIAotICAgIFdlYlBhZ2UqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlE
KSBjb25zdDsKLSAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgcmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgdm9pZCByZW1v
dmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAg
V2ViUGFnZSogZm9jdXNlZFdlYlBhZ2UoKSBjb25zdDsKIAogICAgIEluamVjdGVkQnVuZGxlKiBp
bmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0K
QEAgLTE5OSw4ICsyMDAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuc3VyZUxlZ2FjeVByaXZh
dGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAKLSAgICB2b2lkIHBhZ2VEaWRF
bnRlcldpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRv
dyh1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3coV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1l
ckZpcmVkKCk7CiAKQEAgLTIxOSw3ICsyMjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0
ZUFjdGl2ZVBhZ2VzKCk7CiAgICAgdm9pZCBnZXRBY3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0aW5n
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQg
cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0X3QgcGFnZUlELCBPcHRpb25TZXQ8V2Vi
Q29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCk7CisgICAgdm9pZCBwYWdlQWN0aXZp
dHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpOwogCiAgICAgdm9pZCBzZXRIaWRkZW5Q
YWdlRE9NVGltZXJUaHJvdHRsaW5nSW5jcmVhc2VMaW1pdChpbnQgbWlsbGlzZWNvbmRzKTsKIApA
QCAtMzU5LDcgKzM2MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91
cElELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYs
IFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMo
KTsKICNlbmRpZgogCkBAIC00NjAsNyArNDYxLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxX
ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAotICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOworICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOwogICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4+IG1fcGFnZUdyb3VwTWFwOwog
ICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZT4gbV9pbmplY3RlZEJ1bmRsZTsKIApAQCAtNTE0LDcg
KzUxNSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fcHJvY2Vzc0lzU3VzcGVuZGVkIHsgZmFs
c2UgfTsKIAotICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1fcGFnZXNJbldpbmRvd3M7CisgICAgSGFz
aFNldDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbV9wYWdlc0luV2luZG93czsKICAgICBXZWJD
b3JlOjpUaW1lciBtX25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyOwogCiAgICAgUmVmUHRy
PFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCBiMzliMzhjMTgzYy4uNTdhMjY1NjM0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFdlYnNpdGVEYXRhU3Rv
cmVQYXJhbWV0ZXJzKHN0cnVjdCBXZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJz
IHBhcmFtZXRlcnMpCiAKICAgICAjIENyZWF0ZSBhIG5ldyBwYWdlLgotICAgIENyZWF0ZVdlYlBh
Z2UodWludDY0X3QgbmV3UGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIHBhZ2VDcmVhdGlvblBhcmFtZXRlcnMpCisgICAgQ3JlYXRlV2ViUGFnZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBuZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykKIAogICAgIFByZXdhcm1HbG9iYWxs
eSgpOwogICAgIFByZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oc3RydWN0IFdlYkNvcmU6OlBy
ZXdhcm1JbmZvcm1hdGlvbiBwcmV3YXJtSW5mb3JtYXRpb24pCkBAIC0xMTEsNyArMTExLDcgQEAg
bWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
c3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQg
aW5pdGlhbFNlc3Npb25JRCkKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFM
OjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRzKCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggMGJkOTBhZjkxODcuLjBlOTQyOTYw
NDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1h
cDo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVh
SUQsIGMKIAogICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3Bh
Y2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIElEcwogICAgIC8vIHNvIHdlIGNhbiBnZXQg
dGhlIHJpZ2h0IHBhZ2UgaGVyZS4KLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgV2ViUGFnZSog
d2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50
aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1lc3BhY2VJRCkpOwogICAgIGlm
ICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAppbmRleCAyOWJhN2Q4YThhMy4u
ZWNhZjY2NTE5ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU3RvcmFnZUFyZWEuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuY3BwCmluZGV4IGIzOTA4MWU2ZTNjLi44MDk2MjM0MjQ0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRf
dCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZShQYWdlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6
OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9u
LCBpZGVudGlmaWVyLnRvVUludDY0KCksIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1S
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhl
bWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNl
SW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVy
IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKICAgICByZXR1cm4gY3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoaWRlbnRpZmllciwgcXVvdGFJbkJ5dGVzKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdl
TmFtZXNwYWNlSW1wbC5oCmluZGV4IDY3NTdlM2I4MTg4Li4xYmZlYzQ4Yjg5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5oCkBAIC0zOSw4ICszOSw4IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFN0
b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2Ugewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5C
eXRlcyk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRl
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3Jl
YXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1
bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlm
aWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1
b3RhSW5CeXRlcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KaW5kZXggZmM2NTk4NjMyNTIuLjFkNDNlMjdk
M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tT
ZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tbQpAQCAtMTcwLDcgKzE3MCw3IEBAIFJlZjxQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyPiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjcmVhdGUoV2ViUGFnZSYgcGFn
ZSkKIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoV2ViUGFn
ZSYgcGFnZSkKICAgICA6IG1fcGFnZSgmcGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlLnBhZ2VJRCgpLnRvVUlu
dDY0KCksICp0aGlzKTsKIH0KIAogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6flBsYXliYWNrU2Vz
c2lvbk1hbmFnZXIoKQpAQCAtMTkwLDEzICsxOTAsMTMgQEAgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6flBsYXliYWNrU2Vzc2lvbk1hbmFnZXIoKQogICAgIG1fY2xpZW50Q291bnRzLmNsZWFyKCk7
CiAKICAgICBpZiAobV9wYWdlKQotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUlu
dDY0KCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmludmFsaWRhdGUoKQog
ewogICAgIEFTU0VSVChtX3BhZ2UpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKICAgICBtX3BhZ2UgPSBudWxscHRyOwogfQogCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW0KICAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5h
Z2VyQ29udGV4dElkKTsKIAogICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFu
Z2UoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6U2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRChtX2NvbnRyb2xzTWFuYWdl
ckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyV2l0aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCkBAIC0yOTEs
NyArMjkxLDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKCkKICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CiAKICAg
ICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tD
b250cm9sc01hbmFnZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9s
c01hbmFnZXIoKSk7CiB9CiAKIHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNvbnRl
eHRJZEZvck1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1l
bnQpCkBAIC0zMTgsMjcgKzMxOCwyNyBAQCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1lbgogCiB2b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRp
b24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRp
b24pKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50VGltZUNoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JU
aW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9y
VGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBj
dXJyZW50VGltZSwgYW5jaG9yVGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmJ1ZmZlcmVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVy
ZWRUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpCdWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkJ1ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJl
ZFRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1N0YXJ0
ZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRU
aW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBsYXliYWNrU3Rh
cnRlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQo
Y29udGV4dElkLCBwbGF5YmFja1N0YXJ0ZWRUaW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6cmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWlu
ZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0SWQsIGlzUGxheWlu
ZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJ
ZCwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBX
ZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwg
ZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCkKQEAgLTM0OSwzNyArMzQ5LDM3IEBAIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgY29uc3QgV2ViCiAgICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2VzLnJhbmdlcygp
LmVuZChpKS50b0RvdWJsZSgpOwogICAgICAgICByYW5nZXNWZWN0b3IuYXBwZW5kKHsgc3RhcnQs
IGVuZCB9KTsKICAgICB9Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdU
Rk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFs
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0
SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUlu
dGVydmFsKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2FuUGxheUZhc3RS
ZXZlcnNlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlG
YXN0UmV2ZXJzZUNoYW5nZWQoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpD
YW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpKTsKIH0KIAogdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
dWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9w
dGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQs
IGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRl
eHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVk
SW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpleHRlcm5hbFBsYXli
YWNrQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgUGxheWJhY2tTZXNz
aW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBs
b2NhbGl6ZWREZXZpY2VOYW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQo
Y29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxv
Y2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1By
b3BlcnRpZXNDaGFuZ2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25J
bmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0
aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0
ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENo
YW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNWQ2MTEwYjc5
MDkuLmZkZWNkM2MwMjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMTE3LDcgKzExNyw3IEBAIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoV2ViUGFnZSYgcGFn
ZSwgUGxheWJhY2tTZXNzaW9uTWFuCiAgICAgOiBtX3BhZ2UoJnBhZ2UpCiAgICAgLCBtX3BsYXli
YWNrU2Vzc2lvbk1hbmFnZXIocGxheWJhY2tTZXNzaW9uTWFuYWdlcikKIHsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZS5wYWdlSUQoKSwgKnRoaXMp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlLnBh
Z2VJRCgpLnRvVUludDY0KCksICp0aGlzKTsKIH0KIAogVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
flZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQpAQCAtMTM4LDEzICsxMzgsMTMgQEAgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6flZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKQogICAgIG1fY2xpZW50Q291
bnRzLmNsZWFyKCk7CiAgICAgCiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdl
LT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjppbnZhbGlkYXRlKCkKIHsKICAgICBBU1NFUlQobV9wYWdlKTsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS0+cGFn
ZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlID0gbnVsbHB0cjsKIH0KIApAQCAtMjkwLDcg
KzI5MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3Jl
ZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVuCiAgICAgICAgIGludGVyZmFjZS0+bGF5
ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIodmlkZW9MYXllcik7CiAgICAgfQogCi0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNl
dHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29u
dGV4dCgpLT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSwg
c3RhbmRieSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4
dElkLCBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZpZGVv
UmVjdCwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5N
b2RlKCksIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpKTsKIH0KIAogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCkKQEAgLTMwOCw3ICszMDgsNyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRl
b0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZAogICAgICAgICByZXR1cm47CiAKICAgICBpbnRlcmZh
Y2Uuc2V0SXNBbmltYXRpbmcodHJ1ZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCwgaW5saW5l
VmlkZW9GcmFtZSh2aWRlb0VsZW1lbnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2Ny
ZWVuKGNvbnRleHRJZCwgaW5saW5lVmlkZW9GcmFtZSh2aWRlb0VsZW1lbnQpKSk7CiB9CiAKIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhv
dXRBbmltYXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFyZ2V0TW9k
ZSkKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRW
aWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OgogCiAgICAgaW50
ZXJmYWNlLnNldFRhcmdldElzRnVsbHNjcmVlbihmYWxzZSk7CiAKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW5XaXRo
b3V0QW5pbWF0aW9uVG9Nb2RlKGNvbnRleHRJZCwgdGFyZ2V0TW9kZSksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4dElkLCB0YXJn
ZXRNb2RlKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2aWRlb0VsZW1lbnQpOwogICAgIFVO
VVNFRF9QQVJBTSh0YXJnZXRNb2RlKTsKQEAgLTMzNiwxMyArMzM2LDEzIEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRp
b24oV2ViQ29yZTo6CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Omhhc1ZpZGVvQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pCiB7CiAgICAgaWYgKG1fcGFnZSkK
LSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldEhhc1ZpZGVvKGNvbnRleHRJZCwgaGFzVmlkZW8pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldEhhc1ZpZGVvKGNvbnRleHRJZCwgaGFzVmlkZW8pKTsKIH0KIAogdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7CiAgICAgaWYgKG1fcGFnZSkK
LSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldFZpZGVvRGltZW5zaW9ucyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucyksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGNvbnRleHRJZCwgdmlkZW9EaW1l
bnNpb25zKSk7CiB9CiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eToKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCkKIAogICAg
IGF1dG8mIG1vZGVsID0gZW5zdXJlTW9kZWwoY29udGV4dElkKTsKICAgICBJbnRSZWN0IGlubGlu
ZVJlY3QgPSBpbmxpbmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSk7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldElubGlu
ZVJlY3QoY29udGV4dElkLCBpbmxpbmVSZWN0LCBpbmxpbmVSZWN0ICE9IEludFJlY3QoMCwgMCwg
MCwgMCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SW5saW5lUmVjdChjb250ZXh0SWQsIGlubGlu
ZVJlY3QsIGlubGluZVJlY3QgIT0gSW50UmVjdCgwLCAwLCAwLCAwKSkpOwogfQogCiB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBj
b250ZXh0SWQpCkBAIC0zNzgsNyArMzc4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogICAgIG1vZGVs
LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRM
YXllcihjb250ZXh0SWQsIHRydWUpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCB0cnVlKSk7CiAg
ICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElk
KQogICAgICAgICAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywg
Y29udGV4dElkXSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3Bh
Z2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElk
LCBmYWxzZSksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgZmFsc2UpKTsKICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTQxMyw3ICs0
MTMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhp
cy0+bV9wYWdlKQotICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElk
KSk7CiAgICAgfSk7CiAjZWxzZQogICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2Ut
PmxheWVySG9zdGluZ0NvbnRleHQoKS0+cm9vdExheWVyKCk7CkBAIC00MjEsNyArNDIxLDcgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3Qg
Y29udGV4dElkKQogICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVy
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkg
bXV0YWJsZSB7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4
dElkXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAg
ICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICAgICAg
fSk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OndpbGxFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1lbnQgPSBXVEZNb3ZlKHZpZGVvRWxlbWVudCks
IGNvbnRleHRJZF0gewogICAgICAgICB2aWRlb0VsZW1lbnQtPndpbGxFeGl0RnVsbHNjcmVlbigp
OwogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5t
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1
bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlz
KSwgY29udGV4dElkLCBpbnRlcmZhY2VdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1f
cGFnZSkKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQp
LCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKICNlbHNlCiAgICAgbW9k
ZWwtPndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdICgpIG11dGFibGUgewpAQCAt
NDk4LDcgKzQ5OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxz
Y3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJm
YWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElk
KSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC01NTUsNyArNTU1LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9Jbmxp
bmUodWludDY0X3QgY29udGV4dElkLCBib28KIAogICAgIGlmICghaXNQYWdlVmlzaWJsZSkKICAg
ICAgICAgbW9kZWwudmlkZW9FbGVtZW50KCktPnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGZh
bHNlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6UHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5saW5lVmlk
ZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50KCkpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBh
cmVkVG9SZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1v
ZGVsLnZpZGVvRWxlbWVudCgpKSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RSb3V0ZVNoYXJpbmdQ
b2xpY3lBbmRDb250ZXh0VUlEOjpBc3luY1JlcGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCAyZTE5MGIwMzVm
Ny4uYjljZTc5ZDI3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBOU1VSTCAqb3Jp
Z2luKFdlYlBhZ2UmIHBhZ2UpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBS
ZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPj4mIHBhZ2VNYXApCitzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk8TlNTdHJpbmcgKj4+IGFjdGl2ZVBhZ2VzT3JpZ2lucyhjb25zdCBIYXNoTWFw
PFBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+JiBwYWdlTWFwKQogewogICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlT3JpZ2lucyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKaW5kZXggOTg3MmMzMWJhNTguLjc5NjAyNGM4Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGUK
ICAgICBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShmcmFtZUxvYWRl
ci5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRpYWxzID09IEZl
dGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
RG9Ob3RVc2UgOiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBlcnJvciwgcmVzcG9uc2Us
IGRhdGEpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21w
bGV0ZWQodWludDY0X3QgLyp3ZWJQYWdlSUQqLykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgKaW5kZXggNTViMzY5NzUzMDYuLjVmNjJmNzc3YWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBs
b2FkUmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9w
dGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJj
ZUxvYWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShXZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdl
YkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3Rvcjxj
aGFyPiYpIGZpbmFsOwotICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFn
ZUlEKSBmaW5hbDsKKyAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
KikgZmluYWw7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyJiwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxMzg1NTgz
YWYyOS4uYjE0MDNkMDU2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNjMsNyAr
NjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBmaW5hbDsK
ICAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBmaW5hbDsgLy8gbWFpbmx5IGZvciBhc3NlcnRp
b25zCiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwog
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAgICAgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KaW5kZXggN2Y4NjlmMWRkY2IuLjdlYmEzYTk4YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQpAQCAtMjA5LDcgKzIwOSw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJG
cmFtZUxvYWRlckNsaWVudChXZWJGcmFtZSAqd2ViRnJhbWUpCiB7CiB9CiAKLU9wdGlvbmFsPHVp
bnQ2NF90PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370576</attachid>
            <date>2019-05-24 09:49:26 -0700</date>
            <delta_ts>2019-05-24 14:16:31 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>198206_PageIdentifier_wip.patch</filename>
            <type>text/plain</type>
            <size>611777</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwNy4uYjNiY2FkZDlkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjIsNiArMTIz
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVu
dGlmaWVyPFQ+PiB7CiAgICAgdHlwZWRlZiBPYmplY3RJZGVudGlmaWVySGFzaDxUPiBIYXNoOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VD4mIGlkZW50aWZpZXIpCit7CisgICAg
dHMgPDwgaWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNmExZjVm
MWQ3MS4uYjZhOGY4OWFiODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTcsNiArMTIxNyw3IEBACiAJCTQ2ODJEMjAwMUY3
OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RC
IC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJl
Y3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkx
NEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZFOENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJn
ZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2Mjcw
MEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk1MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFj
dERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEEyMDdENjMyODAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTYyMDdE
NjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThGMjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFj
dEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZCOTUxOTcyMDdENjM0MDAwQTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3
RDYzMkMwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1OTksNiArNzYwMCw3IEBACiAJ
CTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
T01SZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4
Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJh
Y3RET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RE
T01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEMyMDdENjMy
OTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAxOTcsNiArMjAxOTksNyBAQAogCQkJCTkzMDJCMEJF
MEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcCAqLywKIAkJCQk3QTY3NEJEQTBG
OUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggKi8sCisJCQkJNDZCNjUw
REIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8sCiAJCQkJMkQ1QzlDRkIx
OUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5LmNwcCAqLywKIAkJCQkyRDVDOUNGQzE5QzdC
NTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCAqLywKIAkJCQkyRDVDOUNGRDE5QzdCNTJFMDBC
M0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCAqLywKQEAgLTI5ODcxLDYgKzI5ODc0
LDcgQEAKIAkJCQlCQzMwNUM3QTBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4NUIxRUIwQTFCMjQwNTAwRDhDODdDIC8qIEpTSFRN
TE9MaXN0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTdFOUIwQTFBODNFMzAwN0ZC
OEM1IC8qIEpTSFRNTE9wdEdyb3VwRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDZCNjUw
REQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBODBFN0U5OTBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MT3B0aW9uRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDQ4QTI5QkYwQTQ2RDlDQjAwMzA3NTlGIC8qIEpTSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QUQwMTczRDEyN0U4Mjg2MDAxNTAzNUYg
LyogSlNIVE1MT3V0cHV0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJl
ZS5jcHAKaW5kZXggNzY5MTJjYWViOGEuLjBlN2Q1NDIwNWM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29sYXRlZFRyZWUoKSk7
CiB9CiAKLVJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRpYWxpemVQYWdl
VHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYgY2FjaGUpCitSZWY8QVhJ
c29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjppbml0aWFsaXplUGFnZVRyZWVGb3JJRChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmIGNhY2hlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIHRyZWUgPSBjYWNoZS0+Z2VuZXJhdGVJ
c29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIFJlZlB0cjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEIHRy
ZWVJRCkKICAgICByZXR1cm4gdHJlZUlEQ2FjaGUoKS5nZXQodHJlZUlEKTsKIH0KIAotUmVmPEFY
SXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRf
dCBwYWdlSUQpCitSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tl
cihzX2NhY2hlTG9jayk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBB
WElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpCiAgICAg
cmV0dXJuIG5ld1RyZWU7CiB9CiAKLVJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OnRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKQorUmVmUHRyPEFYSXNvbGF0ZWRUcmVl
PiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoc19jYWNoZUxvY2spOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aAppbmRleCBjMDc1ZDViMDE2Ny4uNmVlYzI2NDUxOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaApA
QCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NFU1NJQklMSVRZX0lTT0xBVEVEX1RSRUUp
CiAKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZU5vZGUuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgpAQCAtNDMsOSArNDQsOSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlKCk7CiAgICAg
dmlydHVhbCB+QVhJc29sYXRlZFRyZWUoKTsKIAotICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRy
ZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRyZWVGb3JJRCh1
aW50NjRfdCBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBhZ2VJRChQYWdl
SWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJl
ZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlkZW50aWZpZXIsIEFYT2JqZWN0Q2FjaGUm
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJc29sYXRlZFRyZWVJRCk7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZFRyZWVOb2RlPiByb290Tm9kZSgpOwpAQCAt
NzAsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEFYSXNvbGF0ZWRUcmVlKCk7CiAKICAgICBzdGF0
aWMgSGFzaE1hcDxBWElzb2xhdGVkVHJlZUlELCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZUlE
Q2FjaGUoKTsKLSAgICBzdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgUmVmPEFYSXNvbGF0ZWRUcmVl
Pj4mIHRyZWVQYWdlQ2FjaGUoKTsKKyAgICBzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwg
UmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKTsKIAogICAgIC8vIE9ubHkgYWNj
ZXNzIG9uIEFYIHRocmVhZCByZXF1ZXN0aW5nIGRhdGEuCiAgICAgSGFzaE1hcDxBWElELCBSZWY8
QVhJc29sYXRlZFRyZWVOb2RlPj4gbV9yZWFkZXJUaHJlYWROb2RlTWFwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKaW5kZXggZTcwYTlmN2ZlNTUuLmQzNTQxNjczZWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKQEAgLTc3NjYsNyArNzc2Niw3IEBAIExvZ2dlciYgRG9jdW1lbnQ6OmxvZ2dlcigp
CiAgICAgcmV0dXJuICptX2xvZ2dlcjsKIH0KICAgICAKLU9wdGlvbmFsPHVpbnQ2NF90PiBEb2N1
bWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBEb2N1bWVudDo6
cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGMwNzY1NTY1MDZhLi5hMjQ4MWRm
OGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJN
ZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUg
Ik9yaWVudGF0aW9uTm90aWZpZXIuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgogI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgpAQCAtNjM1LDcgKzYzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JF
X0VYUE9SVCBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICAgdm9pZCBj
bGVhckFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBj
b25zdDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7CiAgICAg
Ly8gdG8gZ2V0IHZpc3VhbGx5IG9yZGVyZWQgaGVicmV3IGFuZCBhcmFiaWMgcGFnZXMgcmlnaHQK
ICAgICB2b2lkIHNldFZpc3VhbGx5T3JkZXJlZCgpOwogICAgIGJvb2wgdmlzdWFsbHlPcmRlcmVk
KCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxseU9yZGVyZWQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5jcHAKaW5kZXggYjFiZWQ4ZjAzMmYuLjMzZTI3ODYzODM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ29va2llSmFyLmNwcApAQCAtNzIsNyArNzIsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpj
b29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgYXV0
byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IHNob3VsZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3Vt
ZW50LCB1cmwpOwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJh
bWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJ
RCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTExMCw3ICsxMTAsNyBA
QCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvYwogdm9pZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAg
IGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZy
YW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29s
IENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgRG9jdW1lbnQmKSBjb25zdAogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vz
c2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4g
Q29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Np
b25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VT
ZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9uKCkpIHsKICAgICAgICAgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1CiBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1
bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50
KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAgU3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHUKIGJv
b2wgQ29va2llSmFyOjpnZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBjb29raWVzKSBjb25zdAogewogICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7Cisg
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUg
PSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkucGFnZUlEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKaW5kZXggMGRiMDdjNmQx
MmUuLjI4MWY4NGM0OTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2ll
SmFyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCkBAIC0yNSw2ICsy
NSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CkBAIC01OCw3ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llcyhE
b2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKIAogICAg
IHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0OwotICAg
IHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tp
ZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNz
aW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxDb29raWU+JikgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBEb2N1bWVudCYsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDRmMGJiODZkZGQ1Li4xZjdhMjlj
NGIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVu
dC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZnJhbWVMb2Fk
ZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9w
dDsgfQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQo
KSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVjMzkxMjdhMWFkLi4wNzQ4NzYxMThkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWls
ZXN0b25lLmgiCiAjaW5jbHVkZSAiTGlua0ljb24uaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmll
ci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAgLTEyNiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikgPSAwOwog
Ci0gICAgdmlydHVhbCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgPSAwOwogICAgIHZp
cnR1YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmluZGV4IDhhODIzODFmMDE4Li40NWZlYjYzNWY3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmgKQEAgLTI2LDYgKzI2LDcgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmV0Y2hPcHRpb25zLmgiCisjaW5jbHVkZSAiUGFn
ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1
ZGUgIlJlc291cmNlTG9hZGVyT3B0aW9ucy5oIgogI2luY2x1ZGUgIlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LmgiCkBAIC01Nyw3ICs1OCw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIExvYWRlclN0
cmF0ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlKEZyYW1lJiwg
Q2FjaGVkUmVzb3VyY2UmLCBSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgUmVzb3VyY2VMb2FkZXJP
cHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+
JiYpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
RnJhbWVMb2FkZXImLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYsIENsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IEZldGNoT3B0aW9ucyYsIGNvbnN0
IEhUVFBIZWFkZXJNYXAmLCBSZXNvdXJjZUVycm9yJiwgUmVzb3VyY2VSZXNwb25zZSYsIFZlY3Rv
cjxjaGFyPiYgZGF0YSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1
aW50NjRfdCB3ZWJQYWdlSUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFnZUxvYWRDb21wbGV0
ZWQoUGFnZUlkZW50aWZpZXIpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoUmVzb3Vy
Y2VMb2FkZXIqKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldERlZmVyc0xvYWRpbmcoUmVzb3Vy
Y2VMb2FkZXImLCBib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvbkFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFj
dGlvbi5jcHAKaW5kZXggNzc0NTAwMWU3OGEuLmYyNmE5YWFmMmZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIE5hdmlnYXRpb25BY3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVzdGVyKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fdXJsIHsgVVJMIHsgZG9jdW1lbnQudXJsKCkg
fSB9CiAgICAgLCBtX29yaWdpbiB7IG1ha2VSZWZQdHIoZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4o
KSkgfQotICAgICwgbV9wYWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBz
dGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQo
KS52YWx1ZU9yKDApLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlE
KCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjx1aW50NjRfdCwgdWludDY0X3Q+KDAsIDAp
IH0KKyAgICAsIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIgeyBkb2N1bWVudC5mcmFtZSgpID8gc3Rk
OjptYWtlX3BhaXIoZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCku
dmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5j
bGllbnQoKS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjxQYWdlSWRlbnRp
ZmllciwgdWludDY0X3Q+KHsgfSwgMCkgfQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05h
dmlnYXRpb25BY3Rpb24uaAppbmRleCAxYTQ0ZjkxZDM2OC4uZWQ3ZDA5Y2YyODkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UG9pbnQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRp
Zmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNlckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTYzLDE0ICs2
NCwxNCBAQCBwdWJsaWM6CiAgICAgTmF2aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYp
OwogICAgIE5hdmlnYXRpb25BY3Rpb24mIG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwog
Ci0gICAgdXNpbmcgUGFnZUlEQW5kRnJhbWVJRFBhaXIgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyog
cGFnZUlEICovLCB1aW50NjRfdCAvKiBmcmFtZUlEICovPjsKKyAgICB1c2luZyBQYWdlSURBbmRG
cmFtZUlEUGFpciA9IHN0ZDo6cGFpcjxQYWdlSWRlbnRpZmllciwgdWludDY0X3QgLyogZnJhbWVJ
RCAqLz47CiAgICAgY2xhc3MgUmVxdWVzdGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlcXVl
c3Rlcihjb25zdCBEb2N1bWVudCYpOwogCiAgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Qg
eyByZXR1cm4gbV91cmw7IH0KICAgICAgICAgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5
T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gKm1fb3JpZ2luOyB9Ci0gICAgICAgIHVpbnQ2NF90IHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KKyAg
ICAgICAgUGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRG
cmFtZUlEUGFpci5maXJzdDsgfQogICAgICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5zZWNvbmQ7IH0KICAgICBwcml2YXRlOgogICAg
ICAgICBVUkwgbV91cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmNwcAppbmRleCAxNGJjMmYzYmVlZi4uZmZhZGExYzQ1YmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcApAQCAtNjAsNyArNjAsNyBA
QCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRTdGF0aXN0aWNzVXBkYXRlZENhbGxiYWNr
KFdURjo6RnVuY3Rpb248dm9pZChWZWN0bwogICAgIG1fbm90aWZpY2F0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKG5vdGlmaWNhdGlvbkNhbGxiYWNrKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFdURjo6RnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbik+JiYgY2FsbGJhY2spCit2b2lk
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
Q2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlk
ZW50aWZpZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9t
YWluKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoIW1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKTsKICAgICBtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXJDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpAQCAtMjM0LDcgKzIzNCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OmxvZ1VzZXJJbnRlcmFjdGlvbldpdGhSZWR1Y2VkVGltZVJl
c29sdXRpb24oY29uc3QgRG9jCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQotdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9j
dW1lbnQmIG9wZW5lckRvY3VtZW50KQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVu
dGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KQogewogICAgIGF1
dG8gb3BlbmVyVXJsID0gb3BlbmVyRG9jdW1lbnQudXJsKCk7CiAgICAgUmVnaXN0cmFibGVEb21h
aW4gb3BlbmVyRG9tYWluIHsgb3BlbmVyVXJsIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5oCmluZGV4IGM0NjYxYjA0NzYwLi5kZTFjOTRhNzJjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzQWN0aXZpdHlSZWNvcmQu
aCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0
YXRpc3RpY3MuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3Rh
dGlzdGljc0ZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291
cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVpbnQ2NF90LCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFBhZ2VJZGVudGlmaWVyLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldExvZ1VzZXJJ
bnRlcmFjdGlvbk5vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0TG9nV2ViU29ja2V0TG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZv
aWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mLCBXYWxsVGltZSk+JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
TG9nU3VicmVzb3VyY2VMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIFdhbGxUaW1lKT4mJik7CkBAIC05NCwxMyArOTUsMTMgQEAgcHJpdmF0ZToKICAg
ICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3RpY3MoKTsKIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIERv
Y3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERvY3Vt
ZW50JiBvcGVuZXJEb2N1bWVudCk7CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVE
b21haW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwOwog
ICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdURjo6V2FsbFRpbWU+IG1fbGFzdFJlcG9y
dGVkVXNlckludGVyYWN0aW9uTWFwOwogICAgIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYpPiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwotICAgIEZ1bmN0aW9u
PHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdWludDY0X3Qs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
Jik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrOwogICAgIEZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fbG9n
VXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dXZWJTb2NrZXRMb2FkaW5nTm90aWZpY2F0aW9uQ2Fs
bGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dTdWJy
ZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCmluZGV4IGYzNTM5MGM4YzNhLi41MmIyZTk0YjdlZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0No
cm9tZUNsaWVudC5oCkBAIC00ODYsOCArNDg2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVm
UHRyPEljb24+IGNyZWF0ZUljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmls
ZW5hbWVzICovKSA9IDA7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypz
dWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywg
dWludDY0X3QgLypmcmFtZUlEKi8sIHVpbnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVn
aXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYg
Lyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0X3QgLypwYWdl
SUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNv
bXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duOjpObyk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21h
aW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRp
ZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywg
UmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJ
RCovLCBQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpO
bywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7IH0KICNlbmRpZgogCiAjaWYgRU5B
QkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2xvYmFsRnJhbWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1l
SWRlbnRpZmllci5oCmluZGV4IDE1NmM5Y2QyMDVkLi4wZDdiM2RiZjcyZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCkBAIC0yNSwxMyArMjUsMTQgQEAK
IAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUg
PHd0Zi9PcHRpb25hbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIEZyYW1lIGlkZW50
aWZpZXIgdGhhdCBpcyB1bmlxdWUgYWNyb3NzIGFsbCBXZWJDb250ZW50IHByb2Nlc3Nlcy4KIHN0
cnVjdCBHbG9iYWxGcmFtZUlkZW50aWZpZXIgewotICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICBQ
YWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgdWludDY0X3QgZnJhbWVJRDsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTQ3LDcg
KzQ4LDcgQEAgdm9pZCBHbG9iYWxGcmFtZUlkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KIE9wdGlvbmFsPEdsb2JhbEZyYW1l
SWRlbnRpZmllcj4gR2xvYmFsRnJhbWVJZGVudGlmaWVyOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKIHsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgZGVjb2RlciA+PiBwYWdlSUQ7CiAgICAgaWYgKCFwYWdl
SUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVu
dGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ0ZDVmOGQy
OTc1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRpZmll
ci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworZW51
bSBQYWdlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGFnZUlkZW50aWZpZXIgPSBPYmplY3RJ
ZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkuaAppbmRleCAxMTU5MDUwY2QzMi4uYjNkNmUzOGJjYWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJT
YW1lU2l0ZUluZm8uaCIKICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3Rm
L1VSTC5oPgpAQCAtMzgsNyArMzksNyBAQCBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxk
UHJveHkgewogICAgIFNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm87CiAgICAgVVJMIHVybDsKICAg
ICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMgeyBJbmNsdWRlU2VjdXJlQ29va2llczo6
Tm8gfTsKIAogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKQEAgLTcxLDggKzcyLDExIEBAIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5PiBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eTo6ZGVjb2RlKERlCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
ZnJhbWVJRCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQucGFnZUlEKSkKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEOworICAgIGRlY29kZXIgPj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQogICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJlc3VsdC5wYWdlSUQgPSAqcGFnZUlEOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluY2x1ZGVTZWN1cmVDb29raWVzKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CmluZGV4IDNiMThlNjJmZTM5Li42M2RmMDU4OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAt
NjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0K
ICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29v
a2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlEKSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3Jh
bnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7
CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7
CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAg
ICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChw
YWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vz
cy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAg
IGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1lSUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdl
U3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwog
ICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21h
aW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhm
cm9tRG9tYWluKSkKICAgICAgICAgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJl
dmFsZW50UmVzb3VyY2UuYWRkKHBhZ2VJRCwgdG9Eb21haW4pOwpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZygpCiAgICAgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9u
VGVzdE1vZGUgPSB0cnVlOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHksIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0CitPcHRpb25hbDxTZWNvbmRz
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdl
SUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2Uu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDAzMDIwMGRmOWM0Li4zZjM5YzhhY2Q4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRp
YWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdp
c3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNp
ZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9t
YWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4g
bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1aW50
NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFzaDx1
aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0
X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVsdEhh
c2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmlnYXRl
ZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dp
dGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRp
b25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDYzNzQwMzUyYzRhLi41NTdlOTc3YjRk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0yOTQsNyArMjk0
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkgKnVu
ZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1cm4gZmlsdGVyZWRDb29raWVz
OwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkKK3N0YXRpYyBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYg
KHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFn
ZUlEKSkKQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZgogfQogCiBl
bnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVI
VFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJ
bmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQogewogICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
KTsKIApAQCAtMzYzLDEyICszNjMsMTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENvb2tp
ZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENvb2tp
ZVN0b3JhZ2VEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
K3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
ckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywg
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNs
dWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29r
aWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcyk7
CiB9CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KICAgICByZXR1
cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwg
aGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFk
ZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRU
UE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIApAQCAtNDQzLDcgKzQ0Myw3IEBAIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFy
KCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4IDJj
MTE1NjhmY2U1Li5kNjBkNzBhODM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtNTksNyArNTksNyBAQCBz
dGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3RyaW5nKCk7CiB9
CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQg
Q29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBV
TlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC03NCw3
ICs3NCw3IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2Uo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzCiAgICAgY29va2llSmFyREIuc2V0Q29v
a2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmsp
OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVzRm9y
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29v
a2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7
CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1l
SUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMTEzLDcgKzExMyw3IEBAIGJvb2wg
Q29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuaXNF
bmFibGVkKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBj
b25zdAorYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdv
cmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDFmNzU4NzdhODJiLi5m
NjY0MWVmZWI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcApAQCAtMjkx
LDcgKzI5MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBodHRwT25seUNvb2tpZUV4aXN0cyhjb25z
dCBHU0xpc3QqIGNvb2tpZXMsIGNvbnN0IGdjaGFyKiBuYW1lCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtNDQ0LDcg
KzQ0NCw3IEBAIFZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2ll
cyhjb25zdCBVUkwmIHVybCkKICAgICByZXR1cm4gY29va2llczsKIH0KIAotYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShm
aXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01MTQsNyArNTE0LDcg
QEAgc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2UKICAgICByZXR1cm4geyBTdHJpbmc6OmZyb21VVEY4
KGNvb2tpZUhlYWRlci5nZXQoKSksIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7
CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKQEAgLTUyMiw3ICs1MjIsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcgogICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgdXJsLCBmYWxzZSwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNs
dWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNF
RF9QQVJBTShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRl
eCA4NzljMGIxOWU5Ni4uYjY4OWMzZTI1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtNzE2LDcgKzcxNiw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnN5bmNTdG9yYWdlSW1tZWRp
YXRlbHkoKQogICAgIG1fZGF0YWJhc2UucnVuVmFjdXVtQ29tbWFuZCgpOwogfQogCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25z
dCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03NDMsNyArNzQzLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
RnJhbWVJRCBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
RnJhbWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTc5NSw3ICs3OTUsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBPcGVuZXJQ
YWdlSUQgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBv
cGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAh
PSBvcGVuZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtODE0
LDcgKzgxNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluCiAgICAgZ3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3Zl
KG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYg
dG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTgyOCw3ICs4MjgsNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiBzdQogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUo
c3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlE
LCBwcm9tcHRXYXNTaG93biwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJ
bnRlcm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlE
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFp
biwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24g
cHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IGJhYjJiN2FlYWI3Li5iZmMyMzM5Njg1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgK
QEAgLTY0LDcgKzY0LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJE
b21haW4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMo
Y29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTEsOSAr
OTEsOSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYs
IEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3Rh
dHVzKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVz
KT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVk
aXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVy
YWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7CkBAIC0xNTIsNyArMTUyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgUmVzb3VyY2VMb2FkUHJldmFsZW5jZSk7CiAgICAgdW5zaWduZWQgcmVjdXJz
aXZlbHlGaW5kTm9uUHJldmFsZW50RG9tYWluc1RoYXRSZWRpcmVjdGVkVG9UaGlzRG9tYWluKHVu
c2lnbmVkIHByaW1hcnlEb21haW5JRCwgU3RkU2V0PHVuc2lnbmVkPiYgbm9uUHJldmFsZW50UmVk
aXJlY3Rpb25Tb3VyY2VzLCB1bnNpZ25lZCBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKTsKICAgICB2
b2lkIHNldERvbWFpbnNBc1ByZXZhbGVudChTdGRTZXQ8dW5zaWduZWQ+JiYpOwotICAgIHZvaWQg
Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCk+JiYpOwogICAgIHZvaWQgbWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxl
bnQoKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+IGVuc3VyZVByZXZhbGVudFJlc291
cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlRGF0YVJlY29yZHMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggMGVlN2Y5NjM4OTQuLmE1ZjI2MjRl
NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAgICAgICAgbV9wZXJzaXN0ZW50
U3RvcmFnZS0+c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpZZXMpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25z
dCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIyNCw3ICsyMjQsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgcwogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgRnJh
bWVJRCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Rv
cmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgRnJh
bWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9wZW5lclBhZ2VJ
RCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBvcGVuZXJE
b21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAhPSBvcGVu
ZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjg3LDcgKzI4
Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50
ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3ZlKG9wZW5l
ckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9t
YWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4m
JiBzdWJGCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZURv
bWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdh
c1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJG
cmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9t
YWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9t
YWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
Tm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9y
ZS5oCmluZGV4IDQ0ZWZiZjRkZWMxLi40NWY3ZTFiNzU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtNzAsNyArNzAsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
eW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5l
clBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
Z3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWlu
PiYpIG92ZXJyaWRlOwogCkBAIC05Nyw5ICs5Nyw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2Fs
Y3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdy
YW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFt
ZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92
ZXJyaWRlOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9t
YWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25z
dCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdh
dGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBv
dmVycmlkZTsKQEAgLTEyMyw3ICsxMjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5jcmVtZW50
UmVjb3Jkc0RlbGV0ZWRDb3VudEZvckRvbWFpbnMoSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4m
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJiwgUmVzb3VyY2VMb2FkUHJldmFsZW5jZSk7CiAgICAgdW5zaWduZWQgcmVjdXJz
aXZlbHlHZXRBbGxEb21haW5zVGhhdEhhdmVSZWRpcmVjdGVkVG9UaGlzRG9tYWluKGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmLCBIYXNoU2V0PFJlZGlyZWN0ZWRUb0RvbWFpbj4mLCB1bnNp
Z25lZCBudW1iZXJPZlJlY3Vyc2l2ZUNhbGxzKSBjb25zdDsKLSAgICB2b2lkIGdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlv
bmFsPEZyYW1lSUQ+LCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAg
ICB2b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3RlZFRvUHJldmFsZW50KFJlc291cmNl
TG9hZFN0YXRpc3RpY3MmKTsKICAgICBib29sIGlzUHJldmFsZW50RHVlVG9EZWJ1Z01vZGUoUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5z
dXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggMGI1Nzc1YmJiNzcuLmQ3Nzk4YjI1
ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC05MCw4
ICs5MCw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVp
bnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQg
PSB1aW50NjRfdDsKICAgICAKICAgICB2aXJ0dWFsIH5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUoKTsKQEAgLTExMCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNT
dG9yYWdlSWZOZWVkZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNTdG9yYWdlSW1tZWRp
YXRlbHkoKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgT3BlbmVyUGFnZUlELCBPcGVu
ZXJEb21haW4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpID0gMDsKICAgICB2b2lkIHJlbW92ZUFs
bFN0b3JhZ2VBY2Nlc3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQg
Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CkBAIC0xNjEsOSArMTU5LDkgQEAgcHVibGljOgogICAgIGJvb2wgaXNEZWJ1Z01vZGVFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9OwogICAgIHZvaWQgc2V0
UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsK
IAotICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1l
SUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4m
JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3Rh
dHVzKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKIAog
ICAgIHZpcnR1YWwgdm9pZCBsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21h
aW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBi
b29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9tYWluJikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA4NzFiMTlkMmYw
Ny4uNjIyNDMwY2Q4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3IK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoc3ViRnJhbWVEb21h
aW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CkBA
IC0yOTgsMTIgKzI5OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcwogICAgIH0pOwogfQog
Ci1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCkKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBtX25ldHdvcmtTZXNz
aW9uID8gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkuaGFzU3RvcmFn
ZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlE
KSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2Fs
bEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMxNSw3ICszMTUsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NG
b3JGcmFtZUhhbmRsZXIoY29uc3QgUgogICAgIGNhbGxiYWNrKGZhbHNlKTsKIH0KIAotdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoc3ViRnJhbWVE
b21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpO
byk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWkKICAgICB9KTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVEb21haW4mJiBvcGVu
ZXJEb21haW4pCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBSZWdpc3RyYWJsZURv
bWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGUKICAgICB9KTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHBv
c3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29weSgpLCBmcmFt
ZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mCiAgICAgfSk7CiB9CiAKLVN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVz
b3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAg
IGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00MDksNyArNDA5LDcgQEAgU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFu
dFN0b3JhZ2VBY2Nlc3MoY29uc3QKICAgICByZXR1cm4gaXNTdG9yYWdlR3JhbnRlZCA/IFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm87CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsR3JhbnRTdG9yYWdl
QWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRl
eCA4NzU5ZDYwMTY2YS4uNzljZjI0NjAxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYnNp
dGVEYXRhVHlwZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTgyLDggKzgzLDYgQEAg
cHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0g
ICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90
OwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkID0gV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQ7CiAgICAgdXNpbmcgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duID0g
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOwpAQCAtMTA0LDcgKzEwMyw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJl
Y29yZHNSZW1vdmFsKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCk7CiAKLSAgICB2b2lkIGdyYW50U3RvcmFn
ZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJh
bWVJRCwgUGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bik+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYm
KTsKIAogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsVGVybWluYXRlKCk7CiAKQEAgLTExOCwxMSAr
MTE3LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyVXNlckludGVyYWN0aW9uKGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRl
bGV0ZVdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0
YVR5cGU+LCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBXZWJzaXRlRGF0YVRvUmVtb3ZlPiYm
LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CiAgICAgdm9pZCByZWdpc3RyYWJsZURvbWFp
bnNXaXRoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wgc2hvdWxk
Tm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYmKT4mJik7Ci0gICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgZ3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgUGFnZUlEKTsKKyAgICBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBncmFudFN0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBo
YXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3Qg
U3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+
LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIGJvb2wgaGFz
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQs
IFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwg
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIGJvb2wgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJG
cmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogICAgIHZvaWQgc2V0TGFzdFNl
ZW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VmVy
eVByZXZhbGVudFJlc291cmNlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTE2NiwxMSArMTY1LDExIEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIHZvaWQgbG9nVGVzdGluZ0V2
ZW50KGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgY2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRs
ZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFs
PEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNv
bnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFt
ZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIHJlbW92ZUFsbFN0b3JhZ2VBY2Nl
c3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGNhbGxVcGRhdGVQcmV2
YWxlbnREb21haW5zVG9CbG9ja0Nvb2tpZXNGb3JIYW5kbGVyKGNvbnN0IFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2Fs
bFJlbW92ZURvbWFpbnNIYW5kbGVyKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsK
LSAgICB2b2lkIGNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgY2FsbEhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29ya1Byb2Nlc3MoKTsK
IApAQCAtMTgyLDcgKzE4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0
aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVu
c2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWdu
ZWQgdG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMpIGNvbnN0OwogCiAgICAgdm9pZCBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGlj
cz4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbklu
TmVlZE9mU3RvcmFnZUFjY2VzcyYmLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFp
biYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBP
cGVuZXJEb21haW4mJik7CiAKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiwgU2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAppbmRleCAyYzk3MTgzNmFkYS4uNGQz
ZDE2OWY2YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaApAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6
CiAgICAgICAgIFN0cmluZyByZWZlcnJlcjsKICAgICAgICAgU3RyaW5nIHVzZXJBZ2VudDsKICAg
ICAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEOwotICAgICAgICB1aW50NjRfdCBwYWdlSUQ7
CisgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgdWludDY0
X3QgZnJhbWVJRDsKICAgICAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAK
aW5kZXggM2Q3MWY4ZjZiMWIuLjkyYzhiN2FlNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIKICAgICBBU1NF
UlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVudGlmaWVyKSk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBhZ2VMb2FkQ29tcGxldGVkKHVp
bnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBh
Z2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKIHsKICAgICBzdG9wQWxs
TmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHdlYlBhZ2VJRCk7CiB9CkBAIC01MTIsNyAr
NTEyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2kKICAgICBsb2FkZXItPmNvbnZlcnRUb0Rv
d25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBz
ZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywg
Ym9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9j
ZXNzKCksIHNlc3Npb25JRCk7CiAgICAgYXV0byByZXN1bHQgPSBuZXR3b3JrU3RvcmFnZVNlc3Np
b24uY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnMKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5m
aXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAg
ICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24obmV0d29ya1By
b2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2V0Q29va2ll
c0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwg
Y29va2llU3RyaW5nKTsKQEAgLTU0MiwxMyArNTQyLDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3Mo
KSwgc2Vzc2lvbklEKS5jb29raWVzRW5hYmxlZCgpKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNz
KCksIHNlc3Npb25JRCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwg
c2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
OwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNl
Y29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nv
b2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHJlc3VsdDsKICAgICBzdG9yYWdlU2Vz
c2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmdldFJhd0Nvb2tpZXMoZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0KTsKQEAgLTYzOCwx
MyArNjM4LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmVuc3VyZUxl
Z2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92
ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAo
YXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNl
c3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVTdG9yYWdlQWNjZXNzRm9y
RnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5z
dG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+Y2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdlSUQpOwpAQCAtNjk3
LDcgKzY5Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlCiAgICAgfQogfQogCi12b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvIG5l
dHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQp
KSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nl
c3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAtNzA5LDcgKzcwOSw3IEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjCiAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3Vi
RnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJvY2Vz
cygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKSB7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICBj
b21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzLCBX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIGlmIChhdXRvIG5ldHdv
cmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7
CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Np
b24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKQEAgLTc0NSw3ICs3NDUsNyBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMo
KQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0K
IAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0X3QgcGFnZUlELCBSZXNv
dXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0
IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCitPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jlc291cmNl
TG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3Vy
Y2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCkKIHsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCkKICAgICBtX25ldHdv
cmtBY3Rpdml0eVRyYWNrZXJzLmNsZWFyKCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0ZvclBhZ2UodWludDY0
X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5l
dHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAg
ICAgZm9yIChhdXRvJiBhY3Rpdml0eVRyYWNrZXIgOiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJz
KSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVRyYWNrZXIucGFnZUlEID09IHBhZ2VJRCkKQEAgLTgy
Niw3ICs4MjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxs
TmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NAogICAgIH0pOwogfQogCi1zaXpl
X3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290TmV0d29ya0FjdGl2aXR5
KHVpbnQ2NF90IHBhZ2VJRCkKK3NpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJl
dHVybiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmZpbmRNYXRjaGluZyhbJl0oY29uc3QgYXV0
byYgaXRlbSkgewogICAgICAgICByZXR1cm4gaXRlbS5pc1Jvb3RBY3Rpdml0eSAmJiBpdGVtLnBh
Z2VJRCA9PSBwYWdlSUQ7CkBAIC05MDMsMTcgKzkwMywxNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRzKCkKICAgICBtX25ldHdv
cmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUG9vbDo6Q2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dlYlByb2Nlc3NJZGVudGlm
aWVyKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBh
Z2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2Vi
UGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7CiAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBw
YWdlSUQsIG9sZFBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc1Jl
bW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc1JlbW92ZWQobV9jb25uZWN0aW9uLmdl
dCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNz
aW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VzKQordm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklE
IG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZXMpCiB7CiAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKG1fY29ubmVjdGlv
bi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgK
aW5kZXggY2JjN2JiZmU4ZjUuLjA2ZDU3OTY4ODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZE1hcC5oIgog
I2luY2x1ZGUgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JrTG9hZEluZm9ybWF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KQEAgLTEzMyw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbmV0d29ya0xvYWRJbmZv
cm1hdGlvbkJ5SUQucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIE9wdGlvbmFsPE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0X3Qg
cGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVz
b3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7CisgICAgT3B0aW9uYWw8TmV0d29ya0FjdGl2
aXR5VHJhY2tlcj4gc3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29sIGlzTWFpblJlc291
cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwogICAgIHZvaWQgc3RvcFRyYWNraW5nUmVzb3Vy
Y2VMb2FkKFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgTmV0d29ya0FjdGl2aXR5
VHJhY2tlcjo6Q29tcGxldGlvbkNvZGUpOwogCiAgICAgV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1w
bCYgYmxvYlJlZ2lzdHJ5KCk7CkBAIC0xNDQsOSArMTQ1LDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q29ubmVjdGlvbkhhc1VwbG9hZHMoKTsKICAgICB2b2lkIGNsZWFyQ29ubmVjdGlvbkhhc1Vw
bG9hZHMoKTsKIAotICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCk7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVt
b3ZlZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHdlYlByb2Nl
c3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIHBhZ2VzKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9s
ZFBhZ2VJRCk7CisgICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2Vk
KFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiYgcGFnZXMpOwogCiBwcml2YXRlOgogICAgIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKE5ldHdvcmtQcm9jZXNzJiwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyKTsK
QEAgLTE3MCwxNiArMTcxLDE2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwcmVjb25uZWN0VG8odWlu
dDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzJiYpOwogCiAgICAgdm9pZCByZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyKTsKLSAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCk7
CisgICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCBjcm9zc09yaWdpblJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgY29uc3QgVVJMJiByZWRpcmVjdFVSTCk7CiAgICAgdm9pZCBzdGFydERvd25sb2FkKFBBTDo6
U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSB7IH0pOwogICAgIHZvaWQgY29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwogCi0gICAgdm9pZCBjb29r
aWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgY29va2llc0ZvckRP
TShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBjb29r
aWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7Ci0gICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYm
KTsKLSAgICB2b2lkIGdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYpOworICAgIHZvaWQg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAg
ICB2b2lkIGdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CiAgICAgdm9p
ZCBkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
Y29va2llTmFtZSk7CiAKICAgICB2b2lkIHJlZ2lzdGVyRmlsZUJsb2JVUkwoY29uc3QgVVJMJiwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiwgY29uc3QgU3Ry
aW5nJiBjb250ZW50VHlwZSk7CkBAIC0yMTgsMTcgKzIxOSwxNyBAQCBwcml2YXRlOgogICAgIENh
Y2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb24mIGNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKTsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCByZW1vdmVTdG9y
YWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCk7Ci0gICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQg
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBjbGVhclBhZ2VTcGVjaWZp
Y0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICB2b2lkIGxvZ1dlYlNvY2tldExv
YWRpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFz
dFNlZW4pOwogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1
YnJlc291cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4pOwog
ICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CisgICAgdm9pZCBoYXNTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0
X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7
CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklE
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbik7CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkT3JpZ2lu
QWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3Qs
IGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtMjM5LDI5ICsyNDAsMjkgQEAg
cHJpdmF0ZToKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKCkgPSBkZWZh
dWx0OwogICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoY29uc3QgUmVzb3Vy
Y2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyJikgPSBkZWZhdWx0OwogICAgICAgICBSZXNvdXJjZU5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIoUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyJiYpID0g
ZGVmYXVsdDsKLSAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKHVpbnQ2NF90
IHBhZ2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKICAgICAgICAgICAgIDogcGFnZUlEIHsgcGFnZUlEIH0K
ICAgICAgICAgICAgICwgaXNSb290QWN0aXZpdHkgeyB0cnVlIH0KICAgICAgICAgICAgICwgbmV0
d29ya0FjdGl2aXR5IHsgTmV0d29ya0FjdGl2aXR5VHJhY2tlcjo6TGFiZWw6OkxvYWRQYWdlIH0K
ICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlU
cmFja2VyKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlE
KQorICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpCiAgICAg
ICAgICAgICA6IHBhZ2VJRCB7IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIHJlc291cmNlSUQgeyBy
ZXNvdXJjZUlEIH0KICAgICAgICAgICAgICwgbmV0d29ya0FjdGl2aXR5IHsgTmV0d29ya0FjdGl2
aXR5VHJhY2tlcjo6TGFiZWw6OkxvYWRSZXNvdXJjZSB9CiAgICAgICAgIHsKICAgICAgICAgfQog
Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRCB7IDAgfTsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEOwogICAgICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNl
SUQgeyAwIH07CiAgICAgICAgIGJvb2wgaXNSb290QWN0aXZpdHkgeyBmYWxzZSB9OwogICAgICAg
ICBOZXR3b3JrQWN0aXZpdHlUcmFja2VyIG5ldHdvcmtBY3Rpdml0eTsKICAgICB9OwogCiAgICAg
dm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmcoKTsKLSAgICB2b2lkIHN0b3BBbGxO
ZXR3b3JrQWN0aXZpdHlUcmFja2luZ0ZvclBhZ2UodWludDY0X3QgcGFnZUlEKTsKLSAgICBzaXpl
X3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkodWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHN0
b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0ZvclBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOworICAgIHNpemVfdCBmaW5kUm9vdE5ldHdvcmtBY3Rpdml0eShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7CiAgICAgc2l6ZV90IGZpbmROZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNl
TG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCk7CiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9U
RV9VSSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGY3
Yzk3ZWViYjIxLi44MzNlNzRmY2Y2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC0yNiwxOCArMjYsMTggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFBlcmZvcm1TeW5jaHJvbm91
c0xvYWQoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgVmVjdG9yPGNoYXI+IGRhdGEpIFN5bmNocm9ub3VzCiAg
ICAgTG9hZFBpbmcoV2ViS2l0OjpOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyByZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzKQogICAgIFJlbW92ZUxvYWRJZGVudGlmaWVyKHVpbnQ2NF90IHJlc291
cmNlTG9hZElkZW50aWZpZXIpCi0gICAgUGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFn
ZUlEKQorICAgIFBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBh
Z2VJRCkKICAgICBQcmVmZXRjaEROUyhTdHJpbmcgaG9zdG5hbWUpCiAgICAgUHJlY29ubmVjdFRv
KHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIFN0YXJ0RG93bmxvYWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQogICAg
IENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2Fk
SUQgZG93bmxvYWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UpCiAKLSAgICBDb29raWVzRm9yRE9NKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywg
Ym9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwotICAgIFNldENvb2tpZXNG
cm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBX
ZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgU3RyaW5nIGNvb2tpZVN0
cmluZykKKyAgICBDb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZp
cnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwg
dXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRB
Y2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cworICAgIFNldENvb2tpZXNGcm9tRE9NKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgU3RyaW5nIGNv
b2tpZVN0cmluZykKICAgICBDb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQp
IC0+IChib29sIGVuYWJsZWQpIFN5bmNocm9ub3VzCi0gICAgQ29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgR2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBh
cnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIC0+
IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cworICAgIENvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZp
cnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwg
dXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRB
Y2Nlc3NTZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cworICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMKICAgICBEZWxldGVDb29raWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJpbmcgY29va2llTmFtZSkKIAogICAg
IFJlZ2lzdGVyRmlsZUJsb2JVUkwoVVJMIHVybCwgU3RyaW5nIHBhdGgsIFdlYktpdDo6U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGV4dGVuc2lvbkhhbmRsZSwgU3RyaW5nIGNvbnRlbnRUeXBlKQpA
QCAtNTYsMTYgKzU2LDE2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBFbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCkKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgUmVtb3Zl
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cGFnZUlEKTsKKyAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQpOworICAgIENsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3Mo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQp
OwogICAgIExvZ1VzZXJJbnRlcmFjdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbikKICAgICBMb2dXZWJTb2NrZXRMb2FkaW5nKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2FsbFRp
bWUgbGFzdFNlZW4pCiAgICAgTG9nU3VicmVzb3VyY2VMb2FkaW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdGFyZ2V0RG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pCiAg
ICAgTG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHNvdXJjZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdGFyZ2V0RG9tYWluKQogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZl
Y3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiBzdGF0aXN0aWNzKQotICAgIEhh
c1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9w
RnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGJvb2wg
aGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCi0gICAgUmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3Bl
bmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCisgICAg
SGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYworICAgIFJlcXVlc3RTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQp
IC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRl
ZCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRX
YXNTaG93bikgQXN5bmMKKyAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKICNlbmRpZgogCiAgICAg
QWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoU3RyaW5nIHNvdXJjZU9yaWdpbiwgU3RyaW5n
IGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN0cmluZyBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpOwpAQCAtODcsNyArODcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBTZXRXZWJQ
cm9jZXNzSWRlbnRpZmllcihXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRp
ZmllcikKIAotICAgIFdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQotICAgIFdlYlBhZ2VXYXNSZW1vdmVk
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQotICAgIFdlYlByb2Nl
c3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIFZlY3Rvcjx1aW50
NjRfdD4gcGFnZXMpCisgICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBvbGRQYWdlSUQpCisgICAgV2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCisgICAgV2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgVmVjdG9yPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBwYWdlcykKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAppbmRleCBkMTRiMWRlOWQ5MS4uNDA5NzE0ZDY2
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZU9y
aWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbikKICAgICBy
ZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3RvY29sSXNCbG9iKCkgfHwgIW9y
aWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAotTmV0d29ya0xvYWRDaGVja2Vy
OjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBGZXRj
aE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsUmVxdWVzdEhl
YWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdpbiwg
UHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wg
aXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQorTmV0d29ya0xvYWRDaGVja2VyOjpO
ZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBGZXRjaE9w
dGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYmIG9yaWdpbmFsUmVxdWVz
dEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYmIHNvdXJjZU9yaWdp
biwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJv
b2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQogICAgIDogbV9vcHRpb25zKFdU
Rk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgLCBtX25l
dHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMzFkMTFjM2E4YWUuLjU3ZGYxZGE0
NjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRD
aGVja2VyLmgKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgTmV0d29ya0xvYWRDaGVja2VyIDogcHVi
bGljIENhbk1ha2VXZWFrUHRyPE5ldHdvcmtMb2FkQ2hlY2tlcj4gewogcHVibGljOgogICAgIGVu
dW0gY2xhc3MgTG9hZFR5cGUgOiBib29sIHsgTWFpbkZyYW1lLCBPdGhlciB9OwogCi0gICAgTmV0
d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYs
IFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBp
c0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gTG9hZFR5
cGU6Ok90aGVyKTsKKyAgICBOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmLCBXZWJD
b3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBS
ZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGlj
eSwgU3RyaW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2Us
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRU
eXBlIHJlcXVlc3RMb2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7CiAgICAgfk5ldHdvcmtMb2Fk
Q2hlY2tlcigpOwogCiAgICAgc3RydWN0IFJlZGlyZWN0aW9uVHJpcGxldCB7CkBAIC0xMjUsNyAr
MTI1LDcgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBt
X3N0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklE
OwogICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKLSAgICB1aW50NjRf
dCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICB1
aW50NjRfdCBtX2ZyYW1lSUQ7CiAgICAgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCBtX29yaWdpbmFs
UmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBjaGVja3MuCiAgICAgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCBtX2ZpcnN0UmVxdWVzdEhlYWRlcnM7IC8vIE5lZWRlZCBmb3IgQ09SUyBj
aGVja3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZFBhcmFtZXRlcnMuaAppbmRleCA4OTYzOTlkMTMzMi4uODk3MzBjZjlmZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaApA
QCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0FjdGl2aXR5VHJhY2tlci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRl
IDxwYWwvU2Vzc2lvbklELmg+CkBAIC0zOCw3ICszOSw3IEBAIGVudW0gY2xhc3MgUHJlY29ubmVj
dE9ubHkgeyBObywgWWVzIH07CiAKIGNsYXNzIE5ldHdvcmtMb2FkUGFyYW1ldGVycyB7CiBwdWJs
aWM6Ci0gICAgdWludDY0X3Qgd2ViUGFnZUlEIHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHdlYlBhZ2VJRDsKICAgICB1aW50NjRfdCB3ZWJGcmFtZUlEIHsgMCB9OwogICAgIFdU
Rjo6UHJvY2Vzc0lEIHBhcmVudFBJRCB7IDAgfTsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQgeyBQQUw6OlNlc3Npb25JRDo6ZW1wdHlTZXNzaW9uSUQoKSB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBhNWQ2ZjVjZmNjNy4u
MjlkMTdmOTlmMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNl
cwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmNv
bW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmNvbW1p
dHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29y
a1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLT5jb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uKGZyb21Eb21haW4sIHRvRG9tYWluLCBwYWdlSUQpOwpAQCAtMTk1NCw3ICsxOTU0LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2Nr
ZXQoYm9vbCBhbGxvd3MsIENvbXBsZXQKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdl
SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hv
dWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0
aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQog
ewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxp
bmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk2Miw3ICsxOTYyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3MKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZSh3
ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1
aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFJlc3VsdChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRU
eXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE5NzAsNyArMTk3MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNv
bnN0IFN0CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHdlYlBhZ2VJ
RCwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgU2hvdWxkU2FtcGxlOjpObyksIDApOwog
fQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1
aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNo
b3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9z
dGljTWVzc2FnZVdpdGhWYWx1ZShQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNp
Z25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAg
ICAgaWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhz
aG91bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47CkBAIC0yNjE5LDcgKzI2MTksNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRl
ciYgbG9hZGVyKQogICAgICAgICBzZXNzaW9uLT5yZW1vdmVLZXB0QWxpdmVMb2FkKGxvYWRlcik7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBvbGRQYWdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRk
ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQogewogICAg
IGlmICghcGFnZUlEIHx8ICFvbGRQYWdlSUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3Qg
YWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjM4LDEzICsyNjM4LDEzIEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFBBTDo6U2Vzc2lvbklECiAgICAgICAgIHJldHVybiBzZXNzaW9uSUQ7CiAgICAgfSk7CiAK
LSAgICBzdG9yYWdlTWFuYWdlci5jcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQs
IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAgc3RvcmFnZU1hbmFn
ZXIuYWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQsIGNv
bm5lY3Rpb24pOworICAgIHN0b3JhZ2VNYW5hZ2VyLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKHBhZ2VJRC50b1VJbnQ2NCgpLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpOworICAgIHN0b3JhZ2VNYW5hZ2VyLmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZUNvbm5lY3Rpb24ocGFnZUlELnRvVUludDY0KCksIGNvbm5lY3Rpb24pOwogICAgIGlmIChwYWdl
SUQgIT0gb2xkUGFnZUlEKQotICAgICAgICBzdG9yYWdlTWFuYWdlci5jbG9uZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKG9sZFBhZ2VJRCwgcGFnZUlEKTsKKyAgICAgICAgc3RvcmFnZU1hbmFnZXIu
Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShvbGRQYWdlSUQudG9VSW50NjQoKSwgcGFnZUlE
LnRvVUludDY0KCkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3Zl
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIXBhZ2VJRCkgewogICAgICAgICBMT0df
RVJST1IoIkNhbm5vdCByZW1vdmUgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsKQEAgLTI2NTcsOCAr
MjY1Nyw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uCiAgICAgICAgIHJldHVybjsKIAogICAg
IGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0gc2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBz
dG9yYWdlTWFuYWdlci5yZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0
aW9uKHBhZ2VJRCwgY29ubmVjdGlvbik7Ci0gICAgc3RvcmFnZU1hbmFnZXIuZGVzdHJveVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRCk7CisgICAgc3RvcmFnZU1hbmFnZXIucmVtb3ZlQWxs
b3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQudG9VSW50NjQoKSwg
Y29ubmVjdGlvbik7CisgICAgc3RvcmFnZU1hbmFnZXIuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2Vi
UHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0y
Njc0LDcgKzI2NzQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29u
bmVjdGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICBuZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpLT5zdG9yYWdlTWFuYWdlcigpLnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oY29u
bmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hh
bmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Np
b25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZUlEcykKK3ZvaWQgTmV0d29ya1Byb2Nl
c3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVy
PiYgcGFnZUlEcykKIHsKICAgICBhdXRvIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVl
SUQoKTsKICAgICBBU1NFUlQobV9zZXNzaW9uQnlDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rp
b25JRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CmluZGV4IDdhY2IzZjk2NzVjLi5lYmYzYjdmZTY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvRmV0Y2hJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJLZXlEYXRh
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JREJTZXJ2ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlcklkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NlcnZpY2VXb3JrZXJUeXBlcy5oPgpAQCAtMTM2LDggKzEzNyw2IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
OwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyA9IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9IFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVpbnQ2NF90OwotICAgIHVzaW5n
IFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQgPSB1aW50NjRfdDsKIAogICAg
IE5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMm
Jik7CkBAIC0xOTAsOSArMTg5LDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVzdW1lKCk7CiAKICAg
ICAvLyBEaWFnbm9zdGljIG1lc3NhZ2VzIGxvZ2dpbmcuCi0gICAgdm9pZCBsb2dEaWFnbm9zdGlj
TWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxv
Z0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6RGlhZ25v
c3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAgIHZvaWQg
bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwg
dW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUsIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50Rmln
dXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IFJldGFpblB0cjxDRkRhdGFSZWY+IHNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhKCkgY29uc3Q7
CkBAIC0yNTgsNyArMjU3LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklELCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFJl
ZGlyZWN0ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6OlNlc3Npb25JRCwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkRnJvbURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURh
dGEoUEFMOjpTZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBib29sIHNob3Vs
ZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdpc3RyYWJsZURv
bWFpbj4mJik+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRl
TG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCkBAIC0y
NzEsMTAgKzI3MCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVk
QnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0Nv
bnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQpIGNvbnN0OwogCi0gICAgdm9pZCB3
ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVk
KElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAg
IHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZv
aWQgd2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHdlYlByb2Nlc3NXYXNEaXNjb25uZWN0
ZWQoSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQo
SVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
KTsKKyAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYpOwog
ICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdlT3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpP
cmlnaW5EZXRhaWxzPiYmKT4mJik7CiAKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KaW5kZXggZDlmZWUwNzhmZTcuLmY1ZWY1MzAxMzQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTEzMSw3ICsxMzEsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgU2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0ZWRUb0RvbWFpbikgLT4gKCkgQXN5bmMK
ICAgICBTZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdGVkRnJvbURvbWFpbikgLT4gKCkgQXN5bmMKICAgICBS
ZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gKCkgQXN5bmMKLSAgICBDb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtE
ZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4sIHVp
bnQ2NF90IHBhZ2VJRCkgLT4gKCkgQXN5bmMKKyAgICBDb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21h
aW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKCkgQXN5bmMKICAgICBTZXRD
cm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZyb21Eb21haW4sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q3Jvc3NT
aXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKCkgQXN5bmMKICAgICBEZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGRvbWFpbiwgYm9vbCBp
bmNsdWRlSHR0cE9ubHlDb29raWVzKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmNwcAppbmRleCA1OGFhY2I5OTNkYi4uMzNjZGM0ZDE3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCkBAIC0xMDcsOCArMTA3LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndlYlBhZ2VJRCkpCisg
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHdl
YlBhZ2VJRDsKKyAgICBpZiAoIXdlYlBhZ2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJlc3VsdC53ZWJQYWdlSUQgPSAqd2ViUGFnZUlEOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQud2ViRnJhbWVJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBmZTI2NTM2ZjIxYy4uZjRjYmFlMmRhYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE3NCwxOCAr
MTc0LDE4IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgICAgIG1f
bmV0d29ya0xvYWRDaGVja2VyLT5jaGVjayhSZXNvdXJjZVJlcXVlc3QgeyBvcmlnaW5hbFJlcXVl
c3QoKSB9LCB0aGlzLCBbdGhpc10gKGF1dG8mJiByZXN1bHQpIHsKICAgICAgICAgICAgIFdURjo6
c3dpdGNoT24ocmVzdWx0LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoUmVzb3VyY2VFcnJvciYg
ZXJyb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3Rh
cnQ6IGVycm9yIGNoZWNraW5nIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlz
U3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQsIGVycm9yLmRvbWFpbiA9ICV7cHVibGlj
fXMsIGVycm9yLmNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291
cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCwgZXJy
b3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogZXJyb3IgY2hlY2tpbmcg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBw
YXJlbnRQSUQgPSAlZCwgZXJyb3IuZG9tYWluID0gJXtwdWJsaWN9cywgZXJyb3IuY29kZSA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0
aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVycm9yLmRvbWFp
bigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKCFlcnJvci5pc0NhbmNlbGxhdGlvbigpKQogICAgICAgICAgICAgICAgICAgICAgICAg
dGhpcy0+ZGlkRmFpbExvYWRpbmcoZXJyb3IpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAg
ICAgICAgICAgW3RoaXNdIChOZXR3b3JrTG9hZENoZWNrZXI6OlJlZGlyZWN0aW9uVHJpcGxldCYg
dHJpcGxldCkgewogICAgICAgICAgICAgICAgICAgICB0aGlzLT5tX2lzV2FpdGluZ0NvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVkUmVkaXJlY3QgPSB0cnVlOwogICAgICAgICAgICAgICAg
ICAgICB0aGlzLT53aWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0KFdURk1vdmUodHJpcGxldC5yZXF1
ZXN0KSwgV1RGTW92ZSh0cmlwbGV0LnJlZGlyZWN0UmVxdWVzdCksIFdURk1vdmUodHJpcGxldC5y
ZWRpcmVjdFJlc3BvbnNlKSk7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0YXJ0OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2VudCBiZWNhdXNlIHJlcXVlc3QgVVJM
IHdhcyBtb2RpZmllZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNo
cm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNN
YWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50
UElEKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6
IHN5bnRoZXRpYyByZWRpcmVjdCBzZW50IGJlY2F1c2UgcmVxdWVzdCBVUkwgd2FzIG1vZGlmaWVk
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwg
cGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFp
blJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJ
RCk7CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBbdGhpc10gKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkgewogICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy0+Y2FuVXNl
Q2FjaGUocmVxdWVzdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9w
YXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlzU3lu
Y2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJl
c291cmNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMg
PSAlZCwgcGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMt
PmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBh
cmVudFBJRCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5yZXRyaWV2ZUNhY2hlRW50
cnkocmVxdWVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICAgICAgICAgIH0KQEAgLTE5OCw3ICsxOTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6c3RhcnQoKQogICAgIH0KICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoYXQgY29kZSBwYXRoIG9u
Y2UgbV9uZXR3b3JrTG9hZENoZWNrZXIgaXMgdXNlZCBmb3IgYWxsIG5ldHdvcmsgbG9hZHMuCiAg
ICAgaWYgKGNhblVzZUNhY2hlKG9yaWdpbmFsUmVxdWVzdCgpKSkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50
UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hy
b25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CiAgICAgICAgIHJldHJpZXZlQ2FjaGVF
bnRyeShvcmlnaW5hbFJlcXVlc3QoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMjcs
MTMgKzIyNywxMyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVu
dHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgbG9hZGVyLT5sb2dT
bG93Q2FjaGVSZXRyaWV2ZUlmTmVlZGVkKGluZm8pOwogCiAgICAgICAgIGlmICghZW50cnkpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmVzb3VyY2Ugbm90IGluIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQs
IGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRl
cnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCks
IGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJy
ZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIG5vdCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAg
ICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXF1ZXN0KSwgRmlyc3RMb2Fk
OjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICAgICAgaWYgKGVudHJ5LT5oYXNSZWFjaGVkUHJldmFs
ZW50UmVzb3VyY2VBZ2VDYXAoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBoYXMgcmVhY2hlZCBwcmV2YWxlbnQgcmVz
b3VyY2UgYWdlIGNhcCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNo
cm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVD
YWNoZUVudHJ5OiBSZXNvdXJjZSBoYXMgcmVhY2hlZCBwcmV2YWxlbnQgcmVzb3VyY2UgYWdlIGNh
cCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hy
b25vdXMoKSk7CiAgICAgICAgICAgICBtX2NhY2hlRW50cnlGb3JNYXhBZ2VDYXBWYWxpZGF0aW9u
ID0gV1RGTW92ZShlbnRyeSk7CiAgICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmV2YWxpZGF0
aW9uUmVxdWVzdCA9IG9yaWdpbmFsUmVxdWVzdCgpOwogICAgICAgICAgICAgbG9hZGVyLT5zdGFy
dE5ldHdvcmtMb2FkKFdURk1vdmUocmV2YWxpZGF0aW9uUmVxdWVzdCksIEZpcnN0TG9hZDo6WWVz
KTsKQEAgLTI0MSwyMSArMjQxLDIxIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRy
aWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICB9
CiAjZW5kaWYKICAgICAgICAgaWYgKGVudHJ5LT5yZWRpcmVjdFJlcXVlc3QoKSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBIYW5kbGlu
ZyByZWRpcmVjdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNo
ZUVudHJ5OiBIYW5kbGluZyByZWRpcmVjdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9
ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2
NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlz
TWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXItPmRp
c3BhdGNoV2lsbFNlbmRSZXF1ZXN0Rm9yQ2FjaGVFbnRyeShXVEZNb3ZlKHJlcXVlc3QpLCBXVEZN
b3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGxvYWRlci0+bV9wYXJhbWV0ZXJzLm5lZWRzQ2VydGlmaWNhdGVJbmZvICYmICFlbnRyeS0+cmVz
cG9uc2UoKS5jZXJ0aWZpY2F0ZUluZm8oKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVp
cmVkIGNlcnRpZmljYXRlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3lu
Y2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2
ZUNhY2hlRW50cnk6IFJlc291cmNlIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgY2VydGlmaWNhdGUg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVx
dWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAoZW50cnktPm5lZWRzVmFsaWRhdGlvbigpIHx8IHJlcXVlc3QuY2FjaGVQb2xp
Y3koKSA9PSBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmVmcmVzaEFueUNh
Y2hlRGF0YSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVD
YWNoZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFp
blJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFZhbGlkYXRpbmcgY2FjaGUgZW50cnkgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3Vz
KCkpOwogICAgICAgICAgICAgbG9hZGVyLT52YWxpZGF0ZUNhY2hlRW50cnkoV1RGTW92ZShlbnRy
eSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmV0cmlldmVkIHJlc291cmNlIGZyb20g
Y2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBt
X3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBS
ZXRyaWV2ZWQgcmVzb3VyY2UgZnJvbSBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgIGxvYWRlci0+ZGlk
UmV0cmlldmVDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICB9KTsKIH0KQEAgLTI2Myw3
ICsyNjMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9h
ZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9h
ZCBsb2FkKQogewogICAgIGlmIChsb2FkID09IEZpcnN0TG9hZDo6WWVzKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291
cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKIAogICAgICAgICBjb25zdW1l
U2FuZGJveEV4dGVuc2lvbnMoKTsKIApAQCAtMjg5LDcgKzI4OSw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IEZpcnN0TG9hCiAgICAgfQogICAgIGlmICghbmV0d29ya1Nlc3Npb24pIHsKICAgICAgICAgV1RG
TG9nQWx3YXlzKCJBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xvYWQgd2l0aCBhIHNlc3Np
b24gKGlkPSUiIFBSSXU2NCAiKSB0aGF0IGRvZXMgbm90IGV4aXN0LiIsIHBhcmFtZXRlcnMuc2Vz
c2lvbklELnNlc3Npb25JRCgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RCgic3RhcnROZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdp
dGggYSBzZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklE
PSUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vz
c2lvbklEKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydE5l
dHdvcmtMb2FkOiBBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xvYWQgd2l0aCBhIHNlc3Np
b24gdGhhdCBkb2VzIG5vdCBleGlzdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzZXNzaW9uSUQ9JSIgUFJJdTY0
ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNl
c3Npb25JRCgpKTsKICAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLmxvZ0Rp
YWdub3N0aWNNZXNzYWdlKG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIFdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9n
Z2luZ0tleXM6OmludmFsaWRTZXNzaW9uSURLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpO
byk7CiAgICAgICAgIGRpZEZhaWxMb2FkaW5nKGludGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSkp
OwogICAgICAgICByZXR1cm47CkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmly
c3RMb2EKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpOwogICAgIG1f
bmV0d29ya0xvYWQgPSBzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgJm1fY29u
bmVjdGlvbi0+YmxvYlJlZ2lzdHJ5KCksIFdURk1vdmUocGFyYW1ldGVycyksICpuZXR3b3JrU2Vz
c2lvbik7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGRlc2Ny
aXB0aW9uID0gJXtwdWJsaWN9cykiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3
b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKIH0KIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmNsZWFudXAoTG9hZFJlc3VsdCByZXN1bHQpCkBAIC0zMjIsNyArMzIy
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNsZWFudXAoTG9hZFJlc3VsdCByZXN1
bHQpCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3dubG9hZChEb3du
bG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUkVMRUFTRV9MT0coTG9hZGluZywg
IkNvbnZlcnRpbmcgTmV0d29ya1Jlc291cmNlTG9hZGVyICVwIHRvIGRvd25sb2FkICUiIFBSSXU2
NCAiIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgZG93bmxvYWRJRC5kb3dubG9hZElEKCksIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIkNvbnZlcnRpbmcgTmV0d29y
a1Jlc291cmNlTG9hZGVyICVwIHRvIGRvd25sb2FkICUiIFBSSXU2NCAiIChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgdGhpcywgZG93bmxvYWRJRC5kb3dubG9hZElEKCksIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyKTsKICAgICAKICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgdGhlIHJlc291cmNlIGNhbWUg
ZnJvbSB0aGUgZGlzayBjYWNoZS4KICAgICBpZiAoIW1fbmV0d29ya0xvYWQpIHsKQEAgLTM0MCw3
ICszNDAsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6YWJvcnQoKQogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJhYm9y
dDogQ2FuY2VsaW5nIHJlc291cmNlIGxvYWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLAotICAgICAgICBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIpOworICAgICAgICBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAKICAg
ICBpZiAobV9wYXJhbWV0ZXJzLm9wdGlvbnMua2VlcEFsaXZlICYmIG1fcmVzcG9uc2UuaXNOdWxs
KCkgJiYgIW1faXNLZXB0QWxpdmUpIHsKICAgICAgICAgbV9pc0tlcHRBbGl2ZSA9IHRydWU7CkBA
IC0zODQsMTIgKzM4NCwxMiBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50
ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiB4RgogICAgIH0KICAgICBj
YXNlIFhGcmFtZU9wdGlvbnNDb25mbGljdDogewogICAgICAgICBTdHJpbmcgZXJyb3JNZXNzYWdl
ID0gIk11bHRpcGxlICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlcnMgd2l0aCBjb25mbGljdGluZyB2
YWx1ZXMgKCciICsgeEZyYW1lT3B0aW9ucyArICInKSBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcg
JyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJy4gRmFsbGluZyBi
YWNrIHRvICdERU5ZJy4iOwotICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25z
b2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6SlMs
IE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRD
b25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6
SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICBjYXNlIFhGcmFtZU9wdGlvbnNJbnZhbGlkOiB7CiAgICAgICAgIFN0cmluZyBl
cnJvck1lc3NhZ2UgPSAiSW52YWxpZCAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXIgZW5jb3VudGVy
ZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
ICsgIic6ICciICsgeEZyYW1lT3B0aW9ucyArICInIGlzIG5vdCBhIHJlY29nbml6ZWQgZGlyZWN0
aXZlLiBUaGUgaGVhZGVyIHdpbGwgYmUgaWdub3JlZC4iOwotICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAg
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRl
bnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCAgTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwg
aWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgfQpAQCAtNDE2LDcgKzQxNiw3IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNl
c3RvcnNPclhGcmFtZU9wdGlvCiAgICAgICAgIFN0cmluZyB4RnJhbWVPcHRpb25zID0gbV9yZXNw
b25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OlhGcmFtZU9wdGlvbnMpOwogICAg
ICAgICBpZiAoIXhGcmFtZU9wdGlvbnMuaXNOdWxsKCkgJiYgc2hvdWxkSW50ZXJydXB0TG9hZEZv
clhGcmFtZU9wdGlvbnMoeEZyYW1lT3B0aW9ucywgcmVzcG9uc2UudXJsKCkpKSB7CiAgICAgICAg
ICAgICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIlJlZnVzZWQgdG8gZGlzcGxheSAnIiArIHJlc3Bv
bnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgaW4gYSBmcmFt
ZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0byAnIiArIHhGcmFtZU9wdGlvbnMg
KyAiJy4iOwotICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1l
c3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291
cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlm
aWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNl
c3RvcnNPclhGcmFtZU9wdGlvCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0
dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcmVj
ZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUi
IFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCByZWNlaXZlZFJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkpOwogCiAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAg
LTUwNSw3ICs1MDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bvbgogdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1Jl
Y2VpdmVkKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQnVmZmVy
OiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5zaXplKCk7CiAKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwpAQCAtNTM0LDcgKzUzNCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNS
ZWNlaXZlZCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5m
b3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTU2
OSw3ICs1NjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wg
PSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgZXJyb3IuaXNUaW1lb3V0KCks
IGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlzQWNjZXNzQ29udHJvbCgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0Fj
Y2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuaXNB
Y2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIGlmIChzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1v
dmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZpZXIoKSk7CkBAIC03MzEsNyArNzMxLDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOwogCiAgICAgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOwogCkBAIC05ODgsNiArOTg4LDExIEBAIHN0YXRp
YyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUp
CiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUudmFsdWUoKSkgOiBTdHJp
bmcoIk5vbmUiX3MpOwogfTsKIAorc3RhdGljIFN0cmluZyBlc2NhcGVJREZvckpTT04oY29uc3Qg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPyBT
dHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOworfTsK
Kwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9u
LCBzZXNzaW9uSUQoKSkpOwpAQCAtOTk4LDcgKzEwMDMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGxvZ0Nvb2tpZUluZm9y
bWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5h
bFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShv
cmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVl
c3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigpKTsK
IH0KIAotc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxv
Y2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDI1LDcgKzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBs
b2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXN0YXRpYyB2b2lk
IGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9i
amVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZv
cm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDg2LDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9p
ZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aQogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRp
ZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlv
biwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTEwOTksMTcgKzEx
MDQsMTcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9u
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJgogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNZXNz
YWdlTGV2ZWwgbWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxv
bmcpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIG1lc3NhZ2VTb3VyY2UsIG1lc3NhZ2VMZXZlbCwgbWVz
c2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsICBtZXNzYWdlU291cmNlLCBtZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIGlkZW50aWZpZXIo
KSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogfQogCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6c2VuZENTUFZpb2xhdGlvblJlcG9ydChVUkwmJiByZXBvcnRVUkws
IFJlZjxGb3JtRGF0YT4mJiByZXBvcnQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2VuZENTUFZpb2xhdGlvblJlcG9ydCB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBXVEZNb3Zl
KHJlcG9ydFVSTCksIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZNb3ZlKHJlcG9ydCkgfSB9
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZW5kQ1NQVmlvbGF0aW9uUmVwb3J0IHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIFdURk1vdmUo
cmVwb3J0VVJMKSwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IFdURk1vdmUocmVwb3J0KSB9IH0s
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjplbnF1ZXVlU2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudChXZWJDb3Jl
OjpTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50OjpJbml0JiYgZXZlbnRJbml0KQogewotICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2
ZW50IHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIFdURk1vdmUoZXZlbnRJbml0KSB9LCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbnF1ZXVl
U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudCB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBX
VEZNb3ZlKGV2ZW50SW5pdCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsK
IH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ1Nsb3dDYWNoZVJldHJpZXZlSWZO
ZWVkZWQoY29uc3QgTmV0d29ya0NhY2hlOjpDYWNoZTo6UmV0cmlldmVJbmZvJiBpbmZvKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKaW5kZXggYThhMzAwNWMxNDIuLmE4ZjZkMzE1Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTg0LDcgKzg0
LDcgQEAgcHVibGljOgogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyYW1ldGVycy5zZXNzaW9uSUQ7IH0KICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVy
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQog
ICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRDsgfQotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25z
dCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViUGFnZUlEOyB9CiAKICAgICBzdHJ1Y3QgU3luY2hy
b25vdXNMb2FkRGF0YTsKIApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IHN0YXRpYyBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKLSAgICBzdGF0aWMgdm9pZCBs
b2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIE9wdGlv
bmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNhYmxlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3NDYXB0dXJlKCkgeyBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcyA9IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAppbmRleCBjN2YzODZiM2Q3Yy4uOGJiYzE2OTc4NTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUVudHJ5LmgiCiAj
aW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291
cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KQEAgLTg0LDcgKzg1LDcgQEAgZW51bSBj
bGFzcyBVc2VEZWNpc2lvbiB7CiAgICAgTm9EdWVUb0V4cGlyZWRSZWRpcmVjdAogfTsKIAotdXNp
bmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50
NjRfdCAvKndlYkZyYW1lSUQqLz47Cit1c2luZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47CiAKIGNsYXNz
IENhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2Eu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EuaAppbmRleCA5NjVjNmZhNjY0Yi4uMmRkMGU3ZDQ2YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgK
QEAgLTQyLDcgKzQyLDcgQEAgY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKIGNsYXNzIE5ldHdv
cmtEYXRhVGFza0NvY29hIGZpbmFsIDogcHVibGljIE5ldHdvcmtEYXRhVGFzayB7CiAgICAgZnJp
ZW5kIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxO
ZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0Rh
dGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRD
cmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVu
dFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29k
aW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxk
Q2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxk
UHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9w
dGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCisg
ICAgc3RhdGljIFJlZjxOZXR3b3JrRGF0YVRhc2s+IGNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgc2Vz
c2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNr
ZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBOZXR3b3JrRGF0YVRhc2tDb2NvYShzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3QsIGZy
YW1lSUQsIHBhZ2VJRCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENvbnRlbnRTbmlm
Ziwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIHNob3VsZFByZWNvbm5lY3RPbmx5LCBkYXRhVGFza0lzRm9yTWFpbkZy
YW1lTmF2aWdhdGlvbiwgbmV0d29ya0FjdGl2aXR5VHJhY2tlcikpOwogICAgIH0KQEAgLTcwLDEy
ICs3MCwxMiBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MoKSB7IHJldHVybiBtX25ldHdvcmtMb2FkTWV0cmljczsgfQogCiAgICAg
dWludDY0X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVJRDsgfTsKLSAgICB1aW50
NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfTsKKyAgICBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfTsKIAogICAg
IFN0cmluZyBkZXNjcmlwdGlvbigpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE5l
dHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6
Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1Bv
bGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVj
b25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9u
YWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOworICAgIE5ldHdvcmtEYXRhVGFza0NvY29hKE5l
dHdvcmtTZXNzaW9uJiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZp
bmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPik7CiAKICAgICBib29sIHRyeVBhc3N3b3JkQmFzZWRBdXRoZW50aWNhdGlv
bihjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJik7CiAgICAgdm9pZCBhcHBseVNuaWZmaW5nUG9saWNpZXNBbmRCaW5kUmVx
dWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQoX19zdHJvbmcgTlNVUkxSZXF1ZXN0KiYsIGJvb2wgc2hv
dWxkQ29udGVudFNuaWZmLCBib29sIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmKTsKQEAgLTkz
LDcgKzkzLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8TlNVUkxTZXNzaW9uRGF0YVRhc2s+
IG1fdGFzazsKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MgbV9uZXR3b3JrTG9hZE1l
dHJpY3M7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOwor
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIG1faGFzQmVlblNldFRvVXNlU3RhdGVsZXNz
Q29va2llU3RvcmFnZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQppbmRleCAzNWU0NDNi
OWVlOS4uMjhhMDVlODBkYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQpAQCAtMTYwLDcgKzE2MCw3
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVRhc2tXaXRoRmlyc3RQYXJ0eUZvclNhbWVTaXRlQ29va2ll
cyhOU1VSTFNlc3Npb25EYXRhVGFzayogdGFzCiAjZW5kaWYKIH0KIAotTmV0d29ya0RhdGFUYXNr
Q29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3
b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBX
ZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2Rp
bmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQ
cmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFp
bkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29y
a0FjdGl2aXR5VHJhY2tlcikKK05ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tD
b2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGll
bnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFs
cywgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29yZTo6
Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYs
IGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVj
dE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5h
dmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rpdml0
eVRyYWNrZXIpCiAgICAgOiBOZXR3b3JrRGF0YVRhc2soc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0
V2l0aENyZWRlbnRpYWxzLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24pCiAgICAgLCBtX2ZyYW1lSUQoZnJhbWVJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKQEAg
LTIzNiw3ICsyMzYsNyBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29j
b2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVAogICAgIGlmIChzaG91bGRC
bG9ja0Nvb2tpZXMpIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgaWYgKG1f
c2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZy
YW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIs
IHRoaXMsIHBhZ2VJRCwgZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRp
Zmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywg
IiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQg
PSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiBCbG9ja2luZyBjb29raWVzIGZv
ciBVUkwgJXMiLCB0aGlzLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgKHVuc2lnbmVkIGxv
bmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcu
VVRGOFN0cmluZyk7CiAjZWxzZQogICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IEJs
b2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBuc1Jl
cXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOwogI2VuZGlmCkBAIC0zNjYsNyAr
MzY2LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBib29sIHNob3VsZEJsb2NrQ29v
a2llcyA9IG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3k6OkVwaGVtZXJhbFN0YXRlbGVzc0Nvb2tpZWxlc3MgfHwgbV9zZXNzaW9uLT5u
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5zaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdCwgbV9mcmFt
ZUlELCBtX3BhZ2VJRCk7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgaWYgKG1fc2Vz
c2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oKSkKLSAgICAgICAgUkVMRUFTRV9MT0df
SUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRp
b246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6ICVzIGNvb2tp
ZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIsIHRoaXMsIG1fcGFnZUlELCBtX2ZyYW1lSUQsICh1bnNp
Z25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCAoc2hvdWxkQmxvY2tDb29raWVzID8g
IkJsb2NraW5nIiA6ICJOb3QgYmxvY2tpbmciKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1l
SUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6ICVzIGNvb2tpZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIs
IHRoaXMsIG1fcGFnZUlELnRvVUludDY0KCksIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21f
dGFzayB0YXNrSWRlbnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDog
Ik5vdCBibG9ja2luZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
I2Vsc2UKICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1ICVzIGNvb2tpZXMgZm9yIHJlZGly
ZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCAoc2hvdWxkQmxvY2tDb29raWVz
ID8gIkJsb2NraW5nIiA6ICJOb3QgYmxvY2tpbmciKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICNlbmRpZgpAQCAtMzc5LDcgKzM3OSw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmCiAgICAgaWYgKCFzaG91bGRCbG9ja0Nvb2tpZXMpIHsKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICAgICAgaWYgKG1fc2Vzc2lvbi0+c2hvdWxkTG9nQ29va2llSW5mb3Jt
YXRpb24oKSkKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFt
ZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMgZm9yIHJl
ZGlyZWN0IFVSTCAlcyIsIHRoaXMsIG1fcGFnZUlELCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25n
KVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxv
d2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhU
VFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1l
SUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IE5vdCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVk
aXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgbV9mcmFtZUlELCAodW5z
aWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICNlbHNlCiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVs
bHUgTm90IHBhcnRpdGlvbmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCBbbV90YXNr
IHRhc2tJZGVudGlmaWVyXSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNl
bmRlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCmluZGV4
IGQ1Zjk4MWU0NTM0Li5mODY0NTRkZGE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VTZW5kZXIuaApAQCAtMzQsOSArMzQsOSBAQCBjbGFzcyBNZXNzYWdlU2VuZGVyIHsK
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5NZXNzYWdlU2VuZGVyKCk7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSkKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSwgT3B0aW9uU2V0PFNlbmRPcHRpb24+
IHNlbmRPcHRpb25zID0geyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIHNlbmQobWVzc2FnZSwg
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSwgeyB9KTsKKyAgICAgICAgcmV0dXJuIHNlbmQo
bWVzc2FnZSwgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSwgc2VuZE9wdGlvbnMpOwogICAg
IH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdl
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlv
bnMgPSB7IH0pCkBAIC02NSw4ICs2NSw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCktPnNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUo
cmVwbHkpLCBkZXN0aW5hdGlvbklELCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMpOwogICAgIH0K
IAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+Ci0gICAgdm9pZCBz
ZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJn
cy4uLik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgQz4KKyAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNv
bXBsZXRpb25IYW5kbGVyKQogICAgIHsKICAgICAgICAgbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KS0+c2VuZFdpdGhBc3luY1JlcGx5KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5IGIvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQppbmRleCA1MjUxNDkwMmFiYi4uNWI5NzUz
MDMwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjA1
LDYgKzIwNSw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZl
cik6CiAgICAgICAgICdTdHJpbmcnLAogICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlm
aWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRpZmllcicsCisgICAgICAgICdXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAg
ICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSVBhZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VI
YW5kbGUuY3BwCmluZGV4IGE2YTAwOTk1NTAwLi5lNjA1YTQ1OTQ2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcApAQCAtMzEsMTcgKzMxLDE3IEBACiAKIG5h
bWVzcGFjZSBBUEkgewogCi1SZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRlKHVpbnQ2
NF90IHBhZ2VJRCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VI
YW5kbGUocGFnZUlELCBmYWxzZSkpOwogfQogCi1SZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRsZTo6
Y3JlYXRlQXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlEKQorUmVmPFBhZ2VIYW5kbGU+IFBh
Z2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgdHJ1
ZSkpOwogfQogCi1QYWdlSGFuZGxlOjpQYWdlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBp
c0F1dG9jb252ZXJ0aW5nKQorUGFnZUhhbmRsZTo6UGFnZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKICAgICA6IG1fcGFnZUlEKHBh
Z2VJRCkKICAgICAsIG1faXNBdXRvY29udmVydGluZyhpc0F1dG9jb252ZXJ0aW5nKQogewpAQCAt
NTksMTUgKzU5LDE2IEBAIHZvaWQgUGFnZUhhbmRsZTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5j
b2RlcikgY29uc3QKIAogYm9vbCBQYWdlSGFuZGxlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8T2JqZWN0PiYgcmVzdWx0KQogewotICAgIHVpbnQ2NF90IHBhZ2VJRDsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VJRCkpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHBhZ2VJRDsKKyAgICBpZiAoIXBh
Z2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgYm9vbCBpc0F1dG9jb252ZXJ0aW5n
OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaXNBdXRvY29udmVydGluZykpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRv
Y29udmVydGluZyhwYWdlSUQpIDogY3JlYXRlKHBhZ2VJRCk7CisgICAgcmVzdWx0ID0gaXNBdXRv
Y29udmVydGluZyA/IGNyZWF0ZUF1dG9jb252ZXJ0aW5nKCpwYWdlSUQpIDogY3JlYXRlKCpwYWdl
SUQpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBh
Z2VIYW5kbGUuaAppbmRleCBmMzBmYWZiZGMzMS4uN2Q3YWRjNjg5ZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaApAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBB
UElQYWdlSGFuZGxlX2gKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBJ
UEMgewpAQCAtMzgsMjAgKzM5LDIwIEBAIG5hbWVzcGFjZSBBUEkgewogCiBjbGFzcyBQYWdlSGFu
ZGxlIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpQYWdlSGFuZGxlPiB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGUodWludDY0X3QgcGFnZUlEKTsK
LSAgICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVpbnQ2NF90
IHBhZ2VJRCk7CisgICAgc3RhdGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOworICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlQXV0b2NvbnZl
cnRpbmcoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZpcnR1YWwgflBhZ2VIYW5kbGUo
KTsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9Cisg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
SUQ7IH0KICAgICBib29sIGlzQXV0b2NvbnZlcnRpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzQXV0
b2NvbnZlcnRpbmc7IH0KIAogICAgIHZvaWQgZW5jb2RlKElQQzo6RW5jb2RlciYpIGNvbnN0Owog
ICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkRlY29kZXImLCBSZWZQdHI8T2JqZWN0PiYpOwog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFBhZ2VIYW5kbGUodWludDY0X3QgcGFnZUlELCBib29s
IGlzQXV0b2NvbnZlcnRpbmcpOworICAgIGV4cGxpY2l0IFBhZ2VIYW5kbGUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGJvb2wgaXNBdXRvY29udmVydGluZyk7CiAKLSAgICBjb25zdCB1aW50NjRf
dCBtX3BhZ2VJRDsKKyAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsK
ICAgICBjb25zdCBib29sIG1faXNBdXRvY29udmVydGluZzsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbSBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbQppbmRl
eCAxY2I5ZTZjN2Q0MS4uZmU1YjkzODcxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KQEAgLTQ0LDcgKzQ0LDcg
QEAgUmVtb3RlT2JqZWN0UmVnaXN0cnk6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5KF9XS1JlbW90ZU9i
amVjdFJlZ2lzdHJ5ICpyZW1vdGVPYmplY3QKICAgICAsIG1fbWVzc2FnZVNlbmRlcihwYWdlKQog
ICAgICwgbV90YWtlQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oW10geyByZXR1cm4gUHJvY2Vzc1Ro
cm90dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKTsgfSkKICAgICAsIG1faXNSZWdpc3Rl
cmVkQXNNZXNzYWdlUmVjZWl2ZXIodHJ1ZSkKLSAgICAsIG1fbWVzc2FnZVJlY2VpdmVySUQocGFn
ZS5wYWdlSUQoKSkKKyAgICAsIG1fbWVzc2FnZVJlY2VpdmVySUQocGFnZS5wYWdlSUQoKS50b1VJ
bnQ2NCgpKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9tZXNzYWdlUmVjZWl2ZXJJRCwgKnRoaXMpOwogICAgIHBhZ2Uuc2V0UmVtb3RlT2JqZWN0UmVn
aXN0cnkoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCmluZGV4IDU4Y2IxZGQyYjVlLi43ZTk3ZjE3
NmMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3Np
bmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgsNyArMjgsNyBAQAogCiBAaW1wbGVtZW50
YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAotLSAoaWQpX2luaXRXaXRoUGFnZUlEOih1
aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBhZ2VJRDooV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAg
IHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0gKGlkKV9pbml0V2l0aFBhZ2VJRDoodWlu
dDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFzaAogewotICAgIHJldHVybiBfcGFnZUlE
OworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7CiB9CiAKIC0gKEJPT0wpaXNFcXVhbDoo
aWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0CiAK
IC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIHsKLSAgICBbY29kZXIg
ZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdlSUQiXTsKKyAgICBbY29kZXIgZW5jb2Rl
SW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpAInBhZ2VJRCJdOwogfQogCiAtIChpZClp
bml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAgLTYxLDcgKzYxLDcgQEAgLSAoaWQpaW5p
dFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcGFnZUlEID0gW2NvZGVyIGRlY29kZUlu
dDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVy
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2NvZGVyIGRlY29kZUludDY0Rm9yS2V5OkAi
cGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50
ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYS4uNDNlNDFlMjRjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFs
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0
SGFuZGxlSW50ZXJuYWwuaApAQCAtMjQsMTEgKzI0LDEyIEBACiAgKi8KIAogI2ltcG9ydCAiV0tC
cm93c2luZ0NvbnRleHRIYW5kbGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KIAogQGludGVyZmFjZSBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAoKQogCi1AcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlciA9IF9wYWdlSUQpIHVpbnQ2NF90IHBhZ2VJRDsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9wYWdlSUQpIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKIAotLSAoaWQpX2luaXRXaXRoUGFnZUlEOih1aW50NjRf
dClwYWdlSUQ7CistIChpZClfaW5pdFdpdGhQYWdlSUQ6KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KXBhZ2VJRDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IGViOGEwYjY2MTdh
Li5kNGUxYzI1MDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtNjYsNyArNjYsNyBA
QCBJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlU2Vu
ZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICpt
X2Rlc3RpbmF0aW9uSUQ7CisgICAgcmV0dXJuIG1fZGVzdGluYXRpb25JRC0+dG9VSW50NjQoKTsK
IH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y2FuTWFrZVBheW1lbnRzKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgcmVwbHkpCkBAIC04NCw3ICs4NCw3IEBAIHZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om9wZW5QYXltZW50U2V0dXAoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpCiAgICAgcGxhdGZvcm1PcGVuUGF5bWVudFNldHVwKG1lcmNo
YW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJM
U3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBh
eW1lbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1lbnRVSShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byYgY29vcmRpbmF0b3Ig
PSBhY3RpdmVQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpKQogICAgICAgICBjb29yZGluYXRvci0+
ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGQyMzdl
YWIzZGFiLi42ZTRhODVjZjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhl
YWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2FuTWFrZVBheW1l
bnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY2FuTWFrZVBh
eW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcm
IG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHNob3dQYXltZW50VUkodWludDY0X3Qg
ZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdV
UkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJp
bmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZh
bGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZv
aWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250
YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0
ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBDbGllbnQm
IG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2Rlc3RpbmF0aW9uSUQ7CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fZGVzdGluYXRpb25JRDsKIAogICAg
IGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90aGluZydzIGhhcHBlbmlu
Zy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5kZXggZGQzMTMxMjdi
ZjQuLjFkZTRjZGRjZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMzAsNyArMzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSB7CiAgICAgQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoU3RyaW5nIG1lcmNoYW50SWRl
bnRpZmllciwgU3RyaW5nIGRvbWFpbk5hbWUsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4g
KGJvb2wgY2FuTWFrZVBheW1lbnRzKSBBc3luYwogICAgIE9wZW5QYXltZW50U2V0dXAoU3RyaW5n
IG1lcmNoYW50SWRlbnRpZmllciwgU3RyaW5nIGRvbWFpbk5hbWUpIC0+IChib29sIHJlc3VsdCkg
QXN5bmMKIAotICAgIFNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZlY3RvcjxT
dHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAg
ICBTaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBWZWN0
b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3Vz
CiAgICAgQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50
U2Vzc2lvbiBwYXltZW50TWVyY2hhbnRTZXNzaW9uKQogICAgIENvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+IHVwZGF0
ZSkKICAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3Jl
OjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+IHVwZGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3Bw
CmluZGV4IDZlYjMzNWYwN2QzLi45ZGViNzZmZjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
Y3BwCkBAIC03NSw3ICs3NSw3IEBAIHVpbnQ2NF90IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6YWRk
Q2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdlJiYgY2hhbGxlbmdlCiAgICAgcmV0dXJu
IGNoYWxsZW5nZUlEOwogfQogCi1ib29sIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6c2hvdWxkQ29h
bGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgY29uc3QKK2Jvb2wgQXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSYgY2hhbGxlbmdlKSBjb25zdAogewogICAgIGlmICghY2FuQ29hbGVzY2VDaGFsbGVuZ2UoY2hh
bGxlbmdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA4LDcgKzEwOCw3IEBAIFZlY3Rv
cjx1aW50NjRfdD4gQXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb2FsZXNjZUNoYWxsZW5nZXNNYXRj
aGluZyh1aW50NjRfdCBjaGFsCiAgICAgcmV0dXJuIGNoYWxsZW5nZXNUb0NvYWxlc2NlOwogfQog
Ci12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0
aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocGFnZUlEKTsKICAgICBBU1NFUlQoZnJhbWVJRCk7
CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHUKIAogdm9pZCBBdXRo
ZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6
Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgdWludDY0X3QgZHVtbXlQYWdlSUQgPSAw
OworICAgIFBhZ2VJZGVudGlmaWVyIGR1bW15UGFnZUlEOwogICAgIHVpbnQ2NF90IGNoYWxsZW5n
ZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoeyBkdW1teVBhZ2VJRCwgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0pOwogICAgIAogICAg
IC8vIENvYWxlc2NlIGNoYWxsZW5nZXMgaW4gdGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZSBhbmQg
aW4gdGhlIHNhbWUgcGFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKaW5kZXggN2ZlMzk5ZTBiN2Uu
Ljg2ZTc0NGMxMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
dXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nl
c3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNl
bmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2b2lkIGNvbXBsZXRlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik7CkBAIC02OSw3ICs3MCw3
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hhbGxlbmdlIHsKLSAgICAgICAg
dWludDY0X3QgcGFnZUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7
CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKICAg
ICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhhbmRsZXI7CiAgICAg
fTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgdWludDY0
X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdlJiYpOwotICAgIGJvb2wgc2hv
dWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKKyAgICBi
b29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
KSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hp
bmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhp
bGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0NzVkYzIuLjE5MjUzZTJiYWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCkBAIC02Miw2ICs2MiwxOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAgICAgdm9pZCByZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpNZXNzYWdlUmVjZWl2ZXIm
KTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFkZE1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJ
ZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZl
cikKKyAgICB7CisgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKKyAgICB9CisgICAgCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxU
PiBkZXN0aW5hdGlvbklEKQorICAgIHsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CisgICAgfQogCiAg
ICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgKaW5kZXggNGY3NWZkODA2ZjYuLjU0ZDQyNzdiODUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCkBAIC0yOSwxMyArMjks
MTQgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50SWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRWxlbWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVj
dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHN0cnVjdCBUZXh0SW5wdXRDb250ZXh0IHsKICAgICBXZWJDb3JlOjpGbG9hdFJl
Y3QgYm91bmRpbmdSZWN0OwogCi0gICAgdWludDY0X3Qgd2ViUGFnZUlkZW50aWZpZXI7CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6
RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpFbGVt
ZW50SWRlbnRpZmllciBlbGVtZW50SWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCA5ZGJiMzZhNDU1My4uZDkwMGEx
NjczM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitSZWY8V2ViQmFja0ZvcndhcmRMaXN0
SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92
ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0Zvcndh
cmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQp
CiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSkpCiAg
ICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcihtX2l0
ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDg3MmVmMTgwOTVkLi5iYTM0NDgw
Y2Q1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
aApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAi
U2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBTdXNwZW5kZWRQYWdl
UHJveHk7CiAKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmpl
Y3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFJlZjxXZWJC
YWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKCk7CiAKICAgICBzdGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbUZvcklEKGNv
bnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKQEAgLTU0LDcgKzU1LDcg
QEAgcHVibGljOgogCiAgICAgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmll
ciYgaXRlbUlEKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtU3RhdGUuaWRlbnRpZmllcjsgfQogICAg
IGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRlbVN0YXRlKCkgeyByZXR1cm4gbV9p
dGVtU3RhdGU7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJ
RDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZUlEOyB9CiAKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vz
c0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsgfQog
ICAgIHZvaWQgc2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyID0gaWRlbnRp
ZmllcjsgfQpAQCAtODEsMTIgKzgyLDEyIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgot
ICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRMaXN0
SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
OwogCiAgICAgdm9pZCByZW1vdmVTdXNwZW5kZWRQYWdlRnJvbVByb2Nlc3NQb29sKCk7CiAKICAg
ICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7Ci0gICAgdWludDY0X3QgbV9w
YWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgV2ViQ29y
ZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgV2Vha1B0
cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVkUGFnZTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGU5ZGE2
MGFlZWJlLi4wY2JmZDAzNDZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTM5Miw3ICszOTIsNyBAQCBPcHRpb25hbDxX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNv
ZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRl
cnMuYmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAotICAgIE9w
dGlvbmFsPE9wdGlvbmFsPHVpbnQ2NF90Pj4gb2xkUGFnZUlEOworICAgIE9wdGlvbmFsPE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4gb2xkUGFnZUlE
OwogICAgIGlmICghb2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4
IGMyYmU4NDE0NmIzLi45MDEyN2JjMzEwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvSW50U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0TWlsZXN0b25lLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVByb2R1Y2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnaW5hdGlvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24uaD4KQEAgLTIwMiw3ICsyMDMsNyBAQCBzdHJ1Y3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyB7CiAKICAgICBPcHRpb25hbDxXZWJDb3JlOjpDb2xvcj4gYmFja2dy
b3VuZENvbG9yOwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IG9sZFBhZ2VJRDsKKyAgICBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb2xkUGFnZUlEOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09i
amVjdEdyYXBoLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5t
bQppbmRleCBjNjU0ODRmNTUxMi4uNzExYTI2MTk4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQpAQCAtMzAyLDcgKzMwMiw3IEBAIGJvb2wgT2JqQ09i
amVjdEdyYXBoOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8aWQ+JiBy
ZXN1bHQpCiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFnZUlEKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0Nv
bnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDpwYWdlSURdKTsKKyAgICAgICAgcmVz
dWx0ID0gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQ
YWdlSUQ6bWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXJUeXBlPihw
YWdlSUQpXSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggZWQ4NjM1ODIwMWIuLjU5NzAxYTEzNDM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTEyMDYsNyArMTIwNiw3IEBA
IHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3Qg
V0tQYWdlTG9hZGVyQ2xpZW50QmFzZSoKICAgICAgICAgbWlsZXN0b25lcy5hZGQoV2ViQ29yZTo6
RGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0KTsKIAogICAgIGlmIChtaWxlc3RvbmVzKQot
ICAgICAgICB3ZWJQYWdlUHJveHktPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpM
aXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCB3ZWJQYWdlUHJveHktPnBhZ2VJ
RCgpKTsKKyAgICAgICAgd2ViUGFnZVByb3h5LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0
ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpKTsKIAogICAgIHdlYlBhZ2VQcm94eS0+
c2V0TG9hZGVyQ2xpZW50KFdURk1vdmUobG9hZGVyQ2xpZW50KSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCmluZGV4IDEwNzU3ODFhZjJjLi4yZjljZmU5NDI0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFN0cmluZyBBdXRv
bWF0aW9uQ29tbWFuZEVycm9yOjp0b1Byb3RvY29sU3RyaW5nKCkKIHsKQEAgLTUyMiw3ICs1MjMs
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjp3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxl
dGVPbkZyYW1lKFdlYkZyYW1lUHJveHkmIGZyYQogICAgIH0KIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRp
bWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNw
b25kVG9QZW5kaW5nUGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPFBh
Z2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlPj4mIG1hcCkKIHsKICAgICBJbnNwZWN0b3I6OkVycm9yU3RyaW5nIHRpbWVvdXRFcnJv
ciA9IFNUUklOR19GT1JfUFJFREVGSU5FRF9FUlJPUl9OQU1FKFRpbWVvdXQpOwogICAgIGZvciAo
YXV0byBpZCA6IGNvcHlUb1ZlY3RvcihtYXAua2V5cygpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmlu
ZGV4IDY1ZWIzZTQ2ZTViLi5mMzljMDYxYjU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
QEAgLTIyNSw3ICsyMjYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlv
blRvQ29tcGxldGVPblBhZ2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0
b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7CiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlv
blRvQ29tcGxldGVPbkZyYW1lKFdlYkZyYW1lUHJveHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpB
dXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5LCBTZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPiYmKTsKLSAgICB2b2lkIHJlc3BvbmRUb1BlbmRp
bmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOworICAg
IHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQo
SGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCByZXNwb25kVG9QZW5kaW5n
RnJhbWVOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAg
dm9pZCBsb2FkVGltZXJGaXJlZCgpOwogCkBAIC0yODAsMjIgKzI4MSwyMiBAQCBwcml2YXRlOgog
ICAgIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5E
aXNwYXRjaGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25Gcm9u
dGVuZERpc3BhdGNoZXI+IG1fZG9tYWluTm90aWZpZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90
LCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRsZU1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgdWludDY0
X3Q+IG1faGFuZGxlV2ViUGFnZU1hcDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRsZU1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG1faGFuZGxlV2ViUGFnZU1hcDsKIAogICAgIEhhc2hNYXA8
dWludDY0X3QsIFN0cmluZz4gbV93ZWJGcmFtZUhhbmRsZU1hcDsKICAgICBIYXNoTWFwPFN0cmlu
ZywgdWludDY0X3Q+IG1faGFuZGxlV2ViRnJhbWVNYXA7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9w
ZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRl
eHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3Bl
bmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25J
bkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVu
ZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlckZyYW1lOwog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4
dENhbGxiYWNrc1BlckZyYW1lOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNwZWN0b3JD
YWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJl
ZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRp
bmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlOwogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9B
UkRfSU5URVJBQ1RJT05TKQotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoT3B0
aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNG
bHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1f
cGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoV0VCRFJJVkVSX01PVVNFX0lOVEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPHVpbnQ2
NF90LCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1f
cGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9u
Q29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQ
YWdlOwogI2VuZGlmCiAKICAgICB1aW50NjRfdCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxs
YmFja0lEIHsgMSB9OwpAQCAtMzE5LDcgKzMyMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyIEFQSXMgdGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBh
bHNvIGludGVybiB0aGVzZQogICAgIC8vIHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0
YXRlIGlzIHVzZWQgYXMgaW5pdGlhbCBzdGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCiAgICAgSGFz
aFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3Bh
dGNoZXJzQnlQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZjxT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CiAjZW5k
aWYKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKICAgICAvLyBL
ZWVwIHRyYWNrIG9mIGN1cnJlbnRseSBhY3RpdmUgbW9kaWZpZXJzIGFjcm9zcyBtdWx0aXBsZSBr
ZXlzdHJva2VzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaAppbmRleCA5ODkzZDM5OGI1Ny4uODU4YTViZWQ2ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC02Nyw2ICs2NywxOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNz
YWdlUmVjZWl2ZXImKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsK
ICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lKTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2
b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2
ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJl
Y2VpdmVyJiByZWNlaXZlcikKKyAgICB7CisgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKKyAg
ICB9CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2Jq
ZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAgIHsKKyAgICAgICAgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQo
KSk7CisgICAgfQogCiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7CiAgICAgICAgIExhdW5jaGluZywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eS5tbQppbmRleCBmMDVkNzljMGQwMS4uNjcwNjU5NzY4NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAgLTUyNyw5NCArNTI3LDk0IEBAIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2Uo
dWludDY0X3QgY29uCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwbGF5KHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRl
eHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGF1c2UodWlu
dDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQYXVzZShjb250
ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBs
YXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4dElkKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQp
CiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpC
ZWdpblNjcnViYmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2NydWJiaW5nKGNv
bnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Ny
dWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnViYmluZyhjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkVuZFNjcnViYmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGlt
ZSwgZG91YmxlIHRvbGVyYW5jZUJlZm9yZSwgZG91YmxlIHRvbGVyYW5jZUFmdGVyKQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2Vla1RvVGlt
ZShjb250ZXh0SWQsIHRpbWUsIHRvbGVyYW5jZUJlZm9yZSwgdG9sZXJhbmNlQWZ0ZXIpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRv
bGVyYW5jZUFmdGVyKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpm
YXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNlZWsoY29udGV4dElk
LCB0aW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhjb250ZXh0SWQsIHRpbWUpKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6QmVnaW5TY2FubmluZ0ZvcndhcmQoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29u
dGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVn
aW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6ZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmco
Y29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY2FubmluZyhjb250ZXh0SWQpKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24o
dWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24o
Y29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0QXVkaW9NZWRpYU9wdGlvbihj
b250ZXh0SWQsIGluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBp
bmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OlNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGljdHVyZUluUGljdHVyZSh1
aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQaWN0dXJlSW5QaWN0dXJlKGNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZU11dGVkKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlRvZ2dsZU11dGVkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlTXV0ZWQoY29udGV4
dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRNdXRlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRNdXRlZChjb250ZXh0SWQsIG11dGVkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpTZXRNdXRlZChjb250ZXh0SWQsIG11dGVkKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRWb2x1bWUodWludDY0X3QgY29udGV4dElkLCBk
b3VibGUgdm9sdW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpT
ZXRWb2x1bWUoY29udGV4dElkLCB2b2x1bWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OnNldFBsYXlpbmdPblNlY29uZFNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQs
IGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4o
Y29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFBsYXlpbmdPblNlY29uZFNj
cmVlbihjb250ZXh0SWQsIHZhbHVlKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpyZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCgpCiB7CiAgICAgaWYgKG1fY29udHJv
bHNNYW5hZ2VyQ29udGV4dElkKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OkhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KG1fY29u
dHJvbHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6SGFuZGxlQ29udHJvbGxl
ZEVsZW1lbnRJRFJlcXVlc3QobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpKTsKIH0KIAogUGxh
dGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRl
eCA2YmE0NzllMDYwYS4uYzhkNjVjMzYyYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KQEAg
LTYyMCw0MyArNjIwLDQzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpwcmVw
YXJlZFRvRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKHVpbnQ2NF90IGNvbnRl
eHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
IG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29udGV4
dElkLCBtb2RlLCBmaW5pc2hlZFdpdGhNZWRpYSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEZ1bGxz
Y3JlZW5Nb2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpKTsKIH0KIAogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KGNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6UmVxdWVzdFVwZGF0ZUlubGluZVJlY3QoY29udGV4dElkKSk7CiB9CiAKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWlu
dDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6UmVxdWVzdFZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6UmVxdWVzdFZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCkpOwogfQogCiB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIodWlu
dDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpSZXR1cm5WaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBj
b250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpEaWRTZXR1cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRT
ZXR1cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5Ojp3aWxsRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRG
dWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsc2NyZWVuKGNv
bnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRXhp
dEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3JlZW4oY29udGV4dElk
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICBtX3Bh
Z2UtPmRpZEV4aXRGdWxsc2NyZWVuKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxs
c2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRl
eHRJZCkpOwogICAgIG1fcGFnZS0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7CiB9CiAKQEAgLTY3MCw3
ICs2NzAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkQ2xlYW51cEZ1
bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIFtDQVRyYW5zYWN0aW9uIGZsdXNoXTsK
ICAgICBbbW9kZWwtPmxheWVySG9zdFZpZXcoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICBt
b2RlbC0+c2V0TGF5ZXJIb3N0VmlldyhudWxscHRyKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6RGlkQ2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAKICAg
ICBpbnRlcmZhY2UtPnNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlTm9uZSk7CiAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChjb250ZXh0SWQpOwpAQCAt
Njg4LDI1ICs2ODgsMjUgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZp
ZGVvTGF5ZXJGcmFtZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmUKICAgICAgICAgbWFjaF9w
b3J0X25hbWVfdCBmZW5jZVBvcnQgPSBmZW5jZVNlbmRSaWdodC5sZWFrU2VuZFJpZ2h0KCk7CiAj
ZW5kaWYKIAotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OlNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChjb250ZXh0SWQsIGZyYW1lLCBJUEM6OkF0
dGFjaG1lbnQoZmVuY2VQb3J0LCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoY29udGV4dElkLCBmcmFtZSwgSVBDOjpB
dHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKSk7CiAgICAgfQog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckdyYXZp
dHkodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpWaWRlb0dy
YXZpdHkgZ3Jhdml0eSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShjb250ZXh0SWQsICh1bnNpZ25l
ZClncmF2aXR5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oY29udGV4
dElkLCAodW5zaWduZWQpZ3Jhdml0eSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAg
ICAgbV9wYWdlLT51aUNsaWVudCgpLmhhc1ZpZGVvSW5QaWN0dXJlSW5QaWN0dXJlRGlkQ2hhbmdl
KG1fcGFnZSwgbW9kZSAmIE1lZGlhUGxheWVyRW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0
dXJlSW5QaWN0dXJlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OkZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChjb250ZXh0SWQsIG1vZGUpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OkZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChjb250ZXh0SWQsIG1vZGUpKTsKIH0KIAogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGlu
ZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgYm9vbCBpc1ZpZXdWaXNpYmxlID0gbV9wYWdl
LT5pc1ZpZXdWaXNpYmxlKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCBpc1Zp
ZXdWaXNpYmxlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoY29u
dGV4dElkLCBpc1ZpZXdWaXNpYmxlKSk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBmOTE0NjgxMWM1
NS4uZmMzZWZiZTI2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlBhZ2VQcm94eUNvY29hLm1tCkBAIC0yMDIsNyArMjAyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlv
bmFyeUxvb2t1cEF0TG9jYXRpb24ocG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50KSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNl
bGVjdGlvbigpCkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24o
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkpOwogfQogICAgIAogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCkBAIC0yNjYsMTcgKzI2NiwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVzdW1l
U3BlYWtpbmcoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c3BlYWtpbmdFcnJvck9jY3VycmVkKFdlYkNvcmU6OlBsYXRmb3Jt
U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U3BlYWtpbmdFcnJvck9jY3VycmVkKCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTcGVha2luZ0Vycm9yT2NjdXJyZWQoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojpib3VuZGFyeUV2ZW50T2NjdXJyZWQoV2ViQ29yZTo6UGxhdGZvcm1TcGVl
Y2hTeW50aGVzaXNVdHRlcmFuY2UmLCBXZWJDb3JlOjpTcGVlY2hCb3VuZGFyeSBzcGVlY2hCb3Vu
ZGFyeSwgdW5zaWduZWQgY2hhckluZGV4KQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpCb3VuZGFyeUV2ZW50T2NjdXJyZWQoc3BlZWNoQm91bmRhcnkgPT0gV2ViQ29y
ZTo6U3BlZWNoQm91bmRhcnk6OlNwZWVjaFdvcmRCb3VuZGFyeSwgY2hhckluZGV4KSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJvdW5kYXJ5RXZlbnRPY2N1cnJlZChz
cGVlY2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpTcGVlY2hCb3VuZGFyeTo6U3BlZWNoV29yZEJvdW5k
YXJ5LCBjaGFySW5kZXgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZvaWNlc0RpZENoYW5n
ZSgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZvaWNlc0RpZENo
YW5nZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vm9pY2VzRGlk
Q2hhbmdlKCkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShTUEVFQ0hfU1lOVEhFU0lTKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDJhYTc0OGYw
MDRmLi4wOGEzZDMwOGQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwubW0KQEAgLTE5OTcsMTMgKzE5OTcsMTMgQEAgZmxvYXQgV2ViVmlld0ltcGw6Omlu
dHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBXZWJWaWV3SW1wbDo6d2lu
ZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmll
d0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0aGlzLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChw
YWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oldp
bmRvd0lzQWN0aXZlIH0pOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9u
U2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdl
ICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRv
d0RpZE9yZGVyT25TY3JlZW4iLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwog
ICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7
CiB9CiAKQEAgLTIwNzEsNyArMjA3MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENo
YW5nZUxheWVySG9zdGluZygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZU9j
Y2x1c2lvblN0YXRlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVw
IChwYWdlICVsbHUpIHdpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFn
ZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSIsIHRoaXMsIG1fcGFnZS0+cGFn
ZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAgLTIyMzQsMTkgKzIyMzQs
MTkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzKCkK
IAogdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0
YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChw
YWdlICVsbHUpIHZpZXdEaWRIaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZFVuaGlkZSgp
CiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2
aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5
U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywg
bV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRDaGFuZ2UoKQogewotICAgIExPRyhBY3Rpdml0eVN0
YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgYWN0aXZlU3BhY2VEaWRDaGFuZ2UiLCB0
aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJ
bXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNwYWNlRGlkQ2hhbmdlIiwgdGhpcywgbV9wYWdlLT5w
YWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCBiNWI0ZTBhZDIyMS4uOWJiN2Nj
NjdkNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3Bw
CkBAIC00OCwxMiArNDgsMTIgQEAgRHJhd2luZ0FyZWFQcm94eTo6RHJhd2luZ0FyZWFQcm94eShE
cmF3aW5nQXJlYVR5cGUgdHlwZSwgV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHIKICAgICAsIG1fdmll
d0V4cG9zZWRSZWN0Q2hhbmdlZFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkRyYXdpbmdB
cmVhUHJveHk6OnZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lckZpcmVkKQogI2VuZGlmCiB7Ci0g
ICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsK
KyAgICBwcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIpLCAqdGhpcyk7CiB9CiAKIERy
YXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICBwcm9jZXNzKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBwcm9jZXNzKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAKIGJvb2wgRHJhd2luZ0FyZWFQcm94eTo6
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggY2E3Njg3ZjZiNTIu
LmI5MzAxMjg1OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApA
QCAtNjIsNyArNjIsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZQogICAgICAgICByZXR1cm47
CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9uRGVjaXNpb24o
Z2VvbG9jYXRpb25JRCwgYWxsb3dlZCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNp
c2lvbihnZW9sb2NhdGlvbklELCBhbGxvd2VkKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShh
bGxvd2VkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
VGFyZ2V0UHJveHkuY3BwCmluZGV4IDYyYjA3MjlmOGE1Li4wZjQxMDIwZWE3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcApAQCAtNTAs
MTkgKzUwLDE5IEBAIEluc3BlY3RvclRhcmdldFByb3h5OjpJbnNwZWN0b3JUYXJnZXRQcm94eShX
ZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGFyCiB2b2lkIEluc3BlY3RvclRhcmdl
dFByb3h5Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBjaGFubmVsKQogewog
ICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wYWdlLnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25uZWN0SW5zcGVjdG9yKGlkZW50aWZpZXIo
KSwgY2hhbm5lbC5jb25uZWN0aW9uVHlwZSgpKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmll
cigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUYXJn
ZXRQcm94eTo6ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCYpCiB7CiAgICAg
aWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3BhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigp
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yVGFyZ2V0UHJveHk6OnNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKIHsKICAgICBpZiAobV9wYWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAg
IG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZE1lc3NhZ2VUb1Rh
cmdldEJhY2tlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRNZXNzYWdlVG9UYXJnZXRC
YWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDM0NDNiMzg1ZmFjLi4yZDk5NjZlM2M4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRD
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGEKICNlbmRp
ZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdl
SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxl
bmdlSUQpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChhdXRvKiBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbV9wcm9jZXNzUG9vbC5zZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5RnJvbVBhZ2VJRChwYWdlSUQpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVu
Y2hlciwgSVBDOjpDb24KICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omxv
Z0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxk
U2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsK
ICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1c2UgYnkgdGhlIHRpbWUg
dGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkgYmUgZ29uZS4gV2Ugc2hv
dWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFN0cmluZyYgbWUKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZShtZXNzYWdlLCBk
ZXNjcmlwdGlvbiwgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3Vs
dCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1
aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7
CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5IHRoZSB0aW1l
IHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdvbmUuIFdlIHNo
b3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQo
bWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVu
c2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNh
bXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBh
Z2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1c2Ug
YnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkgYmUg
Z29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC03MzYsNyArNzM2LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXMKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRHcmFuZGZhdGhlcmVkKHNlc3Npb25JRCwgcmVzb3VyY2VE
b21haW4sIGlzR3JhbmRmYXRoZXJlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0o
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJ
RCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojpub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
dW5zaWduZWQKICAgICBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1l
dHJ5RmluaXNoZWQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUobWVzc2FnZUJvZHkpLnB0cigpKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
dWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRX
aXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWlu
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMjBhNzk5OGM0ZGMuLjJiZWM2OGZk
ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCArODEsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2
aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBE
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsK
ICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAg
ICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50
NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBleHBsaWNpdCBOZXR3
b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBAIC0xMzEsNyArMTI5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYpOwotICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJRCwgRnJhbWVJRCwgY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9p
ZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZp
ZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGJvb2wgZGVidWdNb2Rl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIGJvb2ws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0
IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6
OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRv
RG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5h
dmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29v
a2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Ym9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJz
CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNoYWxs
ZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZvaWQgZGlkRmV0
Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRlRGF0YSYpOwog
ICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAgIHZvaWQgbG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWdu
ZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZvaWQg
bG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9p
ZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUg
dmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
KTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1
bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVu
dChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGYuLjIyZmZmZDE5ODgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRDcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCiAK
LSAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVu
Z2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQorICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWludDY0X3QgY2hh
bGxlbmdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQs
IHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQogICAgIERpZERlbGV0ZVdl
YnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC0zNSw5ICszNSw5IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldElzSG9sZGlu
Z0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCiAKICAgICAjIERpYWdub3N0
aWMgbWVzc2FnZXMgbG9nZ2luZwotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZW51bTpib29sIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAgTG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlw
dGlvbiwgdWludDMyX3QgcmVzdWx0LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNo
b3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBw
YWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwg
dW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGVu
dW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAgIExvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0
cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAgTG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdHJpbmcg
bWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25p
ZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCiAgICAgTG9nR2xvYmFsRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoU3RyaW5nIG1lc3Nh
Z2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2Fu
dEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTQ2LDcgKzQ2LDcgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgTm90
aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCkKICAg
ICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAg
ICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVk
IHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zKQotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wg
dXNlckRpZEdyYW50QWNjZXNzKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmly
bShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3lu
YwogICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4g
ZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMp
IC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aE1hdGNo
aW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcAppbmRleCBmODc2MWIxZjNmNC4uM2YyODczMmFiNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dD4gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyCiB7CiAgICAg
YXV0byByZXF1ZXN0ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShbdGhp
cywgbm90aWZpY2F0aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1fcGFnZSldKGJvb2wgYWxsb3dlZCkg
ewogICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5vdGlmaWNhdGlvbklEKTsKLSAgICAg
ICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93ZWQpLCBwYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93
ZWQpKTsKICAgICB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQobm90aWZpY2F0aW9uSUQs
IHJlcXVlc3QucHRyKCkpOwogICAgIHJldHVybiByZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZhZTFmM2ZjYTg4Li4yYWFmZjFlYzJhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTcsNyArOTcsNyBA
QCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdl
YlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNh
dGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwogICAgIGF1dG8gbm90aWZp
Y2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25VUkwsIHRh
ZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklEKTsKLSAgICBz
dGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIgPSBzdGQ6Om1h
a2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsKKyAgICBzdGQ6
OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIgPSBzdGQ6
Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsKICAgICBt
X2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNh
dGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb25JRFBhaXIs
IHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24uY29weVJl
ZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgp
KTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwKICAgICB9CiB9
CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90LCB1
aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3N0YXRpYyBi
b29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90LCBQYWdlSWRl
bnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKIHsKICAgICBy
ZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VBbmRO
b3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmlj
YXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
ZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5kTm90aWZpY2F0
aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0
aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBwYWdlSUQgPT0g
ZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlucyhwYWdl
Tm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEzICsxNDEsMTMgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBh
Z2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZp
Y2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBh
Z2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0
aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOwor
ICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CiAKICAgICBWZWN0b3I8
dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAgICBnbG9iYWxOb3RpZmljYXRpb25J
RHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUoKSk7CiAKICAg
ICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKSwgZW5kID0gbV9ub3RpZmlj
YXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgdWludDY0X3Qgd2ViUGFn
ZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+a2V5LmZp
cnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+a2V5LnNlY29u
ZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VOb3RpZmljYXRp
b25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm90CiAgICAg
aWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAgYXV0byB3
ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0g
V2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQog
ICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFs
Tm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7
CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5
KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNS4uZTc4ZGFiYTZmZmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9v
bCopOwogCi0gICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCB1aW50NjRfdCBkZXNp
cmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlv
bklEcyk7CisgICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklE
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWlu
dDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBjbGVhck5vdGlm
aWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlm
aWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pOwogCiAgICAgLy8gV2ViQ29u
dGV4dFN1cHBsZW1lbnQKQEAgLTg4LDkgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwogICAgIC8vIFBh
aXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFuZCB0aGUgd2ViIHByb2Nlc3MncyBub3RpZmlj
YXRpb24gSUQKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2
NF90Pj4gbV9nbG9iYWxOb3RpZmljYXRpb25NYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgc3Rk
OjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwOwogICAgIC8vIEtleSBwYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQg
dGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElEOyB2YWx1ZSBwYWlyIGNvbXByaXNlZCBv
ZiBnbG9iYWwgbm90aWZpY2F0aW9uIElELCBhbmQgbm90aWZpY2F0aW9uIG9iamVjdAotICAgIEhh
c2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRfdCwg
UmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CisgICAgSGFzaE1hcDxz
dGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90Piwgc3RkOjpwYWlyPHVp
bnQ2NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDQ1YTFmMGY1YjVjLi41MTg4OTNiMDg0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcApA
QCAtNDcsNiArNDcsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CisKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQs
IC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBj
aGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsICMjX19WQV9B
UkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10
LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlzLCAj
I19fVkFfQVJHU19fKQogCkBAIC02MSw3ICs2Myw3IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpQ
cm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJv
CiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVncm91
bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSAl
IiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIs
IG1fcGFnZS5wYWdlSUQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdldCgpKTsKKyAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lv
bmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1
NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBuYXZp
Z2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCiAgICAgbV9wcm9jZXNzLT5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lvbmFs
UGFnZVByb3h5KCp0aGlzKTsKQEAgLTEwMCw3ICsxMDIsNyBAQCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KCkKICAgICAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9v
bCgpLnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLnBhZ2VJRCgpLCBtX3Byb2Nl
c3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZS5wYWdlSUQoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
bG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNs
b3NlKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIobV9wYWdl
LnZpc2l0ZWRMaW5rU3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKIAogICAgIFJ1bkxvb3A6Om1h
aW4oKS5kaXNwYXRjaChbcHJvY2VzcyA9IG1fcHJvY2Vzcy5jb3B5UmVmKCldIHsKQEAgLTExNyw3
ICsxMTksNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpjb25uZWN0aW9uV2lsbE9wZW4o
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS5wcm92aXNpb25hbFBy
b2Nlc3NEaWRUZXJtaW5hdGUoKTsKIH0KIApAQCAtMTMyLDcgKzEzNCw3IEBAIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxh
dGluZyBhIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSBmb3IgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgQVNTRVJUKG1fbWFpbkZyYW1l
KTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpjYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpOwog
ICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0
aW9uKTsKQEAgLTE1MSwxNCArMTUzLDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6Omlu
aXRpYWxpemVXZWJQYWdlKCkKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEo
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRl
UG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJsb2FkRGF0YTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50
NjQoKSk7CiAKICAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nl
c3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VV
UkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Olllcywg
V1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwg
T3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNsaWVu
dC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcgaW4gYSBuZXcgcHJvY2VzcywgdGhlbiB0aGUgbmV3
IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhlIGZyb21JdGVtJ3MgVVJMLiBJbiB0aGlzIGNhc2Us
CiAgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXBkYXRlIGZyb21JdGVtJ3MgcHJvY2Vz
c0lkZW50aWZpZXIgYXMgd2Ugd2FudCBmdXR1cmUgbmF2aWdhdGlvbnMgdG8gdGhpcyBCYWNrRm9y
d2FyZCBpdGVtIHRvIGhhcHBlbiBpbiB0aGUKQEAgLTE3MSw3ICsxNzMsNyBAQCB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IFdlYkNvcmU6OlJlcwogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFj
a0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJ
dGVtOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAog
ICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0
ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAgICAg
ICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7CkBAIC0xODAsOCArMTgy
LDggQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
Jml0ZW0gIT0gdGFyZ2V0SXRlbTsKICAgICB9KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdURk1vdmUoaXRl
bVN0YXRlcykpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgp
LCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwg
V2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0
ZVBvbGljaWVzKSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goV1RGTW92ZShpdGVtU3RhdGVzKSkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdh
dGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgKm5hdmlnYXRpb24uYmFja0Zvcndh
cmRGcmFtZUxvYWRUeXBlKCksIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNp
dmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCkBAIC0xOTYsNyArMTk4LDcgQEAgaW5saW5lIGJv
b2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgT3B0aW9uYWwKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFp
bkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1l
OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJ
RCgpLnRvVUludDY0KCksIGZyYW1lSUQpOwogICAgIEFTU0VSVCghbV9tYWluRnJhbWUpOwogCiAg
ICAgbV9tYWluRnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUobV9wYWdlLCBmcmFtZUlEKTsK
QEAgLTIzNCw3ICsyMzYsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbgogICAgIGlmICghdmFs
aWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3Bh
Z2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKICAgICBBU1NF
UlQobV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2Fk
VVJMID0gdXJsOwogCkBAIC0yNTQsNyArMjU2LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnMK
ICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdl
LnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0
aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBu
YXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkp
OwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogCkBAIC0yNzAsNyArMjcyLDcgQEAg
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmkKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwg
bmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2
NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQg
PSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBuYXZpZ2F0
aW9uSUQpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogICAgIG1fcHJvY2Vzcy0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKIApAQCAtMjk1LDcgKzI5Nyw3IEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWluCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCisgICAgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxp
c3RlbmVySUQpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25J
RCkpCkBAIC0zNDEsNyArMzQzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6YmFja0Zv
cndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGUKIH0KIAogdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJ
bmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFt
ZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdp
bmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5
ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtMzc0LDYgKzM3NiwxNiBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4oY29uc3QgSVBD
OjpEYXRhUgogfQogI2VuZGlmCiAKK0lQQzo6Q29ubmVjdGlvbiogUHJvdmlzaW9uYWxQYWdlUHJv
eHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm9j
ZXNzLT5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS5w
YWdlSUQoKS50b1VJbnQ2NCgpOworfQorCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6RGVjb2RlciYg
ZGVjb2RlcikKIHsKICAgICBBU1NFUlQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0g
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDY0NTZjMWY5
MTZkLi5iODYzZmRkMDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNs
dWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTU4LDcgKzU5
LDcgQEAgc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwogc3RydWN0IFVSTFNjaGVtZVRhc2tQ
YXJhbWV0ZXJzOwogc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiAKLWNsYXNzIFByb3Zp
c2lvbmFsUGFnZVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHsKK2NsYXNzIFByb3Zpc2lvbmFsUGFn
ZVByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3Nh
Z2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQcm92aXNpb25hbFBhZ2VQcm94eT4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFByb3Zpc2lvbmFsUGFn
ZVByb3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHN0ZDo6dW5pcXVl
X3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgaXNT
ZXJ2ZXJSZWRpcmVjdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCk7CkBAIC05Miw5ICs5MywxMyBAQCBwcml2YXRlOgogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8
SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgor
ICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5h
bDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFs
OwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0
X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCi0gICAgICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0
Qm9keSwKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsCiAg
ICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTEwLDcgKzExNSw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9p
ZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYm
KT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50
NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2Vy
RGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9p
ZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5tbQppbmRleCAwNTU5Yzk4NzRiZC4uMjc4Y2E4NTRmMzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0xMTUsNyArMTE1
LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcKICAgICBJT1N1cmZhY2VQb29sOjpzaGFyZWRQ
b29sKCkuc2V0UG9vbFNpemUoMCk7CiAjZW5kaWYKIAotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgcHJv
Y2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiAK
ICAgICBpZiAobV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS50aWxlZFNjcm9sbGluZ0luZGlj
YXRvclZpc2libGUoKSkKICAgICAgICAgaW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9yKCk7CkBAIC0x
MjQsNyArMTI0LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcKIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHk6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KCkKIHsKICAg
ICBtX2NhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52
YWxpZGF0ZWQpOwotICAgIHByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CiAgICAgW21fZGlzcGxheUxpbmtIYW5kbGVyIGludmFsaWRhdGVdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDY2Nzlk
NDViZDk5Li4wODZhZWIwNzk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIFJlbW90
ZVdlYkluc3BlY3RvclByb3h5Ojpsb2FkKGNvbnN0IFN0cmluZyYgZGVidWdnYWJsZVR5cGUsIGNv
bnN0IFN0cmluZyYgYgogICAgIG1fZGVidWdnYWJsZVR5cGUgPSBkZWJ1Z2dhYmxlVHlwZTsKICAg
ICBtX2JhY2tlbmRDb21tYW5kc1VSTCA9IGJhY2tlbmRDb21tYW5kc1VSTDsKIAotICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJ
OjpJbml0aWFsaXplKGRlYnVnZ2FibGVUeXBlLCBiYWNrZW5kQ29tbWFuZHNVUkwpLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVdlYkluc3BlY3RvclVJOjpJbml0aWFsaXplKGRlYnVnZ2FibGVUeXBlLCBiYWNrZW5k
Q29tbWFuZHNVUkwpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwo
KSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQogCkBAIC04MSw3
ICs4MSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQogCiB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSks
IG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNz
YWdlKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZyb250ZW5kRGlkQ2xv
c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCA1YTE0ZmJlNGRjZC4uYjJmNzcyOWZkMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3Bw
CkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6dXBkYXRl
UHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlCiAgICAgc2VuZChNZXNz
YWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3Rv
cmUgeyBzdG9yZSB9LCAwKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBjaGFsbGVuZ2Up
Cit2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmIGNoYWxsZW5nZSkKIHsKICAgICBVTlVTRURf
UEFSQU0ocGFnZUlEKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKaW5kZXggOTMy
NDVmMGRjNzYuLmU5MzY1YWZhYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCkBAIC00MSwxNCArNDEsMTQgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0
cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJl
ZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
ZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwogCiAgICAgdm9p
ZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9u
SUQ+IGluaXRpYWxTZXNzaW9uSUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0
cmFibGVEb21haW4oKSB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9Ci0gICAgdWludDY0
X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNl
V29ya2VyUGFnZUlEOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vi
c2l0ZURhdGFTdG9yZSYpOwogCiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdp
c3RyYWJsZURvbWFpbjsKLSAgICB1aW50NjRfdCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQgeyAwIH07
CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUGFnZUlEOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCAxMzQ2ZmNjMDVjNS4uZWJlNDE3NGNjM2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtOTIs
NyArOTIsNyBAQCBTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdl
UHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JgogICAgIG1fcHJvY2Vzcy0+YWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CiAKICAgICBtX3N1c3BlbnNpb25UaW1lb3V0VGlt
ZXIuc3RhcnRPbmVTaG90KHN1c3BlbnNpb25UaW1lb3V0KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3BhZ2UucGFnZUlEKCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpKTsKIH0K
IAogU3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKQEAgLTE0Nyw3ICsx
NDcsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKCkKICAgICBBU1NFUlQo
bV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpTdXNwZW5kZWQpOwogCiAgICAg
bV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNwZW5zaW9uU3RhdGU6OlJlc3VtZWQ7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChmYWxzZSksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNTdXNwZW5kZWQo
ZmFsc2UpKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkKQEAgLTE1OSw3
ICsxNTksNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCki
LCB0aGlzKTsKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CiB9CiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojpw
YWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKQEAgLTI0MiwxMSArMjQyLDIx
IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwKIHsKIH0KIAorSVBDOjpDb25uZWN0aW9uKiBTdXNw
ZW5kZWRQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFN1c3BlbmRlZFBh
Z2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVy
biBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKTsKK30KKwogI2lmICFMT0dfRElTQUJMRUQKIAog
Y29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRw
dHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgpLCAiLCBtX3N1c3BlbnNp
b25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zdXNwZW5zaW9uU3RhdGUpLCAnKScp
OworICAgIHJldHVybiBkZWJ1Z1N0cmluZygiKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dHB0cl90Pih0aGlzKSksICIgcGFnZSBJRCAiLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwg
IiwgbV9zdXNwZW5zaW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc3VzcGVuc2lv
blN0YXRlKSwgJyknKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5oCmluZGV4IDBkYWQwNTRiMjcyLi42MzVlYmEwMDBkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAgLTI2LDYgKzI2
LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
Ik1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVk
ZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3Nh
Z2VzLmgiCkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKIAogZW51bSBj
bGFzcyBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUgOiBib29sIHsgTm8sIFllcyB9OwogCi1jbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkgZmlu
YWw6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFN1
c3BlbmRlZFBhZ2VQcm94eT4geworY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5IGZpbmFsOiBwcml2
YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwgcHVi
bGljIENhbk1ha2VXZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gewogICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFN1c3BlbmRlZFBhZ2VQcm94eShXZWJQYWdlUHJv
eHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBtYWluRnJhbWVJRCwgU2hvdWxk
RGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKQEAg
LTcxLDYgKzcyLDEwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7Cisg
ICAgCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CiAKICAgICBXZWJQYWdlUHJveHkmIG1f
cGFnZTsKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggOTcxMWIyMzM3MjEuLjAxYjZkMTJlNDU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC03Myw3ICs3
Myw3IEBAIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojp+V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkoKQogewogICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKS5y
ZW1vdmUobV9pZGVudGlmaWVyKTsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykgewotICAgICAgICBwcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogICAgICAgICBwcm9jZXNzLT5kaWREZXN0cm95V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMpOwogICAgIH0KICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQpAQCAtODUsNyArODUsNyBAQCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9j
ZXNzUHJveHksIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAg
aWYgKG1fcHJvY2Vzc2VzLmFkZCgmd2ViUHJvY2Vzc1Byb3h5KS5pc05ld0VudHJ5KQotICAgICAg
ICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgKnRoaXMpOworICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCksICp0aGlzKTsKIAogICAgIEFTU0VSVChwYXJhbWV0
ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiB3
b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkm
IHdlYlByb2Nlc3NQcm8KICAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMoJndlYlByb2Nl
c3NQcm94eSkpOwogCiAgICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNzUHJveHkpOwot
ICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYg
d29ybGQpCkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW4KICAgICBy
ZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7CiB9CiAKLXZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRh
JiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVm
ZXJlbmNlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2Vi
UGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oCmluZGV4IDYyMzMwMTExNmVkLi4wZWQzNmE1OWNjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiVXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291
bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xMTAsNyArMTExLDcgQEAg
cHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2Vp
dmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWlu
dDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAKICAg
ICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CiAg
ICAgdm9pZCByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50V29ybGQm
LCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgxNzE0MzUxZmNlLi4yNWE0
ZTI5MTI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4KQEAgLTI0LDUgKzI0LDUgQEAKICAqLwogCiBtZXNzYWdlcyAtPiBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eSB7Ci1EaWRQb3N0TWVzc2FnZSh1aW50NjRfdCBwYWdlSUQs
IHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVz
c2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRzQ29ubmVjdGlv
bgorRGlkUG9zdE1lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5k
bGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5lY3Rpb24KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCAxZjI2MDI5MWNjNy4uYmQzN2Jh
MGM5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTExOSw3ICsx
MTksNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjYXB0
dXJlRGV2aWNlc0NoYW5nZWQoKQogICAgICAgICBpZiAobV9ncmFudGVkUmVxdWVzdHMuaXNFbXB0
eSgpICYmICEqb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1
cmVEZXZpY2VzQ2hhbmdlZCgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwdHVyZURldmljZXNDaGFuZ2VkKCkpOwogICAgIH07CiAK
ICAgICBhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV9wYWdl
Lm1haW5GcmFtZSgpLT51cmwoKSk7CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGVueVJlcXVlc3QodWludDY0X3QgdXNlck1l
ZGlhSUQsIFUKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHVzZXJNZWRpYUlELCAiLCBy
ZWFzb246ICIsIHJlYXNvbik7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIG1fcGFn
ZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNzV2FzRGVu
aWVkKHVzZXJNZWRpYUlELCB0b1dlYkNvcmUocmVhc29uKSwgaW52YWxpZENvbnN0cmFpbnQpLCBt
X3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2Vy
TWVkaWFBY2Nlc3NXYXNEZW5pZWQodXNlck1lZGlhSUQsIHRvV2ViQ29yZShyZWFzb24pLCBpbnZh
bGlkQ29uc3RyYWludCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVhc29uKTsKICAgICBV
TlVTRURfUEFSQU0oaW52YWxpZENvbnN0cmFpbnQpOwpAQCAtMjk2LDExICsyOTYsMTEgQEAgYm9v
bCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z3JhbnRBY2Nlc3MoY29u
c3QgVXNlck1lZGlhUGVybWlzc2kKICAgICB9CiAKICAgICArK21faGFzUGVuZGluZ0NhcHR1cmU7
Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCB7IHJlcXVlc3QudXNl
ck1lZGlhSUQoKSwgcmVxdWVzdC5hdWRpb0RldmljZSgpLCByZXF1ZXN0LnZpZGVvRGV2aWNlKCks
IHJlcXVlc3QuZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KCkgfSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkIHsgcmVxdWVzdC51c2VyTWVk
aWFJRCgpLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCksIHJlcXVlc3QudmlkZW9EZXZpY2UoKSwgcmVx
dWVzdC5kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAtLW1faGFzUGVuZGluZ0NhcHR1cmU7Ci0gICAgfSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpAQCAtNjA4LDcgKzYw
OCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmVudW1l
cmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2CiAKICAgICAgICAgICAgIGJvb2wgcmV2ZWFs
SWRzQW5kTGFiZWxzID0gb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcyB8fCB3YXNHcmFudGVkVmlk
ZW9PckF1ZGlvQWNjZXNzKGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2luLmdldCgpLCB0
b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpKTsKIAotICAgICAgICAgICAgbV9wYWdlLnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVy
YXRpb24geyB1c2VyTWVkaWFJRCwgY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChyZXZlYWxJZHNB
bmRMYWJlbHMsIGRldmljZUlESGFzaFNhbHQpLCBkZXZpY2VJREhhc2hTYWx0LCBvcmlnaW5IYXNQ
ZXJzaXN0ZW50QWNjZXNzIH0sIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgICAgICAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVNZWRpYURldmljZUVudW1lcmF0aW9u
IHsgdXNlck1lZGlhSUQsIGNvbXB1dGVGaWx0ZXJlZERldmljZUxpc3QocmV2ZWFsSWRzQW5kTGFi
ZWxzLCBkZXZpY2VJREhhc2hTYWx0KSwgZGV2aWNlSURIYXNoU2FsdCwgb3JpZ2luSGFzUGVyc2lz
dGVudEFjY2VzcyB9KTsKICAgICAgICAgfSk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXggMjQ4MTgyZDgwOTIu
Ljc2ODA2ZDQ4NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0
dXJlQ29udHJvbGxlci5jcHAKQEAgLTY2LDEwICs2NiwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQg
bWluaW11bVNjcm9sbEV2ZW50UmF0aW9Gb3JTd2lwZSA9IDAuNTsKIHN0YXRpYyBjb25zdCBmbG9h
dCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7
CiAjZW5kaWYKIAotc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFZpZXdHZXN0dXJlQ29udHJvbGxl
cio+JiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKQorc3RhdGljIEhhc2hNYXA8
UGFnZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNvbnRy
b2xsZXJzRm9yQWxsUGFnZXMoKQogewogICAgIC8vIFRoZSBrZXkgaW4gdGhpcyBtYXAgaXMgdGhl
IGFzc29jaWF0ZWQgcGFnZSBJRC4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDx1
aW50NjRfdCwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJlQ29udHJvbGxlcnM7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcio+PiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzOwogICAgIHJldHVybiB2
aWV3R2VzdHVyZUNvbnRyb2xsZXJzLmdldCgpOwogfQogCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbm5lY3RUb1Byb2Nlc3MoKQogICAgIG1faXNDb25u
ZWN0ZWRUb1Byb2Nlc3MgPSB0cnVlOwogfQogCi1WaWV3R2VzdHVyZUNvbnRyb2xsZXIqIFZpZXdH
ZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1cmUodWludDY0X3QgcGFnZUlELCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBnZXN0dXJlSUQpCitWaWV3R2VzdHVyZUNv
bnRyb2xsZXIqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1cmUoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBnZXN0
dXJlSUQpCiB7CiAgICAgYXV0byBnZXN0dXJlQ29udHJvbGxlckl0ZXIgPSB2aWV3R2VzdHVyZUNv
bnRyb2xsZXJzRm9yQWxsUGFnZXMoKS5maW5kKHBhZ2VJRCk7CiAgICAgaWYgKGdlc3R1cmVDb250
cm9sbGVySXRlciA9PSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKS5lbmQoKSkK
QEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Zm9yY2VSZXBh
aW50SWZOZWVkZWQoKQogCiAgICAgbV9oYXNPdXRzdGFuZGluZ1JlcGFpbnRSZXF1ZXN0ID0gdHJ1
ZTsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAg
IGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAgICAgR2VzdHVyZUlEIGdl
c3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBtX3dlYlBhZ2VQcm94eS5mb3JjZVJl
cGFpbnQoVm9pZENhbGxiYWNrOjpjcmVhdGUoW3BhZ2VJRCwgZ2VzdHVyZUlEXSAoQ2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxlciA9
IGNvbnRyb2xsZXJGb3JHZXN0dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKQEAgLTYxNyw3ICs2MTcs
NyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVxdWVzdFJlbmRlclRyZWVTaXplTm90
aWZpY2F0aW9uSWZOZWVkZWQoKQogICAgIGF1dG8mIHByb2Nlc3MgPSBtX3dlYlBhZ2VQcm94eS5w
cm92aXNpb25hbFBhZ2VQcm94eSgpID8gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJv
eHkoKS0+cHJvY2VzcygpIDogbV93ZWJQYWdlUHJveHkucHJvY2VzcygpOwogICAgIGF1dG8gdGhy
ZXNob2xkID0gbV9zbmFwc2hvdFJlbW92YWxUcmFja2VyLnJlbmRlclRyZWVTaXplVGhyZXNob2xk
KCk7CiAKLSAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xs
ZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHRocmVzaG9sZCks
IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlZp
ZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9u
VGhyZXNob2xkKHRocmVzaG9sZCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkp
OwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmgKaW5kZXggNDMxYzI3NjZkMDguLmMxNjcwZDNhOTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CkBAIC0xNzUsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29u
dHJvbGxlckZvckdlc3R1cmUodWludDY0X3QgcGFnZUlELCBHZXN0dXJlSUQpOworICAgIHN0YXRp
YyBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JHZXN0dXJlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBHZXN0dXJlSUQpOwogCiAgICAgc3RhdGljIEdlc3R1cmVJRCB0YWtlTmV4
dEdlc3R1cmVJRCgpOwogICAgIHZvaWQgd2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAppbmRleCBm
MmU3YjkzNDA1Ny4uOTkxZGMyZmNmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
c2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0
b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6
Q29ubmUKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFZpc2l0ZWRMaW5rU3Rv
cmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU2hhcmVkU3Ry
aW5nSGFzaCBsaW5rSGFzaCkKK3ZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRlZExpbmtI
YXNoRnJvbVBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNoIGxpbmtI
YXNoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZUlEKSkgewogICAgICAgICBpZiAoIXdlYlBhZ2VQcm94eS0+YWRkc1Zpc2l0ZWRM
aW5rcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4
IDA2ZjIwYmE5MWNiLi4wMmI0OWJhYzU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
c2l0ZWRMaW5rU3RvcmUuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlk
SW52YWxpZGF0ZVNoYXJlZE1lbW9yeSgpIGZpbmFsOwogICAgIHZvaWQgZGlkVXBkYXRlU2hhcmVk
U3RyaW5nSGFzaGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoPiYgYWRk
ZWRIYXNoZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoPiYgcmVtb3Zl
ZEhhc2hlcykgZmluYWw7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCk7CisgICAgdm9pZCBhZGRW
aXNpdGVkTGlua0hhc2hGcm9tUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaCk7CiAKICAgICB2b2lkIHNlbmRTdG9yZUhhbmRsZVRvUHJvY2VzcyhX
ZWJQcm9jZXNzUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
c2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KaW5kZXggZTc4NjJlMzY1YjAuLjJlNjZjNDI4MDhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUu
bWVzc2FnZXMuaW4KQEAgLTIxLDUgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMg
LT4gVmlzaXRlZExpbmtTdG9yZSB7Ci0gICAgQWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBsaW5rSGFzaCkKKyAgICBBZGRWaXNpdGVkTGlua0hhc2hG
cm9tUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGxpbmtIYXNo
KQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNw
cAppbmRleCA4N2IwYWZjMjBjMi4uMGRiZTBhZmI0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQg
V2ViRWRpdENvbW1hbmRQcm94eTo6dW5hcHBseSgpCiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFn
ZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVkaXRDb21tYW5kKG1fY29t
bWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VW5hcHBseUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwgSVBDOjpTZW5kT3B0
aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogICAgIG1f
cGFnZS0+cmVnaXN0ZXJFZGl0Q29tbWFuZCgqdGhpcywgVW5kb09yUmVkbzo6UmVkbyk7CiB9CiAK
QEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBXZWJFZGl0Q29tbWFuZFByb3h5OjpyZWFwcGx5KCkKICAg
ICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZWFwcGx5RWRpdENvbW1hbmQobV9jb21tYW5kSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBJUEM6OlNl
bmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFwcGx5RWRpdENvbW1hbmQobV9j
b21tYW5kSUQpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGlu
Z0ZvclN5bmNSZXBseSk7CiAgICAgbV9wYWdlLT5yZWdpc3RlckVkaXRDb21tYW5kKCp0aGlzLCBV
bmRvT3JSZWRvOjpVbmRvKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmNwcAppbmRleCA1Yzg1MWI3Mjc1NS4uYjAxYjMwNTA1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZvaWQgV2ViRnJh
bWVQcm94eTo6bG9hZFVSTChjb25zdCBVUkwmIHVybCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6TG9hZFVSTEluRnJhbWUodXJsLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkxJbkZyYW1lKHVybCwgbV9m
cmFtZUlEKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcm
IGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMKQpAQCAtOTIsNyArOTIsNyBAQCB2b2lk
IFdlYkZyYW1lUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
Y29uc3QgU3RyaW5nJiBNSU1FVAogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YUlu
RnJhbWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9mcmFtZUlEKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b2FkRGF0YUluRnJhbWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9m
cmFtZUlEKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmcoKSBjb25zdApA
QCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmcoKSBjb25z
dAogICAgIGlmICghbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9h
ZGluZ0ZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcExvYWRpbmdGcmFtZShtX2ZyYW1lSUQpKTsKIH0KICAg
ICAKIGJvb2wgV2ViRnJhbWVQcm94eTo6Y2FuUHJvdmlkZVNvdXJjZSgpIGNvbnN0CkBAIC0yNjIs
NyArMjYyLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpjb2xsYXBzZVNlbGVjdGlvbigpCiAgICAg
aWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShtX2ZyYW1lSUQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShtX2ZyYW1lSUQpKTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHku
Y3BwCmluZGV4IDhlOTNiMWRjMmQwLi5lYzY5OGUxNjBjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKQEAgLTU2LDEz
ICs1NiwxMyBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp+V2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eSgpCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFbnRlckZ1bGxT
Y3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50KCkud2lsbEVudGVyRnVsbHNj
cmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRW50
ZXJGdWxsU2NyZWVuKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRp
ZEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS5kaWRF
bnRlckZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpEaWRFbnRlckZ1bGxTY3JlZW4oKSk7CiAKICAgICBpZiAobV9wYWdlLmlzQ29udHJvbGxlZEJ5
QXV0b21hdGlvbigpKSB7CiAgICAgICAgIGlmIChXZWJBdXRvbWF0aW9uU2Vzc2lvbiogYXV0b21h
dGlvblNlc3Npb24gPSBtX3BhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNl
c3Npb24oKSkKQEAgLTczLDEzICs3MywxMyBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZEVudGVyRnVsbFNjcmVlbigpCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6
OndpbGxFeGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS53
aWxsRXhpdEZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsU2NyZWVuKCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjpXaWxsRXhpdEZ1bGxTY3JlZW4oKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xp
ZW50KCkuZGlkRXhpdEZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxTY3JlZW4oKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCkpOwogICAgIAogICAgIGlmIChtX3BhZ2UuaXND
b250cm9sbGVkQnlBdXRvbWF0aW9uKCkpIHsKICAgICAgICAgaWYgKFdlYkF1dG9tYXRpb25TZXNz
aW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5h
dXRvbWF0aW9uU2Vzc2lvbigpKQpAQCAtODksMTIgKzg5LDEyIEBAIHZvaWQgV2ViRnVsbFNjcmVl
bk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6OnNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYm9vbCBhbmltYXRpbmcpCiB7Ci0g
ICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6
U2V0QW5pbWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcpLCBtX3BhZ2UucGFnZUlEKCkpOworICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0QW5pbWF0aW5n
RnVsbFNjcmVlbihhbmltYXRpbmcpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5OjpyZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlcXVlc3RFeGl0RnVsbFNjcmVlbigp
LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2Ny
ZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEw
OCwyNyArMTA4LDI3IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c3VwcG9ydHNG
dWxsU2NyZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9uCiAKIHZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6c2F2ZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBtX3BhZ2UucHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTYXZlU2Nyb2xsUG9z
aXRpb24oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXI6OlNhdmVTY3JvbGxQb3NpdGlvbigpKTsKIH0KIAogdm9pZCBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjpyZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogewotICAgIG1f
cGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlc3Rv
cmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkpOwog
fQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5JbnNldHMo
Y29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGluc2V0cykKIHsKLSAgICBtX3BhZ2UucHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVu
SW5zZXRzKGluc2V0cyksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuSW5zZXRzKGluc2V0cykpOwog
fQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5BdXRvSGlk
ZUR1cmF0aW9uKFNlY29uZHMgZHVyYXRpb24pCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1dG9IaWRlRHVy
YXRpb24oZHVyYXRpb24pLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3Nh
Z2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1dG9IaWRlRHVyYXRpb24o
ZHVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRGdWxs
c2NyZWVuQ29udHJvbHNIaWRkZW4oYm9vbCBoaWRkZW4pCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkNvbnRy
b2xzSGlkZGVuKGhpZGRlbiksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVz
c2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4o
aGlkZGVuKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6Y2xvc2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDEy
YmIyNjFkMDdjLi44NTkxMzhlZThiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAg
aWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zcGVjdG9y
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2Fn
ZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1f
aW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdl
VG9Gcm9udGVuZChtZXNzYWdlKSk7CiB9CiAKIC8vIFB1YmxpYyBBUElzCkBAIC0xMjcsNyArMTI3
LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCgpCiAgICAgY3JlYXRlRnJvbnRl
bmRQYWdlKCk7CiAKICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyOjpOb3RpZnlOZWVkRGVidWdnZXJCcmVh
aygpLCAwKTsKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3I6OlNob3coKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9p
bnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSk7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlKCkKICAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2Uo
KSk7CiAKICAgICBjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOwogfQpAQCAtMTk5LDcgKzE5
OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnVwZGF0ZUZvck5ld1BhZ2VQcm9jZXNzKFdl
YlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSkKICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3Mo
KS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlzKTsKIAogICAg
IGlmIChtX2luc3BlY3RvclBhZ2UpCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25uZWN0aW9uKCksIG1faW5z
cGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25uZWN0aW9uKCkpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGNv
bm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
UHJveHk6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklk
ZW50aWZpCiAgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgbV9pbnNwZWN0ZWRQ
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlNldEZyb250ZW5kQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmllcikpOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgpCkBAIC0yMTcsNyArMjE3
LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd0NvbnNvbGUoKQogCiAgICAgY3JlYXRl
RnJvbnRlbmRQYWdlKCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dDb25zb2xlKCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTaG93Q29uc29sZSgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jlc291
cmNlcygpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1Jl
c291cmNlcygpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVk
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jlc291cmNl
cygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jlc291cmNlcygpKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6c2hvd1RpbWVsaW5lcygpCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1RpbWVsaW5lcygpCiAKICAgICBjcmVhdGVGcm9udGVu
ZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U2hvd1RpbWVsaW5lcygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hv
d1RpbWVsaW5lcygpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNv
dXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVBy
b3h5KiBmcmFtZSkKIAogICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCi0gICAgbV9pbnNwZWN0
ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93TWFpblJl
c291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
aG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0b20oKQpAQCAtMjc4LDE5ICsyNzgsMTkgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKEF0dGFjaG1lbnRTaWRlIHNpZGUpCiAgICAgaWYg
KG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5zZXRJbnNw
ZWN0b3JTdGFydHNBdHRhY2hlZCh0cnVlKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQodHJ1ZSksIG1faW5z
cGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSk7CiAKICAgICBzd2l0Y2ggKG1fYXR0
YWNobWVudFNpZGUpIHsKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206Ci0gICAgICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAg
bV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRC
b3R0b20oKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Umln
aHQ6Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkp
OworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpBdHRhY2hlZFJpZ2h0KCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQXR0YWNobWVu
dFNpZGU6OkxlZnQ6Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZExlZnQoKSwgbV9pbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0z
MDcsOCArMzA3LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKCkKICAgICBpZiAo
bV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3Bl
Y3RvclN0YXJ0c0F0dGFjaGVkKGZhbHNlKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpLCBtX2lu
c3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OlNldEF0dGFjaGVkKGZhbHNlKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSk7CiAKICAgICBwbGF0Zm9ybURldGFj
aCgpOwogfQpAQCAtMzQxLDkgKzM0MSw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2ds
ZVBhZ2VQcm9maWxpbmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc1Byb2ZpbGlu
Z1BhZ2UpCi0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U3RvcFBhZ2VQcm9maWxpbmcoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTdG9wUGFnZVByb2ZpbGluZygpKTsKICAgICBlbHNlCi0gICAgICAgIG1faW5zcGVjdGVk
UGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJv
ZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJvZmlsaW5nKCkp
OwogCiAgICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mgbm90aWZ5IHVzIG9uIHN0YXRl
IGNoYW5nZXMuCiAgICAgbV9pc1Byb2ZpbGluZ1BhZ2UgPSAhbV9pc1Byb2ZpbGluZ1BhZ2U7CkBA
IC0zNTYsMTAgKzM1NiwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVFbGVtZW50
U2VsZWN0aW9uKCkKIAogICAgIGlmIChtX2VsZW1lbnRTZWxlY3Rpb25BY3RpdmUpIHsKICAgICAg
ICAgbV9pZ25vcmVFbGVtZW50U2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKLSAgICAgICAgbV9pbnNw
ZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wRWxl
bWVudFNlbGVjdGlvbigpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9p
bnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BFbGVtZW50U2Vs
ZWN0aW9uKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbm5lY3QoKTsKLSAgICAgICAgbV9p
bnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFy
dEVsZW1lbnRTZWxlY3Rpb24oKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgICAg
IG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydEVsZW1l
bnRTZWxlY3Rpb24oKSk7CiAgICAgfQogfQogCkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9vbCBjYW5BdHRhY2gs
IGJvb2wgdW5kZXJUZXMKICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24obV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwg
bV91bmRlclRlc3QsIGluc3BlY3Rpb25MZXZlbCgpKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVz
dCwgaW5zcGVjdGlvbkxldmVsKCkpKTsKIAogICAgIEFTU0VSVCghbV9pc0FjdGl2ZUZyb250ZW5k
KTsKICAgICBtX2lzQWN0aXZlRnJvbnRlbmQgPSB0cnVlOwpAQCAtNDIzLDI2ICs0MjMsMjYgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9vbCBj
YW5BdHRhY2gsIGJvb2wgdW5kZXJUZXMKICAgICAgICAgbV9pc0F0dGFjaGVkID0gc2hvdWxkT3Bl
bkF0dGFjaGVkKCk7CiAgICAgICAgIG1fYXR0YWNobWVudFNpZGUgPSBzdGF0aWNfY2FzdDxBdHRh
Y2htZW50U2lkZT4oaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9yQXR0YWNobWVu
dFNpZGUoKSk7CiAKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQpLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCkpOwogCiAgICAgICAgIGlm
IChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkg
ewogICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgotICAgICAgICAgICAg
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAg
ICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpBdHRhY2hlZEJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAg
ICAgY2FzZSBBdHRhY2htZW50U2lkZTo6UmlnaHQ6Ci0gICAgICAgICAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVk
UmlnaHQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9p
bnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdo
dCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSBBdHRhY2ht
ZW50U2lkZTo6TGVmdDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRMZWZ0KCksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBt
X2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBtX2lu
c3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hlZCgpKTsK
IAotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JVSTo6U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0dGFjaCksIG1faW5zcGVj
dG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSk7
CiAgICAgfQogCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIG1f
dW5kZXJUZXN0ID8gV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclRlc3RQYWdlVVJMKCkgOiBX
ZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpKSk7CkBAIC00NTgsNyArNDU4LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiAKICAgICBTZXRGb3JTY29wZTxib29s
PiBpc09wZW5pbmcobV9pc09wZW5pbmcsIHRydWUpOwogICAgIG1faXNWaXNpYmxlID0gdHJ1ZTsK
LSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSk7CiAKICAgICBpZiAobV9pc0F0dGFjaGVkKQogICAg
ICAgICBwbGF0Zm9ybUF0dGFjaCgpOwpAQCAtNDg1LDggKzQ4NSw4IEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIAogICAgIHVudHJhY2tJbnNw
ZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSk7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNp
YmxlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRJc1Zp
c2libGUobV9pc1Zpc2libGUpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCkpOwogCiAgICAgaWYgKG1faXNBY3RpdmVGcm9udGVuZCkgewogICAgICAgICBt
X2lzQWN0aXZlRnJvbnRlbmQgPSBmYWxzZTsKQEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjphdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wgYXZhaWxhYmxlKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbnNwZWN0b3JQYWdlICYmICFtX3VuZGVyVGVz
dCkKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUk6OlNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9jYW5BdHRhY2gpLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0dGFjaCkp
OwogCiAgICAgcGxhdGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKG1fY2FuQXR0YWNoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDY1NmM4ZGNj
NTljLi4yYTU0ZGU5ZDZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0zODEsMTIgKzM4MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9yTW9zdFZpc2li
bGVXZWJQYWdlSWZBbnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZQogICAgIGNv
bXBsZXRpb25IYW5kbGVyKHNlbGVjdGVkUGFnZSk7CiB9CiAKLVJlZjxXZWJQYWdlUHJveHk+IFdl
YlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4m
JiBjb25maWd1cmF0aW9uKQorUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUo
UGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRp
b24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGFnZVByb3h5KHBhZ2VDbGllbnQs
IHByb2Nlc3MsIHBhZ2VJRCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOwogfQogCi1XZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYgY29uZmlndXJhdGlvbikKK1dlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogICAgIDog
bV9wYWdlQ2xpZW50KG1ha2VXZWFrUHRyKHBhZ2VDbGllbnQpKQogICAgICwgbV9jb25maWd1cmF0
aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX25hdmlnYXRpb25DbGllbnQobWFr
ZVVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkpCkBAIC00MzUsNyArNDM1LDcgQEAg
V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICNlbmRpZgogICAgICwgbV9yZXNldFJlY2VudENyYXNo
Q291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlUHJveHk6OnJlc2V0UmVj
ZW50Q3Jhc2hDb3VudCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJj
b25zdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY29uc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAK
ICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+ZHJhd3NCYWNrZ3JvdW5kKCkpCiAgICAgICAgIG1f
YmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKQEAgLTQ4OSw3ICs0
ODksNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdl
UHJveHkoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlc3RydWN0
b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRlc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBBU1NF
UlQobV9wcm9jZXNzLT53ZWJQYWdlKG1fcGFnZUlEKSAhPSB0aGlzKTsKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECkBAIC02MTMsNyArNjEzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50
KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiYmIHVpQ2xpZW50KQogICAgIG1fdWlDbGll
bnQgPSBXVEZNb3ZlKHVpQ2xpZW50KTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENhblJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChtX3VpQ2xpZW50LT5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwoKSksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Q2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlDbGllbnQtPmNhblJ1bkJlZm9yZVVu
bG9hZENvbmZpcm1QYW5lbCgpKSk7CiAKICAgICBzZXRDYW5SdW5Nb2RhbChtX3VpQ2xpZW50LT5j
YW5SdW5Nb2RhbCgpKTsKICAgICBzZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKG1fdWlDbGllbnQtPm5l
ZWRzRm9udEF0dHJpYnV0ZXMoKSk7CkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5n
Q2xpZW50PiYKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlSWNvbkxvYWRp
bmdDbGllbnQoaGFzQ2xpZW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGhhc0NsaWVudCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYm
IGZpbmRDbGllbnQpCkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5j
aFByb2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogICAg
IEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgQVNTRVJUKCFoYXNSdW5uaW5nUHJvY2VzcygpKTsK
IAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3M6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxh
dW5jaFByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBtX3Byb2Nl
c3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0
b3JlOjpZZXMpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwpAQCAtNzYz
LDcgKzc2Myw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3Np
YmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBT
dXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IHN0ZDo6bWFrZV91
bmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1h
aW5GcmFtZUlELCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUpOwogCi0gICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAl
IiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwg
YmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCksIHN1c3BlbmRlZFBhZ2UtPmxv
Z2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/
IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOworICAgIExPRyhQcm9jZXNzU3dh
cHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAl
cyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJ
RCgpLnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dT
dHJpbmcoKSA6IDApOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBmb3JjZWQgYSBzd2FwIHRoZW4g
aXQgbWF5IG5vdCBiZSB3ZWItY29tcGF0aWJsZSB0byBrZWVwIHRoZSBwcmV2aW91cyBwYWdlIGJl
Y2F1c2Ugb3RoZXIgd2luZG93cyBtYXkgaGF2ZSBhbiBvcGVuZXIgbGluayB0byBpdC4gV2UgdGh1
cyBjbG9zZSBpdCBhcyBzb29uIGFzIHdlCiAgICAgLy8gY2FuIGRvIHNvIHdpdGhvdXQgZmxhc2hp
bmcuCkBAIC03ODEsNyArNzgxLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50
UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+JiYgZHJhd2luZ0FyZWEsIFJlZlB0
cjxXZWJGcmFtZVByb3h5PiYmIG1haW5GcmFtZSkKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQp
OwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1dlYlByb2Nlc3M6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
InN3YXBUb1dlYlByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBt
X3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IG1f
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOwpAQCAtODczLDEwICs4NzMsMTAgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAK
ICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5j
aFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCkBAIC04ODUsMTQg
Kzg4NSwxNCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFBy
b2Nlc3NGb3JSZWxvYWQoKQogICAgIGxhdW5jaFByb2Nlc3MocmVnaXN0cmFibGVEb21haW4pOwog
CiAgICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBu
byBjdXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8g
Y3VycmVudCBpdGVtIHRvIHJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9u
YXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAogICAgIC8vIFdlIGFs
bG93IHN0YWxlIGNvbnRlbnQgd2hlbiByZWxvYWRpbmcgYSBXZWJQcm9jZXNzIHRoYXQncyBiZWVu
IGtpbGxlZCBvciBjcmFzaGVkLgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbV9iYWNr
Rm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRl
eGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVs
bG9wdCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0Zv
cndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBtX2JhY2tGb3J3YXJkTGlzdC0+
Y3VycmVudEl0ZW0oKS0+aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2Fy
ZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSk7CiAgICAg
bV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBu
YXZpZ2F0aW9uOwpAQCAtOTAwLDEwICs5MDAsMTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIAogUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYgaXRlbSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogcGFn
ZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHBhZ2UgaXMgY2xvc2VkOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKQEAgLTkxNSw3ICs5MTUsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdl
UHJveHk6OmxhdW5jaFByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdAogCiAgICAg
YXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUJhY2tGb3J3YXJkTmF2
aWdhdGlvbihpdGVtLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSwgRnJhbWVMb2Fk
VHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSwgaXRlbS5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9u
LT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJh
Y2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQp
KTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAg
cmV0dXJuIG5hdmlnYXRpb247CkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNsb3NlKCkKICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9pc0Nsb3NlZCA9IHRydWU7CiAKQEAgLTEwMDksNyAr
MTAwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAKICAgICBtX3Byb2Nlc3MtPnBy
b2Nlc3NQb29sKCkucmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdlKCp0aGlzKTsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVt
b3ZlV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olll
cyk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNz
LT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Pigp
LT5jbGVhck5vdGlmaWNhdGlvbnModGhpcyk7CkBAIC0xMDMxLDE0ICsxMDMxLDE0IEBAIGJvb2wg
V2ViUGFnZVByb3h5Ojp0cnlDbG9zZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgInRyeUNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYgdGhlIHByb2Nlc3MgYWxsb3dzIGl0LiBPdXIg
Z29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0aGUgcHJvY2Vzcywgc28gd2UgY2hlY2sgYSBw
ZXItcHJvY2VzcyBzdGF0dXMgYml0LgogICAgIGlmIChtX3Byb2Nlc3MtPmlzU3VkZGVuVGVybWlu
YXRpb25FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VHJ5Q2xvc2UoKSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZl
bmVzc1RpbWVyKCkuc3RhcnQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMDc3LDcgKzEw
NzcsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgIGlmIChtX2lzQ2xvc2VkKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2Vz
cyhSZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3QudXJsKCkgfSk7CkBAIC0xMDkxLDcgKzEwOTEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7
CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdFdpdGhO
YXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0
aW9uKCk7CiAKQEAgLTExMTQsMTYgKzExMTQsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRS
ZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMK
ICAgICAgICAgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24ocHJv
Y2Vzcyk7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAK
LSAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFy
YW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kVG9Qcm9jZXNzKHByb2Nlc3MsIE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycykpOwogICAgIHByb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9u
PiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZywgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkRmlsZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xv
c2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxl
OiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC0xMTMyLDcgKzExMzIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiAgICAgVVJMIGZp
bGVVUkwgPSBVUkwoVVJMKCksIGZpbGVVUkxTdHJpbmcpOwogICAgIGlmICghZmlsZVVSTC5pc0xv
Y2FsRmlsZSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2Nh
bDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0xMTQyLDcgKzExNDIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwog
ICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVz
b3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5
VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBA
IC0xMTY0LDcgKzExNjQsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGFkZFBsYXRm
b3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAgICAgbV9wcm9jZXNzLT5hc3N1
bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCByZXNvdXJjZURpcmVjdG9yeVVSTCk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1l
dGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVz
dChsb2FkUGFyYW1ldGVycykpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTExNzIsMTAgKzExNzIsMTAg
QEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
YmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWREYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRh
OiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTg5LDcgKzExODksNyBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgYwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlv
blNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3
ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZERhdGFXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTIwOSwx
OSArMTIwOSwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgYWRkUGxhdGZvcm1Mb2Fk
UGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBwcm9jZXNzLT5hc3N1bWVSZWFkQWNj
ZXNzVG9CYXNlVVJMKCp0aGlzLCBiYXNlVVJMKTsKLSAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5k
VG9Qcm9jZXNzKHByb2Nlc3MsIE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1l
dGVycykpOwogICAgIHByb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNl
VVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRBbHRlcm5hdGVIVE1MOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAg
Ly8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFp
bGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBub3QgYXR0ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEg
c2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9hZCBhcyB0aGlzIHdpbGwgcHJldmVudCB0aGUgcGFn
ZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKICAgICAvLyBoYW5kbGVkIHByb3Blcmx5LgogICAgIGlm
IChtX2lzQ2xvc2VkIHx8IG1faXNMb2FkaW5nQWx0ZXJuYXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQ
cm92aXNpb25hbExvYWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhlcik6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
QWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1MiwxNiArMTI1
MiwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgUwogCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVS
ZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCBiYXNlVVJMKTsKICAgICBtX3Byb2Nlc3MtPmFzc3Vt
ZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIHVucmVhY2hhYmxlVVJMKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRBbHRlcm5hdGVIVE1MKGxvYWRQYXJhbWV0
ZXJzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRBbHRlcm5h
dGVIVE1MKGxvYWRQYXJhbWV0ZXJzKSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1Rp
bWVyKCkuc3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0
YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBp
ZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVE
YXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI3OSwxNiArMTI3OSwxNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6
T2JqZWN0KiB1cwogICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2Vz
cygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKICAgICBhZGRQ
bGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMp
KTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcsIEludFBvaW50IGRvY3VtZW50UG9pbnQsIEludFBvaW50IHNj
cmVlblBvaW50KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmln
YXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11
bGF0ZWRDbGljazogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lz
Q2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmln
YXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmln
YXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI5OCwy
MCArMTI5OCwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2lt
dWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJM
KFVSTCgpLCB1cmxTdHJpbmcpIH0pOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRv
Y3VtZW50UG9pbnQsIHNjcmVlblBvaW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6Ok5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKHVybFN0cmluZywg
ZG9jdW1lbnRQb2ludCwgc2NyZWVuUG9pbnQpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVu
ZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmco
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJz
dG9wTG9hZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBub3QgdmFs
aWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBub3Qg
dmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5n
KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9hZGluZygp
KTsKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKICAgICAgICAgbV9wcm92aXNpb25hbFBh
Z2UtPmNhbmNlbCgpOwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CkBAIC0x
MzIxLDcgKzEzMjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogCiBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29y
ZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgInJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwog
CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAK
QEAgLTEzNDYsNyArMTM0Niw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94
eTo6cmVsb2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wCiAgICAgaWYgKG9w
dGlvbnMuY29udGFpbnMoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29udGVudEJsb2Nr
ZXJzKSkKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxl
ZChmYWxzZSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbG9h
ZChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgb3B0aW9ucy50b1JhdygpLCBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
bG9hZChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgb3B0aW9ucy50b1JhdygpLCBzYW5kYm94
RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtMTM5OCw3ICsxMzk4LDcgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVt
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0s
IEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVBy
b3h5ICVwIGdvVG9CYWNrRm9yd2FyZEl0ZW0gdG8gaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLnVy
bCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQpAQCAt
MTQxMiw3ICsxNDEyLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpn
b1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICBpZiAoIW1fYmFj
a0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSXNJblNhbWVEb2N1bWVudChpdGVtKSkK
ICAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2Fy
ZE5hdmlnYXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCksIGZyYW1l
TG9hZFR5cGUpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1Rv
QmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6
IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUsIFNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZDo6Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUsIFNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCkpOwogICAgIG1fcHJvY2Vzcy0+cmVz
cG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAg
LTE0MjAsMTQgKzE0MjAsMTQgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3Jl
U2Nyb2xsUG9zaXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxpZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
InRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VHJ5UmVzdG9yZVNjcm9sbFBv
c2l0aW9uKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkLCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0+PiYmIHJlbW92ZWQpCkBAIC0xNDg5LDcgKzE0ODksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29u
dHJvbGxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb250
cm9sbGVkQnlBdXRvbWF0aW9uKGNvbnRyb2xsZWQpKTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpT
ZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vz
c2lvbklEKCksIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbikpOwogfQogCkBAIC0xNTE0LDcgKzE1
MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluZGljYXRpbmcoaW5kaWNhdGlu
ZyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbmRpY2F0aW5n
KGluZGljYXRpbmcpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmFsbG93c1JlbW90ZUluc3Bl
Y3Rpb24oKSBjb25zdApAQCAtMTU1MCw3ICsxNTUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNs
ZWFySW5zcGVjdG9yVGFyZ2V0cygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0
b3JUYXJnZXRzKCkKIHsKLSAgICBTdHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0cmluZygicGFn
ZS0iLCBtX3BhZ2VJRCk7CisgICAgU3RyaW5nIHBhZ2VUYXJnZXRJZCA9IG1ha2VTdHJpbmcoInBh
Z2UtIiwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5j
cmVhdGVJbnNwZWN0b3JUYXJnZXQocGFnZVRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRh
cmdldFR5cGU6OlBhZ2UpOwogfQogCkBAIC0xNTYxLDcgKzE1NjEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPENvbG9yPiYgY29sb3IpCiAK
ICAgICBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOwogICAgIGlmIChoYXNSdW5uaW5nUHJvY2Vz
cygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tn
cm91bmRDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpAQCAtMTU3Nyw5ICsxNTc3
LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50
SW5zZXQpCiAgICAgTWFjaFNlbmRSaWdodCBmZW5jZSA9IG1fZHJhd2luZ0FyZWEtPmNyZWF0ZUZl
bmNlKCk7CiAKICAgICBhdXRvIGZlbmNlQXR0YWNobWVudCA9IElQQzo6QXR0YWNobWVudChmZW5j
ZS5sZWFrU2VuZFJpZ2h0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldEZlbmNlZChjb250
ZW50SW5zZXQsIGZlbmNlQXR0YWNobWVudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXRGZW5jZWQoY29udGVudEluc2V0LCBmZW5jZUF0
dGFjaG1lbnQpKTsKICNlbHNlCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRUb3BDb250ZW50SW5zZXQoY29udGVudEluc2V0KSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldChjb250ZW50SW5zZXQpKTsKICNl
bmRpZgogfQogCkBAIC0xNTkxLDcgKzE1OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VW5k
ZXJsYXlDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV91bmRlcmxheUNvbG9yID0gY29s
b3I7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRlcmxheUNvbG9yKGNvbG9yKSwgbV9wYWdlSUQp
OworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRlcmxheUNvbG9yKGNvbG9y
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCkBA
IC0xNjAwLDE0ICsxNjAwLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3V2lsbFN0YXJ0TGl2
ZVJlc2l6ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNsb3NlT3ZlcmxheWVkVmlld3MoKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxsU3RhcnRMaXZl
UmVzaXplKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2ls
bFN0YXJ0TGl2ZVJlc2l6ZSgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsRW5k
TGl2ZVJlc2l6ZSgpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbEVu
ZExpdmVSZXNpemUoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZp
ZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdO
ZWVkc0Rpc3BsYXkoY29uc3QgUmVnaW9uJiByZWdpb24pCkBAIC0xNzAxLDcgKzE3MDEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKICAgICBMYXllckhvc3RpbmdN
b2RlIGxheWVySG9zdGluZ01vZGUgPSBwYWdlQ2xpZW50KCkudmlld0xheWVySG9zdGluZ01vZGUo
KTsKICAgICBpZiAobV9sYXllckhvc3RpbmdNb2RlICE9IGxheWVySG9zdGluZ01vZGUpIHsKICAg
ICAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJIb3N0aW5nTW9kZTsKLSAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVy
SG9zdGluZ01vZGUpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSkpOwogICAgIH0KIH0KIApAQCAt
MTc1MCw3ICsxNzUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0
ZUNoYW5nZSgpCiAgICAgYXV0byBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPSBtX2FjdGl2aXR5U3Rh
dGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPyB0YWtlTmV4dEFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCgpIDogc3RhdGljX2Nhc3Q8QWN0aXZpdHlTdGF0ZUNoYW5nZUlEPihBY3Rpdml0eVN0YXRl
Q2hhbmdlQXN5bmNocm9ub3VzKTsKIAogICAgIGlmIChjaGFuZ2VkIHx8IGFjdGl2aXR5U3RhdGVD
aGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8ICFtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwg
YWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tz
KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0
eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBtX25leHRBY3Rp
dml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKSk7CiAKICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hh
bmdlQ2FsbGJhY2tzLmNsZWFyKCk7CiAKQEAgLTE4NTMsNyArMTg1Myw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpsYXllckhvc3RpbmdNb2RlRGlkQ2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJIb3N0aW5nTW9kZTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5n
TW9kZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXllckhv
c3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Ondh
aXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0
eVN0YXRlQ2hhbmdlSUQpCkBAIC0xODk1LDIxICsxODk1LDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlk
LCBjb25zCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJk
RXZlbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2Fy
ZEV2ZW50LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhclNlbGVj
dGlvbigpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlbGVjdGlvbigp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJTZWxlY3Rpb24o
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRp
dGFibGVFbGVtZW50KCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVT
ZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1l
bnQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBib29s
LCBpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAt
MTkyMCw3ICsxOTIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZChjb25z
dCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQKICAgICB9CiAKICAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29tbWFuZChjb21t
YW5kTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmluY3JlYXNlTGlzdExldmVsKCkKQEAgLTE5MjgsNyArMTkyOCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RMZXZlbCgpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkluY3JlYXNlTGlzdExldmVsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxpc3RMZXZlbCgpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY3JlYXNlTGlzdExldmVsKCkKQEAgLTE5MzYsNyArMTkzNiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNyZWFzZUxpc3RMZXZlbCgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRlY3JlYXNlTGlzdExldmVsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEZWNyZWFzZUxpc3RMZXZlbCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmNoYW5nZUxpc3RUeXBlKCkKQEAgLTE5NDQsNyArMTk0NCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjaGFuZ2VMaXN0VHlwZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNo
YW5nZUxpc3RUeXBlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
aGFuZ2VMaXN0VHlwZSgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEJhc2VXcml0aW5n
RGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMTk1Miw3ICsxOTUyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYXNl
V3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVGb250QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFu
Z2UoKQpAQCAtMTk3Niw3ICsxOTc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE5lZWRzRm9u
dEF0dHJpYnV0ZXMoYm9vbCBuZWVkc0ZvbnRBdHRyaWJ1dGVzKQogICAgIG1fbmVlZHNGb250QXR0
cmlidXRlcyA9IG5lZWRzRm9udEF0dHJpYnV0ZXM7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nl
c3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXROZWVk
c0ZvbnRBdHRyaWJ1dGVzKG5lZWRzRm9udEF0dHJpYnV0ZXMpLCBtX3BhZ2VJRCk7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE5lZWRzRm9udEF0dHJpYnV0ZXMobmVlZHNGb250
QXR0cmlidXRlcykpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6bWFpbnRhaW5zSW5hY3RpdmVT
ZWxlY3Rpb24oKSBjb25zdApAQCAtMTk5OSw3ICsxOTk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0QWxsKCkKQEAgLTIwMDcsNyArMjAwNyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RBbGwoKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZWxlY3RBbGwoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNlbGVjdEFsbCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0
Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbikKQEAgLTIwMTgsNyArMjAxOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRp
dENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhCiAgICAg
fQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRp
dENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUsIGFyZ3VtZW50LCBjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFu
ZFdpdGhDYWxsYmFjayhjb21tYW5kTmFtZSwgYXJndW1lbnQsIGNhbGxiYWNrSUQpKTsKIH0KICAg
ICAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBj
b21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKQEAgLTIwMzEsNyArMjAzMSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21t
YW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhCiAgICAgaWYgKGNvbW1hbmROYW1lID09IGlnbm9yZVNw
ZWxsaW5nQ29tbWFuZE5hbWUpCiAgICAgICAgICsrbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRN
ZXNzYWdlQ291bnQ7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4
ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgYXJndW1lbnQpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lLCBh
cmd1bWVudCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1
dGVzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCkBAIC0yMDQyLDcgKzIwNDIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25T
dGFydChGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYgogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0
Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6Rm9udEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTIwNjMsNyAr
MjA2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRFZGl0YWJsZShib29sIGVkaXRhYmxlKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFZGl0YWJsZShlZGl0YWJsZSksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFZGl0YWJsZShlZGl0YWJs
ZSkpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhU3RyZWFtQ2FwdHVyZU11
dGVkKGJvb2wgbXV0ZWQpCkBAIC0yMTI4LDkgKzIxMjgsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwg
RHJhZwogCiAgICAgQVNTRVJUKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAgICBXZWJTZWxl
Y3Rpb25EYXRhIHNlbGVjdGlvbigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9u
KGFjdGlvbiwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEuZ2xvYmFsUG9zaXRp
b24oKSwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIHNlbGVjdGlvbiwg
ZHJhZ0RhdGEuZmxhZ3MoKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5jbGllbnRQb3Np
dGlvbigpLCBkcmFnRGF0YS5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJj
ZU9wZXJhdGlvbk1hc2soKSwgc2VsZWN0aW9uLCBkcmFnRGF0YS5mbGFncygpKSk7CiAjZWxzZQot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRi
b3hFeHRlbnNpb25zRm9yVXBsb2FkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLCBzYW5k
Ym94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCkpOwogI2VuZGlm
CiB9CiAKQEAgLTIxNjAsNyArMjE2MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW5kZWQo
Y29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvCiB7CiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGds
b2JhbFBvc2l0aW9uLCBvcGVyYXRpb24pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0
aW9uKSk7CiAgICAgc2V0RHJhZ0NhcmV0UmVjdCh7IH0pOwogfQogCkBAIC0yMTcyLDEzICsyMTcy
LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ09wZXJhdGlvbihib29sIGhh
bmRsZWQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnREcmFnKCkKIHsKICAgICBpZiAoaGFz
UnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRTdGFydERyYWcoKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRTdGFydERyYWcoKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJh
Z0NhbmNlbGxlZCgpCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0NhbmNlbGxlZCgpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdDYW5jZWxsZWQoKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmREcmFnZ2luZygpCkBAIC0yMjc3LDcgKzIyNzcs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKICAg
ICB9CiAKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJUHJvY2Vzczogc2VudCBtb3VzZSBldmVu
dCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VFdmVudFR5cGVTdHJpbmcoZXZlbnRUeXBl
KSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCkpOwogfQogCiAjaWYgTUVSR0VfV0hFRUxf
RVZFTlRTCkBAIC0yNDM3LDcgKzI0MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlS2V5
Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIAogICAgIGlm
IChtX2tleUV2ZW50UXVldWUuc2l6ZSgpID09IDEpIHsgLy8gT3RoZXJ3aXNlLCBzZW50IGZyb20g
RGlkUmVjZWl2ZUV2ZW50IG1lc3NhZ2UgaGFuZGxlci4KICAgICAgICAgTE9HKEtleUhhbmRsaW5n
LCAiIFVJIHByb2Nlc3M6IHNlbnQga2V5RXZlbnQgZnJvbSBoYW5kbGVLZXlib2FyZEV2ZW50Iik7
Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQoZXZl
bnQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50
KGV2ZW50KSk7CiAgICAgfQogfQogCkBAIC0yNjQzLDcgKzI2NDMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aGFuZGxlVG91Y2hFdmVudFN5bmNocm9ub3VzbHkoTmF0aXZlV2ViVG91Y2hFdmVudCYg
ZXZlbnQpCiAKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwog
ICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotICAgIGJvb2wgcmVwbHlSZWNlaXZlZCA9IG1fcHJv
Y2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jKGV2ZW50KSwg
TWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jOjpSZXBseShoYW5kbGVkKSwgbV9wYWdl
SUQsIDFfcyk7CisgICAgYm9vbCByZXBseVJlY2VpdmVkID0gc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRvdWNoRXZlbnRTeW5jKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZl
bnRTeW5jOjpSZXBseShoYW5kbGVkKSwgMV9zKTsKICAgICAvLyBJZiB0aGUgc3luYyByZXF1ZXN0
IGhhcyB0aW1lZCBvdXQsIHdlIHNob3VsZCBjb25zaWRlciB0aGUgZXZlbnQgaGFuZGxlZC4gVGhl
IFdlYiBQcm9jZXNzIGlzIHRvbyBidXN5IHRvIGFuc3dlciBhbnkgcXVlc3Rpb25zLCBzbyB0aGUg
ZGVmYXVsdCBhY3Rpb24gaXMgYWxzbyBsaWtlbHkgdG8gaGF2ZSBpc3N1ZXMuCiAgICAgaWYgKCFy
ZXBseVJlY2VpdmVkKQogICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKQEAgLTI2ODcsNyArMjY4Nyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRv
dWNoRXZlbnQmIGV2ZW50KQogICAgIGlmICghbV9pc1BhZ2VTdXNwZW5kZWQpIHsKICAgICAgICAg
bV90b3VjaEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAgICAgICAgbV9wcm9jZXNzLT5yZXNw
b25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSk7CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKG1fdG91Y2hFdmVudFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYm9v
bCBpc0V2ZW50SGFuZGxlZCA9IGZhbHNlOwpAQCAtMjcwOCwxMiArMjcwOCwxMiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBl
dmVudCkKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2Fu
Y2VsUG9pbnRlcihXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkLCBjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgZG9jdW1lbnRQb2ludCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNhbmNlbFBvaW50ZXIocG9pbnRlcklkLCBkb2N1bWVudFBvaW50KSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbFBvaW50ZXIocG9pbnRlcklk
LCBkb2N1bWVudFBvaW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaFdpdGhJZGVu
dGlmaWVyV2FzUmVtb3ZlZChXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkKQogewotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hXaXRoSWRlbnRpZmllcldhc1Jl
bW92ZWQocG9pbnRlcklkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlRvdWNoV2l0aElkZW50aWZpZXJXYXNSZW1vdmVkKHBvaW50ZXJJZCkpOwogfQogI2VuZGlmCiAK
QEAgLTI3MjIsNyArMjcyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JvbGxCeShTY3JvbGxE
aXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbEJ5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Nyb2xsQnkoZGlyZWN0aW9u
LCBncmFudWxhcml0eSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVyU2VsZWN0aW9u
SW5WaXNpYmxlQXJlYSgpCkBAIC0yNzMwLDcgKzI3MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKSk7CiB9
CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5kZXIgOiBwdWJsaWMgUmVm
Q291bnRlZDxQb2xpY3lEZWNpc2lvblNlbmRlcj4gewpAQCAtMjg3Myw3ICsyODczLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlv
biwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFs
UGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90
IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNh
dGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhh
c0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IHByZXZp
b3VzUElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSk7CiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbWFpbkZyYW1lSURJblByZXZp
b3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFrZU9wdGlvbmFsKG1fbWFpbkZyYW1lLT5mcmFt
ZUlEKCkpIDogV1RGOjpudWxsb3B0OwogCkBAIC0yODk2LDcgKzI4OTYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRAogCiAgICAgLy8gVGhlcmUgaXMgbm8gd2F5IHdlJ2xsIGJlIGFibGUgdG8g
cmV0dXJuIHRvIHRoZSBwYWdlIGluIHRoZSBwcmV2aW91cyBwYWdlIHNvIGNsb3NlIGl0LgogICAg
IGlmICghZGlkU3VzcGVuZFByZXZpb3VzUGFnZSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBwYWdlSUQoKSk7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNsb3NlKCkpOwogCiAgICAgc3dhcFRvV2ViUHJvY2VzcyhtX3Byb3Zpc2lv
bmFsUGFnZS0+cHJvY2VzcygpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+dGFrZURyYXdpbmdBcmVhKCks
IG1fcHJvdmlzaW9uYWxQYWdlLT5tYWluRnJhbWUoKSk7CiAKQEAgLTI5MTMsNyArMjkxMyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5h
dmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVu
aXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2VQcm94eSwgUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50
IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBuZXdQcm9jZXNzUElEID0gJWksIGhhc1N1c3BlbmRlZFBhZ2UgPSAl
aSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIG5ld1Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBo
YXNTdXNwZW5kZWRQYWdlID0gJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCksIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3Vz
cGVuZGVkUGFnZVByb3h5KTsKICAgICBMT0coTG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlv
biAlIiBQUkl1NjQgIiAnJXMnIGluIGEgbmV3IHdlYiBwcm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dnaW5nU3RyaW5nKCkpOwogCiAgICAgaWYgKG1fcHJv
dmlzaW9uYWxQYWdlKSB7CkBAIC0yOTM4LDcgKzI5MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlv
biwgcwogICAgIGlmIChtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSAmJiAobmF2aWdh
dGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCkgPT0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIHx8
IG5hdmlnYXRpb24ubG9ja0hpc3RvcnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSkgewogICAgICAg
ICAvLyBJZiBXZWJDb3JlIGlzIHN1cHBvc2VkIHRvIGxvY2sgdGhlIGhpc3RvcnkgZm9yIHRoaXMg
bG9hZCwgdGhlbiB0aGUgbmV3IHByb2Nlc3MgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgY3VycmVu
dCBoaXN0b3J5IGl0ZW0gc28gaXQgY2FuIHVwZGF0ZQogICAgICAgICAvLyBpdCBpbnN0ZWFkIG9m
IGNyZWF0aW5nIGEgbmV3IG9uZS4KLSAgICAgICAgbmV3UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0Q3VycmVudEhpc3RvcnlJdGVtRm9yUmVhdHRhY2gobV9iYWNrRm9yd2FyZExp
c3QtPmN1cnJlbnRJdGVtKCktPml0ZW1TdGF0ZSgpKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5k
VG9Qcm9jZXNzKG5ld1Byb2Nlc3MsIE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9y
eUl0ZW1Gb3JSZWF0dGFjaChtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbVN0
YXRlKCkpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogV29yayBvdXQgdGltaW5nIG9mIHJlc3Bv
bmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YwpAQCAtMjk4OCw3ICsyOTg4
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQp
CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJBZ2VudChtX3VzZXJBZ2Vu
dCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VyQWdlbnQo
bV91c2VyQWdlbnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFwcGxpY2F0aW9uTmFt
ZUZvclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSkKQEAgLTMwMjUsNyAr
MzAyNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpCiAKICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1l
QWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQpAQCAtMzAzNSw3ICszMDM1
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9ucygpCiAKICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IHRydWU7CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0
aW9ucygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6
c3VwcG9ydHNUZXh0RW5jb2RpbmcoKSBjb25zdApAQCAtMzA1Miw3ICszMDUyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNv
ZGluZ05hbWUpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRF
bmNvZGluZ05hbWUoZW5jb2RpbmdOYW1lKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1lKSk7CiB9CiAK
IFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJv
b2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CkBAIC0zMDc0LDcg
KzMwNzQsNyBAQCBTZXNzaW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpG
dW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBz
ZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0
YXRlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9zZXNzaW9uUmVzdG9y
YXRpb25SZW5kZXJUcmVlU2l6ZSA9IDA7CiAgICAgbV9oaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9s
ZCA9IGZhbHNlOwpAQCAtMzA4Myw3ICszMDgzLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2kK
IAogICAgIGlmIChoYXNCYWNrRm9yd2FyZExpc3QpIHsKICAgICAgICAgbV9iYWNrRm9yd2FyZExp
c3QtPnJlc3RvcmVGcm9tU3RhdGUoV1RGTW92ZShzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRMaXN0
U3RhdGUpKTsKLSAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3Rv
cmVTZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0Zvcndh
cmRMaXN0LT5pdGVtU3RhdGVzKCkpKTsKIAogICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9w
YWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRD
YW5Hb0JhY2sodHJhbnNhY3Rpb24sIG1fYmFja0ZvcndhcmRMaXN0LT5iYWNrSXRlbSgpKTsKQEAg
LTMxMzEsNyArMzEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0Wm9vbUZhY3Rvcihk
b3VibGUgem9vbUZhY3RvcikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4
dFpvb21GYWN0b3IobV90ZXh0Wm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0VGV4dFpvb21GYWN0b3IobV90ZXh0Wm9vbUZhY3RvcikpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3Ip
CkBAIC0zMTQ2LDcgKzMxNDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZVpvb21GYWN0
b3IoZG91YmxlIHpvb21GYWN0b3IpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFBhZ2Vab29tRmFjdG9yKG1fcGFnZVpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAorICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2Vab29tRmFjdG9yKG1fcGFnZVpvb21GYWN0b3IpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91Ymxl
IHBhZ2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3IpCkBAIC0zMTYyLDcgKzMxNjIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhkb3VibGUg
cGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0ZXh0WgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKG1fcGFnZVpvb21GYWN0b3IsIG1fdGV4dFpv
b21GYWN0b3IpLCBtX3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBh
Z2VBbmRUZXh0Wm9vbUZhY3RvcnMobV9wYWdlWm9vbUZhY3RvciwgbV90ZXh0Wm9vbUZhY3Rvcikp
OwogfQogCiBkb3VibGUgV2ViUGFnZVByb3h5OjpwYWdlWm9vbUZhY3RvcigpIGNvbnN0CkBAIC0z
MTkyLDcgKzMxOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdlKGRvdWJsZSBzY2Fs
ZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2NhbGVQYWdlKHNjYWxlLCBvcmlnaW4pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2NhbGVQYWdlKHNjYWxlLCBvcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50
UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKQpAQCAtMzIwNCw3ICszMjA0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwg
Y29uc3QgSW50UG9pbnQmIGNlbnQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Nh
bGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMoc2NhbGUsIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFnZUluVmlld0Nv
b3JkaW5hdGVzKHNjYWxlLCBjZW50ZXJJblZpZXdDb29yZGluYXRlcykpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2NhbGVWaWV3KGRvdWJsZSBzY2FsZSkKQEAgLTMyMTYsNyArMzIxNiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzY2FsZVZpZXcoZG91YmxlIHNjYWxlKQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2FsZVZpZXcoc2NhbGUpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVWaWV3KHNjYWxlKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikK
QEAgLTMyMzUsNyArMzIzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRD
aGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5
SUQpKTsKIH0KIAogZmxvYXQgV2ViUGFnZVByb3h5OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0
CkBAIC0zMjc0LDcgKzMyNzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNl
dHRpbmdzRGlkQ2hhbmdlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXNz
aWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQpAQCAtMzI5MSw3ICsz
MjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5b3V0KGZpeGVk
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5
b3V0KGZpeGVkKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNpemUo
Y29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTMzMDQsNyArMzMwNCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVy
KGJvb2wgYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpCkBAIC0zMzE3LDcgKzMzMTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9v
bCBhbHdheXNTaG93c0hvcml6b250YWxTYwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihhbHdheXNTaG93c0hvcml6b250YWxT
Y3JvbGxlciksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdh
eXNTaG93c0hvcml6b250YWxTY3JvbGxlcihhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcikp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVy
KGJvb2wgYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKQpAQCAtMzMzMCw3ICszMzMwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihib29sIGFs
d2F5c1Nob3dzVmVydGljYWxTY3JvbGwKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxl
ciksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93
c1ZlcnRpY2FsU2Nyb2xsZXIoYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpsaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJD
b3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1pbGVzdG9uZXMpCkBAIC0zMzQzLDcgKzMzNDMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2Vi
Q29yZTo6TGF5b3V0TWlsZXN0b25lPgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpM
aXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVz
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlv
bnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMpCkBAIC0zMzU2LDcgKzMzNTYsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NB
bmltYXRpb25zKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Nj
cm9sbGJhckFuaW1hdGlvbnMoc3VwcHJlc3NBbmltYXRpb25zKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhzdXBw
cmVzc0FuaW1hdGlvbnMpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnJ1YmJlckJhbmRzQXRM
ZWZ0KCkgY29uc3QKQEAgLTM0MDgsNyArMzQwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRF
bmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcoYm9vbCBlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRp
CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZVZlcnRpY2FsUnViYmVy
QmFuZGluZyhlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJs
ZVZlcnRpY2FsUnViYmVyQmFuZGluZykpOwogfQogICAgIAogYm9vbCBXZWJQYWdlUHJveHk6OnZl
cnRpY2FsUnViYmVyQmFuZGluZ0lzRW5hYmxlZCgpIGNvbnN0CkBAIC0zNDI1LDcgKzM0MjUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoYm9v
bCBlbmFibGVIb3Jpem9udGFsUnViYmVyQgogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVy
QmFuZGluZyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFi
bGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZykp
OwogfQogICAgIAogYm9vbCBXZWJQYWdlUHJveHk6Omhvcml6b250YWxSdWJiZXJCYW5kaW5nSXNF
bmFibGVkKCkgY29uc3QKQEAgLTM0NDIsNyArMzQ0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9u
ZFBhCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRFeHRlbmRz
QmV5b25kUGFnZShiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJh
Y2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6YmFj
a2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKCkgY29uc3QKQEAgLTM0NTksNyArMzQ1OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uTW9kZShXZWJDb3JlOjpQYWdpbmF0aW9uOjpN
b2RlIG1vZGUpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25N
b2RlKG1vZGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFn
aW5hdGlvbk1vZGUobW9kZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlv
bkJlaGF2ZXNMaWtlQ29sdW1ucyhib29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKQEAgLTM0NzEsNyAr
MzQ3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1
bW5zKGJvb2wgYmVoYXZlc0xpa2VDb2x1bW5zKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucyks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uQmVo
YXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucykpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0UGFnZUxlbmd0aChkb3VibGUgcGFnZUxlbmd0aCkKQEAgLTM0ODMsNyArMzQ4Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTGVuZ3RoKGRvdWJsZSBwYWdlTGVuZ3RoKQog
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlTGVuZ3RoKHBhZ2VMZW5ndGgp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUxlbmd0aChw
YWdlTGVuZ3RoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMo
ZG91YmxlIGdhcCkKQEAgLTM0OTUsNyArMzQ5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRH
YXBCZXR3ZWVuUGFnZXMoZG91YmxlIGdhcCkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0R2FwQmV0d2VlblBhZ2VzKGdhcCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGJvb2wgbGluZUdyaWRFbmFibGVkKQpA
QCAtMzUwNyw3ICszNTA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25MaW5l
R3JpZEVuYWJsZWQoYm9vbCBsaW5lR3JpZEVuYWJsZWQpCiAgICAgCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxl
ZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9u
TGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSBzY2FsZUZhY3RvcikKQEAgLTM1MzIs
MjcgKzM1MzIsMjcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5n
TWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25z
LCBtYXhNYXRjaENvdW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRj
aENvdW50KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0
cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNo
Q291bnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldEltYWdlRm9yRmluZE1hdGNoKGlu
dDMyX3QgbWF0Y2hJbmRleCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldEltYWdlRm9yRmluZE1hdGNoKG1hdGNoSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRl
eCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEZpbmRN
YXRjaChtYXRjaEluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNlbGVjdEZpbmRNYXRjaChtYXRjaEluZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpo
aWRlRmluZFVJKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okhp
ZGVGaW5kVUkoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVG
aW5kVUkoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpCkBAIC0zNTYwLDcgKzM1NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJp
bmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLAogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBv
cHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJf
dD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNl
bGVjdGlvbk9ubHksIEZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrKQpAQCAtMzU3MSw3ICszNTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
cGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmlu
ZyYKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0
Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25s
eSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2Vs
ZWN0aW9uT25seSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNo
SW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCkBAIC0zNTk2LDE0ICszNTk2LDE0IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBT
dHJpbmcmIHNjcmlwdCwgYm9vCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQs
IGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpG
dW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRp
b24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIEFTU0VSVChtYWluRnJhbWUoKS0+ZnJhbWVJRCgpICE9IGZy
YW1lSUQpOwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2
YVNjcmlwdEluRnJhbWUoZnJhbWVJRCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3Jp
cHRJbkZyYW1lKGZyYW1lSUQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgY2FsbGJhY2tJRCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50
YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzYxNCw3ICszNjE0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC0zNjI2LDcgKzM2MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291
cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwog
ICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFj
a0lEKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZv
ckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwg
Y2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmlu
ZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNjM4LDcgKzM2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURz
LmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldENvbnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpKTsKIH0KIAog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMzY0OSw3ICszNjQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgQXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVj
dGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRz
QXNBdHRyaWJ1dGVkU3RyaW5nKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50
c0FzQXR0cmlidXRlZFN0cmluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAj
ZW5kaWYKIApAQCAtMzY2Miw3ICszNjYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVj
b2RlUHJvZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAg
ICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJ
RCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVBy
b2ZpbGUoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRCeXRlY29kZVByb2ZpbGUoY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNjc0
LDcgKzM2NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1
dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2Fk
RGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBs
aW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpA
QCAtMzY4Niw3ICszNjg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRN
TERhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXMKICAgICB9CiAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRN
TERhdGEoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpKTsKIH0KICNlbmRpZgogCkBAIC0z
Njk4LDcgKzM2OTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50
c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaQogICAgIH0KICAgICAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29u
dGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0
aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCkBAIC0zNzA5LDcgKzM3MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0
aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYgogICAg
IH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNr
SUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1l
KFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzcyMCw3ICszNzIwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBGdW5jdGlvbjx2b2kKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+
ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxi
YWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc291cmNlVVJMLCBGdW5jdGlvbjx2
b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQpAQCAtMzczMSw3ICszNzMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0
YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KICAgICB9CiAg
ICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJl
c291cmNlRGF0YUZyb21GcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNvdXJjZVVSTC0+c3RyaW5n
KCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVP
ZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc0Miw3ICszNzQy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEkKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+
ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFdlYkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxi
YWNrPiYmIGNhbGxiYWNrKQpAQCAtMzc3Niw3ICszNzc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogCiAgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2Fs
bGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwogICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWlu
dCgpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50
KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZv
cmNlUmVwYWludChjYWxsYmFja0lEKSk7CiB9CiAKIHN0YXRpYyBPcHRpb25TZXQ8SVBDOjpTZW5k
T3B0aW9uPiBwcmludGluZ1NlbmRPcHRpb25zKGJvb2wgaXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVy
YXRpb24pCkBAIC0zODAyLDcgKzM4MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5j
ZXNEaWRDaGFuZ2UoKQogICAgIC8vIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJIHByb2Nl
c3MsIHNvIHRoYXQgb3ZlcnJpZGVzIGdldCByZW1vdmVkLgogCiAgICAgLy8gUHJlZmVyZW5jZXMg
bmVlZCB0byBiZSB1cGRhdGVkIGR1cmluZyBzeW5jaHJvbm91cyBwcmludGluZyB0byBtYWtlICJw
cmludCBiYWNrZ3JvdW5kcyIgcHJlZmVyZW5jZSB3b3JrIHdoZW4gdG9nZ2xlZCBmcm9tIGEgcHJp
bnQgZGlhbG9nIGNoZWNrYm94LgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2UocHJlZmVyZW5jZXNTdG9yZSgpKSwgbV9wYWdlSUQsIHBy
aW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2Vz
U3RvcmUoKSksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJh
dGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQpCkBAIC0zOTMyLDggKzM5MzIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
CiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKICAgICAgICAg
bmF2aWdhdGlvbiA9IG5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsK
IAotICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nlc3Mg
cGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1
NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX3BhZ2VJRCwgcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkg
JSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVy
bCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSwgZnJhbWVJRCk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRy
YW5zYWN0aW9uKCk7CiAKQEAgLTM5ODUsNyArMzk4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywg
IldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAi
LCB1cmwgJXMiLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3Io
cGFnZUNsaWVudCgpKTsKIApAQCAtNDAxNCw3ICs0MDE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVk
KFJlZjwKIAogdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5LCBX
ZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFt
ZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7
CiAKQEAgLTQwMjcsNyArNDAyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNs
aWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ2FuY2Vs
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJv
dGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDc0LDggKzQwNzQsOCBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFNlY3VyaQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxV
UkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxD
b250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9h
ZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3Mg
cGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAl
cyIsIG1fcGFnZUlELCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25hbFVS
TC51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwg
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQsIGVycm9yLmRv
bWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBMT0coTG9hZGlu
ZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlk
ICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIs
IG1fcGFnZUlELnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zp
c2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2Rl
ID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
LCBmcmFtZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUo
KSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC00MTQxLDkgKzQxNDEsOSBAQCBzdGF0aWMgYm9vbCBpc05vblVuaXF1ZU5hdmlnYXRpb25X
aXRoTGlua0RlY29yYXRpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhIHJlcQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1
c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3Qg
V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNv
bnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihM
b2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGlu
IG5hdmlnYXRpb24gJSIgUFJJdTY0LCBtX3BhZ2VJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBMT0co
TG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9h
ZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJdTY0LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBu
YXZpZ2F0aW9uSUQpOwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVy
IGxvYWQgY29tbWl0LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJk
TGlzdC0+bG9nZ2luZ1N0cmluZygpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9y
IHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MjU0LDcgKzQyNTQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBh
Z2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQyNzgsNyAr
NDI3OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFn
ZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUgLSBXZWJQYWdlUHJveHkgJXAgd2l0aCBuYXZp
Z2F0aW9uSUQgJSIgUFJJdTY0ICIgZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRpb25JRCk7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZy
YW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFt
ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZy
YW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKIApAQCAtNDMyMyw3ICs0MzIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImRpZEZhaWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCku
dXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9
ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
LCBmcmFtZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUo
KSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC00MzY1LDcgKzQzNjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZy
YW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDUzNSw3ICs0NTM1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJh
bWVQb2xpY3lMaXN0ZW4KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmll
ciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0Rh
dGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwKKyAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFt
ZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3Rl
bmVySUQpCiB7CiAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdp
biksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0
YSksCkBAIC00NTQzLDcgKzQ1NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcgogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwKLSAgICBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90
IGxpc3RlbmVySUQpCiB7CkBAIC00NTUxLDcgKzQ1NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveAogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogCiAgICAgYXV0byBzZW5k
ZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3Mg
PSBwcm9jZXNzLmNvcHlSZWYoKV0gKGF1dG8uLi4gYXJncykgewotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwg
bGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3Rl
bmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICB9KTsKIAogICAgIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24ocHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwg
V1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmln
YXRpb25BY3Rpb25EYXRhKSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdl
SUQsCkBAIC00NTU5LDcgKzQ1NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
RnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBSZWY8UG9saWN5RGVjaXNpb25TZW5k
ZXI+JiYgc2VuZGVyKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIC0gT3JpZ2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdl
dCBVUkwgJXMiLCBvcmlnaW5hbFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
cmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQ2OTksNyArNDY5OSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgIGlmICghZnJvbUFQSSAmJiBvcmln
aW5hdGluZ0ZyYW1lID09ICZmcmFtZSkKICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRl
c3RpbmF0aW9uRnJhbWVJbmZvLmNvcHlSZWYoKTsKICAgICAgICAgZWxzZSBpZiAoIWZyb21BUEkp
Ci0gICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQ
YWdlKG9yaWdpbmF0aW5nUGFnZUlEKSA6IG51bGxwdHIpOworICAgICAgICAgICAgc291cmNlRnJh
bWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEs
IG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQp
IDogbnVsbHB0cik7CiAKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwcm9j
ZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1
cmVUb2tlbklkZW50aWZpZXIpOwogICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFt
X3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KQEAg
LTQ3NzIsNyArNDc3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2dGcmFtZU5hdmlnYXRpb24o
Y29uc3QgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFVSTCYgcGFnCiAjZW5kaWYKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2
NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwK
ICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKQEAgLTQ3OTAsNyArNDc5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzCiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wg
aXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlE
LAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTQ4MjEsNyArNDgy
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2Fm
ZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCiAgICAgICAgIGF1dG8g
c2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVy
SURdIChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQs
IGFyZ3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLikp
OwogICAgICAgICB9KTsKIAogICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFj
dGlvbiwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpAQCAtNDg3MCw3
ICs0ODcwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICAgICAgQVNTRVJUX1VOVVNF
RChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAKICAgICAgICAg
YXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlz
dGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2VzcyldIChhdXRvLi4uIGFyZ3MpIHsKLSAg
ICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQpOworICAg
ICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIAogICAgICAgICByZWNlaXZlZFBvbGljeURlY2lz
aW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3Zl
KHNlbmRlcikpOwpAQCAtNDkwNyw3ICs0OTA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxT
dWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMK
ICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcywgc291cmNlRnJhbWUpOwogCiAgICAgbV9mb3Jt
Q2xpZW50LT53aWxsU3VibWl0Rm9ybSgqdGhpcywgKmZyYW1lLCAqc291cmNlRnJhbWUsIHRleHRG
aWVsZFZhbHVlcywgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRh
Lm9iamVjdCgpKS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
ZnJhbWVJRCwgbGlzdGVuZXJJRF0oKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q29udGludWVXaWxsU3VibWl0Rm9ybShmcmFtZUlELCBsaXN0ZW5lcklEKSwg
bV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250aW51ZVdpbGxT
dWJtaXRGb3JtKGZyYW1lSUQsIGxpc3RlbmVySUQpKTsKICAgICB9KTsKIH0KIApAQCAtNDkyMyw3
ICs0OTIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25E
YXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90
IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2
aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YVNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJv
dGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTQzLDcgKzQ5NDMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYg
c291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNs
aWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJp
bmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTcwLDcgKzQ5
NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0
IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJl
ZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90
ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMTgsMTQgKzUwMTgsMTQgQEAg
V0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzYKICNlbmRpZgogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBN
RVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEuZnJhbWVJRCkpOwotICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBB
UEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNz
LT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKSk7CisgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1l
SW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBv
cmlnaW5hdGluZ1BhZ2VJRCA/IG1fcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQp
IDogbnVsbHB0cik7CiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFp
bkZyYW1lLT51cmwoKSA6IFVSTCgpOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3Qs
IHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBt
dXRhYmxlIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0gICAgICAgICAgICByZXBseSgwLCBX
VEY6Om51bGxvcHQpOworICAgICAgICAgICAgcmVwbHkoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxv
cHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTUzNzQsNyArNTM3NCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1NoYXJl
U2hlZXQoY29uc3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBTaGFyZVNoZWV0
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY2FsbGJhY2tJRF0gKGJvb2wgYWNjZXNzKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVTaGFyZVNoZWV0KGFjY2VzcywgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29t
cGxldGVTaGFyZVNoZWV0KGFjY2VzcywgY2FsbGJhY2tJRCkpOwogICAgIH07CiAgICAgCiAgICAg
cGFnZUNsaWVudCgpLnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwpAQCAtNTQwNiw3ICs1NDA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1l
ZGlhVm9sdW1lKGZsb2F0IHZvbHVtZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldE1lZGlhVm9sdW1lKHZvbHVtZSksIG1fcGFnZUlEKTsgICAgCisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0TWVkaWFWb2x1bWUodm9sdW1lKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRNdXRlZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mg
c3RhdGUpCkBAIC01NDIyLDcgKzU0MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TXV0ZWQo
V2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIHN0YXRlKQogICAgICAgICBV
c2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkubXV0ZUNhcHR1cmVNZWRpYVN0cmVh
bXNFeGNlcHRJbigqdGhpcyk7CiAjZW5kaWYKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0TXV0ZWQoc3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0TXV0ZWQoc3RhdGUpKTsKICAgICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdl
KHsgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlLCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01l
ZGlhIH0pOwogfQogCkBAIC01NDQ0LDcgKzU0NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3Rv
cE1lZGlhQ2FwdHVyZSgpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0
dXJlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTWVkaWFD
YXB0dXJlKCkpOwogI2VuZGlmCiB9CiAKQEAgLTU0NTMsNyArNTQ1Myw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlN0b3BBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTdG9wQWxsTWVkaWFQbGF5YmFjaygpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkKQEAgLTU0NjEsNyArNTQ2MSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQpAQCAtNTQ2
OSw3ICs1NDY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2so
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNr
KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRp
YVBsYXliYWNrKCkpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCkBAIC01NDc4LDcg
KzU0NzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50
VHlwZSBldmVudFR5cGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5k
bGVNZWRpYUV2ZW50KGV2ZW50VHlwZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpIYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlwZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxl
bWVudElEKQpAQCAtNTQ4Niw3ICs1NDg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZvbHVt
ZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1l
LCBlbGVtZW50SUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpKTsKIH0KICNlbmRpZgogCkBA
IC01NTAwLDcgKzU1MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdo
ZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhtYXlTdGFydE1lZGlhKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1heVN0YXJ0TWVkaWFXaGVuSW5X
aW5kb3cobWF5U3RhcnRNZWRpYSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93
bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRvd25sb2FkKQpAQCAtNTU0Nyw3ICs1NTQ3LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBjb2xvcikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlQ29sb3Io
Y29sb3IpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3Nl
Q29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yUGlja2Vy
KCkKQEAgLTU1NTYsNyArNTU1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmRDb2xvclBp
Y2tlcigpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZENvbG9yUGlja2Vy
KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRDb2xvclBp
Y2tlcigpKTsKIH0KICNlbmRpZgogCkBAIC01NTkwLDcgKzU1OTAsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkQ2xvc2VTdWdnZXN0aW9ucygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZGF0
YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duID0gbnVsbHB0cjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZENsb3NlU3VnZ2VzdGlvbnMoKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENsb3NlU3VnZ2VzdGlvbnMoKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9w
dGlvbikKQEAgLTU1OTgsNyArNTU5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTZWxlY3RP
cHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0RGF0YUxpc3RPcHRp
b24oc2VsZWN0ZWRPcHRpb24pKTsKIH0KIAogI2VuZGlmCkBAIC01NjUxLDcgKzU2NTEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJv
b2wgYWxsb3dzKQogICAgICAgICByZXR1cm47CiAgICAgbV9hbGxvd3NNZWRpYURvY3VtZW50SW5s
aW5lUGxheWJhY2sgPSBhbGxvd3M7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhhbGxvd3MpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWxsb3dzTWVkaWFEb2N1bWVu
dElubGluZVBsYXliYWNrKGFsbG93cykpOwogfQogI2VuZGlmCiAKQEAgLTU4MzQsMTcgKzU4MzQs
MTcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0
aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFnZUlEOworICAgIHJldHVybiBtX3Bh
Z2VJRC50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsdWVDaGFuZ2VkRm9y
UG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KQog
ewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0
ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShuZXdTZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3Rp
dmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRleCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0VGV4dEZyb21JdGVtRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBp
bmRleCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRG
b3JBY3RpdmVQb3B1cE1lbnUoaW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0VGV4dEZvckFjdGl2ZVBvcHVwTWVudShpbmRleCkpOwogfQogCiBib29sIFdl
YlBhZ2VQcm94eTo6aXNQcm9jZXNzaW5nS2V5Ym9hcmRFdmVudHMoKSBjb25zdApAQCAtNTg3OSwx
MyArNTg3OSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVu
ZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6TwogICAgIC8vIEZvciBiYWNrd2Fy
ZC1jb21wYXRpYmlsaXR5LCBtYWtlIHN1cmUgd2UgbGF1bmNoIHRoZSBpbml0aWFsIHByb2Nlc3Mg
aWYgdGhlIGNsaWVudCBhc2tzIHRvIHBvc3QgYSBtZXNzYWdlIHRvIGl0cyBpbmplY3RlZCBidW5k
bGUgYmVmb3JlIGRvaW5nIGEgbG9hZC4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNz
YXJ5KCk7CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdEluamVj
dGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9y
bU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKG1lc3NhZ2VO
YW1lLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdl
Qm9keSkuZ2V0KCkpKSk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZmFpbGVkVG9TaG93UG9wdXBNZW51KCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkZhaWxlZFRvU2hvd1BvcHVwTWVudSgpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RmFpbGVkVG9TaG93UG9wdXBNZW51KCkpOwogfQogI2VuZGlm
CiAKQEAgLTU5NTIsNyArNTk1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1l
bnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHRNZW51Q29udGV4dERhCiAgICAgbV9h
Y3RpdmVDb250ZXh0TWVudS0+c2hvdygpOwogCiAgICAgLy8gTm8gbWF0dGVyIHRoZSByZXN1bHQg
b2YgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUsIGFsd2F5cyBub3RpZnkgdGhlIFdlYlByb2Nlc3Mg
dGhhdCB0aGUgbWVudSBpcyBoaWRkZW4gc28gaXQgc3RhcnRzIGhhbmRsaW5nIG1vdXNlIGV2ZW50
cyBhZ2Fpbi4KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRN
ZW51SGlkZGVuKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250
ZXh0TWVudUhpZGRlbigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRl
bVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCkBAIC02MDMwLDEy
ICs2MDMwLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChj
b25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQogICAgIGlmIChpdGVtLmFjdGlvbigp
ID09IENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcgfHwgaXRlbS5hY3Rpb24oKSA9PSBD
b250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZykKICAgICAgICAgKyttX3BlbmRpbmdMZWFy
bk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudDsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9tQWN0
aXZlQ29udGV4dE1lbnUoaXRlbSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29u
dGV4dE1lbnVLZXlFdmVudCgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb250ZXh0TWVudUZvcktleUV2ZW50KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUZvcktleUV2ZW50KCkpOwogfQogI2VuZGlmIC8vIEVO
QUJMRShDT05URVhUX01FTlVTKQogCkBAIC02MDUxLDEwICs2MDUxLDEwIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNv
bihjb25zdCBWZWN0CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlVVJMcy5zaXplKCk7
ICsraSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ld
LCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZXNbaV0pOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRT
YW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxl
c0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpKTsKICNlbmRpZgogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNv
bkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCkp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMsIGRpc3BsYXlTdHJp
bmcsIGljb25EYXRhID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0YVJlZmVy
ZW5jZSgpKSk7CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7
CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MDc5LDEwICs2
MDc5LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChj
b25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zy
b21PcGVuUGFuZWwoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsKGZpbGVVUkxzKSk7CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5p
bnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBA
IC02MDkzLDcgKzYwOTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsRm9yT3BlblBh
bmVsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2FuY2VsRm9yT3BlblBh
bmVsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxG
b3JPcGVuUGFuZWwoKSk7CiAgICAgCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52
YWxpZGF0ZSgpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAt
NjEwMSw3ICs2MTAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9wZW5QYW5l
bCgpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBz
dGFydEJlZm9yZVNlbGVjdGlvbikKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhzdGFydEJlZm9yZVNlbGVjdGlvbiksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNo
YW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCkKQEAgLTYxMDksNyArNjEwOSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcm
IHdvcmQpCiAgICAgaWYgKHdvcmQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZVNwZWxsaW5nVG9Xb3JkKHdv
cmQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlU3BlbGxp
bmdUb1dvcmQod29yZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29t
bWFuZChSZWY8V2ViRWRpdENvbW1hbmRQcm94eT4mJiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8g
dW5kb09yUmVkbykKQEAgLTYxMjgsNyArNjEyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1v
dmVFZGl0Q29tbWFuZChXZWJFZGl0Q29tbWFuZFByb3h5JiBjb21tYW5kKQogCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVFZGl0Q29tbWFuZChjb21tYW5kLmNvbW1hbmRJ
RCgpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUVk
aXRDb21tYW5kKGNvbW1hbmQuY29tbWFuZElEKCkpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6
OmNhblVuZG8oKQpAQCAtNjIxNywxMiArNjIxNywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBUZXh0Q2hlY2tp
bgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJl
cXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3Vs
dCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEZpbmlzaENo
ZWNraW5nVGV4dChyZXF1ZXN0SUQsIHJlc3VsdCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRGaW5pc2hDaGVja2luZ1RleHQocmVxdWVzdElELCByZXN1bHQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCBy
ZXF1ZXN0SUQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRD
YW5jZWxDaGVja2luZ1RleHQocmVxdWVzdElEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZENhbmNlbENoZWNraW5nVGV4dChyZXF1ZXN0SUQpKTsKIH0KIC8vIE90
aGVyCiAKQEAgLTYzNTEsNyArNjM1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZl
RXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICBib29sIGNh
blByb2Nlc3NNb3JlS2V5RXZlbnRzID0gIW1fa2V5RXZlbnRRdWV1ZS5pc0VtcHR5KCk7CiAgICAg
ICAgIGlmIChjYW5Qcm9jZXNzTW9yZUtleUV2ZW50cykgewogICAgICAgICAgICAgTE9HKEtleUhh
bmRsaW5nLCAiIFVJIHByb2Nlc3M6IHNlbnQga2V5RXZlbnQgZnJvbSBkaWRSZWNlaXZlRXZlbnQi
KTsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZl
bnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCkpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVudChtX2tleUV2ZW50UXVldWUuZmlyc3QoKSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIGNhbGwgdG8gZG9uZVdpdGhLZXlFdmVudCBtYXkg
Y2xvc2UgdGhpcyBXZWJQYWdlLgpAQCAtNjcxNSw3ICs2NzE1LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmZyYW1lU2V0TGFyZ2VzdEZyYW1lQ2hhbmdlZCh1aW50NjRfdCBmcmFtZUlEKQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2
ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
LCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpA
QCAtNjcyNyw3ICs2NzI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVV
bnJlc3BvbnNpdmUoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3Bv
bnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NE
aWRCZWNvbWVSZXNwb25zaXZlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzIzMyw3ICs3MjMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJh
Y2tGb3J3YXJkQ2xlYXIoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2FtZXBhZEFjdGl2aXR5KGNv
bnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mIGdhbWVwYWREYXRhcywgYm9vbCBzaG91bGRNYWtlR2Ft
ZXBhZHNWaXNpYmxlKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2FtZXBhZEFjdGl2aXR5KGdhbWVwYWREYXRhcywgc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHYW1lcGFkQWN0aXZpdHko
Z2FtZXBhZERhdGFzLCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKSk7CiB9CiAKICNlbmRpZgpA
QCAtNzUzOSw3ICs3NTM5LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OndpbGxIYW5kbGVIb3Jpem9u
dGFsU2Nyb2xsRXZlbnRzKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVdlYnNp
dGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVz
KHdlYnNpdGVQb2xpY2llcyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpVcGRhdGVXZWJzaXRlUG9saWNpZXMod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGFSZWZlcmVuY2UpCkBAIC03NTQ5LDcgKzc1NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5n
JiBzdQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRSZW1vdmVkSXRlbShjb25zdCBC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJk
SXRlbShpdGVtSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKGJv
b2wgY2FuUnVuTW9kYWwpCkBAIC03NTYyLDcgKzc1NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0Q2FuUnVuTW9kYWwoYm9vbCBjYW5SdW5Nb2RhbCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwobV9jYW5SdW5Nb2RhbCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5Nb2RhbChtX2NhblJ1bk1vZGFsKSk7CiB9
CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpjYW5SdW5Nb2RhbCgpCkBAIC03NTc2LDcgKzc1NzYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwg
Y29uc3QgUHJpbnRJbmZvJiBwcmludEluZgogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzSW5Q
cmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8pLCBtX3BhZ2VJRCwg
cHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJhbWVJRCgp
LCBwcmludEluZm8pLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmVuZFByaW50aW5nKCkKQEAgLTc1
ODUsNyArNzU4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbmRQcmludGluZygpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1faXNJblByaW50aW5nTW9kZSA9IGZhbHNlOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RW5kUHJpbnRpbmcoKSwgbV9wYWdlSUQsIHByaW50
aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVuZFByaW50aW5nKCksIHByaW50aW5nU2VuZE9wdGlvbnMo
bV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvLCBSZWY8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiYmIGNhbGxiYWNr
KQpAQCAtNzU5OCw3ICs3NTk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0Zv
clByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50
aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBw
cmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZyhmcmFtZS0+
ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1f
aXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09B
KQpAQCAtNzYxMSw3ICs3NjExLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFn
ZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBy
ZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9u
cyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhd1JlY3RUb0ltYWdlKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgcmVj
dCwgaW1hZ2VTaXplLCBjYWxsYmFja0lEKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9y
bWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFn
ZXNUb1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJiBjYWxs
YmFjaykKQEAgLTc2MjMsNyArNzYyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNU
b1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluCiAgICAg
CiAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZv
LCBmaXJzdCwgY291bnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9u
cyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJz
dCwgY291bnQsIGNhbGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5n
RE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KICNlbGlmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+JiYgY2FsbGJh
Y2spCkBAIC03NjM2LDcgKzc2MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9y
UHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzRm9yUHJpbnRp
bmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHBy
aW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc0ZvclByaW50aW5nKGZyYW1lLT5mcmFt
ZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1Bl
cmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogI2VuZGlmCiAKQEAgLTc2ODEsNyArNzY4
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBJbnRTaXpl
JiB2aWV3TGF5b3V0U2l6ZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmll
d0xheW91dFNpemUodmlld0xheW91dFNpemUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0Vmlld0xheW91dFNpemUodmlld0xheW91dFNpemUpKTsKICAgICBtX2Ry
YXdpbmdBcmVhLT52aWV3TGF5b3V0U2l6ZURpZENoYW5nZSgpOwogCiAjaWYgVVNFKEFQUEtJVCkK
QEAgLTc3MDAsNyArNzcwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBdXRvU2l6aW5nU2hv
dWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGJvb2wgc2hvdWxkRXhwYW5kKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KHNo
b3VsZEV4cGFuZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRB
dXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KHNob3VsZEV4cGFuZCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCkBAIC03NzEzLDcgKzc3MTMsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBJbnRTaXpl
JiB2aWV3cG9ydFNpegogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHZpZXdwb3J0U2l6ZSksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
KHZpZXdwb3J0U2l6ZSkpOwogfQogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5U
KQpAQCAtNzc4NCw3ICs3Nzg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3Jy
ZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZSwgY29uc3QgU3RyaW5nJgogdm9pZCBXZWJQ
YWdlUHJveHk6OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVz
dWx0KQogewogICAgIGlmICghaXNDbG9zZWQoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpLCBt
X3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFsdGVybmF0
aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCkpOwogfQogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5B
VElWRVMpCkBAIC03ODI1LDcgKzc4MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9z
aXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGlu
ZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwg
cmVwbGFjZW1lbnRSYW5nZUVuZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2Vs
ZWN0aW9uRW5kLCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcm
IGNvbXBvc2l0aW9uU3RyaW5nLCBpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCBpbnQ2NF90IHNlbGVj
dGlvbkxlbmd0aCkKQEAgLTc4MzMsNyArNzgzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25m
aXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgaW50NjRfdCBz
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uKGNvbXBv
c2l0aW9uU3RyaW5nLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uTGVuZ3RoKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbihjb21wb3Np
dGlvblN0cmluZywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24oKQpAQCAtNzg0MSw3ICs3ODQxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDYW5jZWxDb21wb3NpdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQ29tcG9zaXRpb24oKSk7CiB9CiAjZW5kaWYgLy8gUExB
VEZPUk0oR1RLKQogCkBAIC03ODU4LDcgKzc4NTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogICAg
IG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yID0gcGlubmluZzsKIAogICAgIGlmIChoYXNSdW5uaW5n
UHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFNjcm9sbFBpbm5pbmdCZWhhdmlvcihwaW5uaW5nKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IocGlubmluZykpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFs
PFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUpCkBAIC03ODc2
LDcgKzc4NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxl
KE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdAogICAgICAgICBzY3JvbGxiYXJT
dHlsZUZvck1lc3NhZ2UgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHNjcm9s
bGJhclN0eWxlLnZhbHVlKCkpOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZSksIG1fcGFnZUlEKTsKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0
eWxlRm9yTWVzc2FnZSkpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCkBAIC03OTIxLDcg
Kzc5MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdl
U3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29ucwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
YWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5
cGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRNSU1FVHlw
ZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIobWltZVR5cGUpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVy
KG1pbWVUeXBlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250QXR0cmlidXRl
cyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmIGNoYW5nZXMpCkBAIC03OTI5LDcgKzc5
MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6
Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udEF0dHJpYnV0ZXMoV1RGTW92
ZShjaGFuZ2VzKSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3Jl
OjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCkBAIC03OTM3LDcgKzc5MzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92
ZShjaGFuZ2VzKSkpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03OTQ1LDcgKzc5NDUs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYm
IGNoYW5nZXMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYg
dGV4dCkKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRBc3luYyh0ZXh0KSwgbV9wYWdlSUQpOwor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYm
IG9wdGlvbnMpCkBAIC03OTUzLDcgKzc5NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBs
YWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBX
VEZNb3ZlKG9wdGlvbnMpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYXNNYXJrZWRUZXh0
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCkBAIC03OTYyLDcgKzc5
NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3ZlKGNh
bGxiYWNrKSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGlu
Z1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzk3
Myw3ICs3OTczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoV1RG
OjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICB9CiAKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBw
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtl
ZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2Vs
ZWN0ZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzk4NCw3ICs3OTg0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZv
aWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGIKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5j
KGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdURjo6RnVuY3Rpb248
dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CkBAIC03OTk1LDcgKzc5OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhG
b3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgVwogICAgIH0KIAog
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFyYWN0ZXJJbmRleEZv
clBvaW50QXN5bmMocG9pbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFj
a0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9pZCAoY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC04MDA2LDcgKzgwMDYsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5n
UmFuZ2UmIHJhbmdlLCBXVAogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZv
ckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBW
ZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFu
Z2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2Up
CkBAIC04MDE3LDcgKzgwMTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb25B
c3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dENvbXBvc2l0aW9uQXN5bmModGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uUmFuZ2UsIHJlcGxh
Y2VtZW50UmFuZ2UpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
Q29tcG9zaXRpb25Bc3luYyh0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25SYW5nZSwgcmVwbGFj
ZW1lbnRSYW5nZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9u
QXN5bmMoKQpAQCAtODAyNSw3ICs4MDI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1D
b21wb3NpdGlvbkFzeW5jKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJt
Q29tcG9zaXRpb25Bc3luYygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCkBA
IC04MDUwLDcgKzgwNTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJl
Y3QgcmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAgIH0KIAogICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90KHJlY3Qs
IGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMs
IGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJl
RGlkQmVnaW4oKQpAQCAtODIwOCw3ICs4MjA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oUmVmPE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2sK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0
aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6Om5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCBoYXNBY3RpdmVTZXNzaW9uLCBib29s
IHJlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwg
ZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUsIHVpbnQ2NF90IHVuaXF1ZUlkZW50
aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTgyNTEsMjIgKzgyNTEsMjIgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlFdmVu
dCBldmVudCwgT3B0aW9uU2V0PEEKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKEZsb2F0UG9pbnQgcG9p
bnQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtSW1t
ZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24ocG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0
aW9uKHBvaW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRV
cGRhdGUoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRp
YXRlQWN0aW9uRGlkVXBkYXRlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjppbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRD
b21wbGV0ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRp
YXRlQWN0aW9uRGlkQ29tcGxldGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJm
b3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgcmVz
dWx0LCBib29sIGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKQEAgLTgyODEsNyArODI4MSw3IEBAIE5TT2JqZWN0ICpXZWJQYWdlUHJveHk6OmltbWVkaWF0
ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdSZXN1bHQgYWNjZXB0ZWRDYW5kaWRhdGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0ZSks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBY2NlcHRlZENh
bmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0ZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
SGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpAQCAtODI5OSwxNyArODI5OSwxNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0VXNlU3lzdGVtQXBwZWFyYW5jZShib29sIHVzZVN5c3RlbUFwcGVhcmFu
Y2UpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZVN5c3RlbUFwcGVhcmFu
Y2UodXNlU3lzdGVtQXBwZWFyYW5jZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRVc2VTeXN0ZW1BcHBlYXJhbmNlKHVzZVN5c3RlbUFwcGVhcmFuY2UpKTsKIH0K
ICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5n
KGludCBoZWlnaHQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGhlaWdodCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGhl
aWdodCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9y
VGVzdGluZyhpbnQgaGVpZ2h0KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVz
dGluZyhoZWlnaHQpKTsKIH0KIAogI2VuZGlmCkBAIC04MzM1LDcgKzgzMzUsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBuZXdTaQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkRGlzcGF0Y2hG
YWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRz
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkRGlz
cGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50
cyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGREaXNw
YXRjaEZha2VNb3VzZU1vdmVFdmVudHMoc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRz
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBdXRvRmlsbEJ1dHRvbkNsaWNrKGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTgzODQsNyArODM4NCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQbGF5YmFja1RhcmdldCh1aW50NjRfdCBjb250ZXh0SWQsIFJlZjxNZWRpYVBs
YXliYWNrVGFyZ2V0CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFy
Z2V0U2VsZWN0ZWQoY29udGV4dElkLCB0YXJnZXQtPnRhcmdldENvbnRleHQoKSksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNv
bnRleHRJZCwgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vbCBhdmFpbGFibGUpCkBAIC04MzkyLDcgKzgzOTIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UodWludDY0X3QgY29u
dGV4dElkLCBibwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eURpZENoYW5nZShjb250ZXh0SWQsIGF2YWlsYWJsZSksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURp
ZENoYW5nZShjb250ZXh0SWQsIGF2YWlsYWJsZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodWludDY0X3QgY29udGV4dElkLCBib29sIHNo
b3VsZFBsYXkpCkBAIC04NDAwLDcgKzg0MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hv
dWxkUGxheVRvUGxheWJhY2tUYXJnZXQodWludDY0X3QgY29udGV4dElkLCBib29sIHNob3VsZAog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRQbGF5VG9QbGF5YmFja1Rh
cmdldChjb250ZXh0SWQsIHNob3VsZFBsYXkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBzaG91
bGRQbGF5KSk7CiB9CiAjZW5kaWYKIApAQCAtODQyNiw3ICs4NDI2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRh
dGUoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykK
QEAgLTg0NDksNyArODQ0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTaG91bGRTY2FsZVZp
ZXdUb0ZpdERvY3VtZW50KGJvb2wgc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoc2hv
dWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KHNob3VsZFNjYWxlVmll
d1RvRml0RG9jdW1lbnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3Jv
bGxQb3NpdGlvbigpCkBAIC04NDY5LDcgKzg0NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJh
YwogICAgICAgICBib29sIGRlY2lzaW9uID0gKGJvb2wpY2FsbGJhY2tGdW5jdGlvbjsKICAgICAg
ICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlvbmFsQ2FsbGJh
Y2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRpb25hbENhbGxi
YWNrSUQoKTsKIAotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxs
YmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBu
ZXdDYWxsYmFja0lkZW50aWZpZXIpKTsKICAgICB9KTsKIH0KIApAQCAtODQ4OCw3ICs4NDg4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGJvb2wgZGlz
YWJsZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFJlc291cmNlQ2FjaGlu
Z0Rpc2FibGVkKGRpc2FibGVkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGRpc2FibGVkKSk7CiB9CiAKIFdlYkNvcmU6
OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gV2ViUGFnZVByb3h5Ojp1c2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uKCkKQEAgLTg1MDEsNyArODUwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VM
YXlvdXRECiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24pKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVz
ZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24pKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlVmFs
aWRhdGlvbk1lc3NhZ2UoKQpAQCAtODU0OCwxNCArODU0OCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkQWxsb3dQb2ludGVyTG9jaygpCiAgICAgQ0dEaXNwbGF5SGlkZUN1cnNvcihDR01haW5E
aXNwbGF5SUQoKSk7CiAgICAgQ0dBc3NvY2lhdGVNb3VzZUFuZE1vdXNlQ3Vyc29yUG9zaXRpb24o
ZmFsc2UpOwogI2VuZGlmCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZEFjcXVpcmVQb2ludGVyTG9jaygpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWREZW55UG9pbnRlckxvY2soKQogewogICAgIEFTU0VSVChtX2lzUG9pbnRlckxvY2tQ
ZW5kaW5nICYmICFtX2lzUG9pbnRlckxvY2tlZCk7CiAgICAgbV9pc1BvaW50ZXJMb2NrUGVuZGlu
ZyA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTm90
QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCkBAIC04NTY2LDEyICs4NTY2LDEyIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCiAgICAgICAgIENHRGlzcGxheVNob3dD
dXJzb3IoQ0dNYWluRGlzcGxheUlEKCkpOwogI2VuZGlmCiAgICAgICAgIG1fdWlDbGllbnQtPmRp
ZExvc2VQb2ludGVyTG9jayh0aGlzKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRMb3NlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRMb3NlUG9pbnRlckxvY2soKSk7CiAgICAgfQogCiAgICAg
aWYgKG1faXNQb2ludGVyTG9ja1BlbmRpbmcpIHsKICAgICAgICAgbV91aUNsaWVudC0+ZGlkTG9z
ZVBvaW50ZXJMb2NrKHRoaXMpOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpKTsKICAgICB9
CiAKICAgICBtX2lzUG9pbnRlckxvY2tlZCA9IGZhbHNlOwpAQCAtODU5Miw3ICs4NTkyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVS
TFNjaGVtZUhhbmRsZXI+JiYgaGFuZGwKICAgICBhdXRvIGlkZW50aWZpZXJSZXN1bHQgPSBtX3Vy
bFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRs
ZXIpKTsKICAgICBBU1NFUlRfVU5VU0VEKGlkZW50aWZpZXJSZXN1bHQsIGlkZW50aWZpZXJSZXN1
bHQuaXNOZXdFbnRyeSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1l
LnZhbHVlKCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0
ZXJVUkxTY2hlbWVIYW5kbGVyKGlkZW50aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUo
KSkpOwogfQogCiBXZWJVUkxTY2hlbWVIYW5kbGVyKiBXZWJQYWdlUHJveHk6OnVybFNjaGVtZUhh
bmRsZXJGb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCkBAIC04NjUxLDcgKzg2NTEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2Uo
dXNlRGFya0FwcGVhcmFuY2UoKSwgdXNlSW5hY3RpdmVBcHBlYXJhbmNlKCkpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5n
ZSh1c2VEYXJrQXBwZWFyYW5jZSgpLCB1c2VJbmFjdGl2ZUFwcGVhcmFuY2UoKSkpOwogfQogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC04NjkwLDcgKzg2OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIEZ1
bmN0aW9uPAogCiAgICAgYXV0byBhdHRhY2htZW50SWRlbnRpZmllciA9IGF0dGFjaG1lbnQtPmlk
ZW50aWZpZXIoKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRh
Y2htZW50KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3Bs
YXkoKSwgYXR0YWNobWVudC0+ZmlsZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwg
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNl
cnRBdHRhY2htZW50KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZv
ckRpc3BsYXkoKSwgYXR0YWNobWVudC0+ZmlsZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5
cGUoKSwgY2FsbGJhY2tJRCkpOwogICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1l
bnRNYXAuc2V0KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKIH0K
IApAQCAtODcwNiw3ICs4NzA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwKICAgICAgICAg
ZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigp
LCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBl
KCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxl
U2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZp
bGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25z
dCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0
cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkK
QEAgLTg4NjYsNyArODg2Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1h
bmlmZXN0KEZ1bmN0aW9uPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6CiAKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBt
X2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBw
bGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lEKSk7CiB9CiAjZW5kaWYKIApAQCAtODkzMCw3ICs4
OTMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcG9ydFBhZ2VMb2FkUmVzdWx0KGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGVmZXJzTG9hZGlu
Z0ZvclRlc3RpbmcoYm9vbCBkZWZlcnNMb2FkaW5nKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0RGVmZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERlZmVyc0xvYWRpbmcoZGVmZXJz
TG9hZGluZykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0SXNWaWV3VmlzaWJsZShib29s
JiByZXN1bHQpCkBAIC04OTQyLDcgKzg5NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRl
Q3VycmVudE1vZGlmaWVyU3RhdGUoKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdF
QlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIGF1dG8gbW9kaWZpZXJzID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50U3RhdGVP
Zk1vZGlmaWVyS2V5cygpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUobW9kaWZpZXJzKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKG1vZGlmaWVy
cykpOwogI2VuZGlmCiB9CiAKQEAgLTg5ODQsMTkgKzg5ODQsMTkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKFdlYlByb2Nl
c3NQcm94eSYKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25D
aGFuZ2UoZG91YmxlIGFscGhhLCBkb3VibGUgYmV0YSwgZG91YmxlIGdhbW1hKQogewotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2ltdWxhdGVEZXZpY2VPcmllbnRhdGlv
bkNoYW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwg
Z2FtbWEpKTsKIH0KIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRldGVjdERhdGFJbkFsbEZyYW1lcyhXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlcyB0
eXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGV0ZWN0RGF0YUluQWxsRnJhbWVz
KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBlcykpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
RGV0ZWN0RGF0YUluQWxsRnJhbWVzKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBlcykpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVE
YXRhRGV0ZWN0ZWRMaW5rcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rp
b25SZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3Byb2Nlc3MtPmNvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRh
RGV0ZWN0ZWRMaW5rcygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlRGF0YURldGVj
dGVkTGlua3MoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiAjZW5kaWYKQEAg
LTkxNDYsNyArOTE0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0ZXh0SW5wdXRDb250ZXh0c0lu
UmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCwgQ29tcGxldGlvbkhhCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OlRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3QpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c1Rl
eHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYgY29udGV4dCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTkxNTYsNyArOTE1
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4
dElucHV0Q29udGV4dCYgY29udGV4dCwgQ29tcGxlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpGb2N1c1RleHRJbnB1dENvbnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpGb2N1c1RleHRJbnB1dENvbnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogTG9nZ2VyJiBXZWJQYWdlUHJveHk6OmxvZ2dlcigpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDZjNWFkNjI1ZDEyLi5hNmU4ZmUx
ODJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY2LDYgKzY2
LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBv
cHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5oIgor
I2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlVuZG9TdGVwSUQuaCIK
ICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rp
dml0eVN0YXRlLmg+CkBAIC04Miw2ICs4Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRT
aXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXZlbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgpAQCAtMzgyLDE0ICszODQsMTQgQEAgY2xhc3Mg
V2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6
UGFnZT4KICNlbmRpZgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2VQcm94eT4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVu
dCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb24+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNs
aWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8QVBJ
OjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAK
ICAgICBzdGF0aWMgdm9pZCBmb3JNb3N0VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJQYWdlUHJveHkqKT4mJik7CiAKICAgICBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0
aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3Q7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdDsKIApAQCAtMTUwMiw3ICsxNTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwogICAg
IHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYm
KTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsCi0gICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLAorICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCiAgICAgICAg
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlz
dGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwKICAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBj
YW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNTExLDcgKzE1MTMsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vi
c2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBiYWNrRm9yd2Fy
ZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6OkJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFt
ZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
OjpEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRSZXF1
ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpAQCAtMTU0OSw5ICsxNTUx
LDkgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzEKICAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXF1ZXN0
U3RvcmFnZVNwYWNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5h
bWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1
aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0KKyAgICAKIHByaXZhdGU6
Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRf
dCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKKyAgICBXZWJQYWdlUHJv
eHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRp
YWxpemUoKTsKIAogICAgIHZvaWQgbm90aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0oKTsKQEAgLTE1
NzMsNiArMTU3NSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRTdGF0ZUFmdGVyUHJvY2Vz
c0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFzb24pOwogCiAgICAgdm9pZCBzZXRVc2VyQWdl
bnQoU3RyaW5nJiYpOworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFRv
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFUmJiBtZXNzYWdlLCBPcHRpb25TZXQ8
SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIHJldHVy
biBwcm9jZXNzLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgc2Vu
ZE9wdGlvbnMpOworICAgIH0KIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIGJvb2wg
c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlvblNldDxJUEM6
OlNlbmRPcHRpb24+KSBvdmVycmlkZTsKQEAgLTE2MjcsMTMgKzE2MzQsMTMgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAK
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZy
YW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFt
ZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
LAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwK
KyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklE
KTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90
IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRf
dCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRh
JiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE2NTUs
NyArMTY2Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpOwog
CiAgICAgLy8gVUkgY2xpZW50Ci0gICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5m
b0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsK
KyAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBs
eSYmKTsKICAgICB2b2lkIHNob3dQYWdlKCk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29u
c3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpE
ZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcm
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJl
cGx5JiYpOwpAQCAtMjMyNyw3ICsyMzM0LDcgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJf
QURESVRJT05TXzIKICAgICBSZWZQdHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4gbV92YWxp
ZGF0aW9uQnViYmxlOwogI2VuZGlmCiAKLSAgICBjb25zdCB1aW50NjRfdCBtX3BhZ2VJRDsKKyAg
ICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogICAgIGJvb2wgbV9p
c1BhZ2VTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hZGRzVmlzaXRlZExpbmtzIHsg
dHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDZmY2VjZGM2YjY1Li5iMWU3OTkyMjNiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBA
QAogCiBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgVUkgbWVzc2FnZXMKLSAgICBD
cmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0
dXJlcywgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlv
bkRhdGEpIC0+ICh1aW50NjRfdCBuZXdQYWdlSUQsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycz4gbmV3UGFnZVBhcmFtZXRlcnMpIFN5bmNocm9ub3VzCisgICAgQ3Jl
YXRlTmV3UGFnZShzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6Oldp
bmRvd0ZlYXR1cmVzIHdpbmRvd0ZlYXR1cmVzLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBuZXdQYWdlSUQsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycz4gbmV3UGFnZVBhcmFtZXRlcnMpIFN5bmNocm9ub3VzCiAgICAgU2hvd1BhZ2UoKQog
ICAgIENsb3NlUGFnZShib29sIHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKQogICAgIFJ1bkphdmFT
Y3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFN0cmluZyBtZXNzYWdlKSAtPiAoKSBTeW5jaHJv
bm91cwpAQCAtMTA0LDggKzEwNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAg
ICAjIFBvbGljeSBtZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90
IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0
eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlN
RVR5cGUsIFN0cmluZyBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2Vi
S2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
cG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2Us
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBp
c01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25B
Y3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxv
YWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNp
ZXMpIFN5bmNocm9ub3VzCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJh
bWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJh
bWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlz
dGVuZXJJRCkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRf
dCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+
IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3Qg
bmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8
V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5bmNocm9ub3Vz
CiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVt
ZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Is
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcAppbmRleCBjODAyM2RlNDE2
MS4uZjQ5NzE1MWQ3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6YWRkV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQ
cm94eSwgV2ViUHJvY2UKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvY2Vzcy5pc1ByZXdhcm1lZCgp
KTsKIAogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQoJnByb2Nlc3MpLmlzTmV3RW50cnkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2
ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHBy
b2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6
OmFkZFdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nl
c3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkp
OwogICAgICAgICB3ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHByb2Nlc3MsICpwcm9jZXNz
LmNvbm5lY3Rpb24oKSk7CiAgICAgfQogCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViUHJvY2Vz
c0xpZmV0aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJv
eHksIFdlYlByCiAgICAgd2ViUGFnZURpZENsb3NlQ29ubmVjdGlvbih3ZWJQYWdlUHJveHksICpw
cm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAKICAgICBpZiAobV9wcm9jZXNzZXMucmVtb3ZlKCZwcm9j
ZXNzKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlm
ZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFn
ZUlEKCkpOworICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlm
ZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFn
ZUlEKCkudG9VSW50NjQoKSk7CiAgICAgICAgIHdlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24o
cHJvY2VzcywgKnByb2Nlc3MuY29ubmVjdGlvbigpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMGUxMzlmMzBkOWMuLjBiOGIzNDVl
ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0x
Mjk2LDkgKzEyOTYsOSBAQCBib29sIFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNl
cnZpY2VXb3JrZXJzKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmUmIHN0bwogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRf
dCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vz
c2lvblRvUGFnZUlEc01hcC5hZGQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PHVpbnQ2
NF90PigpKS5pdGVyYXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CisgICAgYXV0byByZXN1bHQgPSBt
X3Nlc3Npb25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDxQ
YWdlSWRlbnRpZmllcj4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOwogICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICBhdXRvIHNlc3Npb25J
RCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdl
SUQsIFdlYnNpdGVEYXRhCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5k
VXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYg
ZGF0YVN0b3JlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFT
dG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkK
IHsKICAgICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmZpbmQoc2Vzc2lvbklEKTsKQEAgLTIy
MTEsNyArMjIxMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlaW5zdGF0ZU5ldHdvcmtQcm9j
ZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYKIH0KIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQb29s
OjpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNv
bnN0CitTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdv
cmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIGZvciAoYXV0byogc2Vy
dmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsK
QEAgLTI1MTksNyArMjUxOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyQ3VycmVudE1v
ZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkpOwogfQog
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNv
cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3Qg
cGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IDE2NTU0NWIxYTJmLi4xN2UzZTgwMmJjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xNDgsNiArMTQ4LDE4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQpOworICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQg
YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2
ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOworICAgIH0K
KyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJ
ZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgeworICAgICAgICByZW1vdmVNZXNzYWdl
UmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsK
KyAgICB9CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKICAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKQEAgLTE5
Myw4ICsyMDUsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQ
YWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAKLSAgICB2
b2lkIHBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKLSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUodWlu
dDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlQmVnaW5Vc2lu
Z1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3Rv
cmUmKTsKKyAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICBib29sIGhhc1BhZ2VzVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKSBjb25zdDsKIAogICAgIGNvbnN0IFN0
cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQpAQCAtMzY1LDcgKzM3Nyw3IEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKLSAgICBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBh
Z2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKSBjb25zdDsKICAgICBjb25zdCBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRB
bGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9h
bGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBi
b29sIGFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CkBAIC00OTMs
NyArNTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZERpc3BsYXlDb25maWd1cmF0aW9uQ2hh
bmdlZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CiAgICAgdm9pZCBjbGVhckN1cnJlbnRNb2RpZmllclN0
YXRlRm9yVGVzdGluZygpOwogCi0gICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExp
bmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgZnJvbURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvRG9t
YWluLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXUEUpCiAgICAgdm9pZCBzZXRTYW5kYm94RW5hYmxlZChib29sIGVuYWJsZWQp
IHsgbV9zYW5kYm94RW5hYmxlZCA9IGVuYWJsZWQ7IH07CkBAIC03NTgsNyArNzcwLDcgQEAgcHJp
dmF0ZToKICAgICB9OwogICAgIFBhdGhzIG1fcmVzb2x2ZWRQYXRoczsKIAotICAgIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7
CisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQcm9j
ZXNzUG9vbD4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzVGVybWluYXRpb25UaW1lcjsKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA4MjAzNDY1Y2IyOC4uNjc4MzFlMjA3ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTEwLDEwICsxMTAsOSBAQCBX
ZWJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoUHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZgogICAgIHJldHVybiBhbGxQcm9jZXNzZXMoKS5nZXQoaWRl
bnRpZmllcik7CiB9CiAKLXVpbnQ2NF90IFdlYlByb2Nlc3NQcm94eTo6Z2VuZXJhdGVQYWdlSUQo
KQorUGFnZUlkZW50aWZpZXIgV2ViUHJvY2Vzc1Byb3h5OjpnZW5lcmF0ZVBhZ2VJRCgpCiB7Ci0g
ICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVBhZ2VJRDsKLSAgICByZXR1cm4gKyt1bmlxdWVQYWdl
SUQ7CisgICAgcmV0dXJuIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogfQogCiBzdGF0aWMg
V2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAmIGdsb2JhbFBhZ2VNYXAoKQpAQCAtMzMw
LDcgKzMyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAgICAgbV9wcm9j
ZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3ModGhpcyk7CiB9CiAKLVdlYlBhZ2VQcm94eSogV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eSogV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1
cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQpAQCAtMzYzLDcgKzM2Miw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVk
KEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAKIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJhdGlvbikKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQg
PSBnZW5lcmF0ZVBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsK
ICAgICBSZWY8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFn
ZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAg
ICAgYWRkRXhpc3RpbmdXZWJQYWdlKHdlYlBhZ2UuZ2V0KCksIEJlZ2luc1VzaW5nRGF0YVN0b3Jl
OjpZZXMpOwpAQCAtNDE1LDEwICs0MTQsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92
ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRzVXNpbmdEYXRhU3RvcmUgZW4KICAg
ICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVk
TGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRf
dCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIo
VmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQogewogICAgIGF1dG8mIHVzZXJzID0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbnN1
cmUoJnZpc2l0ZWRMaW5rU3RvcmUsIFtdIHsKLSAgICAgICAgcmV0dXJuIEhhc2hTZXQ8dWludDY0
X3Q+IHsgfTsKKyAgICAgICAgcmV0dXJuIEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+IHsgfTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIXVzZXJzLmNvbnRhaW5zKHBhZ2VJ
RCkpOwpAQCAtNDI4LDcgKzQyNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVk
TGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlCiAgICAgICAg
IHZpc2l0ZWRMaW5rU3RvcmUuYWRkUHJvY2VzcygqdGhpcyk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpyZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNp
dGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVt
b3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9y
ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8gaXQgPSBtX3Zpc2l0ZWRMaW5r
U3RvcmVzV2l0aFVzZXJzLmZpbmQoJnZpc2l0ZWRMaW5rU3RvcmUpOwogICAgIGlmIChpdCA9PSBt
X3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmVuZCgpKQpAQCAtNTQxLDcgKzU0MCw3IEBAIGJv
b2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCkKIH0KICNlbmRp
ZgogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKHVpbnQ2
NF90IHBhZ2VJRCkgY29uc3QKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBh
Z2VXaXRoSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIGZvciAoYXV0byog
cHJvdmlzaW9uYWxQYWdlIDogbV9wcm92aXNpb25hbFBhZ2VzKSB7CiAgICAgICAgIGlmIChwcm92
aXNpb25hbFBhZ2UtPnBhZ2UoKS5wYWdlSUQoKSA9PSBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDlhNmNiZjFmNDYwLi5hZDNmMDM4ZGQ2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01l
c3NhZ2VQb3J0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkU3RyaW5n
SGFzaC5oPgpAQCAtOTcsNyArOTgsNyBAQCBlbnVtIGNsYXNzIEFsbG93UHJvY2Vzc0NhY2hpbmcg
eyBObywgWWVzIH07CiBjbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUHJvY2Vzc1Byb3h5PiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYlByb2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJhbWVQcm94eT4+
IFdlYkZyYW1lUHJveHlNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdl
UHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPj4gVXNl
ckluaXRpYXRlZEFjdGlvbk1hcDsKIAogICAgIGVudW0gY2xhc3MgSXNQcmV3YXJtZWQgewpAQCAt
MTI4LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSYpOwogCiAgICAgc3RhdGljIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0Zv
cklkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHN0YXRpYyBXZWJQ
YWdlUHJveHkqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgV2ViUGFnZVBy
b3h5KiB3ZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBSZWY8V2ViUGFnZVBy
b3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4mJik7CiAKICAgICBlbnVtIGNsYXNzIEJlZ2luc1VzaW5nRGF0YVN0b3JlIDogYm9vbCB7IE5v
LCBZZXMgfTsKQEAgLTE0OSwxMCArMTUwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IHZvaWQgZGlkQ3JlYXRlV2ViUGFnZUluUHJvY2Vzcyh1aW50NjRfdCBwYWdlSUQpOworICAgIHZv
aWQgZGlkQ3JlYXRlV2ViUGFnZUluUHJvY2VzcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAK
LSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50
NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRl
ZExpbmtTdG9yZSYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0
b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAg
IHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgYWRkV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmLCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJik7CiAgICAgdm9pZCBkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmKTsKQEAgLTMxMSw3ICszMTIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB3ZWJQYWdlTWVkaWFTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJv
eHkmKTsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VJRCgp
OworICAgIHN0YXRpYyBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBnZW5lcmF0ZVBhZ2VJRCgpOwog
ICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJ
c1ByZXdhcm1lZCk7CiAKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKQEAgLTM1NCw3ICsz
NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQ
cm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpOwogI2VuZGlmCiAKLSAgICBib29sIGhh
c1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIGJvb2wg
aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBjb25zdDsK
ICAgICBib29sIGlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mKSBjb25zdDsKIAogICAgIC8vIFBsdWdpbnMKQEAgLTQ0Nyw3ICs0NDgsNyBAQCBw
cml2YXRlOgogICAgIEhhc2hTZXQ8UHJvdmlzaW9uYWxQYWdlUHJveHkqPiBtX3Byb3Zpc2lvbmFs
UGFnZXM7CiAgICAgVXNlckluaXRpYXRlZEFjdGlvbk1hcCBtX3VzZXJJbml0aWF0ZWRBY3Rpb25N
YXA7CiAKLSAgICBIYXNoTWFwPFZpc2l0ZWRMaW5rU3RvcmUqLCBIYXNoU2V0PHVpbnQ2NF90Lyog
cGFnZUlEICovPj4gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2VyczsKKyAgICBIYXNoTWFwPFZp
c2l0ZWRMaW5rU3RvcmUqLCBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gbV92aXNp
dGVkTGlua1N0b3Jlc1dpdGhVc2VyczsKICAgICBIYXNoU2V0PFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzOwogCiAgICAgaW50
IG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJsZWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4IGUzNTUzMTll
YTRjLi43ZDU3NWE0MDRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lSGFuZGxlci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhh
bmRsZXI6OnRhc2tDb21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYgdGFzaykKICAgICBwbGF0Zm9y
bVRhc2tDb21wbGV0ZWQodGFzayk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6cmVt
b3ZlVGFza0Zyb21QYWdlTWFwKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQordm9p
ZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBhZ2VNYXAoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fdGFz
a3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZUlEKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0g
bV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IDg5OTc2YzYxZjgzLi5iN2FmMDc1OTc1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApAQCAt
NjYsMTMgKzY2LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RvcFRh
c2soV2ViUGFnZVByb3h5JiwgV2ViVVJMU2NoZW1lVGFzayYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1UYXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAKLSAgICB2
b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJ
RCk7CisgICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IHRhc2tJRCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9yVGFz
a0lkZW50aWZpZXIodWludDY0X3QpIGNvbnN0OwogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVy
OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVtZVRhc2s+PiBtX3Rhc2tz
OwotICAgIEhhc2hNYXA8dWludDY0X3QsIEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Rhc2tzQnlQYWdl
SWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBIYXNoU2V0
PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CiAgICAgCiAgICAgU3luY0xvYWRD
b21wbGV0aW9uSGFuZGxlciBtX3N5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggMTlhNmJiODRjM2Mu
LjliN2FkNWUyMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcApAQCAtNzAsNyArNzAsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFBlcmZv
cm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9ucwogICAgICAg
ICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCiAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRQ
ZXJmb3JtUmVkaXJlY3Rpb24obV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRl
bnRpZmllciwgcmVzcG9uc2UsIHJlcXVlc3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKG1f
dXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlLCBy
ZXF1ZXN0KSk7CiAKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KQEAgLTkzLDcg
KzkzLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICBpZiAoaXNTeW5jKCkpCiAgICAg
ICAgIG1fc3luY1Jlc3BvbnNlID0gcmVzcG9uc2U7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UobV91cmxTY2hl
bWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlk
UmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50
aWZpZXIsIHJlc3BvbnNlKSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAK
QEAgLTExOCw3ICsxMTgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhh
bmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJl
Y2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIs
IHsgYnVmZmVyIH0pKTsKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIApAQCAt
MTQzLDcgKzE0Myw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgbV9zeW5jRGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlm
aWVyKCksIG1faWRlbnRpZmllciwgZXJyb3IpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVI
YW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgZXJyb3IpKTsKICAgICBtX3VybFNj
aGVtZUhhbmRsZXItPnRhc2tDb21wbGV0ZWQoKnRoaXMpOwogCiAgICAgcmV0dXJuIEV4Y2VwdGlv
blR5cGU6Ok5vbmU7CkBAIC0xNjksNCArMTY5LDE0IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFzazo6
c3RvcCgpCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFpbGVkQ3VzdG9t
UHJvdG9jb2xTeW5jTG9hZChtX3JlcXVlc3QpLCB7IH0pOwogfQogCitJUEM6OkNvbm5lY3Rpb24q
IFdlYlVSTFNjaGVtZVRhc2s6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFdlYlVSTFNj
aGVtZVRhc2s6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBiODcy
MDczYmQyNy4uN2YxNGI5ODYwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KQEAgLTUxLDEzICs1MiwxMyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIHVz
aW5nIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+OwogCi1jbGFzcyBXZWJVUkxTY2hlbWVU
YXNrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4sIHB1YmxpYyBJbnN0YW5j
ZUNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4geworY2xhc3MgV2ViVVJMU2NoZW1lVGFzayA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+LCBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlciwgcHVibGljIEluc3RhbmNlQ291bnRlZDxXZWJVUkxTY2hlbWVUYXNrPiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV2ViVVJMU2NoZW1lVGFzayk7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBh
Z2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAg
dWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAg
IHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KKyAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJ
ZGVudGlmaWVyOyB9CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9jZXNzLmdldCgpOyB9CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KQEAgLTgwLDYgKzgxLDEw
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVt
ZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9uSGFu
ZGxlciYmKTsKKyAgICAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICBJUEM6OkNvbm5l
Y3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0
X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wg
aXNTeW5jKCkgY29uc3QgeyByZXR1cm4gISFtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsgfQogCkBA
IC04Nyw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CiAgICAg
UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOwogICAgIHVpbnQ2NF90IG1faWRlbnRp
ZmllcjsKLSAgICB1aW50NjRfdCBtX3BhZ2VJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IG1fcmVxdWVzdDsKICAgICBib29sIG1fc3RvcHBlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jl
c3BvbnNlU2VudCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDBiZjUxMTJhOWU0Li4w
YThiMGMxMTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE1NzYsNyArMTU3Niw3IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQo
Ym9vbCB2YWx1ZSwgQ29tcGxlCiAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJv
Y2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklE
LCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21h
aW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJv
Y2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKaW5kZXggNjQyZTMzMDlkMDcuLjgyMmMzZmM3NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlT3JpZW50
YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Np
b25JRC5oPgpAQCAtMTM1LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OwogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbG9n
VXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CisgICAg
dm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAg
ICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJM
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0IFVS
TCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHlNYWMubW0KaW5kZXggNzYwYTFkMDA5ZGUuLjAxNzk5NWE1MTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclBy
b3h5TWFjLm1tCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHIKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxV
UkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVM
TF07CiAKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10p
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFi
c29sdXRlU3RyaW5nXSkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgewpA
QCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
QXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTCiAgICAgW2hhbmRsZSBj
bG9zZUZpbGVdOwogCiAgICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQYWdlID0gd2ViVmlldygp
LT5fcGFnZS5nZXQoKTsKLSAgICBpbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3Ry
aW5nXSksIGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBpbnNwZWN0b3JQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJz
b2x1dGVTdHJpbmddKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkubW0KaW5kZXggZjcwZjFhNGFjNGQuLmM1NzM4NmUzNDVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlkVXBkYXRlR2VvbWV0cnkoKQogdm9pZCBU
aWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCiB7CiAgICAgU2Vjb25kcyBhY3Rpdml0eVN0
YXRlVXBkYXRlVGltZW91dCA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoMjUwKTsKLSAgICBw
cm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlPihtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKSwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6V2FpdEZvck9wdGlv
bjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICBwcm9jZXNzKCku
Y29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlPihtX3dlYlBhZ2VQcm94eS5wYWdlSUQo
KS50b1VJbnQ2NCgpLCBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0
aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCiB2b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndpbGxTZW5kVXBkYXRlR2VvbWV0cnko
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJNYWMubW0KaW5kZXggNTAyNDFkOGJmNjIuLmY1M2ZiMjFlM2VlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJN
YWMubW0KQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFu
ZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2ZW50ICpldmVudCwgRmxvYQogCiAgICAg
ICAgIC8vIEZJWE1FOiBXZSBkcm9wIHRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0
aGUgZmxvb3IsIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJvdW5k
cyB5ZXQuCiAgICAgICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2Fs
ZUZhY3RvcigpOwotICAgICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlm
aWNhdGlvbkdlc3R1cmUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgICAgICBtX3dl
YlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpD
b2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpKTsKICAgICAgICAgbV9sYXN0
TWFnbmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24gPSBmYWxzZTsKIAogICAg
ICAgICByZXR1cm47CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCiAg
ICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpOb25lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRN
YWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cisg
ICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4p
KTsKIH0KIAogc3RhdGljIGZsb2F0IG1heGltdW1SZWN0YW5nbGVDb21wb25lbnREZWx0YShGbG9h
dFJlY3QgYSwgRmxvYXRSZWN0IGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCAyMTUxNjYyZDM0
Ny4uNWE2ODMwOTZlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMTkzLDcgKzE5Myw3IEBA
IC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcldpbGxCZWdpbkFuaW1hdGlvbjooTlNJ
bW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjCiAgICAgLy8gRklYTUU6IENvbm5lY3Rpb24gY2FuIGJl
IG51bGwgaWYgdGhlIHByb2Nlc3MgaXMgY2xvc2VkOyB3ZSBzaG91bGQgY2xlYW4gdXAgYmV0dGVy
IGluIHRoYXQgY2FzZS4KICAgICBpZiAoX3N0YXRlID09IFdlYktpdDo6SW1tZWRpYXRlQWN0aW9u
U3RhdGU6OlBlbmRpbmcpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBfcGFnZS0+
cHJvY2VzcygpLmNvbm5lY3Rpb24oKSkgewotICAgICAgICAgICAgYm9vbCByZWNlaXZlZFJlcGx5
ID0gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3Q+KF9wYWdlLT5wYWdl
SUQoKSwgU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyg1MDApKTsKKyAgICAgICAgICAgIGJvb2wg
cmVjZWl2ZWRSZXBseSA9IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0
PihfcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyg1
MDApKTsKICAgICAgICAgICAgIGlmICghcmVjZWl2ZWRSZXBseSkKICAgICAgICAgICAgICAgICBf
c3RhdGUgPSBXZWJLaXQ6OkltbWVkaWF0ZUFjdGlvblN0YXRlOjpUaW1lZE91dDsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclBy
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5
TWFjLm1tCmluZGV4IDAwN2Q4N2RmY2Q4Li5mNGFiOTFlODliMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNDc3LDcg
KzQ3Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIG1faW5z
cGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRT
YXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQo
KSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pKTsKICAgICB9OwogCiAgICAg
aWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29u
c3QgU3RyaW5nJgogICAgIFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCi0g
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSkpOwogfQogCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFtZURpZENoYW5nZSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA4N2M2OGIzMzQ4
NS4uNDU1ZDJkNWQ0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
ZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5k
b3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChjb25zdCBGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2luZG93
CiAgICAgLy8gSW4gY2FzZSB0aGUgVUkgY2xpZW50IG92ZXJyaWRlcyBnZXRXaW5kb3dGcmFtZSgp
LCB3ZSBjYWxsIGl0IGhlcmUgdG8gbWFrZSBzdXJlIHdlIHNlbmQgdGhlIGFwcHJvcHJpYXRlIHdp
bmRvdyBmcmFtZS4KICAgICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRl
cywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlc10gKEZsb2F0UmVjdCB3aW5kb3dGcmFtZUlu
U2NyZWVuQ29vcmRpbmF0ZXMpIHsKICAgICAgICAgRmxvYXRSZWN0IHdpbmRvd0ZyYW1lSW5VbmZs
aXBwZWRTY3JlZW5Db29yZGluYXRlcyA9IHBhZ2VDbGllbnQoKS5jb252ZXJ0VG9Vc2VyU3BhY2Uo
d2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKTsKLSAgICAgICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHdpbmRvd0ZyYW1l
SW5TY3JlZW5Db29yZGluYXRlcywgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5h
dGVzLCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3Jk
aW5hdGVzKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5k
b3dBbmRWaWV3RnJhbWVzQ2hhbmdlZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIHdp
bmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1lSW5XaW5kb3dD
b29yZGluYXRlcywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcykpOwogICAgIH0pOwogfQog
CkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlzU2Ny
b2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShpc1Njcm9s
bGFibGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5j
KGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdl
LCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJu
YXRpdmVzV2l0aFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQpAQCAtMjA1LDcgKzIwNSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0QXN5
bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdpc3Rl
clVuZG9Hcm91cCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNl
cnREaWN0YXRlZFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25BbHRl
cm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3VwKSk7CiAjZWxzZQogICAgIEluc2VydFRleHRPcHRp
b25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5k
b0dyb3VwOwpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVk
U3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmCiAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
IAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3Ry
aW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFj
dGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6YXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmli
dXRlZFN0cmluZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGRvdWJs
ZSwgYm8KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmluZyYgZm9udE5h
bWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzLCBDYWxs
YmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yNzEsNyArMjcxLDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94
eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgICAgIHJldHVybiB2YWx1ZTsK
ICAgICAKICAgICBjb25zdCBTZWNvbmRzIG1lc3NhZ2VUaW1lb3V0KDIwKTsKLSAgICBwcm9jZXNz
KCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9h
cmQ6OlJlcGx5KHZhbHVlKSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpLCBN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHko
dmFsdWUpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yODIs
OCArMjgyLDggQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5Ojpk
YXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHIKICAgICBTaGFyZWRNZW1vcnk6Okhh
bmRsZSBoYW5kbGU7CiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7CiAgICAgY29uc3QgU2Vjb25kcyBt
ZXNzYWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRsZSwgc2l6ZSks
IG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKSwKKyAgICAg
ICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBs
eShoYW5kbGUsIHNpemUpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgaWYgKGhhbmRsZS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hh
cmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6
OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKQEAgLTI5NywxNCArMjk3LDE0IEBAIGJvb2wgV2ViUGFn
ZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJv
YXJkTmFtZSkKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3QgU2Vjb25kcyBt
ZXNzYWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdl
czo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOjpSZXBseShyZXN1bHQpLCBt
X3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6
V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOjpSZXBseShyZXN1bHQpLCBtZXNz
YWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNF
X0NPTlRST0xTKQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVi
b2FyZERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
cGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJv
YXJkRGF0YSh0eXBlcywgZGF0YSkpOwogfQogI2VuZGlmCiAKQEAgLTMzNCwyMiArMzM0LDIyIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90
IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4ocGx1Z2luQ29tcGxleFRleHRJbnB1dElk
ZW50aWZpZXIsIHRleHRJbnB1dCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJ
ZGVudGlmaWVyLCB0ZXh0SW5wdXQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwcGVyY2Fz
ZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcHBlcmNh
c2VXb3JkKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcHBlcmNh
c2VXb3JkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG93ZXJjYXNlV29yZCgpCiB7Ci0g
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxvd2VyY2FzZVdvcmQoKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxvd2VyY2FzZVdvcmQoKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYXBpdGFsaXplV29yZCgpCiB7Ci0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcGl0YWxpemVXb3JkKCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBpdGFsaXplV29yZCgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sIGlzU21hcnRJbnNl
cnREZWxldGVFbmFibGVkKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZCkKIAogICAgIFRleHRDaGVja2VyOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQpOwogICAgIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQg
PSBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJbnNlcnREZWxl
dGVFbmFibGVkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGlj
dGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykKQEAgLTM5NSw3ICszOTUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5z
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRv
d1Rva2VuKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVy
VUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRvd1Rva2VuKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2Vk
KHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBib29sIHBsdWdpbkhh
c0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpCkBAIC00MjQsNyArNDI0LDcgQEAgYm9vbCBXZWJQYWdl
UHJveHk6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JFdmVudChjb25zdCBXZWJLaXQ6Oldl
Yk1vdXNlRXZlbnQKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3QgU2Vjb25k
cyBtZXNzYWdlVGltZW91dCgzKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChldmVudCksIE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQ6OlJlcGx5KHJlc3VsdCksIG1f
cGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6
OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdl
OjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQ6OlJlcGx5KHJlc3VsdCksIG1lc3NhZ2VU
aW1lb3V0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzUsNyArNDM1LDcgQEAgYm9v
bCBXZWJQYWdlUHJveHk6OmFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3Qg
V2ViS2l0OjpXZWJNb3VzZUV2ZW4KIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29u
c3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgzKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVyLCBldmVudCksIE1l
c3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZTo6UmVwbHkocmVzdWx0KSwgbV9wYWdl
SUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6QWNj
ZXB0c0ZpcnN0TW91c2UoZXZlbnROdW1iZXIsIGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OkFj
Y2VwdHNGaXJzdE1vdXNlOjpSZXBseShyZXN1bHQpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCBmZjQ0OTM0MWQ5ZS4u
NTdmM2ZlMTczY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAg
SVBDOjpDb25uZWN0aW9uKiBXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdl
SUQoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKIHZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFN0cmluZyYg
dmFsaWRhdGlvblVSTFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5k
ZXggYjFjYmM5NjNiMGUuLjQ1NGNhNmJjODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiAgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbihjYWxsYmFja0lELCBlcnJvck1lc3NhZ2UsIGVycm9yVHlwZSksIDApOwogfQogCi12b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwg
VmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJn
dW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlv
biwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNr
QXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlE
KTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGZy
YW1lSUQsCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uKGNhbGxiYWNrSUQsIHJlc3VsdCwgZXJyb3JUeXBlKSwgMCk7CiB9CiAK
LXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3Jk
aW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZl
Q2hpbGRGcmFtZVdpdGhPcmRpbmFsKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSog
cGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAo
IXBhZ2UpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aQogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsK
IH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4s
IHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTM4OCw3ICszODgsNyBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVI
YW5kbGUodWludDY0X3QgcGFnZUlELAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9w
dCwgZnJhbWVGcm9tRWxlbWVudC0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQyNiw3ICs0
MjYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1l
V2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQ1
Miw3ICs0NTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJl
bnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYQogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bnVsbG9wdCwgcGFyZW50RnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6Zm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJhbWUo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQogewogICAgIFdlYlBhZ2Uq
IHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYg
KCFwYWdlKQpAQCAtNTI3LDcgKzUyNyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNv
bnZlcnRQb2ludEZyb21GcmFtZUNsaWVudFRvUm9vdFZpZXcoV2ViQ29yZTo6RnJhbWVWCiAgICAg
cmV0dXJuIGNsaWVudFBvaW50OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0
ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50Piwg
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwg
Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFBvaW50PiwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFn
ZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBh
Z2UpIHsKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZgogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgcmVzdWx0RWxlbWVudEJvdW5kcywgcmVzdWx0
SW5WaWV3Q2VudGVyUG9pbnQsIGlzT2JzY3VyZWQpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2Uq
IHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYg
KCFwYWdlKSB7CkBAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIFdlYkNvcmU6OkludFJlY3Qgc25h
cHNob3RSZWN0Rm9yU2NyZWVuc2hvdChXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpFbGVtZW4KICAg
ICByZXR1cm4geyB9OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VT
Y3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFr
ZVNjcmVlbnNob3QoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1Zp
ZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGhhbmRsZTsKIApAQCAtNzUxLDcgKzc1MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6dGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNh
bGxiYWNrSUQsIGhhbmRsZSwgeyB9KSwgMCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdl
YlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAg
ICAgaWYgKCFwYWdlKSB7CkBAIC03NzYsNyArNzc2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZvdW5kQ29va2llcyk7CiB9
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGVsZXRlQ29va2llKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7
CiAgICAgaWYgKCFwYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKaW5kZXggNjI5
NTQxZDIwYmEuLjExNjc2NDUyNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvb3Jk
aW5hdGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDE3ICs2MSwxNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eSBtZXNzYWdlcwotICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0
b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVu
dCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBy
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9k
ZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
bm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50
NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVz
b2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZv
aWQgZm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpOwotICAgIHZv
aWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGlu
YXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNv
cmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYpOwotICAg
IHZvaWQgc2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4pPiYmKTsKLSAgICB2b2lkIHRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCBnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+KT4mJik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNp
dENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQg
cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCByZXNv
bHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgZm9jdXNG
cmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCk7CisgICAgdm9p
ZCBjb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwg
Q29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYm
KTsKKyAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKKyAgICB2b2lkIHRha2VTY3JlZW5zaG90KFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwg
Ym9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYpOworICAgIHZvaWQgZGVs
ZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4m
Jik7CiAKICAgICBTdHJpbmcgbV9zZXNzaW9uSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWExMjE5ZTJlZjEuLmQ3MmY4
OWQyNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMu
aW4KQEAgLTIxLDIxICsyMSwyMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5IHsKLSAgICBFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBmdW5jdGlvbiwgVmVjdG9y
PFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQs
IGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRXZhbHVhdGVK
YXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9v
bCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1
aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwpIC0+IChP
cHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBS
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1l
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUpIC0+IChPcHRp
b25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNv
bHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0
aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVz
b2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25hbDxTdHJpbmc+
IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1l
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkg
QXN5bmMKKyAgICBSZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVp
bnQ2NF90IGZyYW1lSUQpIEFzeW5jCiAKLSAgICBGb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCkKKyAgICBGb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKIAotICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0ZVN5
c3RlbSBjb29yZGluYXRlU3lzdGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdl
YkNvcmU6OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0Nl
bnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIEFzeW5jCisgICAgQ29tcHV0ZUVsZW1lbnRMYXlv
dXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChPcHRpb25hbDxT
dHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25hbDxXZWJDb3Jl
OjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkgQXN5bmMKIAot
ICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3lu
YworICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3JUeXBlKSBBc3luYwogCi0gICAgVGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmll
d0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAg
IFRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwg
Ym9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIEdldENvb2tp
ZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5
bmMKLSAgICBEZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgY29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYwor
ICAgIEdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKKyAgICBEZWxldGVDb29raWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFt
ZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKaW5kZXggYWUzODgzZDg2YjYuLmFmODlkNzg4MTYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAg
ICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2Uo
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKQorICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlk
ZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAgICAgICAgd2Vi
UGFnZS0+ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDA0YWUwZTQ1ZDVlLi4yNzhiNjAx
ODQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hl
ZFJlc291CiAgICAgYXV0byYgZnJhbWVMb2FkZXJDbGllbnQgPSByZXNvdXJjZUxvYWRlci5mcmFt
ZUxvYWRlcigpLT5jbGllbnQoKTsKIAogICAgIFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1Bh
cmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0ZXJzOwotICAgIHRyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZU9yKDApOworICAgIHRyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZU9yKFBh
Z2VJZGVudGlmaWVyIHsgfSk7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQgPSBmcmFt
ZUxvYWRlckNsaWVudC5mcmFtZUlEKCkudmFsdWVPcigwKTsKICAgICB0cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCA9IGlkZW50aWZpZXI7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBmcmFtZUxv
YWRlckNsaWVudC5zZXNzaW9uSUQoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBD
YWNoZWRSZXNvdQogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHJlbWVtYmVyIHRoZSBSZXNvdXJjZUxv
YWRlciBpbiBvdXIgcmVjb3JkcyBidXQgbm90IHNjaGVkdWxlIGl0IGluIHRoZSBOZXR3b3JrUHJv
Y2Vzcy4KICAgICBpZiAocmVzb3VyY2VMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+c2NoZWR1bGVB
cmNoaXZlTG9hZChyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpKSkgewog
ICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFyY2hp
dmUgcmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hl
ZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNvdXJjZSAoZnJh
bWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVk
dWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlIChmcmFt
ZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
aWRlbnRpZmllcik7CiAgICAgICAgIG1fd2ViUmVzb3VyY2VMb2FkZXJzLnNldChpZGVudGlmaWVy
LCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1BhcmFt
ZXRlcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3NSwxNCArMTc1LDE0IEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3Vy
Y2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBpZiAocmVzb3VyY2VMb2FkZXIuZG9jdW1lbnRM
b2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRSZXNvdXJjZShyZXNvdXJj
ZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0
KCkudXJsKCkpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNz
KSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGxvYWRl
ZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNl
TG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNhdGlv
biBjYWNoZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1l
KCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxv
YWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGZyb20gYXBwbGljYXRpb24g
Y2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgp
LCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgbV93ZWJSZXNvdXJjZUxvYWRlcnMuc2V0
KGlkZW50aWZpZXIsIFdlYlJlc291cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIsIHRy
YWNraW5nUGFyYW1ldGVycykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzRGF0YSgpKSB7CiAgICAgICAg
IExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGxvYWRlZCBhcyBkYXRhLiIsIHJlc291cmNl
TG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBs
b2FkZWQgYXMgZGF0YSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNv
dXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEgKGZy
YW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2lu
Z1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENh
Y2hlZFJlc291CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGlzUXVpY2tMb29rUHJldmll
d1VSTChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkpKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVM
b2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2UuIiwg
cmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3
aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3
aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsK
ICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAg
Ly8gaHR0cHM6Ly9ibG9ncy5nbm9tZS5vcmcvYWxleGwvMjAxMi8wMS8yNi9yZXNvdXJjZXMtaW4t
Z2xpYi8KICAgICBpZiAocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXMo
InJlc291cmNlIikpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nl
c3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgaGFu
ZGxlZCBhcyBhIEdSZXNvdXJjZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJjZSAoZnJh
bWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVk
dWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJjZSAoZnJhbWUgPSAlcCwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZp
ZXIpOwogICAgICAgICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNv
dQogICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuaGFuZGxlRmV0Y2go
cmVzb3VyY2VMb2FkZXIsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgW3RoaXMsIHRyYWNraW5nUGFyYW1ldGVycywgaWRlbnRpZmllciwgc2Vzc2lv
bklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVm
ZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSwgcmVzb3VyY2VMb2Fk
ZXIgPSBtYWtlUmVmKHJlc291cmNlTG9hZGVyKV0gKFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
UmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gU2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpSZXN1bHQ6OlVuaGFuZGxlZCkgewogICAgICAgICAgICAgTE9HKE5l
dHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBo
YW5kbGUgZmV0Y2ggYWxnb3JpdGhtIiwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygpLmxh
dGluMSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291
cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgdGhy
b3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJz
LnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVk
dWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5k
bGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VM
b2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNvdXJjZUxvYWRlci0+b3B0aW9ucygpLnNlcnZp
Y2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hl
ZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhh
bmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJj
ZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogdW5hYmxl
IHRvIHNjaGVkdWxlIFVSTCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29y
aXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgp
LCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Jl
c291cmNlTG9hZGVyID0gV1RGTW92ZShyZXNvdXJjZUxvYWRlcildIHsKICAgICAgICAgICAgICAg
ICBhdXRvIGVycm9yID0gaW50ZXJuYWxFcnJvcihyZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpLnVy
bCgpKTsKICAgICAgICAgICAgICAgICBlcnJvci5zZXRUeXBlKFJlc291cmNlRXJyb3I6OlR5cGU6
OkNhbmNlbGxhdGlvbik7CkBAIC0yMjcsMTMgKzIyNywxMyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRS
ZXNvdQogICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0
ZWd5KCkudHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlcikpCiAg
ICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnNj
aGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlci5nZXQoKSwgcmVzb3Vy
Y2VMb2FkZXItPnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzZXNzaW9uSUQsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1l
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNv
dXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBo
YW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFt
ZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291
cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhh
bmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1l
KCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgIH0pOwogI2Vsc2UKICAgICBpZiAoIXRyeUxv
YWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKQogICAgICAgICBzY2hl
ZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVy
LnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzZXNzaW9uSUQsIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNl
KSk7CiAgICAgZWxzZQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFt
ZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIp
OworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1
bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7
CiAjZW5kaWYKIH0KIApAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VM
CiAgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLm9wdGlvbnMubW9kZSAhPSBGZXRjaE9wdGlvbnM6Ok1v
ZGU6Ok5hdmlnYXRlKSB7CiAgICAgICAgIEFTU0VSVChsb2FkUGFyYW1ldGVycy5zb3VyY2VPcmln
aW4pOwogICAgICAgICBpZiAoIWxvYWRQYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbikgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVk
dWxlTG9hZDogbm8gc291cmNlT3JpZ2luIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNv
dXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVy
LCAic2NoZWR1bGVMb2FkOiBubyBzb3VyY2VPcmlnaW4gKGZyYW1lID0gJXAsIHByaW9yaXR5ID0g
JWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxp
bnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMu
d2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJh
bWV0ZXJzLmlkZW50aWZpZXIpOwogICAgICAgICAgICAgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVk
TG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAg
LTM0Niw5ICszNDYsOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9t
TmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogCiAgICAgQVNTRVJUKChs
b2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgJiYgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCkgfHwg
bG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFs
UG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscyk7CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBi
ZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9y
aXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFt
ZXRlcnMud2ViUGFnZUlELCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVy
cy5pZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVy
LCAic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0
d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBy
ZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJl
cXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwog
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycyksIDApKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hl
ZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNl
TG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgp
LnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xP
R19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVbmFibGUg
dG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAs
IHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBz
dGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9h
ZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBm
YWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1
c2UgaXQgaGFkIGNyYXNoZWQuCiAgICAgICAgIC8vIFRoaXMgbG9hZCB3aWxsIG5ldmVyIHN1Y2Nl
ZWQgc28gd2Ugd2lsbCBzY2hlZHVsZSBpdCB0byBmYWlsIGFzeW5jaHJvbm91c2x5LgogICAgICAg
ICBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKHJlc291cmNlTG9hZGVyKTsKQEAgLTUwNywx
OSArNTA3LDE5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgV2ViRnJhbWUqIHdlYkZy
YW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJh
bWUoKSA6IG51bGxwdHI7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJh
bWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAKLSAgICBhdXRvIHBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQ
YWdlLT5wYWdlSUQoKSA6IDA7CisgICAgYXV0byBwYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+
cGFnZUlEKCkgOiBQYWdlSWRlbnRpZmllciB7IH07CiAgICAgYXV0byBmcmFtZUlEID0gd2ViRnJh
bWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKICAgICBhdXRvIHNlc3Npb25JRCA9IHdlYlBh
Z2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCk7CiAKICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lTG9hZGVyLmZyYW1lKCkuZG9jdW1l
bnQoKTsKICAgICBpZiAoIWRvY3VtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogbm8gZG9jdW1l
bnQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlbHUpIiwgcGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5OiBubyBkb2N1bWVudCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQudG9VSW50NjQoKSwg
ZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgICAgIGVycm9yID0gaW50ZXJu
YWxFcnJvcihyZXF1ZXN0LnVybCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlm
IChhdXRvIHN5bmNMb2FkUmVzdWx0ID0gdHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2luZ1VSTFNj
aGVtZUhhbmRsZXIoZnJhbWVMb2FkZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHJlcXVlc3Qp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9h
ZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIGNhbGxpbmcgdHJ5TG9hZGluZ1N5bmNocm9u
b3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUsIGVycm9yID0gJWQpIiwgcGFnZUlELCBm
cmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBzeW5jTG9hZFJlc3VsdC0+ZXJyb3IuZXJy
b3JDb2RlKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25J
RCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBjYWxsaW5nIHRyeUxvYWRpbmdT
eW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1LCBlcnJvciA9ICVkKSIsIHBh
Z2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBzeW5jTG9h
ZFJlc3VsdC0+ZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgICAgICBlcnJvciA9IFdURk1vdmUoc3lu
Y0xvYWRSZXN1bHQtPmVycm9yKTsKICAgICAgICAgcmVzcG9uc2UgPSBXVEZNb3ZlKHN5bmNMb2Fk
UmVzdWx0LT5yZXNwb25zZSk7CiAgICAgICAgIGRhdGEgPSBXVEZNb3ZlKHN5bmNMb2FkUmVzdWx0
LT5kYXRhKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAg
IEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAKICAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBhcmFtZXRlcnMpLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OlJl
cGx5KGVycm9yLCByZXNwb25zZSwgZGF0YSksIDApKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogZmFp
bGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwg
cGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5OiBmYWlsZWQgc2VuZGluZyBzeW5jaHJvbm91cyBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICVsdSkiLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmll
cik7CiAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gd2ViUGFnZSA/IHdlYlBhZ2UtPmNvcmVQYWdl
KCkgOiBudWxscHRyKQogICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQo
KS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6Omlu
dGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzeW5jaHJv
bm91c01lc3NhZ2VGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAg
ICAgIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwpAQCAtNTYxLDcgKzU2MSw3IEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2Fk
ZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgfQogfQogCi12b2lkIFdlYkxvYWRlclN0cmF0ZWd5
OjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpCit2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCiB7CiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
KCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQYWdlTG9hZENvbXBsZXRlZCh3ZWJQYWdlSUQpLCAwKTsKIH0KQEAgLTY0OCwxMCArNjQ4
LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYg
ZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBTCiAKICAgICBOZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFJlc291cmNl
UmVxdWVzdCB7IHVybCB9OwotICAgIHBhcmFtZXRlcnMud2ViUGFnZUlEID0gd2ViUGFnZSA/IHdl
YlBhZ2UtPnBhZ2VJRCgpIDogMDsKLSAgICBwYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJGcmFt
ZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwOworICAgIHBhcmFtZXRlcnMud2ViUGFnZUlEID0g
d2ViUGFnZS0+cGFnZUlEKCk7CisgICAgcGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUt
PmZyYW1lSUQoKTsKICAgICBwYXJhbWV0ZXJzLnBhcmVudFBJRCA9IHByZXNlbnRpbmdBcHBsaWNh
dGlvblBJRCgpOwotICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdlYlBhZ2Ut
PnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAgICBw
YXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UtPnNlc3Npb25JRCgpOwogICAgIHBhcmFtZXRl
cnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAg
ICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsK
ICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzID0gc2hvdWxk
UGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA0YWY1OTk0MWUzNC4uYWM1MjQ5
NjZhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9p
ZCBsb2FkUmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNv
dXJjZUxvYWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25v
dXNseShXZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VMb2FkSWRl
bnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2xpZW50
Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgV2Vi
Q29yZTo6SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHBh
Z2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgZmluYWw7CisgICAgdm9pZCBwYWdl
TG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgZmluYWw7CiAKICAgICB2b2lk
IHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVm
ZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGJmODhmZGEzMDA3Li44OGJkNTNiZjFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtODgs
MTYgKzg4LDE2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIFJlc291CiAgICAgUmVmPFdlYlJlc291cmNl
TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlBy
b2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bv
c2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
IndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBpZiAobV9jb3JlTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrRm9yUmVk
aXJlY3QobV9jb3JlTG9hZGVyLmdldCgpLCBwcm9wb3NlZFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDog
ZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QgcmV0dXJu
ZWQgZmFsc2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4
aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVk
IGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUlu
dDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnJlc291cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb3JlTG9hZGVy
LT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3Bv
bnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1f
Y29yZUxvYWRlci0+aWRlbnRpZmllcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9h
ZGVyIG9yIGlkZW50aWZpZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnJlc291cmNlSUQpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNl
bmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBvciBpZGVudGlm
aWVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0
KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJl
c291cmNlSUQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExMywxMiAr
MTEzLDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTCiB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJv
b2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7CiAgICAgTE9HKE5l
dHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0
aW4xKCkuZGF0YSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHN0YXR1cyA9
ICVkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3Bv
bnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAKICAg
ICBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYg
KG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5t
YXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKG1fY29yZUxvYWRlci5nZXQoKSwgcmVzcG9uc2Up
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTog
bm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVhZHkgY2FjaGVk
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29u
dGludWluZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMgYWxyZWFkeSBjYWNoZWQgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGJvbwogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlciAmJiBtX2NvcmVMb2Fk
ZXItPmlkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Ig
bm8gSUQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQp
OworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNw
b25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CiAgICAgICAgIH07CiAgICAgfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05l
dHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRp
bCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoIW1fbnVtQnl0ZXNS
ZWNlaXZlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0
YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgIH0KICAgICBt
X251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGludDY0X3QgZQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
UmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNz
KQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmlu
aXNoUmVzb3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGggPSAlemQpIiwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
bGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9p
c1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3VsZCBub3QgYmUgYWJsZSB0byBm
aW5pc2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKICAgICBtX2NvcmVM
b2FkZXItPmRpZEZpbmlzaExvYWRpbmcobmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBM
T0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291
cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsUmVzb3VyY2VMb2Fk
OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAK
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwg
IkxvYWQgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGZpbmlzaCBiZWZvcmUgd2UndmUgdmFsaWRhdGVk
IHRoZSByZXNwb25zZSIpOwogCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQog
ewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwo
KS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIG1fY29yZUxv
YWRlci0+ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogfQpAQCAtMTg3LDcgKzE4
Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9w
dGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJj
ZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBv
bGljeURlbmllZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdG9wTG9hZGluZ0FmdGVy
WEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0
eVBvbGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCktPnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lE
ZW5pZWQobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIHJlc3BvbnNlKTsKIH0KQEAgLTE5Niwx
MyArMTk2LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJh
bWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pCiB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYg
aGFuZGxlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0
cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
UmVjZWl2ZVJlc291cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291
cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2
NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5y
ZXNvdXJjZUlEKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50
cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBz
ZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZl
ciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxl
IHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90
cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9
IG1fY29yZUxvYWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBm
cmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlz
OjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3Jl
YXRlU2hhcmVkQnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmgKaW5kZXggN2ZkNzgzMjIzM2EuLjU4NjU0MzcxOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRl
ci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCkBAIC01MCw3ICs1MSw3IEBAIHR5cGVkZWYgdWludDY0X3QgUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcjsKIGNsYXNzIFdlYlJlc291cmNlTG9hZGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8V2ViUmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1
YmxpYzoKICAgICBzdHJ1Y3QgVHJhY2tpbmdQYXJhbWV0ZXJzIHsKLSAgICAgICAgdWludDY0X3Qg
cGFnZUlEIHsgMCB9OworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAg
ICAgICAgIHVpbnQ2NF90IGZyYW1lSUQgeyAwIH07CiAgICAgICAgIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCB7IDAgfTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcAppbmRleCAyMGU0ZDVjNWFkYi4uZmEwNzgyM2ZmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgYm9vbCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdl
KQogICAgIGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNhdGlv
bi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkpLml0ZXJhdG9y
OwogICAgIGl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uSUQpOwogCi0gICAgbV9wcm9jZXNz
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNhdGlvbi0+Ym9k
eSgpLCBub3RpZmljYXRpb24tPmljb24oKS5zdHJpbmcoKSwgbm90aWZpY2F0aW9uLT50YWcoKSwg
bm90aWZpY2F0aW9uLT5sYW5nKCksIG5vdGlmaWNhdGlvbi0+ZGlyKCksIG5vdGlmaWNhdGlvbi0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBu
b3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT50aXRsZSgpLCBu
b3RpZmljYXRpb24tPmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uKCkuc3RyaW5nKCksIG5vdGlm
aWNhdGlvbi0+dGFnKCksIG5vdGlmaWNhdGlvbi0+bGFuZygpLCBub3RpZmljYXRpb24tPmRpcigp
LCBub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+dG9TdHJpbmcoKSwgbm90aWZpY2F0aW9uSUQpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24sIFdlYlBhZ2UqIHBhZ2UpCiAgICAgaWYgKCFub3RpZmljYXRpb25JRCkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25J
RCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCkpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CkBAIC0xODQs
NyArMTg0LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlv
bnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzID0gaXQtPnZhbHVlOwotICAgIG1f
cHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkNsZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpLCBwYWdlLT5wYWdlSUQo
KSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVhck5vdGlmaWNh
dGlvbnMobm90aWZpY2F0aW9uSURzKSk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0aW9u
SURzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAg
ICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25J
RE1hcC50YWtlKG5vdGlmaWNhdGlvbklEc1tpXSk7CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uLAogCiAgICAgbV9ub3RpZmljYXRpb25JRE1hcC5yZW1vdmUobm90aWZp
Y2F0aW9uSUQpOwogICAgIHJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKG5vdGlmaWNh
dGlvbklELCBub3RpZmljYXRpb24pOwotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZERlc3Ryb3lOb3RpZmljYXRp
b24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklE
KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwogICAgIFVOVVNFRF9Q
QVJBTShwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCAzNGI1
YTY0M2YwMy4uOGNkZGI1MzBkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgc3luY1dvcmtlclRlcm1p
bmF0aW9uVGltZW91dCB7IDEwMF9tcyB9OyAvLyBPbmx5IHVzZWQgYnkgbGEKIAogY2xhc3MgU2Vy
dmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIEVtcHR5RnJhbWVMb2Fk
ZXJDbGllbnQgewogcHVibGljOgotICAgIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudChX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgdXNlckFnZW50KQorICAgIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudChXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KQogICAgICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9u
KQogICAgICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAgICAgLCBtX3BhZ2VJRChw
YWdlSUQpCkBAIC05NSwxOCArOTUsMTggQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZUNy
ZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7
IH0KICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fZnJhbWVJRDsgfQogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgZmluYWwgeyBy
ZXR1cm4gbV91c2VyQWdlbnQ7IH0KIAogICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
JiBtX2Nvbm5lY3Rpb247CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgdWlu
dDY0X3QgbV9wYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdl
SUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEIHsgMCB9OwogICAgIFN0cmluZyBtX3VzZXJBZ2Vu
dDsKIH07CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90
IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlKQorV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3Qg
cGFnZUdyb3VwSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgc3RvcmUpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUo
Y29ubmVjdGlvbikpCiAgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQogICAgICwgbV9w
YWdlSUQocGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggNmNlODNk
MWQwOWUuLmZiYjYzMGU0ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAg
LTUxLDcgKzUxLDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAKIGNsYXNzIFdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNXQ29udGV4
dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJs
aWM6Ci0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOworICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJ
UEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIH5XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0
ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3M7CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRCB7
IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICB1aW50NjRf
dCBtX3ByZXZpb3VzU2VydmljZVdvcmtlcklEIHsgMCB9OwogCiAgICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSB7
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxs
U3RvcmFnZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCA0OTMzY2E0
YzNhMC4uMjlhM2ZlNTc0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBA
IC04MiwxNCArODIsMTQgQEAgUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShVc2VyQ29udGVudEMKIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRl
bnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiB9CiAKIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlcigpCiB7CiAgICAgQVNT
RVJUKHVzZXJDb250ZW50Q29udHJvbGxlcnMoKS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKIAot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIpOwogCiAgICAgdXNlckNvbnRlbnRDb250cm9s
bGVycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCA0OTYyOTZmNmQ4OC4uMzQzZTgzNWFkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0x
NzgsNyArMTc4LDcgQEAgRmxvYXRSZWN0IFdlYkNocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiAK
ICAgICBGbG9hdFJlY3QgbmV3V2luZG93RnJhbWU7CiAKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okdl
dFdpbmRvd0ZyYW1lOjpSZXBseShuZXdXaW5kb3dGcmFtZSksIG1fcGFnZS5wYWdlSUQoKSkpCisg
ICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93
RnJhbWUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWU6OlJlcGx5KG5l
d1dpbmRvd0ZyYW1lKSkpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAogICAgIHJldHVy
biBuZXdXaW5kb3dGcmFtZTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSogZnJhbWUpCiB7CiAgICAgV2ViRnJhbWUqIHdl
YkZyYW1lID0gZnJhbWUgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpIDogbnVsbHB0
cjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9jdXNlZEZyYW1lQ2hhbmdlZCh3ZWJG
cmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGb2N1c2VkRnJhbWVDaGFuZ2VkKHdl
YkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDApKTsKIH0KIAogUGFnZSogV2ViQ2hyb21l
Q2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCkBAIC0yODgsMTkgKzI4OCwyMCBAQCBQ
YWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IEZy
YW1lTG9hZFJlcXVlc3QmIHJlcXVlcwogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJh
bWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogCi0gICAgdWludDY0X3QgbmV3UGFnZUlEID0gMDsK
KyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlEOwogICAgIE9wdGlvbmFsPFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7Ci0gICAgaWYgKCF3ZWJQcm9jZXNz
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJhbWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2UoKS0+cGFn
ZUlEKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OlJl
cGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVycyksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFt
X3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZSh3ZWJG
cmFtZS0+aW5mbygpLCB3ZWJGcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSwgcmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKSwgd2luZG93RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6UmVwbHkobmV3UGFnZUlELCBwYXJhbWV0
ZXJzKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFuZXdQYWdlSUQpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMpOwogICAgIGlm
IChwYXJhbWV0ZXJzLT5zZXNzaW9uSUQgPT0gbV9wYWdlLnNlc3Npb25JRCgpKQogICAgICAgICBw
YXJhbWV0ZXJzLT5vbGRQYWdlSUQgPSBtX3BhZ2UucGFnZUlEKCk7CiAKLSAgICB3ZWJQcm9jZXNz
LmNyZWF0ZVdlYlBhZ2UobmV3UGFnZUlELCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSk7Ci0gICAgcmV0
dXJuIHdlYlByb2Nlc3Mud2ViUGFnZShuZXdQYWdlSUQpLT5jb3JlUGFnZSgpOworICAgIHdlYlBy
b2Nlc3MuY3JlYXRlV2ViUGFnZSgqbmV3UGFnZUlELCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSk7Cisg
ICAgcmV0dXJuIHdlYlByb2Nlc3Mud2ViUGFnZSgqbmV3UGFnZUlEKS0+Y29yZVBhZ2UoKTsKIH0K
IAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3coKQpAQCAtMzM1LDcgKzMzNiw3IEBAIGJvb2wg
V2ViQ2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUoKQogICAgICAgICByZXR1cm4gdG9vbGJh
cnNWaXNpYmlsaXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6VUlFbGVt
ZW50VmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICAKICAgICBib29sIHRvb2xiYXJzQXJlVmlzaWJs
ZSA9IHRydWU7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFy
c0FyZVZpc2libGUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNp
YmxlOjpSZXBseSh0b29sYmFyc0FyZVZpc2libGUpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlm
ICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJl
VmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6
OlJlcGx5KHRvb2xiYXJzQXJlVmlzaWJsZSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAg
IHJldHVybiB0b29sYmFyc0FyZVZpc2libGU7CkBAIC0zNTMsNyArMzU0LDcgQEAgYm9vbCBXZWJD
aHJvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUoKQogICAgICAgICByZXR1cm4gc3RhdHVzYmFy
VmlzaWJpbGl0eSA9PSBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVu
dFZpc2liaWxpdHk6OlZpc2libGU7CiAKICAgICBib29sIHN0YXR1c0JhcklzVmlzaWJsZSA9IHRy
dWU7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zp
c2libGUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxlOjpS
ZXBseShzdGF0dXNCYXJJc1Zpc2libGUpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9w
YWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJs
ZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGU6OlJlcGx5
KHN0YXR1c0JhcklzVmlzaWJsZSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVy
biBzdGF0dXNCYXJJc1Zpc2libGU7CkBAIC0zODIsNyArMzgzLDcgQEAgYm9vbCBXZWJDaHJvbWVD
bGllbnQ6Om1lbnViYXJWaXNpYmxlKCkKICAgICAgICAgcmV0dXJuIG1lbnViYXJWaXNpYmlsaXR5
ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6VUlFbGVtZW50VmlzaWJpbGl0
eTo6VmlzaWJsZTsKICAgICAKICAgICBib29sIG1lbnVCYXJJc1Zpc2libGUgPSB0cnVlOwotICAg
IGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZSgpLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlOjpSZXBseShtZW51QmFy
SXNWaXNpYmxlKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlKCksIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OlJlcGx5KG1lbnVCYXJJc1Zpc2libGUp
KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbWVudUJhcklzVmlzaWJsZTsK
QEAgLTExODYsNyArMTE4Nyw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkQ29udGVu
dE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCBlbGVtZW50SUQpCiBib29sIFdlYkNocm9t
ZUNsaWVudDo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9y
PHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KSBjb25zdAogewogICAgIGJvb2wgc3VjY2VlZGVkOwotICAg
IGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V3JhcENyeXB0b0tleShrZXkpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpXcmFwQ3J5cHRvS2V5OjpSZXBseShzdWNjZWVkZWQsIHdyYXBw
ZWRLZXkpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OldyYXBDcnlwdG9LZXkoa2V5KSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6V3JhcENyeXB0b0tleTo6UmVwbHkoc3VjY2VlZGVkLCB3cmFwcGVkS2V5KSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc3VjY2VlZGVkOwogfQpAQCAtMTE5NCw3ICsx
MTk1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYKIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp1
bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8
dWludDhfdD4mIGtleSkgY29uc3QKIHsKICAgICBib29sIHN1Y2NlZWRlZDsKLSAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5KSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5OjpSZXBseShzdWNjZWVkZWQsIGtl
eSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXkpLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpVbndyYXBDcnlwdG9LZXk6OlJlcGx5KHN1Y2NlZWRlZCwga2V5KSkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc3VjY2VlZGVkOwogfQpAQCAtMTIwNCw3ICsx
MjA1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShjb25zdCBWZWN0
b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwKIFN0cmluZyBXZWJDaHJvbWVDbGllbnQ6
OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgs
IGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
ICAgICBTdHJpbmcgcmVzdWx0OwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdl
U3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlBbmRD
aGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYg
KCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5
QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6
OlJlcGx5KHJlc3VsdCkpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQpAQCAtMTMxNywxMiArMTMxOCwxMiBAQCB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6ZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKQogfQogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYXNTdG9yYWdl
QWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9t
YWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJDaHJv
bWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURv
bWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wYWdlLmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJG
cmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJs
ZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBtX3BhZ2UucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURv
bWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZGQzYjIyNTQzNWQuLjI5MWM1
ZWRkYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNjksOCArMzY5LDggQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgaGFzU3RvcmFnZUFj
Y2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmlu
YWw7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJikgZmluYWw7CisgICAgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4m
JikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29sb3JD
aG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
b2xvckNob29zZXIuY3BwCmluZGV4IGQ1MzVlNWM1NWM2Li5jYjQwMjQxNzA1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bG9yQ2hvb3Nlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViQ29sb3JDaG9vc2VyOjpXZWJDb2xv
ckNob29zZXIoV2ViUGFnZSogcGFnZSwgQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnMK
ICAgICAsIG1fcGFnZShwYWdlKQogewogICAgIG1fcGFnZS0+c2V0QWN0aXZlQ29sb3JDaG9vc2Vy
KHRoaXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbG9yUGlja2VyKGluaXRp
YWxDb2xvciwgY2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpLCBjbGllbnQt
PnN1Z2dlc3RlZENvbG9ycygpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihpbml0aWFsQ29sb3IsIGNs
aWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSwgY2xpZW50LT5zdWdnZXN0ZWRD
b2xvcnMoKSkpOwogfQogCiBXZWJDb2xvckNob29zZXI6On5XZWJDb2xvckNob29zZXIoKQpAQCAt
NzQsNyArNzQsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6cmVhdHRhY2hDb2xvckNob29zZXIo
Y29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fcGFnZS0+c2V0QWN0aXZlQ29sb3JDaG9vc2VyKHRo
aXMpOwogCiAgICAgQVNTRVJUKG1fY29sb3JDaG9vc2VyQ2xpZW50KTsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihjb2xvciwgbV9jb2xvckNob29zZXJDbGllbnQt
PmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCksIG1fY29sb3JDaG9vc2VyQ2xpZW50LT5z
dWdnZXN0ZWRDb2xvcnMoKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29sb3JQaWNrZXIoY29sb3IsIG1fY29sb3JDaG9v
c2VyQ2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpLCBtX2NvbG9yQ2hvb3Nl
ckNsaWVudC0+c3VnZ2VzdGVkQ29sb3JzKCkpKTsKIH0KIAogdm9pZCBXZWJDb2xvckNob29zZXI6
OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtODUsNyArODUsNyBAQCB2
b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYgY29sb3Ip
CiAgICAgaWYgKG1fcGFnZS0+YWN0aXZlQ29sb3JDaG9vc2VyKCkgIT0gdGhpcykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRDb2xvclBpY2tlckNvbG9y
KGNvbG9yKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlNldENvbG9yUGlja2VyQ29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBXZWJD
b2xvckNob29zZXI6OmVuZENob29zZXIoKQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFdlYkNvbG9y
Q2hvb3Nlcjo6ZW5kQ2hvb3NlcigpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kQ29sb3JQaWNrZXIoKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVuZENv
bG9yUGlja2VyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKaW5kZXggZDAyNWRmYWNmYTIuLmQzNmExNTRj
ZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcApAQCAt
NDcsNyArNDcsNyBAQCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6On5XZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXIoKSB7IH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6
OmhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBXVEY6OlN0cmluZyYga2V5KQogewot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5ZG93bkluRGF0YUxpc3Qoa2V5KSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkhhbmRsZUtleWRvd25JbkRhdGFMaXN0KGtleSkpOwogfQogCiB2b2lkIFdlYkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBzZWxl
Y3RlZE9wdGlvbikKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI6OmRpZENsb3NlU3VnZ2VzdGlvbnMoKQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlcjo6Y2xvc2UoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxp
c3RTdWdnZXN0aW9ucygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygpKTsKIH0KIAogdm9p
ZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUo
RGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgdHlwZSkKQEAgLTc1LDcgKzc1LDcgQEAg
dm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5
cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWMKICAgICBtX3BhZ2UtPnNldEFjdGl2ZURhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcih0aGlzKTsKIAogICAgIERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9u
IGluZm8gPSB7IHR5cGUsIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+c3VnZ2VzdGlvbnMo
KSwgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5lbGVtZW50UmVjdEluUm9vdFZpZXdDb29y
ZGluYXRlcygpIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93RGF0YUxpc3RTdWdn
ZXN0aW9ucyhpbmZvKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNob3dEYXRhTGlzdFN1Z2dlc3Rpb25zKGluZm8pKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGY0MjhmZDIz
OTdlLi43MDUyMDI1YjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTMwOSw3ICszMDks
NyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvU3RlcChVbmRvU3RlcCYgc3Rl
cCkKICAgICBhdXRvIHN0ZXBJRCA9IHdlYlN0ZXAtPnN0ZXBJRCgpOwogCiAgICAgbV9wYWdlLT5h
ZGRXZWJVbmRvU3RlcChzdGVwSUQsIFdURk1vdmUod2ViU3RlcCkpOwotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyhzdGVw
SUQsIHN0ZXAubGFiZWwoKSksIG1fcGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlz
cGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oc3Rl
cElELCBzdGVwLmxhYmVsKCkpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdp
c3RlclJlZG9TdGVwKFVuZG9TdGVwJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmlu
ZGV4IDUyOWMwNDY3MDMwLi4zZGNkN2UyZWMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6On5XZWJGcmFt
ZUxvYWRlckNsaWVudCgpCiB7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZSAmJiBtX2Zy
YW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpOwpA
QCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlCiAgICAgaWYgKCF3ZWJQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQYWdl
LT5wYWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBSRUxFQVNFX0xPRyhOZXR3b3Jr
LCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxM
b2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlz
LCB3ZWJQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOwogCiAg
ICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIApAQCAtNTc3LDcgKzU3Nyw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CisgICAg
UkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmFpbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
KSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fZnJhbWUtPmZyYW1lSUQo
KSk7CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCkBAIC05MDEsNyArOTAx
LDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBpZiAocmVxdWVzdGVyLmZyYW1lSUQo
KSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShyZXF1ZXN0ZXIuZnJhbWVJRCgp
KSkKICAgICAgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPSByZXF1ZXN0ZXIu
ZnJhbWVJRCgpOwogCi0gICAgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQgPSByZXF1ZXN0ZXIu
cGFnZUlEKCkgJiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShyZXF1ZXN0ZXIucGFn
ZUlEKCkpID8gcmVxdWVzdGVyLnBhZ2VJRCgpIDogMDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQ7CisgICAgaWYgKHJlcXVlc3Rlci5wYWdlSUQoKSAmJiBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5wYWdlSUQoKSkpCisgICAg
ICAgIG9yaWdpbmF0aW5nUGFnZUlEID0gcmVxdWVzdGVyLnBhZ2VJRCgpOwogCiAgICAgTmF2aWdh
dGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGE7CiAgICAgbmF2aWdhdGlvbkFjdGlv
bkRhdGEubmF2aWdhdGlvblR5cGUgPSBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGY3M2FiOGNhNzNmLi5jOGZiMmFmMjEyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmKTsKIAotICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAppbmRleCBkMTZmZTg1Nzc4
NC4uMjA4YmI4OGEzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9p
ZCBXZWJQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3
LCBpbnQgaW5kZXgpCiAgICAgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIHBsYXRmb3JtRGF0YTsKICAg
ICBzZXRVcFBsYXRmb3JtRGF0YShwYWdlQ29vcmRpbmF0ZXMsIHBsYXRmb3JtRGF0YSk7CiAKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUocGFnZUNvb3JkaW5hdGVzLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4obV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCkudGV4dERpcmVj
dGlvbigpKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd1BvcHVwTWVudShw
YWdlQ29vcmRpbmF0ZXMsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3BvcHVwQ2xpZW50LT5tZW51
U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCkpLCBpdGVtcywgaW5kZXgsIHBsYXRmb3JtRGF0YSkpOwog
fQogCiB2b2lkIFdlYlBvcHVwTWVudTo6aGlkZSgpCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBX
ZWJQb3B1cE1lbnU6OmhpZGUoKQogICAgIGlmICghbV9wYWdlIHx8ICFtX3BvcHVwQ2xpZW50KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhpZGVQb3B1cE1l
bnUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkhpZGVQb3B1cE1lbnUoKSk7CiAgICAgbV9wYWdlLT5zZXRBY3RpdmVQb3B1cE1l
bnUobnVsbHB0cik7CiAgICAgbV9wb3B1cENsaWVudC0+cG9wdXBEaWRIaWRlKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNo
UG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJTZWFyY2hQb3B1cE1lbnUuY3BwCmluZGV4IDMzZDQ3NTZlZGEyLi5jMGU4YzE5MTQ0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJj
aFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBXZWJTZWFy
Y2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IGNvbnN0IFZlY3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKSwg
cGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKSk7CiB9CiAKIHZvaWQgV2ViU2Vh
cmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
LCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgcmVzdWx0SXRlbXMpCkBAIC02OCw3ICs2OCw3IEBAIHZv
aWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBWZWN0b3I8UmVjCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNoZXMobmFtZSks
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRSZWNlbnRTZWFyY2hlczo6UmVwbHkocmVzdWx0
SXRlbXMpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6TG9hZFJlY2VudFNlYXJjaGVzKG5hbWUpLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpMb2FkUmVjZW50U2VhcmNoZXM6OlJlcGx5KHJlc3VsdEl0ZW1zKSk7CiB9CiAKIGJvb2wg
V2ViU2VhcmNoUG9wdXBNZW51OjplbmFibGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50LmgKaW5kZXggZjk5ODZlNDFjYTIuLmNmN2NiZjRmOWU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgog
CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwot
ICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fcGFnZUlEOwogICAgIFF1aWNrTG9va0RvY3VtZW50RGF0YSBtX2RhdGE7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAK
aW5kZXggMjc2YjgwYmYyOGYuLjhkNjliODU0YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC02OCw3ICs2OCw3IEBAIERyYXdp
bmdBcmVhOjpEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUgdHlwZSwgRHJhd2luZ0FyZWFJZGVu
dGlmaWVyIGlkZW50aWZpZXIsCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAs
IG1fd2ViUGFnZSh3ZWJQYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBEcmF3aW5nQXJlYTo6
fkRyYXdpbmdBcmVhKCkKQEAgLTk0LDcgKzk0LDE3IEBAIHZvaWQgRHJhd2luZ0FyZWE6OnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcklmTmVlZGVkKCkKICAgICBpZiAobV9oYXNSZW1vdmVkTWVzc2FnZVJl
Y2VpdmVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9oYXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVy
ID0gdHJ1ZTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faWRlbnRpZmllcik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogRHJhd2luZ0FyZWE6Om1lc3Nh
Z2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgRHJhd2lu
Z0FyZWE6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggODA2
OWExNThlZTIuLmVjOTUzN2Q3MGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEcmF3aW5n
QXJlYUluZm8uaCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIldl
YlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtNjUsNyArNjYsNyBAQCBjbGFzcyBMYXllclRyZWVIb3N0
Owogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZTsKIAotY2xhc3MgRHJhd2luZ0FyZWEgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgeworY2xhc3MgRHJhd2luZ0FyZWEgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHBy
b3RlY3RlZCBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYXdpbmdBcmVhKTsKIApAQCAtMTUzLDExICsx
NTQsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFU
eXBlLCBEcmF3aW5nQXJlYUlkZW50aWZpZXIsIFdlYlBhZ2UmKTsKIAotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIG1fd2ViUGFnZS5zZW5kKG1lc3NhZ2UsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCB7IH0p
OwotICAgIH0KLQogICAgIERyYXdpbmdBcmVhVHlwZSBtX3R5cGU7CiAgICAgRHJhd2luZ0FyZWFJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CkBAIC0xNzAs
NiArMTY2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRl
OworICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgorICAgIElQQzo6Q29ubmVjdGlvbiog
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZSBo
YW5kbGVycy4KICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIu
Y3BwCmluZGV4IDY5MTgzMGI1OTNjLi5jZDc4MjY4ZWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC04Nyw3ICs4
Nyw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNv
bm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAgICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9xdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVl
bEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwg
Ym9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29s
IGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCit2b2lkIEV2
ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdl
YldoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBj
YW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnVi
YmVyQmFuZEF0Qm90dG9tKQogewogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKQogICAgIFBsYXRmb3JtV2hlZWxFdmVudCBwbGF0Zm9ybVdoZWVsRXZlbnQgPSBw
bGF0Zm9ybSh3aGVlbEV2ZW50KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEV2ZW50RGlzcGF0
Y2hlcjo6d2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdo
ZWVsRXZlbgogfQogCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLXZvaWQgRXZlbnRE
aXNwYXRjaGVyOjpnZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJLaXQ6Oldl
Ykdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1
cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2
ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSgpIG11dGFi
bGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaEdlc3R1cmVFdmVudChwYWdlSUQs
IGdlc3R1cmVFdmVudCk7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6
OmdldFF1ZXVlZFRvdWNoRXZlbnRzRm9yUGFnZShjb25zdCBXZWJQYWdlJiB3ZWJQYWdlLCBUb3Vj
aEUKICAgICBkZXN0aW5hdGlvblF1ZXVlID0gbV90b3VjaEV2ZW50cy50YWtlKHdlYlBhZ2UucGFn
ZUlEKCkpOwogfQogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKK3ZvaWQgRXZl
bnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQogewogICAgIGJvb2wgdXBkYXRlTGlzdFdh
c0VtcHR5OwogICAgIHsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hUb3VjaEV2ZW50cygpCiB9CiAjZW5kaWYKIAotdm9pZCBFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQm
IHdoZWVsRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9p
ZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFdlYldoZWVsRXZlbnQmIHcKIH0KIAogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMp
Ci12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKQEAgLTIzMiw5ICsyMzIsOSBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotdm9pZCBFdmVudERpc3BhdGNo
ZXI6OnNlbmREaWRSZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJFdmVudCYg
ZXZlbnQsIGJvb2wgZGlkSGFuZGxlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6c2VuZERp
ZFJlY2VpdmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiBldmVu
dCwgYm9vbCBkaWRIYW5kbGVFdmVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXZlbnQudHlwZSgpKSwgZGlkSGFu
ZGxlRXZlbnQpLCBwYWdlSUQpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2
ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90PihldmVudC50eXBlKCkpLCBkaWRIYW5kbGVFdmVu
dCksIHBhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDFkNDc3ODc3ZWFh
Li5lMWJiYmQ0Nzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRXZlbnREaXNwYXRjaGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0
aW9uLmgiCiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1doZWVsRXZlbnREZWx0YUZpbHRlci5oPgog
I2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNzcsMzggKzc4
LDM4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMK
LSAgICB2b2lkIHdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50
JiwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBi
b29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOworICAg
IHZvaWQgd2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViV2hlZWxF
dmVudCYsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdo
dCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsK
ICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICB2b2lkIHRvdWNoRXZlbnQodWludDY0
X3QgcGFnZUlELCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CisgICAgdm9pZCB0b3VjaEV2ZW50KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQgZ2VzdHVyZUV2ZW50KHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBnZXN0dXJlRXZl
bnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogI2Vu
ZGlmCiAKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB2
b2lkIGRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZl
bnQmKTsKKyAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgY29uc3QgV2ViV2hlZWxFdmVudCYpOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQog
ICAgIHZvaWQgZGlzcGF0Y2hUb3VjaEV2ZW50cygpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1BQ19H
RVNUVVJFX0VWRU5UUykKLSAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBkaXNwYXRjaEdlc3R1cmVF
dmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0gICAgdm9pZCBzZW5kRGlkUmVj
ZWl2ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmLCBib29sIGRpZEhhbmRs
ZUV2ZW50KTsKKyAgICB2b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkV2ZW50JiwgYm9vbCBkaWRIYW5kbGVFdmVudCk7CiAjZW5kaWYKIAog
ICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KQogICAgIExvY2sgbV9zY3JvbGxpbmdUcmVlc011dGV4OwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVz
OworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpU
aHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOwogI2VuZGlmCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdlYkNvcmU6OldoZWVsRXZlbnREZWx0YUZpbHRlcj4gbV9yZWNlbnRXaGVl
bEV2ZW50RGVsdGFGaWx0ZXI7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgTG9j
ayBtX3RvdWNoRXZlbnRzTG9jazsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBUb3VjaEV2ZW50UXVl
dWU+IG1fdG91Y2hFdmVudHM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
VG91Y2hFdmVudFF1ZXVlPiBtX3RvdWNoRXZlbnRzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIu
bWVzc2FnZXMuaW4KaW5kZXggNWUxNTQzYzk4Y2MuLmFmOTA0YjQ1MTZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVy
Lm1lc3NhZ2VzLmluCkBAIC0yMSwxMSArMjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2Fn
ZXMgLT4gRXZlbnREaXNwYXRjaGVyIHsKLSAgICBXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwg
V2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJv
b2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNh
blJ1YmJlckJhbmRBdEJvdHRvbSkKKyAgICBXaGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJh
bmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0
VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VW
RU5UUykKLSAgICBUb3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJUb3VjaEV2
ZW50IGV2ZW50KQorICAgIFRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dF
U1RVUkVfRVZFTlRTKQotICAgIEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6
V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQorICAgIEdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQogI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
bW0KaW5kZXggYjc1MmMxYzU0ZDQuLmIyOTFkZjBiN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
TGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC03NSw3ICs3NSw3IEBA
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShX
ZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXCiAgICAgLy8gRklYTUU6IFdoaWxlIHVzaW5nIHRoZSBo
aWdoIGVuZCBvZiB0aGUgcmFuZ2Ugb2YgRGlzcGxheUlEcyBtYWtlcyBhIGNvbGxpc2lvbiB3aXRo
IHJlYWwsIG5vbi1SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYQogICAgIC8vIERpc3BsYXlJRHMg
bGVzcyBsaWtlbHksIGl0IGlzIG5vdCBlbnRpcmVseSBzYWZlIHRvIGhhdmUgYSBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYSBhbmQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEKICAgICAv
LyBjb2VleGlzdCBpbiB0aGUgc2FtZSBwcm9jZXNzLgotICAgIHdlYlBhZ2Uud2luZG93U2NyZWVu
RGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2Uu
cGFnZUlEKCkpOworICAgIHdlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7
CiB9CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEoKQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OmZsdXNoTGF5ZXJzKCkKICAgICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4gYmFja2lu
Z1N0b3JlRmx1c2hlciA9IEJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLCBXVEZNb3ZlKGNvbW1pdEVuY29k
ZXIpLCBXVEZNb3ZlKGNvbnRleHRzVG9GbHVzaCkpOwogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9y
ZUZsdXNoZXIgPSBiYWNraW5nU3RvcmVGbHVzaGVyOwogCi0gICAgdWludDY0X3QgcGFnZUlEID0g
bV93ZWJQYWdlLnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgp
OwogICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3RvcmVGbHVzaGVy
ID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAgICAgICAgIGJhY2tp
bmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcAppbmRleCAwNTQ0MDQ1
NmY0MS4uYzk0MGUwY2QwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAg
dm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VU
b0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJ
bnNwZWN0b3JVSTo6d2luZG93T2JqZWN0Q2xlYXJlZCgpCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpmcm9udGVuZExvYWRlZCgpCiAKIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yVUk6OmNoYW5nZVNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNldFNoZWV0UmVjdChyZWN0
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OlNldFNoZWV0UmVjdChyZWN0KSk7CiB9CiAKIHZvaWQgUmVtb3RlV2Vi
SW5zcGVjdG9yVUk6OnN0YXJ0V2luZG93RHJhZygpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OlN0YXJ0V2luZG93RHJhZygpLCBtX3BhZ2UucGFnZUlEKCkpOworICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5k
b3dEcmFnKCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93Qnko
ZmxvYXQgeCwgZmxvYXQgeSkKQEAgLTEyNCwzNCArMTI0LDM0IEBAIFdlYkNvcmU6OlVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24gUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnVzZXJJbnRlcmZhY2VM
YXlvdXRECiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCiB7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6QnJpbmdUb0Zyb250KCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJ
OjpjbG9zZVdpbmRvdygpCiB7CiAgICAgbV9wYWdlLmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKTsKIAotICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpGcm9udGVuZERpZENsb3NlKCksIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpGcm9udGVuZERpZENsb3NlKCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJ
OjpyZW9wZW4oKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpSZW9w
ZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OlJlb3BlbigpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0
b3JVSTo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpPcGVuSW5OZXdUYWIodXJsKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Ok9w
ZW5Jbk5ld1RhYih1cmwpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2F2ZShj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0
RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VT
YXZlQXMpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2Rl
ZCwgZm9yY2VTYXZlQXMpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6YXBwZW5k
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKIHsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCkpOwogfQogCiB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclVJOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6Omlu
c3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAKIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yVUk6OnNob3dDZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNl
cnRpZmljYXRlSW5mbykKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
U2hvd0NlcnRpZmljYXRlKGNlcnRpZmljYXRlSW5mbyksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTaG93Q2VydGlm
aWNhdGUoY2VydGlmaWNhdGVJbmZvKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRM
aXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zv
cndhcmRMaXN0UHJveHkuY3BwCmluZGV4IDIxMWQ2MDFlZjBiLi5mY2VlMGRmZGZkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5LmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgSURUb0hpc3RvcnlJ
dGVtTWFwJiBpZFRvSGlzdG9yeUl0ZW1NYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLXZvaWQg
V2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tG
b3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIHVp
bnQ2NF90IHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRl
bSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNv
bnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYm
IGl0ZW0sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtIG92ZXJ3
cml0ZUV4aXN0aW5nSXRlbSkKIHsKICAgICAvLyBUaGlzIGl0ZW0vaXRlbUlEIHBhaXIgc2hvdWxk
IG5vdCBhbHJlYWR5IGV4aXN0IGluIG91ciBtYXAuCiAgICAgQVNTRVJUX1VOVVNFRChvdmVyd3Jp
dGVFeGlzdGluZ0l0ZW0sIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSA9PSBPdmVyd3JpdGVFeGlzdGlu
Z0l0ZW06OlllcyB8fCAhaWRUb0hpc3RvcnlJdGVtTWFwKCkuY29udGFpbnMoaXRlbUlEKSk7CkBA
IC0xMTYsNyArMTE2LDcgQEAgUmVmUHRyPEhpc3RvcnlJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RQ
cm94eTo6aXRlbUF0SW5kZXgoaW50IGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBPcHRpb25hbDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBpdGVtSUQ7Ci0gICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGl0
ZW1JbmRleCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXg6
OlJlcGx5KGl0ZW1JRCksIG1fcGFnZS0+cGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGl0ZW1J
bmRleCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXg6OlJl
cGx5KGl0ZW1JRCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghaXRlbUlE
KQpAQCAtMTMxLDcgKzEzMSw3IEBAIHVuc2lnbmVkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpi
YWNrTGlzdENvdW50KCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB1bnNpZ25lZCBi
YWNrTGlzdENvdW50ID0gMDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJh
Y2tGb3J3YXJkQmFja0xpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9y
d2FyZEJhY2tMaXN0Q291bnQ6OlJlcGx5KGJhY2tMaXN0Q291bnQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KSkKKyAgICBpZiAoIW1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFj
a0ZvcndhcmRCYWNrTGlzdENvdW50KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3
YXJkQmFja0xpc3RDb3VudDo6UmVwbHkoYmFja0xpc3RDb3VudCkpKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIHJldHVybiBiYWNrTGlzdENvdW50OwpAQCAtMTQzLDcgKzE0Myw3IEBAIHVuc2ln
bmVkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICB1bnNpZ25lZCBmb3J3YXJkTGlzdENvdW50ID0gMDsKLSAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RD
b3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291
bnQ6OlJlcGx5KGZvcndhcmRMaXN0Q291bnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAo
IW1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3
YXJkTGlzdENvdW50KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2Fy
ZExpc3RDb3VudDo6UmVwbHkoZm9yd2FyZExpc3RDb3VudCkpKQogICAgICAgICByZXR1cm4gMDsK
IAogICAgIHJldHVybiBmb3J3YXJkTGlzdENvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKaW5kZXgg
ZjNiMWM4YWY1NDguLmQxYmFhZGI5MWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENs
aWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1
YmxpYzoKICAgICAgICAgWWVzLAogICAgICAgICBObwogICAgIH07Ci0gICAgdm9pZCBhZGRJdGVt
RnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwg
UmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCB1aW50NjRfdCBwYWdlSUQsIE92ZXJ3cml0ZUV4
aXN0aW5nSXRlbSk7CisgICAgdm9pZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3Jl
OjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYm
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKIAogICAg
IHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkNvb2tpZUphci5jcHAKaW5kZXggMTYwZWRlZmQ1OWQuLjJkOWQwODVlM2JjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAg
LTQ5LDcgKzQ5LDcgQEAgV2ViQ29va2llSmFyOjpXZWJDb29raWVKYXIoKQogU3RyaW5nIFdlYkNv
b2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYg
dXJsKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZy
YW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdl
SUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC02Niw3ICs2Niw3IEBA
IFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdl
YkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llU3RyaW5nKQogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAg
IGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBw
YWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC04Myw3ICs4Myw3
IEBAIGJvb2wgV2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1
bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpwYWly
PFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpT
ZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykgY29uc3QKIHsKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2Vj
dXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7CkBAIC05NSw3ICs5NSw3IEBAIHN0ZDo6cGFpcjxT
dHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29r
aWVSZXF1ZXN0SGVhCiBib29sIFdlYkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUo
KSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQo
KTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAppbmRl
eCA5N2RkNzZmNjY0Yy4uNTU5YmQwZTUwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgY29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYpIGNvbnN0IGZp
bmFsOwogICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSBmaW5hbDsKICAgICBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjpwYWly
PFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJD
b3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcykgY29uc3QgZmluYWw7CiAgICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdl
YkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpEb2N1bWVu
dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkgZmluYWw7CiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4
IDg5MGM1ZTU2YWMwLi40YWY0OTVhNTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyB1aW50NjRf
dCBnZW5lcmF0ZUxpc3RlbmVySUQoKQogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0
aENvcmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSkK
IHsKICAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRl
ckNsaWVudD4oc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPigmY29yZUZyYW1lLT5s
b2FkZXIoKS5jbGllbnQoKSkpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZENyZWF0ZU1haW5GcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCkp
OworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZy
YW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVG
cmFtZTsKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPnRyZWUoKS5zZXROYW1lKFN0cmluZygpKTsK
QEAgLTEyMSw3ICsxMjEsNyBAQCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29y
ZU1haW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogUmVmPFdlYkZyYW1l
PiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewogICAgIGF1
dG8gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4o
KSk7Ci0gICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJm
cmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQo
KSkpOwogCiAgICAgYXV0byBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdl
KCksIG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwogICAg
IGZyYW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFtZS5wdHIoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGQ3N2U2MzcwYzEx
Li5iZGI5MmY3NGRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFdlYkluc3BlY3Rvcjo6fldlYklu
c3BlY3RvcigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVu
ZChib29sIHVuZGVyVGVzdCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6T3Bl
bkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoY2FuQXR0YWNoV2luZG93KCksIHVuZGVyVGVzdCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6Ok9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGNhbkF0dGFjaFdpbmRvdygpLCB1bmRl
clRlc3QpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJ
UEM6OkF0dGFjaG1lbnQgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMTA4LDcgKzEw
OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBDOjpBdHRh
Y2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpCiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9z
ZUZyb250ZW5kQ29ubmVjdGlvbigpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OkRpZENsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCkpOwogCiAgICAgLy8gSWYgd2UgdHJpZWQg
dG8gY2xvc2UgdGhlIGZyb250ZW5kIGJlZm9yZSBpdCB3YXMgY3JlYXRlZCwgdGhlbiBubyBjb25u
ZWN0aW9uIGV4aXN0cyB5ZXQuCiAgICAgaWYgKG1fZnJvbnRlbmRDb25uZWN0aW9uKSB7CkBAIC0x
MjQsNyArMTI0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmRDb25uZWN0aW9u
KCkKIAogdm9pZCBXZWJJbnNwZWN0b3I6OmJyaW5nVG9Gcm9udCgpCiB7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQo
KSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjp3aGVuRnJvbnRlbmRDb25uZWN0aW9uRXN0YWJs
aXNoZWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yOjpzdG9wRWxlbWVudFNlbGVjdGlvbigpCiAKIHZvaWQgV2ViSW5zcGVj
dG9yOjplbGVtZW50U2VsZWN0aW9uQ2hhbmdlZChib29sIGFjdGl2ZSkKIHsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6RWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYWN0aXZlKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6RWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYWN0aXZlKSk7CiB9CiAKIGJvb2wgV2ViSW5z
cGVjdG9yOjpjYW5BdHRhY2hXaW5kb3coKQpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yOjp1cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCkKIAogICAgIG1fcHJldmlvdXNDYW5B
dHRhY2ggPSBjYW5BdHRhY2hXaW5kb3c7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6QXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChjYW5BdHRhY2hXaW5kb3cpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpB
dHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGNhbkF0dGFjaFdpbmRvdykpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3RvclVJLmNwcAppbmRleCBjOTY1MmU5NGFmOC4uMjc1NTZkMDFjYWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5j
cHAKQEAgLTU4LDcgKzU4LDcgQEAgV2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJKFdlYlBh
Z2UmIHBhZ2UpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29u
bmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3Qs
IHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlz
aENvbm5lY3Rpb24oUGFnZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wg
dW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiB7CiAgICAgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIG1fZnJvbnRlbmRB
UElEaXNwYXRjaGVyLnJlc2V0KCk7CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JVSTo6dXBkYXRlQ29ubmVjdGlvbigpCiAgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+b3Blbigp
OwogI2VuZGlmCiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0RnJvbnRlbmRD
b25uZWN0aW9uKGNvbm5lY3Rpb25DbGllbnRQb3J0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmll
cik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEZyb250ZW5kQ29ubmVjdGlv
bihjb25uZWN0aW9uQ2xpZW50UG9ydCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50
NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OndpbmRvd09iamVjdENsZWFyZWQoKQpA
QCAtMTI4LDE0ICsxMjgsMTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQo
KQogICAgIHNldERvY2tTaWRlKG1fZG9ja1NpZGUpOwogICAgIHNldElzVmlzaWJsZShtX2lzVmlz
aWJsZSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RnJvbnRlbmRMb2FkZWQo
KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OkZyb250ZW5kTG9hZGVkKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50
NjQoKSk7CiAKICAgICBicmluZ1RvRnJvbnQoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6
c3RhcnRXaW5kb3dEcmFnKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U3Rh
cnRXaW5kb3dEcmFnKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpTdGFydFdpbmRvd0RyYWcoKSwgbV9pbnNwZWN0ZWRQYWdlSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRv
d0J5KGZsb2F0IHgsIGZsb2F0IHkpCkBAIC0xNDcsMTIgKzE0NywxMiBAQCB2b2lkIFdlYkluc3Bl
Y3RvclVJOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKIAogdm9pZCBXZWJJbnNwZWN0
b3JVSTo6YnJpbmdUb0Zyb250KCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
QnJpbmdUb0Zyb250KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3co
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX2luc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlk
Q2xvc2UoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAogICAgIGlm
IChtX2JhY2tlbmRDb25uZWN0aW9uKSB7CiAgICAgICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPmlu
dmFsaWRhdGUoKTsKQEAgLTE2NywxMyArMTY3LDEzIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmNs
b3NlV2luZG93KCkKICAgICBpZiAobV9mcm9udGVuZEhvc3QpCiAgICAgICAgIG1fZnJvbnRlbmRI
b3N0LT5kaXNjb25uZWN0Q2xpZW50KCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
ID0gMDsKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAgIG1fdW5kZXJU
ZXN0ID0gZmFsc2U7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnJlb3BlbigpCiB7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlJlb3BlbigpLCBtX2luc3BlY3RlZFBhZ2VJZGVu
dGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6UmVvcGVuKCksIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIFdlYkNvcmU6OlVzZXJJbnRl
cmZhY2VMYXlvdXREaXJlY3Rpb24gV2ViSW5zcGVjdG9yVUk6OnVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24oKSBjb25zdApAQCAtMTg2LDE2ICsxODYsMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JV
STo6cmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCiAgICAgYXV0byYgd2ViUHJvY2Vz
cyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwogICAgIHN3aXRjaCAoc2lkZSkgewogICAgIGNh
c2UgRG9ja1NpZGU6OlVuZG9ja2VkOgotICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2goKSwg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFj
aCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIERvY2tTaWRlOjpSaWdodDoKLSAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0
YWNoUmlnaHQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIHdlYlByb2Nl
c3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OkF0dGFjaFJpZ2h0KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQo
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9ja1NpZGU6OkxlZnQ6Ci0gICAgICAgIHdl
YlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6OkF0dGFjaExlZnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cisg
ICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaExlZnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2NrU2lkZTo6Qm90
dG9tOgotICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllcik7CisgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEJvdHRvbSgpLCBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICBicmVhazsKICAg
ICB9CiB9CkBAIC0yNDMsMTcgKzI0MywxNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpzZXRJc1Zp
c2libGUoYm9vbCB2aXNpYmxlKQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hl
ZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCksIG1faW5zcGVjdGVkUGFn
ZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0
KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRo
KHVuc2lnbmVkIHdpZHRoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRB
dHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93V2lkdGgod2lk
dGgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdl
Ykluc3BlY3RvclVJOjpjaGFuZ2VTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVjdCksIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpT
ZXRTaGVldFJlY3QocmVjdCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVy
bCkKQEAgLTI2NCwyMiArMjY0LDIyIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6Om9wZW5Jbk5ld1Rh
Yihjb25zdCBTdHJpbmcmIHVybCkKIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2F2ZShjb25zdCBX
VEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50LCBib29sIGJh
c2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2
ZUFzKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2
ZUFzKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JVSTo6YXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3Qg
V1RGOjpTdHJpbmcmIGNvbnRlbnQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQp
LCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvclVJOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVy
bFN0cmluZyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNo
b3dDZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2hvd0NlcnRpZmljYXRlKGNlcnRpZmlj
YXRlSW5mbyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpTaG93Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVJbmZvKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6
c2hvd0NvbnNvbGUoKQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnBh
Z2VVbnBhdXNlZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNrZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94
eTo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZW5kTWVzc2FnZVRvQmFja2Vu
ZChtZXNzYWdlKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yVUkuaAppbmRleCA4MzgxYmYxY2VkZS4uOTQyNGJmZTFmMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUku
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQVBJRGlz
cGF0Y2hlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kSG9zdC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5z
cGVjdG9yQ29udHJvbGxlcjsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
UmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJl
bmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CiAK
ICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMKLSAgICB2b2lkIGVzdGFi
bGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5k
ZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpOworICAgIHZvaWQgZXN0YWJsaXNoQ29u
bmVjdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwg
Ym9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCk7CiAgICAgdm9pZCB1cGRh
dGVDb25uZWN0aW9uKCk7CiAKICAgICB2b2lkIHNob3dDb25zb2xlKCk7CkBAIC0xMzMsNyArMTM0
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBjb3JlUGFnZSgpLCBzaW5jZSB3ZSBtYXkgbmVlZCBpdCBh
ZnRlciB0aGUgZnJvbnRlbmQncyBwYWdlIGhhcyBzdGFydGVkIGRlc3RydWN0aW9uLgogICAgIFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIG1fZnJvbnRlbmRDb250cm9sbGVyIHsgbnVsbHB0
ciB9OwogCi0gICAgdWludDY0X3QgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciB7IDAgfTsKKyAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAg
IGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kb2NraW5nVW5hdmFpbGFi
bGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Zpc2libGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5t
ZXNzYWdlcy5pbgppbmRleCBkZWEwZmU1ODRkNC4uNDMxOTBhYTgzNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1l
c3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+
IFdlYkluc3BlY3RvclVJIHsKLSAgICBFc3RhYmxpc2hDb25uZWN0aW9uKHVpbnQ2NF90IGluc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxl
dmVsKQorICAgIEVzdGFibGlzaENvbm5lY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgaW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9u
TGV2ZWwpCiAgICAgVXBkYXRlQ29ubmVjdGlvbigpCiAKICAgICBBdHRhY2hlZEJvdHRvbSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDNiYWFm
ZDE4NTRjLi43M2FlMjBiMzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTM2MCw3ICszNjAsNyBAQCBwcml2YXRlOgogCiBERUZJTkVfREVC
VUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHdlYlBhZ2VDb3VudGVy
LCAoIldlYlBhZ2UiKSk7CiAKLVJlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUodWludDY0X3Qg
cGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK1JlZjxXZWJQ
YWdlPiBXZWJQYWdlOjpjcmVhdGUoSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRS
ZWYoKm5ldyBXZWJQYWdlKHBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogCkBAIC0zNzAs
NyArMzcwLDcgQEAgUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICAgICByZXR1cm4gcGFnZTsKIH0K
IAotV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQorV2ViUGFnZTo6V2ViUGFnZShJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX3BhZ2VJRChw
YWdlSUQpCiAgICAgLCBtX3ZpZXdTaXplKHBhcmFtZXRlcnMudmlld1NpemUpCiAgICAgLCBtX2Fs
d2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyIHsgcGFyYW1ldGVycy5hbHdheXNTaG93c0hvcml6
b250YWxTY3JvbGxlciB9CkBAIC04MzEsNyArODMxLDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQ
YWdlOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBhZ2U6
Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFnZUlE
KCk7CisgICAgcmV0dXJuIHBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZvaWQgV2ViUGFnZTo6Z29Ub0JhY2tG
b3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlk
CiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTG9hZGluZywgIklu
IFdlYlByb2Nlc3MgcGlkICVpLCBXZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8g
YmFjay9mb3J3YXJkIFVSTCAlcyIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9wYWdlSUQsIGl0
ZW0tPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhMb2FkaW5nLCAiSW4g
V2ViUHJvY2VzcyBwaWQgJWksIFdlYlBhZ2UgJSIgUFJJdTY0ICIgaXMgbmF2aWdhdGluZyB0byBi
YWNrL2ZvcndhcmQgVVJMICVzIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpLCBpdGVtLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEFTU0VS
VCghbV9wZW5kaW5nTmF2aWdhdGlvbklEKTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBu
YXZpZ2F0aW9uSUQ7CkBAIC0yMDc2LDcgKzIwNzYsNyBAQCBib29sIFdlYlBhZ2U6OnNldEZpeGVk
TGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmICghdmlldyB8fCB2aWV3LT5m
aXhlZExheW91dFNpemUoKSA9PSBzaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBM
T0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3Bh
Z2VJRCA8PCAiIHNldEZpeGVkTGF5b3V0U2l6ZSAiIDw8IHNpemUpOworICAgIExPR19XSVRIX1NU
UkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlELnRvVUlu
dDY0KCkgPDwgIiBzZXRGaXhlZExheW91dFNpemUgIiA8PCBzaXplKTsKICAgICB2aWV3LT5zZXRG
aXhlZExheW91dFNpemUoc2l6ZSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkZpeGVkTGF5b3V0U2l6ZURpZENoYW5nZShzaXplKSk7CkBAIC0yNTA0LDcgKzI1MDQsNyBAQCBj
b25zdCBXZWJFdmVudCogV2ViUGFnZTo6Y3VycmVudEV2ZW50KCkKIHZvaWQgV2ViUGFnZTo6ZnJl
ZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbiByZWFzb24pCiB7CiAgICAgUkVMRUFT
RV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlBhZ2UgKFBhZ2VJRD0lbGx1KSAtIEFk
ZGluZyBhIHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJlZTsgY3VycmVudCByZWFzb25zIGFy
ZSAlZCIsCi0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVh
c29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOworICAgICAgICB0aGlzLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXll
clRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29u
cy5hZGQocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZyZWV6ZVN0YXRl
KCk7CiB9CkBAIC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmZyZWV6ZUxheWVyVHJl
ZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogdm9pZCBXZWJQYWdlOjp1bmZyZWV6ZUxh
eWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogewogICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQYWdlIChQYWdlSUQ9JWxsdSkgLSBSZW1vdmlu
ZyBhIHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJlZTsgY3VycmVudCByZWFzb25zIGFyZSAl
ZCIsCi0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29u
KSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOworICAgICAgICB0aGlzLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRy
ZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy5y
ZW1vdmUocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZyZWV6ZVN0YXRl
KCk7CiB9CkBAIC0zMTY4LDcgKzMxNjgsNyBAQCB2b2lkIFdlYlBhZ2U6OnZpc2liaWxpdHlEaWRD
aGFuZ2UoKQogCiB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2
aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rp
dml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMp
CiB7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFn
ZSAiIDw8IHBhZ2VJRCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3Rh
dGUpOworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBh
Z2UgIiA8PCBwYWdlSUQoKS50b1VJbnQ2NCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8
IGFjdGl2aXR5U3RhdGUpOwogCiAgICAgYXV0byBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4g
YWN0aXZpdHlTdGF0ZTsKICAgICBtX2FjdGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRlOwpAQCAt
MzE3Niw3ICszMTc2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNl
dDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBBY3QKICAgICBpZiAoY2hhbmdl
ZCkKICAgICAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCi0gICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShtX3BhZ2UsICJzZXRBY3Rpdml0eVN0YXRlIGNhbGxlZCBvbiAlIiBQUkl1NjQgIiBidXQg
V2ViQ29yZSBwYWdlIHdhcyBudWxsIiwgcGFnZUlEKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UobV9wYWdlLCAic2V0QWN0aXZpdHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJdTY0ICIgYnV0IFdl
YkNvcmUgcGFnZSB3YXMgbnVsbCIsIHBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIGlmIChtX3Bh
Z2UpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+
PiBjdXJyZW50bHlDaGFuZ2luZ0FjdGl2aXR5U3RhdGUgeyBtX2xhc3RBY3Rpdml0eVN0YXRlQ2hh
bmdlcywgY2hhbmdlZCB9OwogICAgICAgICBtX3BhZ2UtPnNldEFjdGl2aXR5U3RhdGUoYWN0aXZp
dHlTdGF0ZSk7CkBAIC00MzM5LDcgKzQzMzksNyBAQCB2b2lkIFdlYlBhZ2U6Om1haW5GcmFtZURp
ZExheW91dCgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpIHsKICAgICAgICAgSW50U2l6ZSBuZXdDb250ZW50
U2l6ZSA9IGZyYW1lVmlldy0+Y29udGVudHNTaXplKCk7Ci0gICAgICAgIExPR19XSVRIX1NUUkVB
TShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlEIDw8ICIgbWFp
bkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVudFNp
emUpOworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldl
YlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNl
dHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVudFNpemUpOwogICAgICAgICBpZiAo
bV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNTaXplKG5ld0NvbnRlbnRTaXplKSkK
ICAgICAgICAgICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKICAgICB9CkBAIC01
NzQyLDcgKzU3NDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZy
YW1lKQogICAgIAogICAgIGJvb2wgdmlld3BvcnRDaGFuZ2VkID0gZmFsc2U7CiAKLSAgICBMT0df
V0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJ
RCA8PCAiIGRpZENvbW1pdExvYWQgc2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBjb3JlRnJh
bWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxl
UmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBk
aWRDb21taXRMb2FkIHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgY29yZUZyYW1lLT52aWV3
KCktPmNvbnRlbnRzU2l6ZSgpKTsKICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0
Q29udGVudHNTaXplKGNvcmVGcmFtZS0+dmlldygpLT5jb250ZW50c1NpemUoKSkpCiAgICAgICAg
IHZpZXdwb3J0Q2hhbmdlZCA9IHRydWU7CiAKQEAgLTYwNTYsNyArNjA1Niw3IEBAIHZvaWQgV2Vi
UGFnZTo6c2VuZEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICAvLyBJZiB0aGF0IGlzIHRoZSBjYXNl
LCBqdXN0IHNlbmQgd2hhdCB3ZSBoYXZlIChpLmUuIGRvbid0IGluY2x1ZGUgcG9zdC1sYXlvdXQg
ZGF0YSkgYW5kIHdhaXQgdW50aWwgdGhlCiAgICAgLy8gbmV4dCBsYXllciB0cmVlIGNvbW1pdCB0
byBjb21wdXRlIGFuZCBzZW5kIHRoZSBjb21wbGV0ZSBFZGl0b3JTdGF0ZSBvdmVyLgogICAgIGF1
dG8gc3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSwgcGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSwgcGFnZUlEKCkudG9V
SW50NjQoKSk7CiAKICAgICBpZiAoc3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAg
ICAgIHNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCk7CkBAIC02MjM3LDcgKzYyMzcsNyBA
QCB2b2lkIFdlYlBhZ2U6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQ
STo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIAogdm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZUlnbm9y
aW5nRnVsbHlTeW5jaHJvbm91c01vZGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkpKSwgcGFnZUlEKCksIElQ
Qzo6U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5jaHJvbm91c01vZGUpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEo
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdl
Qm9keSkpKSwgcGFnZUlEKCkudG9VSW50NjQoKSwgSVBDOjpTZW5kT3B0aW9uOjpJZ25vcmVGdWxs
eVN5bmNocm9ub3VzTW9kZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cG9zdFN5bmNocm9ub3VzTWVz
c2FnZUZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1l
c3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDg2OGFlOTJmMmZiLi5lYWQ3YjQ5
NmVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NjQsNiArNjQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50U2l6ZUhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3Zlcmxh
eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UG9pbnRlcklELmg+CkBAIC0yNzMsNyArMjc0LDkgQEAgdXNpbmcgV0tFdmVudE1vZGlmaWVycyA9
IHVpbnQzMl90OwogCiBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6
Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2U+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlBhZ2U+IGNyZWF0ZSh1aW50NjRfdCBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgdXNpbmcgSWRlbnRpZmllciA9
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOworICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRl
KElkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisKICAgICB2aXJ0dWFs
IH5XZWJQYWdlKCk7CiAKICAgICB2b2lkIHJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmKTsKQEAgLTI4Myw3ICsyODYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFdlYlBhZ2UqIGZyb21Db3JlUGFnZShXZWJDb3JlOjpQYWdlKik7CiAKICAgICBXZWJDb3JlOjpQ
YWdlKiBjb3JlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQotICAgIHVpbnQ2
NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgSWRlbnRpZmllciBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+c2Vzc2lvbklEKCk7IH0KICAgICBib29s
IHVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT51c2VzRXBoZW1l
cmFsU2Vzc2lvbigpOyB9CiAKQEAgLTExNjYsNyArMTE2OSw3IEBAIHB1YmxpYzoKICAgICBib29s
IHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkm
JiByZXBseSkKICAgICB7CiAgICAgICAgIGNhbmNlbEdlc3R1cmVzQmxvY2tlZE9uU3luY2hyb25v
dXNSZXBsaWVzKCk7Ci0gICAgICAgIHJldHVybiBzZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBX
VEZNb3ZlKHJlcGx5KSwgbV9wYWdlSUQsIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5
bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKKyAgICAgICAgcmV0
dXJuIHNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZv
cm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RE9N
UGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyKTsKQEAgLTExOTksNyArMTIwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFVzZXJJc0ludGVyYWN0aW5nKGJvb2wgdXNlcklzSW50ZXJhY3RpbmcpIHsgbV91c2VySXNJ
bnRlcmFjdGluZyA9IHVzZXJJc0ludGVyYWN0aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViUGFn
ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgV2Vi
UGFnZShJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9p
ZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKQEAgLTE1ODUsNyArMTU4OCw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGlu
Z0xvYWQoKTsKIAotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIElkZW50aWZpZXIgbV9wYWdl
SUQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwogICAgIFJl
ZlB0cjxXZWJGcmFtZT4gbV9tYWluRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCmluZGV4IGQ5
NmE3ZDdkZGE5Li5iNzc5OWI0ZmJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKQEAgLTQxLDcg
KzQxLDcgQEAgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6V2ViUGFnZUluc3BlY3RvclRhcmdldChX
ZWJQYWdlJiBwYWdlKQogCiBTdHJpbmcgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6aWRlbnRpZmll
cigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkudG9V
SW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6Y29ubmVjdChJbnNw
ZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCYgY2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFz
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLmgKaW5kZXggMzAxYjEzOWUxZDIuLjZiN2VjNWIxNmYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaApAQCAtMjYsMTMgKzI2
LDE1IEBACiAjaWZuZGVmIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlX2gKICNkZWZp
bmUgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2VfaAogCisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlSWRlbnRpZmllci5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7
CiB9CiAKIEBpbnRlcmZhY2UgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UgOiBOU09i
amVjdCB7CiAgICAgV2ViS2l0OjpXZWJQYWdlKiBtX3BhZ2U7Ci0gICAgdWludDY0X3QgbV9wYWdl
SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgaWQgbV9wYXJl
bnQ7CiAgICAgYm9vbCBtX2hhc01haW5GcmFtZVBsdWdpbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQppbmRleCAzZDNmMzU1NTNlNi4uNjE2NWEwMWZl
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAg
LTE0OCw3ICsxNDgsNyBAQCAtICh2b2lkKXNldFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSopcGFn
ZQogICAgICAgICBhdXRvKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwogICAgICAgICBtX2hh
c01haW5GcmFtZVBsdWdpbiA9IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpID8gZnJhbWUtPmRv
Y3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSA6IGZhbHNlOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIG1fcGFnZUlEID0gMDsKKyAgICAgICAgbV9wYWdlSUQgPSB7IH07CiAgICAgICAgIG1faGFz
TWFpbkZyYW1lUGx1Z2luID0gZmFsc2U7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBhMDdjYTQ1ZDMzNy4u
YjZhZTg0MzI3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCkBAIC0yNjYsOCArMjY2LDggQEAgYm9vbCBXZWJQYWdlOjpleGVj
dXRlS2V5cHJlc3NDb21tYW5kc0ludGVybmFsKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVz
c0NvbW0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIGJvb2wgY29tbWFuZFdhc0hhbmRsZWRCeVVJUHJvY2VzcyA9IGZhbHNlOwotICAgICAg
ICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVTYXZlZENvbW1hbmRC
eVNlbGVjdG9yKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKSwKLSAgICAgICAgICAgICAgICAgICAg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3I6OlJl
cGx5KGNvbW1hbmRXYXNIYW5kbGVkQnlVSVByb2Nlc3MpLCBtX3BhZ2VJRCk7CisgICAgICAgICAg
ICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29tbWFu
ZEJ5U2VsZWN0b3IoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpLAorICAgICAgICAgICAgICAgICAg
ICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcjo6
UmVwbHkoY29tbWFuZFdhc0hhbmRsZWRCeVVJUHJvY2VzcykpOwogICAgICAgICAgICAgICAgIGV2
ZW50V2FzSGFuZGxlZCB8PSBjb21tYW5kV2FzSGFuZGxlZEJ5VUlQcm9jZXNzOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggNWNlNjljY2Y4MzMuLjYxNzRiMGEzYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2Vzcygp
CiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0aWNzKSksIDApOwogICAgIH0pOwogCi0g
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0
X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKSB7
CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFn
ZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVy
RG9tYWluKSB7CiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVx
dWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihzZXNzaW9uSUQsIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsKICAgICB9KTsKICNl
bmRpZgpAQCAtNjY3LDE2ICs2NjcsMTYgQEAgV2ViUGFnZSogV2ViUHJvY2Vzczo6Zm9jdXNlZFdl
YlBhZ2UoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogICAgIAotV2ViUGFnZSogV2ViUHJvY2Vz
czo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CitXZWJQYWdlKiBXZWJQcm9jZXNzOjp3
ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdl
TWFwLmdldChwYWdlSUQpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWlu
dDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3Zv
aWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIC8vIEl0IGlzIG5lY2Vz
c2FyeSB0byBjaGVjayBmb3IgcGFnZSBleGlzdGVuY2UgaGVyZSBzaW5jZSBkdXJpbmcgYSB3aW5k
b3cub3BlbigpIChvciB0YXJnZXRlZAogICAgIC8vIGxpbmspIHRoZSBXZWJQYWdlIGdldHMgY3Jl
YXRlZCBib3RoIGluIHRoZSBzeW5jaHJvbm91cyBoYW5kbGVyIGFuZCB0aHJvdWdoIHRoZSBub3Jt
YWwgd2F5LiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4+OjpBZGRSZXN1
bHQgcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOworICAgIGF1dG8gcmVz
dWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOwogICAgIGF1dG8gb2xkUGFnZUlE
ID0gcGFyYW1ldGVycy5vbGRQYWdlSUQgPyBwYXJhbWV0ZXJzLm9sZFBhZ2VJRC52YWx1ZSgpIDog
cGFnZUlEOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBBU1NFUlQoIXJl
c3VsdC5pdGVyYXRvci0+dmFsdWUpOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgV2ViUHJvY2Vz
czo6Y3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhCiAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCi12b2lk
IFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFn
ZU1hcC5jb250YWlucyhwYWdlSUQpKTsKIApAQCAtMTQ1MCw3ICsxNDUwLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbikKIAog
I2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWlu
dDY0X3QsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQor
dm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShQYWdlSWRlbnRpZmll
ciwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpCiB7CiAg
ICAgaWYgKGNoYW5nZWQgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAg
ICAgIHVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uOjpWaXNpYmls
aXR5SGFzQ2hhbmdlZCk7CkBAIC0xNjI0LDEzICsxNjI0LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6
c2VuZFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBVUkwmIHVybCkKICAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZENvbGxlY3RQ
cmV3YXJtSW5mb3JtYXRpb24ocmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlByb2Nlc3NXYXJt
aW5nOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9j
ZXNzOjpwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNz
OjpwYWdlRGlkRW50ZXJXaW5kb3coUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fcGFn
ZXNJbldpbmRvd3MuYWRkKHBhZ2VJRCk7CiAgICAgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBU
aW1lci5zdG9wKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZVdpbGxMZWF2ZVdpbmRvdyh1
aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVhdmVXaW5kb3coUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fcGFnZXNJbldpbmRvd3MucmVtb3ZlKHBhZ2VJ
RCk7CiAKQEAgLTE2NzMsNyArMTY3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5hYmxlUHJpdmF0
ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZSkKICAgICBpZiAoZW5hYmxlKQogICAgICAg
ICBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwog
Ci0gICAgVmVjdG9yPHVpbnQ2NF90PiBwYWdlSURzOworICAgIFZlY3RvcjxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEczsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXApIHsKICAgICAgICAg
aWYgKHBhZ2UudmFsdWUpCiAgICAgICAgICAgICBwYWdlSURzLmFwcGVuZChwYWdlLmtleSk7CkBA
IC0xODUzLDcgKzE4NTMsNyBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJS
VENOZXR3b3JrKCkKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVp
bnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQordm9pZCBXZWJQ
cm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mo
dWludDY0X3QgcGFnZUdyb3VwSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7
CiAgICAgLy8gV2UgYXJlIGluIHRoZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5k
IHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3Jr
IFByb2Nlc3MKICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6
OkNvbm5lY3Rpb24gYXMgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRl
eCA1MjVkZjE4M2YyMi4uMTg1N2NlYTBlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lmIFBM
QVRGT1JNKE1BQykKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KQEAgLTE0
NSw5ICsxNDYsOSBAQCBwdWJsaWM6CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdl
YkNvbm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5n
ZXQoKTsgfQogCi0gICAgV2ViUGFnZSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0Owot
ICAgIHZvaWQgY3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJik7Ci0gICAgdm9pZCByZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCBwYWdlSUQpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpIGNvbnN0OworICAgIHZvaWQgY3JlYXRlV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHJlbW92ZVdlYlBhZ2Uo
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBXZWJQYWdlKiBm
b2N1c2VkV2ViUGFnZSgpIGNvbnN0OwogCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVu
ZGxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQpAQCAtMTk5LDgg
KzIwMCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKIAotICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93
KHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90
IHBhZ2VJRCk7CisgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3coV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIpOworICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyhXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7CiAKICAgICB2b2lkIG5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmlyZWQoKTsK
IApAQCAtMjE5LDcgKzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlUGFn
ZXMoKTsKICAgICB2b2lkIGdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCBwYWdlQWN0aXZp
dHlTdGF0ZURpZENoYW5nZSh1aW50NjRfdCBwYWdlSUQsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKKyAgICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCk7CiAKICAgICB2b2lkIHNldEhpZGRlblBhZ2VET01UaW1l
clRocm90dGxpbmdJbmNyZWFzZUxpbWl0KGludCBtaWxsaXNlY29uZHMpOwogCkBAIC0zNTksNyAr
MzYwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNz
aW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogI2VuZGlm
CiAKQEAgLTQ2MCw3ICs0NjEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rp
b25Ub1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5Pj4gbV9wYWdlR3JvdXBNYXA7CiAgICAgUmVmUHRy
PEluamVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwogCkBAIC01MTQsNyArNTE1LDcgQEAg
cHJpdmF0ZToKIAogICAgIGJvb2wgbV9wcm9jZXNzSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCi0g
ICAgSGFzaFNldDx1aW50NjRfdD4gbV9wYWdlc0luV2luZG93czsKKyAgICBIYXNoU2V0PFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBtX3BhZ2VzSW5XaW5kb3dzOwogICAgIFdlYkNvcmU6OlRpbWVy
IG1fbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXI7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGIz
OWIzOGMxODNjLi41N2EyNjU2MzQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4gV2Vi
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnMoc3RydWN0IFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVy
cykKIAogICAgICMgQ3JlYXRlIGEgbmV3IHBhZ2UuCi0gICAgQ3JlYXRlV2ViUGFnZSh1aW50NjRf
dCBuZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFn
ZUNyZWF0aW9uUGFyYW1ldGVycykKKyAgICBDcmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG5ld1BhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyBwYWdlQ3JlYXRpb25QYXJhbWV0ZXJzKQogCiAgICAgUHJld2FybUdsb2JhbGx5KCk7CiAgICAg
UHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViQ29yZTo6UHJld2FybUluZm9y
bWF0aW9uIHByZXdhcm1JbmZvcm1hdGlvbikKQEAgLTExMSw3ICsxMTEsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vz
c2lvbklEKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25J
RCBpbml0aWFsU2Vzc2lvbklEKQogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAwYmQ5MGFmOTE4Ny4uMGU5NDI5NjA0OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRj
aFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgYwogCiAg
ICAgLy8gTmFtZXNwYWNlIElEcyBmb3Igc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVx
dWl2YWxlbnQgdG8gd2ViIHBhZ2UgSURzCiAgICAgLy8gc28gd2UgY2FuIGdldCB0aGUgcmlnaHQg
cGFnZSBoZXJlLgotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJQYWdlKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdl
SWRlbnRpZmllclR5cGU+KG1fc3RvcmFnZU5hbWVzcGFjZUlEKSk7CiAgICAgaWYgKCF3ZWJQYWdl
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDI5YmE3ZDhhOGEzLi5lY2FmNjY1MTlk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYU1hcC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5jcHAKaW5kZXggYjM5MDgxZTZlM2MuLjgwOTYyMzQyNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUlt
cGwuY3BwCkBAIC00MCwxMiArNDAsMTIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVu
dGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwg
aWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZp
ZXIudG9VSW50NjQoKSwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLVJlZjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2Fs
U3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0
ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZUlkZW50aWZpZXIgaWRlbnRpZmll
ciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewogICAgIHJldHVybiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShpZGVudGlmaWVyLCBxdW90YUluQnl0ZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJ
bXBsLmgKaW5kZXggNjc1N2UzYjgxODguLjFiZmVjNDhiODlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmgKQEAgLTM5LDggKzM5LDggQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVz
cGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
KTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5
dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVy
YWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcyk7CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3Jl
YXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcyk7CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRl
VHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVz
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJh
Y2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCBmYzY1OTg2MzI1Mi4uNzY1ZWZmNDA0YjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLm1tCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW0K
ICAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKIAog
ICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0VXBQbGF5YmFj
a0NvbnRyb2xzTWFuYWdlcldpdGhJRChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1fY29udHJv
bHNNYW5hZ2VyQ29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKICAg
ICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CiAKICAgICBtX3BhZ2UtPnZpZGVvQ29u
dHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSk7CiB9CiAK
IHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNvbnRleHRJZEZvck1lZGlhRWxlbWVu
dChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCkBAIC0zMTgsMjcgKzMx
OCwyNyBAQCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpjdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1lbgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OmR1cmF0aW9uQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlv
bikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pKTsKIH0KIAogdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGlt
ZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9y
VGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1ZmZlcmVkVGltZUNo
YW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpCdWZmZXJl
ZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OkJ1ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUpKTsKIH0KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1N0
YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBsYXliYWNrU3RhcnRlZFRpbWUpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY29udGV4dElkLCBwbGF5YmFj
a1N0YXJ0ZWRUaW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmF0ZUNo
YW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tS
YXRlKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0SWQsIGlzUGxheWluZywgcGxheWJhY2tSYXRlKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5
YmFja1JhdGUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrYWJsZVJh
bmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2Vz
JiB0aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxpdmVVcGRhdGVJ
bnRlcnZhbCkKQEAgLTM0OSwzNyArMzQ5LDM3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViCiAg
ICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2VzLnJhbmdlcygpLmVuZChpKS50b0RvdWJsZSgp
OwogICAgICAgICByYW5nZXNWZWN0b3IuYXBwZW5kKHsgc3RhcnQsIGVuZCB9KTsKICAgICB9Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNl
ZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9y
KSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFuZ2Vz
VmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSk7CiB9CiAKIHZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQo
Y29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDYW5QbGF5RmFzdFJldmVyc2VD
aGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4
dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5k
ZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxNZWRp
YVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6Okxl
Z2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2Vs
ZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCh1aW50NjRf
dCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFs
UGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1l
KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQoY29udGV4dElkLCBlbmFibGVk
LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxvY2FsaXplZERldmljZU5hbWUp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFuZ2VkKGNv
bnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdldFR5cGUpLCBsb2Nh
bGl6ZWREZXZpY2VOYW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVk
aW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4
dElkLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rp
b25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVp
bnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlh
U2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBz
ZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6d2lyZWxl
c3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBk
aXNhYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNWQ2MTEwYjc5MDkuLjcwNjYzOTc3Mzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxl
bWVuCiAgICAgICAgIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5
ZXIodmlkZW9MYXllcik7CiAgICAgfQogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQs
IGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0
LCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUo
KSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSwgc3RhbmRieSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpT
ZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4dElkLCBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0Nv
bnRleHQoKS0+Y29udGV4dElEKCksIHZpZGVvUmVjdCwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rv
cigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCksIGFsbG93c1BpY3R1cmVJblBpY3R1cmUs
IHN0YW5kYnkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9G
dWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVv
RWxlbWVudCkKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZAogICAg
ICAgICByZXR1cm47CiAKICAgICBpbnRlcmZhY2Uuc2V0SXNBbmltYXRpbmcodHJ1ZSk7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRG
dWxsc2NyZWVuKGNvbnRleHRJZCwgaW5saW5lVmlkZW9GcmFtZSh2aWRlb0VsZW1lbnQpKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCwgaW5saW5lVmlkZW9GcmFt
ZSh2aWRlb0VsZW1lbnQpKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhp
dFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6SFRNTFZpZGVv
RWxlbWVudCYgdmlkZW9FbGVtZW50LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgdGFyZ2V0TW9kZSkKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5p
bWF0aW9uKFdlYkNvcmU6OgogCiAgICAgaW50ZXJmYWNlLnNldFRhcmdldElzRnVsbHNjcmVlbihm
YWxzZSk7CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKGNvbnRleHRJZCwg
dGFyZ2V0TW9kZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmlt
YXRpb25Ub01vZGUoY29udGV4dElkLCB0YXJnZXRNb2RlKSk7CiAjZWxzZQogICAgIFVOVVNFRF9Q
QVJBTSh2aWRlb0VsZW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRNb2RlKTsKQEAgLTMz
NiwxMyArMzM2LDEzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVs
bHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6CiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6Omhhc1ZpZGVvQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFz
VmlkZW8pCiB7CiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvKGNvbnRleHRJZCwgaGFz
VmlkZW8pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvKGNvbnRleHRJZCwgaGFz
VmlkZW8pKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp2aWRlb0RpbWVuc2lv
bnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVu
c2lvbnMpCiB7CiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZpZGVvRGltZW5zaW9ucyhjb250ZXh0
SWQsIHZpZGVvRGltZW5zaW9ucyksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9EaW1l
bnNpb25zKGNvbnRleHRJZCwgdmlkZW9EaW1lbnNpb25zKSk7CiB9CiAKICNwcmFnbWEgbWFyayBN
ZXNzYWdlcyBmcm9tIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eToKQEAgLTM2NCw3ICszNjQs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0
KHVpbnQ2NF90IGNvbnRleHRJZCkKIAogICAgIGF1dG8mIG1vZGVsID0gZW5zdXJlTW9kZWwoY29u
dGV4dElkKTsKICAgICBJbnRSZWN0IGlubGluZVJlY3QgPSBpbmxpbmVWaWRlb0ZyYW1lKCptb2Rl
bC52aWRlb0VsZW1lbnQoKSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OlNldElubGluZVJlY3QoY29udGV4dElkLCBpbmxpbmVSZWN0LCBp
bmxpbmVSZWN0ICE9IEludFJlY3QoMCwgMCwgMCwgMCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0
SW5saW5lUmVjdChjb250ZXh0SWQsIGlubGluZVJlY3QsIGlubGluZVJlY3QgIT0gSW50UmVjdCgw
LCAwLCAwLCAwKSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RW
aWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCkBAIC0zNzgsNyArMzc4LDcgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWlu
dDY0X3QgY29udGV4dElkKQogICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRl
b0xheWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJ
ZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywg
Y29udGV4dElkXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAg
ICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIHRydWUpLCBwcm90ZWN0
ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50
TGF5ZXIoY29udGV4dElkLCB0cnVlKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMzk0
LDcgKzM5NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmV0dXJuVmlkZW9Db250
ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogICAgICAgICAgICAgbW9kZWwtPnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RG
TW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFz
VmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCBmYWxzZSksIHByb3RlY3RlZFRoaXMtPm1fcGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVy
KGNvbnRleHRJZCwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0g
ewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNj
cmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAg
ICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgfSk7CiAjZWxzZQogICAgIENBTGF5
ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+cm9vdExh
eWVyKCk7CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIG1vZGVsLT5zZXRWaWRl
b0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
dGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShw
cm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVj
dGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwg
cHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNj
cmVlbihjb250ZXh0SWQpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTQ0Miw3
ICs0NDIsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0RnVsbHNjcmVl
bih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1l
bnQgPSBXVEZNb3ZlKHZpZGVvRWxlbWVudCksIGNvbnRleHRJZF0gewogICAgICAgICB2aWRlb0Vs
ZW1lbnQtPndpbGxFeGl0RnVsbHNjcmVlbigpOwogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+
bV9wYWdlKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihj
b250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgfSk7
CiB9CiAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRp
ZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2VdIHsKICAg
ICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgIHByb3RlY3RlZFRo
aXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpD
bGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQp
KTsKICAgICB9KTsKICNlbHNlCiAgICAgbW9kZWwtPndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRo
ZW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFj
ZSwgbW9kZWxdICgpIG11dGFibGUgewpAQCAtNDk4LDcgKzQ5OCw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAg
ICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KG51
bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChw
cm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3Jl
ZW4oY29udGV4dElkKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSk7CkBAIC01NTUsNyArNTU1LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBib28KIAog
ICAgIGlmICghaXNQYWdlVmlzaWJsZSkKICAgICAgICAgbW9kZWwudmlkZW9FbGVtZW50KCktPnNj
cm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGZhbHNlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVyblRvSW5saW5l
KGNvbnRleHRJZCwgdHJ1ZSwgaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50KCkp
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShjb250ZXh0SWQs
IHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxlbWVudCgpKSkpOwogfQogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRD
b250ZXh0VUlEKHVpbnQ2NF90IGNvbnRleHRJZCwgTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OlJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEOjpBc3luY1JlcGx5
JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQppbmRleCAyZTE5MGIwMzVmNy4uYjljZTc5ZDI3NGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNTM5LDcg
KzUzOSw3IEBAIHN0YXRpYyBOU1VSTCAqb3JpZ2luKFdlYlBhZ2UmIHBhZ2UpCiAjZW5kaWYKIAog
I2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4g
YWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdl
Pj4mIHBhZ2VNYXApCitzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk8TlNTdHJpbmcgKj4+IGFjdGl2
ZVBhZ2VzT3JpZ2lucyhjb25zdCBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFn
ZT4+JiBwYWdlTWFwKQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxOU1N0cmluZyAq
Pj4gYWN0aXZlT3JpZ2lucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0p
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJl
c291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggOTg3MmMzMWJhNTguLjc5NjAy
NGM4Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0xMTEsNyArMTExLDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGUKICAgICBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShmcmFtZUxvYWRlci5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0
LCBvcHRpb25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQg
PyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6VXNlLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogfQogCi12b2lkIFdlYlJlc291cmNl
TG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3QgLyp3ZWJQYWdlSUQqLykK
K3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRl
bnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggNTViMzY5NzUz
MDYuLjVmNjJmNzc3YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTQ2LDcgKzQ2
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkUmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZv
aWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2ln
bmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNsaWVu
dENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IFdl
YkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYpIGZpbmFsOwotICAgIHZvaWQgcGFnZUxv
YWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSBmaW5hbDsKKyAgICB2b2lkIHBhZ2VMb2Fk
Q29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgcmVt
b3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCBzZXREZWZlcnNM
b2FkaW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuaAppbmRleCAxMzg1NTgzYWYyOS4uYjE0MDNkMDU2MzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZnJh
bWVMb2FkZXJEZXN0cm95ZWQoKSBmaW5hbDsKICAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBm
aW5hbDsgLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
KCkgY29uc3QgZmluYWw7CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgZmlu
YWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggN2Y4NjlmMWRkY2IuLjdlYmEz
YTk4YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjA5LDcgKzIwOSw3IEBA
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudChXZWJGcmFtZSAqd2Vi
RnJhbWUpCiB7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370589</attachid>
            <date>2019-05-24 14:16:31 -0700</date>
            <delta_ts>2019-05-24 14:20:41 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>198206_PageIdentifier_wip.patch</filename>
            <type>text/plain</type>
            <size>615320</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwNy4uYjNiY2FkZDlkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjIsNiArMTIz
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVu
dGlmaWVyPFQ+PiB7CiAgICAgdHlwZWRlZiBPYmplY3RJZGVudGlmaWVySGFzaDxUPiBIYXNoOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VD4mIGlkZW50aWZpZXIpCit7CisgICAg
dHMgPDwgaWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IGMyYzdjMjI0OWUzLi40NDgyZDVkNDc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC03NzksNiArNzc5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAogICAgIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
aAogICAgIHBhZ2UvUGFnZUdyb3VwLmgKKyAgICBwYWdlL1BhZ2VJZGVudGlmaWVyLmgKICAgICBw
YWdlL1BhZ2VPdmVybGF5LmgKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCiAgICAg
cGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU2YTFmNWYxZDcxLi5iNmE4Zjg5YWI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTIxNyw2ICsxMjE3LDcgQEAKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3
Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0
Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2QjY1MEREMjI5NjI2
MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4QTIwN0Q2MzI4
MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBBN0QyREQgLyogQWJz
dHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NzIwN0Q2MzQw
MDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAwQTdEMkREIC8qIEds
b2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzU5OSw2ICs3NjAwLDcgQEAKIAkJNDY4MzQ0REQxRURERkE1RjAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUxRURERkE1RjAwQjc3
OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCNjUwREIy
Mjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3Rl
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4RDIwN0Q2MzJBMDBB
N0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDE5Nyw2ICsyMDE5OSw3IEBACiAJCQkJOTMwMkIwQkUwRDc5RjgyQzAwQzdFRTgzIC8q
IFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuY3BwICovLAogCQkJCTdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLywKKwkJCQk0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRDVDOUNGQjE5QzdCNTJFMDBCM0M1QzEgLyog
UGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdl
T3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3Zlcmxh
eUNvbnRyb2xsZXIuY3BwICovLApAQCAtMjk4NzEsNiArMjk4NzQsNyBAQAogCQkJCUJDMzA1QzdB
MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTg1QjFFQjBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MT0xpc3RFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFN0U5QjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MT3B0R3Jv
dXBFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3RTk5MEExQTgzRTMw
MDdGQjhDNSAvKiBKU0hUTUxPcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhB
MjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA3NjkxMmNh
ZWI4YS4uMGU3ZDU0MjA1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQodWludDY0X3Qg
cGFnZUlELCBBWE9iamVjdENhY2hlJiBjYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29s
YXRlZFRyZWU6OmluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
QVhPYmplY3RDYWNoZSYgY2FjaGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGF1dG8gdHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0
eVRyZWUoKTsKQEAgLTg3LDcgKzg3LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6dHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogICAgIHJldHVybiB0
cmVlSURDYWNoZSgpLmdldCh0cmVlSUQpOwogfQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNv
bGF0ZWRUcmVlOjpjcmVhdGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIApA
QCAtOTcsNyArOTcsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gbmV3VHJlZTsKIH0K
IAotUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCh1
aW50NjRfdCBwYWdlSUQpCitSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0
cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihzX2NhY2hlTG9jayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGMwNzVkNWIwMTY3
Li42ZWVjMjY0NTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYSXNv
bGF0ZWRUcmVlTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00Myw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BWElzb2xhdGVk
VHJlZSgpOwogCi0gICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBh
Z2VJRCh1aW50NjRfdCBwYWdlSUQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QVhJ
c29sYXRlZFRyZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhP
YmplY3RDYWNoZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRl
ZFRyZWU+IHRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPEFY
SXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRy
ZWVGb3JJRChQYWdlSWRlbnRpZmllciwgQVhPYmplY3RDYWNoZSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IHRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+
IHRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBWElzb2xhdGVkVHJlZU5vZGU+IHJvb3ROb2RlKCk7CkBAIC03MCw3ICs3MSw3IEBAIHByaXZh
dGU6CiAgICAgQVhJc29sYXRlZFRyZWUoKTsKIAogICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0
ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlSURDYWNoZSgpOwotICAgIHN0YXRp
YyBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgp
OworICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+
PiYgdHJlZVBhZ2VDYWNoZSgpOwogCiAgICAgLy8gT25seSBhY2Nlc3Mgb24gQVggdGhyZWFkIHJl
cXVlc3RpbmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+
PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlNzBh
OWY3ZmU1NS4uZDM1NDE2NzNlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzc2Niw3
ICs3NzY2LDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2VyKCkKICAgICByZXR1cm4gKm1fbG9n
Z2VyOwogfQogICAgIAotT3B0aW9uYWw8dWludDY0X3Q+IERvY3VtZW50OjpwYWdlSUQoKSBjb25z
dAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggYzA3NjU1NjUwNmEuLmEyNDgxZGY4YTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNp
bmNsdWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmll
ci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVu
dC5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBA
IC02MzUsNyArNjM2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2Fj
aGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQVhPYmplY3RDYWNoZSgp
OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0OworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdDsKICAgICAvLyB0byBnZXQgdmlzdWFsbHkg
b3JkZXJlZCBoZWJyZXcgYW5kIGFyYWJpYyBwYWdlcyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFs
bHlPcmRlcmVkKCk7CiAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbGx5T3JkZXJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBi
MWJlZDhmMDMyZi4uMzNlMjc4NjM4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29r
aWVzID0gc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CiAKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtMTEwLDcgKzExMCw3IEBAIENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoY29u
c3QgRG9jCiB2b2lkIENvb2tpZUphcjo6c2V0Q29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29raWVz
RW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3Rk
OjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
IHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3Rv
cmFnZVNlc3Npb24oKSkgewogICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQg
PSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHUKIFN0cmluZyBDb29raWVK
YXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAg
ICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAg
ICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdQogYm9vbCBDb29raWVKYXI6OmdldFJh
d0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIGNvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkp
IHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7
CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCAwZGIwN2M2ZDEyZS4uMjgxZjg0YzQ5MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzKERvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogCiAgICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8
U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OworICAg
IHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggNGYwYmI4NmRkZDUuLjFmN2EyOWM0YjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBG
cmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJy
aWRlIHsgfQogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBt
YWlubHkgZm9yIGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZWMzOTEyN2ExYWQuLjA3NDg3NjExOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmUuaCIKICNpbmNsdWRl
ICJMaW5rSWNvbi5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgpAQCAtMTI2LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBtYWtl
UmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0
ZWd5LmgKaW5kZXggOGE4MjM4MWYwMTguLjQ1ZmViNjM1ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCIKQEAgLTU3LDcg
KzU4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UoRnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJl
c291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRlciYsIGJvb2wpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA3NzQ1
MDAxZTc4YS4uZjI2YTlhYWYyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmF2aWdh
dGlvbkFjdGlvbjo6UmVxdWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogbV91cmwgeyBVUkwgeyBkb2N1bWVudC51cmwoKSB9IH0KICAgICAsIG1fb3JpZ2lu
IHsgbWFrZVJlZlB0cihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX3BhZ2VJ
REFuZEZyYW1lSURQYWlyIHsgZG9jdW1lbnQuZnJhbWUoKSA/IHN0ZDo6bWFrZV9wYWlyKGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpLnZhbHVlT3IoMCksIGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKDApKSA6IHN0
ZDo6bWFrZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9wYWdlSURB
bmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVu
dC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlm
aWVyIHsgfSksIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52
YWx1ZU9yKDApKSA6IHN0ZDo6bWFrZV9wYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4oeyB9
LCAwKSB9CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmlu
ZGV4IDFhNDRmOTFkMzY4Li5lZDdkMDljZjI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRl
ICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtNjMsMTQgKzY0LDE0IEBAIHB1YmxpYzoKICAg
ICBOYXZpZ2F0aW9uQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24mJik7CiAgICAgTmF2aWdhdGlvbkFj
dGlvbiYgb3BlcmF0b3I9KE5hdmlnYXRpb25BY3Rpb24mJik7CiAKLSAgICB1c2luZyBQYWdlSURB
bmRGcmFtZUlEUGFpciA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKiBwYWdlSUQgKi8sIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+OworICAgIHVzaW5nIFBhZ2VJREFuZEZyYW1lSURQYWlyID0gc3RkOjpw
YWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBmcmFtZUlEICovPjsKICAgICBjbGFzcyBS
ZXF1ZXN0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVxdWVzdGVyKGNvbnN0IERvY3VtZW50
Jik7CiAKICAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiAqbV9vcmlnaW47IH0KLSAgICAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5maXJzdDsgfQorICAgICAgICBQYWdlSWRlbnRpZmll
ciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZyYW1lSURQYWlyLmZpcnN0OyB9
CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZy
YW1lSURQYWlyLnNlY29uZDsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFVSTCBtX3VybDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDE0
YmMyZjNiZWVmLi5mZmFkYTFjNDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lk
KFZlY3RvCiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9u
Q2FsbGJhY2spOwogfQogCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVCghbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2sp
OwogICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MK
IH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1l
bnQpCit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlE
LCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVu
ZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBv
cGVuZXJVcmwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKaW5kZXggYzQ2NjFiMDQ3NjAuLmRlMWM5NGE3MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgorI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTczLDcgKzc0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0
IFVSTCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBkYXRlZENh
bGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
Jik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0
aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJTb2NrZXRM
b2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxU
aW1lKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dTdWJyZXNvdXJjZUxvYWRp
bmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiYmKTsKQEAgLTk0LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3Vt
ZW50KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKICNlbmRpZgogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25N
YXA7CiAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
IG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1aW50NjRfdCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CisgICAg
RnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQ
YWdlSWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3Rp
ZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlm
aWNhdGlvbkNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjM1Mzkw
YzhjM2EuLjUyYjJlOTRiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQ4
Niw4ICs0ODYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMgKi8pID0gMDsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQq
LywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8q
c3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8s
IHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5v
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21h
aW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYm
IC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVy
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd246Ok5vKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKaW5kZXgg
MTU2YzljZDIwNWQuLjBkN2IzZGJmNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFs
RnJhbWVJZGVudGlmaWVyLmgKQEAgLTI1LDEzICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRnJhbWUgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1
ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgogc3RydWN0IEdsb2JhbEZyYW1lSWRl
bnRpZmllciB7Ci0gICAgdWludDY0X3QgcGFnZUlEOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RDsKICAgICB1aW50NjRfdCBmcmFtZUlEOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIEdsb2Jh
bEZyYW1lSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxG
cmFtZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50aWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDRkNWY4ZDI5NzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBhZ2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBQYWdlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDExNTkw
NTBjZDMyLi5iM2Q2ZTM4YmNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb29raWVKYXIuaCIKKyNp
bmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zOCw3ICsz
OSw3IEBAIHN0cnVjdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSB7CiAgICAgU2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbzsKICAgICBVUkwgdXJsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcyB7IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObyB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNzEsOCAr
NzIsMTEgQEAgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5OjpkZWNvZGUoRGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mcmFtZUlEKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdl
SUQpKQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgZGVjb2RlciA+
PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmVzdWx0LnBhZ2VJRCA9ICpwYWdlSUQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaW5jbHVkZVNlY3VyZUNvb2tpZXMpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggM2IxOGU2MmZlMzku
LjYzZGYwNTg4ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC02NiwxMiArNjYsMTIgQEAgYm9v
bCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29u
c3QgUmVnaXN0cmFibGVEb21haW4KICAgICByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQ29va2llRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAotYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewogICAg
IHJldHVybiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCByZXF1ZXN0LnVybCgpLCBmcmFtZUlELCBwYWdlSUQpOwogfQogICAgIAotYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlG
b3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2ll
cywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7CiAgICAgUmVnaXN0cmFibGVEb21h
aW4gZmlyc3RQYXJ0eURvbWFpbiB7IGZpcnN0UGFydHlGb3JDb29raWVzIH07CiAgICAgaWYgKGZp
cnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpCiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZv
ci5yZW1vdmUoZG9tYWluKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAg
aWYgKGZyYW1lSUQpIHsKICAgICAgICAgYXV0byBmcmFtZXNHcmFudGVkSXRlcmF0b3IgPSBtX2Zy
YW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlEKTsKQEAgLTE0OCw3ICsxNDgsNyBA
QCBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzKCkgY29uc3QKICAgICByZXR1cm4gZW50cmllczsKIH0KICAgICAKLXZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkKIHsKICAgICBpZiAoIWZyYW1lSUQpIHsKICAgICAgICAgaWYgKGZpcnN0UGFydHlE
b21haW4uaXNFbXB0eSgpKQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291
cmNlCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8gaXRlcmF0aW9u
ID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7CiAgICAgaWYgKGl0
ZXJhdGlvbiA9PSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmVuZCgpKQpAQCAtMTkxLDcg
KzE5MSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdlQWNjZXNz
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0CiAgICAgaXRlcmF0aW9uLT52YWx1ZS5y
ZW1vdmUoZnJhbWVJRCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGVhclBh
Z2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHVpbnQ2NF90IHBhZ2VJRCkK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3BhZ2Vz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CiAgICAgbV9mcmFtZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5yZW1vdmUocGFnZUlEKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcygpCiAgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyA9IFdURjo6
bnVsbG9wdDsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvbW1pdHRlZENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21E
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlE
KQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewog
ICAgIGlmIChzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGZyb21Eb21haW4pKQogICAgICAg
ICBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZS5hZGQo
cGFnZUlELCB0b0RvbWFpbik7CkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KCkKICAgICBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IHRydWU7CiB9
CiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNv
b2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCkgY29uc3QKK09wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQ
YXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29uc3QKIHsKICAgICBpZiAo
IW1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgfHwgIXBhZ2VJRCB8fCBtX25hdmlnYXRlZFRv
V2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXgg
MDMwMjAwZGY5YzQuLjNmMzljOGFjZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKKyNpbmNs
dWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAt
MTI1LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvb2tpZXNF
bmFibGVkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWUoY29uc3Qg
Q29va2llJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3Rv
cjxDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2ll
cygpOwpAQCAtMTM0LDI5ICsxMzUsMjkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2ll
SG9zdE5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8Q29va2llPiBnZXRBbGxDb29raWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PENvb2tpZT4gZ2V0Q29va2llcyhjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZmx1c2hDb29raWVTdG9yZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5JikgY29uc3Q7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlEKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNl
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9j
a0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNv
dXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21haW5zVG9C
bG9ja0Nvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoT3B0aW9uYWw8
U2Vjb25kcz4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
c291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlE
b21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllcikgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyh1aW50NjRfdCBwYWdlSUQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ3JhbnRT
dG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYWNoZUNhcChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdHRlZENy
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZy
b21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFn
ZUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRl
c3RpbmcoKTsKICNlbmRpZgogCkBAIC0xODIsMTQgKzE4MywxNCBAQCBwcml2YXRlOgogCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIHNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKLSAgICBPcHRp
b25hbDxTZWNvbmRzPiBjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmaXJzdFBhcnR5LCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdDsKKyAgICBPcHRp
b25hbDxTZWNvbmRzPiBjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmaXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZv
cjsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBIYXNoTWFwPHVpbnQ2NF90LCBSZWdpc3RyYWJsZURv
bWFpbiwgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fZnJhbWVzR3JhbnRl
ZFN0b3JhZ2VBY2Nlc3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDxSZWdpc3RyYWJs
ZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+LCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX3BhZ2VzR3Jh
bnRlZFN0b3JhZ2VBY2Nlc3M7CisgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDx1
aW50NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+PiBtX2ZyYW1lc0dy
YW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPj4gbV9wYWdlc0dyYW50ZWRTdG9y
YWdlQWNjZXNzOwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMgeyB9OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xp
ZW50U2lkZUNvb2tpZXMgeyB9OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xp
ZW50U2lkZUNvb2tpZXNTaG9ydCB7IH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVnaXN0cmFi
bGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRp
b25CeVByZXZhbGVudFJlc291cmNlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFJlZ2lzdHJhYmxlRG9tYWluPiBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQ
cmV2YWxlbnRSZXNvdXJjZTsKICAgICBib29sIG1fbmF2aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlv
blRlc3RNb2RlID0gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0KaW5kZXggNjM3NDAzNTJjNGEuLjU1N2U5NzdiNGQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9w
dGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0Fy
cmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlEKQorc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoc2Vzc2lvbi5zaG91bGRCbG9j
a0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQpAQCAtMzA3LDcgKzMw
Nyw3IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmCiB9CiAKIGVudW0gSW5jbHVkZUhUVFBPbmx5
T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90
IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpCitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMpCiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogCkBAIC0zNjMsMTIgKzM2
MywxMiBAQCBzdGF0aWMgdm9pZCBkZWxldGVBbGxIVFRQQ29va2llcyhDRkhUVFBDb29raWVTdG9y
YWdlUmVmIGNvb2tpZVN0b3JhZ2UpCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENv
b2tpZXMoY29va2llU3RvcmFnZSk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJ
bmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KQEAgLTM3OCw3ICszNzgs
NyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbgogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lv
bigqdGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNh
bWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJ
RCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQ
cm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNz
UmF3Q29va2llcykpOwogCkBAIC00NDMsNyArNDQzLDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKSBjb25zdAogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKaW5kZXggMmMxMTU2OGZjZTUuLmQ2MGQ3MGE4
MzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBTdHJpbmcgY29va2ll
c0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmCiAgICAgcmV0dXJuIGNvb2tpZXMudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBDb29raWVKYXJD
dXJsOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBDb29raWVKYXJDdXJsOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBDb29r
aWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3MKICAgICBjb29raWVKYXJEQi5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJs
LCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yayk7CiB9CiAKLXN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0o
cGFnZUlEKTsKQEAgLTgzLDcgKzgzLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2ll
SmFyQ3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24KICAgICBy
ZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNl
KSwgZmFsc2UgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BB
UkFNKHBhZ2VJRCk7CkBAIC0xMTMsNyArMTEzLDcgQEAgYm9vbCBDb29raWVKYXJDdXJsOjpjb29r
aWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pIGNvbnN0CiAg
ICAgcmV0dXJuIHNlc3Npb24uY29va2llRGF0YWJhc2UoKS5pc0VuYWJsZWQoKTsKIH0KIAotYm9v
bCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIENvb2tpZUph
ckN1cmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFS
QU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggODk0Yzg2YWZlOGYuLjY4NzJiMGFjOWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC04MCw3ICs4MCw3IEBAIENvb2tpZUph
ckRCJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZURhdGFiYXNlKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9jb29raWVEYXRhYmFzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgY29va2llU3Rv
cmFnZSgpLnNldENvb2tpZXNGcm9tRE9NKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCB2YWx1ZSk7CiB9CkBAIC05MCw3ICs5MCw3IEBAIGJvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IGNvb2tpZVN0b3JhZ2UoKS5jb29raWVzRW5hYmxlZCgqdGhpcyk7CiB9CiAKLXN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAor
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVzRm9y
RE9NKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgVmVjdG9yPENv
b2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYpCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tp
ZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
VmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0
b3JhZ2UoKS5nZXRSYXdDb29raWVzKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCByYXdDb29raWVzKTsKIH0KQEAgLTE2NCw3ICsxNjQsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3IgV2ViS2l0IHRvIHVzZS4KIH0KIAotc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBj
b29raWVTdG9yYWdlKCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoKnRoaXMsIGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVD
b29raWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCAxZjc1
ODc3YTgyYi4uZjY2NDFlZmViNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5j
cHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVF
eGlzdHMoY29uc3QgR1NMaXN0KiBjb29raWVzLCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAog
ewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsK
QEAgLTQ0NCw3ICs0NDQsNyBAQCBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLWJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVT
RURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTE0
LDcgKzUxNCw3IEBAIHN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vz
c2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5n
Ojpmcm9tVVRGOChjb29raWVIZWFkZXIuZ2V0KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07
CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFS
QU0oZnJhbWVJRCk7CkBAIC01MjIsNyArNTIyLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIK
ICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIHVybCwgZmFsc2UsIGluY2x1ZGVT
ZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKaW5kZXggODc5YzBiMTllOTYuLmI2ODljM2UyNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3
MTYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3Rv
cmFnZUltbWVkaWF0ZWx5KCkKICAgICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlE
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VB
Y2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQz
LDcgKzc0Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhh
c1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJh
bWVEb21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJh
bWVEb21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgT3BlbmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWlu
KQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVy
RG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKQEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50
U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
KSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQp
IHsgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omdy
YW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFt
ZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4m
JiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1l
SUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9y
YWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJh
bWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFn
ZUlEIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93
T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZy
YW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNy4uYmZjMjMz
OTY4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNTdG9yYWdl
SWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgT3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJ
RCwgT3BlbmVyRG9tYWluJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBncmFuZGZhdGhlckRhdGFG
b3JEb21haW5zKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jikgb3ZlcnJpZGU7CiAK
QEAgLTkxLDkgKzkxLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYWxjdWxhdGVBbmRTdWJtaXRU
ZWxlbWV0cnkoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJh
bWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFt
ZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1N0YXR1cyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwg
Ym9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGxv
Z1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwpAQCAtMTUy
LDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2ln
bmVkIHJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhp
c0RvbWFpbih1bnNpZ25lZCBwcmltYXJ5RG9tYWluSUQsIFN0ZFNldDx1bnNpZ25lZD4mIG5vblBy
ZXZhbGVudFJlZGlyZWN0aW9uU291cmNlcywgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxs
cyk7CiAgICAgdm9pZCBzZXREb21haW5zQXNQcmV2YWxlbnQoU3RkU2V0PHVuc2lnbmVkPiYmKTsK
LSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRv
cEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJh
bWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3Rl
ZFRvUHJldmFsZW50KCk7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2
YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURh
dGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDBlZTdmOTYzODk0
Li5hNWYyNjI0ZTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiAgICAgICAgIG1f
cGVyc2lzdGVudFN0b3JhZ2UtPnNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6Rm9yY2VJbW1lZGlhdGVXcml0ZTo6WWVzKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VB
Y2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJ
RCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMjQs
NyArMjI0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHMKICAgICB9KTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yNjYsNyArMjY2LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBP
cGVuZXJQYWdlSUQgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBvcGVuZXJEb21haW4pCit2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWlu
JiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAg
LTI4Nyw3ICsyODcsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5JbgogICAgIGdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RG
TW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4m
JiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRgogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUo
c3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlE
LCBwcm9tcHRXYXNTaG93biwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50
ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwg
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFu
dFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBU
b3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9t
cHRXYXNTaG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuaAppbmRleCA0NGVmYmY0ZGVjMS4uNDVmN2UxYjc1OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmln
YXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNv
bnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJh
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1l
RG9tYWluJikgb3ZlcnJpZGU7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2ln
bmVkIHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFp
bihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21h
aW4+JiwgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVu
dChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVi
dWdNb2RlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3
Li5kNzc5OGIyNWQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtOTAsOCArOTAsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4g
PSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVu
ZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQ
YWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2lu
ZyBGcmFtZUlEID0gdWludDY0X3Q7CiAgICAgCiAgICAgdmlydHVhbCB+UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKCk7CkBAIC0xMTAsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzeW5jU3RvcmFnZUlmTmVlZGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jU3Rv
cmFnZUltbWVkaWF0ZWx5KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBh
Z2VJRCwgT3BlbmVyRG9tYWluJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CiAgICAgdm9p
ZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAK
ICAgICB2b2lkIGdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwpAQCAtMTYxLDkgKzE1OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGVi
dWdNb2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsgfTsKICAg
ICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJG
cmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1N0YXR1cyk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1N0YXR1cyk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ3JhbnRTdG9yYWdlQWNj
ZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYm
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmln
YXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9t
RG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXgg
ODcxYjE5ZDJmMDcuLjYyMjQzMGNkOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0
b3I8V2ViQ29yCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHN1
YkZyYW1lRG9tYWluICE9IHRvcEZyYW1lRG9tYWluKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwpAQCAtMjk4LDEyICsyOTgsMTIgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHMKICAg
ICB9KTsKIH0KIAotYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQpCitib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gbV9u
ZXR3b3JrU2Vzc2lvbiA/IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigp
Lmhhc1N0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCkgOiBmYWxzZTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBj
YWxsYmFjaykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zMTUsNyAr
MzE1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFIKICAgICBjYWxsYmFjayhmYWxzZSk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KHN1YkZyYW1lRG9tYWluID09IHRvcEZyYW1lRG9tYWluKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bjo6Tm8pOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFJlZ2lzdHJhYmxlRG9t
YWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgUmVn
aXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFJlZ2lzdHJhYmxlCiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0
b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICBwb3N0VGFzayhbdGhpcywgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5p
c29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENv
cHkoKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTM5Niw3ICszOTYs
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJgogICAgIH0pOwogfQogCi1TdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlEKQorU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKIHsKICAgICBib29sIGlzU3RvcmFnZUdyYW50ZWQgPSBmYWxzZTsKIApAQCAtNDA5LDcgKzQw
OSw3IEBAIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0CiAgICAgcmV0dXJuIGlzU3RvcmFnZUdyYW50
ZWQgPyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzIDogU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQ6Ok5vOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdy
YW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5k
bGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKaW5kZXggODc1OWQ2MDE2NmEuLjc5Y2YyNDYwMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04Miw4
ICs4Myw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVp
bnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQg
PSB1aW50NjRfdDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93biA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEwNCw3
ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwogCkBA
IC0xMTgsMTEgKzExNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlv
bihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFU
b1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0
cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBi
b29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lk
IHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGxv
Z1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VB
Y2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNz
SGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0
aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxs
VXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBWZWN0
b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+Jik7Ci0gICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxIYXNT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CiAKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlQ
YWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVz
b3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsKIAog
ICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBP
cGVuZXJEb21haW4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYs
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5NzE4
MzZhZGEuLjRkM2QxNjlmNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogICAgICAgICBTdHJpbmcgcmVmZXJyZXI7CiAgICAgICAgIFN0cmluZyB1c2Vy
QWdlbnQ7CiAgICAgICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRDsKLSAgICAgICAgdWludDY0
X3QgcGFnZUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAg
ICAgIHVpbnQ2NF90IGZyYW1lSUQ7CiAgICAgICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDNkNzFmOGY2YjFiLi45MmM4YjdhZTQ0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVy
CiAgICAgQVNTRVJUKCFtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRpZmll
cikpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYWdlTG9hZENv
bXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCiB7CiAg
ICAgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZSh3ZWJQYWdlSUQpOwogfQpA
QCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3NpCiAgICAgbG9hZGVyLT5j
b252ZXJ0VG9Eb3dubG9hZChkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJp
bmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihu
ZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOwogICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwpAQCAtNTI1LDcgKzUyNSw3
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
aW5nKQogewogICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CkBAIC01NDIsMTMgKzU0MiwxMyBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VTZXNzaW9uKG5ldHdv
cmtQcm9jZXNzKCksIHNlc3Npb25JRCkuY29va2llc0VuYWJsZWQoKSk7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcs
IGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byByZXN1bHQgPSBzdG9yYWdlU2Vzc2lvbihuZXR3
b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZp
cnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1
cmVDb29raWVzKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5maXJzdCks
IHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiByZXN1bHQ7CiAgICAg
c3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5nZXRSYXdDb29raWVz
KGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlc3VsdCk7
CkBAIC02MzgsMTMgKzYzOCwxMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIH0KIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+cmVtb3ZlU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKGZyYW1lSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0
YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQ
cm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Np
b24tPmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MocGFnZUlE
KTsKQEAgLTY5Nyw3ICs2OTcsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZQogICAgIH0KIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoYXV0byBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKQEAgLTcwOSw3ICs3
MDksNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHRy
dWUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVk
LCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0
d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkgewpAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQ6OlllcywgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFn
ZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlE
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBpZiAo
YXV0byBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCkBAIC03NDUsNyArNzQ1LDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RzKCkKICAgICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RzKCk7CiB9CiAKLU9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKHVpbnQ2NF90IHBh
Z2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29sIGlzTWFpblJlc291
cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQorT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tp
bmdSZXNvdXJjZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklE
JiBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtODE0LDcgKzgxNCw3IEBAIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZygpCiAg
ICAgbV9uZXR3b3JrQWN0aXZpdHlUcmFja2Vycy5jbGVhcigpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0ZvclBhZ2UoUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogICAgIGZvciAoYXV0byYgYWN0aXZpdHlUcmFja2VyIDogbV9uZXR3b3JrQWN0aXZp
dHlUcmFja2VycykgewogICAgICAgICBpZiAoYWN0aXZpdHlUcmFja2VyLnBhZ2VJRCA9PSBwYWdl
SUQpCkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZSh1aW50NjQKICAgICB9KTsK
IH0KIAotc2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kUm9vdE5ldHdv
cmtBY3Rpdml0eSh1aW50NjRfdCBwYWdlSUQpCitzaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmZpbmRSb290TmV0d29ya0FjdGl2aXR5KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICByZXR1cm4gbV9uZXR3b3JrQWN0aXZpdHlUcmFja2Vycy5maW5kTWF0Y2hpbmcoWyZd
KGNvbnN0IGF1dG8mIGl0ZW0pIHsKICAgICAgICAgcmV0dXJuIGl0ZW0uaXNSb290QWN0aXZpdHkg
JiYgaXRlbS5wYWdlSUQgPT0gcGFnZUlEOwpAQCAtOTAzLDE3ICs5MDMsMTcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJDb25uZWN0aW9uSGFzVXBsb2FkcygpCiAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzc1Bvb2w6OkNsZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMobV93ZWJQcm9j
ZXNzSWRlbnRpZmllciksIDApOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQogewogICAg
IG1fbmV0d29ya1Byb2Nlc3MtPndlYlBhZ2VXYXNBZGRlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNl
c3Npb25JRCwgcGFnZUlELCBvbGRQYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ondl
YlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlEKQogewogICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlBhZ2VXYXNSZW1vdmVkKG1fY29u
bmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9u
SUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcykKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6
OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxQYWdlSWRlbnRpZmllcj4mIHBh
Z2VzKQogewogICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZCht
X2Nvbm5lY3Rpb24uZ2V0KCksIG5ld1Nlc3Npb25JRCwgcGFnZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCmluZGV4IGNiYzdiYmZlOGY1Li4wNmQ1Nzk2ODgyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxv
YWRNYXAuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CkBAIC0xMzMsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBtX25ldHdv
cmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBP
cHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2Fk
KHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29s
IGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlvbmFsPE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBp
c01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0b3BUcmFj
a2luZ1Jlc291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIE5ldHdv
cmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldENvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVhckNvbm5l
Y3Rpb25IYXNVcGxvYWRzKCk7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQgd2Vi
UGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgdm9p
ZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQo
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBvbGRQYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNz
aW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NTZXNz
aW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CkBAIC0xNzAsMTYgKzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJlY29u
bmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3
ZWJQYWdlSUQpOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9h
ZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnREb3du
bG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lkIGNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qg
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAg
IHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmlu
ZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNv
b2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmlu
ZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0Fj
Y2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsK
KyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2Vk
KT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYp
OwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAgcHJpdmF0
ZToKICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0
aW9uKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQg
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9y
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsK
KyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBsb2dX
ZWJTb2NrZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdh
bGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAgICAg
dm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0
RG9tYWluKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBh
Z2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAgIHZv
aWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bik+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6
OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2b2lk
IGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIzOSwyOSAr
MjQwLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tl
cigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKGNv
bnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAgICAgICAg
UmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlciYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tl
cih1aW50NjRfdCBwYWdlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tl
cihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBhZ2VJRCB7
IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAgICAgICAg
ICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpM
b2FkUGFnZSB9CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlTmV0d29y
a0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIg
cmVzb3VyY2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJj
ZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAgLCByZXNv
dXJjZUlEIHsgcmVzb3VyY2VJRCB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICB1aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAgIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciByZXNvdXJjZUlEIHsgMCB9OwogICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsgZmFsc2Ug
fTsKICAgICAgICAgTmV0d29ya0FjdGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7CiAgICAg
fTsKIAogICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0gICAgdm9p
ZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7
Ci0gICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCk7Cisg
ICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKKyAgICBzaXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tl
cihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxFKEFQUExF
X1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCBmN2M5N2VlYmIyMS4uODMzZTc0ZmNmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjYsMTggKzI2LDE4IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQZXJmb3Jt
U3luY2hyb25vdXNMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVz
b3VyY2VMb2FkUGFyYW1ldGVycykgLT4gKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiBkYXRhKSBTeW5j
aHJvbm91cwogICAgIExvYWRQaW5nKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVycykKICAgICBSZW1vdmVMb2FkSWRlbnRpZmllcih1aW50
NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKQotICAgIFBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2
NF90IHdlYlBhZ2VJRCkKKyAgICBQYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQpCiAgICAgUHJlZmV0Y2hETlMoU3RyaW5nIGhvc3RuYW1lKQogICAgIFBy
ZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycyk7CiAKICAgICBTdGFydERv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVk
TmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0
OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRP
TShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBT
ZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5
LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFN0cmlu
ZyBjb29raWVTdHJpbmcpCisgICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKKyAgICBTZXRDb29raWVz
RnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFN0cmluZyBjb29raWVTdHJpbmcpCiAgICAgQ29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoYm9vbCBlbmFibGVkKSBTeW5jaHJvbm91cwotICAgIENvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFy
dHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBV
UkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8s
IFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlEKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMK
KyAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKKyAgICBHZXRSYXdDb29r
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4g
KFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRl
Q29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5h
bWUpCiAKICAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250
ZW50VHlwZSkKQEAgLTU2LDE2ICs1NiwxNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRW5zdXJlTGVnYWN5UHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgQ2xlYXJQYWdlU3BlY2lm
aWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgUmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlEKTsKKyAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEKTsKICAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAgICAgTG9nV2ViU29ja2V0
TG9hZGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRhcmdldERvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21h
aW4sIFdhbGxUaW1lIGxhc3RTZWVuKQogICAgIExvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFp
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxh
c3RTZWVuKQogICAgIExvZ1N1YnJlc291cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzb3VyY2VEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbikKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGlj
cykKLSAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQp
IC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBz
dWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwotICAgIFJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVp
bnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9t
YWluKQorICAgIEhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKKyAgICBS
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
IHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3Bl
bmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCiAjZW5k
aWYKIAogICAgIEFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmln
aW4sIFN0cmluZyBkZXN0aW5hdGlvblByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTg3LDcgKzg3LDcgQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAg
ICAgU2V0V2ViUHJvY2Vzc0lkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJv
Y2Vzc0lkZW50aWZpZXIpCiAKLSAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCkKLSAgICBXZWJQYWdl
V2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKLSAg
ICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBW
ZWN0b3I8dWludDY0X3Q+IHBhZ2VzKQorICAgIFdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgb2xkUGFnZUlEKQorICAgIFdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQorICAgIFdlYlBy
b2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIFZlY3RvcjxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZXMpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggZDE0YjFkZTlkOTEu
LjQwOTcxNGQ2NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1NhbWVPcmlnaW4oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCiAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzRGF0YSgpIHx8IHVybC5wcm90b2NvbElzQmxv
YigpIHx8ICFvcmlnaW4gfHwgb3JpZ2luLT5jYW5SZXF1ZXN0KHVybCk7CiB9CiAKLU5ldHdvcmtM
b2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIEhUVFBIZWFkZXJNYXAmJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBVUkwmJiB1cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBzb3Vy
Y2VPcmlnaW4sIFByZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVy
cmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKK05ldHdvcmtMb2Fk
Q2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cywgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIEhUVFBIZWFkZXJNYXAmJiBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzLCBVUkwmJiB1cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBz
b3VyY2VPcmlnaW4sIFByZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJl
ZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKICAgICA6IG1f
b3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQog
ICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCmluZGV4IDMxZDExYzNhOGFl
Li41N2RmMWRhNDY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hl
Y2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKIHB1Ymxp
YzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwgT3RoZXIgfTsK
IAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJy
ZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hvdWxkQ2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlw
ZSA9IExvYWRUeXBlOjpPdGhlcik7CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9j
ZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYm
LCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVm
bGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxl
ZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZh
bHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOwogICAgIH5O
ZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRyaXBsZXQgewpA
QCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNlc3Npb25JRCBt
X3Nlc3Npb25JRDsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7Ci0g
ICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdl
SUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAg
bV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgogICAg
IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQg
Zm9yIENPUlMgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggODk2Mzk5ZDEzMzIuLjg5NzMwY2Y5ZmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJh
bWV0ZXJzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtBY3Rpdml0eVRy
YWNrZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZGVyT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMzgsNyArMzksNyBAQCBlbnVtIGNsYXNz
IFByZWNvbm5lY3RPbmx5IHsgTm8sIFllcyB9OwogCiBjbGFzcyBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMgewogcHVibGljOgotICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQ7CiAgICAgdWludDY0X3Qgd2ViRnJhbWVJRCB7IDAg
fTsKICAgICBXVEY6OlByb2Nlc3NJRCBwYXJlbnRQSUQgeyAwIH07CiAgICAgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEIHsgUEFMOjpTZXNzaW9uSUQ6OmVtcHR5U2Vzc2lvbklEKCkgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYTVk
NmY1Y2ZjYzcuLjI5ZDE3Zjk5ZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTE1NSw3ICsxMTU1LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JRCBzZXMKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbihmcm9tRG9tYWluLCB0b0RvbWFpbiwgcGFnZUlEKTsKQEAgLTE5NTQsNyAr
MTk1NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRl
Rm9yV2ViU29ja2V0KGJvb2wgYWxsb3dzLCBDb21wbGV0CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0
X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjps
b2dEaWFnbm9zdGljTWVzc2FnZShQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3Vs
ZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dB
ZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NjIsNyAr
MTk2Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2
NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3Rp
Y01lc3NhZ2Uod2ViUGFnZUlELCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlOjpO
byksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSByZXN1bHQs
IFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFn
bm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIERpYWdub3N0aWNMb2dn
aW5nUmVzdWx0VHlwZSByZXN1bHQsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAg
aWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91
bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47CkBAIC0xOTcwLDcgKzE5NzAsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2Vi
UGFnZUlELCBjb25zdCBTdAogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1bHQsIFNob3VsZFNhbXBsZTo6
Tm8pLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoVmFsdWUodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRG
aWd1cmVzLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2
YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBTaG91bGRTYW1wbGUgc2hvdWxkU2Ft
cGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVy
U2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYxOSw3ICsyNjE5
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVz
b3VyY2VMb2FkZXImIGxvYWRlcikKICAgICAgICAgc2Vzc2lvbi0+cmVtb3ZlS2VwdEFsaXZlTG9h
ZChsb2FkZXIpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2Vi
UGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJ
RCkKIHsKICAgICBpZiAoIXBhZ2VJRCB8fCAhb2xkUGFnZUlEKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ2Fubm90IGFkZCBwYWdlIHdpdGggaW52YWxpZCBpZCIpOwpAQCAtMjYzOCwxMyArMjYzOCwx
MyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRAogICAgICAgICByZXR1cm4gc2Vzc2lvbklEOwog
ICAgIH0pOwogCi0gICAgc3RvcmFnZU1hbmFnZXIuY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UocGFnZUlELCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIHN0
b3JhZ2VNYW5hZ2VyLmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24o
cGFnZUlELCBjb25uZWN0aW9uKTsKKyAgICBzdG9yYWdlTWFuYWdlci5jcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShwYWdlSUQudG9VSW50NjQoKSwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKTsKKyAgICBzdG9yYWdlTWFuYWdlci5hZGRBbGxvd2VkU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKICAg
ICBpZiAocGFnZUlEICE9IG9sZFBhZ2VJRCkKLSAgICAgICAgc3RvcmFnZU1hbmFnZXIuY2xvbmVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShvbGRQYWdlSUQsIHBhZ2VJRCk7CisgICAgICAgIHN0b3Jh
Z2VNYW5hZ2VyLmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uob2xkUGFnZUlELnRvVUludDY0
KCksIHBhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFn
ZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VX
YXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFwYWdlSUQpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgcmVtb3ZlIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBA
IC0yNjU3LDggKzI2NTcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3Zl
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbgogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvJiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2Vy
KCk7Ci0gICAgc3RvcmFnZU1hbmFnZXIucmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlQ29ubmVjdGlvbihwYWdlSUQsIGNvbm5lY3Rpb24pOwotICAgIHN0b3JhZ2VNYW5hZ2VyLmRl
c3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQpOworICAgIHN0b3JhZ2VNYW5hZ2Vy
LnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELnRv
VUludDY0KCksIGNvbm5lY3Rpb24pOworICAgIHN0b3JhZ2VNYW5hZ2VyLmRlc3Ryb3lTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShwYWdlSUQudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OndlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQpAQCAtMjY3NCw3ICsyNjc0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vz
c1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKS0+c3RvcmFnZU1hbmFnZXIoKS5wcm9jZXNzRGlkQ2xvc2VDb25u
ZWN0aW9uKGNvbm5lY3Rpb24pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNz
U2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25J
RCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VJRHMpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxQYWdl
SWRlbnRpZmllcj4mIHBhZ2VJRHMpCiB7CiAgICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0
aW9uLnVuaXF1ZUlEKCk7CiAgICAgQVNTRVJUKG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5jb250YWlu
cyhjb25uZWN0aW9uSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCA3YWNiM2Y5Njc1Yy4uZWJmM2I3ZmU2NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTQxLDYgKzQxLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCU2VydmVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KQEAgLTEzNiw4ICsxMzcsNiBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsK
LSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0
X3Q7CiAKICAgICBOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzJiYpOwpAQCAtMTkwLDkgKzE4OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3Vt
ZSgpOwogCiAgICAgLy8gRGlhZ25vc3RpYyBtZXNzYWdlcyBsb2dnaW5nLgotICAgIHZvaWQgbG9n
RGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0g
ICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2ViUGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsK
LSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3Vi
bGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRU
eXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWdu
aWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0
YSgpIGNvbnN0OwpAQCAtMjU4LDcgKzI1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0
aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
Ym9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRX
aXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNvbW1pdHRl
ZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNl
bmRpZgpAQCAtMjcxLDEwICsyNzAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Vzc2lvbklz
Q29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCwgYm9vbCk7CiAgICAgYm9vbCBz
ZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKIAot
ICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCk7Ci0gICAgdm9pZCB3ZWJQYWdl
V2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vz
c2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCB3ZWJQcm9jZXNzV2Fz
RGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+Jik7CisgICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25u
ZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4mKTsKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQ5ZmVlMDc4ZmU3Li5mNWVmNTMwMTM0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC0xMzEsNyArMTMxLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdGVkVG9Eb21haW4pIC0+
ICgpIEFzeW5jCiAgICAgU2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVkaXJlY3RlZEZyb21Eb21haW4pIC0+ICgpIEFz
eW5jCiAgICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0gICAgQ29tbWl0dGVkQ3Jvc3NTaXRlTG9h
ZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIGZyb21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRv
RG9tYWluLCB1aW50NjRfdCBwYWdlSUQpIC0+ICgpIEFzeW5jCisgICAgQ29tbWl0dGVkQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZyb21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRvRG9tYWluLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+ICgpIEFzeW5j
CiAgICAgU2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWlu
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbikgLT4gKCkgQXN5bmMKICAgICBS
ZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgRGVsZXRlQ29va2llc0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW4sIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcykgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAKaW5kZXggNThhYWNiOTkzZGIuLjMzY2RjNGQxN2RiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTA3LDggKzEwNywxMSBAQCBib29sIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3Jr
UmVzb3VyYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53ZWJQ
YWdlSUQpKQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSUQ7CisgICAgZGVj
b2RlciA+PiB3ZWJQYWdlSUQ7CisgICAgaWYgKCF3ZWJQYWdlSUQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXN1bHQud2ViUGFnZUlEID0gKndlYlBhZ2VJRDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LndlYkZyYW1lSUQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggZmUyNjUzNmYyMWMuLmY0Y2JhZTJkYWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xNzQsMTggKzE3NCwxOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQog
ICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3Jp
Z2luYWxSZXF1ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAg
ICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwKICAgICAgICAgICAgICAgICBbdGhpc10gKFJlc291
cmNlRXJyb3ImIGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0YXJ0OiBlcnJvciBjaGVja2luZyAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkLCBlcnJvci5kb21haW4g
PSAle3B1YmxpY31zLCBlcnJvci5jb2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5p
c01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJl
bnRQSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IGVycm9y
IGNoZWNraW5nIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25v
dXMgPSAlZCwgcGFyZW50UElEID0gJWQsIGVycm9yLmRvbWFpbiA9ICV7cHVibGljfXMsIGVycm9y
LmNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVz
b3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElELCBl
cnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMtPmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKICAgICAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoTmV0d29ya0xvYWRDaGVja2VyOjpSZWRpcmVjdGlv
blRyaXBsZXQmIHRyaXBsZXQpIHsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+bV9pc1dhaXRp
bmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgdGhpcy0+d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRy
aXBsZXQucmVxdWVzdCksIFdURk1vdmUodHJpcGxldC5yZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3Zl
KHRyaXBsZXQucmVkaXJlY3RSZXNwb25zZSkpOwotICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJzdGFydDogc3ludGhldGljIHJlZGlyZWN0IHNlbnQgYmVjYXVzZSBy
ZXF1ZXN0IFVSTCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAl
ZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0
ZXJzLnBhcmVudFBJRCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInN0YXJ0OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2VudCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdh
cyBtb2RpZmllZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0
aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVy
cy5wYXJlbnRQSUQpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgW3RoaXNd
IChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRo
aXMtPmNhblVzZUNhY2hlKHJlcXVlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFy
ZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0
aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNh
Y2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFy
YW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+cmV0cmll
dmVDYWNoZUVudHJ5KHJlcXVlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGF0IGNv
ZGUgcGF0aCBvbmNlIG1fbmV0d29ya0xvYWRDaGVja2VyIGlzIHVzZWQgZm9yIGFsbCBuZXR3b3Jr
IGxvYWRzLgogICAgIGlmIChjYW5Vc2VDYWNoZShvcmlnaW5hbFJlcXVlc3QoKSkpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNv
dXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwg
aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVu
dFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICByZXRy
aWV2ZUNhY2hlRW50cnkob3JpZ2luYWxSZXF1ZXN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMjI3LDEzICsyMjcsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJp
ZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIGxv
YWRlci0+bG9nU2xvd0NhY2hlUmV0cmlldmVJZk5lZWRlZChpbmZvKTsKIAogICAgICAgICBpZiAo
IWVudHJ5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNh
Y2hlRW50cnk6IFJlc291cmNlIG5vdCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNv
dXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5S
ZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkp
OwogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVxdWVzdCks
IEZpcnN0TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChlbnRyeS0+aGFzUmVh
Y2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJl
dmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAl
ZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2Uo
KSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291
cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJv
bm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2Fw
VmFsaWRhdGlvbiA9IFdURk1vdmUoZW50cnkpOwogICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJldmFsaWRhdGlvblJlcXVlc3QgPSBvcmlnaW5hbFJlcXVlc3QoKTsKICAgICAgICAgICAgIGxv
YWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBGaXJz
dExvYWQ6Olllcyk7CkBAIC0yNDEsMjEgKzI0MSwyMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
ICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGlmIChlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkp
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRy
eTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwg
aXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwg
aXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJl
dHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWlu
UmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAg
bG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShlbnRyeSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChsb2FkZXItPm1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAh
ZW50cnktPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBub3Qg
aGF2ZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9
ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJj
ZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNl
cnRpZmljYXRlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25v
dXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwg
aXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChX
VEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSB8fCByZXF1ZXN0
LmNhY2hlUG9saWN5KCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJl
ZnJlc2hBbnlDYWNoZURhdGEpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InJldHJpZXZlQ2FjaGVFbnRyeTogVmFsaWRhdGluZyBjYWNoZSBlbnRyeSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hl
IGVudHJ5IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNT
eW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdU
Rk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJldHJpZXZlZCByZXNv
dXJjZSBmcm9tIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3lu
Y2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2Fj
aGVFbnRyeTogUmV0cmlldmVkIHJlc291cmNlIGZyb20gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNN
YWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICBs
b2FkZXItPmRpZFJldHJpZXZlQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgfSk7CiB9
CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZl
Q2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGaXJzdExvYWQgbG9hZCkKIHsKICAgICBpZiAobG9hZCA9PSBGaXJzdExvYWQ6Olllcykgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAKICAgICAg
ICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBGaXJzdExvYQogICAgIH0KICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKSB7CiAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdp
dGggYSBzZXNzaW9uIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCBwYXJh
bWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3
b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFt
ZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vz
c2lvbklELnNlc3Npb25JRCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RCgic3RhcnROZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdp
dGggYSBzZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklE
PSUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNl
c3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nl
c3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lvbklES2V5KCksIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZTo6Tm8pOwogICAgICAgICBkaWRGYWlsTG9hZGluZyhpbnRlcm5hbEVycm9yKHJlcXVl
c3QudXJsKCkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIEZpcnN0TG9hCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KTsKICAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRo
aXMsICZtX2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAq
bmV0d29ya1Nlc3Npb24pOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3
b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQpAQCAt
MzIyLDcgKzMyMiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRS
ZXN1bHQgcmVzdWx0KQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93
bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIFJFTEVBU0VfTE9H
KExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9h
ZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJ
RCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9w
YXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0
aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRl
cnMuaWRlbnRpZmllcik7CiAgICAgCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSByZXNv
dXJjZSBjYW1lIGZyb20gdGhlIGRpc2sgY2FjaGUuCiAgICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7
CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiYWJvcnQ6IENhbmNlbGluZyByZXNvdXJjZSBsb2FkIChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAg
ICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIpOwogCiAgICAgaWYgKG1fcGFyYW1ldGVycy5vcHRpb25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3Bv
bnNlLmlzTnVsbCgpICYmICFtX2lzS2VwdEFsaXZlKSB7CiAgICAgICAgIG1faXNLZXB0QWxpdmUg
PSB0cnVlOwpAQCAtMzg0LDEyICszODQsMTIgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgeEYKICAg
ICB9CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zQ29uZmxpY3Q6IHsKICAgICAgICAgU3RyaW5nIGVy
cm9yTWVzc2FnZSA9ICJNdWx0aXBsZSAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXJzIHdpdGggY29u
ZmxpY3RpbmcgdmFsdWVzICgnIiArIHhGcmFtZU9wdGlvbnMgKyAiJykgZW5jb3VudGVyZWQgd2hl
biBsb2FkaW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicu
IEZhbGxpbmcgYmFjayB0byAnREVOWScuIjsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIo
KSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZp
ZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zSW52YWxpZDogewogICAgICAg
ICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIkludmFsaWQgJ1gtRnJhbWUtT3B0aW9ucycgaGVhZGVy
IGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgoKSArICInOiAnIiArIHhGcmFtZU9wdGlvbnMgKyAiJyBpcyBub3QgYSByZWNvZ25p
emVkIGRpcmVjdGl2ZS4gVGhlIGhlYWRlciB3aWxsIGJlIGlnbm9yZWQuIjsKLSAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1l
c3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJv
ck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0
KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIH0KQEAgLTQxNiw3ICs0MTYs
NyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNT
UEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwogICAgICAgICBTdHJpbmcgeEZyYW1lT3B0aW9u
cyA9IG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpYRnJhbWVPcHRp
b25zKTsKICAgICAgICAgaWYgKCF4RnJhbWVPcHRpb25zLmlzTnVsbCgpICYmIHNob3VsZEludGVy
cnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKHhGcmFtZU9wdGlvbnMsIHJlc3BvbnNlLnVybCgpKSkg
ewogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGRpc3BsYXkg
JyIgKyByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICIn
IGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyB4RnJh
bWVPcHRpb25zICsgIicuIjsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNl
OjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVy
KCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAg
TWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2Fn
ZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTQyNSw3ICs0MjUs
NyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNT
UEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNl
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBodHRwU3RhdHVzQ29kZSA9ICVkLCBsZW5ndGggPSAlIiBQUklkNjQgIikiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBodHRwU3RhdHVzQ29kZSA9ICVkLCBs
ZW5ndGggPSAlIiBQUklkNjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcmVjZWl2
ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpKTsKIAogICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlY2VpdmVkUmVzcG9u
c2UpOwogCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1f
bnVtQnl0ZXNSZWNlaXZlZCkKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVj
ZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVC
dWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllcik7CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+c2l6
ZSgpOwogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKQEAgLTUzNCw3
ICs1MzQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hM
b2FkaW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGggPSAlemQpIiwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBt
X251bUJ5dGVzUmVjZWl2ZWQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlz
aExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllciwgbV9udW1CeXRlc1JlY2VpdmVkKTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5hZGROZXR3
b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyhpZGVudGlmaWVyKCksIG5ldHdvcmtMb2FkTWV0cmlj
cyk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxMb2FkaW5nOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgaXNBY2Nl
c3NDb250cm9sID0gJWQsIGVyckNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGVycm9yLmlz
VGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5pc0FjY2Vzc0NvbnRyb2wo
KSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZh
aWxMb2FkaW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24g
PSAlZCwgaXNBY2Nlc3NDb250cm9sID0gJWQsIGVyckNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRl
cnMuaWRlbnRpZmllciwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCks
IGVycm9yLmlzQWNjZXNzQ29udHJvbCgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBpZiAo
c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpCiAgICAgICAgIG1fY29ubmVj
dGlvbi0+cmVtb3ZlTmV0d29ya0xvYWRJbmZvcm1hdGlvbihpZGVudGlmaWVyKCkpOwpAQCAtNzMx
LDcgKzczMSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVdpbGxTZW5kUmVxdWVzdDogKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyKTsKIAogICAgIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMgPSBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsKIApAQCAtOTg4LDYgKzk4OCwx
MSBAQCBzdGF0aWMgU3RyaW5nIGVzY2FwZUlERm9ySlNPTihjb25zdCBPcHRpb25hbDx1aW50NjRf
dD4mIHZhbHVlKQogICAgIHJldHVybiB2YWx1ZSA/IFN0cmluZzo6bnVtYmVyKHZhbHVlLnZhbHVl
KCkpIDogU3RyaW5nKCJOb25lIl9zKTsKIH07CiAKK3N0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JK
U09OKGNvbnN0IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYgdmFsdWUpCit7CisgICAgcmV0dXJu
IHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUtPnRvVUludDY0KCkpIDogU3RyaW5nKCJOb25l
Il9zKTsKK307CisKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1h
dGlvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKG1f
Y29ubmVjdGlvbiwgc2Vzc2lvbklEKCkpKTsKQEAgLTk5OCw3ICsxMDAzLDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKICAgICBsb2dD
b29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZv
OjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3Jp
Z2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50
aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3N0YXRpYyB2
b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2Vk
T2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBP
cHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApAQCAtMTAyNSw3ICsxMDMwLDcgQEAgc3Rh
dGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBjb25uZWN0aW8KICN1bmRlZiBMT0NBTF9MT0dfSUZfQUxMT1dFRAogfQogCi1z
dGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lk
KiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9n
Q29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0
LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3
b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApAQCAtMTA4Niw3ICsxMDkxLDcgQEAg
c3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGkKICN1bmRlZiBMT0NBTF9MT0dfSUZfQUxMT1dFRAogfQog
Ci12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWws
IGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVj
dCwgY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9u
KGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0x
MDk5LDE3ICsxMTA0LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJ
bmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYKIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNv
dXJjZSwgTWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsb25nKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVN
ZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNlLCBtZXNzYWdl
TGV2ZWwsIG1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCAgbWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCBp
ZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQoVVJMJiYg
cmVwb3J0VVJMLCBSZWY8Rm9ybURhdGE+JiYgcmVwb3J0KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNlbmRDU1BWaW9sYXRpb25SZXBvcnQgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgV1RGTW92ZShyZXBvcnRVUkwpLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgV1RGTW92ZShy
ZXBvcnQpIH0gfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2VuZENTUFZpb2xhdGlvblJlcG9ydCB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBXVEZNb3ZlKHJlcG9ydFVSTCksIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZNb3ZlKHJl
cG9ydCkgfSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogfQogCiB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZl
bnQoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCYmIGV2ZW50SW5p
dCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbnF1ZXVlU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudCB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBXVEZNb3ZlKGV2ZW50SW5p
dCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQgeyBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgV1RGTW92ZShldmVudEluaXQpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dTbG93Q2FjaGVS
ZXRyaWV2ZUlmTmVlZGVkKGNvbnN0IE5ldHdvcmtDYWNoZTo6Q2FjaGU6OlJldHJpZXZlSW5mbyYg
aW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCmluZGV4IGE4YTMwMDVjMTQyLi5hOGY2ZDMxNTc5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBA
IC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuc2Vzc2lvbklEOyB9CiAgICAgUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXI7IH0KICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQ7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMud2ViUGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRDsgfQogCiAgICAgc3Ry
dWN0IFN5bmNocm9ub3VzTG9hZERhdGE7CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBzdGF0aWMgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3Rh
dGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBs
b2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIHZvaWQg
ZGlzYWJsZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzQ2FwdHVyZSgpIHsgbV9zaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggYzdmMzg2YjNkN2MuLjhi
YmMxNjk3ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVF
bnRyeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJTaGFy
ZWFibGVSZXNvdXJjZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC04NCw3ICs4NSw3
IEBAIGVudW0gY2xhc3MgVXNlRGVjaXNpb24gewogICAgIE5vRHVlVG9FeHBpcmVkUmVkaXJlY3QK
IH07CiAKLXVzaW5nIEdsb2JhbEZyYW1lSUQgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyp3ZWJQYWdl
SUQqLywgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+OwordXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0
ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+
OwogCiBjbGFzcyBDYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlPiB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmgKaW5kZXggOTY1YzZmYTY2NGIuLjJkZDBlN2Q0NmJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CiBj
bGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sg
ewogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24s
IE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNv
cmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNv
bnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBi
b29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RP
bmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZp
Z2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlU
cmFja2VyKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwgY2xpZW50LCBy
ZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRD
b250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwgZGF0YVRhc2tJ
c0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpKTsKICAgICB9
CkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3M7
IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSUQ7IH07
Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH07CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7
IH07CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRh
VGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5n
U25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29u
dGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25u
ZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8
TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOwogCiAgICAgYm9vbCB0cnlQYXNzd29yZEJhc2VkQXV0
aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTbmlmZmluZ1BvbGljaWVz
QW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9fc3Ryb25nIE5TVVJMUmVxdWVzdCom
LCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlm
Zik7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lv
bkRhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0
d29ya0xvYWRNZXRyaWNzOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKLSAgICB1aW50NjRfdCBt
X3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYm9vbCBtX2hhc0JlZW5TZXRUb1Vz
ZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5k
ZXggMzVlNDQzYjllZTkuLjI4YTA1ZTgwZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTE2
MCw3ICsxNjAsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVUYXNrV2l0aEZpcnN0UGFydHlGb3JTYW1l
U2l0ZUNvb2tpZXMoTlNVUkxTZXNzaW9uRGF0YVRhc2sqIHRhcwogI2VuZGlmCiB9CiAKLU5ldHdv
cmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vz
c2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNr
ZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29y
a0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRo
Q3JlZGVudGlhbHMsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYs
IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNv
ZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qs
IFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JN
YWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3
b3JrQWN0aXZpdHlUcmFja2VyKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVu
dCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uKQogICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX3BhZ2VJRChw
YWdlSUQpCkBAIC0yMzYsNyArMjM2LDcgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtE
YXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICBp
ZiAoc2hvdWxkQmxvY2tDb29raWVzKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
ICAgIGlmIChtX3Nlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywg
IiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQg
PSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiBCbG9ja2luZyBjb29raWVzIGZv
ciBVUkwgJXMiLCB0aGlzLCBwYWdlSUQsIGZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sg
dGFza0lkZW50aWZpZXJdLCBuc1JlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcp
OworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlv
bjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogQmxvY2tpbmcg
Y29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsICh1
bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBuc1JlcXVlc3QuVVJMLmFic29s
dXRlU3RyaW5nLlVURjhTdHJpbmcpOwogI2Vsc2UKICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9u
LCAiJWxsdSBCbG9ja2luZyBjb29raWVzIGZvciBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlm
aWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbmRpZgpA
QCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgYm9vbCBzaG91
bGRCbG9ja0Nvb2tpZXMgPSBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzIHx8IG1f
c2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkuc2hvdWxkQmxvY2tDb29raWVzKHJlcXVl
c3QsIG1fZnJhbWVJRCwgbV9wYWdlSUQpOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IGlmIChtX3Nlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgIFJF
TEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tp
ZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1
OiAlcyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRCwgbV9mcmFt
ZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2Nr
Q29va2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAl
bGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiAlcyBjb29raWVzIGZvciByZWRpcmVj
dCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25l
ZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCAoc2hvdWxkQmxvY2tDb29raWVzID8gIkJs
b2NraW5nIiA6ICJOb3QgYmxvY2tpbmciKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICNlbHNlCiAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSAlcyBjb29raWVz
IGZvciByZWRpcmVjdCBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJs
b2NrQ29va2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJgogICAgIGlmICghc2hvdWxkQmxvY2tDb29raWVzKSB7CiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIGlmIChtX3Nlc3Npb24tPnNob3VsZExvZ0Nv
b2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0g
JWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogTm90IHBhcnRpdGlvbmluZyBjb29r
aWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRCwgbV9mcmFtZUlELCAodW5z
aWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAl
bGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiBOb3QgcGFydGl0aW9uaW5nIGNvb2tp
ZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIsIHRoaXMsIG1fcGFnZUlELnRvVUludDY0KCksIG1fZnJh
bWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgICAgICBMT0coTmV0d29ya1Nl
c3Npb24sICIlbGx1IE5vdCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVz
IiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5k
ZXIuaAppbmRleCBkNWY5ODFlNDUzNC4uZjg2NDU0ZGRhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTM0LDkgKzM0LDkgQEAgY2xhc3MgTWVzc2Fn
ZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVzc2FnZVNlbmRlcigpOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9wdGlvblNldDxT
ZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzZW5k
KG1lc3NhZ2UsIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCksIHsgfSk7CisgICAgICAgIHJl
dHVybiBzZW5kKG1lc3NhZ2UsIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCksIHNlbmRPcHRp
b25zKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmQoY29uc3Qg
VSYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+
IHNlbmRPcHRpb25zID0geyB9KQpAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25z
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgot
ICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFyZ3MuLi4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEM+CisgICAgdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3Nh
Z2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNTI1MTQ5MDJh
YmIuLjViOTc1MzAzMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKQEAgLTIwNSw2ICsyMDUsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRl
cnMocmVjZWl2ZXIpOgogICAgICAgICAnU3RyaW5nJywKICAgICAgICAgJ1dlYkNvcmU6OkRvY3Vt
ZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAorICAg
ICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRl
cklEJywKICAgICAgICAgJ1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElQYWdlSGFuZGxlLmNwcAppbmRleCBhNmEwMDk5NTUwMC4uZTYwNWE0NTk0NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAKQEAgLTMxLDE3ICszMSwx
NyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNy
ZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsKIH0KIAotUmVmPFBhZ2VIYW5kbGU+IFBh
Z2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxQYWdl
SGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUhhbmRsZShw
YWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6UGFnZUhhbmRsZSh1aW50NjRfdCBwYWdl
SUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VIYW5kbGU6OlBhZ2VIYW5kbGUoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlzQXV0b2NvbnZlcnRpbmcpCiAgICAgOiBt
X3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2NvbnZlcnRpbmcoaXNBdXRvY29udmVydGlu
ZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBhZ2VIYW5kbGU6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFnZUhhbmRsZTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAgICB1aW50NjRfdCBw
YWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQorICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgZGVjb2RlciA+PiBwYWdlSUQ7Cisg
ICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaXNBdXRv
Y29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQXV0b2NvbnZlcnRpbmcpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBpc0F1dG9jb252ZXJ0aW5nID8g
Y3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNyZWF0ZShwYWdlSUQpOworICAgIHJlc3Vs
dCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRvY29udmVydGluZygqcGFnZUlEKSA6IGNy
ZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFmYmRjMzEuLjdkN2FkYzY4OWU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgQVBJUGFnZUhhbmRsZV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTM4LDIwICszOSwyMCBAQCBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgUGFnZUhhbmRsZSA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUhhbmRs
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlKHVpbnQ2NF90
IHBhZ2VJRCk7Ci0gICAgc3RhdGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGlu
Zyh1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNyZWF0
ZUF1dG9jb252ZXJ0aW5nKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5Q
YWdlSGFuZGxlKCk7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZUlEOyB9CiAgICAgYm9vbCBpc0F1dG9jb252ZXJ0aW5nKCkgY29uc3QgeyByZXR1
cm4gbV9pc0F1dG9jb252ZXJ0aW5nOyB9CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgUmVmUHRyPE9i
amVjdD4mKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQYWdlSGFuZGxlKHVpbnQ2NF90IHBh
Z2VJRCwgYm9vbCBpc0F1dG9jb252ZXJ0aW5nKTsKKyAgICBleHBsaWNpdCBQYWdlSGFuZGxlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBib29sIGlzQXV0b2NvbnZlcnRpbmcpOwogCi0gICAgY29u
c3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9wYWdlSUQ7CiAgICAgY29uc3QgYm9vbCBtX2lzQXV0b2NvbnZlcnRpbmc7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0KaW5kZXggMWNiOWU2YzdkNDEuLmZlNWI5Mzg3MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC00
NCw3ICs0NCw3IEBAIFJlbW90ZU9iamVjdFJlZ2lzdHJ5OjpSZW1vdGVPYmplY3RSZWdpc3RyeShf
V0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqcmVtb3RlT2JqZWN0CiAgICAgLCBtX21lc3NhZ2VTZW5k
ZXIocGFnZSkKICAgICAsIG1fdGFrZUJhY2tncm91bmRBY3Rpdml0eVRva2VuKFtdIHsgcmV0dXJu
IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7IH0pCiAgICAgLCBt
X2lzUmVnaXN0ZXJlZEFzTWVzc2FnZVJlY2VpdmVyKHRydWUpCi0gICAgLCBtX21lc3NhZ2VSZWNl
aXZlcklEKHBhZ2UucGFnZUlEKCkpCisgICAgLCBtX21lc3NhZ2VSZWNlaXZlcklEKHBhZ2UucGFn
ZUlEKCkudG9VSW50NjQoKSkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fbWVzc2FnZVJlY2VpdmVySUQsICp0aGlzKTsKICAgICBwYWdlLnNldFJlbW90
ZU9iamVjdFJlZ2lzdHJ5KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQppbmRleCA1OGNiMWRkMmI1
ZS4uN2U5N2YxNzZjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAog
QGltcGxlbWVudGF0aW9uIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlCiAKLS0gKGlkKV9pbml0V2l0
aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECistIChpZClfaW5pdFdpdGhQYWdlSUQ6KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKXBhZ2VJRAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDAsNyArNDAsNyBAQCAtIChpZClfaW5pdFdpdGhQ
YWdlSUQ6KHVpbnQ2NF90KXBhZ2VJRAogCiAtIChOU1VJbnRlZ2VyKWhhc2gKIHsKLSAgICByZXR1
cm4gX3BhZ2VJRDsKKyAgICByZXR1cm4gX3BhZ2VJRC50b1VJbnQ2NCgpOwogfQogCiAtIChCT09M
KWlzRXF1YWw6KGlkKW9iamVjdApAQCAtNTMsNyArNTMsNyBAQCAtIChCT09MKWlzRXF1YWw6KGlk
KW9iamVjdAogCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiB7Ci0g
ICAgW2NvZGVyIGVuY29kZUludDY0Ol9wYWdlSUQgZm9yS2V5OkAicGFnZUlEIl07CisgICAgW2Nv
ZGVyIGVuY29kZUludDY0Ol9wYWdlSUQudG9VSW50NjQoKSBmb3JLZXk6QCJwYWdlSUQiXTsKIH0K
IAogLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCkBAIC02MSw3ICs2MSw3IEBA
IC0gKGlkKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3BhZ2VJRCA9IFtjb2Rl
ciBkZWNvZGVJbnQ2NEZvcktleTpAInBhZ2VJRCJdOworICAgIF9wYWdlSUQgPSBtYWtlT2JqZWN0
SWRlbnRpZmllcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllclR5cGU+KFtjb2RlciBkZWNvZGVJbnQ2
NEZvcktleTpAInBhZ2VJRCJdKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4
dEhhbmRsZUludGVybmFsLmgKaW5kZXggMmE5ZTY0NjI4MWEuLjQzZTQxZTI0Y2QzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5k
bGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKQEAgLTI0LDExICsyNCwxMiBAQAogICovCiAKICNp
bXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlLmgiCisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VJ
ZGVudGlmaWVyLmg+CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgKCkKIAot
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXIgPSBfcGFnZUlEKSB1aW50NjRf
dCBwYWdlSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1fcGFnZUlE
KSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAKLS0gKGlkKV9pbml0V2l0aFBhZ2VJ
RDoodWludDY0X3QpcGFnZUlEOworLSAoaWQpX2luaXRXaXRoUGFnZUlEOihXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcilwYWdlSUQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRleCBl
YjhhMGI2NjE3YS4uZDRlMWMyNTAwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTY2
LDcgKzY2LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogCiB1aW50NjRfdCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAg
IHJldHVybiAqbV9kZXN0aW5hdGlvbklEOworICAgIHJldHVybiBtX2Rlc3RpbmF0aW9uSUQtPnRv
VUludDY0KCk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNhbk1ha2VQ
YXltZW50cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIHJlcGx5KQpAQCAtODQsNyAr
ODQsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpvcGVuUGF5bWVudFNldHVw
KGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaQogICAgIHBsYXRmb3JtT3BlblBheW1lbnRT
ZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1l
bnRVSSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBs
aW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQ
YXltZW50VUkoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8mIGNv
b3JkaW5hdG9yID0gYWN0aXZlUGF5bWVudENvb3JkaW5hdG9yUHJveHkoKSkKICAgICAgICAgY29v
cmRpbmF0b3ItPmRpZENhbmNlbFBheW1lbnRTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApp
bmRleCBkMjM3ZWFiM2RhYi4uNmU0YTg1Y2YyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BheW1lbnRIZWFkZXJzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC0xMTUsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNh
bk1ha2VQYXltZW50cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lk
IGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29u
c3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzaG93UGF5bWVudFVJ
KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJp
bmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2hvd1BheW1lbnRVSShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJ
Y29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGNvbXBsZXRl
TWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24m
KTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBjb21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0Nv
bnRhY3RVcGRhdGU+Jik7CkBAIC0xNDcsNyArMTQ4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgQ2xpZW50JiBtX2NsaWVudDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gbV9kZXN0aW5hdGlv
bklEOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX2Rlc3RpbmF0aW9u
SUQ7CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgLy8gSWRsZSAtIE5vdGhpbmcn
cyBoYXBwZW5pbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGRkMzEzMTI3YmY0Li4xZGU0Y2RkY2U0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKFN0cmluZyBt
ZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpIC0+IChib29sIGNhbk1ha2VQYXltZW50cykgQXN5bmMKICAgICBPcGVuUGF5bWVudFNl
dHVwKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lKSAtPiAoYm9v
bCByZXN1bHQpIEFzeW5jCiAKLSAgICBTaG93UGF5bWVudFVJKHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5n
LCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNo
cm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5h
dGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0
cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdzLCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkgLT4gKGJvb2wgcmVzdWx0KSBT
eW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKFdlYkNvcmU6OlBheW1l
bnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKICAgICBDb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBk
YXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9u
YWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRhdGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyLmNwcAppbmRleCA2ZWIzMzVmMDdkMy4uOWRlYjc2ZmYxMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcApAQCAtNzUsNyArNzUsNyBAQCB1aW50NjRfdCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKENoYWxsZW5nZSYmIGNoYWxsZW5nZQog
ICAgIHJldHVybiBjaGFsbGVuZ2VJRDsKIH0KIAotYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2hhbGxl
bmdlSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0Citi
b29sIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6c2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgY29uc3QKIHsKICAgICBpZiAoIWNhbkNvYWxlc2NlQ2hh
bGxlbmdlKGNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwOCw3ICsxMDgs
NyBAQCBWZWN0b3I8dWludDY0X3Q+IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29hbGVzY2VDaGFs
bGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbAogICAgIHJldHVybiBjaGFsbGVuZ2VzVG9Db2Fs
ZXNjZTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGlj
YXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHBhZ2VJRCk7CiAgICAgQVNTRVJU
KGZyYW1lSUQpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1CiAK
IHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHVpbnQ2NF90IGR1bW15
UGFnZUlEID0gMDsKKyAgICBQYWdlSWRlbnRpZmllciBkdW1teVBhZ2VJRDsKICAgICB1aW50NjRf
dCBjaGFsbGVuZ2VJRCA9IGFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKHsgZHVtbXlQYWdlSUQs
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KTsK
ICAgICAKICAgICAvLyBDb2FsZXNjZSBjaGFsbGVuZ2VzIGluIHRoZSBzYW1lIHByb3RlY3Rpb24g
c3BhY2UgYW5kIGluIHRoZSBzYW1lIHBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCmluZGV4IDdm
ZTM5OWUwYjdlLi44NmU3NDRjMTA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6
Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdm9pZCBjb21w
bGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsJiYpOwpAQCAt
NjksNyArNzAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IENoYWxsZW5nZSB7
Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEOwogICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFs
bGVuZ2U7CiAgICAgICAgIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5k
bGVyOwogICAgIH07CkBAIC04Myw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAog
ICAgIHVpbnQ2NF90IGFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKENoYWxsZW5nZSYmKTsKLSAg
ICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
Y2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgY29u
c3Q7CisgICAgYm9vbCBzaG91bGRDb2FsZXNjZUNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikgY29uc3Q7CiAKICAgICBWZWN0b3I8dWludDY0X3Q+IGNvYWxlc2NlQ2hhbGxl
bmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWxsZW5nZUlEKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCmluZGV4IDMyYjBhNDc1ZGMyLi4xOTI1M2UyYmFiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtNjIsNiArNjIsMTgg
QEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6TWVzc2Fn
ZVJlY2VpdmVyJik7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CisgICAgfQor
ICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElk
ZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAgIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwor
ICAgIH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCmluZGV4IDRmNzVmZDgwNmY2Li41
NGQ0Mjc3Yjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaApAQCAt
MjksMTMgKzI5LDE0IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudElkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgVGV4dElucHV0Q29udGV4dCB7CiAgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IGJvdW5kaW5nUmVjdDsKIAotICAgIHVpbnQ2NF90IHdlYlBhZ2VJZGVudGlm
aWVyOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJZGVudGlmaWVyOwogICAg
IFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXI7CiAgICAgV2Vi
Q29yZTo6RWxlbWVudElkZW50aWZpZXIgZWxlbWVudElkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5kZXggOWRiYjM2YTQ1
NTMuLmQ5MDBhMTY3MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4g
V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYm
IGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKQorUmVmPFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgcGFnZUlEKSk7CiB9CiAKLVdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQp
CitXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKQogICAgIDogbV9pdGVtU3RhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUpKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV9sYXN0UHJvY2Vzc0lkZW50
aWZpZXIobV9pdGVtU3RhdGUuaWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAppbmRleCA4NzJlZjE4MDk1
ZC4uYmEzNDQ4MGNkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgU3Vz
cGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmFja0ZvcndhcmRMaXN0SXRlbT4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRl
KEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRp
YyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+V2ViQmFja0Zv
cndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGljIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0
ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01
NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0YXRlLmlkZW50aWZp
ZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsg
cmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
bGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UHJvY2Vzc0lkZW50
aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9jZXNzSWRlbnRpZmllcihjb25zdCBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBtX2xhc3RQcm9jZXNzSWRlbnRpZmll
ciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4MiwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIGV4cGxpY2l0IFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNzUG9v
bCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRlbVN0YXRlOwotICAgIHVp
bnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwog
ICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyOwog
ICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCBlOWRhNjBhZWViZS4uMGNiZmQwMzQ2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0zOTIsNyArMzkyLDcgQEAg
T3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICBwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvciA9IFdURk1vdmUoKmJhY2tncm91bmRDb2xvcik7
CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1aW50NjRfdD4+IG9sZFBhZ2VJRDsKKyAgICBPcHRp
b25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IG9sZFBhZ2VJRDsKICAgICBkZWNvZGVyID4+
IG9sZFBhZ2VJRDsKICAgICBpZiAoIW9sZFBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaAppbmRleCBjMmJlODQxNDZiMy4uOTAxMjdiYzMxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1p
bGVzdG9uZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29s
b3I+IGJhY2tncm91bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL09iakNPYmplY3RHcmFwaC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2Jq
ZWN0R3JhcGgubW0KaW5kZXggYzY1NDg0ZjU1MTIuLjcxMWEyNjE5ODc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KQEAgLTMwMiw3ICszMDIsNyBAQCBi
b29sIE9iakNPYmplY3RHcmFwaDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmV0YWlu
UHRyPGlkPiYgcmVzdWx0KQogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VJRCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0ID0gYWRvcHROUyhbW1dL
QnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlSUQ6cGFnZUlEXSk7Cisg
ICAgICAgIHJlc3VsdCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10g
X2luaXRXaXRoUGFnZUlEOm1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyVHlwZT4ocGFnZUlEKV0pOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGVkODYzNTgyMDFiLi41OTcwMWExMzQz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0xMjA2LDcg
KzEyMDYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqCiAgICAgICAgIG1pbGVzdG9uZXMuYWRk
KFdlYkNvcmU6OkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCk7CiAKICAgICBpZiAobWls
ZXN0b25lcykKLSAgICAgICAgd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSwgd2ViUGFnZVBy
b3h5LT5wYWdlSUQoKSk7CisgICAgICAgIHdlYlBhZ2VQcm94eS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSk7CiAKICAgICB3ZWJQ
YWdlUHJveHktPnNldExvYWRlckNsaWVudChXVEZNb3ZlKGxvYWRlckNsaWVudCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcAppbmRleCAxMDc1NzgxYWYyYy4uMmY5Y2ZlOTQyNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBT
dHJpbmcgQXV0b21hdGlvbkNvbW1hbmRFcnJvcjo6dG9Qcm90b2NvbFN0cmluZygpCiB7CkBAIC01
MjIsNyArNTIzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRp
b25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEKICAgICB9CiB9CiAKLXZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxi
YWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQo
SGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCiB7CiAgICAgSW5zcGVjdG9yOjpFcnJvclN0cmluZyB0
aW1lb3V0RXJyb3IgPSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShUaW1lb3V0KTsK
ICAgICBmb3IgKGF1dG8gaWQgOiBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uaAppbmRleCA2NWViM2U0NmU1Yi4uZjM5YzA2MWI1NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNs
dWRlICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CkBAIC0yMjUsNyArMjI2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2FpdEZv
ck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdlKFdlYlBhZ2VQcm94eSYsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3ksIFNlY29uZHMsIFJlZjxJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+JiYpOwogICAgIHZvaWQgd2FpdEZv
ck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7Ci0gICAgdm9pZCByZXNw
b25kVG9QZW5kaW5nUGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
Pj4mKTsKKyAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dp
dGhUaW1lb3V0KEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOwogICAgIHZvaWQgcmVzcG9u
ZFRvUGVuZGluZ0ZyYW1lTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+
PiYpOwogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoKTsKIApAQCAtMjgwLDIyICsyODEsMjIgQEAg
cHJpdmF0ZToKICAgICBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXI+
IG1fZG9tYWluRGlzcGF0Y2hlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpBdXRv
bWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPiBtX2RvbWFpbk5vdGlmaWVyOwogCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYlBhZ2VIYW5kbGVNYXA7Ci0gICAgSGFzaE1hcDxTdHJp
bmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdlYlBhZ2VNYXA7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgU3RyaW5nPiBtX3dlYlBhZ2VIYW5kbGVNYXA7CisgICAgSGFzaE1hcDxT
dHJpbmcsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX2hhbmRsZVdlYlBhZ2VNYXA7CiAKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fd2ViRnJhbWVIYW5kbGVNYXA7CiAgICAgSGFz
aE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdlYkZyYW1lTWFwOwogCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNr
c1BlclBhZ2U7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJv
d3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tz
UGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJO
YXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwogICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQ
ZXJGcmFtZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93
c2luZ0NvbnRleHRDYWxsYmFja3NQZXJGcmFtZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5n
SW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
Pj4gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZTsKICNpZiBFTkFCTEUoV0VCRFJJ
VkVSX0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlv
bjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ0tleWJv
YXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVy
cm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwog
I2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMpCi0gICAgSGFz
aE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVy
cm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZTsKICNlbmRpZgogCiAgICAgdWludDY0X3QgbV9uZXh0RXZhbHVhdGVKYXZh
U2NyaXB0Q2FsbGJhY2tJRCB7IDEgfTsKQEAgLTMxOSw3ICszMjAsNyBAQCBwcml2YXRlOgogICAg
IC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciBBUElzIHRha2UgYSBzZXQgb2YgaW5wdXQgc291
cmNlcy4gV2UgYWxzbyBpbnRlcm4gdGhlc2UKICAgICAvLyBzbyB0aGF0IHByZXZpb3VzIGlucHV0
IHNvdXJjZSBzdGF0ZSBpcyB1c2VkIGFzIGluaXRpYWwgc3RhdGUgZm9yIGxhdGVyIGNvbW1hbmRz
LgogICAgIEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4gbV9pbnB1dFNvdXJjZXM7
Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1f
aW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQ
YWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMp
CiAgICAgLy8gS2VlcCB0cmFjayBvZiBjdXJyZW50bHkgYWN0aXZlIG1vZGlmaWVycyBhY3Jvc3Mg
bXVsdGlwbGUga2V5c3Ryb2tlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5LmgKaW5kZXggOTg5M2QzOThiNTcuLjg1OGE1YmVkNmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNjcs
NiArNjcsMTggQEAgcHVibGljOgogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNl
aXZlcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAg
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCkpOworICAgIH0KIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICBM
YXVuY2hpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXggZjA1ZDc5YzBkMDEuLjY3MDY1
OTc2ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC01MjcsOTQgKzUyNyw5NCBAQCB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJ
RFJlc3BvbnNlKHVpbnQ2NF90IGNvbgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
UGxheShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
UGF1c2UoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRleHRJZCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY3J1YmJpbmcodWludDY0X3Qg
Y29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNj
cnViYmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElk
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xlcmFuY2VCZWZvcmUsIGRvdWJsZSB0b2xlcmFuY2VBZnRl
cikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFm
dGVyKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwgdGltZSwgdG9sZXJhbmNl
QmVmb3JlLCB0b2xlcmFuY2VBZnRlcikpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkZhc3RTZWVr
KGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1l
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5n
Rm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nRm9yd2FyZChjb250ZXh0SWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRleHRJZCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVu
ZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElk
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdEF1ZGlvTWVk
aWFPcHRpb24oY29udGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
dWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBpY3R1cmVJ
blBpY3R1cmUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoY29udGV4dElkKSk7CiB9
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVNdXRlZCh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11
dGVkKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
c2V0TXV0ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIG11dGVkKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElk
LCBtdXRlZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElkLCBtdXRlZCkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Vm9sdW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0SWQsIHZvbHVtZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4odWludDY0X3Qg
Y29udGV4dElkLCBib29sIHZhbHVlKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0UGxheWluZ09uU2Vj
b25kU2NyZWVuKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRQbGF5aW5n
T25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKQogewogICAgIGlm
IChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVx
dWVzdChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkhhbmRs
ZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7
CiB9CiAKIFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubW0KaW5kZXggNmJhNDc5ZTA2MGEuLmM4ZDY1YzM2MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCkBAIC02MjAsNDMgKzYyMCw0MyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIAogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50
NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJl
cXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhKSk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5saW5lUmVjdChjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KGNvbnRleHRJZCkpOwog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFZpZGVvQ29udGVu
dExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvQ29udGVu
dExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVudExheWVyKGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkKSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1cEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVs
bHNjcmVlbihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsc2NyZWVu
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7
CiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRp
ZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNj
cmVlbihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwogfQog
CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRp
ZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBbQ0FUcmFuc2FjdGlv
biBmbHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmll
d107CiAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0cik7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRDbGVhbnVwRnVsbHNjcmVl
bihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJ
ZCkpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQoY29udGV4
dElkKTsKQEAgLTY4OCwyNSArNjg4LDI1IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlCiAgICAg
ICAgIG1hY2hfcG9ydF9uYW1lX3QgZmVuY2VQb3J0ID0gZmVuY2VTZW5kUmlnaHQubGVha1NlbmRS
aWdodCgpOwogI2VuZGlmCiAKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoY29udGV4dElkLCBmcmFt
ZSwgSVBDOjpBdHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKGNvbnRleHRJZCwgZnJh
bWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSkp
OwogICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVv
TGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oY29udGV4dElk
LCAodW5zaWduZWQpZ3Jhdml0eSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckdyYXZpdHlF
bnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBt
b2RlKQogewogICAgIG1fcGFnZS0+dWlDbGllbnQoKS5oYXNWaWRlb0luUGljdHVyZUluUGljdHVy
ZURpZENoYW5nZShtX3BhZ2UsIG1vZGUgJiBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2Rl
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2RlKSk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTWF5UmV0
dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNWaWV3VmlzaWJs
ZSA9IG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRl
eHRJZCwgaXNWaWV3VmlzaWJsZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXgg
ZjkxNDY4MTFjNTUuLmZjM2VmYmUyNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVy
Zm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50KSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihw
b2ludCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBP
ZkN1cnJlbnRTZWxlY3Rpb24oKQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50
U2VsZWN0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJm
b3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpKTsKIH0KICAgICAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZKQpAQCAtMjY2LDE3ICsyNjYsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlc3VtZVNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlJikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNwZWFraW5nRXJyb3JPY2N1cnJlZChXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCiB7Ci0gICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNwZWFraW5nRXJyb3JPY2N1cnJlZCgpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3BlYWtpbmdFcnJvck9jY3VycmVkKCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Ym91bmRhcnlFdmVudE9jY3VycmVkKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiwgV2ViQ29yZTo6U3BlZWNoQm91bmRhcnkg
c3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkKIHsKLSAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Qm91bmRhcnlFdmVudE9jY3VycmVkKHNwZWVjaEJvdW5kYXJ5
ID09IFdlYkNvcmU6OlNwZWVjaEJvdW5kYXJ5OjpTcGVlY2hXb3JkQm91bmRhcnksIGNoYXJJbmRl
eCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCb3VuZGFyeUV2ZW50
T2NjdXJyZWQoc3BlZWNoQm91bmRhcnkgPT0gV2ViQ29yZTo6U3BlZWNoQm91bmRhcnk6OlNwZWVj
aFdvcmRCb3VuZGFyeSwgY2hhckluZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lj
ZXNEaWRDaGFuZ2UoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpW
b2ljZXNEaWRDaGFuZ2UoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlZvaWNlc0RpZENoYW5nZSgpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRl
eCAyYWE3NDhmMDA0Zi4uMDhhM2QzMDhkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xOTk3LDEzICsxOTk3LDEzIEBAIGZsb2F0IFdlYlZp
ZXdJbXBsOjppbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHZvaWQgV2ViVmll
d0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0
ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIsIHRoaXMsIG1fcGFn
ZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93
RGlkT3JkZXJPblNjcmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1w
bCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAl
bGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJ
bnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlIH0pOwogfQogCkBAIC0yMDcxLDcgKzIwNzEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp3
aW5kb3dEaWRDaGFuZ2VMYXllckhvc3RpbmcoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dE
aWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJW
aWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSIsIHRo
aXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0lt
cGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUiLCB0aGlzLCBt
X3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCkBAIC0yMjM0
LDE5ICsyMjM0LDE5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRDaGFuZ2VCYWNraW5nUHJv
cGVydGllcygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRIaWRlKCkKIHsKLSAgICBMT0co
QWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRIaWRlIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkSGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCku
dG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdE
aWRVbmhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBh
Z2UgJWxsdSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZFVuaGlk
ZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9
CiAKIHZvaWQgV2ViVmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlkQ2hhbmdlKCkKIHsKLSAgICBMT0co
QWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNwYWNlRGlk
Q2hhbmdlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUs
ICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSBhY3RpdmVTcGFjZURpZENoYW5nZSIsIHRoaXMs
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggYjViNGUwYWQy
MjEuLmVjZjVkYTBhOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIERyYXdpbmdBcmVhUHJveHk6OkRyYXdpbmdB
cmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByCiAg
ICAgLCBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZEcmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCkKICNl
bmRpZgogewotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5n
QXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
LCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdp
bmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7
CiB9CiAKIERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAKIGJvb2wgRHJhd2luZ0Fy
ZWFQcm94eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggY2E3
Njg3ZjZiNTIuLmI5MzAxMjg1OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZQogICAgICAg
ICByZXR1cm47CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9u
RGVjaXNpb24oZ2VvbG9jYXRpb25JRCwgYWxsb3dlZCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1p
c3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBhbGxvd2VkKSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShhbGxvd2VkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmluZGV4IDYyYjA3MjlmOGE1Li4wZjQxMDIwZWE3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNw
cApAQCAtNTAsMTkgKzUwLDE5IEBAIEluc3BlY3RvclRhcmdldFByb3h5OjpJbnNwZWN0b3JUYXJn
ZXRQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGFyCiB2b2lkIEluc3Bl
Y3RvclRhcmdldFByb3h5Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBjaGFu
bmVsKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25uZWN0SW5zcGVjdG9yKGlk
ZW50aWZpZXIoKSwgY2hhbm5lbC5jb25uZWN0aW9uVHlwZSgpKSwgbV9wYWdlLnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0b3Io
aWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCYp
CiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3BhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRl
bnRpZmllcigpKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OnNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9wYWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkp
Ci0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZE1l
c3NhZ2VUb1RhcmdldEJhY2tlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRNZXNzYWdl
VG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM0NDNiMzg1ZmFjLi4yZDk5NjZlM2M4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0
dGEKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3Qg
Y2hhbGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0
X3QgY2hhbGxlbmdlSUQpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChh
dXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbV9wcm9jZXNzUG9vbC5zZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChwYWdlSUQpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5j
aGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGlj
TWVzc2FnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBs
ZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uo
cGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1c2UgYnkg
dGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkgYmUgZ29u
ZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC0zODIsNyArMzgyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWUKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZSht
ZXNzYWdlLCBkZXNjcmlwdGlvbiwgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQz
Ml90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5
IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdv
bmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzkzLDcgKzM5Myw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQobWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgc2hvdWxkU2FtcGxlKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUg
dmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJv
eHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNr
IGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFn
ZSBtYXkgYmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC03MzYs
NyArNzM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRHcmFuZGZhdGhlcmVkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXMKICAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRHcmFuZGZhdGhlcmVkKHNlc3Npb25JRCwg
cmVzb3VyY2VEb21haW4sIGlzR3JhbmRmYXRoZXJlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbmZpcm0odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25m
aXJtKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojpub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
RmluaXNoZWQodW5zaWduZWQKICAgICBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0
aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUobWVzc2FnZUJvZHkp
LnB0cigpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb21taXR0ZWRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbW1pdHRlZENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMjBhNzk5OGM0ZGMu
LjJiZWM2OGZkODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCArODEsNiBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAg
ICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdl
SUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBleHBs
aWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBAIC0xMzEsNyArMTI5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYpOwot
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJRCwgRnJhbWVJRCwgY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJt
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGlt
ZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGJvb2wg
ZGVidWdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9u
SUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFp
biYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5h
dmlnYXRlZFRvRG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYs
IGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZv
aWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRl
RGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1
ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwor
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGxvZ1Rl
c3RpbmdFdmVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGYuLjIyZmZmZDE5ODgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50
aWZpZXIpCiAKLSAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQorICAgIERpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWlu
dDY0X3QgY2hhbGxlbmdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQogICAgIERp
ZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC0zNSw5ICszNSw5IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCiAKICAgICAj
IERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZwotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAgTG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmlu
ZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1
aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJs
ZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dEaWFnbm9zdGljTWVzc2FnZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3Jp
cHRpb24sIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAg
IExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3Vs
dCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAgTG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2ln
bmVkIHNpZ25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCiAgICAgTG9nR2xvYmFsRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoU3Ry
aW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBz
aWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxk
U2FtcGxlKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTQ2LDcg
KzQ2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCkKICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5p
c2hlZCgpCiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVk
KHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVu
dFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW5zKQotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1
YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikg
LT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNj
ZXNzQ29uZmlybShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNj
ZXNzKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5z
V2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBmODc2MWIxZjNmNC4uM2YyODczMmFiNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNy
CiB7CiAgICAgYXV0byByZXF1ZXN0ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNy
ZWF0ZShbdGhpcywgbm90aWZpY2F0aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1fcGFnZSldKGJvb2wg
YWxsb3dlZCkgewogICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5vdGlmaWNhdGlvbklE
KTsKLSAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93
ZWQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9u
SUQsIGFsbG93ZWQpKTsKICAgICB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQobm90aWZp
Y2F0aW9uSUQsIHJlcXVlc3QucHRyKCkpOwogICAgIHJldHVybiByZXF1ZXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZhZTFmM2ZjYTg4Li4yYWFmZjFl
YzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdl
UHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAgIHVpbnQ2NF90IGdsb2Jh
bE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwogICAgIGF1
dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGlj
b25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklE
KTsKLSAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIg
PSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsK
KyAgICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBh
aXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklE
KTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQs
IG5vdGlmaWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRp
b25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRp
b24uY29weVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0
aW9uLmdldCgpKTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwK
ICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90LCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikK
K3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
LCBQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikK
IHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29s
IHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBh
Z2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5k
Tm90aWZpY2F0aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdl
Tm90aWZpY2F0aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBw
YWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250
YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEzICsxNDEsMTMgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNs
ZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZp
bHRlckZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBh
Z2VJRCgpOworICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CiAKICAg
ICBWZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAgICBnbG9iYWxOb3Rp
ZmljYXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUo
KSk7CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKSwgZW5kID0g
bV9ub3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgdWludDY0
X3Qgd2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAgYXV0byB3ZWJQYWdlSUQgPSBp
dC0+a2V5LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+
a2V5LnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VO
b3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFs
Tm90CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7Cisg
ICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3
ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3
ZWJQYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0
X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFs
dWUuZmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNS4uZTc4ZGFiYTZmZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQ
cm9jZXNzUG9vbCopOwogCi0gICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24pKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCB1aW50
NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5v
dGlmaWNhdGlvbklEcyk7CisgICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24pKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlm
aWNhdGlvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
cGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pOwogCiAgICAg
Ly8gV2ViQ29udGV4dFN1cHBsZW1lbnQKQEAgLTg4LDkgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwog
ICAgIC8vIFBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFuZCB0aGUgd2ViIHByb2Nlc3Mn
cyBub3RpZmljYXRpb24gSUQKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8dWludDY0
X3QsIHVpbnQ2NF90Pj4gbV9nbG9iYWxOb3RpZmljYXRpb25NYXA7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4+IG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwOwogICAgIC8vIEtleSBwYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFn
ZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElEOyB2YWx1ZSBwYWlyIGNv
bXByaXNlZCBvZiBnbG9iYWwgbm90aWZpY2F0aW9uIElELCBhbmQgbm90aWZpY2F0aW9uIG9iamVj
dAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1
aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CisgICAg
SGFzaE1hcDxzdGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90Piwgc3Rk
OjpwYWlyPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9u
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDQ1YTFmMGY1YjVjLi41MTg4OTNi
MDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcApAQCAtNDcsNiArNDcsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBjaGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMs
ICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hh
bm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10
LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCkBAIC02MSw3ICs2Myw3IEBAIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQ
cm9jZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBw
YWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQ
YWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdl
dCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
IlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQg
PSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2
NCgpLCBuYXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCiAgICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFBy
b3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlzKTsKQEAgLTEwMCw3ICsxMDIsNyBAQCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KCkKICAgICAgICAgbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLnBhZ2VJRCgp
LCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKICAgICBtX3Byb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNsb3NlKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVz
ZXIobV9wYWdlLnZpc2l0ZWRMaW5rU3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKIAogICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvY2VzcyA9IG1fcHJvY2Vzcy5jb3B5UmVmKCldIHsK
QEAgLTExNyw3ICsxMTksNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpjb25uZWN0aW9u
V2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS5wcm92
aXNpb25hbFByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKIH0KIApAQCAtMTMyLDcgKzEzNCw3IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxM
b2FkVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNhbmNl
bDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSBmb3IgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgQVNTRVJUKG1f
bWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpjYW5jZWxsZWRFcnJvcihtX3Jl
cXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6
Q2FuY2VsbGF0aW9uKTsKQEAgLTE1MSwxNCArMTUzLDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJsb2FkRGF0YTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlE
KCkudG9VSW50NjQoKSk7CiAKICAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJl
ZChtX3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2Rp
bmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVx
dWVzdDogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgLy8gSWYgdGhpcyBp
cyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcgaW4gYSBuZXcgcHJvY2VzcywgdGhl
biB0aGUgbmV3IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhlIGZyb21JdGVtJ3MgVVJMLiBJbiB0
aGlzIGNhc2UsCiAgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXBkYXRlIGZyb21JdGVt
J3MgcHJvY2Vzc0lkZW50aWZpZXIgYXMgd2Ugd2FudCBmdXR1cmUgbmF2aWdhdGlvbnMgdG8gdGhp
cyBCYWNrRm9yd2FyZCBpdGVtIHRvIGhhcHBlbiBpbiB0aGUKQEAgLTE3MSw3ICsxNzMsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIFdlYkNvcmU6OlJlcwogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1Rv
QmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRl
UG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQo
KSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFj
a0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2
NCgpKTsKIAogICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5m
aWx0ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkg
ewogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7CkBAIC0x
ODAsOCArMTgyLDggQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJk
SXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gJml0ZW0gIT0gdGFyZ2V0SXRlbTsKICAgICB9KTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdU
Rk1vdmUoaXRlbVN0YXRlcykpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmln
YXRpb25JRCgpLCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9h
ZFR5cGUoKSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1v
dmUod2Vic2l0ZVBvbGljaWVzKSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goV1RGTW92ZShpdGVt
U3RhdGVzKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0
ZW0obmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgKm5hdmlnYXRpb24u
YmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCksIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpKTsKICAgICBtX3Byb2Nlc3Mt
PnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCkBAIC0xOTYsNyArMTk4LDcgQEAg
aW5saW5lIGJvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgT3B0aW9uYWwKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlk
Q3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRl
TWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9w
YWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQpOwogICAgIEFTU0VSVCghbV9tYWluRnJh
bWUpOwogCiAgICAgbV9tYWluRnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUobV9wYWdlLCBm
cmFtZUlEKTsKQEAgLTIzNCw3ICsyMzYsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbgogICAg
IGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgp
LCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJ
dTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsK
ICAgICBBU1NFUlQobV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlz
aW9uYWxMb2FkVVJMID0gdXJsOwogCkBAIC0yNTQsNyArMjU2LDcgQEAgdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnMKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2
NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbExvYWRVUkwu
aXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogCkBAIC0yNzAsNyAr
MjcyLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmkKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQo
ZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9
ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZv
ckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZp
Z2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogICAgIG1f
cHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKIApAQCAtMjk1LDcgKzI5Nyw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWluCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCisgICAgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVp
bnQ2NF90IGxpc3RlbmVySUQpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5h
dmlnYXRpb25JRCkpCkBAIC0zNDEsNyArMzQzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6YmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGUK
IH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtMzc0LDYgKzM3NiwxNiBAQCB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4o
Y29uc3QgSVBDOjpEYXRhUgogfQogI2VuZGlmCiAKK0lQQzo6Q29ubmVjdGlvbiogUHJvdmlzaW9u
YWxQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpOworfQorCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBU1NFUlQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4
IDY0NTZjMWY5MTZkLi5iODYzZmRkMDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAg
LTU4LDcgKzU5LDcgQEAgc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwogc3RydWN0IFVSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzOwogc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiAKLWNs
YXNzIFByb3Zpc2lvbmFsUGFnZVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHsKK2NsYXNzIFByb3Zp
c2lvbmFsUGFnZVByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQcm92aXNpb25hbFBhZ2VQ
cm94eT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFByb3Zp
c2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHN0
ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGJvb2wgaXNTZXJ2ZXJSZWRpcmVjdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCk7CkBAIC05Miw5ICs5MywxMyBAQCBwcml2YXRl
OgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIAorICAgIC8vIElQQzo6TWVzc2Fn
ZVNlbmRlcgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCi0gICAgICAgIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiByZXF1ZXN0Qm9keSwKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTEwLDcgKzExNSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7
CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0Rh
dGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRh
JiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCAwNTU5Yzk4NzRiZC4uMjc4Y2E4NTRmMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0x
MTUsNyArMTE1LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcKICAgICBJT1N1cmZhY2VQb29s
OjpzaGFyZWRQb29sKCkuc2V0UG9vbFNpemUoMCk7CiAjZW5kaWYKIAotICAgIHByb2Nlc3MuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7
CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAq
dGhpcyk7CiAKICAgICBpZiAobV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS50aWxlZFNjcm9s
bGluZ0luZGljYXRvclZpc2libGUoKSkKICAgICAgICAgaW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9y
KCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcKIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
KCkKIHsKICAgICBtX2NhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93
bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgIHByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHByb2Nlc3MoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgW21fZGlzcGxheUxpbmtIYW5kbGVyIGludmFsaWRhdGVdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCmlu
ZGV4IDY2NzlkNDViZDk5Li4wODZhZWIwNzk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcApAQCAtNTksNyArNTksNyBAQCB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpsb2FkKGNvbnN0IFN0cmluZyYgZGVidWdnYWJs
ZVR5cGUsIGNvbnN0IFN0cmluZyYgYgogICAgIG1fZGVidWdnYWJsZVR5cGUgPSBkZWJ1Z2dhYmxl
VHlwZTsKICAgICBtX2JhY2tlbmRDb21tYW5kc1VSTCA9IGJhY2tlbmRDb21tYW5kc1VSTDsKIAot
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclVJOjpJbml0aWFsaXplKGRlYnVnZ2FibGVUeXBlLCBiYWNrZW5kQ29tbWFuZHNVUkwp
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpJbml0aWFsaXplKGRlYnVnZ2FibGVUeXBl
LCBiYWNrZW5kQ29tbWFuZHNVUkwpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0
KFVSTChVUkwoKSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQog
CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQog
CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQo
bWVzc2FnZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFn
ZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChtZXNzYWdlKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZyb250
ZW5kRGlkQ2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1YTE0ZmJlNGRjZC4uYjJmNzcyOWZkMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZl
cmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBj
aGFsbGVuZ2UpCit2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmIGNoYWxsZW5nZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgK
aW5kZXggOTMyNDVmMGRjNzYuLmU5MzY1YWZhYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCkBAIC00MSwxNCArNDEsMTQg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJz
KGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
dWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwog
CiAgICAgdm9pZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgT3B0aW9uYWw8UEFM
OjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4oKSB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9Ci0g
ICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlE
OyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1aW50NjRfdCBtX3NlcnZpY2VXb3JrZXJQYWdl
SUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUGFn
ZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCAxMzQ2ZmNjMDVjNS4uZWJlNDE3NGNj
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cApAQCAtOTIsNyArOTIsNyBAQCBTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94
eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JgogICAgIG1fcHJvY2Vz
cy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CiAKICAgICBtX3N1c3BlbnNpb25U
aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KHN1c3BlbnNpb25UaW1lb3V0KTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3BhZ2Uu
cGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRy
dWUpKTsKIH0KIAogU3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKQEAg
LTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKCkKICAg
ICBBU1NFUlQobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpTdXNwZW5kZWQp
OwogCiAgICAgbV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNwZW5zaW9uU3RhdGU6OlJlc3VtZWQ7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChmYWxz
ZSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNT
dXNwZW5kZWQoZmFsc2UpKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkK
QEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xvc2UoKQogCiAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJveHk6
OmNsb3NlKCkiLCB0aGlzKTsKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CiB9CiAKIHZvaWQgU3VzcGVuZGVkUGFn
ZVByb3h5OjpwYWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKQEAgLTI0Miwx
MSArMjQyLDIxIEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwKIHsKIH0KIAorSVBDOjpDb25uZWN0
aW9uKiBTdXNwZW5kZWRQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFN1
c3BlbmRlZFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKTsKK30KKwogI2lmICFMT0dfRElT
QUJMRUQKIAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgpLCAiLCBt
X3N1c3BlbnNpb25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zdXNwZW5zaW9uU3Rh
dGUpLCAnKScpOworICAgIHJldHVybiBkZWJ1Z1N0cmluZygiKDB4IiwgaGV4KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pih0aGlzKSksICIgcGFnZSBJRCAiLCBtX3BhZ2UucGFnZUlEKCkudG9V
SW50NjQoKSwgIiwgbV9zdXNwZW5zaW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
c3VzcGVuc2lvblN0YXRlKSwgJyknKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCmluZGV4IDBkYWQwNTRiMjcyLi42MzVlYmEwMDBk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgi
CiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eU1lc3NhZ2VzLmgiCkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsK
IAogZW51bSBjbGFzcyBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUgOiBib29sIHsgTm8sIFllcyB9OwogCi1jbGFzcyBTdXNwZW5kZWRQYWdl
UHJveHkgZmluYWw6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4geworY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5IGZp
bmFsOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFN1c3BlbmRlZFBhZ2VQcm94eShX
ZWJQYWdlUHJveHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBtYWluRnJhbWVJ
RCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKTsKQEAgLTcxLDYgKzcyLDEwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikg
ZmluYWw7CisgICAgCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CiAKICAgICBXZWJQYWdl
UHJveHkmIG1fcGFnZTsKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggOTcxMWIyMzM3MjEuLjAx
YjZkMTJlNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojp+V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkoKQogewogICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3hpZXMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykgewotICAgICAgICBwcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogICAgICAgICBwcm9jZXNzLT5kaWRE
ZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMpOwogICAgIH0KICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtODUsNyArODUsNyBAQCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKIHZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHksIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7CiAgICAgaWYgKG1fcHJvY2Vzc2VzLmFkZCgmd2ViUHJvY2Vzc1Byb3h5KS5pc05ld0VudHJ5
KQotICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSwgKnRoaXMpOworICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCksICp0aGlzKTsKIAogICAgIEFTU0VS
VChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChjb25z
dCBhdXRvJiB3b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMpCkBAIC0xMTUsNyArMTE1LDcgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9j
ZXNzUHJveHkmIHdlYlByb2Nlc3NQcm8KICAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMo
JndlYlByb2Nlc3NQcm94eSkpOwogCiAgICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNz
UHJveHkpOwotICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRl
bnRXb3JsZCYgd29ybGQpCkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OlVzZXJDb250
ZW4KICAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7
CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBGcmFt
ZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZv
RGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQ
cm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDYyMzMwMTExNmVkLi4wZWQzNmE1OWNjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xMTAsNyAr
MTExLDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBGcmFtZUluZm9E
YXRhJiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik7CiAKICAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdv
cmxkJik7CiAgICAgdm9pZCByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250
ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgxNzE0MzUx
ZmNlLi4yNWE0ZTI5MTI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDUgKzI0LDUgQEAKICAqLwogCiBtZXNzYWdlcyAt
PiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSB7Ci1EaWRQb3N0TWVzc2FnZSh1aW50NjRf
dCBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRz
Q29ubmVjdGlvbgorRGlkUG9zdE1lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1l
c3NhZ2VIYW5kbGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5lY3Rp
b24KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCAxZjI2MDI5MWNj
Ny4uYmQzN2JhMGM5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAg
LTExOSw3ICsxMTksNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5OjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKQogICAgICAgICBpZiAobV9ncmFudGVkUmVxdWVz
dHMuaXNFbXB0eSgpICYmICEqb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwdHVyZURldmljZXNDaGFuZ2VkKCkpOwog
ICAgIH07CiAKICAgICBhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUobV9wYWdlLm1haW5GcmFtZSgpLT51cmwoKSk7CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGVueVJlcXVlc3QodWludDY0
X3QgdXNlck1lZGlhSUQsIFUKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHVzZXJNZWRp
YUlELCAiLCByZWFzb246ICIsIHJlYXNvbik7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
ICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNj
ZXNzV2FzRGVuaWVkKHVzZXJNZWRpYUlELCB0b1dlYkNvcmUocmVhc29uKSwgaW52YWxpZENvbnN0
cmFpbnQpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQodXNlck1lZGlhSUQsIHRvV2ViQ29yZShyZWFz
b24pLCBpbnZhbGlkQ29uc3RyYWludCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVhc29u
KTsKICAgICBVTlVTRURfUEFSQU0oaW52YWxpZENvbnN0cmFpbnQpOwpAQCAtMjk2LDExICsyOTYs
MTEgQEAgYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z3JhbnRB
Y2Nlc3MoY29uc3QgVXNlck1lZGlhUGVybWlzc2kKICAgICB9CiAKICAgICArK21faGFzUGVuZGlu
Z0NhcHR1cmU7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCB7IHJl
cXVlc3QudXNlck1lZGlhSUQoKSwgcmVxdWVzdC5hdWRpb0RldmljZSgpLCByZXF1ZXN0LnZpZGVv
RGV2aWNlKCksIHJlcXVlc3QuZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KCkgfSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkIHsgcmVxdWVz
dC51c2VyTWVkaWFJRCgpLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCksIHJlcXVlc3QudmlkZW9EZXZp
Y2UoKSwgcmVxdWVzdC5kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoKSB9LCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAtLW1faGFzUGVuZGluZ0NhcHR1cmU7Ci0gICAgfSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpAQCAt
NjA4LDcgKzYwOCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2CiAKICAgICAgICAgICAgIGJv
b2wgcmV2ZWFsSWRzQW5kTGFiZWxzID0gb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcyB8fCB3YXNH
cmFudGVkVmlkZW9PckF1ZGlvQWNjZXNzKGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
LmdldCgpLCB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpKTsKIAotICAgICAgICAgICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZU1lZGlhRGV2
aWNlRW51bWVyYXRpb24geyB1c2VyTWVkaWFJRCwgY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChy
ZXZlYWxJZHNBbmRMYWJlbHMsIGRldmljZUlESGFzaFNhbHQpLCBkZXZpY2VJREhhc2hTYWx0LCBv
cmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIH0sIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgICAgICAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVNZWRpYURldmljZUVu
dW1lcmF0aW9uIHsgdXNlck1lZGlhSUQsIGNvbXB1dGVGaWx0ZXJlZERldmljZUxpc3QocmV2ZWFs
SWRzQW5kTGFiZWxzLCBkZXZpY2VJREhhc2hTYWx0KSwgZGV2aWNlSURIYXNoU2FsdCwgb3JpZ2lu
SGFzUGVyc2lzdGVudEFjY2VzcyB9KTsKICAgICAgICAgfSk7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXggMjQ4
MTgyZDgwOTIuLjc2ODA2ZDQ4NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTY2LDEwICs2NiwxMCBAQCBzdGF0aWMgY29u
c3QgZmxvYXQgbWluaW11bVNjcm9sbEV2ZW50UmF0aW9Gb3JTd2lwZSA9IDAuNTsKIHN0YXRpYyBj
b25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rp
b24gPSAwLjU7CiAjZW5kaWYKIAotc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFZpZXdHZXN0dXJl
Q29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKQorc3RhdGlj
IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2Vz
dHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKQogewogICAgIC8vIFRoZSBrZXkgaW4gdGhpcyBt
YXAgaXMgdGhlIGFzc29jaWF0ZWQgcGFnZSBJRC4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDx1aW50NjRfdCwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJlQ29u
dHJvbGxlcnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UGFnZUlkZW50aWZp
ZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+PiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzOwogICAg
IHJldHVybiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzLmdldCgpOwogfQogCkBAIC0xMTYsNyArMTE2
LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbm5lY3RUb1Byb2Nlc3MoKQogICAg
IG1faXNDb25uZWN0ZWRUb1Byb2Nlc3MgPSB0cnVlOwogfQogCi1WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1cmUodWludDY0X3Qg
cGFnZUlELCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBnZXN0dXJlSUQpCitWaWV3
R2VzdHVyZUNvbnRyb2xsZXIqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdl
c3R1cmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1
cmVJRCBnZXN0dXJlSUQpCiB7CiAgICAgYXV0byBnZXN0dXJlQ29udHJvbGxlckl0ZXIgPSB2aWV3
R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKS5maW5kKHBhZ2VJRCk7CiAgICAgaWYgKGdl
c3R1cmVDb250cm9sbGVySXRlciA9PSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMo
KS5lbmQoKSkKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
Zm9yY2VSZXBhaW50SWZOZWVkZWQoKQogCiAgICAgbV9oYXNPdXRzdGFuZGluZ1JlcGFpbnRSZXF1
ZXN0ID0gdHJ1ZTsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAgICAgR2Vz
dHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBtX3dlYlBhZ2VQcm94
eS5mb3JjZVJlcGFpbnQoVm9pZENhbGxiYWNrOjpjcmVhdGUoW3BhZ2VJRCwgZ2VzdHVyZUlEXSAo
Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29u
dHJvbGxlciA9IGNvbnRyb2xsZXJGb3JHZXN0dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKQEAgLTYx
Nyw3ICs2MTcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVxdWVzdFJlbmRlclRy
ZWVTaXplTm90aWZpY2F0aW9uSWZOZWVkZWQoKQogICAgIGF1dG8mIHByb2Nlc3MgPSBtX3dlYlBh
Z2VQcm94eS5wcm92aXNpb25hbFBhZ2VQcm94eSgpID8gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9u
YWxQYWdlUHJveHkoKS0+cHJvY2VzcygpIDogbV93ZWJQYWdlUHJveHkucHJvY2VzcygpOwogICAg
IGF1dG8gdGhyZXNob2xkID0gbV9zbmFwc2hvdFJlbW92YWxUcmFja2VyLnJlbmRlclRyZWVTaXpl
VGhyZXNob2xkKCk7CiAKLSAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHRo
cmVzaG9sZCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBwcm9jZXNzLnNlbmQoTWVz
c2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90
aWZpY2F0aW9uVGhyZXNob2xkKHRocmVzaG9sZCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRv
VUludDY0KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggNDMxYzI3NjZkMDguLmMxNjcwZDNhOTRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25v
dG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CkBAIC0xNzUsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIFZpZXdHZXN0dXJlQ29udHJv
bGxlciogY29udHJvbGxlckZvckdlc3R1cmUodWludDY0X3QgcGFnZUlELCBHZXN0dXJlSUQpOwor
ICAgIHN0YXRpYyBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JHZXN0dXJlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBHZXN0dXJlSUQpOwogCiAgICAgc3RhdGljIEdlc3R1cmVJ
RCB0YWtlTmV4dEdlc3R1cmVJRCgpOwogICAgIHZvaWQgd2lsbEJlZ2luR2VzdHVyZShWaWV3R2Vz
dHVyZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNw
cAppbmRleCBmMmU3YjkzNDA1Ny4uOTkxZGMyZmNmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBWaXNp
dGVkTGlua1N0b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94
eSYsIElQQzo6Q29ubmUKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFZpc2l0
ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
U2hhcmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkKK3ZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlz
aXRlZExpbmtIYXNoRnJvbVBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaGFyZWRTdHJpbmdI
YXNoIGxpbmtIYXNoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBXZWJQcm9jZXNz
UHJveHk6OndlYlBhZ2UocGFnZUlEKSkgewogICAgICAgICBpZiAoIXdlYlBhZ2VQcm94eS0+YWRk
c1Zpc2l0ZWRMaW5rcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9y
ZS5oCmluZGV4IDA2ZjIwYmE5MWNiLi4wMmI0OWJhYzU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkSW52YWxpZGF0ZVNoYXJlZE1lbW9yeSgpIGZpbmFsOwogICAgIHZvaWQgZGlkVXBk
YXRlU2hhcmVkU3RyaW5nSGFzaGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdI
YXNoPiYgYWRkZWRIYXNoZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNo
PiYgcmVtb3ZlZEhhc2hlcykgZmluYWw7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFzaEZy
b21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCk7CisgICAg
dm9pZCBhZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCk7CiAKICAgICB2b2lkIHNlbmRTdG9yZUhhbmRsZVRv
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KaW5kZXggZTc4NjJlMzY1YjAuLjJl
NjZjNDI4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlu
a1N0b3JlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRM
aW5rU3RvcmUubWVzc2FnZXMuaW4KQEAgLTIxLDUgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAog
bWVzc2FnZXMgLT4gVmlzaXRlZExpbmtTdG9yZSB7Ci0gICAgQWRkVmlzaXRlZExpbmtIYXNoRnJv
bVBhZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBsaW5rSGFzaCkKKyAgICBBZGRWaXNpdGVk
TGlua0hhc2hGcm9tUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IGxpbmtIYXNoKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRWRp
dENvbW1hbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFu
ZFByb3h5LmNwcAppbmRleCA4N2IwYWZjMjBjMi4uMGRiZTBhZmI0MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94eTo6dW5hcHBseSgpCiAgICAgaWYgKCFtX3BhZ2Ug
fHwgIW1fcGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVkaXRDb21t
YW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OwogICAgIG1fcGFnZS0+cmVnaXN0ZXJFZGl0Q29tbWFuZCgqdGhpcywgVW5kb09yUmVkbzo6UmVk
byk7CiB9CiAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBXZWJFZGl0Q29tbWFuZFByb3h5OjpyZWFw
cGx5KCkKICAgICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZWFwcGx5RWRpdENvbW1hbmQobV9jb21tYW5kSUQpLCBtX3BhZ2UtPnBhZ2VJRCgp
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFwcGx5RWRpdENv
bW1hbmQobV9jb21tYW5kSUQpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAgICAgbV9wYWdlLT5yZWdpc3RlckVkaXRDb21tYW5k
KCp0aGlzLCBVbmRvT3JSZWRvOjpVbmRvKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmNwcAppbmRleCA1Yzg1MWI3Mjc1NS4uYjAxYjMwNTA1MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZv
aWQgV2ViRnJhbWVQcm94eTo6bG9hZFVSTChjb25zdCBVUkwmIHVybCkKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFVSTEluRnJhbWUodXJsLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkxJbkZyYW1l
KHVybCwgbV9mcmFtZUlEKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZERhdGEoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMKQpAQCAtOTIsNyArOTIs
NyBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVAogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b2FkRGF0YUluRnJhbWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9m
cmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkRGF0YUluRnJhbWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFz
ZVVSTCwgbV9mcmFtZUlEKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmco
KSBjb25zdApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRp
bmcoKSBjb25zdAogICAgIGlmICghbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcExvYWRpbmdGcmFtZShtX2ZyYW1lSUQp
KTsKIH0KICAgICAKIGJvb2wgV2ViRnJhbWVQcm94eTo6Y2FuUHJvdmlkZVNvdXJjZSgpIGNvbnN0
CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpjb2xsYXBzZVNlbGVjdGlv
bigpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZSht
X2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShtX2ZyYW1lSUQpKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHkuY3BwCmluZGV4IDhlOTNiMWRjMmQwLi5lYzY5OGUxNjBjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAK
QEAgLTU2LDEzICs1NiwxMyBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp+V2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eSgpCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxF
bnRlckZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50KCkud2lsbEVu
dGVyRnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpXaWxsRW50ZXJGdWxsU2NyZWVuKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OmRpZEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGll
bnQoKS5kaWRFbnRlckZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsU2NyZWVuKCks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxTY3JlZW4oKSk7CiAKICAgICBpZiAobV9wYWdlLmlzQ29u
dHJvbGxlZEJ5QXV0b21hdGlvbigpKSB7CiAgICAgICAgIGlmIChXZWJBdXRvbWF0aW9uU2Vzc2lv
biogYXV0b21hdGlvblNlc3Npb24gPSBtX3BhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0
b21hdGlvblNlc3Npb24oKSkKQEAgLTczLDEzICs3MywxMyBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbFNjcmVlbigpCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHk6OndpbGxFeGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5D
bGllbnQoKS53aWxsRXhpdEZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsU2NyZWVu
KCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxTY3JlZW4oKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxs
c2NyZWVuQ2xpZW50KCkuZGlkRXhpdEZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxT
Y3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCkpOwogICAgIAogICAgIGlmICht
X3BhZ2UuaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkpIHsKICAgICAgICAgaWYgKFdlYkF1dG9t
YXRpb25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQpAQCAtODksMTIgKzg5LDEyIEBAIHZvaWQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQogCiB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYm9vbCBhbmltYXRp
bmcpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVu
TWFuYWdlcjo6U2V0QW5pbWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0
QW5pbWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpyZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKQogewotICAgIG1fcGFnZS5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlcXVlc3RFeGl0RnVs
bFNjcmVlbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkpOwogfQogCiB2b2lk
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhL
ZXlib2FyZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTEwOCwyNyArMTA4LDI3IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
c3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9uCiAKIHZvaWQg
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2F2ZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBt
X3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTYXZl
U2Nyb2xsUG9zaXRpb24oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNhdmVTY3JvbGxQb3NpdGlvbigpKTsKIH0KIAog
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpyZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQog
ewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXI6OlJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNjcm9sbFBvc2l0
aW9uKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3Jl
ZW5JbnNldHMoY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGluc2V0cykKIHsKLSAgICBt
X3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRG
dWxsc2NyZWVuSW5zZXRzKGluc2V0cyksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNl
bmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuSW5zZXRzKGlu
c2V0cykpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3Jl
ZW5BdXRvSGlkZUR1cmF0aW9uKFNlY29uZHMgZHVyYXRpb24pCiB7Ci0gICAgbV9wYWdlLnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1
dG9IaWRlRHVyYXRpb24oZHVyYXRpb24pLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1dG9IaWRl
RHVyYXRpb24oZHVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpzZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oYm9vbCBoaWRkZW4pCiB7Ci0gICAgbV9wYWdl
LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNj
cmVlbkNvbnRyb2xzSGlkZGVuKGhpZGRlbiksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJv
bHNIaWRkZW4oaGlkZGVuKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3Bw
CmluZGV4IDEyYmIyNjFkMDdjLi44NTkxMzhlZThiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpT
ZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkp
OworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNl
bmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSk7CiB9CiAKIC8vIFB1YmxpYyBBUElzCkBAIC0x
MjcsNyArMTI3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCgpCiAgICAgY3Jl
YXRlRnJvbnRlbmRQYWdlKCk7CiAKICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyOjpOb3RpZnlOZWVkRGVi
dWdnZXJCcmVhaygpLCAwKTsKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3co
KSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQpAQCAtMTYxLDcgKzE2MSw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlKCkKICAgICBpZiAoIW1faW5zcGVjdGVk
UGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6Q2xvc2UoKSk7CiAKICAgICBjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOwogfQpAQCAt
MTk5LDcgKzE5OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnVwZGF0ZUZvck5ld1BhZ2VQ
cm9jZXNzKFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSkKICAgICBtX2luc3BlY3RlZFBhZ2Ut
PnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlz
KTsKIAogICAgIGlmIChtX2luc3BlY3RvclBhZ2UpCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25uZWN0aW9u
KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25uZWN0aW9uKCkpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBDOjpBdHRh
Y2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29u
bmVjdGlvbklkZW50aWZpCiAgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgbV9p
bnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OlNldEZyb250ZW5kQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRp
ZmllcikpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgpCkBAIC0y
MTcsNyArMjE3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd0NvbnNvbGUoKQogCiAg
ICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dDb25zb2xlKCksIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpTaG93Q29uc29sZSgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
c2hvd1Jlc291cmNlcygpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6c2hvd1Jlc291cmNlcygpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1f
aW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hv
d1Jlc291cmNlcygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jlc291cmNlcygpKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1RpbWVsaW5lcygpCkBAIC0yMzcsNyArMjM3
LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1RpbWVsaW5lcygpCiAKICAgICBjcmVh
dGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1RpbWVsaW5lcygpLCBtX2luc3BlY3RlZFBhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2hvd1RpbWVsaW5lcygpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hv
d01haW5SZXNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQpAQCAtMjQ3LDcgKzI0
Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShX
ZWJGcmFtZVByb3h5KiBmcmFtZSkKIAogICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCi0gICAg
bV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
aG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIG1faW5zcGVjdGVkUGFn
ZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0b20oKQpAQCAtMjc4LDE5ICsyNzgs
MTkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKEF0dGFjaG1lbnRTaWRlIHNpZGUp
CiAgICAgaWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMo
KS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZCh0cnVlKTsKIAotICAgIG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQodHJ1
ZSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSk7CiAKICAgICBzd2l0
Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206
Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
QXR0YWNoZWRCb3R0b20oKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBdHRhY2htZW50
U2lkZTo6UmlnaHQ6Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
QXR0YWNobWVudFNpZGU6OkxlZnQ6Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZExlZnQoKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC0zMDcsOCArMzA3LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKCkK
ICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygp
LnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGZhbHNlKTsKIAotICAgIG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFs
c2UpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKGZhbHNlKSk7CisgICAgbV9pbnNwZWN0b3JQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSk7CiAKICAgICBwbGF0
Zm9ybURldGFjaCgpOwogfQpAQCAtMzQxLDkgKzM0MSw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnRvZ2dsZVBhZ2VQcm9maWxpbmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9p
c1Byb2ZpbGluZ1BhZ2UpCi0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcFBhZ2VQcm9maWxpbmcoKSwgbV9pbnNwZWN0ZWRQ
YWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpKTsKICAgICBlbHNlCi0gICAgICAgIG1f
aW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3Rh
cnRQYWdlUHJvZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBt
X2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJv
ZmlsaW5nKCkpOwogCiAgICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mgbm90aWZ5IHVz
IG9uIHN0YXRlIGNoYW5nZXMuCiAgICAgbV9pc1Byb2ZpbGluZ1BhZ2UgPSAhbV9pc1Byb2ZpbGlu
Z1BhZ2U7CkBAIC0zNTYsMTAgKzM1NiwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dn
bGVFbGVtZW50U2VsZWN0aW9uKCkKIAogICAgIGlmIChtX2VsZW1lbnRTZWxlY3Rpb25BY3RpdmUp
IHsKICAgICAgICAgbV9pZ25vcmVFbGVtZW50U2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKLSAgICAg
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTdG9wRWxlbWVudFNlbGVjdGlvbigpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BF
bGVtZW50U2VsZWN0aW9uKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbm5lY3QoKTsKLSAg
ICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTdGFydEVsZW1lbnRTZWxlY3Rpb24oKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
dGFydEVsZW1lbnRTZWxlY3Rpb24oKSk7CiAgICAgfQogfQogCkBAIC00MTIsNyArNDEyLDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9vbCBj
YW5BdHRhY2gsIGJvb2wgdW5kZXJUZXMKICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24obV9pbnNwZWN0ZWRQYWdlLT5w
YWdlSUQoKSwgbV91bmRlclRlc3QsIGluc3BlY3Rpb25MZXZlbCgpKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBt
X3VuZGVyVGVzdCwgaW5zcGVjdGlvbkxldmVsKCkpKTsKIAogICAgIEFTU0VSVCghbV9pc0FjdGl2
ZUZyb250ZW5kKTsKICAgICBtX2lzQWN0aXZlRnJvbnRlbmQgPSB0cnVlOwpAQCAtNDIzLDI2ICs0
MjMsMjYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRl
bmQoYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXMKICAgICAgICAgbV9pc0F0dGFjaGVkID0g
c2hvdWxkT3BlbkF0dGFjaGVkKCk7CiAgICAgICAgIG1fYXR0YWNobWVudFNpZGUgPSBzdGF0aWNf
Y2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9y
QXR0YWNobWVudFNpZGUoKSk7CiAKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQpLCBt
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCkpOwogCiAg
ICAgICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9hdHRhY2ht
ZW50U2lkZSkgewogICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgotICAg
ICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgp
KTsKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6UmlnaHQ6Ci0gICAgICAgICAgICAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkF0dGFjaGVkUmlnaHQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0
YWNoZWRSaWdodCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2Fz
ZSBBdHRhY2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRMZWZ0KCks
IG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1faW5zcGVjdG9y
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAg
ICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRh
Y2hlZCgpKTsKIAotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0dGFjaCks
IG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2Fu
QXR0YWNoKSk7CiAgICAgfQogCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwo
VVJMKCksIG1fdW5kZXJUZXN0ID8gV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclRlc3RQYWdl
VVJMKCkgOiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpKSk7CkBAIC00NTgs
NyArNDU4LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiAKICAgICBTZXRGb3JT
Y29wZTxib29sPiBpc09wZW5pbmcobV9pc09wZW5pbmcsIHRydWUpOwogICAgIG1faXNWaXNpYmxl
ID0gdHJ1ZTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSk7CiAKICAgICBpZiAobV9pc0F0dGFj
aGVkKQogICAgICAgICBwbGF0Zm9ybUF0dGFjaCgpOwpAQCAtNDg1LDggKzQ4NSw4IEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIAogICAgIHVu
dHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSk7CiAKLSAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxl
KG1faXNWaXNpYmxlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7Ci0gICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpTZXRJc1Zpc2libGUobV9pc1Zpc2libGUpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkpOwogCiAgICAgaWYgKG1faXNBY3RpdmVGcm9udGVuZCkgewog
ICAgICAgICBtX2lzQWN0aXZlRnJvbnRlbmQgPSBmYWxzZTsKQEAgLTU0OSw3ICs1NDksNyBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wgYXZh
aWxhYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pbnNwZWN0b3JQYWdlICYmICFt
X3VuZGVyVGVzdCkKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9jYW5BdHRhY2gp
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2Nh
bkF0dGFjaCkpOwogCiAgICAgcGxhdGZvcm1BdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKG1fY2Fu
QXR0YWNoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4
IDY1NmM4ZGNjNTljLi4yYTU0ZGU5ZDZjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCkBAIC0zODEsMTIgKzM4MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9y
TW9zdFZpc2libGVXZWJQYWdlSWZBbnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBT
ZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlbGVjdGVkUGFnZSk7CiB9CiAKLVJlZjxXZWJQYWdl
UHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5
OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNz
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNv
bmZpZ3VyYXRpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGFnZVByb3h5KHBh
Z2VDbGllbnQsIHByb2Nlc3MsIHBhZ2VJRCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOwogfQog
Ci1XZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKK1dlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9u
KQogICAgIDogbV9wYWdlQ2xpZW50KG1ha2VXZWFrUHRyKHBhZ2VDbGllbnQpKQogICAgICwgbV9j
b25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX25hdmlnYXRpb25D
bGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkpCkBAIC00MzUsNyAr
NDM1LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICNlbmRpZgogICAgICwgbV9yZXNldFJl
Y2VudENyYXNoQ291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlUHJveHk6
OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJjb25zdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAKICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+ZHJhd3NCYWNrZ3JvdW5kKCkpCiAg
ICAgICAgIG1fYmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKQEAg
LTQ4OSw3ICs0ODksNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogCiBXZWJQYWdlUHJveHk6
On5XZWJQYWdlUHJveHkoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImRlc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRlc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAK
ICAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdlKG1fcGFnZUlEKSAhPSB0aGlzKTsKICNpZiAh
QVNTRVJUX0RJU0FCTEVECkBAIC02MTMsNyArNjEzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFVJQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6OlVJQ2xpZW50PiYmIHVpQ2xpZW50KQogICAg
IG1fdWlDbGllbnQgPSBXVEZNb3ZlKHVpQ2xpZW50KTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJv
Y2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENh
blJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChtX3VpQ2xpZW50LT5jYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoKSksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0Q2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlDbGllbnQtPmNhblJ1
bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKSk7CiAKICAgICBzZXRDYW5SdW5Nb2RhbChtX3Vp
Q2xpZW50LT5jYW5SdW5Nb2RhbCgpKTsKICAgICBzZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKG1fdWlD
bGllbnQtPm5lZWRzRm9udEF0dHJpYnV0ZXMoKSk7CkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Oklj
b25Mb2FkaW5nQ2xpZW50PiYKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNl
SWNvbkxvYWRpbmdDbGllbnQoaGFzQ2xpZW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGhhc0NsaWVudCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5k
Q2xpZW50PiYmIGZpbmRDbGllbnQpCkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmxhdW5jaFByb2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKQogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAgICAgQVNTRVJUKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFBy
b2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxhdW5jaFByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRoaXMsIFdlYlByb2Nlc3NQcm94eTo6RW5kc1Vz
aW5nRGF0YVN0b3JlOjpZZXMpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQp
OwpAQCAtNzYzLDcgKzc2Myw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBh
Z2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBv
c3NpYmxlOiBTdXNwZW5kaW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwogICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlS
ZWYoKSwgKm1haW5GcmFtZUlELCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUpOwogCi0gICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBh
Z2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNz
IHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCksIHN1c3BlbmRl
ZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBm
cm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOworICAgIExPRyhQ
cm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5k
ZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1
NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVt
SUQoKS5sb2dTdHJpbmcoKSA6IDApOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBmb3JjZWQgYSBz
d2FwIHRoZW4gaXQgbWF5IG5vdCBiZSB3ZWItY29tcGF0aWJsZSB0byBrZWVwIHRoZSBwcmV2aW91
cyBwYWdlIGJlY2F1c2Ugb3RoZXIgd2luZG93cyBtYXkgaGF2ZSBhbiBvcGVuZXIgbGluayB0byBp
dC4gV2UgdGh1cyBjbG9zZSBpdCBhcyBzb29uIGFzIHdlCiAgICAgLy8gY2FuIGRvIHNvIHdpdGhv
dXQgZmxhc2hpbmcuCkBAIC03ODEsNyArNzgxLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3Bl
bmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQK
IHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2Vzcywgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+JiYgZHJhd2luZ0Fy
ZWEsIFJlZlB0cjxXZWJGcmFtZVByb3h5PiYmIG1haW5GcmFtZSkKIHsKICAgICBBU1NFUlQoIW1f
aXNDbG9zZWQpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1dl
YlByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgInN3YXBUb1dlYlByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAKICAgICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAgIG1fd2Vic2l0ZURhdGFT
dG9yZSA9IG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpOwpAQCAtODczLDEwICs4NzMsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQo
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NG
b3JSZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCkBA
IC04ODUsMTQgKzg4NSwxNCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogICAgIGxhdW5jaFByb2Nlc3MocmVnaXN0cmFibGVE
b21haW4pOwogCiAgICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9y
UmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJl
bG9hZDogbm8gY3VycmVudCBpdGVtIHRvIHJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgYXV0byBuYXZpZ2F0
aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAogICAg
IC8vIFdlIGFsbG93IHN0YWxlIGNvbnRlbnQgd2hlbiByZWxvYWRpbmcgYSBXZWJQcm9jZXNzIHRo
YXQncyBiZWVuIGtpbGxlZCBvciBjcmFzaGVkLgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQo
KSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1JRCgpLCBGcmFtZUxvYWRU
eXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8s
IFdURjo6bnVsbG9wdCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
b1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBtX2JhY2tGb3J3
YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRC
YWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0
KSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAg
IHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtOTAwLDEwICs5MDAsMTAgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIAogUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRo
SXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHBhZ2UgaXMg
Y2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTkxNSw3ICs5MTUsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9u
PiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJ
dAogCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUJhY2tG
b3J3YXJkTmF2aWdhdGlvbihpdGVtLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSwg
RnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkKTsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3
YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShu
YXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6
SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6
Om51bGxvcHQpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgp
OwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNsb3NlKCkKICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY2xvc2U6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9pc0Nsb3NlZCA9IHRydWU7CiAKQEAg
LTEwMDksNyArMTAwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAKICAgICBtX3By
b2Nlc3MtPnByb2Nlc3NQb29sKCkucmVtb3ZlQWxsU3VzcGVuZGVkUGFnZXNGb3JQYWdlKCp0aGlz
KTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCkpOwogICAgIG1fcHJv
Y2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRh
U3RvcmU6Olllcyk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAgICAg
bV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBsZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnModGhpcyk7CkBAIC0xMDMxLDE0ICsxMDMxLDE0
IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp0cnlDbG9zZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgInRyeUNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYgdGhlIHByb2Nlc3MgYWxsb3dz
IGl0LiBPdXIgZ29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0aGUgcHJvY2Vzcywgc28gd2Ug
Y2hlY2sgYSBwZXItcHJvY2VzcyBzdGF0dXMgYml0LgogICAgIGlmIChtX3Byb2Nlc3MtPmlzU3Vk
ZGVuVGVybWluYXRpb25FbmFibGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VHJ5Q2xvc2UoKSk7CiAgICAgbV9wcm9jZXNzLT5y
ZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0x
MDc3LDcgKzEwNzcsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6Omxv
YWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgIGlmIChtX2lzQ2xv
c2VkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1
bmNoUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiB7IHJlcXVlc3QudXJsKCkgfSk7CkBAIC0xMDkx
LDcgKzEwOTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlv
blNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogewogICAgIEFTU0VSVCghbV9p
c0Nsb3NlZCk7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRl
LnRyYW5zYWN0aW9uKCk7CiAKQEAgLTExMTQsMTYgKzExMTQsMTYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXMKICAgICAgICAgd2lsbEFjcXVpcmVVbml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRl
bnNpb24ocHJvY2Vzcyk7CiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1l
dGVycyk7CiAKLSAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVz
dChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kVG9Qcm9jZXNzKHByb2Nlc3Ms
IE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycykpOwogICAgIHBy
b2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0
cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZywgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkRmlsZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlm
IChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiAg
ICAgVVJMIGZpbGVVUkwgPSBVUkwoVVJMKCksIGZpbGVVUkxTdHJpbmcpOwogICAgIGlmICghZmls
ZVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlz
IG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTQyLDcgKzExNDIsNyBAQCBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmlu
ZywgY29ucwogICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChV
UkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIXJlc291cmNl
RGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xMTY0LDcgKzExNjQsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAg
IGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAgICAgbV9wcm9j
ZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCByZXNvdXJjZURpcmVjdG9yeVVS
TCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChs
b2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycykpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5l
c3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTExNzIsMTAg
KzExNzIsMTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmls
ZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKIAogUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0
IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTg5LDcgKzExODksNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRo
TmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2
aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25z
dCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcm
IGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVz
RGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb246IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApA
QCAtMTIwOSwxOSArMTIwOSwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2
aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgYWRkUGxh
dGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKICAgICBwcm9jZXNzLT5hc3N1
bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCBiYXNlVVJMKTsKLSAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsK
KyAgICBzZW5kVG9Qcm9jZXNzKHByb2Nlc3MsIE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShs
b2FkUGFyYW1ldGVycykpOwogICAgIHByb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFy
dCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3Qg
VVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVy
bmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogCiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGhhbmRs
aW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBub3QgYXR0ZW1wdCB0bwogICAgIC8v
IHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9hZCBhcyB0aGlzIHdpbGwgcHJldmVu
dCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKICAgICAvLyBoYW5kbGVkIHByb3Blcmx5
LgogICAgIGlmIChtX2lzQ2xvc2VkIHx8IG1faXNMb2FkaW5nQWx0ZXJuYXRlSFRNTFN0cmluZ0Zv
ckZhaWxpbmdQcm92aXNpb25hbExvYWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhlcik6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1
MiwxNiArMTI1MiwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgUwogCiAgICAgbV9wcm9jZXNz
LT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCBiYXNlVVJMKTsKICAgICBtX3Byb2Nl
c3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIHVucmVhY2hhYmxlVVJMKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRBbHRlcm5hdGVIVE1MKGxv
YWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxv
YWRBbHRlcm5hdGVIVE1MKGxvYWRQYXJhbWV0ZXJzKSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25z
aXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJB
cmNoaXZlRGF0YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hp
dmVEYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdl
YkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI3OSwxNiArMTI3OSwxNiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURh
dGEsIEFQSTo6T2JqZWN0KiB1cwogICAgIGxvYWRQYXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRh
dGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsK
ICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBh
cmFtZXRlcnMpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVk
Q2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIEludFBvaW50IGRvY3VtZW50UG9pbnQsIElu
dFBvaW50IHNjcmVlblBvaW50KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljazogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTI5OCwyMCArMTI5OCwyMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxp
bmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9t
YWluIHsgVVJMKFVSTCgpLCB1cmxTdHJpbmcpIH0pOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayh1cmxT
dHJpbmcsIGRvY3VtZW50UG9pbnQsIHNjcmVlblBvaW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6Ok5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKHVy
bFN0cmluZywgZG9jdW1lbnRQb2ludCwgc2NyZWVuUG9pbnQpKTsKICAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3Rv
cExvYWRpbmcoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BM
b2FkaW5nOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJzdG9wTG9hZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBp
cyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFn
ZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0
b3BMb2FkaW5nKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9w
TG9hZGluZygpKTsKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKICAgICAgICAgbV9wcm92
aXNpb25hbFBhZ2UtPmNhbmNlbCgpOwogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxw
dHI7CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmco
KQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25T
ZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgInJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25I
YW5kbGU7CiAKQEAgLTEzNDYsNyArMTM0Niw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6cmVsb2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wCiAg
ICAgaWYgKG9wdGlvbnMuY29udGFpbnMoV2ViQ29yZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29u
dGVudEJsb2NrZXJzKSkKICAgICAgICAgbmF2aWdhdGlvbi0+c2V0VXNlckNvbnRlbnRFeHRlbnNp
b25zRW5hYmxlZChmYWxzZSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlbG9hZChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgb3B0aW9ucy50b1JhdygpLCBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlbG9hZChuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgb3B0aW9ucy50b1Jhdygp
LCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtMTM5OCw3ICsx
Mzk4LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zv
cndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFja0Zvcndh
cmRJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgIExPRyhMb2FkaW5nLCAi
V2ViUGFnZVByb3h5ICVwIGdvVG9CYWNrRm9yd2FyZEl0ZW0gdG8gaXRlbSBVUkwgJXMiLCB0aGlz
LCBpdGVtLnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQpAQCAtMTQxMiw3ICsxNDEyLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICBp
ZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSXNJblNhbWVEb2N1bWVu
dChpdGVtKSkKICAgICAgICAgbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVC
YWNrRm9yd2FyZE5hdmlnYXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVt
KCksIGZyYW1lTG9hZFR5cGUpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0
aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUsIFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24gPyBuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZyYW1lTG9hZFR5cGUsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCkpOwogICAgIG1fcHJv
Y2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdh
dGlvbjsKQEAgLTE0MjAsMTQgKzE0MjAsMTQgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0
cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5vdCB2
YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQ6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeVJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VHJ5UmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFj
a0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkLCBWZWN0b3I8UmVmPFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYmIHJlbW92ZWQpCkBAIC0xNDg5LDcgKzE0ODksNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xs
ZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbnRyb2xsZWRCeUF1dG9t
YXRpb24oY29udHJvbGxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGNvbnRyb2xsZWQpKTsKICAgICBtX3Byb2Nlc3Mt
PnByb2Nlc3NQb29sKCkuc2VuZFRvTmV0d29ya2luZ1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpTZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKG1fd2Vic2l0ZURhdGFT
dG9yZS0+c2Vzc2lvbklEKCksIG1fY29udHJvbGxlZEJ5QXV0b21hdGlvbikpOwogfQogCkBAIC0x
NTE0LDcgKzE1MTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW5kaWNhdGluZyhib29sIGlu
ZGljYXRpbmcpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluZGljYXRpbmco
aW5kaWNhdGluZyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJ
bmRpY2F0aW5nKGluZGljYXRpbmcpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmFsbG93c1Jl
bW90ZUluc3BlY3Rpb24oKSBjb25zdApAQCAtMTU1MCw3ICsxNTUwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNsZWFySW5zcGVjdG9yVGFyZ2V0cygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVh
dGVJbnNwZWN0b3JUYXJnZXRzKCkKIHsKLSAgICBTdHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0
cmluZygicGFnZS0iLCBtX3BhZ2VJRCk7CisgICAgU3RyaW5nIHBhZ2VUYXJnZXRJZCA9IG1ha2VT
dHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgbV9pbnNwZWN0b3JDb250
cm9sbGVyLT5jcmVhdGVJbnNwZWN0b3JUYXJnZXQocGFnZVRhcmdldElkLCBJbnNwZWN0b3I6Oklu
c3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOwogfQogCkBAIC0xNTYxLDcgKzE1NjEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IE9wdGlvbmFsPENvbG9yPiYg
Y29sb3IpCiAKICAgICBtX2JhY2tncm91bmRDb2xvciA9IGNvbG9yOwogICAgIGlmIChoYXNSdW5u
aW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEJhY2tncm91bmRDb2xvcihjb2xvciksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudEluc2V0KQpAQCAtMTU3
Nyw5ICsxNTc3LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNldChmbG9h
dCBjb250ZW50SW5zZXQpCiAgICAgTWFjaFNlbmRSaWdodCBmZW5jZSA9IG1fZHJhd2luZ0FyZWEt
PmNyZWF0ZUZlbmNlKCk7CiAKICAgICBhdXRvIGZlbmNlQXR0YWNobWVudCA9IElQQzo6QXR0YWNo
bWVudChmZW5jZS5sZWFrU2VuZFJpZ2h0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldEZl
bmNlZChjb250ZW50SW5zZXQsIGZlbmNlQXR0YWNobWVudCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXRGZW5jZWQoY29udGVudEluc2V0
LCBmZW5jZUF0dGFjaG1lbnQpKTsKICNlbHNlCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXQoY29udGVudEluc2V0KSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldChjb250ZW50SW5z
ZXQpKTsKICNlbmRpZgogfQogCkBAIC0xNTkxLDcgKzE1OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0VW5kZXJsYXlDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgbV91bmRlcmxheUNv
bG9yID0gY29sb3I7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRlcmxheUNvbG9yKGNvbG9yKSwg
bV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVbmRlcmxheUNv
bG9yKGNvbG9yKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3V2lsbFN0YXJ0TGl2ZVJl
c2l6ZSgpCkBAIC0xNjAwLDE0ICsxNjAwLDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3V2ls
bFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNsb3NlT3ZlcmxheWVk
Vmlld3MoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxs
U3RhcnRMaXZlUmVzaXplKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpWaWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZp
ZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpW
aWV3V2lsbEVuZExpdmVSZXNpemUoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUmVnaW9uJiByZWdpb24pCkBAIC0xNzAxLDcgKzE3
MDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld0RpZEVudGVyV2luZG93KCkKICAgICBMYXll
ckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUgPSBwYWdlQ2xpZW50KCkudmlld0xheWVySG9z
dGluZ01vZGUoKTsKICAgICBpZiAobV9sYXllckhvc3RpbmdNb2RlICE9IGxheWVySG9zdGluZ01v
ZGUpIHsKICAgICAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJIb3N0aW5nTW9kZTsKLSAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdN
b2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSkpOwogICAgIH0K
IH0KIApAQCAtMTc1MCw3ICsxNzUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0
aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgYXV0byBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPSBtX2Fj
dGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9ub3VzUmVwbHkgPyB0YWtlTmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VJRCgpIDogc3RhdGljX2Nhc3Q8QWN0aXZpdHlTdGF0ZUNoYW5nZUlEPihBY3Rp
dml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzKTsKIAogICAgIGlmIChjaGFuZ2VkIHx8IGFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8ICFt
X25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZp
dHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdl
Q2FsbGJhY2tzKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBt
X25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKSk7CiAKICAgICBtX25leHRBY3Rpdml0
eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmNsZWFyKCk7CiAKQEAgLTE4NTMsNyArMTg1Myw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpsYXllckhvc3RpbmdNb2RlRGlkQ2hhbmdlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgbV9sYXllckhvc3RpbmdNb2RlID0gbGF5ZXJIb3N0aW5nTW9kZTsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5
ZXJIb3N0aW5nTW9kZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCkBAIC0xODk1LDIxICsxODk1LDIxIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRF
dmVudFZhbGlkLCBjb25zCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQs
IGtleWJvYXJkRXZlbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlk
LCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpj
bGVhclNlbGVjdGlvbigpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNl
bGVjdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJT
ZWxlY3Rpb24oKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlU2VsZWN0aW9uSW5G
b2N1c2VkRWRpdGFibGVFbGVtZW50KCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0
YWJsZUVsZW1lbnQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQo
Y29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBib29sLCBpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQpAQCAtMTkyMCw3ICsxOTIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQKICAgICB9
CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29t
bWFuZChjb21tYW5kTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmluY3JlYXNlTGlzdExldmVsKCkKQEAgLTE5MjgsNyAr
MTkyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RMZXZlbCgpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkluY3JlYXNlTGlzdExldmVsKCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxpc3RMZXZlbCgpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRlY3JlYXNlTGlzdExldmVsKCkKQEAgLTE5MzYsNyArMTkzNiw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNyZWFzZUxpc3RMZXZlbCgpCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRlY3JlYXNlTGlzdExldmVsKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZWNyZWFzZUxpc3RMZXZlbCgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmNoYW5nZUxpc3RUeXBlKCkKQEAgLTE5NDQsNyArMTk0NCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNoYW5nZUxpc3RUeXBlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDaGFuZ2VMaXN0VHlwZSgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEJh
c2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQpAQCAtMTk1Miw3
ICsxOTUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdy
aXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24pLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVGb250QXR0cmlidXRlc0FmdGVyRWRpdG9y
U3RhdGVDaGFuZ2UoKQpAQCAtMTk3Niw3ICsxOTc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCBuZWVkc0ZvbnRBdHRyaWJ1dGVzKQogICAgIG1fbmVl
ZHNGb250QXR0cmlidXRlcyA9IG5lZWRzRm9udEF0dHJpYnV0ZXM7CiAKICAgICBpZiAoaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKG5lZWRzRm9udEF0dHJpYnV0ZXMpLCBtX3BhZ2VJRCk7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE5lZWRzRm9udEF0dHJpYnV0ZXMo
bmVlZHNGb250QXR0cmlidXRlcykpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6bWFpbnRhaW5z
SW5hY3RpdmVTZWxlY3Rpb24oKSBjb25zdApAQCAtMTk5OSw3ICsxOTk5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRl
VXBkYXRlKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0QWxsKCkKQEAgLTIwMDcs
NyArMjAwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RBbGwoKQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RBbGwoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNlbGVjdEFsbCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4
ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcm
IGFyZ3VtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKQEAgLTIwMTgsNyArMjAxOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpl
eGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5n
JiBhCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpF
eGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUsIGFyZ3VtZW50LCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVF
ZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb21tYW5kTmFtZSwgYXJndW1lbnQsIGNhbGxiYWNrSUQp
KTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3Qg
U3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCkKQEAgLTIwMzEsNyAr
MjAzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3Ry
aW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhCiAgICAgaWYgKGNvbW1hbmROYW1lID09
IGlnbm9yZVNwZWxsaW5nQ29tbWFuZE5hbWUpCiAgICAgICAgICsrbV9wZW5kaW5nTGVhcm5Pckln
bm9yZVdvcmRNZXNzYWdlQ291bnQ7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgYXJndW1lbnQpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1h
bmROYW1lLCBhcmd1bWVudCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRB
dHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkZv
bnRBdHRyaWJ1dGVzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCkBAIC0yMDQy
LDcgKzIwNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRT
ZWxlY3Rpb25TdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0IFdlYgogICAgIH0KIAogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9u
U3RhcnQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNhbGxiYWNrSUQpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2soY29uc3QgV2ViQ29y
ZTo6Rm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAg
LTIwNjMsNyArMjA2Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRFZGl0YWJsZShib29sIGVk
aXRhYmxlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFZGl0YWJsZShlZGl0
YWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFZGl0YWJs
ZShlZGl0YWJsZSkpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhU3RyZWFt
Q2FwdHVyZU11dGVkKGJvb2wgbXV0ZWQpCkBAIC0yMTI4LDkgKzIxMjgsOSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9u
IGFjdGlvbiwgRHJhZwogCiAgICAgQVNTRVJUKGRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAg
ICBXZWJTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbigqZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9s
bGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEuY2xpZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEuZ2xv
YmFsUG9zaXRpb24oKSwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIHNl
bGVjdGlvbiwgZHJhZ0RhdGEuZmxhZ3MoKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5j
bGllbnRQb3NpdGlvbigpLCBkcmFnRGF0YS5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSwgc2VsZWN0aW9uLCBkcmFnRGF0YS5mbGFncygpKSk7
CiAjZWxzZQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURy
YWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEsIHNhbmRib3hFeHRlbnNpb25IYW5k
bGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdE
YXRhLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCkp
OwogI2VuZGlmCiB9CiAKQEAgLTIxNjAsNyArMjE2MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
cmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYg
Z2xvCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9z
aXRpb24sIGdsb2JhbFBvc2l0aW9uLCBvcGVyYXRpb24pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlv
biwgb3BlcmF0aW9uKSk7CiAgICAgc2V0RHJhZ0NhcmV0UmVjdCh7IH0pOwogfQogCkBAIC0yMTcy
LDEzICsyMTcyLDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRHJhZ09wZXJhdGlv
bihib29sIGhhbmRsZWQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnREcmFnKCkKIHsKICAg
ICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRTdGFydERyYWcoKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRTdGFydERyYWcoKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZHJhZ0NhbmNlbGxlZCgpCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0g
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0NhbmNlbGxlZCgp
LCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdDYW5jZWxs
ZWQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmREcmFnZ2luZygpCkBAIC0yMjc3
LDcgKzIyNzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2
ZW50KCkKICAgICB9CiAKICAgICBMT0coTW91c2VIYW5kbGluZywgIlVJUHJvY2Vzczogc2VudCBt
b3VzZSBldmVudCAlcyAocXVldWUgc2l6ZSAlenUpIiwgd2ViTW91c2VFdmVudFR5cGVTdHJpbmco
ZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVldWUuc2l6ZSgpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCkpOwogfQogCiAjaWYgTUVS
R0VfV0hFRUxfRVZFTlRTCkBAIC0yNDM3LDcgKzI0MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCkK
IAogICAgIGlmIChtX2tleUV2ZW50UXVldWUuc2l6ZSgpID09IDEpIHsgLy8gT3RoZXJ3aXNlLCBz
ZW50IGZyb20gRGlkUmVjZWl2ZUV2ZW50IG1lc3NhZ2UgaGFuZGxlci4KICAgICAgICAgTE9HKEtl
eUhhbmRsaW5nLCAiIFVJIHByb2Nlc3M6IHNlbnQga2V5RXZlbnQgZnJvbSBoYW5kbGVLZXlib2Fy
ZEV2ZW50Iik7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5
RXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OktleUV2ZW50KGV2ZW50KSk7CiAgICAgfQogfQogCkBAIC0yNjQzLDcgKzI2NDMsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudFN5bmNocm9ub3VzbHkoTmF0aXZlV2ViVG91
Y2hFdmVudCYgZXZlbnQpCiAKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5z
dGFydCgpOwogICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotICAgIGJvb2wgcmVwbHlSZWNlaXZl
ZCA9IG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5j
KGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jOjpSZXBseShoYW5kbGVk
KSwgbV9wYWdlSUQsIDFfcyk7CisgICAgYm9vbCByZXBseVJlY2VpdmVkID0gc2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6
OlRvdWNoRXZlbnRTeW5jOjpSZXBseShoYW5kbGVkKSwgMV9zKTsKICAgICAvLyBJZiB0aGUgc3lu
YyByZXF1ZXN0IGhhcyB0aW1lZCBvdXQsIHdlIHNob3VsZCBjb25zaWRlciB0aGUgZXZlbnQgaGFu
ZGxlZC4gVGhlIFdlYiBQcm9jZXNzIGlzIHRvbyBidXN5IHRvIGFuc3dlciBhbnkgcXVlc3Rpb25z
LCBzbyB0aGUgZGVmYXVsdCBhY3Rpb24gaXMgYWxzbyBsaWtlbHkgdG8gaGF2ZSBpc3N1ZXMuCiAg
ICAgaWYgKCFyZXBseVJlY2VpdmVkKQogICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKQEAgLTI2ODcs
NyArMjY4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5h
dGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAgIGlmICghbV9pc1BhZ2VTdXNwZW5kZWQpIHsK
ICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUuYXBwZW5kKGV2ZW50KTsKICAgICAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKLSAgICAgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50KGV2ZW50KSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgaWYgKG1fdG91Y2hFdmVudFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgYm9vbCBpc0V2ZW50SGFuZGxlZCA9IGZhbHNlOwpAQCAtMjcwOCwxMiArMjcwOCwxMiBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3Vj
aEV2ZW50JiBldmVudCkKICNpZiBFTkFCTEUoUE9JTlRFUl9FVkVOVFMpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2FuY2VsUG9pbnRlcihXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkLCBjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgZG9jdW1lbnRQb2ludCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbFBvaW50ZXIocG9pbnRlcklkLCBkb2N1bWVudFBvaW50
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbFBvaW50ZXIo
cG9pbnRlcklkLCBkb2N1bWVudFBvaW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3Vj
aFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChXZWJDb3JlOjpQb2ludGVySUQgcG9pbnRlcklkKQog
ewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hXaXRoSWRlbnRp
Zmllcldhc1JlbW92ZWQocG9pbnRlcklkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlRvdWNoV2l0aElkZW50aWZpZXJXYXNSZW1vdmVkKHBvaW50ZXJJZCkpOwogfQog
I2VuZGlmCiAKQEAgLTI3MjIsNyArMjcyMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY3JvbGxC
eShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbEJ5KGRpcmVjdGlvbiwgZ3JhbnVs
YXJpdHkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Nyb2xsQnko
ZGlyZWN0aW9uLCBncmFudWxhcml0eSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVy
U2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCkBAIC0yNzMwLDcgKzI3MzAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFy
ZWEoKSk7CiB9CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTo6UG9saWN5RGVjaXNpb25TZW5kZXIgOiBw
dWJsaWMgUmVmQ291bnRlZDxQb2xpY3lEZWNpc2lvblNlbmRlcj4gewpAQCAtMjg3Myw3ICsyODcz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0
aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFBy
b3Zpc2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIs
IHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYg
Y2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdl
YkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBh
Z2U6IHByZXZpb3VzUElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3Mo
KS5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBu
ZXdQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbWFpbkZyYW1l
SURJblByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFrZU9wdGlvbmFsKG1fbWFpbkZy
YW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OwogCkBAIC0yODk2LDcgKzI4OTYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiAgICAgLy8gVGhlcmUgaXMgbm8gd2F5IHdlJ2xsIGJl
IGFibGUgdG8gcmV0dXJuIHRvIHRoZSBwYWdlIGluIHRoZSBwcmV2aW91cyBwYWdlIHNvIGNsb3Nl
IGl0LgogICAgIGlmICghZGlkU3VzcGVuZFByZXZpb3VzUGFnZSkKLSAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBwYWdlSUQoKSk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCkpOwogCiAgICAgc3dhcFRvV2ViUHJvY2Vzcyht
X3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+dGFrZURyYXdp
bmdBcmVhKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5tYWluRnJhbWUoKSk7CiAKQEAgLTI5MTMsNyAr
MjkxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpj
b250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2VQcm94
eSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3Rl
ZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIE9wdGlvbmFsPFdlYnNpdGVQ
b2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzczogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBuZXdQcm9jZXNzUElEID0gJWksIGhhc1N1c3BlbmRl
ZFBhZ2UgPSAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIG5l
d1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJ
RCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKICAgICBMT0coTG9hZGluZywgIkNvbnRpbnVpbmcg
bmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGluIGEgbmV3IHdlYiBwcm9jZXNzIiwgbmF2aWdh
dGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dnaW5nU3RyaW5nKCkpOwogCiAgICAg
aWYgKG1fcHJvdmlzaW9uYWxQYWdlKSB7CkBAIC0yOTM4LDcgKzI5MzgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgcwogICAgIGlmIChtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSAm
JiAobmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRMaXN0KCkgPT0gTG9ja0JhY2tGb3J3YXJkTGlz
dDo6WWVzIHx8IG5hdmlnYXRpb24ubG9ja0hpc3RvcnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSkg
ewogICAgICAgICAvLyBJZiBXZWJDb3JlIGlzIHN1cHBvc2VkIHRvIGxvY2sgdGhlIGhpc3Rvcnkg
Zm9yIHRoaXMgbG9hZCwgdGhlbiB0aGUgbmV3IHByb2Nlc3MgbmVlZHMgdG8ga25vdyBhYm91dCB0
aGUgY3VycmVudCBoaXN0b3J5IGl0ZW0gc28gaXQgY2FuIHVwZGF0ZQogICAgICAgICAvLyBpdCBp
bnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS4KLSAgICAgICAgbmV3UHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VycmVudEhpc3RvcnlJdGVtRm9yUmVhdHRhY2gobV9iYWNr
Rm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1TdGF0ZSgpKSwgbV9wYWdlSUQpOworICAg
ICAgICBzZW5kVG9Qcm9jZXNzKG5ld1Byb2Nlc3MsIE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJy
ZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaChtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0o
KS0+aXRlbVN0YXRlKCkpKTsKICAgICB9CiAKICAgICAvLyBGSVhNRTogV29yayBvdXQgdGltaW5n
IG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBwb2xpY3kgZGVsZWdhdGUsIGV0YwpAQCAtMjk4
OCw3ICsyOTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1
c2VyQWdlbnQpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJBZ2VudCht
X3VzZXJBZ2VudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRV
c2VyQWdlbnQobV91c2VyQWdlbnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFwcGxp
Y2F0aW9uTmFtZUZvclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSkKQEAg
LTMwMjUsNyArMzAyNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBY3RpdmVET01PYmpl
Y3RzQW5kQW5pbWF0aW9ucygpCiAKICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmpl
Y3RzQW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQpAQCAtMzAz
NSw3ICszMDM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpCiAKICAgICBtX2lzUGFnZVN1c3BlbmRlZCA9IHRydWU7CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3Rz
QW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkpOwogfQogCiBib29sIFdlYlBh
Z2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2RpbmcoKSBjb25zdApAQCAtMzA1Miw3ICszMDUyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3Ry
aW5nJiBlbmNvZGluZ05hbWUpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1
c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1lKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1l
KSk7CiB9CiAKIFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1
bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CkBA
IC0zMDc0LDcgKzMwNzQsNyBAQCBTZXNzaW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3Rh
dGUoV1RGOjpGdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdAogCiBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Np
b25TdGF0ZSBzZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9t
U2Vzc2lvblN0YXRlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9zZXNz
aW9uUmVzdG9yYXRpb25SZW5kZXJUcmVlU2l6ZSA9IDA7CiAgICAgbV9oaXRSZW5kZXJUcmVlU2l6
ZVRocmVzaG9sZCA9IGZhbHNlOwpAQCAtMzA4Myw3ICszMDgzLDcgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3Rh
dGUgc2Vzc2kKIAogICAgIGlmIChoYXNCYWNrRm9yd2FyZExpc3QpIHsKICAgICAgICAgbV9iYWNr
Rm9yd2FyZExpc3QtPnJlc3RvcmVGcm9tU3RhdGUoV1RGTW92ZShzZXNzaW9uU3RhdGUuYmFja0Zv
cndhcmRMaXN0U3RhdGUpKTsKLSAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBtX3Bh
Z2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1f
YmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpKTsKIAogICAgICAgICBhdXRvIHRyYW5zYWN0
aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAgICAgICAgIG1fcGFnZUxvYWRT
dGF0ZS5zZXRDYW5Hb0JhY2sodHJhbnNhY3Rpb24sIG1fYmFja0ZvcndhcmRMaXN0LT5iYWNrSXRl
bSgpKTsKQEAgLTMxMzEsNyArMzEzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0Wm9v
bUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0VGV4dFpvb21GYWN0b3IobV90ZXh0Wm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dFpvb21GYWN0b3IobV90ZXh0Wm9vbUZhY3Rv
cikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpv
b21GYWN0b3IpCkBAIC0zMTQ2LDcgKzMxNDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFn
ZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFBhZ2Vab29tRmFjdG9yKG1fcGFnZVpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2Vab29tRmFjdG9yKG1fcGFnZVpvb21G
YWN0b3IpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3Rv
cnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFpvb21GYWN0b3IpCkBAIC0zMTYy
LDcgKzMxNjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9y
cyhkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJsZSB0ZXh0WgogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKG1fcGFnZVpvb21GYWN0b3Is
IG1fdGV4dFpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMobV9wYWdlWm9vbUZhY3RvciwgbV90ZXh0Wm9v
bUZhY3RvcikpOwogfQogCiBkb3VibGUgV2ViUGFnZVByb3h5OjpwYWdlWm9vbUZhY3RvcigpIGNv
bnN0CkBAIC0zMTkyLDcgKzMxOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdlKGRv
dWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9yaWdpbikKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2NhbGVQYWdlKHNjYWxlLCBvcmlnaW4pLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlKHNjYWxlLCBvcmlnaW4pKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwg
Y29uc3QgSW50UG9pbnQmIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKQpAQCAtMzIwNCw3ICszMjA0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKGRvdWJs
ZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIGNlbnQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0ZXMoc2NhbGUsIGNlbnRlckluVmlld0Nvb3Jk
aW5hdGVzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFn
ZUluVmlld0Nvb3JkaW5hdGVzKHNjYWxlLCBjZW50ZXJJblZpZXdDb29yZGluYXRlcykpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVWaWV3KGRvdWJsZSBzY2FsZSkKQEAgLTMyMTYsNyAr
MzIxNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY2FsZVZpZXcoZG91YmxlIHNjYWxlKQogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2FsZVZpZXcoc2NhbGUpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVWaWV3KHNjYWxlKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2Fs
ZUZhY3RvcikKQEAgLTMyMzUsNyArMzIzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5SUQgZGlzcGxheUlEKQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd1NjcmVlbkRpZENoYW5n
ZShkaXNwbGF5SUQpKTsKIH0KIAogZmxvYXQgV2ViUGFnZVByb3h5OjpkZXZpY2VTY2FsZUZhY3Rv
cigpIGNvbnN0CkBAIC0zMjc0LDcgKzMyNzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWNjZXNz
aWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2Nlc3NpYmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQpAQCAt
MzI5MSw3ICszMjkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZUZpeGVkTGF5b3V0KGJv
b2wgZml4ZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5
b3V0KGZpeGVkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVz
ZUZpeGVkTGF5b3V0KGZpeGVkKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExh
eW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKQEAgLTMzMDQsNyArMzMwNCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rml4ZWRMYXlvdXRTaXpl
KHNpemUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRh
bFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpCkBAIC0zMzE3LDcg
KzMzMTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Ny
b2xsZXIoYm9vbCBhbHdheXNTaG93c0hvcml6b250YWxTYwogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihhbHdheXNTaG93c0hv
cml6b250YWxTY3JvbGxlciksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihhbHdheXNTaG93c0hvcml6b250YWxT
Y3JvbGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWx3YXlzU2hvd3NWZXJ0aWNh
bFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKQpAQCAtMzMzMCw3ICsz
MzMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxl
cihib29sIGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGwKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVydGlj
YWxTY3JvbGxlciksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRB
bHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpsaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKE9wdGlv
blNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+IG1pbGVzdG9uZXMpCkBAIC0zMzQzLDcgKzMz
NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhPcHRp
b25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMaXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKG1pbGVzdG9uZXMpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyht
aWxlc3RvbmVzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdXBwcmVzc1Njcm9sbGJh
ckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1hdGlvbnMpCkBAIC0zMzU2LDcgKzMzNTYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wg
c3VwcHJlc3NBbmltYXRpb25zKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRT
dXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoc3VwcHJlc3NBbmltYXRpb25zKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0
aW9ucyhzdXBwcmVzc0FuaW1hdGlvbnMpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnJ1YmJl
ckJhbmRzQXRMZWZ0KCkgY29uc3QKQEAgLTM0MDgsNyArMzQwOCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcoYm9vbCBlbmFibGVWZXJ0aWNhbFJ1
YmJlckJhbmRpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZVZlcnRp
Y2FsUnViYmVyQmFuZGluZyhlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5k
aW5nKGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZykpOwogfQogICAgIAogYm9vbCBXZWJQYWdl
UHJveHk6OnZlcnRpY2FsUnViYmVyQmFuZGluZ0lzRW5hYmxlZCgpIGNvbnN0CkBAIC0zNDI1LDcg
KzM0MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJh
bmRpbmcoYm9vbCBlbmFibGVIb3Jpem9udGFsUnViYmVyQgogCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhlbmFibGVIb3Jpem9u
dGFsUnViYmVyQmFuZGluZyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVy
QmFuZGluZykpOwogfQogICAgIAogYm9vbCBXZWJQYWdlUHJveHk6Omhvcml6b250YWxSdWJiZXJC
YW5kaW5nSXNFbmFibGVkKCkgY29uc3QKQEAgLTM0NDIsNyArMzQ0Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoYm9vbCBiYWNrZ3JvdW5kRXh0
ZW5kc0JleW9uZFBhCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91
bmRFeHRlbmRzQmV5b25kUGFnZShiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZEV4dGVuZHNCZXlv
bmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSkpOwogfQogCiBib29sIFdlYlBhZ2VQ
cm94eTo6YmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKCkgY29uc3QKQEAgLTM0NTksNyArMzQ1
OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uTW9kZShXZWJDb3JlOjpQYWdp
bmF0aW9uOjpNb2RlIG1vZGUpCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBh
Z2luYXRpb25Nb2RlKG1vZGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0UGFnaW5hdGlvbk1vZGUobW9kZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhib29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKQEAg
LTM0NzEsNyArMzQ3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uQmVoYXZl
c0xpa2VDb2x1bW5zKGJvb2wgYmVoYXZlc0xpa2VDb2x1bW5zKQogCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtl
Q29sdW1ucyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdp
bmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucykpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxlbmd0aChkb3VibGUgcGFnZUxlbmd0aCkKQEAgLTM0ODMs
NyArMzQ4Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTGVuZ3RoKGRvdWJsZSBwYWdl
TGVuZ3RoKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlTGVuZ3RoKHBh
Z2VMZW5ndGgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFn
ZUxlbmd0aChwYWdlTGVuZ3RoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3
ZWVuUGFnZXMoZG91YmxlIGdhcCkKQEAgLTM0OTUsNyArMzQ5NSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMoZG91YmxlIGdhcCkKIAogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0R2FwQmV0d2VlblBhZ2VzKGdhcCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRHYXBCZXR3ZWVuUGFnZXMoZ2FwKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGJvb2wgbGluZUdyaWRF
bmFibGVkKQpAQCAtMzUwNyw3ICszNTA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2lu
YXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbCBsaW5lR3JpZEVuYWJsZWQpCiAgICAgCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVH
cmlkRW5hYmxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQ
YWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSBzY2FsZUZhY3RvcikK
QEAgLTM1MzIsMjcgKzM1MzIsMjcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmdNYXRj
aGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLAogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpG
aW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5n
LCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25l
ZCBtYXhNYXRjaENvdW50KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMs
IG1heE1hdGNoQ291bnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldEltYWdlRm9yRmlu
ZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldEltYWdlRm9yRmluZE1hdGNoKG1hdGNoSW5kZXgpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJ
bmRleCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0RmluZE1hdGNoKGludDMyX3Qg
bWF0Y2hJbmRleCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
bGVjdEZpbmRNYXRjaChtYXRjaEluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNlbGVjdEZpbmRNYXRjaChtYXRjaEluZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpoaWRlRmluZFVJKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkhpZGVGaW5kVUkoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkhpZGVGaW5kVUkoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01h
dGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVk
IG1heE1hdGNoQ291bnQpCkBAIC0zNTYwLDcgKzM1NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRp
b25zLAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb3VudFN0cmluZ01hdGNoZXMo
c3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1h
dGNoQ291bnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rv
cjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0
LCBib29sIHNlbGVjdGlvbk9ubHksIEZ1bmN0aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtMzU3MSw3ICszNTcxLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNv
bnN0IFN0cmluZyYKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2Vs
ZWN0aW9uT25seSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50
VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCkBAIC0zNTk2LDE0ICszNTk2LDE0
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJh
Y2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBo
YWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIEFTU0VSVChtYWluRnJhbWUoKS0+ZnJhbWVJ
RCgpICE9IGZyYW1lSUQpOwogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UnVuSmF2YVNjcmlwdEluRnJhbWUoZnJhbWVJRCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJl
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1
bkphdmFTY3JpcHRJbkZyYW1lKGZyYW1lSUQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFs
UmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzYxNCw3ICszNjE0LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdU
Rjo6RnVuY3Rpb248dm9pZCAoY29uc3QKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNjI2LDcgKzM2MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248
dm9pZCAoYwogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFk
ZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U291cmNlRm9yRnJhbWUoZnJhbWUtPmZy
YW1lSUQoKSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVu
dHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNjM4LDcgKzM2MzgsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFN0cmluZyYsIENhbGxiYQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0Nh
bGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldENvbnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQp
KTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMzY0OSw3ICszNjQ5LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgQXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vz
cy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAjZW5kaWYKIApAQCAtMzY2Miw3ICszNjYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldEJ5dGVjb2RlUHJvZmlsZShXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENh
bGxiYWMKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQo
Y2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRC
eXRlY29kZVByb2ZpbGUoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CkBAIC0zNjc0LDcgKzM2NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9m
aWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsCiAgICAgCiAgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAg
ICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91
dHB1dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJRCkpOwogfQogCiAjaWYgRU5BQkxF
KE1IVE1MKQpAQCAtMzY4Niw3ICszNjg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRl
bnRzQXNNSFRNTERhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXMKICAg
ICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRl
bnRzQXNNSFRNTERhdGEoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpKTsKIH0KICNlbmRp
ZgogCkBAIC0zNjk4LDcgKzM2OTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9u
T3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaQogICAgIH0K
ICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVj
dGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFj
a0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVE
YXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCkBAIC0zNzA5LDcgKzM3MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBD
YWxsYgogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRh
KGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURh
dGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEq
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzcyMCw3ICsz
NzIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2kKICAgICB9CiAgICAgCiAgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFt
ZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlE
KCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0
YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc291cmNlVVJMLCBG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQpAQCAtMzczMSw3ICszNzMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJl
c291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28K
ICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0
cmluZygpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFJlc291cmNlRGF0YUZyb21GcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNvdXJjZVVS
TC0+c3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFdl
YkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6
OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc0
Miw3ICszNzQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEkKICAgICB9CiAgICAgCiAgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFt
ZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hpdmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNh
bGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8
Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtMzc3Niw3ICszNzc2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQog
CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoZGlkRm9yY2VS
ZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwogICAgIG1fZHJhd2luZ0FyZWEtPndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVP
bk5leHRQYWludCgpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9y
Y2VSZXBhaW50KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSk7CiB9CiAKIHN0YXRpYyBPcHRpb25TZXQ8
SVBDOjpTZW5kT3B0aW9uPiBwcmludGluZ1NlbmRPcHRpb25zKGJvb2wgaXNQZXJmb3JtaW5nRE9N
UHJpbnRPcGVyYXRpb24pCkBAIC0zODAyLDcgKzM4MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogICAgIC8vIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGlu
IFVJIHByb2Nlc3MsIHNvIHRoYXQgb3ZlcnJpZGVzIGdldCByZW1vdmVkLgogCiAgICAgLy8gUHJl
ZmVyZW5jZXMgbmVlZCB0byBiZSB1cGRhdGVkIGR1cmluZyBzeW5jaHJvbm91cyBwcmludGluZyB0
byBtYWtlICJwcmludCBiYWNrZ3JvdW5kcyIgcHJlZmVyZW5jZSB3b3JrIHdoZW4gdG9nZ2xlZCBm
cm9tIGEgcHJpbnQgZGlhbG9nIGNoZWNrYm94LgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFuZ2UocHJlZmVyZW5jZXNTdG9yZSgpKSwgbV9w
YWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
bikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHBy
ZWZlcmVuY2VzU3RvcmUoKSksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Q
cmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQpCkBAIC0zOTMyLDggKzM5MzIsOCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkK
ICAgICAgICAgbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdh
dGlvbklEKTsKIAotICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGlu
IHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJ
RCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX3BhZ2VJ
RCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1
cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgTE9HKExvYWRpbmcsICJXZWJQ
YWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJ
dTY0ICIsIHVybCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9h
ZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTM5ODUsNyArMzk4NSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0co
TG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUi
IFBSSXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHJlcXVlc3QudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwg
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZv
clByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDAxNCw3ICs0MDE0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lU2hhcmVkKFJlZjwKIAogdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVk
aXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91Ymxl
IGRlbGF5LCBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0KQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0
Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VD
bGllbnQoKSk7CiAKQEAgLTQwMjcsNyArNDAyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDc0LDggKzQw
NzQsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
cHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJv
dmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVMb2Fk
aW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAg
ICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2Vi
IHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNp
b25hbFVSTCAlcyIsIG1fcGFnZUlELCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBwcm92
aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29k
ZSA9ICVkIiwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQs
IGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBM
T0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHBy
b2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25h
bFVSTCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9
ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC00MTQxLDkgKzQxNDEsOSBAQCBzdGF0aWMgYm9vbCBpc05vblVuaXF1ZU5h
dmlnYXRpb25XaXRoTGlua0RlY29yYXRpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhIHJlcQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBm
cmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlw
ZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wg
Y29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJ
bnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9h
ZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZv
ckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJdTY0LCBtX3BhZ2VJRCwgbmF2aWdhdGlvbklEKTsK
KyAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgZGlk
Q29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJdTY0LCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0Zvcndh
cmQpIEFmdGVyIGxvYWQgY29tbWl0LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2Jh
Y2tGb3J3YXJkTGlzdC0+bG9nZ2luZ1N0cmluZygpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MjU0LDcgKzQyNTQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsK
IAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAg
LTQyNzgsNyArNDI3OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5n
LCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUgLSBXZWJQYWdlUHJveHkgJXAg
d2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIgZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmln
YXRpb25JRCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNo
TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZy
YW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaExv
YWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFn
ZUNsaWVudCgpKTsKIApAQCAtNDMyMyw3ICs0MzIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCwgZXJyb3Iu
ZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAl
cywgY29kZSA9ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC00MzY1LDcgKzQzNjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFp
bExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFBy
b3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDUzNSw3ICs0NTM1LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9v
bCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW4KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNr
SWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwKKyAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2
NF90IGxpc3RlbmVySUQpCiB7CiAgICAgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1
cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksCkBAIC00NTQzLDcgKzQ1NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cgogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwK
LSAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdl
SUQsCisgICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEs
IHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CkBAIC00NTUxLDcgKzQ1NTEsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveAogICAgIE1FU1NBR0VfQ0hFQ0socHJvY2VzcywgZnJhbWUpOwogCiAgICAg
YXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySUQs
IHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0gKGF1dG8uLi4gYXJncykgewotICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
ZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1l
SUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICB9KTsK
IAogICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24ocHJvY2Vzcy5jb3B5UmVmKCks
ICpmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZN
b3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RGTW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2lu
YXRpbmdQYWdlSUQsCkBAIC00NTU5LDcgKzQ1NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eAogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBSZWY8UG9saWN5RGVj
aXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIC0gT3JpZ2luYWwgVVJMICVzLCBjdXJy
ZW50IHRhcmdldCBVUkwgJXMiLCBvcmlnaW5hbFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQ2OTks
NyArNDY5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgIGlmICghZnJvbUFQ
SSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09ICZmcmFtZSkKICAgICAgICAgICAgIHNvdXJjZUZyYW1l
SW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvLmNvcHlSZWYoKTsKICAgICAgICAgZWxzZSBpZiAo
IWZyb21BUEkpCi0gICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6
Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9j
ZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKSA6IG51bGxwdHIpOworICAgICAgICAgICAg
c291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRp
bmdQYWdlSUQpIDogbnVsbHB0cik7CiAKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZp
dHkgPSBwcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEu
dXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogICAgICAgICBib29sIHNob3VsZE9wZW5BcHBM
aW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVj
aXNpb24KQEAgLTQ3NzIsNyArNDc3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2dGcmFtZU5h
dmlnYXRpb24oY29uc3QgV2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFVSTCYgcGFnCiAjZW5k
aWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1Bh
Z2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkm
JiByZXBseSkKIHsKQEAgLTQ3OTAsNyArNDc5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlz
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1l
SUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0
aW5nUGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTQ4
MjEsNyArNDgyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5k
b3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpCiAgICAgICAgIEFTU0VSVF9V
TlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCiAgICAg
ICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVy
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQs
IGxpc3RlbmVySURdIChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxp
c3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwg
YXJncy4uLikpOwogICAgICAgICB9KTsKIAogICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9u
KHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpA
QCAtNDg3MCw3ICs0ODcwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywKICAgICAgICAgQVNT
RVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5nLCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAK
ICAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50
aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJh
bWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdURk1vdmUocHJvY2VzcyldIChhdXRvLi4uIGFy
Z3MpIHsKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdl
SUQpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKICAgICAgICAgfSk7CiAgICAgICAgIAogICAgICAgICByZWNlaXZlZFBv
bGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2aWdhdGlvbi5nZXQoKSwgV1RGOjpudWxsb3B0
LCBXVEZNb3ZlKHNlbmRlcikpOwpAQCAtNDkwNyw3ICs0OTA3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1l
SUQsIGNvbnMKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcywgc291cmNlRnJhbWUpOwogCiAg
ICAgbV9mb3JtQ2xpZW50LT53aWxsU3VibWl0Rm9ybSgqdGhpcywgKmZyYW1lLCAqc291cmNlRnJh
bWUsIHRleHRGaWVsZFZhbHVlcywgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3Rz
KHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0oKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGludWVXaWxsU3VibWl0Rm9ybShmcmFtZUlELCBsaXN0
ZW5lcklEKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250
aW51ZVdpbGxTdWJtaXRGb3JtKGZyYW1lSUQsIGxpc3RlbmVySUQpKTsKICAgICB9KTsKIH0KIApA
QCAtNDkyMyw3ICs0OTIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5h
dmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUs
IHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTQzLDcgKzQ5
NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0
IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAK
ICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00
OTcwLDcgKzQ5NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9y
bVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMTgsMTQgKzUw
MTgsMTQgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzYKICNlbmRpZgog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRh
JiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVz
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0Zl
YXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwotICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFt
ZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
bV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKSk7CisgICAgYXV0byBvcmlnaW5h
dGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IG1fcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRp
bmdQYWdlSUQpIDogbnVsbHB0cik7CiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFt
ZSA/IG1fbWFpbkZyYW1lLT51cmwoKSA6IFVSTCgpOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkws
IHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVByb3h5PiBu
ZXdQYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0gICAgICAgICAgICBy
ZXBseSgwLCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgcmVwbHkoV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTUzNzQs
NyArNTM3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2hvd1NoYXJlU2hlZXQoY29uc3QgU2hhcmVEYXRhV2l0aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBT
aGFyZVNoZWV0Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gKGJvb2wgYWNjZXNzKSB7Ci0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVTaGFyZVNoZWV0KGFjY2Vz
cywgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkQ29tcGxldGVTaGFyZVNoZWV0KGFjY2VzcywgY2FsbGJhY2tJRCkpOwogICAgIH07CiAg
ICAgCiAgICAgcGFnZUNsaWVudCgpLnNob3dTaGFyZVNoZWV0KHNoYXJlRGF0YSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTQwNiw3ICs1NDA2LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldE1lZGlhVm9sdW1lKGZsb2F0IHZvbHVtZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1lKHZvbHVtZSksIG1fcGFnZUlEKTsgICAgCisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWVkaWFWb2x1bWUodm9sdW1lKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRNdXRlZChXZWJDb3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0
YXRlRmxhZ3Mgc3RhdGUpCkBAIC01NDIyLDcgKzU0MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIHN0YXRlKQog
ICAgICAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkubXV0ZUNhcHR1cmVN
ZWRpYVN0cmVhbXNFeGNlcHRJbigqdGhpcyk7CiAjZW5kaWYKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TXV0ZWQoc3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TXV0ZWQoc3RhdGUpKTsKICAgICBhY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKHsgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxlLCBBY3Rpdml0eVN0YXRlOjpJc0Nh
cHR1cmluZ01lZGlhIH0pOwogfQogCkBAIC01NDQ0LDcgKzU0NDQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9w
TWVkaWFDYXB0dXJlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
dG9wTWVkaWFDYXB0dXJlKCkpOwogI2VuZGlmCiB9CiAKQEAgLTU0NTMsNyArNTQ1Myw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzdG9wQWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlN0b3BBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wQWxsTWVkaWFQbGF5YmFjaygpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCkKQEAgLTU0NjEsNyArNTQ2
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBbGxNZWRpYVBsYXliYWNrKCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWxsTWVkaWFQbGF5
YmFjaygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2so
KQpAQCAtNTQ2OSw3ICs1NDY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlh
UGxheWJhY2soKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRp
YVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1
bWVBbGxNZWRpYVBsYXliYWNrKCkpOwogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCkBA
IC01NDc4LDcgKzU0NzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlTWVkaWFFdmVudChN
ZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpIYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlwZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlwZSkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWlu
dDY0X3QgZWxlbWVudElEKQpAQCAtNTQ4Niw3ICs1NDg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJ
RCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vm9sdW1lT2ZNZWRpYUVsZW1l
bnQodm9sdW1lLCBlbGVtZW50SUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpKTsKIH0KICNl
bmRpZgogCkBAIC01NTAwLDcgKzU1MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF5U3Rh
cnRNZWRpYVdoZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVkaWEpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhtYXlTdGFydE1lZGlh
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1heVN0YXJ0TWVk
aWFXaGVuSW5XaW5kb3cobWF5U3RhcnRNZWRpYSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkmIGRvd25sb2FkKQpAQCAtNTU0Nyw3
ICs1NTQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNv
cmU6OkNvbG9yJiBjb2xvcikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hv
b3NlQ29sb3IoY29sb3IpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ2hvb3NlQ29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZENv
bG9yUGlja2VyKCkKQEAgLTU1NTYsNyArNTU1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRF
bmRDb2xvclBpY2tlcigpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZENv
bG9yUGlja2VyKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRF
bmRDb2xvclBpY2tlcigpKTsKIH0KICNlbmRpZgogCkBAIC01NTkwLDcgKzU1OTAsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2xvc2VTdWdnZXN0aW9ucygpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duID0gbnVsbHB0cjsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENsb3NlU3VnZ2VzdGlvbnMoKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENsb3NlU3VnZ2VzdGlvbnMoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBz
ZWxlY3RlZE9wdGlvbikKQEAgLTU1OTgsNyArNTU5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRp
b24pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0RGF0
YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pKTsKIH0KIAogI2VuZGlmCkBAIC01NjUxLDcgKzU2
NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBs
YXliYWNrKGJvb2wgYWxsb3dzKQogICAgICAgICByZXR1cm47CiAgICAgbV9hbGxvd3NNZWRpYURv
Y3VtZW50SW5saW5lUGxheWJhY2sgPSBhbGxvd3M7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhhbGxv
d3MpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWxsb3dzTWVk
aWFEb2N1bWVudElubGluZVBsYXliYWNrKGFsbG93cykpOwogfQogI2VuZGlmCiAKQEAgLTU4MzQs
MTcgKzU4MzQsMTcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGFnZVByb3h5OjptZXNzYWdlU2Vu
ZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFnZUlEOworICAgIHJl
dHVybiBtX3BhZ2VJRC50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsdWVD
aGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3Rl
ZEluZGV4KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hh
bmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShuZXdTZWxlY3RlZEluZGV4KSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVkSW5k
ZXhGb3JBY3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRleCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0VGV4dEZyb21JdGVtRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5Kiwg
aW50MzJfdCBpbmRleCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFRleHRGb3JBY3RpdmVQb3B1cE1lbnUoaW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEZvckFjdGl2ZVBvcHVwTWVudShpbmRleCkpOwogfQog
CiBib29sIFdlYlBhZ2VQcm94eTo6aXNQcm9jZXNzaW5nS2V5Ym9hcmRFdmVudHMoKSBjb25zdApA
QCAtNTg3OSwxMyArNTg3OSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cG9zdE1lc3NhZ2VUb0lu
amVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6TwogICAgIC8vIEZv
ciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5LCBtYWtlIHN1cmUgd2UgbGF1bmNoIHRoZSBpbml0aWFs
IHByb2Nlc3MgaWYgdGhlIGNsaWVudCBhc2tzIHRvIHBvc3QgYSBtZXNzYWdlIHRvIGl0cyBpbmpl
Y3RlZCBidW5kbGUgYmVmb3JlIGRvaW5nIGEgbG9hZC4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vz
c0lmTmVjZXNzYXJ5KCk7CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEocHJvY2Vzcygp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpLmdldCgpKSksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdl
KG1lc3NhZ2VOYW1lLCBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyhtZXNzYWdlQm9keSkuZ2V0KCkpKSk7CiB9CiAKICNpZiBQTEFURk9STShHVEspCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZmFpbGVkVG9TaG93UG9wdXBNZW51KCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZhaWxlZFRvU2hvd1BvcHVwTWVudSgpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmFpbGVkVG9TaG93UG9wdXBNZW51KCkpOwog
fQogI2VuZGlmCiAKQEAgLTU5NTIsNyArNTk1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93
Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YSYmIGNvbnRleHRNZW51Q29udGV4dERh
CiAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvdygpOwogCiAgICAgLy8gTm8gbWF0dGVyIHRo
ZSByZXN1bHQgb2YgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUsIGFsd2F5cyBub3RpZnkgdGhlIFdl
YlByb2Nlc3MgdGhhdCB0aGUgbWVudSBpcyBoaWRkZW4gc28gaXQgc3RhcnRzIGhhbmRsaW5nIG1v
dXNlIGV2ZW50cyBhZ2Fpbi4KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNvbnRleHRNZW51SGlkZGVuKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb250ZXh0TWVudUhpZGRlbigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCkBA
IC02MDMwLDEyICs2MDMwLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1T
ZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQogICAgIGlmIChpdGVt
LmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0xlYXJuU3BlbGxpbmcgfHwgaXRlbS5hY3Rp
b24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVsbGluZykKICAgICAgICAgKyttX3Bl
bmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudDsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShp
dGVtKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0
ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoaXRlbSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlQ29udGV4dE1lbnVLZXlFdmVudCgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUZvcktleUV2ZW50KCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUZvcktleUV2ZW50KCkpOwogfQogI2Vu
ZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQogCkBAIC02MDUxLDEwICs2MDUxLDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3Ry
aW5nQW5kSWNvbihjb25zdCBWZWN0CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxlVVJM
cy5zaXplKCk7ICsraSkKICAgICAgICAgU2FuZGJveEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZp
bGVVUkxzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZXNbaV0pOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5k
bGVzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRi
b3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpKTsKICNlbmRp
ZgogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihmaWxlVVJMcywgZGlzcGxheVN0
cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVm
ZXJlbmNlKCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMsIGRp
c3BsYXlTdHJpbmcsIGljb25EYXRhID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6
RGF0YVJlZmVyZW5jZSgpKSk7CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZh
bGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02
MDc5LDEwICs2MDc5LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9w
ZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVSTHMpCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hG
b3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9w
ZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZp
bGVVUkxzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29z
ZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKSk7CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExp
c3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51
bGxwdHI7CkBAIC02MDkzLDcgKzYwOTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2Vs
Rm9yT3BlblBhbmVsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2FuY2Vs
Rm9yT3BlblBhbmVsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRDYW5jZWxGb3JPcGVuUGFuZWwoKSk7CiAgICAgCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lci0+aW52YWxpZGF0ZSgpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxs
cHRyOwpAQCAtNjEwMSw3ICs2MTAxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZv
ck9wZW5QYW5lbCgpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhzdGFydEJlZm9yZVNlbGVj
dGlvbiksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCkKQEAgLTYxMDks
NyArNjEwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25z
dCBTdHJpbmcmIHdvcmQpCiAgICAgaWYgKHdvcmQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZVNwZWxsaW5n
VG9Xb3JkKHdvcmQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hh
bmdlU3BlbGxpbmdUb1dvcmQod29yZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0
ZXJFZGl0Q29tbWFuZChSZWY8V2ViRWRpdENvbW1hbmRQcm94eT4mJiBjb21tYW5kUHJveHksIFVu
ZG9PclJlZG8gdW5kb09yUmVkbykKQEAgLTYxMjgsNyArNjEyOCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZW1vdmVFZGl0Q29tbWFuZChXZWJFZGl0Q29tbWFuZFByb3h5JiBjb21tYW5kKQogCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVFZGl0Q29tbWFuZChjb21tYW5k
LmNvbW1hbmRJRCgpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZFJlbW92ZUVkaXRDb21tYW5kKGNvbW1hbmQuY29tbWFuZElEKCkpKTsKIH0KIAogYm9vbCBXZWJQ
YWdlUHJveHk6OmNhblVuZG8oKQpAQCAtNjIxNywxMiArNjIxNywxMiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBU
ZXh0Q2hlY2tpbgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3Vs
dD4mIHJlc3VsdCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZEZpbmlzaENoZWNraW5nVGV4dChyZXF1ZXN0SUQsIHJlc3VsdCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRGaW5pc2hDaGVja2luZ1RleHQocmVxdWVzdElELCBy
ZXN1bHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENoZWNraW5nVGV4dCh1
aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRDYW5jZWxDaGVja2luZ1RleHQocmVxdWVzdElEKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbENoZWNraW5nVGV4dChyZXF1ZXN0SUQpKTsK
IH0KIC8vIE90aGVyCiAKQEAgLTYzNTEsNyArNjM1MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAg
ICBib29sIGNhblByb2Nlc3NNb3JlS2V5RXZlbnRzID0gIW1fa2V5RXZlbnRRdWV1ZS5pc0VtcHR5
KCk7CiAgICAgICAgIGlmIChjYW5Qcm9jZXNzTW9yZUtleUV2ZW50cykgewogICAgICAgICAgICAg
TE9HKEtleUhhbmRsaW5nLCAiIFVJIHByb2Nlc3M6IHNlbnQga2V5RXZlbnQgZnJvbSBkaWRSZWNl
aXZlRXZlbnQiKTsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCkpLCBtX3BhZ2VJRCk7CisgICAgICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVudChtX2tleUV2ZW50UXVldWUuZmly
c3QoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIGNhbGwgdG8gZG9uZVdpdGhLZXlF
dmVudCBtYXkgY2xvc2UgdGhpcyBXZWJQYWdlLgpAQCAtNjcxNSw3ICs2NzE1LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZyYW1lU2V0TGFyZ2VzdEZyYW1lQ2hhbmdlZCh1aW50NjRfdCBmcmFtZUlE
KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwpAQCAtNjcyNyw3ICs2NzI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NE
aWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJl
Y29tZVJlc3BvbnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzcywg
InByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzIzMyw3ICs3MjMzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmJhY2tGb3J3YXJkQ2xlYXIoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2FtZXBhZEFj
dGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mIGdhbWVwYWREYXRhcywgYm9vbCBzaG91
bGRNYWtlR2FtZXBhZHNWaXNpYmxlKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2FtZXBhZEFjdGl2aXR5KGdhbWVwYWREYXRhcywgc2hvdWxkTWFrZUdhbWVwYWRz
VmlzaWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHYW1lcGFk
QWN0aXZpdHkoZ2FtZXBhZERhdGFzLCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKSk7CiB9CiAK
ICNlbmRpZgpAQCAtNzUzOSw3ICs3NTM5LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OndpbGxIYW5k
bGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRzKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVz
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlV2Vic2l0
ZVBvbGljaWVzKHdlYnNpdGVQb2xpY2llcyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVcGRhdGVXZWJzaXRlUG9saWNpZXMod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQ
cm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCkBAIC03NTQ5LDcgKzc1NDksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29u
c3QgU3RyaW5nJiBzdQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YmFja0ZvcndhcmRSZW1vdmVkSXRl
bShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQpCiB7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRl
bUlEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUJh
Y2tGb3J3YXJkSXRlbShpdGVtSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblJ1
bk1vZGFsKGJvb2wgY2FuUnVuTW9kYWwpCkBAIC03NTYyLDcgKzc1NjIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwoYm9vbCBjYW5SdW5Nb2RhbCkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwobV9jYW5SdW5Nb2RhbCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5Nb2RhbChtX2NhblJ1bk1v
ZGFsKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpjYW5SdW5Nb2RhbCgpCkBAIC03NTc2LDcg
Kzc1NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5
KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZgogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8pLCBt
X3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0
aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+
ZnJhbWVJRCgpLCBwcmludEluZm8pLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5n
RE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmVuZFByaW50aW5n
KCkKQEAgLTc1ODUsNyArNzU4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjplbmRQcmludGluZygp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNJblByaW50aW5nTW9kZSA9IGZhbHNlOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RW5kUHJpbnRpbmcoKSwgbV9wYWdl
SUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVuZFByaW50aW5nKCksIHByaW50aW5nU2Vu
ZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUs
IGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBSZWY8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiYm
IGNhbGxiYWNrKQpAQCAtNzU5OCw3ICs3NTk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1
dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8K
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0g
dHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdl
c0ZvclByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1f
cGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRp
b24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGlu
ZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBwcmludGluZ1NlbmRP
cHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogI2lmIFBMQVRG
T1JNKENPQ09BKQpAQCAtNzYxMSw3ICs3NjExLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdS
ZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEkK
ICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAg
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2UoZnJhbWUtPmZyYW1lSUQoKSwgcHJp
bnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdT
ZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RHJhd1JlY3RUb0ltYWdlKGZyYW1lLT5mcmFtZUlEKCksIHByaW50
SW5mbywgcmVjdCwgaW1hZ2VTaXplLCBjYWxsYmFja0lEKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyht
X2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBw
cmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFj
az4mJiBjYWxsYmFjaykKQEAgLTc2MjMsNyArNzYyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
cmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmlu
dEluCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsK
ICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwg
cHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdT
ZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJ
bmZvLCBmaXJzdCwgY291bnQsIGNhbGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQ
ZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KICNlbGlmIFBMQVRGT1JNKEdUSykKIHZv
aWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFJlZjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+
JiYgY2FsbGJhY2spCkBAIC03NjM2LDcgKzc2MzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJh
d1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYg
cAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAgICBtX2lzSW5QcmludGluZ01vZGUg
PSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2Vz
Rm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9w
YWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlv
bikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc0ZvclByaW50aW5nKGZy
YW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIHByaW50aW5nU2VuZE9wdGlv
bnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogI2VuZGlmCiAKQEAgLTc2
ODEsNyArNzY4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3TGF5b3V0U2l6ZShjb25z
dCBJbnRTaXplJiB2aWV3TGF5b3V0U2l6ZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Vmlld0xheW91dFNpemUodmlld0xheW91dFNpemUpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld0xheW91dFNpemUodmlld0xheW91dFNpemUpKTsK
ICAgICBtX2RyYXdpbmdBcmVhLT52aWV3TGF5b3V0U2l6ZURpZENoYW5nZSgpOwogCiAjaWYgVVNF
KEFQUEtJVCkKQEAgLTc3MDAsNyArNzcwMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBdXRv
U2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGJvb2wgc2hvdWxkRXhwYW5kKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3
SGVpZ2h0KHNob3VsZEV4cGFuZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KHNob3VsZEV4cGFuZCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRV
bml0cyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCkBAIC03NzEzLDcgKzc3MTMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpegogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHZpZXdwb3J0U2l6ZSksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzKHZpZXdwb3J0U2l6ZSkpOwogfQogCiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JF
UExBQ0VNRU5UKQpAQCAtNzc4NCw3ICs3Nzg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY29y
ZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNwb25zZSwgY29uc3QgU3RyaW5nJgog
dm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0
cmluZyYgcmVzdWx0KQogewogICAgIGlmICghaXNDbG9zZWQoKSkKLSAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChy
ZXN1bHQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRs
ZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCkpOwogfQogCiAjaWYgVVNFKERJQ1RBVElP
Tl9BTFRFUk5BVElWRVMpCkBAIC03ODI1LDcgKzc4MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
cmxpbgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uKHRleHQs
IHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQsIHJlcGxhY2VtZW50UmFu
Z2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25T
dGFydCwgc2VsZWN0aW9uRW5kLCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFu
Z2VFbmQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbihjb25z
dCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBpbnQ2NF90IHNlbGVjdGlvblN0YXJ0LCBpbnQ2
NF90IHNlbGVjdGlvbkxlbmd0aCkKQEAgLTc4MzMsNyArNzgzMyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywg
aW50NjRfdCBzCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0
aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uTGVuZ3RoKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlv
bihjb21wb3NpdGlvblN0cmluZywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9zaXRpb24oKQpAQCAtNzg0MSw3ICs3
ODQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxDb21wb3NpdGlvbigpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQ29tcG9zaXRpb24oKSk7CiB9CiAjZW5k
aWYgLy8gUExBVEZPUk0oR1RLKQogCkBAIC03ODU4LDcgKzc4NTgsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5u
aW5nKQogICAgIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yID0gcGlubmluZzsKIAogICAgIGlmICho
YXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihwaW5uaW5nKSwgbV9wYWdlSUQpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IocGlu
bmluZykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxl
KE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUp
CkBAIC03ODc2LDcgKzc4NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9s
bGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlTdAogICAgICAgICBz
Y3JvbGxiYXJTdHlsZUZvck1lc3NhZ2UgPSBzdGF0aWNfY2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5
bGU+KHNjcm9sbGJhclN0eWxlLnZhbHVlKCkpOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNz
KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xs
YmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZSksIG1fcGFnZUlEKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNj
cm9sbGJhclN0eWxlRm9yTWVzc2FnZSkpOwogfQogCiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCkBA
IC03OTIxLDcgKzc5MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwgY29ucwogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6YWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpB
ZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIobWltZVR5cGUpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVu
dFByb3ZpZGVyKG1pbWVUeXBlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250
QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hhbmdlcyYmIGNoYW5nZXMpCkBAIC03
OTI5LDcgKzc5MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMo
V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdURk1vdmUoY2hhbmdlcykpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udEF0dHJpYnV0
ZXMoV1RGTW92ZShjaGFuZ2VzKSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9u
dChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCkBAIC03OTM3LDcgKzc5MzcsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5n
ZXMpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlRm9udChXVEZNb3ZlKGNo
YW5nZXMpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZv
bnQoV1RGTW92ZShjaGFuZ2VzKSkpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC03OTQ1
LDcgKzc5NDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250
Q2hhbmdlcyYmIGNoYW5nZXMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEFzeW5jKGNvbnN0
IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRBc3luYyh0ZXh0KSwgbV9w
YWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4
dCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0
T3B0aW9ucyYmIG9wdGlvbnMpCkBAIC03OTUzLDcgKzc5NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1Jhbmdl
JiByZXBsYQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRBc3luYyh0
ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVu
dFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYXNN
YXJrZWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCkBAIC03
OTYyLDcgKzc5NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFzTWFya2VkVGV4dChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQogICAgICAgICBjYWxsYmFjayhmYWxz
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9p
ZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQpAQCAtNzk3Myw3ICs3OTczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdl
QXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiYWMKICAgICB9CiAK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VB
c3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1Jhbmdl
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzk4NCw3ICs3
OTg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1
bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGIKICAgICB9CiAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRS
YW5nZUFzeW5jKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3Rl
ckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFdURjo6
RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCkBAIC03OTk1LDcgKzc5OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhcmFj
dGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgVwog
ICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFyYWN0
ZXJJbmRleEZvclBvaW50QXN5bmMocG9pbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50
LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248
dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC04MDA2LDcgKzgwMDYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25z
dCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVAogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdl
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0
LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBF
ZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2Vt
ZW50UmFuZ2UpCkBAIC04MDE3LDcgKzgwMTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29t
cG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldENvbXBvc2l0aW9uQXN5bmModGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uUmFu
Z2UsIHJlcGxhY2VtZW50UmFuZ2UpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0Q29tcG9zaXRpb25Bc3luYyh0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25SYW5n
ZSwgcmVwbGFjZW1lbnRSYW5nZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmlybUNv
bXBvc2l0aW9uQXN5bmMoKQpAQCAtODAyNSw3ICs4MDI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb25maXJtQ29tcG9zaXRpb25Bc3luYygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xsZWN0aW9uRW5hYmxlZChib29sIGVu
YWJsZWQpCkBAIC04MDUwLDcgKzgwNTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBz
aG90KEludFJlY3QgcmVjdCwgSW50U2l6ZSBiaXRtYXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAg
IH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBz
aG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90KHJlY3QsIGJpdG1hcFNpemUs
IG9wdGlvbnMsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRp
b25HZXN0dXJlRGlkQmVnaW4oKQpAQCAtODIwOCw3ICs4MjA4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oUmVmPE5vd1BsYXlpbmdJbmZv
Q2FsbGJhY2sKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwog
ICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbklu
Zm8oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6Om5vd1BsYXlpbmdJbmZvQ2FsbGJhY2soYm9vbCBoYXNBY3RpdmVTZXNz
aW9uLCBib29sIHJlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBsaWNhdGlvbiwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUsIHVpbnQ2NF90IHVu
aXF1ZUlkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTgyNTEsMjIgKzgyNTEs
MjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0
b3BsYXlFdmVudCBldmVudCwgT3B0aW9uU2V0PEEKICNpZiBQTEFURk9STShNQUMpCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKEZsb2F0
UG9pbnQgcG9pbnQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQ
ZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRpb24ocG9pbnQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRl
c3RBdExvY2F0aW9uKHBvaW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbW1lZGlhdGVB
Y3Rpb25EaWRVcGRhdGUoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRDYW5j
ZWwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0
ZSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVB
Y3Rpb25EaWRDb21wbGV0ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0
RGF0YSYgcmVzdWx0LCBib29sIGNvbnRlbnRQcmV2ZW50c0RlZmF1bHQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKQEAgLTgyODEsNyArODI4MSw3IEBAIE5TT2JqZWN0ICpXZWJQYWdlUHJveHk6
OmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShXZWJDb3JlOjpU
ZXh0Q2hlY2tpbmdSZXN1bHQgYWNjZXB0ZWRDYW5kaWRhdGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShhY2NlcHRlZENh
bmRpZGF0ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0ZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpAQCAtODI5OSwxNyArODI5OSwxNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlU3lzdGVtQXBwZWFyYW5jZShib29sIHVzZVN5c3Rl
bUFwcGVhcmFuY2UpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZVN5c3Rl
bUFwcGVhcmFuY2UodXNlU3lzdGVtQXBwZWFyYW5jZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VTeXN0ZW1BcHBlYXJhbmNlKHVzZVN5c3RlbUFwcGVhcmFu
Y2UpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRIZWFkZXJCYW5uZXJIZWlnaHRG
b3JUZXN0aW5nKGludCBoZWlnaHQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGhlaWdodCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JU
ZXN0aW5nKGhlaWdodCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rm9vdGVyQmFubmVy
SGVpZ2h0Rm9yVGVzdGluZyhpbnQgaGVpZ2h0KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9vdGVyQmFubmVySGVp
Z2h0Rm9yVGVzdGluZyhoZWlnaHQpKTsKIH0KIAogI2VuZGlmCkBAIC04MzM1LDcgKzgzMzUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VPck1lZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChjb25z
dCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxk
RGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VN
b3ZlRXZlbnRzKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1vdXNl
TW92ZUV2ZW50cyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRT
aG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VN
b3ZlRXZlbnRzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBdXRvRmlsbEJ1dHRv
bkNsaWNrKGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTgzODQsNyArODM4NCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRQbGF5YmFja1RhcmdldCh1aW50NjRfdCBjb250ZXh0SWQsIFJl
ZjxNZWRpYVBsYXliYWNrVGFyZ2V0CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBs
YXliYWNrVGFyZ2V0U2VsZWN0ZWQoY29udGV4dElkLCB0YXJnZXQtPnRhcmdldENvbnRleHQoKSks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNl
bGVjdGVkKGNvbnRleHRJZCwgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKHVpbnQ2
NF90IGNvbnRleHRJZCwgYm9vbCBhdmFpbGFibGUpCkBAIC04MzkyLDcgKzgzOTIsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UodWlu
dDY0X3QgY29udGV4dElkLCBibwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5
YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShjb250ZXh0SWQsIGF2YWlsYWJsZSksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eURpZENoYW5nZShjb250ZXh0SWQsIGF2YWlsYWJsZSkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodWludDY0X3QgY29udGV4dElk
LCBib29sIHNob3VsZFBsYXkpCkBAIC04NDAwLDcgKzg0MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodWludDY0X3QgY29udGV4dElkLCBib29s
IHNob3VsZAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRQbGF5VG9Q
bGF5YmFja1RhcmdldChjb250ZXh0SWQsIHNob3VsZFBsYXkpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY29udGV4
dElkLCBzaG91bGRQbGF5KSk7CiB9CiAjZW5kaWYKIApAQCAtODQyNiw3ICs4NDI2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCkKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFyV2hlZWxFdmVudFRlc3RUcmlnZ2VyKCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhcldoZWVsRXZlbnRUZXN0
VHJpZ2dlcigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNhbGxBZnRlck5leHRQcmVzZW50
YXRpb25VcGRhdGUoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFjaykKQEAgLTg0NDksNyArODQ0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTaG91
bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wgc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1CiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZFNjYWxlVmlld1RvRml0RG9j
dW1lbnQoc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KHNob3Vs
ZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJl
c3RvcmVTY3JvbGxQb3NpdGlvbigpCkBAIC04NDY5LDcgKzg0NjksNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNv
biwgQ2FsbGJhYwogICAgICAgICBib29sIGRlY2lzaW9uID0gKGJvb2wpY2FsbGJhY2tGdW5jdGlv
bjsKICAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlv
bmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRp
b25hbENhbGxiYWNrSUQoKTsKIAotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVy
LCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVu
dGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZpZXIpKTsKICAgICB9KTsKIH0KIApAQCAtODQ4OCw3
ICs4NDg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVk
KGJvb2wgZGlzYWJsZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFJlc291
cmNlQ2FjaGluZ0Rpc2FibGVkKGRpc2FibGVkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGRpc2FibGVkKSk7CiB9CiAK
IFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gV2ViUGFnZVByb3h5Ojp1c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkKQEAgLTg1MDEsNyArODUwMSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKFdlYkNvcmU6OlVzZXJJ
bnRlcmZhY2VMYXlvdXRECiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24pKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpoaWRlVmFsaWRhdGlvbk1lc3NhZ2UoKQpAQCAtODU0OCwxNCArODU0OCwxNCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQWxsb3dQb2ludGVyTG9jaygpCiAgICAgQ0dEaXNwbGF5SGlkZUN1cnNv
cihDR01haW5EaXNwbGF5SUQoKSk7CiAgICAgQ0dBc3NvY2lhdGVNb3VzZUFuZE1vdXNlQ3Vyc29y
UG9zaXRpb24oZmFsc2UpOwogI2VuZGlmCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZEFjcXVpcmVQb2ludGVyTG9jaygpKTsKIH0KICAgICAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWREZW55UG9pbnRlckxvY2soKQogewogICAgIEFTU0VSVChtX2lzUG9p
bnRlckxvY2tQZW5kaW5nICYmICFtX2lzUG9pbnRlckxvY2tlZCk7CiAgICAgbV9pc1BvaW50ZXJM
b2NrUGVuZGluZyA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCkBAIC04NTY2LDEyICs4NTY2LDEyIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCiAgICAgICAgIENHRGlz
cGxheVNob3dDdXJzb3IoQ0dNYWluRGlzcGxheUlEKCkpOwogI2VuZGlmCiAgICAgICAgIG1fdWlD
bGllbnQtPmRpZExvc2VQb2ludGVyTG9jayh0aGlzKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRMb3NlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRMb3NlUG9pbnRlckxvY2soKSk7CiAgICAg
fQogCiAgICAgaWYgKG1faXNQb2ludGVyTG9ja1BlbmRpbmcpIHsKICAgICAgICAgbV91aUNsaWVu
dC0+ZGlkTG9zZVBvaW50ZXJMb2NrKHRoaXMpOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygp
KTsKICAgICB9CiAKICAgICBtX2lzUG9pbnRlckxvY2tlZCA9IGZhbHNlOwpAQCAtODU5Miw3ICs4
NTkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUo
UmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYgaGFuZGwKICAgICBhdXRvIGlkZW50aWZpZXJSZXN1
bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmFkZChpZGVudGlmaWVyLCBXVEZN
b3ZlKGhhbmRsZXIpKTsKICAgICBBU1NFUlRfVU5VU0VEKGlkZW50aWZpZXJSZXN1bHQsIGlkZW50
aWZpZXJSZXN1bHQuaXNOZXdFbnRyeSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpZGVudGlmaWVyLCBjYW5vbmljYWxp
emVkU2NoZW1lLnZhbHVlKCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGlkZW50aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hl
bWUudmFsdWUoKSkpOwogfQogCiBXZWJVUkxTY2hlbWVIYW5kbGVyKiBXZWJQYWdlUHJveHk6OnVy
bFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCkBAIC04NjUxLDcg
Kzg2NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5n
ZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVmZmVjdGl2ZUFwcGVhcmFuY2VE
aWRDaGFuZ2UodXNlRGFya0FwcGVhcmFuY2UoKSwgdXNlSW5hY3RpdmVBcHBlYXJhbmNlKCkpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RWZmZWN0aXZlQXBwZWFyYW5j
ZURpZENoYW5nZSh1c2VEYXJrQXBwZWFyYW5jZSgpLCB1c2VJbmFjdGl2ZUFwcGVhcmFuY2UoKSkp
OwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC04NjkwLDcgKzg2OTAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChSZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFj
aG1lbnQsIEZ1bmN0aW9uPAogCiAgICAgYXV0byBhdHRhY2htZW50SWRlbnRpZmllciA9IGF0dGFj
aG1lbnQtPmlkZW50aWZpZXIoKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJ
bnNlcnRBdHRhY2htZW50KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6
ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC0+ZmlsZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVu
dFR5cGUoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpJbnNlcnRBdHRhY2htZW50KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBhdHRhY2htZW50LT5m
aWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC0+ZmlsZU5hbWUoKSwgYXR0YWNobWVudC0+
Y29udGVudFR5cGUoKSwgY2FsbGJhY2tJRCkpOwogICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJU
b0F0dGFjaG1lbnRNYXAuc2V0KGF0dGFjaG1lbnRJZGVudGlmaWVyLCBXVEZNb3ZlKGF0dGFjaG1l
bnQpKTsKIH0KIApAQCAtODcwNiw3ICs4NzA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0
ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0YWNobWVudCYgYXR0YWNobWVudCwK
ICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsKIAogICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRl
bnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNv
bnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNl
KSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNo
bWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRh
Y2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9t
RGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUs
IGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSkKQEAgLTg4NjYsNyArODg2Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRBcHBs
aWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6CiAK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRBcHBsaWNhdGlvbk1h
bmlmZXN0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0QXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lEKSk7CiB9CiAjZW5kaWYKIApAQCAt
ODkzMCw3ICs4OTMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcG9ydFBhZ2VMb2FkUmVzdWx0
KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGVm
ZXJzTG9hZGluZ0ZvclRlc3RpbmcoYm9vbCBkZWZlcnNMb2FkaW5nKQogewotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RGVmZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5n
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERlZmVyc0xvYWRp
bmcoZGVmZXJzTG9hZGluZykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0SXNWaWV3Vmlz
aWJsZShib29sJiByZXN1bHQpCkBAIC04OTQyLDcgKzg5NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6dXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUoKQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYg
RU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NLSU5HKSB8fCBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGF1dG8gbW9kaWZpZXJzID0gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJy
ZW50U3RhdGVPZk1vZGlmaWVyS2V5cygpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6VXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUobW9kaWZpZXJzKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRl
KG1vZGlmaWVycykpOwogI2VuZGlmCiB9CiAKQEAgLTg5ODQsMTkgKzg5ODQsMTkgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OndpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9u
KFdlYlByb2Nlc3NQcm94eSYKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNpbXVsYXRlRGV2aWNlT3Jp
ZW50YXRpb25DaGFuZ2UoZG91YmxlIGFscGhhLCBkb3VibGUgYmV0YSwgZG91YmxlIGdhbW1hKQog
ewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2ltdWxhdGVEZXZpY2VP
cmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBo
YSwgYmV0YSwgZ2FtbWEpKTsKIH0KIAogI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRldGVjdERhdGFJbkFsbEZyYW1lcyhXZWJDb3JlOjpEYXRhRGV0ZWN0
b3JUeXBlcyB0eXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9u
UmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGV0ZWN0RGF0YUlu
QWxsRnJhbWVzKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBlcykpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6RGV0ZWN0RGF0YUluQWxsRnJhbWVzKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBl
cykpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERh
dGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3Byb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9w
YWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3Zl
RGF0YURldGVjdGVkTGlua3MoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiAj
ZW5kaWYKQEAgLTkxNDYsNyArOTE0Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp0ZXh0SW5wdXRD
b250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVjdCwgQ29tcGxldGlvbkhhCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChy
ZWN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJl
Y3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
Ojpmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYgY29udGV4dCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTkx
NTYsNyArOTE1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQo
Y29uc3QgVGV4dElucHV0Q29udGV4dCYgY29udGV4dCwgQ29tcGxlCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c1RleHRJbnB1dENvbnRleHQoY29udGV4dCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c1RleHRJbnB1dENvbnRleHQoY29udGV4dCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogTG9nZ2VyJiBXZWJQYWdlUHJveHk6OmxvZ2dl
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDZjNWFkNjI1ZDEy
Li5hNmU4ZmUxODJmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1
ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0xpZmV0aW1lVHJh
Y2tlci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIldlYlVuZG9T
dGVwSUQuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNEYXRhLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9BY3Rpdml0eVN0YXRlLmg+CkBAIC04Miw2ICs4Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9MYXlvdXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29u
dGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXZlbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgpAQCAtMzgyLDE0ICszODQsMTQg
QEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6UGFnZT4KICNlbmRpZgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBh
Z2VQcm94eT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUo
UGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVh
dGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdmlydHVhbCB+V2ViUGFnZVBy
b3h5KCk7CiAKICAgICBzdGF0aWMgdm9pZCBmb3JNb3N0VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6
OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJQYWdlUHJveHkqKT4mJik7CiAKICAgICBjb25zdCBBUEk6OlBhZ2VD
b25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3Q7CiAKLSAgICB1aW50NjRfdCBwYWdl
SUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIApAQCAtMTUwMiw3ICsxNTA0LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1l
SUQpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIFVSTCYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3lu
Y1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsCi0gICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLAorICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
CiAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWlu
dDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNTExLDcgKzE1MTMs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0
aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBi
YWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50
NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAg
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2Vy
RGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9p
ZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpAQCAtMTU0
OSw5ICsxNTUxLDkgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzEKICAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZVNwYWNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYg
ZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdp
blVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRV
c2FnZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7Ci0KKyAgICAK
IHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkm
LCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKKyAgICBX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZvaWQgbm90aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0o
KTsKQEAgLTE1NzMsNiArMTU3NSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXRTdGF0ZUFm
dGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWluYXRpb25SZWFzb24pOwogCiAgICAgdm9pZCBz
ZXRVc2VyQWdlbnQoU3RyaW5nJiYpOworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJv
b2wgc2VuZFRvUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFUmJiBtZXNzYWdlLCBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBwcm9jZXNzLnNlbmQoV1RGTW92ZShtZXNzYWdlKSwgbV9wYWdlSUQudG9VSW50
NjQoKSwgc2VuZE9wdGlvbnMpOworICAgIH0KIAogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgog
ICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlv
blNldDxJUEM6OlNlbmRPcHRpb24+KSBvdmVycmlkZTsKQEAgLTE2MjcsMTMgKzE2MzQsMTMgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRp
b25JRCk7CiAKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0g
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAg
ICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRl
cj4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBs
aXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYm
LCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAg
ICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0
IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYsCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsK
QEAgLTE2NTUsNyArMTY2Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRVcGRhdGVIaXN0b3J5
VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGZy
YW1lSUQpOwogCiAgICAgLy8gVUkgY2xpZW50Ci0gICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0
IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRS
ZXBseSYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRl
bGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNob3dQYWdlKCk7CiAgICAgdm9pZCBydW5KYXZhU2Ny
aXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlw
dEFsZXJ0OjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25z
dCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6
RGVsYXllZFJlcGx5JiYpOwpAQCAtMjMyNyw3ICsyMzM0LDcgQEAgV0VCUEFHRVBST1hZX0xPQURP
UFRJTUlaRVJfQURESVRJT05TXzIKICAgICBSZWZQdHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJs
ZT4gbV92YWxpZGF0aW9uQnViYmxlOwogI2VuZGlmCiAKLSAgICBjb25zdCB1aW50NjRfdCBtX3Bh
Z2VJRDsKKyAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogICAg
IGJvb2wgbV9pc1BhZ2VTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hZGRzVmlzaXRl
ZExpbmtzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IDZmY2VjZGM2YjY1Li5iMWU3OTkyMjNiZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIs
NyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgVUkgbWVzc2Fn
ZXMKLSAgICBDcmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3
aW5kb3dGZWF0dXJlcywgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdh
dGlvbkFjdGlvbkRhdGEpIC0+ICh1aW50NjRfdCBuZXdQYWdlSUQsIE9wdGlvbmFsPFdlYktpdDo6
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gbmV3UGFnZVBhcmFtZXRlcnMpIFN5bmNocm9ub3Vz
CisgICAgQ3JlYXRlTmV3UGFnZShzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdp
bmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdl
YkNvcmU6OldpbmRvd0ZlYXR1cmVzIHdpbmRvd0ZlYXR1cmVzLCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSkgLT4gKE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBuZXdQYWdlSUQsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycz4gbmV3UGFnZVBhcmFtZXRlcnMpIFN5bmNocm9ub3VzCiAgICAgU2hv
d1BhZ2UoKQogICAgIENsb3NlUGFnZShib29sIHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKQogICAg
IFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFN0cmluZyBtZXNzYWdlKSAtPiAo
KSBTeW5jaHJvbm91cwpAQCAtMTA0LDggKzEwNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAKICAgICAjIFBvbGljeSBtZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJh
bWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBj
YW5TaG93TUlNRVR5cGUsIFN0cmluZyBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0
cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBz
dHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0
UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQp
Ci0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJ
RCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5
Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5h
dmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpG
cmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRp
bmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
cG9saWN5Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2Fk
SUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJz
aXRlUG9saWNpZXMpIFN5bmNocm9ub3VzCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
IHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2Vi
S2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdl
YktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
c3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
dWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
T3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5
bmNocm9ub3VzCiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZy
YW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9y
aWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmll
ciwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJs
ZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcAppbmRleCBj
ODAyM2RlNDE2MS4uZjQ5NzE1MWQ3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
dm9pZCBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6YWRkV2ViUGFnZShXZWJQYWdlUHJveHkm
IHdlYlBhZ2VQcm94eSwgV2ViUHJvY2UKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvY2Vzcy5pc1By
ZXdhcm1lZCgpKTsKIAogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQoJnByb2Nlc3MpLmlzTmV3RW50
cnkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1l
T2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRo
aXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRv
VUludDY0KCkpOwogICAgICAgICB3ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHByb2Nlc3Ms
ICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAgICAgfQogCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQg
V2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3
ZWJQYWdlUHJveHksIFdlYlByCiAgICAgd2ViUGFnZURpZENsb3NlQ29ubmVjdGlvbih3ZWJQYWdl
UHJveHksICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAKICAgICBpZiAobV9wcm9jZXNzZXMucmVt
b3ZlKCZwcm9jZXNzKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQ
cm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdl
UHJveHkucGFnZUlEKCkpOworICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQ
cm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdl
UHJveHkucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgICAgIHdlYlByb2Nlc3NEaWRDbG9zZUNv
bm5lY3Rpb24ocHJvY2VzcywgKnByb2Nlc3MuY29ubmVjdGlvbigpKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMGUxMzlmMzBkOWMu
LjBiOGIzNDVlZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCkBAIC0xMjk2LDkgKzEyOTYsOSBAQCBib29sIFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVn
aXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmUmIHN0bwogfQogI2Vu
ZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9y
ZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5hZGQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNo
U2V0PHVpbnQ2NF90PigpKS5pdGVyYXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CisgICAgYXV0byBy
ZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwg
SGFzaFNldDxQYWdlSWRlbnRpZmllcj4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOwog
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICBhdXRv
IHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKQEAgLTEzMTYsNyArMTMxNiw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50
NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3NQb29s
OjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vi
c2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsK
ICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmZpbmQoc2Vzc2lvbklE
KTsKQEAgLTIyMTEsNyArMjIxMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlaW5zdGF0ZU5l
dHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYKIH0KIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIFdlYlBy
b2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBw
YWdlSUQpIGNvbnN0CitTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlE
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIGZvciAo
YXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFs
dWVzKCkpIHsKQEAgLTI1MTksNyArMjUxOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFy
Q3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMo
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5n
KCkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
dWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRl
TG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQogICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDE2NTU0NWIxYTJmLi4xN2UzZTgwMmJjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xNDgsNiArMTQ4
LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor
ICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNz
YWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVy
KG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIp
OworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgeworICAgICAgICByZW1v
dmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJ
bnQ2NCgpKTsKKyAgICB9CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KTsKQEAgLTE5Myw4ICsyMDUsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAKLSAgICB2b2lkIHBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdl
SUQsIFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRh
U3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdl
QmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKKyAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICBib29sIGhhc1Bh
Z2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKSBjb25zdDsKIAogICAg
IGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25m
aWd1cmF0aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQpAQCAtMzY1LDcgKzM3Nyw3IEBAIHB1
YmxpYzoKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5
JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+
KTsKLSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKSBjb25zdDsKICAgICBjb25zdCBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQ
cm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAg
dm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxv
d3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7
IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNv
bnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9
CkBAIC00OTMsNyArNTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZERpc3BsYXlDb25maWd1
cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CiAgICAgdm9pZCBjbGVhckN1cnJlbnRN
b2RpZmllclN0YXRlRm9yVGVzdGluZygpOwogCi0gICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiB0b0RvbWFpbiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAjaWYgUExBVEZP
Uk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAgdm9pZCBzZXRTYW5kYm94RW5hYmxlZChib29s
IGVuYWJsZWQpIHsgbV9zYW5kYm94RW5hYmxlZCA9IGVuYWJsZWQ7IH07CkBAIC03NTgsNyArNzcw
LDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFBhdGhzIG1fcmVzb2x2ZWRQYXRoczsKIAotICAg
IEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Nlc3Npb25Ub1Bh
Z2VJRHNNYXA7CisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsKICAgICBSdW5Mb29wOjpUaW1l
cjxXZWJQcm9jZXNzUG9vbD4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzVGVybWluYXRpb25UaW1l
cjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4MjAzNDY1Y2IyOC4uNjc4MzFlMjA3ODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTEwLDEwICsx
MTAsOSBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50
aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZgogICAgIHJldHVybiBhbGxQcm9jZXNzZXMo
KS5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXVpbnQ2NF90IFdlYlByb2Nlc3NQcm94eTo6Z2VuZXJh
dGVQYWdlSUQoKQorUGFnZUlkZW50aWZpZXIgV2ViUHJvY2Vzc1Byb3h5OjpnZW5lcmF0ZVBhZ2VJ
RCgpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVBhZ2VJRDsKLSAgICByZXR1cm4gKyt1
bmlxdWVQYWdlSUQ7CisgICAgcmV0dXJuIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogfQog
CiBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAmIGdsb2JhbFBhZ2VNYXAo
KQpAQCAtMzMwLDcgKzMyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAg
ICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3ModGhpcyk7CiB9CiAKLVdlYlBhZ2VQ
cm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBhZ2VQ
cm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQpAQCAtMzYzLDcgKzM2
Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRy
eUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAKIFJlZjxXZWJQYWdlUHJveHk+IFdlYlBy
b2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJ
OjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJhdGlvbikKIHsKLSAgICB1aW50NjRf
dCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gZ2VuZXJhdGVQ
YWdlSUQoKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5Ojpj
cmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlv
bikpOwogCiAgICAgYWRkRXhpc3RpbmdXZWJQYWdlKHdlYlBhZ2UuZ2V0KCksIEJlZ2luc1VzaW5n
RGF0YVN0b3JlOjpZZXMpOwpAQCAtNDE1LDEwICs0MTQsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRzVXNpbmdEYXRhU3Rv
cmUgZW4KICAgICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojph
ZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3Jl
LCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtT
dG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKQogewogICAgIGF1dG8mIHVzZXJzID0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhV
c2Vycy5lbnN1cmUoJnZpc2l0ZWRMaW5rU3RvcmUsIFtdIHsKLSAgICAgICAgcmV0dXJuIEhhc2hT
ZXQ8dWludDY0X3Q+IHsgfTsKKyAgICAgICAgcmV0dXJuIEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+
IHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIXVzZXJzLmNvbnRh
aW5zKHBhZ2VJRCkpOwpAQCAtNDI4LDcgKzQyNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojph
ZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3Jl
CiAgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUuYWRkUHJvY2VzcygqdGhpcyk7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0
b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRl
ZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8gaXQgPSBtX3Zp
c2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmZpbmQoJnZpc2l0ZWRMaW5rU3RvcmUpOwogICAgIGlm
IChpdCA9PSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmVuZCgpKQpAQCAtNTQxLDcgKzU0
MCw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCkK
IH0KICNlbmRpZgogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdlV2l0
aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92
aXNpb25hbFBhZ2VXaXRoSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIGZv
ciAoYXV0byogcHJvdmlzaW9uYWxQYWdlIDogbV9wcm92aXNpb25hbFBhZ2VzKSB7CiAgICAgICAg
IGlmIChwcm92aXNpb25hbFBhZ2UtPnBhZ2UoKS5wYWdlSUQoKSA9PSBwYWdlSUQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDlhNmNiZjFmNDYwLi5hZDNm
MDM4ZGQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAg
LTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lc3NhZ2VQb3J0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hh
cmVkU3RyaW5nSGFzaC5oPgpAQCAtOTcsNyArOTgsNyBAQCBlbnVtIGNsYXNzIEFsbG93UHJvY2Vz
c0NhY2hpbmcgeyBObywgWWVzIH07CiBjbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUHJvY2Vzc1Byb3h5PiwgcHVibGljIENhbk1h
a2VXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVu
dCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJh
bWVQcm94eT4+IFdlYkZyYW1lUHJveHlNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90
LCBXZWJQYWdlUHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0
aW9uPj4gVXNlckluaXRpYXRlZEFjdGlvbk1hcDsKIAogICAgIGVudW0gY2xhc3MgSXNQcmV3YXJt
ZWQgewpAQCAtMTI4LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYnNpdGVEYXRh
U3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgc3RhdGljIFdlYlByb2Nlc3NQcm94eSog
cHJvY2Vzc0ZvcklkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHN0
YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMg
V2ViUGFnZVByb3h5KiB3ZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBSZWY8
V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJik7CiAKICAgICBlbnVtIGNsYXNzIEJlZ2luc1VzaW5nRGF0YVN0b3JlIDog
Ym9vbCB7IE5vLCBZZXMgfTsKQEAgLTE0OSwxMCArMTUwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlV2ViUGFnZUluUHJvY2Vzcyh1aW50NjRfdCBwYWdlSUQp
OworICAgIHZvaWQgZGlkQ3JlYXRlV2ViUGFnZUluUHJvY2VzcyhXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3Rv
cmUmLCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVz
ZXIoVmlzaXRlZExpbmtTdG9yZSYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBhZGRWaXNp
dGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9y
ZSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgYWRkV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmLCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBkaWREZXN0cm95V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmKTsKQEAgLTMxMSw3
ICszMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3ZWJQYWdlTWVkaWFTdGF0ZURpZENoYW5nZShX
ZWJQYWdlUHJveHkmKTsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0
ZVBhZ2VJRCgpOworICAgIHN0YXRpYyBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBnZW5lcmF0ZVBh
Z2VJRCgpOwogICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRh
U3RvcmUqLCBJc1ByZXdhcm1lZCk7CiAKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKQEAg
LTM1NCw3ICszNTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEZvclZp
c2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpOwogI2VuZGlmCiAKLSAg
ICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0Owor
ICAgIGJvb2wgaGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KSBjb25zdDsKICAgICBib29sIGlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mKSBjb25zdDsKIAogICAgIC8vIFBsdWdpbnMKQEAgLTQ0Nyw3ICs0
NDgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8UHJvdmlzaW9uYWxQYWdlUHJveHkqPiBtX3By
b3Zpc2lvbmFsUGFnZXM7CiAgICAgVXNlckluaXRpYXRlZEFjdGlvbk1hcCBtX3VzZXJJbml0aWF0
ZWRBY3Rpb25NYXA7CiAKLSAgICBIYXNoTWFwPFZpc2l0ZWRMaW5rU3RvcmUqLCBIYXNoU2V0PHVp
bnQ2NF90LyogcGFnZUlEICovPj4gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2VyczsKKyAgICBI
YXNoTWFwPFZpc2l0ZWRMaW5rU3RvcmUqLCBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
Pj4gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2VyczsKICAgICBIYXNoU2V0PFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzOwog
CiAgICAgaW50IG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJsZWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4
IGUzNTUzMTllYTRjLi43ZDU3NWE0MDRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlVS
TFNjaGVtZUhhbmRsZXI6OnRhc2tDb21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYgdGFzaykKICAg
ICBwbGF0Zm9ybVRhc2tDb21wbGV0ZWQodGFzayk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lSGFu
ZGxlcjo6cmVtb3ZlVGFza0Zyb21QYWdlTWFwKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgdGFz
a0lEKQordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBhZ2VNYXAoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpCiB7CiAgICAgYXV0byBpdGVyYXRv
ciA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZUlEKTsKICAgICBBU1NFUlQoaXRl
cmF0b3IgIT0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IDg5OTc2YzYxZjgzLi5iN2Fm
MDc1OTc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuaApAQCAtNjYsMTMgKzY2LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRm
b3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiwgV2ViVVJMU2NoZW1lVGFzayYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgcGxhdGZvcm1UYXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7
CiAKLSAgICB2b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IHRhc2tJRCk7CisgICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJRCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzRm9yVGFza0lkZW50aWZpZXIodWludDY0X3QpIGNvbnN0OwogCiAgICAgdWludDY0X3QgbV9p
ZGVudGlmaWVyOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVtZVRhc2s+
PiBtX3Rhc2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Rh
c2tzQnlQYWdlSWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CiAgICAgCiAgICAg
U3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggMTlh
NmJiODRjM2MuLjliN2FkNWUyMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmNwcApAQCAtNzAsNyArNzAsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6
OmRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9u
cwogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCiAgICAgbV9yZXF1ZXN0ID0g
cmVxdWVzdDsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVt
ZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24obV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVy
KCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UsIHJlcXVlc3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGly
ZWN0aW9uKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJl
c3BvbnNlLCByZXF1ZXN0KSk7CiAKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0K
QEAgLTkzLDcgKzkzLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICBpZiAoaXNTeW5j
KCkpCiAgICAgICAgIG1fc3luY1Jlc3BvbnNlID0gcmVzcG9uc2U7CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2Uo
bV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2Up
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hl
bWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigp
LCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlKSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5v
bmU7CiB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJl
Y2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3Vy
bFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1l
VGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lk
ZW50aWZpZXIsIHsgYnVmZmVyIH0pKTsKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsK
IH0KIApAQCAtMTQzLDcgKzE0Myw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxl
dGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAg
bV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVy
LT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgZXJyb3IpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91
cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgZXJyb3IpKTsKICAg
ICBtX3VybFNjaGVtZUhhbmRsZXItPnRhc2tDb21wbGV0ZWQoKnRoaXMpOwogCiAgICAgcmV0dXJu
IEV4Y2VwdGlvblR5cGU6Ok5vbmU7CkBAIC0xNjksNCArMTY5LDE0IEBAIHZvaWQgV2ViVVJMU2No
ZW1lVGFzazo6c3RvcCgpCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFp
bGVkQ3VzdG9tUHJvdG9jb2xTeW5jTG9hZChtX3JlcXVlc3QpLCB7IH0pOwogfQogCitJUEM6OkNv
bm5lY3Rpb24qIFdlYlVSTFNjaGVtZVRhc2s6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90
IFdlYlVSTFNjaGVtZVRhc2s6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApp
bmRleCBiODcyMDczYmQyNy4uN2YxNGI5ODYwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KQEAgLTUxLDEzICs1MiwxMyBAQCBjbGFzcyBXZWJQYWdlUHJv
eHk7CiAKIHVzaW5nIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+OwogCi1jbGFzcyBXZWJV
UkxTY2hlbWVUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4sIHB1Ymxp
YyBJbnN0YW5jZUNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4geworY2xhc3MgV2ViVVJMU2NoZW1l
VGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+LCBwcml2YXRlIElQQzo6
TWVzc2FnZVNlbmRlciwgcHVibGljIEluc3RhbmNlQ291bnRlZDxXZWJVUkxTY2hlbWVUYXNrPiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViVVJMU2NoZW1lVGFzayk7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxl
ciYsIFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IGlkZW50aWZpZXIs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYp
OwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmll
cjsgfQotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZp
ZXI7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VJZGVudGlmaWVyOyB9CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKCkgY29u
c3QgeyByZXR1cm4gbV9wcm9jZXNzLmdldCgpOyB9CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KQEAgLTgw
LDYgKzgxLDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJVUkxTY2hlbWVUYXNrKFdl
YlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21w
bGV0aW9uSGFuZGxlciYmKTsKKyAgICAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICBJ
UEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7Cisg
ICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIAog
ICAgIGJvb2wgaXNTeW5jKCkgY29uc3QgeyByZXR1cm4gISFtX3N5bmNDb21wbGV0aW9uSGFuZGxl
cjsgfQogCkBAIC04Nyw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KiBtX3Bh
Z2U7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOwogICAgIHVpbnQ2NF90
IG1faWRlbnRpZmllcjsKLSAgICB1aW50NjRfdCBtX3BhZ2VJZGVudGlmaWVyOworICAgIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBib29sIG1fc3RvcHBlZCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX3Jlc3BvbnNlU2VudCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDBiZjUx
MTJhOWU0Li4wYThiMGMxMTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE1NzYsNyArMTU3Niw3
IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2Fz
Q2FwdHVyZWQoYm9vbCB2YWx1ZSwgQ29tcGxlCiAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVO
ZXR3b3JrUHJvY2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1f
c2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxs
YmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4mJiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJQYWdl
ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmgKaW5kZXggNjQyZTMzMDlkMDcuLjgyMmMzZmM3NjM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2
aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0
YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8
cGFsL1Nlc3Npb25JRC5oPgpAQCAtMTM1LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1
bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYpOwogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4m
Jik7CisgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMp
PiYmKTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2Uo
Y29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBp
c1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20s
IGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggNzYwYTFkMDA5ZGUuLjAxNzk5NWE1MTUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYklu
c3BlY3RvclByb3h5TWFjLm1tCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25z
dCBTdHIKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VS
TDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmcg
ZXJyb3I6TlVMTF07CiAKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0
ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0
dWFsVVJMIGFic29sdXRlU3RyaW5nXSkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURp
YWxvZykgewpAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTCiAgICAg
W2hhbmRsZSBjbG9zZUZpbGVdOwogCiAgICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQYWdlID0g
d2ViVmlldygpLT5fcGFnZS5nZXQoKTsKLSAgICBpbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFi
c29sdXRlU3RyaW5nXSksIGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBpbnNwZWN0b3JQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkQXBwZW5kKFthY3R1
YWxVUkwgYWJzb2x1dGVTdHJpbmddKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggZjcwZjFhNGFjNGQuLmM1NzM4NmUzNDVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZv
aWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlkVXBkYXRlR2VvbWV0cnko
KQogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBk
YXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCiB7CiAgICAgU2Vjb25kcyBh
Y3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoMjUw
KTsKLSAgICBwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlPihtX3dl
YlBhZ2VQcm94eS5wYWdlSUQoKSwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6V2Fp
dEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICBw
cm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlPihtX3dlYlBhZ2VQcm94
eS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCwgSVBDOjpX
YWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQog
CiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndpbGxTZW5kVXBkYXRl
R2VvbWV0cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggNTAyNDFkOGJmNjIuLmY1M2ZiMjFlM2VlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9s
bGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJNYWMubW0KQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2ZW50ICpldmVudCwgRmxv
YQogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBkcm9wIHRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgZ2Vz
dHVyZSBvbiB0aGUgZmxvb3IsIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgdmlzaWJsZSBjb250
ZW50IGJvdW5kcyB5ZXQuCiAgICAgICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5
LnBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5
Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAg
ICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29s
bGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpKTsKICAgICAg
ICAgbV9sYXN0TWFnbmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24gPSBmYWxz
ZTsKIAogICAgICAgICByZXR1cm47CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBv
cmlnaW4pCiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpO
b25lKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5
Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdl
SUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9t
ZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZShvcmlnaW4pKTsKIH0KIAogc3RhdGljIGZsb2F0IG1heGltdW1SZWN0YW5nbGVDb21wb25lbnRE
ZWx0YShGbG9hdFJlY3QgYSwgRmxvYXRSZWN0IGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCAy
MTUxNjYyZDM0Ny4uNWE2ODMwOTZlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMTkzLDcg
KzE5Myw3IEBAIC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcldpbGxCZWdpbkFuaW1h
dGlvbjooTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjCiAgICAgLy8gRklYTUU6IENvbm5lY3Rp
b24gY2FuIGJlIG51bGwgaWYgdGhlIHByb2Nlc3MgaXMgY2xvc2VkOyB3ZSBzaG91bGQgY2xlYW4g
dXAgYmV0dGVyIGluIHRoYXQgY2FzZS4KICAgICBpZiAoX3N0YXRlID09IFdlYktpdDo6SW1tZWRp
YXRlQWN0aW9uU3RhdGU6OlBlbmRpbmcpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24g
PSBfcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKSkgewotICAgICAgICAgICAgYm9vbCByZWNl
aXZlZFJlcGx5ID0gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3Q+KF9w
YWdlLT5wYWdlSUQoKSwgU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyg1MDApKTsKKyAgICAgICAg
ICAgIGJvb2wgcmVjZWl2ZWRSZXBseSA9IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rp
b25IaXRUZXN0PihfcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgU2Vjb25kczo6ZnJvbU1pbGxp
c2Vjb25kcyg1MDApKTsKICAgICAgICAgICAgIGlmICghcmVjZWl2ZWRSZXBseSkKICAgICAgICAg
ICAgICAgICBfc3RhdGUgPSBXZWJLaXQ6OkltbWVkaWF0ZUFjdGlvblN0YXRlOjpUaW1lZE91dDsK
ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYklu
c3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3Bl
Y3RvclByb3h5TWFjLm1tCmluZGV4IDAwN2Q4N2RmY2Q4Li5mNGFiOTFlODliMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpA
QCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShj
b25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2Fs
bHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAg
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pKTsKICAgICB9
OwogCiAgICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZFVSTCwgY29uc3QgU3RyaW5nJgogICAgIFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZp
bGVdOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5z
cGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSkp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFtZURpZENoYW5nZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA4
N2M2OGIzMzQ4NS4uNDU1ZDJkNWQ0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp3aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChjb25zdCBGbG9hdFJlY3QmIHZpZXdGcmFt
ZUluV2luZG93CiAgICAgLy8gSW4gY2FzZSB0aGUgVUkgY2xpZW50IG92ZXJyaWRlcyBnZXRXaW5k
b3dGcmFtZSgpLCB3ZSBjYWxsIGl0IGhlcmUgdG8gbWFrZSBzdXJlIHdlIHNlbmQgdGhlIGFwcHJv
cHJpYXRlIHdpbmRvdyBmcmFtZS4KICAgICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdmlld0ZyYW1lSW5XaW5kb3dD
b29yZGluYXRlcywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlc10gKEZsb2F0UmVjdCB3aW5k
b3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMpIHsKICAgICAgICAgRmxvYXRSZWN0IHdpbmRvd0Zy
YW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcyA9IHBhZ2VDbGllbnQoKS5jb252ZXJ0VG9V
c2VyU3BhY2Uod2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKTsKLSAgICAgICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHdp
bmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVl
bkNvb3JkaW5hdGVzLCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nlc3NpYmlsaXR5
Vmlld0Nvb3JkaW5hdGVzKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRp
bmF0ZXMsIHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1l
SW5XaW5kb3dDb29yZGluYXRlcywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcykpOwogICAg
IH0pOwogfQogCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5G
cmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1haW5GcmFtZUlzU2Nyb2xsYWJs
ZShpc1Njcm9sbGFibGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVk
VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNl
bWVudFJhbmdlLCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0
aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQpAQCAtMjA1
LDcgKzIwNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0
ZWRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVz
LCByZWdpc3RlclVuZG9Hcm91cCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0
YXRpb25BbHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3VwKSk7CiAjZWxzZQogICAgIEluc2Vy
dFRleHRPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJl
Z2lzdGVyVW5kb0dyb3VwOwpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojph
dHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFu
Z2UmCiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1
dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5n
Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6YXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29u
c3QgQXR0cmlidXRlZFN0cmluZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJh
bmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIGRvdWJsZSwgYm8KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmlu
ZyYgZm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZv
bnRzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yNzEsNyArMjcxLDcgQEAgU3RyaW5nIFdl
YlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgICAgIHJldHVy
biB2YWx1ZTsKICAgICAKICAgICBjb25zdCBTZWNvbmRzIG1lc3NhZ2VUaW1lb3V0KDIwKTsKLSAg
ICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZv
clBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAg
ICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZCgpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZDo6UmVwbHkodmFsdWUpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQog
CkBAIC0yODIsOCArMjgyLDggQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFn
ZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHIKICAgICBTaGFyZWRN
ZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7CiAgICAgY29uc3Qg
U2Vjb25kcyBtZXNzYWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlw
ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNz
YWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRs
ZSwgc2l6ZSksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBl
KSwKKyAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgaWYgKGhhbmRs
ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFy
ZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKQEAgLTI5NywxNCArMjk3LDE0IEBAIGJv
b2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5n
JiBwYXN0ZWJvYXJkTmFtZSkKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3Qg
U2Vjb25kcyBtZXNzYWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUp
LCBNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOjpSZXBseShy
ZXN1bHQpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLCBN
ZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOjpSZXBseShyZXN1
bHQpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogI2lmIEVOQUJM
RShTRVJWSUNFX0NPTlRST0xTKQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3Rpb25X
aXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGlvbldp
dGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YSkpOwogfQogI2VuZGlmCiAKQEAgLTMzNCwyMiAr
MzM0LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2lu
KHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4ocGx1Z2luQ29tcGxleFRl
eHRJbnB1dElkZW50aWZpZXIsIHRleHRJbnB1dCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHBsdWdpbkNvbXBsZXhU
ZXh0SW5wdXRJZGVudGlmaWVyLCB0ZXh0SW5wdXQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnVwcGVyY2FzZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpVcHBlcmNhc2VXb3JkKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpVcHBlcmNhc2VXb3JkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG93ZXJjYXNlV29y
ZCgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxvd2VyY2FzZVdv
cmQoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxvd2VyY2FzZVdv
cmQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYXBpdGFsaXplV29yZCgpCiB7Ci0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcGl0YWxpemVXb3JkKCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBpdGFsaXplV29yZCgpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sIGlz
U21hcnRJbnNlcnREZWxldGVFbmFibGVkKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBpc1NtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZCkKIAogICAgIFRleHRDaGVja2VyOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQoaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpOwogICAgIG1faXNTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQgPSBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKLSAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAo
Y29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykKQEAgLTM5NSw3
ICszOTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmls
aXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9r
ZW4sIHdpbmRvd1Rva2VuKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRv
d1Rva2VuKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwbHVnaW5Gb2N1c09yV2luZG93Rm9j
dXNDaGFuZ2VkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBib29s
IHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpCkBAIC00MjQsNyArNDI0LDcgQEAgYm9v
bCBXZWJQYWdlUHJveHk6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JFdmVudChjb25zdCBX
ZWJLaXQ6OldlYk1vdXNlRXZlbnQKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29u
c3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgzKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChldmVudCksIE1l
c3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQ6OlJlcGx5KHJl
c3VsdCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChldmVudCksIE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQ6OlJlcGx5KHJlc3VsdCks
IG1lc3NhZ2VUaW1lb3V0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzUsNyArNDM1
LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJl
ciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW4KIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7
CiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgzKTsKLSAgICBwcm9jZXNzKCkuc2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVyLCBl
dmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZTo6UmVwbHkocmVzdWx0
KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZTo6QWNjZXB0c0ZpcnN0TW91c2UoZXZlbnROdW1iZXIsIGV2ZW50KSwgTWVzc2FnZXM6Oldl
YlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlOjpSZXBseShyZXN1bHQpLCBtZXNzYWdlVGltZW91dCk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCBmZjQ0
OTM0MWQ5ZS4uNTdmM2ZlMTczY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0xNjgsNyAr
MTY4LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGF5bWVudENvb3JkaW5hdG9y
OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2Vi
UGFnZS5wYWdlSUQoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7
CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0
IFN0cmluZyYgdmFsaWRhdGlvblVSTFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAKaW5kZXggYjFjYmM5NjNiMGUuLjQ1NGNhNmJjODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUp
CiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbihjYWxsYmFja0lELCBlcnJvck1lc3NhZ2UsIGVycm9yVHlwZSksIDApOwog
fQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1
bmN0aW9uKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBm
dW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENh
bGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0
aW9uKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNp
dENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBh
Z2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVp
bnQ2NF90IGZyYW1lSUQsCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2
YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNhbGxiYWNrSUQsIHJlc3VsdCwgZXJyb3JUeXBlKSwg
MCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJh
bWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90
IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
V2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsK
ICAgICBpZiAoIXBhZ2UpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlE
LCB1aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJh
bWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hp
bGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRs
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTM4OCw3ICsz
ODgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1l
V2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlELAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rjo6bnVsbG9wdCwgZnJhbWVGcm9tRWxlbWVudC0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVX
aXRoTmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50
NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAg
LTQyNiw3ICs0MjYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVD
aGlsZEZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NgogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2Up
IHsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJl
c29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYQogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgcGFyZW50RnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAK
LXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Zm9jdXNGcmFtZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZv
Y3VzRnJhbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQogewogICAg
IFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7
CiAgICAgaWYgKCFwYWdlKQpAQCAtNTI3LDcgKzUyNyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9h
dFBvaW50IGNvbnZlcnRQb2ludEZyb21GcmFtZUNsaWVudFRvUm9vdFZpZXcoV2ViQ29yZTo6RnJh
bWVWCiAgICAgcmV0dXJuIGNsaWVudFBvaW50OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwg
Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFBvaW50PiwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2Vi
UGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAg
ICBpZiAoIXBhZ2UpIHsKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgcmVzdWx0RWxlbWVudEJvdW5k
cywgcmVzdWx0SW5WaWV3Q2VudGVyUG9pbnQsIGlzT2JzY3VyZWQpOwogfQogCi12b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudChQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7
CiAgICAgaWYgKCFwYWdlKSB7CkBAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIFdlYkNvcmU6Oklu
dFJlY3Qgc25hcHNob3RSZWN0Rm9yU2NyZWVuc2hvdChXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpF
bGVtZW4KICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OnRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9W
aWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6dGFrZVNjcmVlbnNob3QoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29s
IGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFNoYXJlYWJsZUJp
dG1hcDo6SGFuZGxlIGhhbmRsZTsKIApAQCAtNzUxLDcgKzc1MSw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlECiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRha2VTY3Jl
ZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgeyB9KSwgMCk7CiB9CiAKLXZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFtZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBh
Z2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC03NzYsNyArNzc2LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZvdW5kQ29v
a2llcyk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGVsZXRlQ29va2ll
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgK
aW5kZXggNjI5NTQxZDIwYmEuLjExNjc2NDUyNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIkNvb3JkaW5hdGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDE3ICs2MSwxNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eSBtZXNzYWdlcwotICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b24odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJh
Y2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0g
ICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJh
bWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAg
IHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYp
OwotICAgIHZvaWQgZm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQp
OwotICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVk
LCBDb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmlu
Zz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+
JiYpOwotICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFN0cmluZz4pPiYmKTsKLSAgICB2b2lkIHRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+KT4mJik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVj
dHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwor
ICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAg
dm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVQYXJl
bnRGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZv
aWQgZm9jdXNGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCk7
CisgICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4s
IGJvb2wpPiYmKTsKKyAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKKyAgICB2b2lkIHRha2VTY3JlZW5z
aG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9k
ZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXNGb3JGcmFtZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYpOworICAg
IHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+KT4mJik7CiAKICAgICBTdHJpbmcgbV9zZXNzaW9uSWRlbnRpZmllcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWExMjE5ZTJl
ZjEuLmQ3MmY4OWQyNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
bWVzc2FnZXMuaW4KQEAgLTIxLDIxICsyMSwyMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdl
cyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IHsKLSAgICBFdmFsdWF0ZUphdmFTY3JpcHRG
dW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBmdW5jdGlv
biwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNr
QXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAg
RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3Vt
ZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tU
aW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRo
T3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGlu
YWwpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5
bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+
IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUp
IC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMK
LSAgICBSZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
KSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5j
CisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZl
Q2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+
IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIG5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3Qg
ZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCiAKLSAgICBGb2N1c0ZyYW1lKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKKyAgICBGb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKIAotICAgIENvbXB1dGVFbGVtZW50
TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29v
cmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+
IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIEFzeW5jCisgICAgQ29tcHV0ZUVs
ZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChP
cHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkg
QXN5bmMKIAotICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JU
eXBlKSBBc3luYworICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYwogCi0gICAgVGFrZVNjcmVlbnNob3QodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3Jv
bGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFj
a0lEKQorICAgIFRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAg
IEdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+
IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29v
a2llcykgQXN5bmMKLSAgICBEZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBl
KSBBc3luYworICAgIEdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKKyAgICBEZWxldGVDb29raWUo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
Y29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggYWUzODgzZDg2YjYuLmFmODlkNzg4MTYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdl
UmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSkgewotICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKQorICAgICAgICBpZiAoYXV0byogd2Vi
UGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZp
ZXI8UGFnZUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAg
ICAgICAgd2ViUGFnZS0+ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29k
ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDA0YWUwZTQ1ZDVl
Li4yNzhiNjAxODQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2Fk
ZXIsIENhY2hlZFJlc291CiAgICAgYXV0byYgZnJhbWVMb2FkZXJDbGllbnQgPSByZXNvdXJjZUxv
YWRlci5mcmFtZUxvYWRlcigpLT5jbGllbnQoKTsKIAogICAgIFdlYlJlc291cmNlTG9hZGVyOjpU
cmFja2luZ1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0ZXJzOwotICAgIHRyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZU9yKDApOworICAg
IHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52
YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsgfSk7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQgPSBmcmFtZUxvYWRlckNsaWVudC5mcmFtZUlEKCkudmFsdWVPcigwKTsKICAgICB0cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCA9IGlkZW50aWZpZXI7CiAgICAgYXV0byBzZXNzaW9uSUQg
PSBmcmFtZUxvYWRlckNsaWVudC5zZXNzaW9uSUQoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNl
TG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHJlbWVtYmVyIHRoZSBS
ZXNvdXJjZUxvYWRlciBpbiBvdXIgcmVjb3JkcyBidXQgbm90IHNjaGVkdWxlIGl0IGluIHRoZSBO
ZXR3b3JrUHJvY2Vzcy4KICAgICBpZiAocmVzb3VyY2VMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+
c2NoZWR1bGVBcmNoaXZlTG9hZChyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFz
IGFuIGFyY2hpdmUgcmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNv
dXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCks
IHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBp
ZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291
cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIG1fd2ViUmVzb3VyY2VMb2FkZXJzLnNldChp
ZGVudGlmaWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHJlc291cmNlTG9hZGVyLCB0cmFj
a2luZ1BhcmFtZXRlcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3NSwxNCArMTc1
LDE0IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRl
ciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBpZiAocmVzb3VyY2VMb2FkZXIu
ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRSZXNvdXJj
ZShyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCByZXNvdXJjZUxvYWRl
ci5yZXF1ZXN0KCkudXJsKCkpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihX
ZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxs
IGJlIGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlLiIsIHJlc291cmNlTG9hZGVyLnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgZnJvbSBh
cHBsaWNhdGlvbiBjYWNoZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9h
ZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChy
ZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGZyb20gYXBw
bGljYXRpb24gY2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRl
ci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgbV93ZWJSZXNvdXJjZUxv
YWRlcnMuc2V0KGlkZW50aWZpZXIsIFdlYlJlc291cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VM
b2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzRGF0YSgpKSB7
CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGxvYWRlZCBhcyBkYXRhLiIs
IHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwg
d2lsbCBiZSBsb2FkZWQgYXMgZGF0YSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291
cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGFz
IGRhdGEgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgp
LCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VM
b2FkZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VM
b2FkZXIsIENhY2hlZFJlc291CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGlzUXVpY2tM
b29rUHJldmlld1VSTChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkpKSB7CiAgICAgICAg
IExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVz
b3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxv
YWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2UgKGZyYW1lID0g
JXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxv
YWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2UgKGZyYW1lID0g
JXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVu
dGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJl
c291CiAgICAgLy8gaHR0cHM6Ly9ibG9ncy5nbm9tZS5vcmcvYWxleGwvMjAxMi8wMS8yNi9yZXNv
dXJjZXMtaW4tZ2xpYi8KICAgICBpZiAocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpLnBy
b3RvY29sSXMoInJlc291cmNlIikpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAi
KFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdp
bGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJjZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNv
dXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNv
dXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCks
IHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBp
ZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJjZSAoZnJh
bWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IGlkZW50aWZpZXIpOwogICAgICAgICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBD
YWNoZWRSZXNvdQogICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuaGFu
ZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgW3RoaXMsIHRyYWNraW5nUGFyYW1ldGVycywgaWRlbnRpZmll
ciwgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBt
YXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSwgcmVz
b3VyY2VMb2FkZXIgPSBtYWtlUmVmKHJlc291cmNlTG9hZGVyKV0gKFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6UmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQgIT0g
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQ6OlVuaGFuZGxlZCkgewogICAgICAgICAg
ICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2Vydmlj
ZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIiwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0
cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hl
ZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1l
ID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIp
OworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQo
KSwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdv
cmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
cmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50
NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNvdXJjZUxvYWRlci0+b3B0aW9u
cygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0
KCksICJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNl
V29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9h
ZDogdW5hYmxlIHRvIHNjaGVkdWxlIFVSTCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZl
dGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3Jlc291cmNlTG9hZGVyID0gV1RGTW92ZShyZXNvdXJjZUxvYWRlcildIHsKICAgICAg
ICAgICAgICAgICBhdXRvIGVycm9yID0gaW50ZXJuYWxFcnJvcihyZXNvdXJjZUxvYWRlci0+cmVx
dWVzdCgpLnVybCgpKTsKICAgICAgICAgICAgICAgICBlcnJvci5zZXRUeXBlKFJlc291cmNlRXJy
b3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CkBAIC0yMjcsMTMgKzIyNywxMyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVy
LCBDYWNoZWRSZXNvdQogICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxv
YWRlclN0cmF0ZWd5KCkudHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxv
YWRlcikpCiAgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJh
dGVneSgpLnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlci5nZXQo
KSwgcmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzZXNzaW9u
SUQsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZm
ZXJpbmdUaW1lKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVk
IGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9h
ZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRl
cnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQg
YnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2Fk
ZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgIH0pOwogI2Vsc2UKICAgICBp
ZiAoIXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKQogICAg
ICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzZXNzaW9uSUQsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1l
KHJlc291cmNlKSk7CiAgICAgZWxzZQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJl
c291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRs
ZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlk
ZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVy
LCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9
ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRl
bnRpZmllcik7CiAjZW5kaWYKIH0KIApAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYg
cmVzb3VyY2VMCiAgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLm9wdGlvbnMubW9kZSAhPSBGZXRjaE9w
dGlvbnM6Ok1vZGU6Ok5hdmlnYXRlKSB7CiAgICAgICAgIEFTU0VSVChsb2FkUGFyYW1ldGVycy5z
b3VyY2VPcmlnaW4pOwogICAgICAgICBpZiAoIWxvYWRQYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbikg
ewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ciwgInNjaGVkdWxlTG9hZDogbm8gc291cmNlT3JpZ2luIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9
ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8
aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJz
LndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRl
bnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291
cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBubyBzb3VyY2VPcmlnaW4gKGZyYW1lID0gJXAsIHBy
aW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0
aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBh
cmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgICAgICAgICAgc2NoZWR1bGVJbnRlcm5h
bGx5RmFpbGVkTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTM0Niw5ICszNDYsOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogCiAgICAg
QVNTRVJUKChsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgJiYgbG9hZFBhcmFtZXRlcnMud2ViRnJh
bWVJRCkgfHwgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRD
cmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscyk7CiAKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBSZXNv
dXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0g
JXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgp
LCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwg
bG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2Fk
UGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291
cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0
aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNl
TG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycyks
IDApKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIsICJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBO
ZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIs
IHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIu
cmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZy
YW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5m
cmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0
eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgICAgICAvLyBXZSBw
cm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9j
ZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQuCiAgICAgICAgIC8vIFRoaXMgbG9hZCB3aWxsIG5l
dmVyIHN1Y2NlZWQgc28gd2Ugd2lsbCBzY2hlZHVsZSBpdCB0byBmYWlsIGFzeW5jaHJvbm91c2x5
LgogICAgICAgICBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKHJlc291cmNlTG9hZGVyKTsK
QEAgLTUwNywxOSArNTA3LDE5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgV2ViRnJh
bWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVu
dC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1l
ID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAKLSAgICBhdXRvIHBhZ2VJRCA9IHdlYlBh
Z2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CisgICAgYXV0byBwYWdlSUQgPSB3ZWJQYWdlID8g
d2ViUGFnZS0+cGFnZUlEKCkgOiBQYWdlSWRlbnRpZmllciB7IH07CiAgICAgYXV0byBmcmFtZUlE
ID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKICAgICBhdXRvIHNlc3Npb25J
RCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCk7CiAKICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lTG9hZGVyLmZyYW1l
KCkuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTog
bm8gZG9jdW1lbnQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlm
aWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBubyBkb2N1bWVudCAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQudG9V
SW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgICAgIGVycm9y
ID0gaW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChhdXRvIHN5bmNMb2FkUmVzdWx0ID0gdHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlV
c2luZ1VSTFNjaGVtZUhhbmRsZXIoZnJhbWVMb2FkZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIs
IHJlcXVlc3QpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lv
bklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIGNhbGxpbmcgdHJ5TG9hZGlu
Z1N5bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUsIGVycm9yID0gJWQpIiwg
cGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBzeW5jTG9hZFJlc3VsdC0+
ZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBjYWxsaW5nIHRy
eUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyIChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1LCBlcnJvciA9
ICVkKSIsIHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCBzeW5jTG9hZFJlc3VsdC0+ZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgICAgICBlcnJvciA9IFdU
Rk1vdmUoc3luY0xvYWRSZXN1bHQtPmVycm9yKTsKICAgICAgICAgcmVzcG9uc2UgPSBXVEZNb3Zl
KHN5bmNMb2FkUmVzdWx0LT5yZXNwb25zZSk7CiAgICAgICAgIGRhdGEgPSBXVEZNb3ZlKHN5bmNM
b2FkUmVzdWx0LT5kYXRhKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwg
dW5zaQogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAK
ICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBhcmFtZXRlcnMpLCBN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91
c0xvYWQ6OlJlcGx5KGVycm9yLCByZXNwb25zZSwgZGF0YSksIDApKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25v
dXNseTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2Ug
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlbHUpIiwgcGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5OiBmYWlsZWQgc2VuZGluZyBzeW5jaHJvbm91cyBuZXR3b3JrIHByb2Nlc3Mg
bWVzc2FnZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2Fk
SWRlbnRpZmllcik7CiAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gd2ViUGFnZSA/IHdlYlBhZ2Ut
PmNvcmVQYWdlKCkgOiBudWxscHRyKQogICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlz
OjpzeW5jaHJvbm91c01lc3NhZ2VGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpO
byk7CiAgICAgICAgIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwpAQCAtNTYxLDcgKzU2
MSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
RnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgfQogfQogCi12b2lkIFdlYkxvYWRl
clN0cmF0ZWd5OjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpCit2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllciB3ZWJQYWdl
SUQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpQYWdlTG9hZENvbXBsZXRlZCh3ZWJQYWdlSUQpLCAwKTsKIH0KQEAgLTY0
OCwxMCArNjQ4LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhGcmFt
ZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBTCiAKICAgICBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCB7IHVybCB9OwotICAgIHBhcmFtZXRlcnMud2ViUGFnZUlEID0gd2Vi
UGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogMDsKLSAgICBwYXJhbWV0ZXJzLndlYkZyYW1lSUQg
PSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwOworICAgIHBhcmFtZXRlcnMud2Vi
UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CisgICAgcGFyYW1ldGVycy53ZWJGcmFtZUlEID0g
d2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBwYXJhbWV0ZXJzLnBhcmVudFBJRCA9IHByZXNlbnRp
bmdBcHBsaWNhdGlvblBJRCgpOwotICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZSA/
IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KTsKKyAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UtPnNlc3Npb25JRCgpOwogICAg
IHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9u
bHk6OlllczsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNz
ID0gc2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA0YWY1OTk0MWUz
NC4uYWM1MjQ5NjZhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdm9pZCBsb2FkUmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNl
U3luY2hyb25vdXNseShXZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgcmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29y
ZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwg
Y29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSBmaW5hbDsKLSAg
ICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgZmluYWw7CisgICAg
dm9pZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgZmluYWw7CiAK
ICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZv
aWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IGJmODhmZGEzMDA3Li44OGJkNTNiZjFmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cApAQCAtODgsMTYgKzg4LDE2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIFJlc291CiAgICAgUmVmPFdl
YlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIExPRyhOZXR3b3Jr
LCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgdG8gJyVz
JyIsIHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBpZiAobV9jb3JlTG9hZGVy
LT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxi
YWNrRm9yUmVkaXJlY3QobV9jb3JlTG9hZGVyLmdldCgpLCBwcm9wb3NlZFJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5k
UmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJl
Y3QgcmV0dXJuZWQgZmFsc2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJl
cXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0
IHJldHVybmVkIGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9j
b3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRp
cmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhp
cyldKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFtX2NvcmVMb2Fk
ZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBu
byBjb3JlbG9hZGVyIG9yIGlkZW50aWZpZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBv
ciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAg
LTExMywxMiArMTEzLDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKHVp
bnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTCiB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7CiAg
ICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2Vp
dmVSZXNwb25zZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IHN0YXR1cyA9ICVkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVj
ZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSk7CiAKICAgICBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNo
ZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKG1fY29yZUxvYWRlci5nZXQoKSwg
cmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVS
ZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVh
ZHkgY2FjaGVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNl
OiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMgYWxyZWFkeSBjYWNo
ZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVz
b3VyY2VJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlciAmJiBt
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVM
b2FkZXIgb3Igbm8gSUQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJl
c291cmNlSUQpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIg
b3Igbm8gSUQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9V
SW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCk7CiAgICAgICAgIH07CiAgICAgfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJv
Y2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQg
ZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoIW1f
bnVtQnl0ZXNSZWNlaXZlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRS
ZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90
cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAg
IH0KICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKQEAgLTE1OCw3ICsx
NTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVy
bCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkRmluaXNoUmVzb3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGggPSAlemQpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5yZXNvdXJjZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3VsZCBub3QgYmUg
YWJsZSB0byBmaW5pc2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKICAg
ICBtX2NvcmVMb2FkZXItPmRpZEZpbmlzaExvYWRpbmcobmV0d29ya0xvYWRNZXRyaWNzKTsKQEAg
LTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJj
ZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTAogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
IHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
RmFpbFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsUmVz
b3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtS
ZXNwb25zZSwgIkxvYWQgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGZpbmlzaCBiZWZvcmUgd2UndmUg
dmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGZvciAnJXMnIiwgbV9jb3JlTG9h
ZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAg
IG1fY29yZUxvYWRlci0+ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogfQpAQCAt
MTg3LDcgKzE4Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRl
clhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChjb25zdCBSZXNvdXJj
ZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBX
ZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRT
ZWN1cml0eVBvbGljeURlbmllZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5n
KCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdG9wTG9h
ZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRl
bnRTZWN1cml0eVBvbGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90
cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXItPmRvY3Vt
ZW50TG9hZGVyKCktPnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJp
dHlQb2xpY3lEZW5pZWQobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIHJlc3BvbnNlKTsKIH0K
QEAgLTE5NiwxMyArMTk2LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5n
QWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pCiB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6
OkhhbmRsZSYgaGFuZGxlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXIt
PnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVj
ZWl2ZVJlc291cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFy
YW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9
IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVmZmVyKSB7CiAg
ICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBTaGFyZWFibGVS
ZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNo
YXJlZEJ1ZmZlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJj
ZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIGlmIChhdXRv
KiBmcmFtZSA9IG1fY29yZUxvYWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8q
IHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5n
S2V5czo6Y3JlYXRlU2hhcmVkQnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZTo6Tm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJl
c291cmNlTG9hZGVyLmgKaW5kZXggN2ZkNzgzMjIzM2EuLjU4NjU0MzcxOGU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01MCw3ICs1MSw3IEBAIHR5cGVkZWYgdWludDY0
X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIGNsYXNzIFdlYlJlc291cmNlTG9hZGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2Vu
ZGVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgVHJhY2tpbmdQYXJhbWV0ZXJzIHsKLSAgICAgICAg
dWludDY0X3QgcGFnZUlEIHsgMCB9OworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQ7CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQgeyAwIH07CiAgICAgICAgIFJlc291cmNl
TG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCB7IDAgfTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcAppbmRleCAyMGU0ZDVjNWFkYi4uZmEwNzgyM2ZmM2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
bk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgYm9vbCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQ
YWdlKiBwYWdlKQogICAgIGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5v
dGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkp
Lml0ZXJhdG9yOwogICAgIGl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uSUQpOwogCi0gICAg
bV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNh
dGlvbi0+Ym9keSgpLCBub3RpZmljYXRpb24tPmljb24oKS5zdHJpbmcoKSwgbm90aWZpY2F0aW9u
LT50YWcoKSwgbm90aWZpY2F0aW9uLT5sYW5nKCksIG5vdGlmaWNhdGlvbi0+ZGlyKCksIG5vdGlm
aWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0
cmluZygpLCBub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT50
aXRsZSgpLCBub3RpZmljYXRpb24tPmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uKCkuc3RyaW5n
KCksIG5vdGlmaWNhdGlvbi0+dGFnKCksIG5vdGlmaWNhdGlvbi0+bGFuZygpLCBub3RpZmljYXRp
b24tPmRpcigpLCBub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbm90aWZpY2F0aW9uSUQpKTsKICAgICByZXR1cm4gdHJ1
ZTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CkBAIC0xNjksNyArMTY5
LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBu
b3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiAgICAgaWYgKCFub3RpZmljYXRpb25JRCkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNhbmNlbE5vdGlmaWNhdGlvbihub3Rp
ZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCkpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7
CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5v
dGlmaWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKICAgICAgICAgcmV0
dXJuOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzID0gaXQtPnZhbHVl
OwotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkNsZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpLCBwYWdl
LT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVh
ck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURzKSk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm90
aWZpY2F0aW9uSURzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyAr
K2kpIHsKICAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3Rp
ZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbklEc1tpXSk7CkBAIC0yMTAsNyArMjEwLDcg
QEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5v
dGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLAogCiAgICAgbV9ub3RpZmljYXRpb25JRE1hcC5yZW1v
dmUobm90aWZpY2F0aW9uSUQpOwogICAgIHJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFw
KG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24pOwotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZERlc3Ryb3lO
b3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlm
aWNhdGlvbklEKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwogICAg
IFVOVVNFRF9QQVJBTShwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApp
bmRleCAzNGI1YTY0M2YwMy4uOGNkZGI1MzBkN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgc3luY1dv
cmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwMF9tcyB9OyAvLyBPbmx5IHVzZWQgYnkgbGEKIAog
Y2xhc3MgU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIEVtcHR5
RnJhbWVMb2FkZXJDbGllbnQgewogcHVibGljOgotICAgIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRl
ckNsaWVudChXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgdXNlckFnZW50KQorICAgIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVu
dChXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogICAgICAgICA6IG1fY29ubmVjdGlvbihj
b25uZWN0aW9uKQogICAgICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAgICAgLCBt
X3BhZ2VJRChwYWdlSUQpCkBAIC05NSwxOCArOTUsMTggQEAgcHJpdmF0ZToKICAgICBib29sIHNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykg
ZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9wYWdlSUQ7IH0KICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fZnJhbWVJRDsgfQogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikg
ZmluYWwgeyByZXR1cm4gbV91c2VyQWdlbnQ7IH0KIAogICAgIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7
Ci0gICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEIHsgMCB9OwogICAgIFN0cmluZyBt
X3VzZXJBZ2VudDsKIH07CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24s
IHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUmIHN0b3JlKQorV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwg
dWludDY0X3QgcGFnZUdyb3VwSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQog
ICAgICwgbV9wYWdlSUQocGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5k
ZXggNmNlODNkMWQwOWUuLmZiYjYzMGU0ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAKIGNs
YXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6
OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CiBwdWJsaWM6Ci0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6
Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIH5XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTk2LDcgKzk2LDcg
QEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3M7CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsKLSAgICB1aW50NjRfdCBt
X3BhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAg
ICB1aW50NjRfdCBtX3ByZXZpb3VzU2VydmljZVdvcmtlcklEIHsgMCB9OwogCiAgICAgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBtX3N0b3JhZ2VCbG9ja2lu
Z1BvbGljeSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3k6
OkFsbG93QWxsU3RvcmFnZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRl
eCA0OTMzY2E0YzNhMC4uMjlhM2ZlNTc0ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwCkBAIC04MiwxNCArODIsMTQgQEAgUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4g
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShVc2VyQ29udGVudEMKIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiB9CiAK
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlcigpCiB7
CiAgICAgQVNTRVJUKHVzZXJDb250ZW50Q29udHJvbGxlcnMoKS5jb250YWlucyhtX2lkZW50aWZp
ZXIpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIpOwogCiAgICAgdXNlckNvbnRl
bnRDb250cm9sbGVycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcAppbmRleCA0OTYyOTZmNmQ4OC4uMzQzZTgzNWFkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgRmxvYXRSZWN0IFdlYkNocm9tZUNsaWVudDo6d2luZG93
UmVjdCgpCiAKICAgICBGbG9hdFJlY3QgbmV3V2luZG93RnJhbWU7CiAKLSAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lKCksIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkdldFdpbmRvd0ZyYW1lOjpSZXBseShuZXdXaW5kb3dGcmFtZSksIG1fcGFnZS5wYWdl
SUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
R2V0V2luZG93RnJhbWUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWU6
OlJlcGx5KG5ld1dpbmRvd0ZyYW1lKSkpCiAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAog
ICAgIHJldHVybiBuZXdXaW5kb3dGcmFtZTsKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSogZnJhbWUpCiB7CiAgICAgV2Vi
RnJhbWUqIHdlYkZyYW1lID0gZnJhbWUgPyBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUp
IDogbnVsbHB0cjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9jdXNlZEZyYW1lQ2hh
bmdlZCh3ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGb2N1c2VkRnJhbWVD
aGFuZ2VkKHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDApKTsKIH0KIAogUGFnZSog
V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFtZUxv
YWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMs
IGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCkBAIC0yODgsMTkgKzI4
OCwyMCBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUs
IGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlcwogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1l
ID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogCi0gICAgdWludDY0X3QgbmV3UGFn
ZUlEID0gMDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlEOwogICAgIE9w
dGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7Ci0gICAgaWYgKCF3
ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJhbWUtPmluZm8oKSwgd2ViRnJhbWUtPnBh
Z2UoKS0+cGFnZUlEKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHdpbmRvd0ZlYXR1cmVz
LCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5l
d1BhZ2U6OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVycyksIG1fcGFnZS5wYWdlSUQoKSkpCisg
ICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3
UGFnZSh3ZWJGcmFtZS0+aW5mbygpLCB3ZWJGcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSwgcmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKSwgd2luZG93RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rpb25EYXRh
KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6UmVwbHkobmV3UGFnZUlE
LCBwYXJhbWV0ZXJzKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFuZXdQ
YWdlSUQpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMp
OwogICAgIGlmIChwYXJhbWV0ZXJzLT5zZXNzaW9uSUQgPT0gbV9wYWdlLnNlc3Npb25JRCgpKQog
ICAgICAgICBwYXJhbWV0ZXJzLT5vbGRQYWdlSUQgPSBtX3BhZ2UucGFnZUlEKCk7CiAKLSAgICB3
ZWJQcm9jZXNzLmNyZWF0ZVdlYlBhZ2UobmV3UGFnZUlELCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSk7
Ci0gICAgcmV0dXJuIHdlYlByb2Nlc3Mud2ViUGFnZShuZXdQYWdlSUQpLT5jb3JlUGFnZSgpOwor
ICAgIHdlYlByb2Nlc3MuY3JlYXRlV2ViUGFnZSgqbmV3UGFnZUlELCBXVEZNb3ZlKCpwYXJhbWV0
ZXJzKSk7CisgICAgcmV0dXJuIHdlYlByb2Nlc3Mud2ViUGFnZSgqbmV3UGFnZUlEKS0+Y29yZVBh
Z2UoKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3coKQpAQCAtMzM1LDcgKzMzNiw3
IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUoKQogICAgICAgICByZXR1
cm4gdG9vbGJhcnNWaXNpYmlsaXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVu
dDo6VUlFbGVtZW50VmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICAKICAgICBib29sIHRvb2xiYXJz
QXJlVmlzaWJsZSA9IHRydWU7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpH
ZXRUb29sYmFyc0FyZVZpc2libGUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJh
cnNBcmVWaXNpYmxlOjpSZXBseSh0b29sYmFyc0FyZVZpc2libGUpLCBtX3BhZ2UucGFnZUlEKCkp
KQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRv
b2xiYXJzQXJlVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0Fy
ZVZpc2libGU6OlJlcGx5KHRvb2xiYXJzQXJlVmlzaWJsZSkpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAogICAgIHJldHVybiB0b29sYmFyc0FyZVZpc2libGU7CkBAIC0zNTMsNyArMzU0LDcgQEAg
Ym9vbCBXZWJDaHJvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUoKQogICAgICAgICByZXR1cm4g
c3RhdHVzYmFyVmlzaWJpbGl0eSA9PSBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6
OlVJRWxlbWVudFZpc2liaWxpdHk6OlZpc2libGU7CiAKICAgICBib29sIHN0YXR1c0JhcklzVmlz
aWJsZSA9IHRydWU7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0
dXNCYXJJc1Zpc2libGUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNW
aXNpYmxlOjpSZXBseShzdGF0dXNCYXJJc1Zpc2libGUpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAg
IGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0Jh
cklzVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2li
bGU6OlJlcGx5KHN0YXR1c0JhcklzVmlzaWJsZSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIHJldHVybiBzdGF0dXNCYXJJc1Zpc2libGU7CkBAIC0zODIsNyArMzgzLDcgQEAgYm9vbCBX
ZWJDaHJvbWVDbGllbnQ6Om1lbnViYXJWaXNpYmxlKCkKICAgICAgICAgcmV0dXJuIG1lbnViYXJW
aXNpYmlsaXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6VUlFbGVtZW50
VmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICAKICAgICBib29sIG1lbnVCYXJJc1Zpc2libGUgPSB0
cnVlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlz
aWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlOjpSZXBs
eShtZW51QmFySXNWaXNpYmxlKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlKCksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OlJlcGx5KG1lbnVCYXJJ
c1Zpc2libGUpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gbWVudUJhcklz
VmlzaWJsZTsKQEAgLTExODYsNyArMTE4Nyw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1
c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCBlbGVtZW50SUQpCiBib29s
IFdlYkNocm9tZUNsaWVudDo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtl
eSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KSBjb25zdAogewogICAgIGJvb2wgc3VjY2Vl
ZGVkOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V3JhcENyeXB0b0tleShr
ZXkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXcmFwQ3J5cHRvS2V5OjpSZXBseShzdWNjZWVk
ZWQsIHdyYXBwZWRLZXkpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldyYXBDcnlwdG9LZXkoa2V5KSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6V3JhcENyeXB0b0tleTo6UmVwbHkoc3VjY2VlZGVkLCB3cmFwcGVkS2V5
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc3VjY2VlZGVkOwogfQpAQCAt
MTE5NCw3ICsxMTk1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OndyYXBDcnlwdG9LZXkoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYKIGJvb2wgV2ViQ2hyb21l
Q2xpZW50Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5
LCBWZWN0b3I8dWludDhfdD4mIGtleSkgY29uc3QKIHsKICAgICBib29sIHN1Y2NlZWRlZDsKLSAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVud3JhcENyeXB0b0tleSh3cmFwcGVk
S2V5KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5OjpSZXBseShzdWNj
ZWVkZWQsIGtleSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXkpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpVbndyYXBDcnlwdG9LZXk6OlJlcGx5KHN1Y2NlZWRlZCwga2V5
KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc3VjY2VlZGVkOwogfQpAQCAt
MTIwNCw3ICsxMjA1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShj
b25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwKIFN0cmluZyBXZWJDaHJv
bWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlT
aXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkg
Y29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwg
Y2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFnZS5wYWdlSUQoKSkp
CisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVk
UHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5n
LCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVu
Z2VTdHJpbmc6OlJlcGx5KHJlc3VsdCkpKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTMxNywxMiArMTMxOCwxMiBAQCB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6ZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKQogfQogCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpo
YXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lz
dHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBz
dWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0
X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wYWdlLmhhc1N0b3JhZ2VBY2Nlc3MoV1RG
TW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBS
ZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1
YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShz
dWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZGQzYjIyNTQz
NWQuLjI5MWM1ZWRkYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNjksOCArMzY5LDggQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkgZmlu
YWw7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJikgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJikgZmluYWw7CisgICAg
dm9pZCBoYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duKT4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJ
T04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ29sb3JDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDb2xvckNob29zZXIuY3BwCmluZGV4IGQ1MzVlNWM1NWM2Li5jYjQwMjQxNzA1YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bG9yQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2ViQ29sb3JDaG9vc2Vy
OjpXZWJDb2xvckNob29zZXIoV2ViUGFnZSogcGFnZSwgQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGll
bnQsIGNvbnMKICAgICAsIG1fcGFnZShwYWdlKQogewogICAgIG1fcGFnZS0+c2V0QWN0aXZlQ29s
b3JDaG9vc2VyKHRoaXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbG9yUGlj
a2VyKGluaXRpYWxDb2xvciwgY2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290Vmlldygp
LCBjbGllbnQtPnN1Z2dlc3RlZENvbG9ycygpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihpbml0aWFs
Q29sb3IsIGNsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSwgY2xpZW50LT5z
dWdnZXN0ZWRDb2xvcnMoKSkpOwogfQogCiBXZWJDb2xvckNob29zZXI6On5XZWJDb2xvckNob29z
ZXIoKQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6cmVhdHRhY2hDb2xv
ckNob29zZXIoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fcGFnZS0+c2V0QWN0aXZlQ29sb3JD
aG9vc2VyKHRoaXMpOwogCiAgICAgQVNTRVJUKG1fY29sb3JDaG9vc2VyQ2xpZW50KTsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihjb2xvciwgbV9jb2xvckNob29z
ZXJDbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCksIG1fY29sb3JDaG9vc2Vy
Q2xpZW50LT5zdWdnZXN0ZWRDb2xvcnMoKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29sb3JQaWNrZXIoY29sb3IsIG1f
Y29sb3JDaG9vc2VyQ2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpLCBtX2Nv
bG9yQ2hvb3NlckNsaWVudC0+c3VnZ2VzdGVkQ29sb3JzKCkpKTsKIH0KIAogdm9pZCBXZWJDb2xv
ckNob29zZXI6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQpAQCAtODUsNyAr
ODUsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCiAgICAgaWYgKG1fcGFnZS0+YWN0aXZlQ29sb3JDaG9vc2VyKCkgIT0gdGhpcykK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTZXRDb2xvclBp
Y2tlckNvbG9yKGNvbG9yKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldENvbG9yUGlja2VyQ29sb3IoY29sb3IpKTsKIH0KIAog
dm9pZCBXZWJDb2xvckNob29zZXI6OmVuZENob29zZXIoKQpAQCAtOTMsNyArOTMsNyBAQCB2b2lk
IFdlYkNvbG9yQ2hvb3Nlcjo6ZW5kQ2hvb3NlcigpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kQ29sb3JQaWNrZXIoKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkVuZENvbG9yUGlja2VyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlz
dFN1Z2dlc3Rpb25QaWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKaW5kZXggZDAyNWRmYWNmYTIu
LmQzNmExNTRjZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2Vy
LmNwcApAQCAtNDcsNyArNDcsNyBAQCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6On5XZWJE
YXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoKSB7IH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXI6OmhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBXVEY6OlN0cmluZyYg
a2V5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5ZG93bkluRGF0YUxp
c3Qoa2V5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkhhbmRsZUtleWRvd25JbkRhdGFMaXN0KGtleSkpOwogfQogCiB2b2lkIFdl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFdURjo6U3Ry
aW5nJiBzZWxlY3RlZE9wdGlvbikKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXI6OmRpZENsb3NlU3VnZ2VzdGlvbnMoKQogCiB2b2lkIFdlYkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlcjo6Y2xvc2UoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygpKTsK
IH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZh
dGlvblR5cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgdHlwZSkKQEAgLTc1LDcg
Kzc1LDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0
aXZhdGlvblR5cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWMKICAgICBtX3BhZ2UtPnNldEFjdGl2ZURh
dGFMaXN0U3VnZ2VzdGlvblBpY2tlcih0aGlzKTsKIAogICAgIERhdGFMaXN0U3VnZ2VzdGlvbklu
Zm9ybWF0aW9uIGluZm8gPSB7IHR5cGUsIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+c3Vn
Z2VzdGlvbnMoKSwgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5lbGVtZW50UmVjdEluUm9v
dFZpZXdDb29yZGluYXRlcygpIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93RGF0
YUxpc3RTdWdnZXN0aW9ucyhpbmZvKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dEYXRhTGlzdFN1Z2dlc3Rpb25zKGluZm8p
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4
IGY0MjhmZDIzOTdlLi43MDUyMDI1YjlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTMw
OSw3ICszMDksNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvU3RlcChVbmRv
U3RlcCYgc3RlcCkKICAgICBhdXRvIHN0ZXBJRCA9IHdlYlN0ZXAtPnN0ZXBJRCgpOwogCiAgICAg
bV9wYWdlLT5hZGRXZWJVbmRvU3RlcChzdGVwSUQsIFdURk1vdmUod2ViU3RlcCkpOwotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9y
VW5kbyhzdGVwSUQsIHN0ZXAubGFiZWwoKSksIG1fcGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9w
dGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZv
clVuZG8oc3RlcElELCBzdGVwLmxhYmVsKCkpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVz
c2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xp
ZW50OjpyZWdpc3RlclJlZG9TdGVwKFVuZG9TdGVwJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCmluZGV4IDUyOWMwNDY3MDMwLi4zZGNkN2UyZWMxOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
On5XZWJGcmFtZUxvYWRlckNsaWVudCgpCiB7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFt
ZSAmJiBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCktPnBh
Z2VJRCgpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlCiAgICAg
aWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3Jr
LCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxM
b2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlz
LCB3ZWJQYWdlLT5wYWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBSRUxFQVNFX0xP
RyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJv
dmlzaW9uYWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IikiLCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX2ZyYW1lLT5mcmFtZUlE
KCkpOwogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIApAQCAtNTc3LDcgKzU3
Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCksIG1fZnJhbWUtPmZyYW1lSUQo
KSk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkRmFpbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fZnJhbWUt
PmZyYW1lSUQoKSk7CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCkBAIC05
MDEsNyArOTAxLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBpZiAocmVxdWVzdGVy
LmZyYW1lSUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShyZXF1ZXN0ZXIu
ZnJhbWVJRCgpKSkKICAgICAgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPSBy
ZXF1ZXN0ZXIuZnJhbWVJRCgpOwogCi0gICAgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQgPSBy
ZXF1ZXN0ZXIucGFnZUlEKCkgJiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShyZXF1
ZXN0ZXIucGFnZUlEKCkpID8gcmVxdWVzdGVyLnBhZ2VJRCgpIDogMDsKKyAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQ7CisgICAgaWYgKHJlcXVlc3Rlci5wYWdl
SUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5wYWdlSUQo
KSkpCisgICAgICAgIG9yaWdpbmF0aW5nUGFnZUlEID0gcmVxdWVzdGVyLnBhZ2VJRCgpOwogCiAg
ICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGE7CiAgICAgbmF2aWdh
dGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUgPSBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGY3M2FiOGNhNzNmLi5jOGZiMmFmMjEy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGlj
OgogCiAgICAgdm9pZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYm
KTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAg
ICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAppbmRleCBk
MTZmZTg1Nzc4NC4uMjA4YmI4OGEzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVW
aWV3KiB2aWV3LCBpbnQgaW5kZXgpCiAgICAgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIHBsYXRmb3Jt
RGF0YTsKICAgICBzZXRVcFBsYXRmb3JtRGF0YShwYWdlQ29vcmRpbmF0ZXMsIHBsYXRmb3JtRGF0
YSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUocGFnZUNvb3Jk
aW5hdGVzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCku
dGV4dERpcmVjdGlvbigpKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd1Bv
cHVwTWVudShwYWdlQ29vcmRpbmF0ZXMsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3BvcHVwQ2xp
ZW50LT5tZW51U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCkpLCBpdGVtcywgaW5kZXgsIHBsYXRmb3Jt
RGF0YSkpOwogfQogCiB2b2lkIFdlYlBvcHVwTWVudTo6aGlkZSgpCkBAIC0xMTksNyArMTE5LDcg
QEAgdm9pZCBXZWJQb3B1cE1lbnU6OmhpZGUoKQogICAgIGlmICghbV9wYWdlIHx8ICFtX3BvcHVw
Q2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okhp
ZGVQb3B1cE1lbnUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkhpZGVQb3B1cE1lbnUoKSk7CiAgICAgbV9wYWdlLT5zZXRBY3Rp
dmVQb3B1cE1lbnUobnVsbHB0cik7CiAgICAgbV9wb3B1cENsaWVudC0+cG9wdXBEaWRIaWRlKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViU2VhcmNoUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCmluZGV4IDMzZDQ3NTZlZGEyLi5jMGU4YzE5
MTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9p
ZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGNvbnN0IFZlY3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJj
aEl0ZW1zKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKSk7CiB9CiAKIHZv
aWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgcmVzdWx0SXRlbXMpCkBAIC02OCw3ICs2
OCw3IEBAIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNo
ZXMobmFtZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRSZWNlbnRTZWFyY2hlczo6UmVw
bHkocmVzdWx0SXRlbXMpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6TG9hZFJlY2VudFNlYXJjaGVzKG5hbWUpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNoZXM6OlJlcGx5KHJlc3VsdEl0ZW1zKSk7CiB9
CiAKIGJvb2wgV2ViU2VhcmNoUG9wdXBNZW51OjplbmFibGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggZjk5ODZlNDFjYTIuLmNmN2NiZjRmOWU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNTMsNyArNTMsNyBAQCBw
cml2YXRlOgogCiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5n
IG1fdXRpOwotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIFF1aWNrTG9va0RvY3VtZW50RGF0YSBtX2Rh
dGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5n
QXJlYS5jcHAKaW5kZXggMjc2YjgwYmYyOGYuLjhkNjliODU0YjZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC02OCw3ICs2OCw3
IEBAIERyYXdpbmdBcmVhOjpEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUgdHlwZSwgRHJhd2lu
Z0FyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmll
cikKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVh
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBEcmF3
aW5nQXJlYTo6fkRyYXdpbmdBcmVhKCkKQEAgLTk0LDcgKzk0LDE3IEBAIHZvaWQgRHJhd2luZ0Fy
ZWE6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcklmTmVlZGVkKCkKICAgICBpZiAobV9oYXNSZW1vdmVk
TWVzc2FnZVJlY2VpdmVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9oYXNSZW1vdmVkTWVzc2Fn
ZVJlY2VpdmVyID0gdHJ1ZTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1faWRlbnRpZmllcik7Cit9CisKK0lQQzo6Q29ubmVjdGlvbiogRHJhd2luZ0Fy
ZWE6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKTsKK30KKwordWludDY0
X3QgRHJhd2luZ0FyZWE6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2lu
Z0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgK
aW5kZXggODA2OWExNThlZTIuLmVjOTUzN2Q3MGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJEcmF3aW5nQXJlYUluZm8uaCIKICNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtNjUsNyArNjYsNyBAQCBjbGFzcyBMYXll
clRyZWVIb3N0Owogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZTsKIAotY2xhc3MgRHJhd2luZ0FyZWEgOiBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgeworY2xhc3MgRHJhd2luZ0FyZWEgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHByb3RlY3RlZCBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYXdpbmdBcmVhKTsKIApAQCAt
MTUzLDExICsxNTQsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRHJhd2luZ0FyZWEoRHJh
d2luZ0FyZWFUeXBlLCBEcmF3aW5nQXJlYUlkZW50aWZpZXIsIFdlYlBhZ2UmKTsKIAotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIG1fd2ViUGFnZS5zZW5kKG1lc3NhZ2UsIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpLCB7IH0pOwotICAgIH0KLQogICAgIERyYXdpbmdBcmVhVHlwZSBtX3R5cGU7CiAgICAgRHJh
d2luZ0FyZWFJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7
CkBAIC0xNzAsNiArMTY2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2
ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
IG92ZXJyaWRlOworICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgorICAgIElQQzo6Q29u
bmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50
NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8g
TWVzc2FnZSBoYW5kbGVycy4KICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmly
dHVhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50
RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERp
c3BhdGNoZXIuY3BwCmluZGV4IDY5MTgzMGI1OTNjLi5jZDc4MjY4ZWQ5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBA
IC04Nyw3ICs4Nyw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjppbml0aWFsaXplQ29ubmVjdGlv
bihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAgICAgY29ubmVjdGlvbi0+YWRkV29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9xdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRj
aGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hl
ZWxFdmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJp
Z2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20p
Cit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVm
dCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJv
b2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQogewogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKQogICAgIFBsYXRmb3JtV2hlZWxFdmVudCBwbGF0Zm9ybVdoZWVs
RXZlbnQgPSBwbGF0Zm9ybSh3aGVlbEV2ZW50KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEV2
ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVs
RXZlbnQmIHdoZWVsRXZlbgogfQogCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLXZv
aWQgRXZlbnREaXNwYXRjaGVyOjpnZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNo
ZXI6Omdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2Vi
R2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3Bh
dGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50
XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaEdlc3R1cmVFdmVu
dChwYWdlSUQsIGdlc3R1cmVFdmVudCk7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBFdmVudERp
c3BhdGNoZXI6OmdldFF1ZXVlZFRvdWNoRXZlbnRzRm9yUGFnZShjb25zdCBXZWJQYWdlJiB3ZWJQ
YWdlLCBUb3VjaEUKICAgICBkZXN0aW5hdGlvblF1ZXVlID0gbV90b3VjaEV2ZW50cy50YWtlKHdl
YlBhZ2UucGFnZUlEKCkpOwogfQogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgdG91Y2hFdmVudCkK
K3ZvaWQgRXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQogewogICAgIGJvb2wgdXBk
YXRlTGlzdFdhc0VtcHR5OwogICAgIHsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cygpCiB9CiAjZW5kaWYKIAotdm9pZCBFdmVudERp
c3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldo
ZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVl
bEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxF
dmVudCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMTksNyArMjE5
LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHcKIH0KIAogI2lmIEVOQUJMRShNQUNfR0VTVFVS
RV9FVkVOVFMpCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQg
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIzMiw5ICsyMzIsOSBAQCB2b2lkIEV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0
dXJlRXZlbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotdm9pZCBFdmVu
dERpc3BhdGNoZXI6OnNlbmREaWRSZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJFdmVudCYgZXZlbnQsIGJvb2wgZGlkSGFuZGxlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6c2VuZERpZFJlY2VpdmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkV2
ZW50JiBldmVudCwgYm9vbCBkaWRIYW5kbGVFdmVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXZlbnQudHlwZSgp
KSwgZGlkSGFuZGxlRXZlbnQpLCBwYWdlSUQpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90PihldmVudC50eXBlKCkpLCBkaWRI
YW5kbGVFdmVudCksIHBhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDFk
NDc3ODc3ZWFhLi5lMWJiYmQ0Nzk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCiAKICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1doZWVsRXZlbnREZWx0YUZp
bHRlci5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NzcsMzggKzc4LDM4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2Ug
aGFuZGxlcnMKLSAgICB2b2lkIHdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJX
aGVlbEV2ZW50JiwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRB
dFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0
b20pOworICAgIHZvaWQgd2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3Qg
V2ViV2hlZWxFdmVudCYsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJC
YW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0
Qm90dG9tKTsKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICB2b2lkIHRvdWNoRXZl
bnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CisgICAgdm9pZCB0b3Vj
aEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQgZ2VzdHVyZUV2
ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBn
ZXN0dXJlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCYpOwogI2VuZGlmCiAKIAogICAgIC8vIFRoaXMgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVh
ZC4KLSAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdl
YldoZWVsRXZlbnQmKTsKKyAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgY29uc3QgV2ViV2hlZWxFdmVudCYpOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hf
RVZFTlRTKQogICAgIHZvaWQgZGlzcGF0Y2hUb3VjaEV2ZW50cygpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLSAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBkaXNwYXRj
aEdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViR2VzdHVyZUV2
ZW50Jik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0gICAgdm9pZCBz
ZW5kRGlkUmVjZWl2ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmLCBib29s
IGRpZEhhbmRsZUV2ZW50KTsKKyAgICB2b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkV2ZW50JiwgYm9vbCBkaWRIYW5kbGVFdmVudCk7CiAj
ZW5kaWYKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAKICNpZiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKQogICAgIExvY2sgbV9zY3JvbGxpbmdUcmVlc011dGV4OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9s
bGluZ1RyZWVzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxX
ZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOwogI2VuZGlm
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OldoZWVsRXZlbnREZWx0YUZpbHRlcj4gbV9y
ZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXI7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMp
CiAgICAgTG9jayBtX3RvdWNoRXZlbnRzTG9jazsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBUb3Vj
aEV2ZW50UXVldWU+IG1fdG91Y2hFdmVudHM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgVG91Y2hFdmVudFF1ZXVlPiBtX3RvdWNoRXZlbnRzOwogI2VuZGlmCiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNo
ZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERp
c3BhdGNoZXIubWVzc2FnZXMuaW4KaW5kZXggNWUxNTQzYzk4Y2MuLmFmOTA0YjQ1MTZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnRE
aXNwYXRjaGVyLm1lc3NhZ2VzLmluCkBAIC0yMSwxMSArMjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
IAogbWVzc2FnZXMgLT4gRXZlbnREaXNwYXRjaGVyIHsKLSAgICBXaGVlbEV2ZW50KHVpbnQ2NF90
IHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRB
dExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9w
LCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKKyAgICBXaGVlbEV2ZW50KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGNh
blJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnVi
YmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKICNpZiBFTkFCTEUoSU9T
X1RPVUNIX0VWRU5UUykKLSAgICBUb3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50IGV2ZW50KQorICAgIFRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCiAjZW5kaWYKICNpZiBFTkFC
TEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQs
IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQorICAgIEdlc3R1cmVFdmVudChXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQog
I2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0KaW5kZXggYjc1MmMxYzU0ZDQuLmIyOTFkZjBiN2RmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC03NSw3
ICs3NSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXCiAgICAgLy8gRklYTUU6IFdoaWxlIHVz
aW5nIHRoZSBoaWdoIGVuZCBvZiB0aGUgcmFuZ2Ugb2YgRGlzcGxheUlEcyBtYWtlcyBhIGNvbGxp
c2lvbiB3aXRoIHJlYWwsIG5vbi1SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYQogICAgIC8vIERp
c3BsYXlJRHMgbGVzcyBsaWtlbHksIGl0IGlzIG5vdCBlbnRpcmVseSBzYWZlIHRvIGhhdmUgYSBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSBhbmQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEKICAgICAvLyBjb2VleGlzdCBpbiB0aGUgc2FtZSBwcm9jZXNzLgotICAgIHdlYlBhZ2Uud2lu
ZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAt
IHdlYlBhZ2UucGFnZUlEKCkpOworICAgIHdlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0
ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkudG9V
SW50NjQoKSk7CiB9CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEoKQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hl
cj4gYmFja2luZ1N0b3JlRmx1c2hlciA9IEJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLCBXVEZNb3ZlKGNv
bW1pdEVuY29kZXIpLCBXVEZNb3ZlKGNvbnRleHRzVG9GbHVzaCkpOwogICAgIG1fcGVuZGluZ0Jh
Y2tpbmdTdG9yZUZsdXNoZXIgPSBiYWNraW5nU3RvcmVGbHVzaGVyOwogCi0gICAgdWludDY0X3Qg
cGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdl
LnBhZ2VJRCgpOwogICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3Rv
cmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAgICAg
ICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcAppbmRl
eCAwNTQ0MDQ1NmY0MS4uYzk0MGUwY2QwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTc5LDcg
Kzc5LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5z
cGVjdG9yUHJveHk6OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JVSTo6d2luZG93T2JqZWN0Q2xlYXJlZCgpCkBAIC0xMDIsMTIgKzEw
MiwxMiBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpmcm9udGVuZExvYWRlZCgpCiAKIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmNoYW5nZVNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3Qm
IHJlY3QpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNldFNoZWV0
UmVjdChyZWN0KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNldFNoZWV0UmVjdChyZWN0KSk7CiB9CiAKIHZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OnN0YXJ0V2luZG93RHJhZygpCiB7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0V2luZG93RHJhZygpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
U3RhcnRXaW5kb3dEcmFnKCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjptb3Zl
V2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKQEAgLTEyNCwzNCArMTI0LDM0IEBAIFdlYkNvcmU6
OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnVzZXJJ
bnRlcmZhY2VMYXlvdXRECiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9u
dCgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9u
dCgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclVJOjpjbG9zZVdpbmRvdygpCiB7CiAgICAgbV9wYWdlLmNvcmVQYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKTsKIAot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpGcm9udGVuZERpZENsb3NlKCks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjpGcm9udGVuZERpZENsb3NlKCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclVJOjpyZW9wZW4oKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpSZW9wZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlJlb3BlbigpKTsKIH0KIAogdm9pZCBSZW1vdGVX
ZWJJbnNwZWN0b3JVSTo6b3BlbkluTmV3VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpPcGVuSW5OZXdUYWIodXJsKSwgbV9wYWdl
LnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6Ok9wZW5Jbk5ld1RhYih1cmwpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JV
STo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJv
b2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKIHsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2Rl
ZCwgZm9yY2VTYXZlQXMpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFz
ZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JV
STo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkK
IHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1l
LCBjb250ZW50KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCkpOwogfQog
CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nKQpAQCAtMTYxLDcgKzE2MSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVj
dG9yVUk6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAKIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNob3dDZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0
ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6U2hvd0NlcnRpZmljYXRlKGNlcnRpZmljYXRlSW5mbyksIG1fcGFnZS5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpT
aG93Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVJbmZvKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IDIxMWQ2MDFlZjBiLi5mY2VlMGRmZGZk
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0Zv
cndhcmRMaXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgSURU
b0hpc3RvcnlJdGVtTWFwJiBpZFRvSGlzdG9yeUl0ZW1NYXAoKQogICAgIHJldHVybiBtYXA7CiB9
CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNv
bnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYm
IGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtIG92ZXJ3cml0ZUV4
aXN0aW5nSXRlbSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQ
cm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgUmVmPEhpc3Rv
cnlJdGVtPiYmIGl0ZW0sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJ
dGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKIHsKICAgICAvLyBUaGlzIGl0ZW0vaXRlbUlEIHBh
aXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0IGluIG91ciBtYXAuCiAgICAgQVNTRVJUX1VOVVNF
RChvdmVyd3JpdGVFeGlzdGluZ0l0ZW0sIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSA9PSBPdmVyd3Jp
dGVFeGlzdGluZ0l0ZW06OlllcyB8fCAhaWRUb0hpc3RvcnlJdGVtTWFwKCkuY29udGFpbnMoaXRl
bUlEKSk7CkBAIC0xMTYsNyArMTE2LDcgQEAgUmVmUHRyPEhpc3RvcnlJdGVtPiBXZWJCYWNrRm9y
d2FyZExpc3RQcm94eTo6aXRlbUF0SW5kZXgoaW50IGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBPcHRpb25hbDxCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBpdGVt
SUQ7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1B
dEluZGV4KGl0ZW1JbmRleCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRl
bUF0SW5kZXg6OlJlcGx5KGl0ZW1JRCksIG1fcGFnZS0+cGFnZUlEKCkpKQorICAgIGlmICghbV9w
YWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdElu
ZGV4KGl0ZW1JbmRleCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0
SW5kZXg6OlJlcGx5KGl0ZW1JRCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlm
ICghaXRlbUlEKQpAQCAtMTMxLDcgKzEzMSw3IEBAIHVuc2lnbmVkIFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5OjpiYWNrTGlzdENvdW50KCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB1
bnNpZ25lZCBiYWNrTGlzdENvdW50ID0gMDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQ6OlJlcGx5KGJhY2tMaXN0Q291bnQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6QmFja0ZvcndhcmRCYWNrTGlzdENvdW50KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudDo6UmVwbHkoYmFja0xpc3RDb3VudCkpKQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIHJldHVybiBiYWNrTGlzdENvdW50OwpAQCAtMTQzLDcgKzE0Myw3
IEBAIHVuc2lnbmVkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB1bnNpZ25lZCBmb3J3YXJkTGlzdENvdW50
ID0gMDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9y
d2FyZExpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndh
cmRMaXN0Q291bnQ6OlJlcGx5KGZvcndhcmRMaXN0Q291bnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkK
KyAgICBpZiAoIW1fcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0Zv
cndhcmRGb3J3YXJkTGlzdENvdW50KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3
YXJkRm9yd2FyZExpc3RDb3VudDo6UmVwbHkoZm9yd2FyZExpc3RDb3VudCkpKQogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIHJldHVybiBmb3J3YXJkTGlzdENvdW50OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmgKaW5kZXggZjNiMWM4YWY1NDguLmQxYmFhZGI5MWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgK
QEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNr
Rm9yd2FyZENsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzLAogICAgICAgICBObwogICAgIH07Ci0gICAgdm9p
ZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCB1aW50NjRfdCBwYWdlSUQsIE92
ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7CisgICAgdm9pZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25z
dCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3Rv
cnlJdGVtPiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3ZlcndyaXRlRXhpc3RpbmdJdGVt
KTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5kZXggMTYwZWRlZmQ1OWQuLjJkOWQwODVlM2Jj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVK
YXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUph
ci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViQ29va2llSmFyOjpXZWJDb29raWVKYXIoKQogU3Ry
aW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAg
ICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAg
ICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC02Niw3
ICs2Niw3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHZvaWQgV2ViQ29va2llSmFyOjpzZXRD
b29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7
CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwog
ICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC04
Myw3ICs4Myw3IEBAIGJvb2wgV2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29r
aWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklE
JiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBX
ZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNs
dWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwogICAg
IGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7CkBAIC05NSw3ICs5NSw3IEBAIHN0
ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2ll
SmFyOjpjb29raWVSZXF1ZXN0SGVhCiBib29sIFdlYkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhj
b25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1l
bnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgp
LmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBh
Z2VJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29va2llSmFyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVK
YXIuaAppbmRleCA5N2RkNzZmNjY0Yy4uNTU5YmQwZTUwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCkBAIC0zNiw3ICszNiw3IEBAIHB1
YmxpYzoKICAgICBTdHJpbmcgY29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYsIGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSBmaW5hbDsKICAgICBib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JikgY29uc3QgZmluYWw7Ci0gICAg
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNv
cmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7CiAgICAgYm9vbCBnZXRSYXdDb29raWVz
KGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3Jl
OjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkgZmluYWw7
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCmluZGV4IDg5MGM1ZTU2YWMwLi40YWY0OTVhNTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRp
YyB1aW50NjRfdCBnZW5lcmF0ZUxpc3RlbmVySUQoKQogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6
Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGNv
cmVGcmFtZSkKIHsKICAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJG
cmFtZUxvYWRlckNsaWVudD4oc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPigmY29y
ZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKSkpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+
cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3Jl
YXRlTWFpbkZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGZyYW1lLT5tX2NvcmVGcmFt
ZSA9IGNvcmVGcmFtZTsKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPnRyZWUoKS5zZXROYW1lKFN0
cmluZygpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVh
dGVXaXRoQ29yZU1haW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogUmVm
PFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQog
ewogICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRl
ckNsaWVudD4oKSk7Ci0gICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRD
cmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSkpOwogCiAgICAgYXV0byBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2Ut
PmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0
KCkpOwogICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFtZS5wdHIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGQ3
N2U2MzcwYzExLi5iZGI5MmY3NGRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFdlYkluc3BlY3Rv
cjo6fldlYkluc3BlY3RvcigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpvcGVuTG9jYWxJbnNwZWN0
b3JGcm9udGVuZChib29sIHVuZGVyVGVzdCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6T3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoY2FuQXR0YWNoV2luZG93KCksIHVuZGVy
VGVzdCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6Ok9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGNhbkF0dGFjaFdpbmRv
dygpLCB1bmRlclRlc3QpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3I6OnNldEZyb250ZW5kQ29u
bmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAt
MTA4LDcgKzEwOCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpzZXRGcm9udGVuZENvbm5lY3Rpb24o
SVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpCiAKIHZvaWQgV2ViSW5zcGVj
dG9yOjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbigpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCkpOwogCiAgICAgLy8gSWYg
d2UgdHJpZWQgdG8gY2xvc2UgdGhlIGZyb250ZW5kIGJlZm9yZSBpdCB3YXMgY3JlYXRlZCwgdGhl
biBubyBjb25uZWN0aW9uIGV4aXN0cyB5ZXQuCiAgICAgaWYgKG1fZnJvbnRlbmRDb25uZWN0aW9u
KSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmRD
b25uZWN0aW9uKCkKIAogdm9pZCBXZWJJbnNwZWN0b3I6OmJyaW5nVG9Gcm9udCgpCiB7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmlu
Z1RvRnJvbnQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjp3aGVuRnJvbnRlbmRDb25uZWN0
aW9uRXN0YWJsaXNoZWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQpAQCAtMjgxLDcgKzI4
MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpzdG9wRWxlbWVudFNlbGVjdGlvbigpCiAKIHZvaWQg
V2ViSW5zcGVjdG9yOjplbGVtZW50U2VsZWN0aW9uQ2hhbmdlZChib29sIGFjdGl2ZSkKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYWN0
aXZlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3JQcm94eTo6RWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYWN0aXZlKSk7CiB9CiAKIGJv
b2wgV2ViSW5zcGVjdG9yOjpjYW5BdHRhY2hXaW5kb3coKQpAQCAtMzE1LDcgKzMxNSw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yOjp1cGRhdGVEb2NraW5nQXZhaWxhYmlsaXR5KCkKIAogICAgIG1fcHJl
dmlvdXNDYW5BdHRhY2ggPSBjYW5BdHRhY2hXaW5kb3c7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6QXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChjYW5BdHRhY2hXaW5kb3cpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGNhbkF0dGFjaFdpbmRvdykpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAppbmRleCBjOTY1MmU5NGFmOC4uMjc1NTZkMDFj
YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JVSS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3Rv
clVJKFdlYlBhZ2UmIHBhZ2UpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0
YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1
bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6
OmVzdGFibGlzaENvbm5lY3Rpb24oUGFnZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiB7CiAgICAgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIG1f
ZnJvbnRlbmRBUElEaXNwYXRjaGVyLnJlc2V0KCk7CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JVSTo6dXBkYXRlQ29ubmVjdGlvbigpCiAgICAgbV9iYWNrZW5kQ29ubmVjdGlv
bi0+b3BlbigpOwogI2VuZGlmCiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0
RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25DbGllbnRQb3J0KSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEZyb250ZW5k
Q29ubmVjdGlvbihjb25uZWN0aW9uQ2xpZW50UG9ydCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OndpbmRvd09iamVjdENs
ZWFyZWQoKQpAQCAtMTI4LDE0ICsxMjgsMTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRl
bmRMb2FkZWQoKQogICAgIHNldERvY2tTaWRlKG1fZG9ja1NpZGUpOwogICAgIHNldElzVmlzaWJs
ZShtX2lzVmlzaWJsZSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RnJvbnRl
bmRMb2FkZWQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OkZyb250ZW5kTG9hZGVkKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiAKICAgICBicmluZ1RvRnJvbnQoKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JVSTo6c3RhcnRXaW5kb3dEcmFnKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6U3RhcnRXaW5kb3dEcmFnKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTdGFydFdpbmRvd0RyYWcoKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6
bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCkBAIC0xNDcsMTIgKzE0NywxMiBAQCB2b2lk
IFdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKIAogdm9pZCBX
ZWJJbnNwZWN0b3JVSTo6YnJpbmdUb0Zyb250KCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2xv
c2VXaW5kb3coKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgp
LCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6RGlkQ2xvc2UoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
IAogICAgIGlmIChtX2JhY2tlbmRDb25uZWN0aW9uKSB7CiAgICAgICAgIG1fYmFja2VuZENvbm5l
Y3Rpb24tPmludmFsaWRhdGUoKTsKQEAgLTE2NywxMyArMTY3LDEzIEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUk6OmNsb3NlV2luZG93KCkKICAgICBpZiAobV9mcm9udGVuZEhvc3QpCiAgICAgICAgIG1f
ZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50KCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyID0gMDsKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAg
IG1fdW5kZXJUZXN0ID0gZmFsc2U7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnJlb3Blbigp
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlJlb3BlbigpLCBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6UmVvcGVu
KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIFdlYkNvcmU6
OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gV2ViSW5zcGVjdG9yVUk6OnVzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24oKSBjb25zdApAQCAtMTg2LDE2ICsxODYsMTYgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSTo6cmVxdWVzdFNldERvY2tTaWRlKERvY2tTaWRlIHNpZGUpCiAgICAgYXV0byYg
d2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpOwogICAgIHN3aXRjaCAoc2lkZSkg
ewogICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2VkOgotICAgICAgICB3ZWJQcm9jZXNzLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpE
ZXRhY2goKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIHdlYlByb2Nlc3Mu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OkRldGFjaCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIERvY2tTaWRlOjpSaWdodDoKLSAgICAgICAgd2ViUHJvY2Vz
cy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6QXR0YWNoUmlnaHQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAg
IHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OkF0dGFjaFJpZ2h0KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9ja1NpZGU6OkxlZnQ6Ci0g
ICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaExlZnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7CisgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaExlZnQoKSwgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2Nr
U2lkZTo6Qm90dG9tOgotICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEJv
dHRvbSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICBi
cmVhazsKICAgICB9CiB9CkBAIC0yNDMsMTcgKzI0MywxNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJ
OjpzZXRJc1Zpc2libGUoYm9vbCB2aXNpYmxlKQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFu
Z2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWlnaHQpCiB7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCksIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpT
ZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
LnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdp
bmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93
V2lkdGgod2lkdGgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVj
dCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpTZXRTaGVldFJlY3QocmVjdCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9V
SW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6Om9wZW5Jbk5ld1RhYihjb25zdCBT
dHJpbmcmIHVybCkKQEAgLTI2NCwyMiArMjY0LDIyIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6Om9w
ZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2F2
ZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50
LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCiB7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQs
IGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQs
IGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6YXBwZW5kKGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFt
ZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCksIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUs
IGNvbnRlbnQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2
b2lkIFdlYkluc3BlY3RvclVJOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJs
U3RyaW5nKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxD
aGFuZ2VkKHVybFN0cmluZyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yVUk6OnNob3dDZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbykKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2hvd0NlcnRpZmljYXRl
KGNlcnRpZmljYXRlSW5mbyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpTaG93Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVJbmZvKSwg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JVSTo6c2hvd0NvbnNvbGUoKQpAQCAtMzQ5LDcgKzM0OSw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yVUk6OnBhZ2VVbnBhdXNlZCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdl
VG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1faW5zcGVjdGVkUGFn
ZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZW5kTWVzc2Fn
ZVRvQmFja2VuZChtZXNzYWdlKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaAppbmRleCA4MzgxYmYxY2VkZS4uOTQyNGJm
ZTFmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yVUkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldlYkluc3BlY3RvckZyb250
ZW5kQVBJRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kSG9zdC5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3Ry
aW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRv
dygpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yVUkgbWVzc2FnZXMKLSAgICB2
b2lkIGVzdGFibGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIs
IGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpOworICAgIHZvaWQgZXN0
YWJsaXNoQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRl
bnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCk7CiAgICAg
dm9pZCB1cGRhdGVDb25uZWN0aW9uKCk7CiAKICAgICB2b2lkIHNob3dDb25zb2xlKCk7CkBAIC0x
MzMsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBjb3JlUGFnZSgpLCBzaW5jZSB3ZSBtYXkg
bmVlZCBpdCBhZnRlciB0aGUgZnJvbnRlbmQncyBwYWdlIGhhcyBzdGFydGVkIGRlc3RydWN0aW9u
LgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIG1fZnJvbnRlbmRDb250cm9sbGVy
IHsgbnVsbHB0ciB9OwogCi0gICAgdWludDY0X3QgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciB7
IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyOwogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kb2NraW5n
VW5hdmFpbGFibGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Zpc2libGUgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9y
VUkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3JVSS5tZXNzYWdlcy5pbgppbmRleCBkZWEwZmU1ODRkNC4uNDMxOTBhYTgzNGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3Bl
Y3RvclVJLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1l
c3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJIHsKLSAgICBFc3RhYmxpc2hDb25uZWN0aW9uKHVpbnQ2
NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5z
cGVjdGlvbkxldmVsKQorICAgIEVzdGFibGlzaENvbm5lY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBp
bnNwZWN0aW9uTGV2ZWwpCiAgICAgVXBkYXRlQ29ubmVjdGlvbigpCiAKICAgICBBdHRhY2hlZEJv
dHRvbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IDNiYWFmZDE4NTRjLi43M2FlMjBiMzAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM2MCw3ICszNjAsNyBAQCBwcml2YXRlOgogCiBE
RUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZDb3VudGVkTGVha0NvdW50ZXIsIHdlYlBh
Z2VDb3VudGVyLCAoIldlYlBhZ2UiKSk7CiAKLVJlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUo
dWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
K1JlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUoSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIFJlZjxXZWJQYWdlPiBwYWdl
ID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwog
CkBAIC0zNzAsNyArMzcwLDcgQEAgUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRf
dCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICAgICByZXR1cm4g
cGFnZTsKIH0KIAotV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorV2ViUGFnZTo6V2ViUGFnZShJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBt
X3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX3ZpZXdTaXplKHBhcmFtZXRlcnMudmlld1NpemUpCiAg
ICAgLCBtX2Fsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyIHsgcGFyYW1ldGVycy5hbHdheXNT
aG93c0hvcml6b250YWxTY3JvbGxlciB9CkBAIC04MzEsNyArODMxLDcgQEAgSVBDOjpDb25uZWN0
aW9uKiBXZWJQYWdlOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90
IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gcGFnZUlEKCk7CisgICAgcmV0dXJuIHBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZvaWQgV2ViUGFnZTo6
Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IEJhY2tGb3J3
YXJkSXRlbUlkCiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTG9h
ZGluZywgIkluIFdlYlByb2Nlc3MgcGlkICVpLCBXZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmln
YXRpbmcgdG8gYmFjay9mb3J3YXJkIFVSTCAlcyIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9w
YWdlSUQsIGl0ZW0tPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhMb2Fk
aW5nLCAiSW4gV2ViUHJvY2VzcyBwaWQgJWksIFdlYlBhZ2UgJSIgUFJJdTY0ICIgaXMgbmF2aWdh
dGluZyB0byBiYWNrL2ZvcndhcmQgVVJMICVzIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBpdGVtLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAog
ICAgIEFTU0VSVCghbV9wZW5kaW5nTmF2aWdhdGlvbklEKTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0
aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CkBAIC0yMDc2LDcgKzIwNzYsNyBAQCBib29sIFdlYlBhZ2U6
OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmICghdmlldyB8
fCB2aWV3LT5maXhlZExheW91dFNpemUoKSA9PSBzaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2Ug
IiA8PCBtX3BhZ2VJRCA8PCAiIHNldEZpeGVkTGF5b3V0U2l6ZSAiIDw8IHNpemUpOworICAgIExP
R19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFn
ZUlELnRvVUludDY0KCkgPDwgIiBzZXRGaXhlZExheW91dFNpemUgIiA8PCBzaXplKTsKICAgICB2
aWV3LT5zZXRGaXhlZExheW91dFNpemUoc2l6ZSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkZpeGVkTGF5b3V0U2l6ZURpZENoYW5nZShzaXplKSk7CkBAIC0yNTA0LDcgKzI1
MDQsNyBAQCBjb25zdCBXZWJFdmVudCogV2ViUGFnZTo6Y3VycmVudEV2ZW50KCkKIHZvaWQgV2Vi
UGFnZTo6ZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbiByZWFzb24pCiB7CiAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlBhZ2UgKFBhZ2VJRD0l
bGx1KSAtIEFkZGluZyBhIHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJlZTsgY3VycmVudCBy
ZWFzb25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOworICAgICAg
ICB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29u
KSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJl
ZXplUmVhc29ucy5hZGQocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZy
ZWV6ZVN0YXRlKCk7CiB9CkBAIC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmZyZWV6
ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogdm9pZCBXZWJQYWdlOjp1
bmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogewogICAgIFJF
TEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQYWdlIChQYWdlSUQ9JWxsdSkg
LSBSZW1vdmluZyBhIHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJlZTsgY3VycmVudCByZWFz
b25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOworICAgICAgICB0
aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwg
bV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJlZXpl
UmVhc29ucy5yZW1vdmUocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZy
ZWV6ZVN0YXRlKCk7CiB9CkBAIC0zMTY4LDcgKzMxNjgsNyBAQCB2b2lkIFdlYlBhZ2U6OnZpc2li
aWxpdHlEaWRDaGFuZ2UoKQogCiB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9u
U2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2Fs
bGJhY2tJRHMpCiB7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8
PCAiV2ViUGFnZSAiIDw8IHBhZ2VJRCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFj
dGl2aXR5U3RhdGUpOworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0g
PDwgIldlYlBhZ2UgIiA8PCBwYWdlSUQoKS50b1VJbnQ2NCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0
ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOwogCiAgICAgYXV0byBjaGFuZ2VkID0gbV9hY3Rpdml0
eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKICAgICBtX2FjdGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0
YXRlOwpAQCAtMzE3Niw3ICszMTc2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRl
KE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBBY3QKICAgICBp
ZiAoY2hhbmdlZCkKICAgICAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCi0gICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShtX3BhZ2UsICJzZXRBY3Rpdml0eVN0YXRlIGNhbGxlZCBvbiAlIiBQUkl1
NjQgIiBidXQgV2ViQ29yZSBwYWdlIHdhcyBudWxsIiwgcGFnZUlEKCkpOworICAgIEFTU0VSVF9X
SVRIX01FU1NBR0UobV9wYWdlLCAic2V0QWN0aXZpdHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJdTY0
ICIgYnV0IFdlYkNvcmUgcGFnZSB3YXMgbnVsbCIsIHBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAg
IGlmIChtX3BhZ2UpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uU2V0PEFjdGl2aXR5U3Rh
dGU6OkZsYWc+PiBjdXJyZW50bHlDaGFuZ2luZ0FjdGl2aXR5U3RhdGUgeyBtX2xhc3RBY3Rpdml0
eVN0YXRlQ2hhbmdlcywgY2hhbmdlZCB9OwogICAgICAgICBtX3BhZ2UtPnNldEFjdGl2aXR5U3Rh
dGUoYWN0aXZpdHlTdGF0ZSk7CkBAIC00MzM5LDcgKzQzMzksNyBAQCB2b2lkIFdlYlBhZ2U6Om1h
aW5GcmFtZURpZExheW91dCgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoRnJh
bWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpIHsKICAgICAgICAgSW50U2l6ZSBu
ZXdDb250ZW50U2l6ZSA9IGZyYW1lVmlldy0+Y29udGVudHNTaXplKCk7Ci0gICAgICAgIExPR19X
SVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlE
IDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3
Q29udGVudFNpemUpOworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJl
YW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgbWFpbkZyYW1lRGlk
TGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVudFNpemUpOwogICAg
ICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNTaXplKG5ld0NvbnRl
bnRTaXplKSkKICAgICAgICAgICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKICAg
ICB9CkBAIC01NzQyLDcgKzU3NDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2Vi
RnJhbWUqIGZyYW1lKQogICAgIAogICAgIGJvb2wgdmlld3BvcnRDaGFuZ2VkID0gZmFsc2U7CiAK
LSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8
PCBtX3BhZ2VJRCA8PCAiIGRpZENvbW1pdExvYWQgc2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8
PCBjb3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkpOworICAgIExPR19XSVRIX1NUUkVB
TShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0
KCkgPDwgIiBkaWRDb21taXRMb2FkIHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgY29yZUZy
YW1lLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3Vy
YXRpb24uc2V0Q29udGVudHNTaXplKGNvcmVGcmFtZS0+dmlldygpLT5jb250ZW50c1NpemUoKSkp
CiAgICAgICAgIHZpZXdwb3J0Q2hhbmdlZCA9IHRydWU7CiAKQEAgLTYwNTYsNyArNjA1Niw3IEBA
IHZvaWQgV2ViUGFnZTo6c2VuZEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICAvLyBJZiB0aGF0IGlz
IHRoZSBjYXNlLCBqdXN0IHNlbmQgd2hhdCB3ZSBoYXZlIChpLmUuIGRvbid0IGluY2x1ZGUgcG9z
dC1sYXlvdXQgZGF0YSkgYW5kIHdhaXQgdW50aWwgdGhlCiAgICAgLy8gbmV4dCBsYXllciB0cmVl
IGNvbW1pdCB0byBjb21wdXRlIGFuZCBzZW5kIHRoZSBjb21wbGV0ZSBFZGl0b3JTdGF0ZSBvdmVy
LgogICAgIGF1dG8gc3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSwgcGFnZUlEKCkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSwgcGFn
ZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBpZiAoc3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERh
dGEpCiAgICAgICAgIHNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCk7CkBAIC02MjM3LDcg
KzYyMzcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIAogdm9pZCBXZWJQYWdlOjpwb3N0TWVz
c2FnZUlnbm9yaW5nRnVsbHlTeW5jaHJvbm91c01vZGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFt
ZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkpKSwgcGFn
ZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5jaHJvbm91c01vZGUpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyhtZXNzYWdlQm9keSkpKSwgcGFnZUlEKCkudG9VSW50NjQoKSwgSVBDOjpTZW5kT3B0aW9uOjpJ
Z25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cG9zdFN5bmNo
cm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDg2OGFlOTJmMmZi
Li5lYWQ3YjQ5NmVmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW50U2l6ZUhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlT3ZlcmxheS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUG9pbnRlcklELmg+CkBAIC0yNzMsNyArMjc0LDkgQEAgdXNpbmcgV0tFdmVudE1v
ZGlmaWVycyA9IHVpbnQzMl90OwogCiBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0
SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYlBhZ2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlBhZ2U+IGNyZWF0ZSh1aW50
NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgdXNpbmcgSWRl
bnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyOworICAgIHN0YXRpYyBSZWY8V2ViUGFn
ZT4gY3JlYXRlKElkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisKICAg
ICB2aXJ0dWFsIH5XZWJQYWdlKCk7CiAKICAgICB2b2lkIHJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKQEAgLTI4Myw3ICsyODYsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFdlYlBhZ2UqIGZyb21Db3JlUGFnZShXZWJDb3JlOjpQYWdlKik7CiAKICAgICBX
ZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQot
ICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgSWRl
bnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+c2Vzc2lvbklEKCk7IH0K
ICAgICBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT51
c2VzRXBoZW1lcmFsU2Vzc2lvbigpOyB9CiAKQEAgLTExNjYsNyArMTE2OSw3IEBAIHB1YmxpYzoK
ICAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYgbWVzc2FnZSwgdHlwZW5hbWUg
VDo6UmVwbHkmJiByZXBseSkKICAgICB7CiAgICAgICAgIGNhbmNlbEdlc3R1cmVzQmxvY2tlZE9u
U3luY2hyb25vdXNSZXBsaWVzKCk7Ci0gICAgICAgIHJldHVybiBzZW5kU3luYyhXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9wYWdlSUQsIFNlY29uZHM6OmluZmluaXR5KCksIElQ
Qzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKKyAg
ICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0
aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAgICAgfQogCiAgICAgV2Vi
Q29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKQEAgLTExOTksNyArMTIwMiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFVzZXJJc0ludGVyYWN0aW5nKGJvb2wgdXNlcklzSW50ZXJhY3RpbmcpIHsg
bV91c2VySXNJbnRlcmFjdGluZyA9IHVzZXJJc0ludGVyYWN0aW5nOyB9CiAKIHByaXZhdGU6Ci0g
ICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7
CisgICAgV2ViUGFnZShJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwog
CiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKQEAgLTE1ODUsNyArMTU4OCw3IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVy
Q29tbWl0dGluZ0xvYWQoKTsKIAotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIElkZW50aWZp
ZXIgbV9wYWdlSUQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdl
OwogICAgIFJlZlB0cjxXZWJGcmFtZT4gbV9tYWluRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3Bw
CmluZGV4IGQ5NmE3ZDdkZGE5Li5iNzc5OWI0ZmJiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAK
QEAgLTQxLDcgKzQxLDcgQEAgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6V2ViUGFnZUluc3BlY3Rv
clRhcmdldChXZWJQYWdlJiBwYWdlKQogCiBTdHJpbmcgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6
aWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2UucGFn
ZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6Y29u
bmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCYgY2hhbm5lbCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKaW5kZXggMzAxYjEzOWUxZDIuLjZiN2VjNWIx
NmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaApAQCAt
MjYsMTMgKzI2LDE1IEBACiAjaWZuZGVmIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
X2gKICNkZWZpbmUgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2VfaAogCisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYlBhZ2U7CiB9CiAKIEBpbnRlcmZhY2UgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJh
c2UgOiBOU09iamVjdCB7CiAgICAgV2ViS2l0OjpXZWJQYWdlKiBtX3BhZ2U7Ci0gICAgdWludDY0
X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAg
aWQgbV9wYXJlbnQ7CiAgICAgYm9vbCBtX2hhc01haW5GcmFtZVBsdWdpbjsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQppbmRleCAzZDNmMzU1NTNlNi4u
NjE2NWEwMWZlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJh
c2UubW0KQEAgLTE0OCw3ICsxNDgsNyBAQCAtICh2b2lkKXNldFdlYlBhZ2U6KFdlYktpdDo6V2Vi
UGFnZSopcGFnZQogICAgICAgICBhdXRvKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwogICAg
ICAgICBtX2hhc01haW5GcmFtZVBsdWdpbiA9IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpID8g
ZnJhbWUtPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSA6IGZhbHNlOwogICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG1fcGFnZUlEID0gMDsKKyAgICAgICAgbV9wYWdlSUQgPSB7IH07CiAgICAg
ICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gZmFsc2U7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCBhMDdj
YTQ1ZDMzNy4uYjZhZTg0MzI3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0yNjYsOCArMjY2LDggQEAgYm9vbCBXZWJQ
YWdlOjpleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVybmFsKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpLZXlwcmVzc0NvbW0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIGJvb2wgY29tbWFuZFdhc0hhbmRsZWRCeVVJUHJvY2VzcyA9IGZhbHNl
OwotICAgICAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVTYXZl
ZENvbW1hbmRCeVNlbGVjdG9yKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKSwKLSAgICAgICAgICAg
ICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2Vs
ZWN0b3I6OlJlcGx5KGNvbW1hbmRXYXNIYW5kbGVkQnlVSVByb2Nlc3MpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgICAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNh
dmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpLAorICAgICAgICAg
ICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGVjdXRlU2F2ZWRDb21tYW5kQnlT
ZWxlY3Rvcjo6UmVwbHkoY29tbWFuZFdhc0hhbmRsZWRCeVVJUHJvY2VzcykpOwogICAgICAgICAg
ICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBjb21tYW5kV2FzSGFuZGxlZEJ5VUlQcm9jZXNzOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKaW5kZXggNWNlNjljY2Y4MzMuLjYxNzRiMGEzYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgV2ViUHJvY2Vzczo6V2Vi
UHJvY2VzcygpCiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0aWNzKSksIDApOwogICAg
IH0pOwogCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVy
RG9tYWluKSB7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgb3BlbmVyRG9tYWluKSB7CiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihzZXNzaW9uSUQsIGRvbWFpbklu
TmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsKICAg
ICB9KTsKICNlbmRpZgpAQCAtNjY3LDE2ICs2NjcsMTYgQEAgV2ViUGFnZSogV2ViUHJvY2Vzczo6
Zm9jdXNlZFdlYlBhZ2UoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogICAgIAotV2ViUGFnZSog
V2ViUHJvY2Vzczo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CitXZWJQYWdlKiBXZWJQ
cm9jZXNzOjp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICByZXR1
cm4gbV9wYWdlTWFwLmdldChwYWdlSUQpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdl
YlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycykKK3ZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIC8vIEl0
IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBmb3IgcGFnZSBleGlzdGVuY2UgaGVyZSBzaW5jZSBkdXJp
bmcgYSB3aW5kb3cub3BlbigpIChvciB0YXJnZXRlZAogICAgIC8vIGxpbmspIHRoZSBXZWJQYWdl
IGdldHMgY3JlYXRlZCBib3RoIGluIHRoZSBzeW5jaHJvbm91cyBoYW5kbGVyIGFuZCB0aHJvdWdo
IHRoZSBub3JtYWwgd2F5LiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4+
OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOworICAg
IGF1dG8gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOwogICAgIGF1dG8g
b2xkUGFnZUlEID0gcGFyYW1ldGVycy5vbGRQYWdlSUQgPyBwYXJhbWV0ZXJzLm9sZFBhZ2VJRC52
YWx1ZSgpIDogcGFnZUlEOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBB
U1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhCiAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwog
fQogCi12b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgQVNT
RVJUKG1fcGFnZU1hcC5jb250YWlucyhwYWdlSUQpKTsKIApAQCAtMTQ1MCw3ICsxNDUwLDcgQEAg
dm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJl
YXNvbikKIAogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UodWludDY0X3QsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBj
aGFuZ2VkKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShQYWdl
SWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5n
ZWQpCiB7CiAgICAgaWYgKGNoYW5nZWQgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpCiAgICAgICAgIHVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29u
OjpWaXNpYmlsaXR5SGFzQ2hhbmdlZCk7CkBAIC0xNjI0LDEzICsxNjI0LDEzIEBAIHZvaWQgV2Vi
UHJvY2Vzczo6c2VuZFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBVUkwmIHVybCkKICAgICBwYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRp
ZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24ocmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlBy
b2Nlc3NXYXJtaW5nOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkpLCAwKTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzOjpwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKQordm9pZCBX
ZWJQcm9jZXNzOjpwYWdlRGlkRW50ZXJXaW5kb3coUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewog
ICAgIG1fcGFnZXNJbldpbmRvd3MuYWRkKHBhZ2VJRCk7CiAgICAgbV9ub25WaXNpYmxlUHJvY2Vz
c0NsZWFudXBUaW1lci5zdG9wKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZVdpbGxMZWF2
ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVhdmVX
aW5kb3coUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fcGFnZXNJbldpbmRvd3MucmVt
b3ZlKHBhZ2VJRCk7CiAKQEAgLTE2NzMsNyArMTY3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5h
YmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZSkKICAgICBpZiAoZW5hYmxl
KQogICAgICAgICBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJv
Y2VzcygpOwogCi0gICAgVmVjdG9yPHVpbnQ2NF90PiBwYWdlSURzOworICAgIFZlY3RvcjxQYWdl
SWRlbnRpZmllcj4gcGFnZUlEczsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXApIHsK
ICAgICAgICAgaWYgKHBhZ2UudmFsdWUpCiAgICAgICAgICAgICBwYWdlSURzLmFwcGVuZChwYWdl
LmtleSk7CkBAIC0xODUzLDcgKzE4NTMsNyBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNz
OjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZv
aWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQor
dm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNz
aW9uSUQpCiB7CiAgICAgLy8gV2UgYXJlIGluIHRoZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IHBy
b2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRo
ZSBOZXR3b3JrIFByb2Nlc3MKICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJs
eWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaAppbmRleCA1MjVkZjE4M2YyMi4uMTg1N2NlYTBlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMu
aD4KQEAgLTE0NSw5ICsxNDYsOSBAQCBwdWJsaWM6CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVBy
b2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29u
bmVjdGlvbi5nZXQoKTsgfQogCi0gICAgV2ViUGFnZSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQp
IGNvbnN0OwotICAgIHZvaWQgY3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJik7Ci0gICAgdm9pZCByZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lv
bklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgY3JlYXRlV2ViUGFnZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHJlbW92
ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBX
ZWJQYWdlKiBmb2N1c2VkV2ViUGFnZSgpIGNvbnN0OwogCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGlu
amVjdGVkQnVuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQpA
QCAtMTk5LDggKzIwMCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5zdXJlTGVnYWN5UHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKIAotICAgIHZvaWQgcGFnZURpZEVu
dGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93
KHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3coV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyhXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIG5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVy
RmlyZWQoKTsKIApAQCAtMjE5LDcgKzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRl
QWN0aXZlUGFnZXMoKTsKICAgICB2b2lkIGdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3Rpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCBw
YWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZSh1aW50NjRfdCBwYWdlSUQsIE9wdGlvblNldDxXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKKyAgICB2b2lkIHBhZ2VBY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCk7CiAKICAgICB2b2lkIHNldEhpZGRlblBh
Z2VET01UaW1lclRocm90dGxpbmdJbmNyZWFzZUxpbWl0KGludCBtaWxsaXNlY29uZHMpOwogCkBA
IC0zNTksNyArMzYwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBlc3RhYmxpc2hX
b3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3Vw
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwg
UEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygp
OwogI2VuZGlmCiAKQEAgLTQ2MCw3ICs0NjEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdl
YkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCi0gICAgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CisgICAgSGFzaE1hcDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5Pj4gbV9wYWdlR3JvdXBNYXA7CiAg
ICAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwogCkBAIC01MTQsNyAr
NTE1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wcm9jZXNzSXNTdXNwZW5kZWQgeyBmYWxz
ZSB9OwogCi0gICAgSGFzaFNldDx1aW50NjRfdD4gbV9wYWdlc0luV2luZG93czsKKyAgICBIYXNo
U2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX3BhZ2VzSW5XaW5kb3dzOwogICAgIFdlYkNv
cmU6OlRpbWVyIG1fbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXI7CiAKICAgICBSZWZQdHI8
V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IG1fYXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
CmluZGV4IGIzOWIzOGMxODNjLi41N2EyNjU2MzQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0V2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMoc3RydWN0IFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMg
cGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlIGEgbmV3IHBhZ2UuCi0gICAgQ3JlYXRlV2ViUGFn
ZSh1aW50NjRfdCBuZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykKKyAgICBDcmVhdGVXZWJQYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG5ld1BhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBwYWdlQ3JlYXRpb25QYXJhbWV0ZXJzKQogCiAgICAgUHJld2FybUdsb2JhbGx5
KCk7CiAgICAgUHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViQ29yZTo6UHJl
d2FybUluZm9ybWF0aW9uIHByZXdhcm1JbmZvcm1hdGlvbikKQEAgLTExMSw3ICsxMTEsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBz
dHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBp
bml0aWFsU2Vzc2lvbklEKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6
OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudHMoKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAwYmQ5MGFmOTE4Ny4uMGU5NDI5NjA0
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFw
OjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJ
RCwgYwogCiAgICAgLy8gTmFtZXNwYWNlIElEcyBmb3Igc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFj
ZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2UgSURzCiAgICAgLy8gc28gd2UgY2FuIGdldCB0
aGUgcmlnaHQgcGFnZSBoZXJlLgotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJQYWdlKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBXZWJQYWdlKiB3
ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRp
ZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KG1fc3RvcmFnZU5hbWVzcGFjZUlEKSk7CiAgICAgaWYg
KCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCmluZGV4IDI5YmE3ZDhhOGEzLi5l
Y2FmNjY1MTlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZUFyZWFNYXAuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFt
ZXNwYWNlSW1wbC5jcHAKaW5kZXggYjM5MDgxZTZlM2MuLjgwOTYyMzQyNDRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5h
bWVzcGFjZUltcGwuY3BwCkBAIC00MCwxMiArNDAsMTIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3Rv
cmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90
IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KFBhZ2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6
U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24s
IGlkZW50aWZpZXIudG9VSW50NjQoKSwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLVJl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewogICAgIHJldHVybiBjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShpZGVudGlmaWVyLCBxdW90YUluQnl0ZXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VO
YW1lc3BhY2VJbXBsLmgKaW5kZXggNjc1N2UzYjgxODguLjFiZmVjNDhiODlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1l
c3BhY2VJbXBsLmgKQEAgLTM5LDggKzM5LDggQEAgY2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgU3Rv
cmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5
dGVzKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVy
YWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVv
dGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVh
dGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNl
SW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1w
bD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZp
ZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVv
dGFJbkJ5dGVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCBmYzY1OTg2MzI1Mi4uNzY1ZWZmNDA0
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW0KICAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4
dElkKTsKIAogICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0
VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElE
KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCkBAIC0yOTEsNyArMjkxLDcg
QEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyKCkKICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CiAKICAgICBtX3BhZ2Ut
PnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01h
bmFnZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIo
KSk7CiB9CiAKIHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNvbnRleHRJZEZvck1l
ZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCkBAIC0z
MTgsMjcgKzMxOCwyNyBAQCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpjdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1lbgogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50VGltZUNoYW5nZWQodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpD
dXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGlt
ZSwgYW5jaG9yVGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1ZmZl
cmVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpCdWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkJ1ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUpKTsK
IH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hh
bmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKQogewot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQ
bGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBsYXliYWNrU3RhcnRlZFRpbWUp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY29udGV4dElk
LCBwbGF5YmFja1N0YXJ0ZWRUaW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6cmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQg
cGxheWJhY2tSYXRlKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0SWQsIGlzUGxheWluZywgcGxheWJh
Y2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5
aW5nLCBwbGF5YmFja1JhdGUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpz
ZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpU
aW1lUmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxp
dmVVcGRhdGVJbnRlcnZhbCkKQEAgLTM0OSwzNyArMzQ5LDM3IEBAIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29u
c3QgV2ViCiAgICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2VzLnJhbmdlcygpLmVuZChpKS50
b0RvdWJsZSgpOwogICAgICAgICByYW5nZXNWZWN0b3IuYXBwZW5kKHsgc3RhcnQsIGVuZCB9KTsK
ICAgICB9Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFu
Z2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1v
dmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hh
bmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlGYXN0UmV2ZXJz
ZUNoYW5nZWQoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDYW5QbGF5RmFz
dFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5n
ZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNl
bGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZl
Y3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0
aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsK
IH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgUGxheWJhY2tTZXNzaW9uTW9kZWw6
OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWRE
ZXZpY2VOYW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQoY29udGV4dElk
LCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxvY2FsaXplZERl
dmljZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXND
aGFuZ2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdldFR5
cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5n
ZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVk
aWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhD
aGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVn
aWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29u
dGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgYm9vbCBkaXNhYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNWQ2MTEwYjc5MDkuLjcwNjYz
OTc3Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRN
TFZpZGVvRWxlbWVuCiAgICAgICAgIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5z
ZXRSb290TGF5ZXIodmlkZW9MYXllcik7CiAgICAgfQogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChj
b250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwg
dmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNj
cmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSwgc3RhbmRieSksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4dElkLCBpbnRlcmZhY2UtPmxheWVy
SG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZpZGVvUmVjdCwgbV9wYWdlLT5kZXZpY2VT
Y2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCksIGFsbG93c1BpY3R1cmVJ
blBpY3R1cmUsIHN0YW5kYnkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpl
eGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1l
bnQmIHZpZGVvRWxlbWVudCkKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRN
TFZpZAogICAgICAgICByZXR1cm47CiAKICAgICBpbnRlcmZhY2Uuc2V0SXNBbmltYXRpbmcodHJ1
ZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCwgaW5saW5lVmlkZW9GcmFtZSh2aWRlb0VsZW1l
bnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCwgaW5saW5l
VmlkZW9GcmFtZSh2aWRlb0VsZW1lbnQpKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6
SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFyZ2V0TW9kZSkKQEAgLTMyNCw3ICszMjQsNyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVX
aXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OgogCiAgICAgaW50ZXJmYWNlLnNldFRhcmdldElzRnVs
bHNjcmVlbihmYWxzZSk7CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKGNv
bnRleHRJZCwgdGFyZ2V0TW9kZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbldp
dGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4dElkLCB0YXJnZXRNb2RlKSk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTSh2aWRlb0VsZW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRNb2Rl
KTsKQEAgLTMzNiwxMyArMzM2LDEzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhp
dFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6CiB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6Omhhc1ZpZGVvQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQs
IGJvb2wgaGFzVmlkZW8pCiB7CiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvKGNvbnRl
eHRJZCwgaGFzVmlkZW8pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvKGNvbnRl
eHRJZCwgaGFzVmlkZW8pKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp2aWRl
b0RpbWVuc2lvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgRmxvYXRTaXplJiB2
aWRlb0RpbWVuc2lvbnMpCiB7CiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZpZGVvRGltZW5zaW9u
cyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucyksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0
VmlkZW9EaW1lbnNpb25zKGNvbnRleHRJZCwgdmlkZW9EaW1lbnNpb25zKSk7CiB9CiAKICNwcmFn
bWEgbWFyayBNZXNzYWdlcyBmcm9tIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eToKQEAgLTM2
NCw3ICszNjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RVcGRhdGVJ
bmxpbmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCkKIAogICAgIGF1dG8mIG1vZGVsID0gZW5zdXJl
TW9kZWwoY29udGV4dElkKTsKICAgICBJbnRSZWN0IGlubGluZVJlY3QgPSBpbmxpbmVWaWRlb0Zy
YW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldElubGluZVJlY3QoY29udGV4dElkLCBpbmxp
bmVSZWN0LCBpbmxpbmVSZWN0ICE9IEludFJlY3QoMCwgMCwgMCwgMCkpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6U2V0SW5saW5lUmVjdChjb250ZXh0SWQsIGlubGluZVJlY3QsIGlubGluZVJlY3QgIT0g
SW50UmVjdCgwLCAwLCAwLCAwKSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCkBAIC0zNzgsNyAr
Mzc4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VmlkZW9Db250ZW50
TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5M
YXllcih2aWRlb0xheWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMs
IGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9w
YWdlKQotICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIHRydWUp
LCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlk
ZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCB0cnVlKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwog
fQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmV0dXJu
VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogICAgICAgICAgICAgbW9kZWwt
PnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCBmYWxzZSksIHByb3RlY3RlZFRo
aXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29u
dGVudExheWVyKGNvbnRleHRJZCwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNv
bnRleHRJZF0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVu
dGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgfSk7CiAjZWxzZQog
ICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQo
KS0+cm9vdExheWVyKCk7CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIG1vZGVs
LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29u
dGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVu
dGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiAjZW5kaWYK
QEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0
RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2
aWRlb0VsZW1lbnQgPSBXVEZNb3ZlKHZpZGVvRWxlbWVudCksIGNvbnRleHRJZF0gewogICAgICAg
ICB2aWRlb0VsZW1lbnQtPndpbGxFeGl0RnVsbHNjcmVlbigpOwogICAgICAgICBpZiAocHJvdGVj
dGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9FeGl0RnVs
bHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7
CiAgICAgfSk7CiB9CiAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElkLCBpbnRlcmZh
Y2VdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihj
b250ZXh0SWQpKTsKICAgICB9KTsKICNlbHNlCiAgICAgbW9kZWwtPndhaXRGb3JQcmVwYXJlZEZv
cklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQs
IGludGVyZmFjZSwgbW9kZWxdICgpIG11dGFibGUgewpAQCAtNDk4LDcgKzQ5OCw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4
dElkKQogICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdD
b250ZXh0KG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5t
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51
cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CkBAIC01NTUsNyArNTU1LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElk
LCBib28KIAogICAgIGlmICghaXNQYWdlVmlzaWJsZSkKICAgICAgICAgbW9kZWwudmlkZW9FbGVt
ZW50KCktPnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGZhbHNlKTsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVy
blRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9F
bGVtZW50KCkpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShj
b250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxlbWVudCgpKSkp
OwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RSb3V0ZVNoYXJpbmdQ
b2xpY3lBbmRDb250ZXh0VUlEKHVpbnQ2NF90IGNvbnRleHRJZCwgTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEOjpB
c3luY1JlcGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCAyZTE5MGIwMzVmNy4uYjljZTc5ZDI3NGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpA
QCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBOU1VSTCAqb3JpZ2luKFdlYlBhZ2UmIHBhZ2UpCiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxOU1N0
cmluZyAqPj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxXZWJQYWdlPj4mIHBhZ2VNYXApCitzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk8TlNTdHJpbmcg
Kj4+IGFjdGl2ZVBhZ2VzT3JpZ2lucyhjb25zdCBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWZQ
dHI8V2ViUGFnZT4+JiBwYWdlTWFwKQogewogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxO
U1N0cmluZyAqPj4gYWN0aXZlT3JpZ2lucyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxv
Y10gaW5pdF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggOTg3MmMzMWJh
NTguLjc5NjAyNGM4Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0xMTEs
NyArMTExLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGUKICAgICBSZXNvdXJjZUhhbmRsZTo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShmcmFtZUxvYWRlci5uZXR3b3JraW5nQ29udGV4dCgp
LCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlh
bHM6Ok9taXQgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6VXNlLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3QgLyp3ZWJQ
YWdlSUQqLykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwYWdlTG9hZENvbXBsZXRl
ZChQYWdlSWRlbnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXgg
NTViMzY5NzUzMDYuLjVmNjJmNzc3YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkUmVzb3VyY2UoV2ViQ29yZTo6
RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpIGZpbmFs
OwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXZWJDb3JlOjpGcmFtZUxvYWRl
ciYsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNv
cmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYs
IGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYpIGZpbmFsOwotICAgIHZv
aWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSBmaW5hbDsKKyAgICB2b2lk
IHBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBmaW5hbDsKIAogICAg
IHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCBz
ZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9vbCkgZmluYWw7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxMzg1NTgzYWYyOS4uYjE0MDNkMDU2MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBmaW5hbDsKICAgICBib29sIGhhc1dlYlZpZXco
KSBjb25zdCBmaW5hbDsgLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCiAKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5kZXggN2Y4NjlmMWRk
Y2IuLjdlYmEzYTk4YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjA5LDcg
KzIwOSw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudChXZWJG
cmFtZSAqd2ViRnJhbWUpCiB7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370590</attachid>
            <date>2019-05-24 14:20:41 -0700</date>
            <delta_ts>2019-05-24 14:25:51 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>198206_PageIdentifier_wip.patch</filename>
            <type>text/plain</type>
            <size>615176</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwNy4uYjNiY2FkZDlkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjIsNiArMTIz
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVu
dGlmaWVyPFQ+PiB7CiAgICAgdHlwZWRlZiBPYmplY3RJZGVudGlmaWVySGFzaDxUPiBIYXNoOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VD4mIGlkZW50aWZpZXIpCit7CisgICAg
dHMgPDwgaWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IGMyYzdjMjI0OWUzLi40NDgyZDVkNDc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC03NzksNiArNzc5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAogICAgIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
aAogICAgIHBhZ2UvUGFnZUdyb3VwLmgKKyAgICBwYWdlL1BhZ2VJZGVudGlmaWVyLmgKICAgICBw
YWdlL1BhZ2VPdmVybGF5LmgKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCiAgICAg
cGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU2YTFmNWYxZDcxLi5iNmE4Zjg5YWI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTIxNyw2ICsxMjE3LDcgQEAKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3
Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0
Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2QjY1MEREMjI5NjI2
MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4QTIwN0Q2MzI4
MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBBN0QyREQgLyogQWJz
dHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NzIwN0Q2MzQw
MDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAwQTdEMkREIC8qIEds
b2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzU5OSw2ICs3NjAwLDcgQEAKIAkJNDY4MzQ0REQxRURERkE1RjAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUxRURERkE1RjAwQjc3
OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCNjUwREIy
Mjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3Rl
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4RDIwN0Q2MzJBMDBB
N0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDE5Nyw2ICsyMDE5OSw3IEBACiAJCQkJOTMwMkIwQkUwRDc5RjgyQzAwQzdFRTgzIC8q
IFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuY3BwICovLAogCQkJCTdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLywKKwkJCQk0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRDVDOUNGQjE5QzdCNTJFMDBCM0M1QzEgLyog
UGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdl
T3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3Zlcmxh
eUNvbnRyb2xsZXIuY3BwICovLApAQCAtMjk4NzEsNiArMjk4NzQsNyBAQAogCQkJCUJDMzA1QzdB
MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTg1QjFFQjBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MT0xpc3RFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFN0U5QjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MT3B0R3Jv
dXBFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3RTk5MEExQTgzRTMw
MDdGQjhDNSAvKiBKU0hUTUxPcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhB
MjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA3NjkxMmNh
ZWI4YS4uMGU3ZDU0MjA1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQodWludDY0X3Qg
cGFnZUlELCBBWE9iamVjdENhY2hlJiBjYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29s
YXRlZFRyZWU6OmluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
QVhPYmplY3RDYWNoZSYgY2FjaGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGF1dG8gdHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0
eVRyZWUoKTsKQEAgLTg3LDcgKzg3LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6dHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogICAgIHJldHVybiB0
cmVlSURDYWNoZSgpLmdldCh0cmVlSUQpOwogfQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNv
bGF0ZWRUcmVlOjpjcmVhdGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIApA
QCAtOTcsNyArOTcsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gbmV3VHJlZTsKIH0K
IAotUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCh1
aW50NjRfdCBwYWdlSUQpCitSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0
cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihzX2NhY2hlTG9jayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGMwNzVkNWIwMTY3
Li42ZWVjMjY0NTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYSXNv
bGF0ZWRUcmVlTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00Myw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BWElzb2xhdGVk
VHJlZSgpOwogCi0gICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBh
Z2VJRCh1aW50NjRfdCBwYWdlSUQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QVhJ
c29sYXRlZFRyZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhP
YmplY3RDYWNoZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRl
ZFRyZWU+IHRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPEFY
SXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRy
ZWVGb3JJRChQYWdlSWRlbnRpZmllciwgQVhPYmplY3RDYWNoZSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IHRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+
IHRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBWElzb2xhdGVkVHJlZU5vZGU+IHJvb3ROb2RlKCk7CkBAIC03MCw3ICs3MSw3IEBAIHByaXZh
dGU6CiAgICAgQVhJc29sYXRlZFRyZWUoKTsKIAogICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0
ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlSURDYWNoZSgpOwotICAgIHN0YXRp
YyBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgp
OworICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+
PiYgdHJlZVBhZ2VDYWNoZSgpOwogCiAgICAgLy8gT25seSBhY2Nlc3Mgb24gQVggdGhyZWFkIHJl
cXVlc3RpbmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+
PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlNzBh
OWY3ZmU1NS4uZDM1NDE2NzNlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzc2Niw3
ICs3NzY2LDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2VyKCkKICAgICByZXR1cm4gKm1fbG9n
Z2VyOwogfQogICAgIAotT3B0aW9uYWw8dWludDY0X3Q+IERvY3VtZW50OjpwYWdlSUQoKSBjb25z
dAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggYzA3NjU1NjUwNmEuLmEyNDgxZGY4YTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNp
bmNsdWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmll
ci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVu
dC5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBA
IC02MzUsNyArNjM2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2Fj
aGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQVhPYmplY3RDYWNoZSgp
OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0OworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdDsKICAgICAvLyB0byBnZXQgdmlzdWFsbHkg
b3JkZXJlZCBoZWJyZXcgYW5kIGFyYWJpYyBwYWdlcyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFs
bHlPcmRlcmVkKCk7CiAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbGx5T3JkZXJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBi
MWJlZDhmMDMyZi4uMzNlMjc4NjM4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29r
aWVzID0gc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CiAKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtMTEwLDcgKzExMCw3IEBAIENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoY29u
c3QgRG9jCiB2b2lkIENvb2tpZUphcjo6c2V0Q29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29raWVz
RW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3Rk
OjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
IHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3Rv
cmFnZVNlc3Npb24oKSkgewogICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQg
PSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHUKIFN0cmluZyBDb29raWVK
YXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAg
ICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAg
ICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdQogYm9vbCBDb29raWVKYXI6OmdldFJh
d0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIGNvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkp
IHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7
CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCAwZGIwN2M2ZDEyZS4uMjgxZjg0YzQ5MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzKERvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogCiAgICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8
U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OworICAg
IHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggNGYwYmI4NmRkZDUuLjFmN2EyOWM0YjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBG
cmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJy
aWRlIHsgfQogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBt
YWlubHkgZm9yIGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZWMzOTEyN2ExYWQuLjA3NDg3NjExOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmUuaCIKICNpbmNsdWRl
ICJMaW5rSWNvbi5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgpAQCAtMTI2LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBtYWtl
UmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0
ZWd5LmgKaW5kZXggOGE4MjM4MWYwMTguLjQ1ZmViNjM1ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCIKQEAgLTU3LDcg
KzU4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UoRnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJl
c291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRlciYsIGJvb2wpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA3NzQ1
MDAxZTc4YS4uZjI2YTlhYWYyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmF2aWdh
dGlvbkFjdGlvbjo6UmVxdWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogbV91cmwgeyBVUkwgeyBkb2N1bWVudC51cmwoKSB9IH0KICAgICAsIG1fb3JpZ2lu
IHsgbWFrZVJlZlB0cihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX3BhZ2VJ
REFuZEZyYW1lSURQYWlyIHsgZG9jdW1lbnQuZnJhbWUoKSA/IHN0ZDo6bWFrZV9wYWlyKGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpLnZhbHVlT3IoMCksIGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKDApKSA6IHN0
ZDo6bWFrZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9wYWdlSURB
bmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVu
dC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlm
aWVyIHsgfSksIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52
YWx1ZU9yKDApKSA6IHN0ZDo6bWFrZV9wYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4oeyB9
LCAwKSB9CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmlu
ZGV4IDFhNDRmOTFkMzY4Li5lZDdkMDljZjI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRl
ICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtNjMsMTQgKzY0LDE0IEBAIHB1YmxpYzoKICAg
ICBOYXZpZ2F0aW9uQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24mJik7CiAgICAgTmF2aWdhdGlvbkFj
dGlvbiYgb3BlcmF0b3I9KE5hdmlnYXRpb25BY3Rpb24mJik7CiAKLSAgICB1c2luZyBQYWdlSURB
bmRGcmFtZUlEUGFpciA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKiBwYWdlSUQgKi8sIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+OworICAgIHVzaW5nIFBhZ2VJREFuZEZyYW1lSURQYWlyID0gc3RkOjpw
YWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBmcmFtZUlEICovPjsKICAgICBjbGFzcyBS
ZXF1ZXN0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVxdWVzdGVyKGNvbnN0IERvY3VtZW50
Jik7CiAKICAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiAqbV9vcmlnaW47IH0KLSAgICAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5maXJzdDsgfQorICAgICAgICBQYWdlSWRlbnRpZmll
ciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZyYW1lSURQYWlyLmZpcnN0OyB9
CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZy
YW1lSURQYWlyLnNlY29uZDsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFVSTCBtX3VybDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDE0
YmMyZjNiZWVmLi5mZmFkYTFjNDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lk
KFZlY3RvCiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9u
Q2FsbGJhY2spOwogfQogCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVCghbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2sp
OwogICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MK
IH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1l
bnQpCit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlE
LCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVu
ZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBv
cGVuZXJVcmwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKaW5kZXggYzQ2NjFiMDQ3NjAuLmRlMWM5NGE3MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgorI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTczLDcgKzc0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0
IFVSTCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBkYXRlZENh
bGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
Jik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0
aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJTb2NrZXRM
b2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxU
aW1lKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dTdWJyZXNvdXJjZUxvYWRp
bmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiYmKTsKQEAgLTk0LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3Vt
ZW50KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKICNlbmRpZgogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25N
YXA7CiAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
IG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1aW50NjRfdCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CisgICAg
RnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQ
YWdlSWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3Rp
ZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlm
aWNhdGlvbkNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjM1Mzkw
YzhjM2EuLjUyYjJlOTRiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQ4
Niw4ICs0ODYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMgKi8pID0gMDsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQq
LywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8q
c3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8s
IHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5v
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21h
aW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYm
IC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVy
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd246Ok5vKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKaW5kZXgg
MTU2YzljZDIwNWQuLjBkN2IzZGJmNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFs
RnJhbWVJZGVudGlmaWVyLmgKQEAgLTI1LDEzICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRnJhbWUgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1
ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgogc3RydWN0IEdsb2JhbEZyYW1lSWRl
bnRpZmllciB7Ci0gICAgdWludDY0X3QgcGFnZUlEOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RDsKICAgICB1aW50NjRfdCBmcmFtZUlEOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIEdsb2Jh
bEZyYW1lSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxG
cmFtZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50aWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDRkNWY4ZDI5NzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBhZ2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBQYWdlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDExNTkw
NTBjZDMyLi5iM2Q2ZTM4YmNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb29raWVKYXIuaCIKKyNp
bmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zOCw3ICsz
OSw3IEBAIHN0cnVjdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSB7CiAgICAgU2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbzsKICAgICBVUkwgdXJsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcyB7IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObyB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNzEsOCAr
NzIsMTEgQEAgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5OjpkZWNvZGUoRGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mcmFtZUlEKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdl
SUQpKQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgZGVjb2RlciA+
PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmVzdWx0LnBhZ2VJRCA9ICpwYWdlSUQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaW5jbHVkZVNlY3VyZUNvb2tpZXMpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggM2IxOGU2MmZlMzku
LjYzZGYwNTg4ZGM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBAIC02NiwxMiArNjYsMTIgQEAgYm9v
bCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrVGhpcmRQYXJ0eUNvb2tpZXMoY29u
c3QgUmVnaXN0cmFibGVEb21haW4KICAgICByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbnNUb0Js
b2NrQ29va2llRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9tYWluKTsKIH0KIAotYm9vbCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewogICAg
IHJldHVybiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCByZXF1ZXN0LnVybCgpLCBmcmFtZUlELCBwYWdlSUQpOwogfQogICAgIAotYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlG
b3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2ll
cywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7CiAgICAgUmVnaXN0cmFibGVEb21h
aW4gZmlyc3RQYXJ0eURvbWFpbiB7IGZpcnN0UGFydHlGb3JDb29raWVzIH07CiAgICAgaWYgKGZp
cnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21haW5zKGNvbnN0IFZlY3RvcjxSZWdp
c3RyYWJsZURvbWFpCiAgICAgICAgIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZv
ci5yZW1vdmUoZG9tYWluKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAg
aWYgKGZyYW1lSUQpIHsKICAgICAgICAgYXV0byBmcmFtZXNHcmFudGVkSXRlcmF0b3IgPSBtX2Zy
YW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlEKTsKQEAgLTE0OCw3ICsxNDgsNyBA
QCBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldEFsbFN0b3JhZ2VBY2Nl
c3NFbnRyaWVzKCkgY29uc3QKICAgICByZXR1cm4gZW50cmllczsKIH0KICAgICAKLXZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkKIHsKICAgICBpZiAoIWZyYW1lSUQpIHsKICAgICAgICAgaWYgKGZpcnN0UGFydHlE
b21haW4uaXNFbXB0eSgpKQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291
cmNlCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8gaXRlcmF0aW9u
ID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7CiAgICAgaWYgKGl0
ZXJhdGlvbiA9PSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmVuZCgpKQpAQCAtMTkxLDcg
KzE5MSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdlQWNjZXNz
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0CiAgICAgaXRlcmF0aW9uLT52YWx1ZS5y
ZW1vdmUoZnJhbWVJRCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGVhclBh
Z2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHVpbnQ2NF90IHBhZ2VJRCkK
K3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3BhZ2Vz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CiAgICAgbV9mcmFtZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5yZW1vdmUocGFnZUlEKTsKQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291
cmNlcygpCiAgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyA9IFdURjo6
bnVsbG9wdDsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvbW1pdHRlZENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21E
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlE
KQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewog
ICAgIGlmIChzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGZyb21Eb21haW4pKQogICAgICAg
ICBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZS5hZGQo
cGFnZUlELCB0b0RvbWFpbik7CkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KCkKICAgICBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IHRydWU7CiB9
CiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNv
b2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCkgY29uc3QKK09wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQ
YXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29uc3QKIHsKICAgICBpZiAo
IW1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgfHwgIXBhZ2VJRCB8fCBtX25hdmlnYXRlZFRv
V2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKaW5kZXgg
MDMwMjAwZGY5YzQuLjNmMzljOGFjZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKKyNpbmNs
dWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlZ2lzdHJhYmxlRG9tYWluLmgiCiAj
aW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAt
MTI1LDcgKzEyNiw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNvb2tpZXNF
bmFibGVkKCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWUoY29uc3Qg
Q29va2llJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVzKGNvbnN0IFZlY3Rv
cjxDb29raWU+JiwgY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpOwotICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IENvb2tpZSYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGVsZXRlQWxsQ29va2ll
cygpOwpAQCAtMTM0LDI5ICsxMzUsMjkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgY29va2ll
SG9zdE5hbWVzLCBJbmNsdWRlSHR0cE9ubHlDb29raWVzKTsKICAgICBXRUJDT1JFX0VYUE9SVCBW
ZWN0b3I8Q29va2llPiBnZXRBbGxDb29raWVzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9y
PENvb2tpZT4gZ2V0Q29va2llcyhjb25zdCBVUkwmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBi
b29sIGdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+LCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZmx1c2hDb29raWVTdG9yZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dDsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IENvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5JikgY29uc3Q7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNT
KQotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlEKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNl
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkg
Y29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRCbG9j
a0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNv
dXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PikgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQcmV2YWxlbnREb21haW5zVG9C
bG9ja0Nvb2tpZXNGb3IoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0QWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMoT3B0aW9uYWw8
U2Vjb25kcz4pOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlUHJldmFsZW50RG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBib29sIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
c291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlE
b21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllcikgY29uc3Q7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyh1aW50NjRfdCBwYWdlSUQpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ3JhbnRT
dG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1v
dmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRD
YWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhTZWNvbmRzKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBPcHRpb25hbDxTZWNvbmRzPiBtYXhBZ2VDYWNoZUNhcChjb25z
dCBSZXNvdXJjZVJlcXVlc3QmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdHRlZENy
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZy
b21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFn
ZUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRl
c3RpbmcoKTsKICNlbmRpZgogCkBAIC0xODIsMTQgKzE4MywxNCBAQCBwcml2YXRlOgogCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBib29sIHNob3VsZEJsb2NrVGhp
cmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25zdDsKLSAgICBPcHRp
b25hbDxTZWNvbmRzPiBjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmaXJzdFBhcnR5LCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdDsKKyAgICBPcHRp
b25hbDxTZWNvbmRzPiBjbGllbnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmaXJzdFBhcnR5LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIEhhc2hT
ZXQ8UmVnaXN0cmFibGVEb21haW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZv
cjsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBIYXNoTWFwPHVpbnQ2NF90LCBSZWdpc3RyYWJsZURv
bWFpbiwgRGVmYXVsdEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9L
ZXlIYXNoVHJhaXRzPHVpbnQ2NF90Pj4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fZnJhbWVzR3JhbnRl
ZFN0b3JhZ2VBY2Nlc3M7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDxSZWdpc3RyYWJs
ZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4+LCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX3BhZ2VzR3Jh
bnRlZFN0b3JhZ2VBY2Nlc3M7CisgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDx1
aW50NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+PiBtX2ZyYW1lc0dy
YW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPj4gbV9wYWdlc0dyYW50ZWRTdG9y
YWdlQWNjZXNzOwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMgeyB9OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xp
ZW50U2lkZUNvb2tpZXMgeyB9OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xp
ZW50U2lkZUNvb2tpZXNTaG9ydCB7IH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVnaXN0cmFi
bGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRp
b25CeVByZXZhbGVudFJlc291cmNlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFJlZ2lzdHJhYmxlRG9tYWluPiBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQ
cmV2YWxlbnRSZXNvdXJjZTsKICAgICBib29sIG1fbmF2aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlv
blRlc3RNb2RlID0gZmFsc2U7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Q29jb2EubW0KaW5kZXggNjM3NDAzNTJjNGEuLjU1N2U5NzdiNGQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTI5NCw3ICsyOTQsNyBAQCBzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNBcnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9w
dGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0Fy
cmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlEKQorc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpCiB7CiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoc2Vzc2lvbi5zaG91bGRCbG9j
a0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFtZUlELCBwYWdlSUQpKQpAQCAtMzA3LDcgKzMw
Nyw3IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmCiB9CiAKIGVudW0gSW5jbHVkZUhUVFBPbmx5
T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwgSW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMg
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90
IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpCitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMpCiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogCkBAIC0zNjMsMTIgKzM2
MywxMiBAQCBzdGF0aWMgdm9pZCBkZWxldGVBbGxIVFRQQ29va2llcyhDRkhUVFBDb29raWVTdG9y
YWdlUmVmIGNvb2tpZVN0b3JhZ2UpCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENv
b2tpZXMoY29va2llU3RvcmFnZSk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBEb05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJ
bmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KQEAgLTM3OCw3ICszNzgs
NyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbgogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lv
bigqdGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJzdFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNh
bWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJ
RCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIEluY2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQ
cm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNz
UmF3Q29va2llcykpOwogCkBAIC00NDMsNyArNDQzLDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKSBjb25zdAogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKaW5kZXggMmMxMTU2OGZjZTUuLmQ2MGQ3MGE4
MzY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBTdHJpbmcgY29va2ll
c0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmCiAgICAgcmV0dXJuIGNvb2tpZXMudG9TdHJpbmcoKTsKIH0KIAotdm9pZCBDb29raWVKYXJD
dXJsOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBDb29raWVKYXJDdXJsOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBDb29r
aWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3MKICAgICBjb29raWVKYXJEQi5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJs
LCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yayk7CiB9CiAKLXN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0o
cGFnZUlEKTsKQEAgLTgzLDcgKzgzLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2ll
SmFyQ3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24KICAgICBy
ZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGZhbHNl
KSwgZmFsc2UgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BB
UkFNKHBhZ2VJRCk7CkBAIC0xMTMsNyArMTEzLDcgQEAgYm9vbCBDb29raWVKYXJDdXJsOjpjb29r
aWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pIGNvbnN0CiAg
ICAgcmV0dXJuIHNlc3Npb24uY29va2llRGF0YWJhc2UoKS5pc0VuYWJsZWQoKTsKIH0KIAotYm9v
bCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIENvb2tpZUph
ckN1cmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFS
QU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3Vy
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ3VybC5jcHAKaW5kZXggODk0Yzg2YWZlOGYuLjY4NzJiMGFjOWIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCkBAIC04MCw3ICs4MCw3IEBAIENvb2tpZUph
ckRCJiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZURhdGFiYXNlKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9jb29raWVEYXRhYmFzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgY29va2llU3Rv
cmFnZSgpLnNldENvb2tpZXNGcm9tRE9NKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCB2YWx1ZSk7CiB9CkBAIC05MCw3ICs5MCw3IEBAIGJvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJu
IGNvb2tpZVN0b3JhZ2UoKS5jb29raWVzRW5hYmxlZCgqdGhpcyk7CiB9CiAKLXN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAor
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9y
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVzRm9y
RE9NKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlE
LCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CkBAIC0xNTQsNyArMTU0LDcgQEAgVmVjdG9yPENv
b2tpZT4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYpCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tp
ZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5m
bywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwg
VmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0
b3JhZ2UoKS5nZXRSYXdDb29raWVzKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCByYXdDb29raWVzKTsKIH0KQEAgLTE2NCw3ICsxNjQsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Zmx1c2hDb29raWVTdG9yZSgpCiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBmb3IgV2ViS2l0IHRvIHVzZS4KIH0KIAotc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBj
b29raWVTdG9yYWdlKCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoKnRoaXMsIGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVD
b29raWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAppbmRleCAxZjc1
ODc3YTgyYi4uZjY2NDFlZmViNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5j
cHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVF
eGlzdHMoY29uc3QgR1NMaXN0KiBjb29raWVzLCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAog
ewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsK
QEAgLTQ0NCw3ICs0NDQsNyBAQCBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwpCiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLWJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVT
RURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTE0
LDcgKzUxNCw3IEBAIHN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vz
c2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5n
Ojpmcm9tVVRGOChjb29raWVIZWFkZXIuZ2V0KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07
CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFS
QU0oZnJhbWVJRCk7CkBAIC01MjIsNyArNTIyLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIK
ICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIHVybCwgZmFsc2UsIGluY2x1ZGVT
ZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKaW5kZXggODc5YzBiMTllOTYuLmI2ODljM2UyNWFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3
MTYsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3Rv
cmFnZUltbWVkaWF0ZWx5KCkKICAgICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlE
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VB
Y2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQz
LDcgKzc0Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhh
c1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJh
bWVEb21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJh
bWVEb21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgT3BlbmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWlu
KQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVy
RG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKQEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50
U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
KSwgV1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQp
IHsgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omdy
YW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFt
ZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4m
JiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1l
SUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9y
YWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJh
bWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFn
ZUlEIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93
T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZy
YW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNy4uYmZjMjMz
OTY4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5oCkBAIC02NCw3ICs2NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNTdG9yYWdl
SWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgT3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJJ
RCwgT3BlbmVyRG9tYWluJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBncmFuZGZhdGhlckRhdGFG
b3JEb21haW5zKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jikgb3ZlcnJpZGU7CiAK
QEAgLTkxLDkgKzkxLDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYWxjdWxhdGVBbmRTdWJtaXRU
ZWxlbWV0cnkoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJh
bWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFt
ZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1N0YXR1cyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVy
cmlkZTsKIAogICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwg
Ym9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGxv
Z1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwpAQCAtMTUy
LDcgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2ln
bmVkIHJlY3Vyc2l2ZWx5RmluZE5vblByZXZhbGVudERvbWFpbnNUaGF0UmVkaXJlY3RlZFRvVGhp
c0RvbWFpbih1bnNpZ25lZCBwcmltYXJ5RG9tYWluSUQsIFN0ZFNldDx1bnNpZ25lZD4mIG5vblBy
ZXZhbGVudFJlZGlyZWN0aW9uU291cmNlcywgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxs
cyk7CiAgICAgdm9pZCBzZXREb21haW5zQXNQcmV2YWxlbnQoU3RkU2V0PHVuc2lnbmVkPiYmKTsK
LSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRv
cEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJh
bWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmKTsKICAgICB2b2lkIG1hcmtBc1ByZXZhbGVudElmSGFzUmVkaXJlY3Rl
ZFRvUHJldmFsZW50KCk7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2
YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHJlbW92ZURh
dGFSZWNvcmRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDBlZTdmOTYzODk0
Li5hNWYyNjI0ZTQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiAgICAgICAgIG1f
cGVyc2lzdGVudFN0b3JhZ2UtPnNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6Rm9yY2VJbW1lZGlhdGVXcml0ZTo6WWVzKTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VB
Y2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJ
RCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMjQs
NyArMjI0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHMKICAgICB9KTsKIH0KIAotdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yNjYsNyArMjY2LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBP
cGVuZXJQYWdlSUQgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBvcGVuZXJEb21haW4pCit2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWlu
JiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAg
LTI4Nyw3ICsyODcsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5JbgogICAgIGdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RG
TW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4m
JiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI5OSw3ICsyOTksNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRgogICAgIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUo
c3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgcGFnZUlE
LCBwcm9tcHRXYXNTaG93biwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50
ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwg
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFu
dFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBU
b3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9t
cHRXYXNTaG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuaAppbmRleCA0NGVmYmY0ZGVjMS4uNDVmN2UxYjc1OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmln
YXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNv
bnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJh
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1l
RG9tYWluJikgb3ZlcnJpZGU7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2ln
bmVkIHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFp
bihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21h
aW4+JiwgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVu
dChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVi
dWdNb2RlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3
Li5kNzc5OGIyNWQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aApAQCAtOTAsOCArOTAsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4g
PSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVu
ZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQ
YWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2lu
ZyBGcmFtZUlEID0gdWludDY0X3Q7CiAgICAgCiAgICAgdmlydHVhbCB+UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKCk7CkBAIC0xMTAsNyArMTA4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzeW5jU3RvcmFnZUlmTmVlZGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jU3Rv
cmFnZUltbWVkaWF0ZWx5KCkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBh
Z2VJRCwgT3BlbmVyRG9tYWluJiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CiAgICAgdm9p
ZCByZW1vdmVBbGxTdG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAK
ICAgICB2b2lkIGdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwpAQCAtMTYxLDkgKzE1OSw5IEBAIHB1YmxpYzoKICAgICBib29sIGlzRGVi
dWdNb2RlRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVidWdNb2RlRW5hYmxlZDsgfTsKICAg
ICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJG
cmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1N0YXR1cyk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1N0YXR1cyk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ3JhbnRTdG9yYWdlQWNj
ZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYm
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmln
YXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9t
RG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXgg
ODcxYjE5ZDJmMDcuLjYyMjQzMGNkOGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0
b3I8V2ViQ29yCiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHN1
YkZyYW1lRG9tYWluICE9IHRvcEZyYW1lRG9tYWluKTsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwpAQCAtMjk4LDEyICsyOTgsMTIgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHMKICAg
ICB9KTsKIH0KIAotYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQpCitib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6aGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gbV9u
ZXR3b3JrU2Vzc2lvbiA/IG1fbmV0d29ya1Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigp
Lmhhc1N0b3JhZ2VBY2Nlc3MocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1l
SUQsIHBhZ2VJRCkgOiBmYWxzZTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBj
YWxsYmFjaykKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0zMTUsNyAr
MzE1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFIKICAgICBjYWxsYmFjayhmYWxzZSk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KHN1YkZyYW1lRG9tYWluID09IHRvcEZyYW1lRG9tYWluKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bjo6Tm8pOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
CiAgICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFJlZ2lzdHJhYmxlRG9t
YWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgUmVn
aXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMzc1LDcgKzM3NSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFJlZ2lzdHJhYmxlCiAg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0
b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICBwb3N0VGFzayhbdGhpcywgc3ViRnJhbWVEb21haW4gPSBzdWJGcmFtZURvbWFpbi5p
c29sYXRlZENvcHkoKSwgdG9wRnJhbWVEb21haW4gPSB0b3BGcmFtZURvbWFpbi5pc29sYXRlZENv
cHkoKSwgZnJhbWVJRCwgcGFnZUlELCBwcm9tcHRXYXNTaG93biwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKQEAgLTM5Niw3ICszOTYs
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJgogICAgIH0pOwogfQogCi1TdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlEKQorU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKIHsKICAgICBib29sIGlzU3RvcmFnZUdyYW50ZWQgPSBmYWxzZTsKIApAQCAtNDA5LDcgKzQw
OSw3IEBAIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0CiAgICAgcmV0dXJuIGlzU3RvcmFnZUdyYW50
ZWQgPyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzIDogU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQ6Ok5vOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdy
YW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5k
bGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKaW5kZXggODc1OWQ2MDE2NmEuLjc5Y2YyNDYwMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04Miw4
ICs4Myw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVp
bnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQg
PSB1aW50NjRfdDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93biA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEwNCw3
ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwogCkBA
IC0xMTgsMTEgKzExNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlv
bihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFU
b1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0
cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBi
b29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lk
IHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGxv
Z1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VB
Y2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNz
SGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0
aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxs
VXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBWZWN0
b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+Jik7Ci0gICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxIYXNT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CiAKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlQ
YWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVz
b3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsKIAog
ICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBP
cGVuZXJEb21haW4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYs
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5NzE4
MzZhZGEuLjRkM2QxNjlmNmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKQEAgLTQ5LDcgKzQ5LDcg
QEAgcHVibGljOgogICAgICAgICBTdHJpbmcgcmVmZXJyZXI7CiAgICAgICAgIFN0cmluZyB1c2Vy
QWdlbnQ7CiAgICAgICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRDsKLSAgICAgICAgdWludDY0
X3QgcGFnZUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAg
ICAgIHVpbnQ2NF90IGZyYW1lSUQ7CiAgICAgICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY3BwCmluZGV4IDNkNzFmOGY2YjFiLi45MmM4YjdhZTQ0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZW1vdmVMb2FkSWRlbnRpZmllcihSZXNvdXJjZUxvYWRJZGVudGlmaWVy
CiAgICAgQVNTRVJUKCFtX25ldHdvcmtSZXNvdXJjZUxvYWRlcnMuY29udGFpbnMoaWRlbnRpZmll
cikpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpwYWdlTG9hZENv
bXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCiB7CiAg
ICAgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZSh3ZWJQYWdlSUQpOwogfQpA
QCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3NpCiAgICAgbG9hZGVyLT5j
b252ZXJ0VG9Eb3dubG9hZChkb3dubG9hZElELCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CiAKLXZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJp
bmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihu
ZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOwogICAgIGF1dG8gcmVzdWx0ID0gbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmNvb2tpZXNGb3JET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwpAQCAtNTI1LDcgKzUyNSw3
IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
aW5nKQogewogICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CiAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LnNldENvb2tpZXNGcm9tRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlE
LCBwYWdlSUQsIGNvb2tpZVN0cmluZyk7CkBAIC01NDIsMTMgKzU0MiwxMyBAQCB2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZChQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIENvbQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHN0b3JhZ2VTZXNzaW9uKG5ldHdv
cmtQcm9jZXNzKCksIHNlc3Npb25JRCkuY29va2llc0VuYWJsZWQoKSk7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcs
IGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZywgYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byByZXN1bHQgPSBzdG9yYWdlU2Vzc2lvbihuZXR3
b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGZp
cnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1
cmVDb29raWVzKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlc3VsdC5maXJzdCks
IHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiByZXN1bHQ7CiAgICAg
c3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5nZXRSYXdDb29raWVz
KGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJlc3VsdCk7
CkBAIC02MzgsMTMgKzYzOCwxMyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjplbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIH0KIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5zdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vzc2lvbi0+cmVtb3ZlU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKGZyYW1lSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0
YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQ
cm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNlc3Np
b24tPmNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MocGFnZUlE
KTsKQEAgLTY5Nyw3ICs2OTcsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZQogICAgIH0KIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoYXV0byBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24o
c2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9
IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKQEAgLTcwOSw3ICs3
MDksNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYwogICAgIGNvbXBsZXRpb25IYW5kbGVyKHRy
dWUpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVk
LCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0
d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9h
ZFN0YXRpc3RpY3MoKSkgewpAQCAtNzIxLDcgKzcyMSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQ6OlllcywgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFn
ZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlE
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBpZiAo
YXV0byBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vz
c2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5l
dHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCkBAIC03NDUsNyArNzQ1LDcg
QEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzZXRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RzKCkKICAgICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RzKCk7CiB9CiAKLU9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKHVpbnQ2NF90IHBh
Z2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29sIGlzTWFpblJlc291
cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQorT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tp
bmdSZXNvdXJjZUxvYWQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklE
JiBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHNlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtODE0LDcgKzgxNCw3IEBAIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZygpCiAg
ICAgbV9uZXR3b3JrQWN0aXZpdHlUcmFja2Vycy5jbGVhcigpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0ZvclBhZ2UoUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogICAgIGZvciAoYXV0byYgYWN0aXZpdHlUcmFja2VyIDogbV9uZXR3b3JrQWN0aXZp
dHlUcmFja2VycykgewogICAgICAgICBpZiAoYWN0aXZpdHlUcmFja2VyLnBhZ2VJRCA9PSBwYWdl
SUQpCkBAIC04MjYsNyArODI2LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZSh1aW50NjQKICAgICB9KTsK
IH0KIAotc2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kUm9vdE5ldHdv
cmtBY3Rpdml0eSh1aW50NjRfdCBwYWdlSUQpCitzaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmZpbmRSb290TmV0d29ya0FjdGl2aXR5KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICByZXR1cm4gbV9uZXR3b3JrQWN0aXZpdHlUcmFja2Vycy5maW5kTWF0Y2hpbmcoWyZd
KGNvbnN0IGF1dG8mIGl0ZW0pIHsKICAgICAgICAgcmV0dXJuIGl0ZW0uaXNSb290QWN0aXZpdHkg
JiYgaXRlbS5wYWdlSUQgPT0gcGFnZUlEOwpAQCAtOTAzLDE3ICs5MDMsMTcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJDb25uZWN0aW9uSGFzVXBsb2FkcygpCiAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUHJvY2Vzc1Bvb2w6OkNsZWFyV2ViUHJvY2Vzc0hhc1VwbG9hZHMobV93ZWJQcm9j
ZXNzSWRlbnRpZmllciksIDApOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQogewogICAg
IG1fbmV0d29ya1Byb2Nlc3MtPndlYlBhZ2VXYXNBZGRlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNl
c3Npb25JRCwgcGFnZUlELCBvbGRQYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Ondl
YlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlEKQogewogICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlBhZ2VXYXNSZW1vdmVkKG1fY29u
bmVjdGlvbi5nZXQoKSwgc2Vzc2lvbklELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9u
SUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcykKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6
OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxQYWdlSWRlbnRpZmllcj4mIHBh
Z2VzKQogewogICAgIG1fbmV0d29ya1Byb2Nlc3MtPndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZCht
X2Nvbm5lY3Rpb24uZ2V0KCksIG5ld1Nlc3Npb25JRCwgcGFnZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5oCmluZGV4IGNiYzdiYmZlOGY1Li4wNmQ1Nzk2ODgyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxv
YWRNYXAuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CkBAIC0xMzMsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBtX25ldHdv
cmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBP
cHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2Fk
KHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29s
IGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlvbmFsPE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBp
c01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0b3BUcmFj
a2luZ1Jlc291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIE5ldHdv
cmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldENvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVhckNvbm5l
Y3Rpb25IYXNVcGxvYWRzKCk7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQgd2Vi
UGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgdm9p
ZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQo
UEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBvbGRQYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNz
aW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NTZXNz
aW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllcik7CkBAIC0xNzAsMTYgKzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJlY29u
bmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3
ZWJQYWdlSUQpOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9h
ZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnREb3du
bG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lkIGNv
bnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0X3Qg
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAotICAg
IHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmlu
ZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGNv
b2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0cmlu
ZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0Fj
Y2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsK
KyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2Vk
KT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYp
OwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNv
bnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAgcHJpdmF0
ZToKICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0
aW9uKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQg
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9y
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsK
KyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBsb2dX
ZWJTb2NrZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIFdh
bGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAgICAg
dm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0
RG9tYWluKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBh
Z2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAgIHZv
aWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bik+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6
OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2b2lk
IGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIzOSwyOSAr
MjQwLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tl
cigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKGNv
bnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAgICAgICAg
UmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlciYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tl
cih1aW50NjRfdCBwYWdlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tl
cihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBhZ2VJRCB7
IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAgICAgICAg
ICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpM
b2FkUGFnZSB9CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlTmV0d29y
a0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIg
cmVzb3VyY2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJj
ZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAgLCByZXNv
dXJjZUlEIHsgcmVzb3VyY2VJRCB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAgICB7CiAg
ICAgICAgIH0KIAotICAgICAgICB1aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAgIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciByZXNvdXJjZUlEIHsgMCB9OwogICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsgZmFsc2Ug
fTsKICAgICAgICAgTmV0d29ya0FjdGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7CiAgICAg
fTsKIAogICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0gICAgdm9p
ZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7
Ci0gICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCk7Cisg
ICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKKyAgICBzaXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5VHJhY2tl
cihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxFKEFQUExF
X1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5p
bgppbmRleCBmN2M5N2VlYmIyMS4uODMzZTc0ZmNmNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjYsMTggKzI2LDE4IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBQZXJmb3Jt
U3luY2hyb25vdXNMb2FkKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcmVz
b3VyY2VMb2FkUGFyYW1ldGVycykgLT4gKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiBkYXRhKSBTeW5j
aHJvbm91cwogICAgIExvYWRQaW5nKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMgcmVzb3VyY2VMb2FkUGFyYW1ldGVycykKICAgICBSZW1vdmVMb2FkSWRlbnRpZmllcih1aW50
NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKQotICAgIFBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2
NF90IHdlYlBhZ2VJRCkKKyAgICBQYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQpCiAgICAgUHJlZmV0Y2hETlMoU3RyaW5nIGhvc3RuYW1lKQogICAgIFBy
ZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmllciwgV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBsb2FkUGFyYW1ldGVycyk7CiAKICAgICBTdGFydERv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVk
TmFtZSkKICAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgV2ViS2l0
OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlKQogCi0gICAgQ29va2llc0ZvckRP
TShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBT
ZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5
LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFN0cmlu
ZyBjb29raWVTdHJpbmcpCisgICAgQ29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKKyAgICBTZXRDb29raWVz
RnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQs
IFN0cmluZyBjb29raWVTdHJpbmcpCiAgICAgQ29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoYm9vbCBlbmFibGVkKSBTeW5jaHJvbm91cwotICAgIENvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFy
dHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgZW51
bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzKSBT
eW5jaHJvbm91cwotICAgIEdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBV
UkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8s
IFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlEKSAtPiAoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgU3luY2hyb25vdXMK
KyAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRl
SW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcs
IGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKKyAgICBHZXRSYXdDb29r
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgLT4g
KFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCiAgICAgRGVsZXRl
Q29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIGNvb2tpZU5h
bWUpCiAKICAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFVSTCB1cmwsIFN0cmluZyBwYXRoLCBXZWJL
aXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmluZyBjb250
ZW50VHlwZSkKQEAgLTU2LDE2ICs1NiwxNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRW5zdXJlTGVnYWN5UHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgQ2xlYXJQYWdlU3BlY2lm
aWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgUmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlEKTsKKyAgICBDbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEKTsKICAgICBMb2dVc2VySW50ZXJhY3Rpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW4pCiAgICAgTG9nV2ViU29ja2V0
TG9hZGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRhcmdldERvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21h
aW4sIFdhbGxUaW1lIGxhc3RTZWVuKQogICAgIExvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFp
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdhbGxUaW1lIGxh
c3RTZWVuKQogICAgIExvZ1N1YnJlc291cmNlUmVkaXJlY3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzb3VyY2VEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRhcmdldERvbWFpbikKICAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gc3RhdGlzdGlj
cykKLSAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQp
IC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBz
dWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYwotICAgIFJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVp
bnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9t
YWluKQorICAgIEhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGJvb2wgaGFzU3RvcmFnZUFjY2VzcykgQXN5bmMKKyAgICBS
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEKSAtPiAoZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
IHdhc0dyYW50ZWQsIGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24gcHJvbXB0V2FzU2hvd24pIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3Bl
bmVyUGFnZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4pCiAjZW5k
aWYKIAogICAgIEFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KFN0cmluZyBzb3VyY2VPcmln
aW4sIFN0cmluZyBkZXN0aW5hdGlvblByb3RvY29sLCBTdHJpbmcgZGVzdGluYXRpb25Ib3N0LCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTg3LDcgKzg3LDcgQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogCiAg
ICAgU2V0V2ViUHJvY2Vzc0lkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgcHJv
Y2Vzc0lkZW50aWZpZXIpCiAKLSAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCkKLSAgICBXZWJQYWdl
V2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKLSAg
ICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBW
ZWN0b3I8dWludDY0X3Q+IHBhZ2VzKQorICAgIFdlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgb2xkUGFnZUlEKQorICAgIFdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQorICAgIFdlYlBy
b2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIFZlY3RvcjxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZXMpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKaW5kZXggZDE0YjFkZTlkOTEu
LjQwOTcxNGQ2NjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuY3BwCkBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBpc1NhbWVPcmlnaW4oY29uc3QgVVJMJiB1cmwsIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBvcmln
aW4pCiAgICAgcmV0dXJuIHVybC5wcm90b2NvbElzRGF0YSgpIHx8IHVybC5wcm90b2NvbElzQmxv
YigpIHx8ICFvcmlnaW4gfHwgb3JpZ2luLT5jYW5SZXF1ZXN0KHVybCk7CiB9CiAKLU5ldHdvcmtM
b2FkQ2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIEhUVFBIZWFkZXJNYXAmJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBVUkwmJiB1cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBzb3Vy
Y2VPcmlnaW4sIFByZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVy
cmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKK05ldHdvcmtMb2Fk
Q2hlY2tlcjo6TmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2Vz
cywgRmV0Y2hPcHRpb25zJiYgb3B0aW9ucywgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIEhUVFBIZWFkZXJNYXAmJiBvcmln
aW5hbFJlcXVlc3RIZWFkZXJzLCBVUkwmJiB1cmwsIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4mJiBz
b3VyY2VPcmlnaW4sIFByZWZsaWdodFBvbGljeSBwcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJl
ZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCwgYm9vbCBzaG91bGRDYXB0dXJlRXh0
cmFOZXR3b3JrTG9hZE1ldHJpY3MsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlwZSkKICAgICA6IG1f
b3B0aW9ucyhXVEZNb3ZlKG9wdGlvbnMpKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQog
ICAgICwgbV9uZXR3b3JrUHJvY2VzcyhuZXR3b3JrUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCmluZGV4IDMxZDExYzNhOGFl
Li41N2RmMWRhNDY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkQ2hlY2tlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtMb2FkQ2hl
Y2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsKIHB1Ymxp
YzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwgT3RoZXIgfTsK
IAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYgcmVmZXJy
ZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hvdWxkQ2FwdHVy
ZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVlc3RMb2FkVHlw
ZSA9IExvYWRUeXBlOjpPdGhlcik7CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5ldHdvcmtQcm9j
ZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYm
LCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVm
bGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxl
ZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZh
bHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOwogICAgIH5O
ZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRyaXBsZXQgewpA
QCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNlc3Npb25JRCBt
X3Nlc3Npb25JRDsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nlc3M7Ci0g
ICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdl
SUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAg
bV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgogICAg
IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQg
Zm9yIENPUlMgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggODk2Mzk5ZDEzMzIuLjg5NzMwY2Y5ZmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJh
bWV0ZXJzLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtBY3Rpdml0eVRy
YWNrZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlTG9hZGVyT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMzgsNyArMzksNyBAQCBlbnVtIGNsYXNz
IFByZWNvbm5lY3RPbmx5IHsgTm8sIFllcyB9OwogCiBjbGFzcyBOZXR3b3JrTG9hZFBhcmFtZXRl
cnMgewogcHVibGljOgotICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQ7CiAgICAgdWludDY0X3Qgd2ViRnJhbWVJRCB7IDAg
fTsKICAgICBXVEY6OlByb2Nlc3NJRCBwYXJlbnRQSUQgeyAwIH07CiAgICAgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEIHsgUEFMOjpTZXNzaW9uSUQ6OmVtcHR5U2Vzc2lvbklEKCkgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggYTVk
NmY1Y2ZjYzcuLjI5ZDE3Zjk5ZjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTE1NSw3ICsxMTU1LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JRCBzZXMKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1
dG8qIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi0+Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbihmcm9tRG9tYWluLCB0b0RvbWFpbiwgcGFnZUlEKTsKQEAgLTE5NTQsNyAr
MTk1NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRl
Rm9yV2ViU29ja2V0KGJvb2wgYWxsb3dzLCBDb21wbGV0CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0
X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjps
b2dEaWFnbm9zdGljTWVzc2FnZShQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3Vs
ZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dB
ZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NjIsNyAr
MTk2Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2
NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3Rp
Y01lc3NhZ2Uod2ViUGFnZUlELCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlOjpO
byksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIERpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSByZXN1bHQs
IFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFn
bm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIERpYWdub3N0aWNMb2dn
aW5nUmVzdWx0VHlwZSByZXN1bHQsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAg
aWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91
bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47CkBAIC0xOTcwLDcgKzE5NzAsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2Vi
UGFnZUlELCBjb25zdCBTdAogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1bHQsIFNob3VsZFNhbXBsZTo6
Tm8pLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoVmFsdWUodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRG
aWd1cmVzLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6
bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2
YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBTaG91bGRTYW1wbGUgc2hvdWxkU2Ft
cGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVy
U2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYxOSw3ICsyNjE5
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVtb3ZlS2VwdEFsaXZlTG9hZChOZXR3b3JrUmVz
b3VyY2VMb2FkZXImIGxvYWRlcikKICAgICAgICAgc2Vzc2lvbi0+cmVtb3ZlS2VwdEFsaXZlTG9h
ZChsb2FkZXIpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2Vi
UGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJ
RCkKIHsKICAgICBpZiAoIXBhZ2VJRCB8fCAhb2xkUGFnZUlEKSB7CiAgICAgICAgIExPR19FUlJP
UigiQ2Fubm90IGFkZCBwYWdlIHdpdGggaW52YWxpZCBpZCIpOwpAQCAtMjYzOCwxMyArMjYzOCwx
MyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRAogICAgICAgICByZXR1cm4gc2Vzc2lvbklEOwog
ICAgIH0pOwogCi0gICAgc3RvcmFnZU1hbmFnZXIuY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UocGFnZUlELCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIHN0
b3JhZ2VNYW5hZ2VyLmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24o
cGFnZUlELCBjb25uZWN0aW9uKTsKKyAgICBzdG9yYWdlTWFuYWdlci5jcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShwYWdlSUQudG9VSW50NjQoKSwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKTsKKyAgICBzdG9yYWdlTWFuYWdlci5hZGRBbGxvd2VkU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKICAg
ICBpZiAocGFnZUlEICE9IG9sZFBhZ2VJRCkKLSAgICAgICAgc3RvcmFnZU1hbmFnZXIuY2xvbmVT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShvbGRQYWdlSUQsIHBhZ2VJRCk7CisgICAgICAgIHN0b3Jh
Z2VNYW5hZ2VyLmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uob2xkUGFnZUlELnRvVUludDY0
KCksIHBhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFn
ZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VX
YXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFwYWdlSUQpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgcmVtb3ZlIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBA
IC0yNjU3LDggKzI2NTcsOCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3Zl
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbgogICAgICAgICByZXR1
cm47CiAKICAgICBhdXRvJiBzdG9yYWdlTWFuYWdlciA9IHNlc3Npb24tPnN0b3JhZ2VNYW5hZ2Vy
KCk7Ci0gICAgc3RvcmFnZU1hbmFnZXIucmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlQ29ubmVjdGlvbihwYWdlSUQsIGNvbm5lY3Rpb24pOwotICAgIHN0b3JhZ2VNYW5hZ2VyLmRl
c3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQpOworICAgIHN0b3JhZ2VNYW5hZ2Vy
LnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELnRv
VUludDY0KCksIGNvbm5lY3Rpb24pOworICAgIHN0b3JhZ2VNYW5hZ2VyLmRlc3Ryb3lTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZShwYWdlSUQudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OndlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uKQpAQCAtMjY3NCw3ICsyNjc0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vz
c1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAgICAgbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKS0+c3RvcmFnZU1hbmFnZXIoKS5wcm9jZXNzRGlkQ2xvc2VDb25u
ZWN0aW9uKGNvbm5lY3Rpb24pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNz
U2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25J
RCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VJRHMpCit2b2lkIE5l
dHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxQYWdl
SWRlbnRpZmllcj4mIHBhZ2VJRHMpCiB7CiAgICAgYXV0byBjb25uZWN0aW9uSUQgPSBjb25uZWN0
aW9uLnVuaXF1ZUlEKCk7CiAgICAgQVNTRVJUKG1fc2Vzc2lvbkJ5Q29ubmVjdGlvbi5jb250YWlu
cyhjb25uZWN0aW9uSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAppbmRleCA3YWNiM2Y5Njc1Yy4uZWJmM2I3ZmU2NTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTQxLDYgKzQxLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCU2VydmVyLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMuaD4KQEAgLTEzNiw4ICsxMzcsNiBA
QCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsK
LSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0
X3Q7CiAKICAgICBOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9jZXNzSW5pdGlhbGl6YXRpb25Q
YXJhbWV0ZXJzJiYpOwpAQCAtMTkwLDkgKzE4OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc3Vt
ZSgpOwogCiAgICAgLy8gRGlhZ25vc3RpYyBtZXNzYWdlcyBsb2dnaW5nLgotICAgIHZvaWQgbG9n
RGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0g
ICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3Qgd2ViUGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsK
LSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3Vi
bGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRU
eXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWdu
aWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAKICNpZiBQTEFURk9STShD
T0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0
YSgpIGNvbnN0OwpAQCAtMjU4LDcgKzI1Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZEZyb21Eb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFibGVEb21haW5zV2l0
aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwg
Ym9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVn
aXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRX
aXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNvbW1pdHRl
ZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9y
VGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICNl
bmRpZgpAQCAtMjcxLDEwICsyNzAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2Vzc2lvbklz
Q29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCwgYm9vbCk7CiAgICAgYm9vbCBz
ZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKIAot
ICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklE
LCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCk7Ci0gICAgdm9pZCB3ZWJQYWdl
V2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vz
c2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCB3ZWJQcm9jZXNzV2Fz
RGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
dWludDY0X3Q+Jik7CisgICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25u
ZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4mKTsKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQ5ZmVlMDc4ZmU3Li5mNWVmNTMwMTM0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
Lm1lc3NhZ2VzLmluCkBAIC0xMzEsNyArMTMxLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiByZWRpcmVjdGVkVG9Eb21haW4pIC0+
ICgpIEFzeW5jCiAgICAgU2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVkaXJlY3RlZEZyb21Eb21haW4pIC0+ICgpIEFz
eW5jCiAgICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0gICAgQ29tbWl0dGVkQ3Jvc3NTaXRlTG9h
ZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIGZyb21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRv
RG9tYWluLCB1aW50NjRfdCBwYWdlSUQpIC0+ICgpIEFzeW5jCisgICAgQ29tbWl0dGVkQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZyb21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRvRG9tYWluLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+ICgpIEFzeW5j
CiAgICAgU2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWlu
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbikgLT4gKCkgQXN5bmMKICAgICBS
ZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgRGVsZXRlQ29va2llc0ZvclRlc3Rpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21h
aW4sIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcykgLT4gKCkgQXN5bmMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAKaW5kZXggNThhYWNiOTkzZGIuLjMzY2RjNGQxN2RiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzLmNwcApAQCAtMTA3LDggKzEwNywxMSBAQCBib29sIE5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3Jr
UmVzb3VyYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53ZWJQ
YWdlSUQpKQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiB3ZWJQYWdlSUQ7CisgICAgZGVj
b2RlciA+PiB3ZWJQYWdlSUQ7CisgICAgaWYgKCF3ZWJQYWdlSUQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICByZXN1bHQud2ViUGFnZUlEID0gKndlYlBhZ2VJRDsKIAogICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LndlYkZyYW1lSUQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggZmUyNjUzNmYyMWMuLmY0Y2JhZTJkYWJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC0xNzQsMTggKzE3NCwxOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQog
ICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3Jp
Z2luYWxSZXF1ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAg
ICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwKICAgICAgICAgICAgICAgICBbdGhpc10gKFJlc291
cmNlRXJyb3ImIGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0YXJ0OiBlcnJvciBjaGVja2luZyAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkLCBlcnJvci5kb21haW4g
PSAle3B1YmxpY31zLCBlcnJvci5jb2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5p
c01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJl
bnRQSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsK
KyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IGVycm9y
IGNoZWNraW5nIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25v
dXMgPSAlZCwgcGFyZW50UElEID0gJWQsIGVycm9yLmRvbWFpbiA9ICV7cHVibGljfXMsIGVycm9y
LmNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVz
b3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElELCBl
cnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICghZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAgICAgICAg
ICAgICAgICAgIHRoaXMtPmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKICAgICAgICAgICAgICAgICB9
LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoTmV0d29ya0xvYWRDaGVja2VyOjpSZWRpcmVjdGlv
blRyaXBsZXQmIHRyaXBsZXQpIHsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+bV9pc1dhaXRp
bmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAg
ICAgICAgICAgICAgICAgdGhpcy0+d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRy
aXBsZXQucmVxdWVzdCksIFdURk1vdmUodHJpcGxldC5yZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3Zl
KHRyaXBsZXQucmVkaXJlY3RSZXNwb25zZSkpOwotICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJzdGFydDogc3ludGhldGljIHJlZGlyZWN0IHNlbnQgYmVjYXVzZSBy
ZXF1ZXN0IFVSTCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAl
ZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0
ZXJzLnBhcmVudFBJRCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInN0YXJ0OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2VudCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdh
cyBtb2RpZmllZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0
aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVy
cy5wYXJlbnRQSUQpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgW3RoaXNd
IChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRo
aXMtPmNhblVzZUNhY2hlKHJlcXVlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFy
ZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0
aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNh
Y2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFy
YW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+cmV0cmll
dmVDYWNoZUVudHJ5KHJlcXVlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgICAgICAgICB9CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGF0IGNv
ZGUgcGF0aCBvbmNlIG1fbmV0d29ya0xvYWRDaGVja2VyIGlzIHVzZWQgZm9yIGFsbCBuZXR3b3Jr
IGxvYWRzLgogICAgIGlmIChjYW5Vc2VDYWNoZShvcmlnaW5hbFJlcXVlc3QoKSkpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNv
dXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwg
aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVu
dFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICByZXRy
aWV2ZUNhY2hlRW50cnkob3JpZ2luYWxSZXF1ZXN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMjI3LDEzICsyMjcsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJp
ZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIGxv
YWRlci0+bG9nU2xvd0NhY2hlUmV0cmlldmVJZk5lZWRlZChpbmZvKTsKIAogICAgICAgICBpZiAo
IWVudHJ5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNh
Y2hlRW50cnk6IFJlc291cmNlIG5vdCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNv
dXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5S
ZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkp
OwogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVxdWVzdCks
IEZpcnN0TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChlbnRyeS0+aGFzUmVh
Y2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJl
dmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAl
ZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2Uo
KSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291
cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJv
bm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2Fw
VmFsaWRhdGlvbiA9IFdURk1vdmUoZW50cnkpOwogICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJldmFsaWRhdGlvblJlcXVlc3QgPSBvcmlnaW5hbFJlcXVlc3QoKTsKICAgICAgICAgICAgIGxv
YWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBGaXJz
dExvYWQ6Olllcyk7CkBAIC0yNDEsMjEgKzI0MSwyMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkK
ICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGlmIChlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkp
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRy
eTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwg
aXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwg
aXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJl
dHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWlu
UmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAg
bG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV1RGTW92ZShyZXF1
ZXN0KSwgV1RGTW92ZShlbnRyeSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChsb2FkZXItPm1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAh
ZW50cnktPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkpIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBub3Qg
aGF2ZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9
ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJj
ZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNl
cnRpZmljYXRlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25v
dXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwg
aXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChX
VEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKGVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSB8fCByZXF1ZXN0
LmNhY2hlUG9saWN5KCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJl
ZnJlc2hBbnlDYWNoZURhdGEpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InJldHJpZXZlQ2FjaGVFbnRyeTogVmFsaWRhdGluZyBjYWNoZSBlbnRyeSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hl
IGVudHJ5IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNT
eW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdU
Rk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJldHJpZXZlZCByZXNv
dXJjZSBmcm9tIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3lu
Y2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2Fj
aGVFbnRyeTogUmV0cmlldmVkIHJlc291cmNlIGZyb20gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNN
YWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICBs
b2FkZXItPmRpZFJldHJpZXZlQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgfSk7CiB9
CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZl
Q2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGaXJzdExvYWQgbG9hZCkKIHsKICAgICBpZiAobG9hZCA9PSBGaXJzdExvYWQ6Olllcykgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAKICAgICAg
ICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBGaXJzdExvYQogICAgIH0KICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKSB7CiAg
ICAgICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdp
dGggYSBzZXNzaW9uIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCBwYXJh
bWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3
b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFt
ZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vz
c2lvbklELnNlc3Npb25JRCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RCgic3RhcnROZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdp
dGggYSBzZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklE
PSUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNl
c3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nl
c3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBXZWJDb3Jl
OjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lvbklES2V5KCksIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZTo6Tm8pOwogICAgICAgICBkaWRGYWlsTG9hZGluZyhpbnRlcm5hbEVycm9yKHJlcXVl
c3QudXJsKCkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIEZpcnN0TG9hCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0
KTsKICAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRo
aXMsICZtX2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAq
bmV0d29ya1Nlc3Npb24pOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3
b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQpAQCAt
MzIyLDcgKzMyMiw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRS
ZXN1bHQgcmVzdWx0KQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93
bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIFJFTEVBU0VfTE9H
KExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9h
ZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJ
RCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9w
YXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0
aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRl
cnMuaWRlbnRpZmllcik7CiAgICAgCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSByZXNv
dXJjZSBjYW1lIGZyb20gdGhlIGRpc2sgY2FjaGUuCiAgICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7
CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkK
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiYWJvcnQ6IENhbmNlbGluZyByZXNvdXJjZSBsb2FkIChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAg
ICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIpOwogCiAgICAgaWYgKG1fcGFyYW1ldGVycy5vcHRpb25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3Bv
bnNlLmlzTnVsbCgpICYmICFtX2lzS2VwdEFsaXZlKSB7CiAgICAgICAgIG1faXNLZXB0QWxpdmUg
PSB0cnVlOwpAQCAtMzg0LDEyICszODQsMTIgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnN0IFN0cmluZyYgeEYKICAg
ICB9CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zQ29uZmxpY3Q6IHsKICAgICAgICAgU3RyaW5nIGVy
cm9yTWVzc2FnZSA9ICJNdWx0aXBsZSAnWC1GcmFtZS1PcHRpb25zJyBoZWFkZXJzIHdpdGggY29u
ZmxpY3RpbmcgdmFsdWVzICgnIiArIHhGcmFtZU9wdGlvbnMgKyAiJykgZW5jb3VudGVyZWQgd2hl
biBsb2FkaW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicu
IEZhbGxpbmcgYmFjayB0byAnREVOWScuIjsKLSAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VT
b3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIo
KSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3Nh
Z2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZp
ZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zSW52YWxpZDogewogICAgICAg
ICBTdHJpbmcgZXJyb3JNZXNzYWdlID0gIkludmFsaWQgJ1gtRnJhbWUtT3B0aW9ucycgaGVhZGVy
IGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgoKSArICInOiAnIiArIHhGcmFtZU9wdGlvbnMgKyAiJyBpcyBub3QgYSByZWNvZ25p
emVkIGRpcmVjdGl2ZS4gVGhlIGhlYWRlciB3aWxsIGJlIGlnbm9yZWQuIjsKLSAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1l
c3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJv
ck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0
KCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIH0KQEAgLTQxNiw3ICs0MTYs
NyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNT
UEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwogICAgICAgICBTdHJpbmcgeEZyYW1lT3B0aW9u
cyA9IG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpYRnJhbWVPcHRp
b25zKTsKICAgICAgICAgaWYgKCF4RnJhbWVPcHRpb25zLmlzTnVsbCgpICYmIHNob3VsZEludGVy
cnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKHhGcmFtZU9wdGlvbnMsIHJlc3BvbnNlLnVybCgpKSkg
ewogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGRpc3BsYXkg
JyIgKyByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICIn
IGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyB4RnJh
bWVPcHRpb25zICsgIicuIjsKLSAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNl
OjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVy
KCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAg
TWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2Fn
ZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KQEAgLTQyNSw3ICs0MjUs
NyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvckNT
UEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3BvbnNl
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBodHRwU3RhdHVzQ29kZSA9ICVkLCBsZW5ndGggPSAlIiBQUklkNjQgIikiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNwb25z
ZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBodHRwU3RhdHVzQ29kZSA9ICVkLCBs
ZW5ndGggPSAlIiBQUklkNjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcmVjZWl2
ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpKTsKIAogICAgIG1fcmVzcG9uc2UgPSBXVEZNb3ZlKHJlY2VpdmVkUmVzcG9u
c2UpOwogCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb24KIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+
JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0aCkKIHsKICAgICBpZiAoIW1f
bnVtQnl0ZXNSZWNlaXZlZCkKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVj
ZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVC
dWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllcik7CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGJ1ZmZlci0+c2l6
ZSgpOwogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxpZGF0aW9uKTsKQEAgLTUzNCw3
ICs1MzQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMb2FkTWV0cmljcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hM
b2FkaW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGggPSAlemQpIiwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBt
X251bUJ5dGVzUmVjZWl2ZWQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlz
aExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllciwgbV9udW1CeXRlc1JlY2VpdmVkKTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5hZGROZXR3
b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyhpZGVudGlmaWVyKCksIG5ldHdvcmtMb2FkTWV0cmlj
cyk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZp
bmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxMb2FkaW5nOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgaXNBY2Nl
c3NDb250cm9sID0gJWQsIGVyckNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGVycm9yLmlz
VGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5pc0FjY2Vzc0NvbnRyb2wo
KSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZh
aWxMb2FkaW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxsYXRpb24g
PSAlZCwgaXNBY2Nlc3NDb250cm9sID0gJWQsIGVyckNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRl
cnMuaWRlbnRpZmllciwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCks
IGVycm9yLmlzQWNjZXNzQ29udHJvbCgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBpZiAo
c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpCiAgICAgICAgIG1fY29ubmVj
dGlvbi0+cmVtb3ZlTmV0d29ya0xvYWRJbmZvcm1hdGlvbihpZGVudGlmaWVyKCkpOwpAQCAtNzMx
LDcgKzczMSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5k
UmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVdpbGxTZW5kUmVxdWVzdDogKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyKTsKIAogICAgIG1faXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlh
bHMgPSBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsKIApAQCAtOTg4LDYgKzk4OCwx
MSBAQCBzdGF0aWMgU3RyaW5nIGVzY2FwZUlERm9ySlNPTihjb25zdCBPcHRpb25hbDx1aW50NjRf
dD4mIHZhbHVlKQogICAgIHJldHVybiB2YWx1ZSA/IFN0cmluZzo6bnVtYmVyKHZhbHVlLnZhbHVl
KCkpIDogU3RyaW5nKCJOb25lIl9zKTsKIH07CiAKK3N0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JK
U09OKGNvbnN0IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYgdmFsdWUpCit7CisgICAgcmV0dXJu
IHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUtPnRvVUludDY0KCkpIDogU3RyaW5nKCJOb25l
Il9zKTsKK307CisKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1h
dGlvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKG1f
Y29ubmVjdGlvbiwgc2Vzc2lvbklEKCkpKTsKQEAgLTk5OCw3ICsxMDAzLDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKICAgICBsb2dD
b29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3JrUmVzb3VyY2VMb2FkZXIiLCBy
ZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZv
OjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJlcXVlc3QoKS51cmwoKSwgb3Jp
Z2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQoKSwgcGFnZUlEKCksIGlkZW50
aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3N0YXRpYyB2
b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2Vk
T2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBP
cHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApAQCAtMTAyNSw3ICsxMDMwLDcgQEAgc3Rh
dGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiBjb25uZWN0aW8KICN1bmRlZiBMT0NBTF9MT0dfSUZfQUxMT1dFRAogfQogCi1z
dGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lk
KiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9n
Q29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYg
Y29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0
LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3
b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApAQCAtMTA4Niw3ICsxMDkxLDcgQEAg
c3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGkKICN1bmRlZiBMT0NBTF9MT0dfSUZfQUxMT1dFRAogfQog
Ci12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWws
IGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVy
cmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCit2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVj
dCwgY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9u
KGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0x
MDk5LDE3ICsxMTA0LDE3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJ
bmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYKIAogdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2UgbWVzc2FnZVNv
dXJjZSwgTWVzc2FnZUxldmVsIG1lc3NhZ2VMZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCB1
bnNpZ25lZCBsb25nKQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVN
ZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBtZXNzYWdlU291cmNlLCBtZXNzYWdl
TGV2ZWwsIG1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCAgbWVzc2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCBp
ZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKIH0KIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNlbmRDU1BWaW9sYXRpb25SZXBvcnQoVVJMJiYg
cmVwb3J0VVJMLCBSZWY8Rm9ybURhdGE+JiYgcmVwb3J0KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNlbmRDU1BWaW9sYXRpb25SZXBvcnQgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgV1RGTW92ZShyZXBvcnRVUkwpLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgV1RGTW92ZShy
ZXBvcnQpIH0gfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2VuZENTUFZpb2xhdGlvblJlcG9ydCB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBXVEZNb3ZlKHJlcG9ydFVSTCksIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZNb3ZlKHJl
cG9ydCkgfSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogfQogCiB2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZl
bnQoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudDo6SW5pdCYmIGV2ZW50SW5p
dCkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbnF1ZXVlU2VjdXJpdHlQb2xpY3lW
aW9sYXRpb25FdmVudCB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBXVEZNb3ZlKGV2ZW50SW5p
dCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RW5xdWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQgeyBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgV1RGTW92ZShldmVudEluaXQpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dTbG93Q2FjaGVS
ZXRyaWV2ZUlmTmVlZGVkKGNvbnN0IE5ldHdvcmtDYWNoZTo6Q2FjaGU6OlJldHJpZXZlSW5mbyYg
aW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNv
dXJjZUxvYWRlci5oCmluZGV4IGE4YTMwMDVjMTQyLi5hOGY2ZDMxNTc5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCkBA
IC04NCw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuc2Vzc2lvbklEOyB9CiAgICAgUmVzb3VyY2VMb2Fk
SWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXI7IH0KICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQ7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhcmFtZXRlcnMud2ViUGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRDsgfQogCiAgICAgc3Ry
dWN0IFN5bmNocm9ub3VzTG9hZERhdGE7CiAKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKSAmJiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBzdGF0aWMgYm9vbCBzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7Ci0gICAgc3Rh
dGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgdm9pZCBs
b2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+LCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CiAjZW5kaWYKIAogICAgIHZvaWQg
ZGlzYWJsZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzQ2FwdHVyZSgpIHsgbV9zaG91bGRDYXB0dXJl
RXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggYzdmMzg2YjNkN2MuLjhi
YmMxNjk3ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVF
bnRyeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJTaGFy
ZWFibGVSZXNvdXJjZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC04NCw3ICs4NSw3
IEBAIGVudW0gY2xhc3MgVXNlRGVjaXNpb24gewogICAgIE5vRHVlVG9FeHBpcmVkUmVkaXJlY3QK
IH07CiAKLXVzaW5nIEdsb2JhbEZyYW1lSUQgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyp3ZWJQYWdl
SUQqLywgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+OwordXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0
ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+
OwogCiBjbGFzcyBDYWNoZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlPiB7CiBwdWJsaWM6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLmgKaW5kZXggOTY1YzZmYTY2NGIuLjJkZDBlN2Q0NmJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRh
c2tDb2NvYS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CiBj
bGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sg
ewogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24s
IE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29y
ZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNv
cmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNv
bnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBi
b29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RP
bmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZp
Z2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlU
cmFja2VyKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwgY2xpZW50LCBy
ZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRD
b250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwgZGF0YVRhc2tJ
c0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpKTsKICAgICB9
CkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0
cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3M7
IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSUQ7IH07
Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH07CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7
IH07CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0
ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRh
VGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ks
IFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5n
U25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRp
cmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRp
b24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3b3JrRGF0YVRh
c2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29u
dGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25u
ZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8
TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOwogCiAgICAgYm9vbCB0cnlQYXNzd29yZEJhc2VkQXV0
aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTbmlmZmluZ1BvbGljaWVz
QW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9fc3Ryb25nIE5TVVJMUmVxdWVzdCom
LCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlm
Zik7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lv
bkRhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0
d29ya0xvYWRNZXRyaWNzOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKLSAgICB1aW50NjRfdCBt
X3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYm9vbCBtX2hhc0JlZW5TZXRUb1Vz
ZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5k
ZXggMzVlNDQzYjllZTkuLjI4YTA1ZTgwZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTE2
MCw3ICsxNjAsNyBAQCBzdGF0aWMgdm9pZCB1cGRhdGVUYXNrV2l0aEZpcnN0UGFydHlGb3JTYW1l
U2l0ZUNvb2tpZXMoTlNVUkxTZXNzaW9uRGF0YVRhc2sqIHRhcwogI2VuZGlmCiB9CiAKLU5ldHdv
cmtEYXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vz
c2lvbiwgTmV0d29ya0RhdGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRl
bnRTbmlmZiwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudEVuY29kaW5nU25pZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBS
ZWRpcmVjdCwgUHJlY29ubmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRh
c2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNr
ZXI+IG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29y
a0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0Ns
aWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRo
Q3JlZGVudGlhbHMsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYs
IFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNv
ZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qs
IFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JN
YWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3
b3JrQWN0aXZpdHlUcmFja2VyKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVu
dCwgcmVxdWVzdFdpdGhDcmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNGb3JNYWluRnJh
bWVOYXZpZ2F0aW9uKQogICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX3BhZ2VJRChw
YWdlSUQpCkBAIC0yMzYsNyArMjM2LDcgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtE
YXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICBp
ZiAoc2hvdWxkQmxvY2tDb29raWVzKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
ICAgIGlmIChtX3Nlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywg
IiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQg
PSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiBCbG9ja2luZyBjb29raWVzIGZv
ciBVUkwgJXMiLCB0aGlzLCBwYWdlSUQsIGZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sg
dGFza0lkZW50aWZpZXJdLCBuc1JlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcp
OworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlv
bjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogQmxvY2tpbmcg
Y29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsICh1
bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBuc1JlcXVlc3QuVVJMLmFic29s
dXRlU3RyaW5nLlVURjhTdHJpbmcpOwogI2Vsc2UKICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9u
LCAiJWxsdSBCbG9ja2luZyBjb29raWVzIGZvciBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlm
aWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbmRpZgpA
QCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3Jt
SFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgYm9vbCBzaG91
bGRCbG9ja0Nvb2tpZXMgPSBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzIHx8IG1f
c2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkuc2hvdWxkQmxvY2tDb29raWVzKHJlcXVl
c3QsIG1fZnJhbWVJRCwgbV9wYWdlSUQpOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IGlmIChtX3Nlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgIFJF
TEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tp
ZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1
OiAlcyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRCwgbV9mcmFt
ZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2Nr
Q29va2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAl
bGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiAlcyBjb29raWVzIGZvciByZWRpcmVj
dCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25l
ZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCAoc2hvdWxkQmxvY2tDb29raWVzID8gIkJs
b2NraW5nIiA6ICJOb3QgYmxvY2tpbmciKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKICNlbHNlCiAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSAlcyBjb29raWVz
IGZvciByZWRpcmVjdCBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJs
b2NrQ29va2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5kaWYKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lk
IE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJgogICAgIGlmICghc2hvdWxkQmxvY2tDb29raWVzKSB7CiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIGlmIChtX3Nlc3Npb24tPnNob3VsZExvZ0Nv
b2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0g
JWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogTm90IHBhcnRpdGlvbmluZyBjb29r
aWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRCwgbV9mcmFtZUlELCAodW5z
aWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25M
b2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2ls
bFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAl
bGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiBOb3QgcGFydGl0aW9uaW5nIGNvb2tp
ZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIsIHRoaXMsIG1fcGFnZUlELnRvVUludDY0KCksIG1fZnJh
bWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgICAgICBMT0coTmV0d29ya1Nl
c3Npb24sICIlbGx1IE5vdCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVz
IiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBD
L01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5k
ZXIuaAppbmRleCBkNWY5ODFlNDUzNC4uZjg2NDU0ZGRhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTM0LDkgKzM0LDkgQEAgY2xhc3MgTWVzc2Fn
ZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVzc2FnZVNlbmRlcigpOwogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UpCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9wdGlvblNldDxT
ZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzZW5k
KG1lc3NhZ2UsIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCksIHsgfSk7CisgICAgICAgIHJl
dHVybiBzZW5kKG1lc3NhZ2UsIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCksIHNlbmRPcHRp
b25zKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmQoY29uc3Qg
VSYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+
IHNlbmRPcHRpb25zID0geyB9KQpAQCAtNjUsOCArNjUsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25z
KTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgot
ICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEFyZ3MuLi4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIEM+CisgICAgdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3Nh
Z2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAgIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBi
L1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNTI1MTQ5MDJh
YmIuLjViOTc1MzAzMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0
L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHkKQEAgLTIwNSw2ICsyMDUsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRl
cnMocmVjZWl2ZXIpOgogICAgICAgICAnU3RyaW5nJywKICAgICAgICAgJ1dlYkNvcmU6OkRvY3Vt
ZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAorICAg
ICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRl
cklEJywKICAgICAgICAgJ1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJywKICAgICAgICAgJ1dl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElQYWdlSGFuZGxlLmNwcAppbmRleCBhNmEwMDk5NTUwMC4uZTYwNWE0NTk0NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAKQEAgLTMxLDE3ICszMSwx
NyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNy
ZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsKIH0KIAotUmVmPFBhZ2VIYW5kbGU+IFBh
Z2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxQYWdl
SGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUhhbmRsZShw
YWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6UGFnZUhhbmRsZSh1aW50NjRfdCBwYWdl
SUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VIYW5kbGU6OlBhZ2VIYW5kbGUoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlzQXV0b2NvbnZlcnRpbmcpCiAgICAgOiBt
X3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2NvbnZlcnRpbmcoaXNBdXRvY29udmVydGlu
ZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBhZ2VIYW5kbGU6OmVuY29kZShJUEM6OkVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFnZUhhbmRsZTo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAgICB1aW50NjRfdCBw
YWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQorICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgZGVjb2RlciA+PiBwYWdlSUQ7Cisg
ICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaXNBdXRv
Y29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQXV0b2NvbnZlcnRpbmcpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBpc0F1dG9jb252ZXJ0aW5nID8g
Y3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNyZWF0ZShwYWdlSUQpOworICAgIHJlc3Vs
dCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRvY29udmVydGluZygqcGFnZUlEKSA6IGNy
ZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFmYmRjMzEuLjdkN2FkYzY4OWU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgQVBJUGFnZUhhbmRsZV9oCiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBu
YW1lc3BhY2UgSVBDIHsKQEAgLTM4LDIwICszOSwyMCBAQCBuYW1lc3BhY2UgQVBJIHsKIAogY2xh
c3MgUGFnZUhhbmRsZSA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUhhbmRs
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlKHVpbnQ2NF90
IHBhZ2VJRCk7Ci0gICAgc3RhdGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGlu
Zyh1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNyZWF0
ZUF1dG9jb252ZXJ0aW5nKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5Q
YWdlSGFuZGxlKCk7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZUlEOyB9CiAgICAgYm9vbCBpc0F1dG9jb252ZXJ0aW5nKCkgY29uc3QgeyByZXR1
cm4gbV9pc0F1dG9jb252ZXJ0aW5nOyB9CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXIm
KSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgUmVmUHRyPE9i
amVjdD4mKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQYWdlSGFuZGxlKHVpbnQ2NF90IHBh
Z2VJRCwgYm9vbCBpc0F1dG9jb252ZXJ0aW5nKTsKKyAgICBleHBsaWNpdCBQYWdlSGFuZGxlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBib29sIGlzQXV0b2NvbnZlcnRpbmcpOwogCi0gICAgY29u
c3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9wYWdlSUQ7CiAgICAgY29uc3QgYm9vbCBtX2lzQXV0b2NvbnZlcnRpbmc7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0
cnkubW0KaW5kZXggMWNiOWU2YzdkNDEuLmZlNWI5Mzg3MWU2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCkBAIC00
NCw3ICs0NCw3IEBAIFJlbW90ZU9iamVjdFJlZ2lzdHJ5OjpSZW1vdGVPYmplY3RSZWdpc3RyeShf
V0tSZW1vdGVPYmplY3RSZWdpc3RyeSAqcmVtb3RlT2JqZWN0CiAgICAgLCBtX21lc3NhZ2VTZW5k
ZXIocGFnZSkKICAgICAsIG1fdGFrZUJhY2tncm91bmRBY3Rpdml0eVRva2VuKFtdIHsgcmV0dXJu
IFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRva2VuKCk7IH0pCiAgICAgLCBt
X2lzUmVnaXN0ZXJlZEFzTWVzc2FnZVJlY2VpdmVyKHRydWUpCi0gICAgLCBtX21lc3NhZ2VSZWNl
aXZlcklEKHBhZ2UucGFnZUlEKCkpCisgICAgLCBtX21lc3NhZ2VSZWNlaXZlcklEKHBhZ2UucGFn
ZUlEKCkudG9VSW50NjQoKSkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZU9iamVjdFJlZ2lzdHJ5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIG1fbWVzc2FnZVJlY2VpdmVySUQsICp0aGlzKTsKICAgICBwYWdlLnNldFJlbW90
ZU9iamVjdFJlZ2lzdHJ5KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQppbmRleCA1OGNiMWRkMmI1
ZS4uN2U5N2YxNzZjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2Nv
YS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAog
QGltcGxlbWVudGF0aW9uIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlCiAKLS0gKGlkKV9pbml0V2l0
aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECistIChpZClfaW5pdFdpdGhQYWdlSUQ6KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKXBhZ2VJRAogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDAsNyArNDAsNyBAQCAtIChpZClfaW5pdFdpdGhQ
YWdlSUQ6KHVpbnQ2NF90KXBhZ2VJRAogCiAtIChOU1VJbnRlZ2VyKWhhc2gKIHsKLSAgICByZXR1
cm4gX3BhZ2VJRDsKKyAgICByZXR1cm4gX3BhZ2VJRC50b1VJbnQ2NCgpOwogfQogCiAtIChCT09M
KWlzRXF1YWw6KGlkKW9iamVjdApAQCAtNTMsNyArNTMsNyBAQCAtIChCT09MKWlzRXF1YWw6KGlk
KW9iamVjdAogCiAtICh2b2lkKWVuY29kZVdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiB7Ci0g
ICAgW2NvZGVyIGVuY29kZUludDY0Ol9wYWdlSUQgZm9yS2V5OkAicGFnZUlEIl07CisgICAgW2Nv
ZGVyIGVuY29kZUludDY0Ol9wYWdlSUQudG9VSW50NjQoKSBmb3JLZXk6QCJwYWdlSUQiXTsKIH0K
IAogLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCkBAIC02MSw3ICs2MSw3IEBA
IC0gKGlkKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2RlcgogICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgX3BhZ2VJRCA9IFtjb2Rl
ciBkZWNvZGVJbnQ2NEZvcktleTpAInBhZ2VJRCJdOworICAgIF9wYWdlSUQgPSBtYWtlT2JqZWN0
SWRlbnRpZmllcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllclR5cGU+KFtjb2RlciBkZWNvZGVJbnQ2
NEZvcktleTpAInBhZ2VJRCJdKTsKIAogICAgIHJldHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50
ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4
dEhhbmRsZUludGVybmFsLmgKaW5kZXggMmE5ZTY0NjI4MWEuLjQzZTQxZTI0Y2QzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5k
bGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKQEAgLTI0LDExICsyNCwxMiBAQAogICovCiAKICNp
bXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlLmgiCisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VJ
ZGVudGlmaWVyLmg+CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgKCkKIAot
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXIgPSBfcGFnZUlEKSB1aW50NjRf
dCBwYWdlSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1fcGFnZUlE
KSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAKLS0gKGlkKV9pbml0V2l0aFBhZ2VJ
RDoodWludDY0X3QpcGFnZUlEOworLSAoaWQpX2luaXRXaXRoUGFnZUlEOihXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcilwYWdlSUQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRleCBl
YjhhMGI2NjE3YS4uZDRlMWMyNTAwODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTY2
LDcgKzY2LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogCiB1aW50NjRfdCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAg
IHJldHVybiAqbV9kZXN0aW5hdGlvbklEOworICAgIHJldHVybiBtX2Rlc3RpbmF0aW9uSUQtPnRv
VUludDY0KCk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmNhbk1ha2VQ
YXltZW50cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIHJlcGx5KQpAQCAtODQsNyAr
ODQsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpvcGVuUGF5bWVudFNldHVw
KGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaQogICAgIHBsYXRmb3JtT3BlblBheW1lbnRT
ZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFpbk5hbWUsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1l
bnRVSSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBs
aW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQ
YXltZW50VUkoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8mIGNv
b3JkaW5hdG9yID0gYWN0aXZlUGF5bWVudENvb3JkaW5hdG9yUHJveHkoKSkKICAgICAgICAgY29v
cmRpbmF0b3ItPmRpZENhbmNlbFBheW1lbnRTZXNzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApp
bmRleCBkMjM3ZWFiM2RhYi4uNmU0YTg1Y2YyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BheW1lbnRIZWFkZXJzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvUmV0YWluUHRyLmg+CkBAIC0xMTUsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNh
bk1ha2VQYXltZW50cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lk
IGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5hbWUsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29u
c3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBzaG93UGF5bWVudFVJ
KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJp
bmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgc2hvd1BheW1lbnRVSShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJ
Y29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGNvbXBsZXRl
TWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24m
KTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CiAgICAgdm9pZCBjb21wbGV0ZVNo
aXBwaW5nQ29udGFjdFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0Nv
bnRhY3RVcGRhdGU+Jik7CkBAIC0xNDcsNyArMTQ4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAg
ICAgQ2xpZW50JiBtX2NsaWVudDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gbV9kZXN0aW5hdGlv
bklEOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX2Rlc3RpbmF0aW9u
SUQ7CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgLy8gSWRsZSAtIE5vdGhpbmcn
cyBoYXBwZW5pbmcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IGRkMzEzMTI3YmY0Li4xZGU0Y2RkY2U0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKFN0cmluZyBt
ZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQpIC0+IChib29sIGNhbk1ha2VQYXltZW50cykgQXN5bmMKICAgICBPcGVuUGF5bWVudFNl
dHVwKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lKSAtPiAoYm9v
bCByZXN1bHQpIEFzeW5jCiAKLSAgICBTaG93UGF5bWVudFVJKHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5n
LCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNo
cm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5h
dGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0
cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdzLCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkgLT4gKGJvb2wgcmVzdWx0KSBT
eW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKFdlYkNvcmU6OlBheW1l
bnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKICAgICBDb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBk
YXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9u
YWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRhdGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyLmNwcAppbmRleCA2ZWIzMzVmMDdkMy4uOWRlYjc2ZmYxMzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcApAQCAtNzUsNyArNzUsNyBAQCB1aW50NjRfdCBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKENoYWxsZW5nZSYmIGNoYWxsZW5nZQog
ICAgIHJldHVybiBjaGFsbGVuZ2VJRDsKIH0KIAotYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6
OnNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2hhbGxl
bmdlSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0Citi
b29sIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6c2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgY29uc3QKIHsKICAgICBpZiAoIWNhbkNvYWxlc2NlQ2hh
bGxlbmdlKGNoYWxsZW5nZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEwOCw3ICsxMDgs
NyBAQCBWZWN0b3I8dWludDY0X3Q+IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6Y29hbGVzY2VDaGFs
bGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbAogICAgIHJldHVybiBjaGFsbGVuZ2VzVG9Db2Fs
ZXNjZTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGlj
YXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVy
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKHBhZ2VJRCk7CiAgICAgQVNTRVJU
KGZyYW1lSUQpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1CiAK
IHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHVpbnQ2NF90IGR1bW15
UGFnZUlEID0gMDsKKyAgICBQYWdlSWRlbnRpZmllciBkdW1teVBhZ2VJRDsKICAgICB1aW50NjRf
dCBjaGFsbGVuZ2VJRCA9IGFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKHsgZHVtbXlQYWdlSUQs
IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KTsK
ICAgICAKICAgICAvLyBDb2FsZXNjZSBjaGFsbGVuZ2VzIGluIHRoZSBzYW1lIHByb3RlY3Rpb24g
c3BhY2UgYW5kIGluIHRoZSBzYW1lIHBhZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCmluZGV4IDdm
ZTM5OWUwYjdlLi44NmU3NDRjMTA4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6
Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdm9pZCBjb21w
bGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsJiYpOwpAQCAt
NjksNyArNzAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IENoYWxsZW5nZSB7
Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEOwogICAgICAgICBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFs
bGVuZ2U7CiAgICAgICAgIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5k
bGVyOwogICAgIH07CkBAIC04Myw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAog
ICAgIHVpbnQ2NF90IGFkZENoYWxsZW5nZVRvQ2hhbGxlbmdlTWFwKENoYWxsZW5nZSYmKTsKLSAg
ICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
Y2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgY29u
c3Q7CisgICAgYm9vbCBzaG91bGRDb2FsZXNjZUNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJikgY29uc3Q7CiAKICAgICBWZWN0b3I8dWludDY0X3Q+IGNvYWxlc2NlQ2hhbGxl
bmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWxsZW5nZUlEKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCmluZGV4IDMyYjBhNDc1ZGMyLi4xOTI1M2UyYmFiNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtNjIsNiArNjIsMTgg
QEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6TWVzc2Fn
ZVJlY2VpdmVyJik7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJl
Y2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CisgICAgfQor
ICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElk
ZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAgIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOwor
ICAgIH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChib29sKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCmluZGV4IDRmNzVmZDgwNmY2Li41
NGQ0Mjc3Yjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaApAQCAt
MjksMTMgKzI5LDE0IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudElkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgVGV4dElucHV0Q29udGV4dCB7CiAgICAgV2ViQ29y
ZTo6RmxvYXRSZWN0IGJvdW5kaW5nUmVjdDsKIAotICAgIHVpbnQ2NF90IHdlYlBhZ2VJZGVudGlm
aWVyOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJZGVudGlmaWVyOwogICAg
IFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkb2N1bWVudElkZW50aWZpZXI7CiAgICAgV2Vi
Q29yZTo6RWxlbWVudElkZW50aWZpZXIgZWxlbWVudElkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKaW5kZXggOWRiYjM2YTQ1
NTMuLmQ5MDBhMTY3MzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9y
d2FyZExpc3RJdGVtLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4g
V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYm
IGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWludDY0X3QgcGFnZUlEKQorUmVmPFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSwgcGFnZUlEKSk7CiB9CiAKLVdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRM
aXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQp
CitXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKQogICAgIDogbV9pdGVtU3RhdGUoV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUpKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV9sYXN0UHJvY2Vzc0lkZW50
aWZpZXIobV9pdGVtU3RhdGUuaWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAppbmRleCA4NzJlZjE4MDk1
ZC4uYmEzNDQ4MGNkNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgU3Vz
cGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmFja0ZvcndhcmRMaXN0SXRlbT4g
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRl
KEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRp
YyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+V2ViQmFja0Zv
cndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGljIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0
ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01
NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0YXRlLmlkZW50aWZp
ZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsg
cmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIg
bGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UHJvY2Vzc0lkZW50
aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9jZXNzSWRlbnRpZmllcihjb25zdCBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBtX2xhc3RQcm9jZXNzSWRlbnRpZmll
ciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4MiwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
cHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIGV4cGxpY2l0IFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNzUG9v
bCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRlbVN0YXRlOwotICAgIHVp
bnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwog
ICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyOwog
ICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApp
bmRleCBlOWRhNjBhZWViZS4uMGNiZmQwMzQ2YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0zOTIsNyArMzkyLDcgQEAg
T3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAg
ICBwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvciA9IFdURk1vdmUoKmJhY2tncm91bmRDb2xvcik7
CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1aW50NjRfdD4+IG9sZFBhZ2VJRDsKKyAgICBPcHRp
b25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IG9sZFBhZ2VJRDsKICAgICBkZWNvZGVyID4+
IG9sZFBhZ2VJRDsKICAgICBpZiAoIW9sZFBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaAppbmRleCBjMmJlODQxNDZiMy4uOTAxMjdiYzMxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1p
bGVzdG9uZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29s
b3I+IGJhY2tncm91bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL09iakNPYmplY3RHcmFwaC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2Jq
ZWN0R3JhcGgubW0KaW5kZXggYzY1NDg0ZjU1MTIuLjcxMWEyNjE5ODc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KQEAgLTMwMiw3ICszMDIsNyBAQCBi
b29sIE9iakNPYmplY3RHcmFwaDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmV0YWlu
UHRyPGlkPiYgcmVzdWx0KQogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VJRCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmVzdWx0ID0gYWRvcHROUyhbW1dL
QnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlSUQ6cGFnZUlEXSk7Cisg
ICAgICAgIHJlc3VsdCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10g
X2luaXRXaXRoUGFnZUlEOm1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyVHlwZT4ocGFnZUlEKV0pOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGVkODYzNTgyMDFiLi41OTcwMWExMzQz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0xMjA2LDcg
KzEyMDYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VS
ZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqCiAgICAgICAgIG1pbGVzdG9uZXMuYWRk
KFdlYkNvcmU6OkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCk7CiAKICAgICBpZiAobWls
ZXN0b25lcykKLSAgICAgICAgd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSwgd2ViUGFnZVBy
b3h5LT5wYWdlSUQoKSk7CisgICAgICAgIHdlYlBhZ2VQcm94eS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSk7CiAKICAgICB3ZWJQ
YWdlUHJveHktPnNldExvYWRlckNsaWVudChXVEZNb3ZlKGxvYWRlckNsaWVudCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmNwcAppbmRleCAxMDc1NzgxYWYyYy4uMmY5Y2ZlOTQyNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBT
dHJpbmcgQXV0b21hdGlvbkNvbW1hbmRFcnJvcjo6dG9Qcm90b2NvbFN0cmluZygpCiB7CkBAIC01
MjIsNyArNTIzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRp
b25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEKICAgICB9CiB9CiAKLXZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxi
YWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQo
SGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCiB7CiAgICAgSW5zcGVjdG9yOjpFcnJvclN0cmluZyB0
aW1lb3V0RXJyb3IgPSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShUaW1lb3V0KTsK
ICAgICBmb3IgKGF1dG8gaWQgOiBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uaAppbmRleCA2NWViM2U0NmU1Yi4uZjM5YzA2MWI1NzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNs
dWRlICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CkBAIC0yMjUsNyArMjI2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2FpdEZv
ck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdlKFdlYlBhZ2VQcm94eSYsIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3ksIFNlY29uZHMsIFJlZjxJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+JiYpOwogICAgIHZvaWQgd2FpdEZv
ck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiwgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7Ci0gICAgdm9pZCByZXNw
b25kVG9QZW5kaW5nUGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
Pj4mKTsKKyAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dp
dGhUaW1lb3V0KEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOwogICAgIHZvaWQgcmVzcG9u
ZFRvUGVuZGluZ0ZyYW1lTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+
PiYpOwogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoKTsKIApAQCAtMjgwLDIyICsyODEsMjIgQEAg
cHJpdmF0ZToKICAgICBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXI+
IG1fZG9tYWluRGlzcGF0Y2hlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpBdXRv
bWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPiBtX2RvbWFpbk5vdGlmaWVyOwogCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYlBhZ2VIYW5kbGVNYXA7Ci0gICAgSGFzaE1hcDxTdHJp
bmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdlYlBhZ2VNYXA7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgU3RyaW5nPiBtX3dlYlBhZ2VIYW5kbGVNYXA7CisgICAgSGFzaE1hcDxT
dHJpbmcsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX2hhbmRsZVdlYlBhZ2VNYXA7CiAKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fd2ViRnJhbWVIYW5kbGVNYXA7CiAgICAgSGFz
aE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdlYkZyYW1lTWFwOwogCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNr
QmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNr
c1BlclBhZ2U7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJv
d3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tz
UGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJO
YXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwogICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQ
ZXJGcmFtZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93
c2luZ0NvbnRleHRDYWxsYmFja3NQZXJGcmFtZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5n
SW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
Pj4gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZTsKICNpZiBFTkFCTEUoV0VCRFJJ
VkVSX0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlv
bjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ0tleWJv
YXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVy
cm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwog
I2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElPTlMpCi0gICAgSGFz
aE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVy
cm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZTsKICNlbmRpZgogCiAgICAgdWludDY0X3QgbV9uZXh0RXZhbHVhdGVKYXZh
U2NyaXB0Q2FsbGJhY2tJRCB7IDEgfTsKQEAgLTMxOSw3ICszMjAsNyBAQCBwcml2YXRlOgogICAg
IC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciBBUElzIHRha2UgYSBzZXQgb2YgaW5wdXQgc291
cmNlcy4gV2UgYWxzbyBpbnRlcm4gdGhlc2UKICAgICAvLyBzbyB0aGF0IHByZXZpb3VzIGlucHV0
IHNvdXJjZSBzdGF0ZSBpcyB1c2VkIGFzIGluaXRpYWwgc3RhdGUgZm9yIGxhdGVyIGNvbW1hbmRz
LgogICAgIEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4gbV9pbnB1dFNvdXJjZXM7
Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1f
aW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQ
YWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMp
CiAgICAgLy8gS2VlcCB0cmFjayBvZiBjdXJyZW50bHkgYWN0aXZlIG1vZGlmaWVycyBhY3Jvc3Mg
bXVsdGlwbGUga2V5c3Ryb2tlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxp
YXJ5UHJvY2Vzc1Byb3h5LmgKaW5kZXggOTg5M2QzOThiNTcuLjg1OGE1YmVkNmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNjcs
NiArNjcsMTggQEAgcHVibGljOgogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNl
aXZlcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAg
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCkpOworICAgIH0KIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICBM
YXVuY2hpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXggZjA1ZDc5YzBkMDEuLjY3MDY1
OTc2ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC01MjcsOTQgKzUyNyw5NCBAQCB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJ
RFJlc3BvbnNlKHVpbnQ2NF90IGNvbgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
UGxheShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
UGF1c2UoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRleHRJZCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY3J1YmJpbmcodWludDY0X3Qg
Y29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNj
cnViYmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElk
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xlcmFuY2VCZWZvcmUsIGRvdWJsZSB0b2xlcmFuY2VBZnRl
cikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFm
dGVyKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwgdGltZSwgdG9sZXJhbmNl
QmVmb3JlLCB0b2xlcmFuY2VBZnRlcikpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkZhc3RTZWVr
KGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1l
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5n
Rm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nRm9yd2FyZChjb250ZXh0SWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRleHRJZCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVu
ZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElk
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdEF1ZGlvTWVk
aWFPcHRpb24oY29udGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
dWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBpY3R1cmVJ
blBpY3R1cmUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoY29udGV4dElkKSk7CiB9
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVNdXRlZCh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11
dGVkKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
c2V0TXV0ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIG11dGVkKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElk
LCBtdXRlZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElkLCBtdXRlZCkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Vm9sdW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0SWQsIHZvbHVtZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4odWludDY0X3Qg
Y29udGV4dElkLCBib29sIHZhbHVlKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0UGxheWluZ09uU2Vj
b25kU2NyZWVuKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRQbGF5aW5n
T25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKQogewogICAgIGlm
IChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVx
dWVzdChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkhhbmRs
ZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7
CiB9CiAKIFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubW0KaW5kZXggNmJhNDc5ZTA2MGEuLmM4ZDY1YzM2MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCkBAIC02MjAsNDMgKzYyMCw0MyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIAogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50
NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJl
cXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhKSk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5saW5lUmVjdChjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KGNvbnRleHRJZCkpOwog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFZpZGVvQ29udGVu
dExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvQ29udGVu
dExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVudExheWVyKGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkKSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1cEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVs
bHNjcmVlbihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsc2NyZWVu
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7
CiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRp
ZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNj
cmVlbihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwogfQog
CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRp
ZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBbQ0FUcmFuc2FjdGlv
biBmbHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmll
d107CiAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0cik7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRDbGVhbnVwRnVsbHNjcmVl
bihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJ
ZCkpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQoY29udGV4
dElkKTsKQEAgLTY4OCwyNSArNjg4LDI1IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlCiAgICAg
ICAgIG1hY2hfcG9ydF9uYW1lX3QgZmVuY2VQb3J0ID0gZmVuY2VTZW5kUmlnaHQubGVha1NlbmRS
aWdodCgpOwogI2VuZGlmCiAKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoY29udGV4dElkLCBmcmFt
ZSwgSVBDOjpBdHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKGNvbnRleHRJZCwgZnJh
bWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSkp
OwogICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVv
TGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oY29udGV4dElk
LCAodW5zaWduZWQpZ3Jhdml0eSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckdyYXZpdHlF
bnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBt
b2RlKQogewogICAgIG1fcGFnZS0+dWlDbGllbnQoKS5oYXNWaWRlb0luUGljdHVyZUluUGljdHVy
ZURpZENoYW5nZShtX3BhZ2UsIG1vZGUgJiBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2Rl
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2RlKSk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTWF5UmV0
dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNWaWV3VmlzaWJs
ZSA9IG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRl
eHRJZCwgaXNWaWV3VmlzaWJsZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXgg
ZjkxNDY4MTFjNTUuLmZjM2VmYmUyNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVy
Zm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50KSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihw
b2ludCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBP
ZkN1cnJlbnRTZWxlY3Rpb24oKQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50
U2VsZWN0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJm
b3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpKTsKIH0KICAgICAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZKQpAQCAtMjY2LDE3ICsyNjYsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlc3VtZVNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlJikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNwZWFraW5nRXJyb3JPY2N1cnJlZChXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCiB7Ci0gICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNwZWFraW5nRXJyb3JPY2N1cnJlZCgpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3BlYWtpbmdFcnJvck9jY3VycmVkKCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Ym91bmRhcnlFdmVudE9jY3VycmVkKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiwgV2ViQ29yZTo6U3BlZWNoQm91bmRhcnkg
c3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkKIHsKLSAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Qm91bmRhcnlFdmVudE9jY3VycmVkKHNwZWVjaEJvdW5kYXJ5
ID09IFdlYkNvcmU6OlNwZWVjaEJvdW5kYXJ5OjpTcGVlY2hXb3JkQm91bmRhcnksIGNoYXJJbmRl
eCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCb3VuZGFyeUV2ZW50
T2NjdXJyZWQoc3BlZWNoQm91bmRhcnkgPT0gV2ViQ29yZTo6U3BlZWNoQm91bmRhcnk6OlNwZWVj
aFdvcmRCb3VuZGFyeSwgY2hhckluZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lj
ZXNEaWRDaGFuZ2UoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpW
b2ljZXNEaWRDaGFuZ2UoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlZvaWNlc0RpZENoYW5nZSgpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRl
eCAyYWE3NDhmMDA0Zi4uMDhhM2QzMDhkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xOTk3LDEzICsxOTk3LDEzIEBAIGZsb2F0IFdlYlZp
ZXdJbXBsOjppbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHZvaWQgV2ViVmll
d0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0
ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIsIHRoaXMsIG1fcGFn
ZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93
RGlkT3JkZXJPblNjcmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1w
bCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAl
bGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJ
bnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlIH0pOwogfQogCkBAIC0yMDcxLDcgKzIwNzEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp3
aW5kb3dEaWRDaGFuZ2VMYXllckhvc3RpbmcoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dE
aWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJW
aWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSIsIHRo
aXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0lt
cGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUiLCB0aGlzLCBt
X3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCkBAIC0yMjM0
LDE5ICsyMjM0LDE5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRDaGFuZ2VCYWNraW5nUHJv
cGVydGllcygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRIaWRlKCkKIHsKLSAgICBMT0co
QWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRIaWRlIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkSGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCku
dG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdE
aWRVbmhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBh
Z2UgJWxsdSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZFVuaGlk
ZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9
CiAKIHZvaWQgV2ViVmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlkQ2hhbmdlKCkKIHsKLSAgICBMT0co
QWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNwYWNlRGlk
Q2hhbmdlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUs
ICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSBhY3RpdmVTcGFjZURpZENoYW5nZSIsIHRoaXMs
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggYjViNGUwYWQy
MjEuLmVjZjVkYTBhOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIERyYXdpbmdBcmVhUHJveHk6OkRyYXdpbmdB
cmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByCiAg
ICAgLCBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZEcmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCkKICNl
bmRpZgogewotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5n
QXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
LCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdp
bmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7
CiB9CiAKIERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAKIGJvb2wgRHJhd2luZ0Fy
ZWFQcm94eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggY2E3
Njg3ZjZiNTIuLmI5MzAxMjg1OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZQogICAgICAg
ICByZXR1cm47CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9u
RGVjaXNpb24oZ2VvbG9jYXRpb25JRCwgYWxsb3dlZCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1p
c3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBhbGxvd2VkKSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShhbGxvd2VkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmluZGV4IDYyYjA3MjlmOGE1Li4wZjQxMDIwZWE3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNw
cApAQCAtNTAsMTkgKzUwLDE5IEBAIEluc3BlY3RvclRhcmdldFByb3h5OjpJbnNwZWN0b3JUYXJn
ZXRQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGFyCiB2b2lkIEluc3Bl
Y3RvclRhcmdldFByb3h5Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBjaGFu
bmVsKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25uZWN0SW5zcGVjdG9yKGlk
ZW50aWZpZXIoKSwgY2hhbm5lbC5jb25uZWN0aW9uVHlwZSgpKSwgbV9wYWdlLnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0b3Io
aWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCYp
CiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3BhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRl
bnRpZmllcigpKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OnNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9wYWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkp
Ci0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZE1l
c3NhZ2VUb1RhcmdldEJhY2tlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRNZXNzYWdl
VG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM0NDNiMzg1ZmFjLi4yZDk5NjZlM2M4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0
dGEKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3Qg
Y2hhbGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0
X3QgY2hhbGxlbmdlSUQpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChh
dXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbV9wcm9jZXNzUG9vbC5zZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChwYWdlSUQpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5j
aGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGlj
TWVzc2FnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBs
ZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uo
cGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1c2UgYnkg
dGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkgYmUgZ29u
ZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC0zODIsNyArMzgyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWUKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZSht
ZXNzYWdlLCBkZXNjcmlwdGlvbiwgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQz
Ml90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5
IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdv
bmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzkzLDcgKzM5Myw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQobWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgc2hvdWxkU2FtcGxlKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUg
dmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJv
eHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNr
IGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFn
ZSBtYXkgYmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC03MzYs
NyArNzM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRHcmFuZGZhdGhlcmVkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXMKICAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRHcmFuZGZhdGhlcmVkKHNlc3Npb25JRCwg
cmVzb3VyY2VEb21haW4sIGlzR3JhbmRmYXRoZXJlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbmZpcm0odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25m
aXJtKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojpub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
RmluaXNoZWQodW5zaWduZWQKICAgICBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0
aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUobWVzc2FnZUJvZHkp
LnB0cigpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb21taXR0ZWRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbW1pdHRlZENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMjBhNzk5OGM0ZGMu
LjJiZWM2OGZkODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCArODEsNiBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAg
ICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdl
SUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBleHBs
aWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBAIC0xMzEsNyArMTI5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYpOwot
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJRCwgRnJhbWVJRCwgY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJt
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGlt
ZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGJvb2wg
ZGVidWdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9u
SUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFp
biYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5h
dmlnYXRlZFRvRG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYs
IGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZv
aWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRl
RGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1
ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwor
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGxvZ1Rl
c3RpbmdFdmVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGYuLjIyZmZmZDE5ODgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50
aWZpZXIpCiAKLSAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQorICAgIERpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWlu
dDY0X3QgY2hhbGxlbmdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQogICAgIERp
ZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC0zNSw5ICszNSw5IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCiAKICAgICAj
IERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZwotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAgTG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmlu
ZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1
aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJs
ZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dEaWFnbm9zdGljTWVzc2FnZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3Jp
cHRpb24sIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAg
IExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3Vs
dCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAgTG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2ln
bmVkIHNpZ25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCiAgICAgTG9nR2xvYmFsRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoU3Ry
aW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBz
aWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxk
U2FtcGxlKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTQ2LDcg
KzQ2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCkKICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5p
c2hlZCgpCiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVk
KHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVu
dFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW5zKQotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1
YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikg
LT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNj
ZXNzQ29uZmlybShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNj
ZXNzKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5z
V2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBmODc2MWIxZjNmNC4uM2YyODczMmFiNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNy
CiB7CiAgICAgYXV0byByZXF1ZXN0ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNy
ZWF0ZShbdGhpcywgbm90aWZpY2F0aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1fcGFnZSldKGJvb2wg
YWxsb3dlZCkgewogICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5vdGlmaWNhdGlvbklE
KTsKLSAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93
ZWQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9u
SUQsIGFsbG93ZWQpKTsKICAgICB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQobm90aWZp
Y2F0aW9uSUQsIHJlcXVlc3QucHRyKCkpOwogICAgIHJldHVybiByZXF1ZXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZhZTFmM2ZjYTg4Li4yYWFmZjFl
YzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdl
UHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAgIHVpbnQ2NF90IGdsb2Jh
bE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwogICAgIGF1
dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGlj
b25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklE
KTsKLSAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIg
PSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsK
KyAgICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBh
aXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklE
KTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQs
IG5vdGlmaWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRp
b25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRp
b24uY29weVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0
aW9uLmdldCgpKTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwK
ICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90LCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikK
K3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
LCBQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikK
IHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29s
IHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBh
Z2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5k
Tm90aWZpY2F0aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdl
Tm90aWZpY2F0aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBw
YWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250
YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEzICsxNDEsMTMgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNs
ZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZp
bHRlckZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBh
Z2VJRCgpOworICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CiAKICAg
ICBWZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAgICBnbG9iYWxOb3Rp
ZmljYXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUo
KSk7CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKSwgZW5kID0g
bV9ub3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgdWludDY0
X3Qgd2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAgYXV0byB3ZWJQYWdlSUQgPSBp
dC0+a2V5LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+
a2V5LnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VO
b3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFs
Tm90CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7Cisg
ICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3
ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3
ZWJQYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0
X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFs
dWUuZmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNS4uZTc4ZGFiYTZmZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQ
cm9jZXNzUG9vbCopOwogCi0gICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24pKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCB1aW50
NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5v
dGlmaWNhdGlvbklEcyk7CisgICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24pKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlm
aWNhdGlvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
cGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pOwogCiAgICAg
Ly8gV2ViQ29udGV4dFN1cHBsZW1lbnQKQEAgLTg4LDkgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwog
ICAgIC8vIFBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFuZCB0aGUgd2ViIHByb2Nlc3Mn
cyBub3RpZmljYXRpb24gSUQKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8dWludDY0
X3QsIHVpbnQ2NF90Pj4gbV9nbG9iYWxOb3RpZmljYXRpb25NYXA7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4+IG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwOwogICAgIC8vIEtleSBwYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFn
ZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElEOyB2YWx1ZSBwYWlyIGNv
bXByaXNlZCBvZiBnbG9iYWwgbm90aWZpY2F0aW9uIElELCBhbmQgbm90aWZpY2F0aW9uIG9iamVj
dAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1
aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CisgICAg
SGFzaE1hcDxzdGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90Piwgc3Rk
OjpwYWlyPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9u
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDQ1YTFmMGY1YjVjLi41MTg4OTNi
MDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcApAQCAtNDcsNiArNDcsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBjaGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMs
ICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hh
bm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10
LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCkBAIC02MSw3ICs2Myw3IEBAIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQ
cm9jZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBw
YWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQ
YWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdl
dCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
IlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQg
PSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2
NCgpLCBuYXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCiAgICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFBy
b3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlzKTsKQEAgLTEwMCw3ICsxMDIsNyBAQCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KCkKICAgICAgICAgbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLnBhZ2VJRCgp
LCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKICAgICBtX3Byb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNsb3NlKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVz
ZXIobV9wYWdlLnZpc2l0ZWRMaW5rU3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKIAogICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvY2VzcyA9IG1fcHJvY2Vzcy5jb3B5UmVmKCldIHsK
QEAgLTExNyw3ICsxMTksNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpjb25uZWN0aW9u
V2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS5wcm92
aXNpb25hbFByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKIH0KIApAQCAtMTMyLDcgKzEzNCw3IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxM
b2FkVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNhbmNl
bDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSBmb3IgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgQVNTRVJUKG1f
bWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpjYW5jZWxsZWRFcnJvcihtX3Jl
cXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6
Q2FuY2VsbGF0aW9uKTsKQEAgLTE1MSwxNCArMTUzLDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJsb2FkRGF0YTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlE
KCkudG9VSW50NjQoKSk7CiAKICAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJl
ZChtX3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2Rp
bmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVx
dWVzdDogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgLy8gSWYgdGhpcyBp
cyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcgaW4gYSBuZXcgcHJvY2VzcywgdGhl
biB0aGUgbmV3IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhlIGZyb21JdGVtJ3MgVVJMLiBJbiB0
aGlzIGNhc2UsCiAgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXBkYXRlIGZyb21JdGVt
J3MgcHJvY2Vzc0lkZW50aWZpZXIgYXMgd2Ugd2FudCBmdXR1cmUgbmF2aWdhdGlvbnMgdG8gdGhp
cyBCYWNrRm9yd2FyZCBpdGVtIHRvIGhhcHBlbiBpbiB0aGUKQEAgLTE3MSw3ICsxNzMsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIFdlYkNvcmU6OlJlcwogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1Rv
QmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRl
UG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQo
KSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFj
a0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2
NCgpKTsKIAogICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5m
aWx0ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkg
ewogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7CkBAIC0x
ODAsOCArMTgyLDggQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJk
SXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gJml0ZW0gIT0gdGFyZ2V0SXRlbTsKICAgICB9KTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdU
Rk1vdmUoaXRlbVN0YXRlcykpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmln
YXRpb25JRCgpLCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9h
ZFR5cGUoKSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1v
dmUod2Vic2l0ZVBvbGljaWVzKSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goV1RGTW92ZShpdGVt
U3RhdGVzKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0
ZW0obmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgKm5hdmlnYXRpb24u
YmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCksIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpKTsKICAgICBtX3Byb2Nlc3Mt
PnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCkBAIC0xOTYsNyArMTk4LDcgQEAg
aW5saW5lIGJvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgT3B0aW9uYWwKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlk
Q3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRl
TWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9w
YWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQpOwogICAgIEFTU0VSVCghbV9tYWluRnJh
bWUpOwogCiAgICAgbV9tYWluRnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUobV9wYWdlLCBm
cmFtZUlEKTsKQEAgLTIzNCw3ICsyMzYsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbgogICAg
IGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgp
LCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJ
dTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsK
ICAgICBBU1NFUlQobV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlz
aW9uYWxMb2FkVVJMID0gdXJsOwogCkBAIC0yNTQsNyArMjU2LDcgQEAgdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnMKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2
NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbExvYWRVUkwu
aXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogCkBAIC0yNzAsNyAr
MjcyLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmkKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQo
ZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9
ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZv
ckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZp
Z2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogICAgIG1f
cHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKIApAQCAtMjk1LDcgKzI5Nyw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWluCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCisgICAgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVp
bnQ2NF90IGxpc3RlbmVySUQpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5h
dmlnYXRpb25JRCkpCkBAIC0zNDEsNyArMzQzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6YmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGUK
IH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtMzc0LDYgKzM3NiwxNiBAQCB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4o
Y29uc3QgSVBDOjpEYXRhUgogfQogI2VuZGlmCiAKK0lQQzo6Q29ubmVjdGlvbiogUHJvdmlzaW9u
YWxQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpOworfQorCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBU1NFUlQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4
IDY0NTZjMWY5MTZkLi5iODYzZmRkMDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAg
LTU4LDcgKzU5LDcgQEAgc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwogc3RydWN0IFVSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzOwogc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiAKLWNs
YXNzIFByb3Zpc2lvbmFsUGFnZVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHsKK2NsYXNzIFByb3Zp
c2lvbmFsUGFnZVByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQcm92aXNpb25hbFBhZ2VQ
cm94eT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFByb3Zp
c2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHN0
ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGJvb2wgaXNTZXJ2ZXJSZWRpcmVjdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCk7CkBAIC05Miw5ICs5MywxMyBAQCBwcml2YXRl
OgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIAorICAgIC8vIElQQzo6TWVzc2Fn
ZVNlbmRlcgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCi0gICAgICAgIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiByZXF1ZXN0Qm9keSwKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTEwLDcgKzExNSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7
CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0Rh
dGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRh
JiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCAwNTU5Yzk4NzRiZC4uMjc4Y2E4NTRmMzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0x
MTUsNyArMTE1LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcKICAgICBJT1N1cmZhY2VQb29s
OjpzaGFyZWRQb29sKCkuc2V0UG9vbFNpemUoMCk7CiAjZW5kaWYKIAotICAgIHByb2Nlc3MuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7
CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAq
dGhpcyk7CiAKICAgICBpZiAobV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS50aWxlZFNjcm9s
bGluZ0luZGljYXRvclZpc2libGUoKSkKICAgICAgICAgaW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9y
KCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcKIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
KCkKIHsKICAgICBtX2NhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93
bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgIHByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHByb2Nlc3MoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgW21fZGlzcGxheUxpbmtIYW5kbGVyIGludmFsaWRhdGVdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCmlu
ZGV4IDY2NzlkNDViZDk5Li4wODZhZWIwNzk1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcApAQCAtNTksNyArNTksNyBAQCB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpsb2FkKGNvbnN0IFN0cmluZyYgZGVidWdnYWJs
ZVR5cGUsIGNvbnN0IFN0cmluZyYgYgogICAgIG1fZGVidWdnYWJsZVR5cGUgPSBkZWJ1Z2dhYmxl
VHlwZTsKICAgICBtX2JhY2tlbmRDb21tYW5kc1VSTCA9IGJhY2tlbmRDb21tYW5kc1VSTDsKIAot
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclVJOjpJbml0aWFsaXplKGRlYnVnZ2FibGVUeXBlLCBiYWNrZW5kQ29tbWFuZHNVUkwp
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpJbml0aWFsaXplKGRlYnVnZ2FibGVUeXBl
LCBiYWNrZW5kQ29tbWFuZHNVUkwpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0
KFVSTChVUkwoKSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQog
CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQog
CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQo
bWVzc2FnZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFn
ZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9u
dGVuZChtZXNzYWdlKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmZyb250
ZW5kRGlkQ2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1YTE0ZmJlNGRjZC4uYjJmNzcyOWZkMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHkuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlCiAgICAg
c2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZl
cmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBj
aGFsbGVuZ2UpCit2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmIGNoYWxsZW5nZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgK
aW5kZXggOTMyNDVmMGRjNzYuLmU5MzY1YWZhYzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCkBAIC00MSwxNCArNDEsMTQg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJz
KGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7CiAKLSAgICB2b2lkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
dWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwog
CiAgICAgdm9pZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgT3B0aW9uYWw8UEFM
OjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biYgcmVnaXN0cmFibGVEb21haW4oKSB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9Ci0g
ICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlE
OyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAKIHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1aW50NjRfdCBtX3NlcnZpY2VXb3JrZXJQYWdl
SUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUGFn
ZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCAxMzQ2ZmNjMDVjNS4uZWJlNDE3NGNj
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cApAQCAtOTIsNyArOTIsNyBAQCBTdXNwZW5kZWRQYWdlUHJveHk6OlN1c3BlbmRlZFBhZ2VQcm94
eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJveHk+JgogICAgIG1fcHJvY2Vz
cy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CiAKICAgICBtX3N1c3BlbnNpb25U
aW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KHN1c3BlbnNpb25UaW1lb3V0KTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3BhZ2Uu
cGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRy
dWUpKTsKIH0KIAogU3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5KCkKQEAg
LTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5kKCkKICAg
ICBBU1NFUlQobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpTdXNwZW5kZWQp
OwogCiAgICAgbV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNwZW5zaW9uU3RhdGU6OlJlc3VtZWQ7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChmYWxz
ZSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNT
dXNwZW5kZWQoZmFsc2UpKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkK
QEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xvc2UoKQogCiAg
ICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJveHk6
OmNsb3NlKCkiLCB0aGlzKTsKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CiB9CiAKIHZvaWQgU3VzcGVuZGVkUGFn
ZVByb3h5OjpwYWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKQEAgLTI0Miwx
MSArMjQyLDIxIEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwKIHsKIH0KIAorSVBDOjpDb25uZWN0
aW9uKiBTdXNwZW5kZWRQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFN1
c3BlbmRlZFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAorewor
ICAgIHJldHVybiBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKTsKK30KKwogI2lmICFMT0dfRElT
QUJMRUQKIAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVycHJldF9j
YXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgpLCAiLCBt
X3N1c3BlbnNpb25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zdXNwZW5zaW9uU3Rh
dGUpLCAnKScpOworICAgIHJldHVybiBkZWJ1Z1N0cmluZygiKDB4IiwgaGV4KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludHB0cl90Pih0aGlzKSksICIgcGFnZSBJRCAiLCBtX3BhZ2UucGFnZUlEKCkudG9V
SW50NjQoKSwgIiwgbV9zdXNwZW5zaW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
c3VzcGVuc2lvblN0YXRlKSwgJyknKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oCmluZGV4IDBkYWQwNTRiMjcyLi42MzVlYmEwMDBk
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgi
CiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eU1lc3NhZ2VzLmgiCkBAIC0zOSw3ICs0MCw3IEBAIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsK
IAogZW51bSBjbGFzcyBTaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUgOiBib29sIHsgTm8sIFllcyB9OwogCi1jbGFzcyBTdXNwZW5kZWRQYWdl
UHJveHkgZmluYWw6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VX
ZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4geworY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5IGZp
bmFsOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFN1c3BlbmRlZFBhZ2VQcm94eShX
ZWJQYWdlUHJveHkmLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBtYWluRnJhbWVJ
RCwgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKTsKQEAgLTcxLDYgKzcyLDEwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikg
ZmluYWw7CisgICAgCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CiAKICAgICBXZWJQYWdl
UHJveHkmIG1fcGFnZTsKICAgICBSZWY8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggOTcxMWIyMzM3MjEuLjAx
YjZkMTJlNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBA
IC03Myw3ICs3Myw3IEBAIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojp+V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkoKQogewogICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3hpZXMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykgewotICAgICAgICBwcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogICAgICAgICBwcm9jZXNzLT5kaWRE
ZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMpOwogICAgIH0KICNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtODUsNyArODUsNyBAQCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKIHZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHksIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiB7CiAgICAgaWYgKG1fcHJvY2Vzc2VzLmFkZCgmd2ViUHJvY2Vzc1Byb3h5KS5pc05ld0VudHJ5
KQotICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSwgKnRoaXMpOworICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCksICp0aGlzKTsKIAogICAgIEFTU0VS
VChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChjb25z
dCBhdXRvJiB3b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMpCkBAIC0xMTUsNyArMTE1LDcgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9j
ZXNzUHJveHkmIHdlYlByb2Nlc3NQcm8KICAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMo
JndlYlByb2Nlc3NQcm94eSkpOwogCiAgICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNz
UHJveHkpOwotICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRl
bnRXb3JsZCYgd29ybGQpCkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OlVzZXJDb250
ZW4KICAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7
CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBGcmFt
ZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZv
RGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQ
cm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDYyMzMwMTExNmVkLi4wZWQzNmE1OWNjMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xMTAsNyAr
MTExLDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBGcmFtZUluZm9E
YXRhJiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
Jik7CiAKICAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdv
cmxkJik7CiAgICAgdm9pZCByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250
ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgxNzE0MzUx
ZmNlLi4yNWE0ZTI5MTI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDUgKzI0LDUgQEAKICAqLwogCiBtZXNzYWdlcyAt
PiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSB7Ci1EaWRQb3N0TWVzc2FnZSh1aW50NjRf
dCBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRz
Q29ubmVjdGlvbgorRGlkUG9zdE1lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1l
c3NhZ2VIYW5kbGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5lY3Rp
b24KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCAxZjI2MDI5MWNj
Ny4uYmQzN2JhMGM5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAg
LTExOSw3ICsxMTksNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5OjpjYXB0dXJlRGV2aWNlc0NoYW5nZWQoKQogICAgICAgICBpZiAobV9ncmFudGVkUmVxdWVz
dHMuaXNFbXB0eSgpICYmICEqb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcykKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwdHVyZURldmljZXNDaGFuZ2VkKCkpOwog
ICAgIH07CiAKICAgICBhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUobV9wYWdlLm1haW5GcmFtZSgpLT51cmwoKSk7CkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBV
c2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGVueVJlcXVlc3QodWludDY0
X3QgdXNlck1lZGlhSUQsIFUKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIHVzZXJNZWRp
YUlELCAiLCByZWFzb246ICIsIHJlYXNvbik7CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQot
ICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNj
ZXNzV2FzRGVuaWVkKHVzZXJNZWRpYUlELCB0b1dlYkNvcmUocmVhc29uKSwgaW52YWxpZENvbnN0
cmFpbnQpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQodXNlck1lZGlhSUQsIHRvV2ViQ29yZShyZWFz
b24pLCBpbnZhbGlkQ29uc3RyYWludCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0ocmVhc29u
KTsKICAgICBVTlVTRURfUEFSQU0oaW52YWxpZENvbnN0cmFpbnQpOwpAQCAtMjk2LDExICsyOTYs
MTEgQEAgYm9vbCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Z3JhbnRB
Y2Nlc3MoY29uc3QgVXNlck1lZGlhUGVybWlzc2kKICAgICB9CiAKICAgICArK21faGFzUGVuZGlu
Z0NhcHR1cmU7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCB7IHJl
cXVlc3QudXNlck1lZGlhSUQoKSwgcmVxdWVzdC5hdWRpb0RldmljZSgpLCByZXF1ZXN0LnZpZGVv
RGV2aWNlKCksIHJlcXVlc3QuZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KCkgfSwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKKyAgICBtX3BhZ2Uuc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkIHsgcmVxdWVz
dC51c2VyTWVkaWFJRCgpLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCksIHJlcXVlc3QudmlkZW9EZXZp
Y2UoKSwgcmVxdWVzdC5kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoKSB9LCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAtLW1faGFzUGVuZGluZ0NhcHR1cmU7Ci0gICAgfSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICB9KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KICNlbmRpZgpAQCAt
NjA4LDcgKzYwOCw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHk6OmVudW1lcmF0ZU1lZGlhRGV2aWNlc0ZvckZyYW1lKHVpbnQ2CiAKICAgICAgICAgICAgIGJv
b2wgcmV2ZWFsSWRzQW5kTGFiZWxzID0gb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcyB8fCB3YXNH
cmFudGVkVmlkZW9PckF1ZGlvQWNjZXNzKGZyYW1lSUQsIHVzZXJNZWRpYURvY3VtZW50T3JpZ2lu
LmdldCgpLCB0b3BMZXZlbERvY3VtZW50T3JpZ2luLmdldCgpKTsKIAotICAgICAgICAgICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZU1lZGlhRGV2
aWNlRW51bWVyYXRpb24geyB1c2VyTWVkaWFJRCwgY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlzdChy
ZXZlYWxJZHNBbmRMYWJlbHMsIGRldmljZUlESGFzaFNhbHQpLCBkZXZpY2VJREhhc2hTYWx0LCBv
cmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIH0sIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgICAgICAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVNZWRpYURldmljZUVu
dW1lcmF0aW9uIHsgdXNlck1lZGlhSUQsIGNvbXB1dGVGaWx0ZXJlZERldmljZUxpc3QocmV2ZWFs
SWRzQW5kTGFiZWxzLCBkZXZpY2VJREhhc2hTYWx0KSwgZGV2aWNlSURIYXNoU2FsdCwgb3JpZ2lu
SGFzUGVyc2lzdGVudEFjY2VzcyB9KTsKICAgICAgICAgfSk7CiAgICAgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXggMjQ4
MTgyZDgwOTIuLjc2ODA2ZDQ4NDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTY2LDEwICs2NiwxMCBAQCBzdGF0aWMgY29u
c3QgZmxvYXQgbWluaW11bVNjcm9sbEV2ZW50UmF0aW9Gb3JTd2lwZSA9IDAuNTsKIHN0YXRpYyBj
b25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rp
b24gPSAwLjU7CiAjZW5kaWYKIAotc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFZpZXdHZXN0dXJl
Q29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKQorc3RhdGlj
IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2Vz
dHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKQogewogICAgIC8vIFRoZSBrZXkgaW4gdGhpcyBt
YXAgaXMgdGhlIGFzc29jaWF0ZWQgcGFnZSBJRC4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
SGFzaE1hcDx1aW50NjRfdCwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJlQ29u
dHJvbGxlcnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UGFnZUlkZW50aWZp
ZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+PiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzOwogICAg
IHJldHVybiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzLmdldCgpOwogfQogCkBAIC0xMTYsNyArMTE2
LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbm5lY3RUb1Byb2Nlc3MoKQogICAg
IG1faXNDb25uZWN0ZWRUb1Byb2Nlc3MgPSB0cnVlOwogfQogCi1WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1cmUodWludDY0X3Qg
cGFnZUlELCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBnZXN0dXJlSUQpCitWaWV3
R2VzdHVyZUNvbnRyb2xsZXIqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdl
c3R1cmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1
cmVJRCBnZXN0dXJlSUQpCiB7CiAgICAgYXV0byBnZXN0dXJlQ29udHJvbGxlckl0ZXIgPSB2aWV3
R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKS5maW5kKHBhZ2VJRCk7CiAgICAgaWYgKGdl
c3R1cmVDb250cm9sbGVySXRlciA9PSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMo
KS5lbmQoKSkKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
Zm9yY2VSZXBhaW50SWZOZWVkZWQoKQogCiAgICAgbV9oYXNPdXRzdGFuZGluZ1JlcGFpbnRSZXF1
ZXN0ID0gdHJ1ZTsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAgICAgR2Vz
dHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBtX3dlYlBhZ2VQcm94
eS5mb3JjZVJlcGFpbnQoVm9pZENhbGxiYWNrOjpjcmVhdGUoW3BhZ2VJRCwgZ2VzdHVyZUlEXSAo
Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29u
dHJvbGxlciA9IGNvbnRyb2xsZXJGb3JHZXN0dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKQEAgLTYx
Nyw3ICs2MTcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6cmVxdWVzdFJlbmRlclRy
ZWVTaXplTm90aWZpY2F0aW9uSWZOZWVkZWQoKQogICAgIGF1dG8mIHByb2Nlc3MgPSBtX3dlYlBh
Z2VQcm94eS5wcm92aXNpb25hbFBhZ2VQcm94eSgpID8gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9u
YWxQYWdlUHJveHkoKS0+cHJvY2VzcygpIDogbV93ZWJQYWdlUHJveHkucHJvY2VzcygpOwogICAg
IGF1dG8gdGhyZXNob2xkID0gbV9zbmFwc2hvdFJlbW92YWxUcmFja2VyLnJlbmRlclRyZWVTaXpl
VGhyZXNob2xkKCk7CiAKLSAgICBwcm9jZXNzLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2Vv
bWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90aWZpY2F0aW9uVGhyZXNob2xkKHRo
cmVzaG9sZCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBwcm9jZXNzLnNlbmQoTWVz
c2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OlNldFJlbmRlclRyZWVTaXplTm90
aWZpY2F0aW9uVGhyZXNob2xkKHRocmVzaG9sZCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRv
VUludDY0KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggNDMxYzI3NjZkMDguLmMxNjcwZDNhOTRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25v
dG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
dW5Mb29wLmg+CkBAIC0xNzUsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgc3RhdGljIFZpZXdHZXN0dXJlQ29udHJv
bGxlciogY29udHJvbGxlckZvckdlc3R1cmUodWludDY0X3QgcGFnZUlELCBHZXN0dXJlSUQpOwor
ICAgIHN0YXRpYyBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JHZXN0dXJlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBHZXN0dXJlSUQpOwogCiAgICAgc3RhdGljIEdlc3R1cmVJ
RCB0YWtlTmV4dEdlc3R1cmVJRCgpOwogICAgIHZvaWQgd2lsbEJlZ2luR2VzdHVyZShWaWV3R2Vz
dHVyZVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNw
cAppbmRleCBmMmU3YjkzNDA1Ny4uOTkxZGMyZmNmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBWaXNp
dGVkTGlua1N0b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94
eSYsIElQQzo6Q29ubmUKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFZpc2l0
ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
U2hhcmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkKK3ZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlz
aXRlZExpbmtIYXNoRnJvbVBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaGFyZWRTdHJpbmdI
YXNoIGxpbmtIYXNoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBXZWJQcm9jZXNz
UHJveHk6OndlYlBhZ2UocGFnZUlEKSkgewogICAgICAgICBpZiAoIXdlYlBhZ2VQcm94eS0+YWRk
c1Zpc2l0ZWRMaW5rcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9y
ZS5oCmluZGV4IDA2ZjIwYmE5MWNiLi4wMmI0OWJhYzU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkSW52YWxpZGF0ZVNoYXJlZE1lbW9yeSgpIGZpbmFsOwogICAgIHZvaWQgZGlkVXBk
YXRlU2hhcmVkU3RyaW5nSGFzaGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdI
YXNoPiYgYWRkZWRIYXNoZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNo
PiYgcmVtb3ZlZEhhc2hlcykgZmluYWw7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFzaEZy
b21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCk7CisgICAg
dm9pZCBhZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCk7CiAKICAgICB2b2lkIHNlbmRTdG9yZUhhbmRsZVRv
UHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KaW5kZXggZTc4NjJlMzY1YjAuLjJl
NjZjNDI4MDhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlu
a1N0b3JlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRM
aW5rU3RvcmUubWVzc2FnZXMuaW4KQEAgLTIxLDUgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAog
bWVzc2FnZXMgLT4gVmlzaXRlZExpbmtTdG9yZSB7Ci0gICAgQWRkVmlzaXRlZExpbmtIYXNoRnJv
bVBhZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBsaW5rSGFzaCkKKyAgICBBZGRWaXNpdGVk
TGlua0hhc2hGcm9tUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IGxpbmtIYXNoKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRWRp
dENvbW1hbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFu
ZFByb3h5LmNwcAppbmRleCA4N2IwYWZjMjBjMi4uMGRiZTBhZmI0MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCkBAIC01NSw3ICs1NSw3
IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94eTo6dW5hcHBseSgpCiAgICAgaWYgKCFtX3BhZ2Ug
fHwgIW1fcGFnZS0+aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVkaXRDb21t
YW5kKG1fY29tbWFuZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VW5hcHBseUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OwogICAgIG1fcGFnZS0+cmVnaXN0ZXJFZGl0Q29tbWFuZCgqdGhpcywgVW5kb09yUmVkbzo6UmVk
byk7CiB9CiAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBXZWJFZGl0Q29tbWFuZFByb3h5OjpyZWFw
cGx5KCkKICAgICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZWFwcGx5RWRpdENvbW1hbmQobV9jb21tYW5kSUQpLCBtX3BhZ2UtPnBhZ2VJRCgp
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFwcGx5RWRpdENv
bW1hbmQobV9jb21tYW5kSUQpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5X
aGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAgICAgbV9wYWdlLT5yZWdpc3RlckVkaXRDb21tYW5k
KCp0aGlzLCBVbmRvT3JSZWRvOjpVbmRvKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmNwcAppbmRleCA1Yzg1MWI3Mjc1NS4uYjAxYjMwNTA1MTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHZv
aWQgV2ViRnJhbWVQcm94eTo6bG9hZFVSTChjb25zdCBVUkwmIHVybCkKICAgICBpZiAoIW1fcGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZFVSTEluRnJhbWUodXJsLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkxJbkZyYW1l
KHVybCwgbV9mcmFtZUlEKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZERhdGEoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nTmFtZSwgY29uc3QgVVJMJiBiYXNlVVJMKQpAQCAtOTIsNyArOTIs
NyBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVAogICAgIGlmICghbV9wYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpM
b2FkRGF0YUluRnJhbWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFzZVVSTCwgbV9m
cmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkRGF0YUluRnJhbWUoZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nTmFtZSwgYmFz
ZVVSTCwgbV9mcmFtZUlEKSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRpbmco
KSBjb25zdApAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6c3RvcExvYWRp
bmcoKSBjb25zdAogICAgIGlmICghbV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcExvYWRpbmdGcmFtZShtX2ZyYW1lSUQp
KTsKIH0KICAgICAKIGJvb2wgV2ViRnJhbWVQcm94eTo6Y2FuUHJvdmlkZVNvdXJjZSgpIGNvbnN0
CkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpjb2xsYXBzZVNlbGVjdGlv
bigpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZSht
X2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbGxhcHNlU2VsZWN0aW9uSW5GcmFtZShtX2ZyYW1lSUQpKTsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHkuY3BwCmluZGV4IDhlOTNiMWRjMmQwLi5lYzY5OGUxNjBjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAK
QEAgLTU2LDEzICs1NiwxMyBAQCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp+V2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eSgpCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxF
bnRlckZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50KCkud2lsbEVu
dGVyRnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRW50ZXJGdWxsU2NyZWVuKCksIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2Vy
OjpXaWxsRW50ZXJGdWxsU2NyZWVuKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHk6OmRpZEVudGVyRnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGll
bnQoKS5kaWRFbnRlckZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsU2NyZWVuKCks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxTY3JlZW4oKSk7CiAKICAgICBpZiAobV9wYWdlLmlzQ29u
dHJvbGxlZEJ5QXV0b21hdGlvbigpKSB7CiAgICAgICAgIGlmIChXZWJBdXRvbWF0aW9uU2Vzc2lv
biogYXV0b21hdGlvblNlc3Npb24gPSBtX3BhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0
b21hdGlvblNlc3Npb24oKSkKQEAgLTczLDEzICs3MywxMyBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbFNjcmVlbigpCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHk6OndpbGxFeGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5D
bGllbnQoKS53aWxsRXhpdEZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsU2NyZWVu
KCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxTY3JlZW4oKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQogewogICAgIG1fcGFnZS5mdWxs
c2NyZWVuQ2xpZW50KCkuZGlkRXhpdEZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxT
Y3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCkpOwogICAgIAogICAgIGlmICht
X3BhZ2UuaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkpIHsKICAgICAgICAgaWYgKFdlYkF1dG9t
YXRpb25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vz
c1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQpAQCAtODksMTIgKzg5LDEyIEBAIHZvaWQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxTY3JlZW4oKQogCiB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYm9vbCBhbmltYXRp
bmcpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVu
TWFuYWdlcjo6U2V0QW5pbWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0
QW5pbWF0aW5nRnVsbFNjcmVlbihhbmltYXRpbmcpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpyZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKQogewotICAgIG1fcGFnZS5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlcXVlc3RFeGl0RnVs
bFNjcmVlbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkpOwogfQogCiB2b2lk
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhL
ZXlib2FyZCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKQEAgLTEwOCwyNyArMTA4LDI3IEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
c3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9uCiAKIHZvaWQg
V2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2F2ZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBt
X3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTYXZl
U2Nyb2xsUG9zaXRpb24oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNhdmVTY3JvbGxQb3NpdGlvbigpKTsKIH0KIAog
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpyZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQog
ewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXI6OlJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFn
ZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNjcm9sbFBvc2l0
aW9uKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3Jl
ZW5JbnNldHMoY29uc3QgV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQmIGluc2V0cykKIHsKLSAgICBt
X3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRG
dWxsc2NyZWVuSW5zZXRzKGluc2V0cyksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNl
bmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuSW5zZXRzKGlu
c2V0cykpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3Jl
ZW5BdXRvSGlkZUR1cmF0aW9uKFNlY29uZHMgZHVyYXRpb24pCiB7Ci0gICAgbV9wYWdlLnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1
dG9IaWRlRHVyYXRpb24oZHVyYXRpb24pLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkF1dG9IaWRl
RHVyYXRpb24oZHVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpzZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oYm9vbCBoaWRkZW4pCiB7Ci0gICAgbV9wYWdl
LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNj
cmVlbkNvbnRyb2xzSGlkZGVuKGhpZGRlbiksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJv
bHNIaWRkZW4oaGlkZGVuKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9y
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3Bw
CmluZGV4IDEyYmIyNjFkMDdjLi5mZTkwY2NjODlhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpT
ZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkp
OworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNl
bmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSk7CiB9CiAKIC8vIFB1YmxpYyBBUElzCkBAIC0x
MjcsNyArMTI3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y29ubmVjdCgpCiAgICAgY3Jl
YXRlRnJvbnRlbmRQYWdlKCk7CiAKICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyOjpOb3RpZnlOZWVkRGVi
dWdnZXJCcmVhaygpLCAwKTsKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3coKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3co
KSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3coKQpAQCAtMTYxLDcgKzE2MSw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlKCkKICAgICBpZiAoIW1faW5zcGVjdGVk
UGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6Q2xvc2UoKSk7CiAKICAgICBjbG9zZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOwogfQpAQCAt
MTk5LDcgKzE5OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnVwZGF0ZUZvck5ld1BhZ2VQ
cm9jZXNzKFdlYlBhZ2VQcm94eSogaW5zcGVjdGVkUGFnZSkKICAgICBtX2luc3BlY3RlZFBhZ2Ut
PnByb2Nlc3MoKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksICp0aGlz
KTsKIAogICAgIGlmIChtX2luc3BlY3RvclBhZ2UpCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25uZWN0aW9u
KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpVcGRhdGVDb25uZWN0aW9uKCkpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBDOjpBdHRh
Y2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29u
bmVjdGlvbklkZW50aWZpCiAgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgbV9p
bnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OlNldEZyb250ZW5kQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRp
ZmllcikpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgpCkBAIC0y
MTcsNyArMjE3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd0NvbnNvbGUoKQogCiAg
ICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dDb25zb2xlKCksIG1faW5zcGVjdGVk
UGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yOjpTaG93Q29uc29sZSgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
c2hvd1Jlc291cmNlcygpCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6c2hvd1Jlc291cmNlcygpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1f
aW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hv
d1Jlc291cmNlcygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1Jlc291cmNlcygpKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1RpbWVsaW5lcygpCkBAIC0yMzcsNyArMjM3
LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd1RpbWVsaW5lcygpCiAKICAgICBjcmVh
dGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd1RpbWVsaW5lcygpLCBtX2luc3BlY3RlZFBhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3Rvcjo6U2hvd1RpbWVsaW5lcygpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hv
d01haW5SZXNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQpAQCAtMjQ3LDcgKzI0
Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShX
ZWJGcmFtZVByb3h5KiBmcmFtZSkKIAogICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCi0gICAg
bV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
aG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIG1faW5zcGVjdGVkUGFn
ZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yOjpTaG93TWFpblJlc291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hCb3R0b20oKQpAQCAtMjc4LDE5ICsyNzgs
MTkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoKEF0dGFjaG1lbnRTaWRlIHNpZGUp
CiAgICAgaWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMo
KS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZCh0cnVlKTsKIAotICAgIG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQodHJ1
ZSksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSk7CiAKICAgICBzd2l0
Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206
Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
QXR0YWNoZWRCb3R0b20oKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBdHRhY2htZW50
U2lkZTo6UmlnaHQ6Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
QXR0YWNobWVudFNpZGU6OkxlZnQ6Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZExlZnQoKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogCkBAIC0zMDcsOCArMzA3LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6ZGV0YWNoKCkK
ICAgICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygp
LnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGZhbHNlKTsKIAotICAgIG1faW5zcGVjdGVkUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFs
c2UpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKGZhbHNlKSk7CisgICAgbV9pbnNwZWN0b3JQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSk7CiAKICAgICBwbGF0
Zm9ybURldGFjaCgpOwogfQpAQCAtMzQxLDkgKzM0MSw5IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnRvZ2dsZVBhZ2VQcm9maWxpbmcoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9p
c1Byb2ZpbGluZ1BhZ2UpCi0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcFBhZ2VQcm9maWxpbmcoKSwgbV9pbnNwZWN0ZWRQ
YWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpKTsKICAgICBlbHNlCi0gICAgICAgIG1f
aW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3Rh
cnRQYWdlUHJvZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBt
X2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRQYWdlUHJv
ZmlsaW5nKCkpOwogCiAgICAgLy8gRklYTUU6IGhhdmUgdGhlIFdlYlByb2Nlc3Mgbm90aWZ5IHVz
IG9uIHN0YXRlIGNoYW5nZXMuCiAgICAgbV9pc1Byb2ZpbGluZ1BhZ2UgPSAhbV9pc1Byb2ZpbGlu
Z1BhZ2U7CkBAIC0zNTYsMTAgKzM1NiwxMCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dn
bGVFbGVtZW50U2VsZWN0aW9uKCkKIAogICAgIGlmIChtX2VsZW1lbnRTZWxlY3Rpb25BY3RpdmUp
IHsKICAgICAgICAgbV9pZ25vcmVFbGVtZW50U2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKLSAgICAg
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTdG9wRWxlbWVudFNlbGVjdGlvbigpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BF
bGVtZW50U2VsZWN0aW9uKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGNvbm5lY3QoKTsKLSAg
ICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTdGFydEVsZW1lbnRTZWxlY3Rpb24oKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpT
dGFydEVsZW1lbnRTZWxlY3Rpb24oKSk7CiAgICAgfQogfQogCkBAIC00MTIsNyArNDEyLDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9vbCBj
YW5BdHRhY2gsIGJvb2wgdW5kZXJUZXMKICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24obV9pbnNwZWN0ZWRQYWdlLT5w
YWdlSUQoKSwgbV91bmRlclRlc3QsIGluc3BlY3Rpb25MZXZlbCgpKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBt
X3VuZGVyVGVzdCwgaW5zcGVjdGlvbkxldmVsKCkpKTsKIAogICAgIEFTU0VSVCghbV9pc0FjdGl2
ZUZyb250ZW5kKTsKICAgICBtX2lzQWN0aXZlRnJvbnRlbmQgPSB0cnVlOwpAQCAtNDIzLDI2ICs0
MjMsMjYgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRl
bmQoYm9vbCBjYW5BdHRhY2gsIGJvb2wgdW5kZXJUZXMKICAgICAgICAgbV9pc0F0dGFjaGVkID0g
c2hvdWxkT3BlbkF0dGFjaGVkKCk7CiAgICAgICAgIG1fYXR0YWNobWVudFNpZGUgPSBzdGF0aWNf
Y2FzdDxBdHRhY2htZW50U2lkZT4oaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuaW5zcGVjdG9y
QXR0YWNobWVudFNpZGUoKSk7CiAKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChtX2lzQXR0YWNoZWQpLCBt
X2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCkpOwogCiAg
ICAgICAgIGlmIChtX2lzQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHN3aXRjaCAobV9hdHRhY2ht
ZW50U2lkZSkgewogICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6Qm90dG9tOgotICAg
ICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgp
KTsKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAog
ICAgICAgICAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6UmlnaHQ6Ci0gICAgICAgICAgICAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkF0dGFjaGVkUmlnaHQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0
YWNoZWRSaWdodCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2Fz
ZSBBdHRhY2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRMZWZ0KCks
IG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1faW5zcGVjdG9y
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6RGV0YWNoZWQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAg
ICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRh
Y2hlZCgpKTsKIAotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0dGFjaCks
IG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2Fu
QXR0YWNoKSk7CiAgICAgfQogCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwo
VVJMKCksIG1fdW5kZXJUZXN0ID8gV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclRlc3RQYWdl
VVJMKCkgOiBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpKSk7CkBAIC00NTgs
NyArNDU4LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6b3BlbigpCiAKICAgICBTZXRGb3JT
Y29wZTxib29sPiBpc09wZW5pbmcobV9pc09wZW5pbmcsIHRydWUpOwogICAgIG1faXNWaXNpYmxl
ID0gdHJ1ZTsKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSwgbV9pbnNwZWN0b3JQYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNWaXNpYmxlKSk7CiAKICAgICBpZiAobV9pc0F0dGFj
aGVkKQogICAgICAgICBwbGF0Zm9ybUF0dGFjaCgpOwpAQCAtNDg1LDcgKzQ4NSw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OmNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCkKIAogICAgIHVu
dHJhY2tJbnNwZWN0b3JQYWdlKG1faW5zcGVjdG9yUGFnZSk7CiAKLSAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxl
KG1faXNWaXNpYmxlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0
b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0SXNWaXNpYmxlKG1faXNW
aXNpYmxlKSk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKIAogICAgIGlmIChtX2lzQWN0aXZlRnJvbnRl
bmQpIHsKQEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2hB
dmFpbGFiaWxpdHlDaGFuZ2VkKGJvb2wgYXZhaWxhYmxlKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAobV9pbnNwZWN0b3JQYWdlICYmICFtX3VuZGVyVGVzdCkKLSAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldERvY2tp
bmdVbmF2YWlsYWJsZSghbV9jYW5BdHRhY2gpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6
U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0dGFjaCkpOwogCiAgICAgcGxhdGZvcm1BdHRh
Y2hBdmFpbGFiaWxpdHlDaGFuZ2VkKG1fY2FuQXR0YWNoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDY1NmM4ZGNjNTljLi4yYTU0ZGU5ZDZjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zODEsMTIgKzM4MSwx
MiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9yTW9zdFZpc2libGVXZWJQYWdlSWZBbnkoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZQogICAgIGNvbXBsZXRpb25IYW5kbGVyKHNlbGVj
dGVkUGFnZSk7CiB9CiAKLVJlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3Qg
cGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorUmVm
PFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlZjxB
UEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViUGFnZVByb3h5KHBhZ2VDbGllbnQsIHByb2Nlc3MsIHBhZ2VJRCwgV1RG
TW92ZShjb25maWd1cmF0aW9uKSkpOwogfQogCi1XZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbnQ2NF90
IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKK1dl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogICAgIDogbV9wYWdlQ2xpZW50KG1ha2VXZWFr
UHRyKHBhZ2VDbGllbnQpKQogICAgICwgbV9jb25maWd1cmF0aW9uKFdURk1vdmUoY29uZmlndXJh
dGlvbikpCiAgICAgLCBtX25hdmlnYXRpb25DbGllbnQobWFrZVVuaXF1ZVJlZjxBUEk6Ok5hdmln
YXRpb25DbGllbnQ+KCkpCkBAIC00MzUsNyArNDM1LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdl
UHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1
aW4KICNlbmRpZgogICAgICwgbV9yZXNldFJlY2VudENyYXNoQ291bnRUaW1lcihSdW5Mb29wOjpt
YWluKCksIHRoaXMsICZXZWJQYWdlUHJveHk6OnJlc2V0UmVjZW50Q3Jhc2hDb3VudCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb25zdHJ1Y3Rvcjogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0
b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIW1fY29uZmlndXJh
dGlvbi0+ZHJhd3NCYWNrZ3JvdW5kKCkpCiAgICAgICAgIG1fYmFja2dyb3VuZENvbG9yID0gQ29s
b3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKQEAgLTQ4OSw3ICs0ODksNyBAQCBXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIHVpbgogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdlUHJveHkoKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlc3RydWN0b3I6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBBU1NFUlQobV9wcm9jZXNzLT53ZWJQYWdl
KG1fcGFnZUlEKSAhPSB0aGlzKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC02MTMsNyArNjEz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OlVJQ2xpZW50PiYmIHVpQ2xpZW50KQogICAgIG1fdWlDbGllbnQgPSBXVEZNb3ZlKHVpQ2xpZW50
KTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCht
X3VpQ2xpZW50LT5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSksIG1fcGFnZUlEKTsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKG1fdWlDbGllbnQtPmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKSk7
CiAKICAgICBzZXRDYW5SdW5Nb2RhbChtX3VpQ2xpZW50LT5jYW5SdW5Nb2RhbCgpKTsKICAgICBz
ZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKG1fdWlDbGllbnQtPm5lZWRzRm9udEF0dHJpYnV0ZXMoKSk7
CkBAIC02MzAsNyArNjMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xp
ZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiYKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoaGFzQ2xpZW50KSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUljb25Mb2FkaW5n
Q2xpZW50KGhhc0NsaWVudCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RmluZENsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpGaW5kQ2xpZW50PiYmIGZpbmRDbGllbnQpCkBAIC03MDgs
NyArNzA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7
CiAgICAgQVNTRVJUKCFoYXNSdW5uaW5nUHJvY2VzcygpKTsKIAotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3M6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBtX3Byb2Nlc3MtPnJlbW92ZVdlYlBhZ2UoKnRo
aXMsIFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwogICAgIG1fcHJv
Y2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwpAQCAtNzYzLDcgKzc2Myw3IEBAIGJvb2wgV2Vi
UGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgT3B0CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBTdXNwZW5kaW5nIGN1cnJlbnQgcGFn
ZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCkpOwog
ICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8U3VzcGVuZGVkUGFnZVBy
b3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5GcmFtZUlELCBzaG91bGREZWxh
eUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOwogCi0gICAg
TE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1
c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMi
IFBSSXU2NCwgcGFnZUlEKCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5s
b2dTdHJpbmcoKSA6IDApOworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkg
JSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWks
IGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIHN1c3Bl
bmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOwogCiAgICAg
Ly8gSWYgdGhlIGNsaWVudCBmb3JjZWQgYSBzd2FwIHRoZW4gaXQgbWF5IG5vdCBiZSB3ZWItY29t
cGF0aWJsZSB0byBrZWVwIHRoZSBwcmV2aW91cyBwYWdlIGJlY2F1c2Ugb3RoZXIgd2luZG93cyBt
YXkgaGF2ZSBhbiBvcGVuZXIgbGluayB0byBpdC4gV2UgdGh1cyBjbG9zZSBpdCBhcyBzb29uIGFz
IHdlCiAgICAgLy8gY2FuIGRvIHNvIHdpdGhvdXQgZmxhc2hpbmcuCkBAIC03ODEsNyArNzgxLDcg
QEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpO
YXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKIHZvaWQgV2ViUGFnZVByb3h5Ojpzd2FwVG9XZWJQ
cm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywgc3RkOjp1bmlxdWVfcHRyPERy
YXdpbmdBcmVhUHJveHk+JiYgZHJhd2luZ0FyZWEsIFJlZlB0cjxXZWJGcmFtZVByb3h5PiYmIG1h
aW5GcmFtZSkKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1dlYlByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1dlYlByb2Nlc3M6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBtX3Byb2Nlc3MgPSBXVEZNb3ZlKHBy
b2Nlc3MpOwogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFT
dG9yZSgpOwpAQCAtODczLDEwICs4NzMsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEF0dGFj
aFRvUnVubmluZ1Byb2Nlc3MoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxv
YWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNz
Rm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBh
Z2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCkBAIC04ODUsMTQgKzg4NSwxNCBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogICAg
IGxhdW5jaFByb2Nlc3MocmVnaXN0cmFibGVEb21haW4pOwogCiAgICAgaWYgKCFtX2JhY2tGb3J3
YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVs
b2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3VycmVudCBpdGVtIHRvIHJlbG9h
ZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0
ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAogICAgIC8vIFdlIGFsbG93IHN0YWxlIGNvbnRlbnQgd2hl
biByZWxvYWRpbmcgYSBXZWJQcm9jZXNzIHRoYXQncyBiZWVuIGtpbGxlZCBvciBjcmFzaGVkLgot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRl
bShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJ
dGVtKCktPml0ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlE
KCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRp
bnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZl
bmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtOTAwLDEw
ICs5MDAsMTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQ
cm9jZXNzRm9yUmVsb2FkKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
OjpsYXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0
ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
IAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVu
Y2hQcm9jZXNzV2l0aEl0ZW06IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTkxNSw3ICs5MTUs
NyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NX
aXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdAogCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9u
YXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbihpdGVtLCBtX2JhY2tG
b3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3
YXJkKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tG
b3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgRnJh
bWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQ6Ok5vLCBXVEY6Om51bGxvcHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgaXRl
bS5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVh
dEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpKTsKICAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBA
IC05NTYsNyArOTU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBpZiAobV9p
c0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiY2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAg
ICAgbV9pc0Nsb3NlZCA9IHRydWU7CiAKQEAgLTEwMDksNyArMTAwOSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpjbG9zZSgpCiAKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucmVtb3ZlQWxs
U3VzcGVuZGVkUGFnZXNGb3JQYWdlKCp0aGlzKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNsb3NlKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgV2Vi
UHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CiAgICAgbV9wcm9jZXNzLT5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2VJRCk7CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLnN1cHBs
ZW1lbnQ8V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5PigpLT5jbGVhck5vdGlmaWNhdGlvbnMo
dGhpcyk7CkBAIC0xMDMxLDE0ICsxMDMxLDE0IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp0cnlDbG9z
ZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeUNsb3NlOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9z
ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIC8vIENsb3NlIHdpdGhvdXQg
ZGVsYXkgaWYgdGhlIHByb2Nlc3MgYWxsb3dzIGl0LiBPdXIgZ29hbCBpcyB0byB0ZXJtaW5hdGUK
ICAgICAvLyB0aGUgcHJvY2Vzcywgc28gd2UgY2hlY2sgYSBwZXItcHJvY2VzcyBzdGF0dXMgYml0
LgogICAgIGlmIChtX3Byb2Nlc3MtPmlzU3VkZGVuVGVybWluYXRpb25FbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUcnlDbG9zZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VHJ5
Q2xvc2UoKSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsK
ICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMDc3LDcgKzEwNzcsNyBAQCBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsIFNobwogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
UmVxdWVzdDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiB7
IHJlcXVlc3QudXJsKCkgfSk7CkBAIC0xMDkxLDcgKzEwOTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2NlcwogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3RX
aXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBhdXRvIHRy
YW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTExMTQsMTYg
KzExMTQsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgd2lsbEFjcXVpcmVV
bml2ZXJzYWxGaWxlUmVhZFNhbmRib3hFeHRlbnNpb24ocHJvY2Vzcyk7CiAgICAgYWRkUGxhdGZv
cm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKLSAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsK
KyAgICBzZW5kVG9Qcm9jZXNzKHByb2Nlc3MsIE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVz
dChsb2FkUGFyYW1ldGVycykpOwogICAgIHByb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5z
dGFydCgpOwogfQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZURp
cmVjdG9yeVVSTFN0cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiAgICAgVVJMIGZpbGVVUkwgPSBVUkwoVVJMKCksIGZp
bGVVUkxTdHJpbmcpOwogICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBs
b2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTQyLDcg
KzExNDIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxl
KGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGVsc2UgewogICAgICAgICBy
ZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJp
bmcpOwogICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBy
ZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwg
aXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTY0LDcgKzExNjQsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9h
ZFBhcmFtZXRlcnMpOwogCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJM
KCp0aGlzLCByZXNvdXJjZURpcmVjdG9yeVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycykpOwog
ICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1
cm4gbmF2aWdhdGlvbjsKQEAgLTExNzIsMTAgKzExNzIsMTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcs
IGNvbnMKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRE
YXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICht
X2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC0xMTg5LDcgKzExODksNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdl
UHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlv
bjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWREYXRhV2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAg
ICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTIwOSwxOSArMTIwOSwxOSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsCiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1l
dGVycyk7CiAKICAgICBwcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCBi
YXNlVVJMKTsKLSAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShs
b2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kVG9Qcm9jZXNzKHByb2Nlc3MsIE1l
c3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycykpOwogICAgIHByb2Nlc3Mt
PnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVh
Y2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNz
IGlzIGluIHRoZSBwcm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2Fk
LCBkbyBub3QgYXR0ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhU
TUwgbG9hZCBhcyB0aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVp
bmcKICAgICAvLyBoYW5kbGVkIHByb3Blcmx5LgogICAgIGlmIChtX2lzQ2xvc2VkIHx8IG1faXNM
b2FkaW5nQWx0ZXJuYXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExvYWQpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6
IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhlcik6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBp
cyBjbG9zZWQgKG9yIG90aGVyKTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1MiwxNiArMTI1MiwxNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0
YSwgY29uc3QgUwogCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0
aGlzLCBiYXNlVVJMKTsKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
KnRoaXMsIHVucmVhY2hhYmxlVVJMKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkxvYWRBbHRlcm5hdGVIVE1MKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRBbHRlcm5hdGVIVE1MKGxvYWRQYXJhbWV0ZXJz
KSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqIHdlYkFyY2hp
dmVEYXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6
IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTI3OSwxNiArMTI3OSwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVE
YXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogICAgIGxvYWRQ
YXJhbWV0ZXJzLnVzZXJEYXRhID0gVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNU
b0hhbmRsZXModXNlckRhdGEpLmdldCgpKTsKICAgICBhZGRQbGF0Zm9ybUxvYWRQYXJhbWV0ZXJz
KGxvYWRQYXJhbWV0ZXJzKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMpKTsKICAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IEludFBvaW50IGRvY3VtZW50UG9pbnQsIEludFBvaW50IHNjcmVlblBvaW50KQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVs
YXRlZENsaWNrOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVs
YXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVs
YXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI5OCwyMCArMTI5OCwyMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3Ry
aW5nJiB1cmxTdHJpbmcsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBs
YXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgVVJMKFVSTCgpLCB1cmxTdHJpbmcpIH0p
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRvUERG
TGlua1dpdGhTaW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRvY3VtZW50UG9pbnQsIHNjcmVlblBv
aW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok5hdmlnYXRlVG9Q
REZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKHVybFN0cmluZywgZG9jdW1lbnRQb2ludCwgc2NyZWVu
UG9pbnQpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9wTG9hZGluZzogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQp
OworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERG
TGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9hZGluZygpKTsKICAgICBpZiAobV9wcm92aXNp
b25hbFBhZ2UpIHsKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UtPmNhbmNlbCgpOwogICAgICAg
ICBtX3Byb3Zpc2lvbmFsUGFnZSA9IG51bGxwdHI7CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcHRp
b25zKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlbG9hZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVs
b2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAKQEAgLTEzNDYsNyArMTM0Niw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKE9wdGlvblNldDxX
ZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wCiAgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoV2ViQ29y
ZTo6UmVsb2FkT3B0aW9uOjpEaXNhYmxlQ29udGVudEJsb2NrZXJzKSkKICAgICAgICAgbmF2aWdh
dGlvbi0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChmYWxzZSk7CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbG9hZChuYXZpZ2F0aW9uLT5uYXZpZ2F0
aW9uSUQoKSwgb3B0aW9ucy50b1JhdygpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbG9hZChuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSwgb3B0aW9ucy50b1JhdygpLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKSk7CiAg
ICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVy
biBuYXZpZ2F0aW9uOwpAQCAtMTM5OCw3ICsxMzk4LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0KIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgZnJhbWVM
b2FkVHlwZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFj
a0ZvcndhcmRJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGdvVG9CYWNrRm9yd2Fy
ZEl0ZW0gdG8gaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLnVybCgpLnV0ZjgoKS5kYXRhKCkpOwog
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQpAQCAtMTQxMiw3ICsxNDEyLDcgQEAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0KICAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50
SXRlbSgpLT5pdGVtSXNJblNhbWVEb2N1bWVudChpdGVtKSkKICAgICAgICAgbmF2aWdhdGlvbiA9
IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5hdmlnYXRpb24oaXRlbSwgbV9i
YWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCksIGZyYW1lTG9hZFR5cGUpOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmln
YXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGl0ZW0uaXRlbUlEKCksIGZy
YW1lTG9hZFR5cGUsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9w
dCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0Zvcndh
cmRJdGVtKG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGl0ZW0u
aXRlbUlEKCksIGZyYW1lTG9hZFR5cGUsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8s
IFdURjo6bnVsbG9wdCkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0
YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTE0MjAsMTQgKzE0MjAsMTQgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVt
KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVT
Y3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNj
cm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3Np
dGlvbjogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0qIGFkZGVkLCBWZWN0b3I8UmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiYmIHJlbW92
ZWQpCkBAIC0xNDg5LDcgKzE0ODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29udHJvbGxl
ZEJ5QXV0b21hdGlvbihib29sIGNvbnRyb2xsZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJvbGxlZCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGNv
bnRyb2xsZWQpKTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc2VuZFRvTmV0d29ya2lu
Z1Byb2Nlc3MoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTZXNzaW9uSXNDb250cm9sbGVk
QnlBdXRvbWF0aW9uKG1fd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklEKCksIG1fY29udHJvbGxl
ZEJ5QXV0b21hdGlvbikpOwogfQogCkBAIC0xNTE0LDcgKzE1MTQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0SW5kaWNhdGluZyhib29sIGluZGljYXRpbmcpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEluZGljYXRpbmcoaW5kaWNhdGluZyksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbmRpY2F0aW5nKGluZGljYXRpbmcpKTsKIH0KIAog
Ym9vbCBXZWJQYWdlUHJveHk6OmFsbG93c1JlbW90ZUluc3BlY3Rpb24oKSBjb25zdApAQCAtMTU1
MCw3ICsxNTUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFySW5zcGVjdG9yVGFyZ2V0cygp
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCkKIHsKLSAgICBT
dHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2VJRCk7CisgICAg
U3RyaW5nIHBhZ2VUYXJnZXRJZCA9IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jcmVhdGVJbnNwZWN0b3JUYXJnZXQo
cGFnZVRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOwogfQog
CkBAIC0xNTYxLDcgKzE1NjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QmFja2dyb3VuZENv
bG9yKGNvbnN0IE9wdGlvbmFsPENvbG9yPiYgY29sb3IpCiAKICAgICBtX2JhY2tncm91bmRDb2xv
ciA9IGNvbG9yOwogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihjb2xvciksIG1f
cGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZENv
bG9yKGNvbG9yKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUb3BDb250ZW50SW5zZXQo
ZmxvYXQgY29udGVudEluc2V0KQpAQCAtMTU3Nyw5ICsxNTc3LDkgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5zZXQpCiAgICAgTWFjaFNlbmRS
aWdodCBmZW5jZSA9IG1fZHJhd2luZ0FyZWEtPmNyZWF0ZUZlbmNlKCk7CiAKICAgICBhdXRvIGZl
bmNlQXR0YWNobWVudCA9IElQQzo6QXR0YWNobWVudChmZW5jZS5sZWFrU2VuZFJpZ2h0KCksIE1B
Q0hfTVNHX1RZUEVfTU9WRV9TRU5EKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldEZlbmNlZChjb250ZW50SW5zZXQsIGZlbmNlQXR0YWNo
bWVudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250
ZW50SW5zZXRGZW5jZWQoY29udGVudEluc2V0LCBmZW5jZUF0dGFjaG1lbnQpKTsKICNlbHNlCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXQo
Y29udGVudEluc2V0KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFRvcENvbnRlbnRJbnNldChjb250ZW50SW5zZXQpKTsKICNlbmRpZgogfQogCkBAIC0xNTkxLDcg
KzE1OTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VW5kZXJsYXlDb2xvcihjb25zdCBDb2xv
ciYgY29sb3IpCiAgICAgbV91bmRlcmxheUNvbG9yID0gY29sb3I7CiAKICAgICBpZiAoaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRVbmRlcmxheUNvbG9yKGNvbG9yKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRVbmRlcmxheUNvbG9yKGNvbG9yKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCkBAIC0xNjAwLDE0ICsxNjAwLDE0IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNsb3NlT3ZlcmxheWVkVmlld3MoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbFN0YXJ0TGl2ZVJlc2l6ZSgpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpCiB7CiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbEVuZExpdmVSZXNpemUoKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUmVn
aW9uJiByZWdpb24pCkBAIC0xNzAxLDcgKzE3MDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmll
d0RpZEVudGVyV2luZG93KCkKICAgICBMYXllckhvc3RpbmdNb2RlIGxheWVySG9zdGluZ01vZGUg
PSBwYWdlQ2xpZW50KCkudmlld0xheWVySG9zdGluZ01vZGUoKTsKICAgICBpZiAobV9sYXllckhv
c3RpbmdNb2RlICE9IGxheWVySG9zdGluZ01vZGUpIHsKICAgICAgICAgbV9sYXllckhvc3RpbmdN
b2RlID0gbGF5ZXJIb3N0aW5nTW9kZTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUo
bGF5ZXJIb3N0aW5nTW9kZSkpOwogICAgIH0KIH0KIApAQCAtMTc1MCw3ICsxNzUwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpc3BhdGNoQWN0aXZpdHlTdGF0ZUNoYW5nZSgpCiAgICAgYXV0byBh
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQgPSBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VXYW50c1N5bmNocm9u
b3VzUmVwbHkgPyB0YWtlTmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCgpIDogc3RhdGljX2Nhc3Q8
QWN0aXZpdHlTdGF0ZUNoYW5nZUlEPihBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzKTsK
IAogICAgIGlmIChjaGFuZ2VkIHx8IGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCAhPSBBY3Rpdml0eVN0
YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8ICFtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJh
Y2tzLmlzRW1wdHkoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0ZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
LCBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzKSwgbV9wYWdlSUQpOworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBY3Rpdml0eVN0YXRlKG1fYWN0aXZpdHlTdGF0
ZSwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJh
Y2tzKSk7CiAKICAgICBtX25leHRBY3Rpdml0eVN0YXRlQ2hhbmdlQ2FsbGJhY2tzLmNsZWFyKCk7
CiAKQEAgLTE4NTMsNyArMTg1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXllckhvc3RpbmdN
b2RlRGlkQ2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9sYXllckhvc3RpbmdNb2Rl
ID0gbGF5ZXJIb3N0aW5nTW9kZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGlu
Z01vZGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0
eVN0YXRlKEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCkBAIC0x
ODk1LDIxICsxODk1LDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbml0aWFsRm9jdXMoYm9v
bCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zCiAgICAgfQogCiAgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMoZm9y
d2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQsIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZv
cndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhclNlbGVjdGlvbigpCiB7CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlbGVjdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJTZWxlY3Rpb24oKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCkKIHsKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0
YWJsZUVsZW1lbnQoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
c3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBib29sLCBpbnQzMl90LCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMTkyMCw3ICsxOTIwLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1l
LCBXVEY6OkZ1bmN0aW9uPHZvaWQKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29tbWFuZChjb21tYW5kTmFtZSwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQo
Y29tbWFuZE5hbWUsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmluY3Jl
YXNlTGlzdExldmVsKCkKQEAgLTE5MjgsNyArMTkyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bmNyZWFzZUxpc3RMZXZlbCgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkluY3Jl
YXNlTGlzdExldmVsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJ
bmNyZWFzZUxpc3RMZXZlbCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY3JlYXNlTGlz
dExldmVsKCkKQEAgLTE5MzYsNyArMTkzNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNyZWFz
ZUxpc3RMZXZlbCgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRlY3JlYXNlTGlz
dExldmVsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEZWNyZWFz
ZUxpc3RMZXZlbCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUxpc3RUeXBlKCkK
QEAgLTE5NDQsNyArMTk0NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSgp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUxpc3RUeXBlKCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VMaXN0VHlwZSgpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJl
Y3Rpb24gZGlyZWN0aW9uKQpAQCAtMTk1Miw3ICsxOTUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKFdyaXRpbmdEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihkaXJl
Y3Rpb24pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFzZVdy
aXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVGb250QXR0cmlidXRlc0FmdGVyRWRpdG9yU3RhdGVDaGFuZ2UoKQpAQCAtMTk3Niw3ICsxOTc2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE5lZWRzRm9udEF0dHJpYnV0ZXMoYm9vbCBuZWVk
c0ZvbnRBdHRyaWJ1dGVzKQogICAgIG1fbmVlZHNGb250QXR0cmlidXRlcyA9IG5lZWRzRm9udEF0
dHJpYnV0ZXM7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKG5lZWRz
Rm9udEF0dHJpYnV0ZXMpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldE5lZWRzRm9udEF0dHJpYnV0ZXMobmVlZHNGb250QXR0cmlidXRlcykpOwogfQogCiBi
b29sIFdlYlBhZ2VQcm94eTo6bWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oKSBjb25zdApAQCAt
MTk5OSw3ICsxOTk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjaGVkdWxlRnVsbEVkaXRvclN0
YXRlVXBkYXRlKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NoZWR1bGVGdWxs
RWRpdG9yU3RhdGVVcGRhdGUoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VsZWN0QWxsKCkKQEAgLTIwMDcsNyArMjAwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZWxlY3RBbGwoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RBbGwo
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEFsbCgpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcm
IGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTIwMTgsNyArMjAx
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5n
JiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRXaXRoQ2FsbGJhY2so
Y29tbWFuZE5hbWUsIGFyZ3VtZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb21tYW5k
TmFtZSwgYXJndW1lbnQsIGNhbGxiYWNrSUQpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5
OjpleGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3Ry
aW5nJiBhcmd1bWVudCkKQEAgLTIwMzEsNyArMjAzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpl
eGVjdXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5n
JiBhCiAgICAgaWYgKGNvbW1hbmROYW1lID09IGlnbm9yZVNwZWxsaW5nQ29tbWFuZE5hbWUpCiAg
ICAgICAgICsrbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291bnQ7CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZChjb21t
YW5kTmFtZSwgYXJndW1lbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lLCBhcmd1bWVudCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGdW5j
dGlvbjx2b2lkKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVzJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2spCkBAIC0yMDQyLDcgKzIwNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChGdW5jdGlvbjx2b2lkKGNv
bnN0IFdlYgogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVl
c3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVj
dGlvblN0YXJ0KGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdHRy
aWJ1dGVzQ2FsbGJhY2soY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKQEAgLTIwNjMsNyArMjA2Myw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRFZGl0YWJsZShib29sIGVkaXRhYmxlKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRFZGl0YWJsZShlZGl0YWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRFZGl0YWJsZShlZGl0YWJsZSkpOwogfQogICAgIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldE1lZGlhU3RyZWFtQ2FwdHVyZU11dGVkKGJvb2wgbXV0ZWQpCkBAIC0y
MTI4LDkgKzIxMjgsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURyYWdDb250cm9sbGVy
QWN0aW9uKERyYWdDb250cm9sbGVyQWN0aW9uIGFjdGlvbiwgRHJhZwogCiAgICAgQVNTRVJUKGRy
YWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKICAgICBXZWJTZWxlY3Rpb25EYXRhIHNlbGVjdGlvbigq
ZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEuY2xp
ZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEuZ2xvYmFsUG9zaXRpb24oKSwgZHJhZ0RhdGEuZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIHNlbGVjdGlvbiwgZHJhZ0RhdGEuZmxhZ3MoKSksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpLCBkcmFnRGF0YS5nbG9i
YWxQb3NpdGlvbigpLCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSwgc2Vs
ZWN0aW9uLCBkcmFnRGF0YS5mbGFncygpKSk7CiAjZWxzZQotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJh
Z0RhdGEsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2Fk
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29u
dHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBz
YW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCkpOwogI2VuZGlmCiB9CiAKQEAgLTIxNjAsNyArMjE2
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnRW5kZWQoY29uc3QgSW50UG9pbnQmIGNsaWVu
dFBvc2l0aW9uLCBjb25zdCBJbnRQb2ludCYgZ2xvCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBvcGVyYXRp
b24pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVkKGNs
aWVudFBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0aW9uKSk7CiAgICAgc2V0RHJhZ0Nh
cmV0UmVjdCh7IH0pOwogfQogCkBAIC0yMTcyLDEzICsyMTcyLDEzIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRQZXJmb3JtRHJhZ09wZXJhdGlvbihib29sIGhhbmRsZWQpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkU3RhcnREcmFnKCkKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTdGFydERyYWcoKSwg
bV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTdGFydERyYWco
KSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0NhbmNlbGxlZCgpCiB7CiAgICAg
aWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RHJhZ0NhbmNlbGxlZCgpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRyYWdDYW5jZWxsZWQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRFbmREcmFnZ2luZygpCkBAIC0yMjc3LDcgKzIyNzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cHJvY2Vzc05leHRRdWV1ZWRNb3VzZUV2ZW50KCkKICAgICB9CiAKICAgICBMT0coTW91c2VI
YW5kbGluZywgIlVJUHJvY2Vzczogc2VudCBtb3VzZSBldmVudCAlcyAocXVldWUgc2l6ZSAlenUp
Iiwgd2ViTW91c2VFdmVudFR5cGVTdHJpbmcoZXZlbnRUeXBlKSwgbV9tb3VzZUV2ZW50UXVldWUu
c2l6ZSgpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNlRXZl
bnQoZXZlbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VF
dmVudChldmVudCkpOwogfQogCiAjaWYgTUVSR0VfV0hFRUxfRVZFTlRTCkBAIC0yNDM3LDcgKzI0
MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBOYXRp
dmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIAogICAgIGlmIChtX2tleUV2ZW50UXVldWUuc2l6
ZSgpID09IDEpIHsgLy8gT3RoZXJ3aXNlLCBzZW50IGZyb20gRGlkUmVjZWl2ZUV2ZW50IG1lc3Nh
Z2UgaGFuZGxlci4KICAgICAgICAgTE9HKEtleUhhbmRsaW5nLCAiIFVJIHByb2Nlc3M6IHNlbnQg
a2V5RXZlbnQgZnJvbSBoYW5kbGVLZXlib2FyZEV2ZW50Iik7Ci0gICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50KGV2ZW50KSk7CiAgICAgfQogfQog
CkBAIC0yNjQzLDcgKzI2NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVu
dFN5bmNocm9ub3VzbHkoTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAKICAgICBtX3Byb2Nl
c3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogICAgIGJvb2wgaGFuZGxlZCA9IGZh
bHNlOwotICAgIGJvb2wgcmVwbHlSZWNlaXZlZCA9IG1fcHJvY2Vzcy0+c2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jKGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlRv
dWNoRXZlbnRTeW5jOjpSZXBseShoYW5kbGVkKSwgbV9wYWdlSUQsIDFfcyk7CisgICAgYm9vbCBy
ZXBseVJlY2VpdmVkID0gc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5j
KGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnRTeW5jOjpSZXBseShoYW5kbGVk
KSwgMV9zKTsKICAgICAvLyBJZiB0aGUgc3luYyByZXF1ZXN0IGhhcyB0aW1lZCBvdXQsIHdlIHNo
b3VsZCBjb25zaWRlciB0aGUgZXZlbnQgaGFuZGxlZC4gVGhlIFdlYiBQcm9jZXNzIGlzIHRvbyBi
dXN5IHRvIGFuc3dlciBhbnkgcXVlc3Rpb25zLCBzbyB0aGUgZGVmYXVsdCBhY3Rpb24gaXMgYWxz
byBsaWtlbHkgdG8gaGF2ZSBpc3N1ZXMuCiAgICAgaWYgKCFyZXBseVJlY2VpdmVkKQogICAgICAg
ICBoYW5kbGVkID0gdHJ1ZTsKQEAgLTI2ODcsNyArMjY4Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogICAg
IGlmICghbV9pc1BhZ2VTdXNwZW5kZWQpIHsKICAgICAgICAgbV90b3VjaEV2ZW50UXVldWUuYXBw
ZW5kKGV2ZW50KTsKICAgICAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3Rh
cnQoKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2
ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpU
b3VjaEV2ZW50KGV2ZW50KSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fdG91Y2hFdmVu
dFF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgYm9vbCBpc0V2ZW50SGFuZGxlZCA9IGZh
bHNlOwpAQCAtMjcwOCwxMiArMjcwOCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91
Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICNpZiBFTkFCTEUoUE9J
TlRFUl9FVkVOVFMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsUG9pbnRlcihXZWJDb3JlOjpQ
b2ludGVySUQgcG9pbnRlcklkLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZG9jdW1lbnRQb2lu
dCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbFBvaW50
ZXIocG9pbnRlcklkLCBkb2N1bWVudFBvaW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNhbmNlbFBvaW50ZXIocG9pbnRlcklkLCBkb2N1bWVudFBvaW50KSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0b3VjaFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChXZWJD
b3JlOjpQb2ludGVySUQgcG9pbnRlcklkKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VG91Y2hXaXRoSWRlbnRpZmllcldhc1JlbW92ZWQocG9pbnRlcklkKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoV2l0aElkZW50aWZpZXJX
YXNSZW1vdmVkKHBvaW50ZXJJZCkpOwogfQogI2VuZGlmCiAKQEAgLTI3MjIsNyArMjcyMiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzY3JvbGxCeShTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uLCBT
Y3JvbGxHcmFudWxhcml0eSBncmFudWxhCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNjcm9sbEJ5KGRpcmVjdGlvbiwgZ3JhbnVsYXJpdHkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2Nyb2xsQnkoZGlyZWN0aW9uLCBncmFudWxhcml0eSkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpCkBAIC0y
NzMwLDcgKzI3MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNp
YmxlQXJlYSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNlbGVjdGlv
bkluVmlzaWJsZUFyZWEoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKSk7CiB9CiAKIGNsYXNzIFdlYlBhZ2VQcm94
eTo6UG9saWN5RGVjaXNpb25TZW5kZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxQb2xpY3lEZWNpc2lv
blNlbmRlcj4gewpAQCAtMjg3Myw3ICsyODczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgog
dm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJh
bWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0
IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5z
UGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9y
Y2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
QVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IHByZXZpb3VzUElEID0gJWksIG5ld1BJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9u
YWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9j
ZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZy
YW1lID8gbWFrZU9wdGlvbmFsKG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0
OwogCkBAIC0yODk2LDcgKzI4OTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlz
aW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiAgICAg
Ly8gVGhlcmUgaXMgbm8gd2F5IHdlJ2xsIGJlIGFibGUgdG8gcmV0dXJuIHRvIHRoZSBwYWdlIGlu
IHRoZSBwcmV2aW91cyBwYWdlIHNvIGNsb3NlIGl0LgogICAgIGlmICghZGlkU3VzcGVuZFByZXZp
b3VzUGFnZSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9z
ZSgpLCBwYWdlSUQoKSk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCkp
OwogCiAgICAgc3dhcFRvV2ViUHJvY2VzcyhtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLCBt
X3Byb3Zpc2lvbmFsUGFnZS0+dGFrZURyYXdpbmdBcmVhKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5t
YWluRnJhbWUoKSk7CiAKQEAgLTI5MTMsNyArMjkxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
b21taXRQcm92aXNpb25hbFBhZ2UodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklECiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3Mo
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFn
ZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2VQcm94eSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBuZXdQ
cm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnRpbnVlTmF2aWdh
dGlvbkluTmV3UHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBuZXdQ
cm9jZXNzUElEID0gJWksIGhhc1N1c3BlbmRlZFBhZ2UgPSAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
ICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWki
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIG5l
d1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKICAg
ICBMT0coTG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGlu
IGEgbmV3IHdlYiBwcm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlv
bi5sb2dnaW5nU3RyaW5nKCkpOwogCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlKSB7CkBAIC0y
OTM4LDcgKzI5MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5O
ZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgcwogICAgIGlmIChtX2JhY2tG
b3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSAmJiAobmF2aWdhdGlvbi5sb2NrQmFja0ZvcndhcmRM
aXN0KCkgPT0gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIHx8IG5hdmlnYXRpb24ubG9ja0hpc3Rv
cnkoKSA9PSBMb2NrSGlzdG9yeTo6WWVzKSkgewogICAgICAgICAvLyBJZiBXZWJDb3JlIGlzIHN1
cHBvc2VkIHRvIGxvY2sgdGhlIGhpc3RvcnkgZm9yIHRoaXMgbG9hZCwgdGhlbiB0aGUgbmV3IHBy
b2Nlc3MgbmVlZHMgdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCBoaXN0b3J5IGl0ZW0gc28gaXQg
Y2FuIHVwZGF0ZQogICAgICAgICAvLyBpdCBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IG9uZS4K
LSAgICAgICAgbmV3UHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VycmVudEhp
c3RvcnlJdGVtRm9yUmVhdHRhY2gobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0
ZW1TdGF0ZSgpKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kVG9Qcm9jZXNzKG5ld1Byb2Nlc3Ms
IE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXJyZW50SGlzdG9yeUl0ZW1Gb3JSZWF0dGFjaChtX2Jh
Y2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbVN0YXRlKCkpKTsKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogV29yayBvdXQgdGltaW5nIG9mIHJlc3BvbmRpbmcgd2l0aCB0aGUgbGFzdCBw
b2xpY3kgZGVsZWdhdGUsIGV0YwpAQCAtMjk4OCw3ICsyOTg4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiAKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFVzZXJBZ2VudChtX3VzZXJBZ2VudCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VyQWdlbnQobV91c2VyQWdlbnQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChjb25zdCBT
dHJpbmcmIGFwcGxpY2F0aW9uTmFtZSkKQEAgLTMwMjUsNyArMzAyNSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKICAgICBtX2lz
UGFnZVN1c3BlbmRlZCA9IGZhbHNlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFu
aW1hdGlvbnMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnMoKQpAQCAtMzAzNSw3ICszMDM1LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKICAgICBtX2lzUGFn
ZVN1c3BlbmRlZCA9IHRydWU7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmlt
YXRpb25zKCkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2Rpbmco
KSBjb25zdApAQCAtMzA1Miw3ICszMDUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3Rv
bVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdO
YW1lKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRl
eHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1lKSk7CiB9CiAKIFNlc3Npb25TdGF0ZSBXZWJQYWdl
UHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CkBAIC0zMDc0LDcgKzMwNzQsNyBAQCBTZXNzaW9uU3Rh
dGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxib29sIChXZWJCYWNr
Rm9yd2FyZExpc3RJdAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJl
c3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUsIGJvb2wgbmF2
aWdhdGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdG9yZUZy
b21TZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOwogCiAgICAgbV9zZXNzaW9uUmVzdG9yYXRpb25SZW5kZXJUcmVlU2l6ZSA9
IDA7CiAgICAgbV9oaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCA9IGZhbHNlOwpAQCAtMzA4Myw3
ICszMDgzLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZXN0b3Jl
RnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2kKIAogICAgIGlmIChoYXNCYWNrRm9y
d2FyZExpc3QpIHsKICAgICAgICAgbV9iYWNrRm9yd2FyZExpc3QtPnJlc3RvcmVGcm9tU3RhdGUo
V1RGTW92ZShzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRMaXN0U3RhdGUpKTsKLSAgICAgICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0Zvcndh
cmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVzKCkp
KTsKIAogICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0
aW9uKCk7CiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRDYW5Hb0JhY2sodHJhbnNhY3Rpb24s
IG1fYmFja0ZvcndhcmRMaXN0LT5iYWNrSXRlbSgpKTsKQEAgLTMxMzEsNyArMzEzMSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0Wm9vbUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dFpvb21GYWN0b3IobV90ZXh0Wm9v
bUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4
dFpvb21GYWN0b3IobV90ZXh0Wm9vbUZhY3RvcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCkBAIC0zMTQ2LDcgKzMxNDYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3Ip
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2Vab29tRmFjdG9yKG1fcGFn
ZVpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFBhZ2Vab29tRmFjdG9yKG1fcGFnZVpvb21GYWN0b3IpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3Vi
bGUgdGV4dFpvb21GYWN0b3IpCkBAIC0zMTYyLDcgKzMxNjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRvdWJs
ZSB0ZXh0WgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlQW5kVGV4dFpv
b21GYWN0b3JzKG1fcGFnZVpvb21GYWN0b3IsIG1fdGV4dFpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7
IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMo
bV9wYWdlWm9vbUZhY3RvciwgbV90ZXh0Wm9vbUZhY3RvcikpOwogfQogCiBkb3VibGUgV2ViUGFn
ZVByb3h5OjpwYWdlWm9vbUZhY3RvcigpIGNvbnN0CkBAIC0zMTkyLDcgKzMxOTIsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdlKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIG9y
aWdpbikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlKHNjYWxlLCBv
cmlnaW4pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdl
KHNjYWxlLCBvcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFnZUluVmll
d0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIGNlbnRlckluVmlld0Nv
b3JkaW5hdGVzKQpAQCAtMzIwNCw3ICszMjA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxl
UGFnZUluVmlld0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIGNlbnQK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlSW5WaWV3Q29vcmRpbmF0
ZXMoc2NhbGUsIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKHNjYWxlLCBjZW50
ZXJJblZpZXdDb29yZGluYXRlcykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVWaWV3
KGRvdWJsZSBzY2FsZSkKQEAgLTMyMTYsNyArMzIxNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
Y2FsZVZpZXcoZG91YmxlIHNjYWxlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
Y2FsZVZpZXcoc2NhbGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2NhbGVWaWV3KHNjYWxlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnRyaW5zaWNE
ZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKQEAgLTMyMzUsNyArMzIzNSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNwbGF5
SUQgZGlzcGxheUlEKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoZGlzcGxheUlEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OldpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpKTsKIH0KIAogZmxvYXQgV2Vi
UGFnZVByb3h5OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CkBAIC0zMjc0LDcgKzMyNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCkKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hh
bmdlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2Nlc3NpYmls
aXR5U2V0dGluZ3NEaWRDaGFuZ2UoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VG
aXhlZExheW91dChib29sIGZpeGVkKQpAQCAtMzI5MSw3ICszMjkxLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkK
QEAgLTMzMDQsNyArMzMwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNp
emUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NIb3Jp
em9udGFsU2Nyb2xsZXIpCkBAIC0zMzE3LDcgKzMzMTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c0hvcml6b250
YWxTYwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c0hvcml6
b250YWxTY3JvbGxlcihhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c0hvcml6b250YWxTY3Jv
bGxlcihhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NWZXJ0
aWNhbFNjcm9sbGVyKQpAQCAtMzMzMCw3ICszMzMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzVmVydGljYWxTY3Jv
bGwKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NWZXJ0aWNh
bFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlciksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYWx3
YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpsaXN0
ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+
IG1pbGVzdG9uZXMpCkBAIC0zMzQzLDcgKzMzNDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGlz
dGVuRm9yTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25l
PgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlvdXRNaWxlc3Rv
bmVzKG1pbGVzdG9uZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0FuaW1h
dGlvbnMpCkBAIC0zMzU2LDcgKzMzNTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJl
c3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoc3Vw
cHJlc3NBbmltYXRpb25zKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhzdXBwcmVzc0FuaW1hdGlvbnMpKTsKIH0K
IAogYm9vbCBXZWJQYWdlUHJveHk6OnJ1YmJlckJhbmRzQXRMZWZ0KCkgY29uc3QKQEAgLTM0MDgs
NyArMzQwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJh
bmRpbmcoYm9vbCBlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpCiAKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhlbmFibGVWZXJ0aWNh
bFJ1YmJlckJhbmRpbmcpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGlu
ZykpOwogfQogICAgIAogYm9vbCBXZWJQYWdlUHJveHk6OnZlcnRpY2FsUnViYmVyQmFuZGluZ0lz
RW5hYmxlZCgpIGNvbnN0CkBAIC0zNDI1LDcgKzM0MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoYm9vbCBlbmFibGVIb3Jpem9udGFsUnVi
YmVyQgogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVIb3Jpem9udGFs
UnViYmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVIb3Jpem9udGFsUnViYmVyQmFu
ZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZykpOwogfQogICAgIAogYm9vbCBXZWJQ
YWdlUHJveHk6Omhvcml6b250YWxSdWJiZXJCYW5kaW5nSXNFbmFibGVkKCkgY29uc3QKQEAgLTM0
NDIsNyArMzQ0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kRXh0ZW5kc0Jl
eW9uZFBhZ2UoYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhCiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShiYWNrZ3JvdW5k
RXh0ZW5kc0JleW9uZFBhZ2UpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5b25k
UGFnZSkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6YmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQ
YWdlKCkgY29uc3QKQEAgLTM0NTksNyArMzQ1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQ
YWdpbmF0aW9uTW9kZShXZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlIG1vZGUpCiAKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25Nb2RlKG1vZGUpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbk1vZGUobW9kZSkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhi
b29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKQEAgLTM0NzEsNyArMzQ3MSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJvb2wgYmVoYXZlc0xpa2VD
b2x1bW5zKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uQmVo
YXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucyksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2
ZXNMaWtlQ29sdW1ucykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxlbmd0aChk
b3VibGUgcGFnZUxlbmd0aCkKQEAgLTM0ODMsNyArMzQ4Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRQYWdlTGVuZ3RoKGRvdWJsZSBwYWdlTGVuZ3RoKQogCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRQYWdlTGVuZ3RoKHBhZ2VMZW5ndGgpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMoZG91YmxlIGdhcCkKQEAgLTM0OTUs
NyArMzQ5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMoZG91Ymxl
IGdhcCkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0R2FwQmV0d2VlblBhZ2Vz
KGdhcCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRHYXBCZXR3
ZWVuUGFnZXMoZ2FwKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uTGlu
ZUdyaWRFbmFibGVkKGJvb2wgbGluZUdyaWRFbmFibGVkKQpAQCAtMzUwNyw3ICszNTA3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbCBsaW5l
R3JpZEVuYWJsZWQpCiAgICAgCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdp
bmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVH
cmlkRW5hYmxlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGFnZVNjYWxlRmFjdG9yRGlk
Q2hhbmdlKGRvdWJsZSBzY2FsZUZhY3RvcikKQEAgLTM1MzIsMjcgKzM1MzIsMjcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5k
T3B0aW9ucyBvcHRpb25zLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlv
bnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBG
aW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMs
IG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCkKIHsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEltYWdlRm9yRmluZE1h
dGNoKG1hdGNoSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2VsZWN0RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCkKIHsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEZpbmRNYXRjaChtYXRjaEluZGV4KSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEZpbmRNYXRjaChtYXRj
aEluZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlRmluZFVJKCkKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZp
bmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCkBAIC0zNTYwLDcgKzM1
NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5nTWF0
Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNv
bnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIEZ1bmN0aW9u
PHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtMzU3
MSw3ICszNTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1
aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYKICAgICB9CiAKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNoSW5k
aWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3Zl
KG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJ
RCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vz
c2FyeSgpCkBAIC0zNTk2LDE0ICszNTk2LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZh
U2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vCiAg
ICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZh
U2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIHdv
cmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlvbkRl
dGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAg
IEFTU0VSVChtYWluRnJhbWUoKS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpOwogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJhbWUoZnJhbWVJ
RCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbkZyYW1lKGZyYW1lSUQsIHNj
cmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQpAQCAtMzYxNCw3ICszNjE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRy
ZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QKICAgICB9
CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5k
ZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0
aW9uKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZy
YW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmlu
ZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNjI2LDcg
KzM2MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERl
cGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlE
KCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CkBAIC0zNjM4LDcgKzM2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0
cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYQogICAgIAogICAg
IGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwog
ICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNTdHJpbmco
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRD
b250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpA
QCAtMzY0OSw3ICszNjQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNBdHRy
aWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXQKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5nKCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApAQCAtMzY2Miw3ICsz
NjYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShXVEY6OkZ1bmN0
aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAKICAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBl
bmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUo
Y2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxl
ck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6
RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNjc0LDcgKzM2NzQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFN0cmluZyYsCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJh
Y2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2Fs
bGJhY2tJRCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzY4Niw3ICszNjg2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoRnVuY3Rpb248dm9pZCAo
QVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXMKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxE
YXRhKGNhbGxiYWNrSUQpKTsKIH0KICNlbmRpZgogCkBAIC0zNjk4LDcgKzM2OTgsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVuY3Rp
b248dm9pZCAoY29uc3QgU3RyaQogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlv
bk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNzA5LDcgKzM3
MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShG
dW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYgogICAgIH0KICAgICAKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURh
dGEoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1l
LCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQpAQCAtMzcyMCw3ICszNzIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2
b2kKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5SZXNvdXJj
ZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgQVBJOjpVUkwqIHJlc291cmNlVVJMLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzczMSw3ICszNzMxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoZnJhbWUt
PmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZyb21GcmFtZShm
cmFtZS0+ZnJhbWVJRCgpLCByZXNvdXJjZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNrSUQpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkq
IGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc0Miw3ICszNzQyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlvbjx2
b2lkIChBUEkKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hpdmVP
ZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAt
Mzc3Niw3ICszNzc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8
Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fZHJhd2luZ0FyZWEt
PndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFja0lE
KSk7CiB9CiAKIHN0YXRpYyBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBwcmludGluZ1NlbmRP
cHRpb25zKGJvb2wgaXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pCkBAIC0zODAyLDcgKzM4
MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogICAgIC8v
IGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJIHByb2Nlc3MsIHNvIHRoYXQgb3ZlcnJpZGVz
IGdldCByZW1vdmVkLgogCiAgICAgLy8gUHJlZmVyZW5jZXMgbmVlZCB0byBiZSB1cGRhdGVkIGR1
cmluZyBzeW5jaHJvbm91cyBwcmludGluZyB0byBtYWtlICJwcmludCBiYWNrZ3JvdW5kcyIgcHJl
ZmVyZW5jZSB3b3JrIHdoZW4gdG9nZ2xlZCBmcm9tIGEgcHJpbnQgZGlhbG9nIGNoZWNrYm94Lgot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRDaGFu
Z2UocHJlZmVyZW5jZXNTdG9yZSgpKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9p
c1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3RvcmUoKSksIHByaW50aW5nU2Vu
ZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCkBAIC0zOTMy
LDggKzM5MzIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRG
b3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAgaWYgKGZyYW1lLT5pc01h
aW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKICAgICAgICAgbmF2aWdhdGlvbiA9IG5hdmlnYXRp
b25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAotICAgIExPRyhMb2FkaW5nLCAi
V2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUi
IFBSSXU2NCAiLCB1cmwgJXMiLCBtX3BhZ2VJRCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJ
RCk7CisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2Vz
cyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBS
SXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1fcGFnZUlELnRvVUlu
dDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQsIG5hdmlnYXRpb25J
RCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBh
dXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTM5
ODUsNyArMzk4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAl
IiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlELCBu
YXZpZ2F0aW9uSUQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwog
CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAt
NDAxNCw3ICs0MDE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjwKIAogdm9pZCBXZWJQYWdl
UHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5LCBXZWJDb3JlOjpMb2NrQmFja0Zvcndh
cmRMaXN0KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIndpbGxQZXJm
b3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGll
bnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQwMjcsNyArNDAyNyw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5j
ZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVj
dEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdl
Q2xpZW50KCkpOwogCkBAIC00MDc0LDggKzQwNzQsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3Vy
aQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQ
YWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCks
IGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdl
UHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCks
IHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRh
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCBlcnJvci5kb21h
aW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MTQxLDkgKzQxNDEsOSBA
QCBzdGF0aWMgYm9vbCBpc05vblVuaXF1ZU5hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb24oY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhIHJlcQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwg
dWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJ
bmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9u
YWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkg
JSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJdTY0
LCBtX3BhZ2VJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBX
ZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRp
b24gJSIgUFJJdTY0LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOwogICAgIExP
RyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0LCBiYWNrL2Zv
cndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2luZ1N0cmluZygp
KTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9y
RnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZy
YW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwg
ZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50
KCkpOwogCkBAIC00MjU0LDcgKzQyNTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwg
ZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNo
RG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQyNzgsNyArNDI3OCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUgLSBXZWJQYWdlUHJveHkgJXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIg
ZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRpb25JRCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDMyMyw3ICs0MzIz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZh
aWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3Iu
ZXJyb3JDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZh
aWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCBlcnJvci5kb21h
aW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MzY1LDcgKzQzNjUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYg
dXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZy
YW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgp
KTsKIApAQCAtNDUzNSw3ICs0NTM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2FmZUJy
b3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW4KICNlbmRp
ZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKKyAgICBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
RGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAgICAgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCks
IGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmln
YXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCkBAIC00NTQzLDcgKzQ1NDMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcgogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwKLSAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFj
dGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5m
b0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAg
ICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CkBAIC00
NTUxLDcgKzQ1NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogICAgIE1FU1NBR0VfQ0hF
Q0socHJvY2VzcywgZnJhbWUpOwogCiAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lEZWNpc2lvblNl
bmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySUQsIHByb2Nlc3MgPSBwcm9jZXNzLmNvcHlSZWYoKV0g
KGF1dG8uLi4gYXJncykgewotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiks
IG1fcGFnZUlEKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKICAgICB9KTsKIAogICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24ocHJvY2Vzcy5jb3B5UmVmKCksICpmcmFtZSwgV1RGTW92ZShmcmFtZVNlY3VyaXR5
T3JpZ2luKSwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgV1RG
TW92ZShmcmFtZUluZm9EYXRhKSwgb3JpZ2luYXRpbmdQYWdlSUQsCkBAIC00NTU5LDcgKzQ1NTks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFz
eW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdp
bmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsCiAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVyKQogewogICAg
IExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uIC0gT3JpZ2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdldCBVUkwgJXMiLCBvcmlnaW5hbFJl
cXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKQEAgLTQ2OTksNyArNDY5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
cHJvY2VzCiAgICAgICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1lID09ICZmcmFt
ZSkKICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJhbWVJbmZvLmNv
cHlSZWYoKTsKICAgICAgICAgZWxzZSBpZiAoIWZyb21BUEkpCi0gICAgICAgICAgICBzb3VyY2VG
cmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlE
KSA6IG51bGxwdHIpOworICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8g
cHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CiAKICAgICAg
ICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwcm9jZXNzLT51c2VySW5pdGlhdGVkQWN0
aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwog
ICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHByZXNzQXBwTGlu
a3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KQEAgLTQ3NzIsNyArNDc3Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgV2ViRnJhbWVQcm94eSYg
ZnJhbWUsIGNvbnN0IFVSTCYgcGFnCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNN
YWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAor
ICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTQ3OTAsNyArNDc5MCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRl
bnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTQ4MjEsNyArNDgyMSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU2VjdXJpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dzaW5nV2FybmluZywgIXNh
ZmVCcm93c2luZ1dhcm5pbmcpOwogCiAgICAgICAgIGF1dG8gc2VuZGVyID0gUG9saWN5RGVjaXNp
b25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdIChhdXRvLi4uIGFyZ3MpIHsK
LSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7
CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLikpOwogICAgICAgICB9KTsKIAogICAg
ICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbnVsbHB0ciwgV1RGOjpu
dWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpAQCAtNDg3MCw3ICs0ODcwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzcywKICAgICAgICAgQVNTRVJUX1VOVVNFRChzYWZlQnJvd3NpbmdXYXJuaW5n
LCAhc2FmZUJyb3dzaW5nV2FybmluZyk7CiAKICAgICAgICAgYXV0byBzZW5kZXIgPSBQb2xpY3lE
ZWNpc2lvblNlbmRlcjo6Y3JlYXRlKGlkZW50aWZpZXIsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRCwgcHJvY2VzcyA9IFdU
Rk1vdmUocHJvY2VzcyldIChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBs
aXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxp
c3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgfSk7CiAg
ICAgICAgIAogICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwgbmF2
aWdhdGlvbi5nZXQoKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpAQCAtNDkwNyw3
ICs0OTA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKICAgICBNRVNTQUdFX0NIRUNLKG1f
cHJvY2Vzcywgc291cmNlRnJhbWUpOwogCiAgICAgbV9mb3JtQ2xpZW50LT53aWxsU3VibWl0Rm9y
bSgqdGhpcywgKmZyYW1lLCAqc291cmNlRnJhbWUsIHRleHRGaWVsZFZhbHVlcywgbV9wcm9jZXNz
LT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0o
KSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGludWVX
aWxsU3VibWl0Rm9ybShmcmFtZUlELCBsaXN0ZW5lcklEKSwgbV9wYWdlSUQpOworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250aW51ZVdpbGxTdWJtaXRGb3JtKGZyYW1lSUQsIGxp
c3RlbmVySUQpKTsKICAgICB9KTsKIH0KIApAQCAtNDkyMyw3ICs0OTIzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRp
b25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgV2Vi
TmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRh
dGFTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdl
Q2xpZW50KCkpOwogCkBAIC00OTQzLDcgKzQ5NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25z
dAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJp
bmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVu
dFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBm
cmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3Jt
Q2xpZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTcwLDcgKzQ5NzAsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3Ry
aW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90
IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVy
Zm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VD
bGllbnQoKSk7CiAKQEAgLTUwMTgsMTQgKzUwMTgsMTQgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJ
TUlaRVJfQURESVRJT05TXzYKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRl
TmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5k
b3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNv
bnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQ
YWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vz
cywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkp
OwotICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRl
KG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5n
UGFnZUlEKSk7CisgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZv
OjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IG1f
cHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CiAgICAgYXV0
byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwoKSA6IFVSTCgp
OwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBs
eSldIChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCFuZXdQYWdlKSB7Ci0gICAgICAgICAgICByZXBseSgwLCBXVEY6Om51bGxvcHQpOworICAgICAg
ICAgICAgcmVwbHkoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTUzNzQsNyArNTM3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpydW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1NoYXJlU2hlZXQoY29uc3QgU2hhcmVEYXRh
V2l0aFBhcnNlZFVSTCYgc2hhcmVEYXRhLCBTaGFyZVNoZWV0Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogewogICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVy
ID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gKGJv
b2wgYWNjZXNzKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ29tcGxldGVTaGFyZVNoZWV0KGFjY2VzcywgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVTaGFyZVNoZWV0KGFjY2Vz
cywgY2FsbGJhY2tJRCkpOwogICAgIH07CiAgICAgCiAgICAgcGFnZUNsaWVudCgpLnNob3dTaGFy
ZVNoZWV0KHNoYXJlRGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTQwNiw3
ICs1NDA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKGZsb2F0IHZvbHVt
ZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1lKHZv
bHVtZSksIG1fcGFnZUlEKTsgICAgCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWVk
aWFWb2x1bWUodm9sdW1lKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNdXRlZChXZWJD
b3JlOjpNZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mgc3RhdGUpCkBAIC01NDIyLDcgKzU0
MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNl
cjo6TXV0ZWRTdGF0ZUZsYWdzIHN0YXRlKQogICAgICAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdl
cjo6c2luZ2xldG9uKCkubXV0ZUNhcHR1cmVNZWRpYVN0cmVhbXNFeGNlcHRJbigqdGhpcyk7CiAj
ZW5kaWYKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TXV0ZWQo
c3RhdGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TXV0ZWQo
c3RhdGUpKTsKICAgICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgQWN0aXZpdHlTdGF0ZTo6SXNB
dWRpYmxlLCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pOwogfQogCkBAIC01NDQ0
LDcgKzU0NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAgICAg
ICAgIHJldHVybjsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0dXJlKCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0dXJlKCkpOwogI2VuZGlmCiB9
CiAKQEAgLTU0NTMsNyArNTQ1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wQWxsTWVkaWFQ
bGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BBbGxNZWRpYVBs
YXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wQWxs
TWVkaWFQbGF5YmFjaygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxNZWRp
YVBsYXliYWNrKCkKQEAgLTU0NjEsNyArNTQ2MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNw
ZW5kQWxsTWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1
c3BlbmRBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQpAQCAtNTQ2OSw3ICs1NDY5LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkpOwogfQogCiAj
aWYgRU5BQkxFKE1FRElBX1NFU1NJT04pCkBAIC01NDc4LDcgKzU0NzgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlw
ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVNZWRpYUV2
ZW50KGV2ZW50VHlwZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZNZWRp
YUVsZW1lbnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQpAQCAtNTQ4Niw3ICs1
NDg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJs
ZSB2b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQo
dm9sdW1lLCBlbGVtZW50SUQpKTsKIH0KICNlbmRpZgogCkBAIC01NTAwLDcgKzU1MDAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sIG1heVN0
YXJ0TWVkaWEpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWF5U3RhcnRNZWRp
YVdoZW5JbldpbmRvdyhtYXlTdGFydE1lZGlhKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cobWF5U3RhcnRNZWRpYSkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2Fk
UHJveHkmIGRvd25sb2FkKQpAQCAtNTU0Nyw3ICs1NTQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZENob29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlQ29sb3IoY29sb3IpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlQ29sb3IoY29sb3IpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yUGlja2VyKCkKQEAgLTU1NTYsNyArNTU1Niw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmRDb2xvclBpY2tlcigpCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZEVuZENvbG9yUGlja2VyKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRDb2xvclBpY2tlcigpKTsKIH0KICNlbmRpZgog
CkBAIC01NTkwLDcgKzU1OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2xvc2VTdWdnZXN0
aW9ucygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bk
b3duID0gbnVsbHB0cjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZENsb3NlU3VnZ2VzdGlvbnMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZENsb3NlU3VnZ2VzdGlvbnMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRT
ZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKQEAgLTU1OTgsNyArNTU5
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBz
ZWxlY3RlZE9wdGlvbikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0
RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pKTsK
IH0KIAogI2VuZGlmCkBAIC01NjUxLDcgKzU2NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJvb2wgYWxsb3dzKQogICAgICAgICBy
ZXR1cm47CiAgICAgbV9hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2sgPSBhbGxvd3M7
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsbG93c01lZGlh
RG9jdW1lbnRJbmxpbmVQbGF5YmFjayhhbGxvd3MpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGFsbG93
cykpOwogfQogI2VuZGlmCiAKQEAgLTU4MzQsMTcgKzU4MzQsMTcgQEAgSVBDOjpDb25uZWN0aW9u
KiBXZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0
X3QgV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcGFnZUlEOworICAgIHJldHVybiBtX3BhZ2VJRC50b1VJbnQ2NCgpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVu
dVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KQogewotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVw
TWVudShuZXdTZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0
ZWRJbmRleCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEZyb21JdGVtRm9yUG9w
dXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBpbmRleCkKIHsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRGb3JBY3RpdmVQb3B1cE1lbnUoaW5k
ZXgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEZvckFj
dGl2ZVBvcHVwTWVudShpbmRleCkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6aXNQcm9jZXNz
aW5nS2V5Ym9hcmRFdmVudHMoKSBjb25zdApAQCAtNTg3OSwxMyArNTg3OSwxMyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZU5hbWUsIEFQSTo6TwogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5LCBtYWtl
IHN1cmUgd2UgbGF1bmNoIHRoZSBpbml0aWFsIHByb2Nlc3MgaWYgdGhlIGNsaWVudCBhc2tzIHRv
IHBvc3QgYSBtZXNzYWdlIHRvIGl0cyBpbmplY3RlZCBidW5kbGUgYmVmb3JlIGRvaW5nIGEgbG9h
ZC4KICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKLSAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNz
YWdlTmFtZSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVz
c2FnZUJvZHkpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpQb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0YShwcm9jZXNz
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkuZ2V0KCkpKSk7CiB9CiAK
ICNpZiBQTEFURk9STShHVEspCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZmFpbGVkVG9TaG93UG9wdXBN
ZW51KCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZhaWxlZFRv
U2hvd1BvcHVwTWVudSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RmFpbGVkVG9TaG93UG9wdXBNZW51KCkpOwogfQogI2VuZGlmCiAKQEAgLTU5NTIsNyArNTk1Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0
RGF0YSYmIGNvbnRleHRNZW51Q29udGV4dERhCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hv
dygpOwogCiAgICAgLy8gTm8gbWF0dGVyIHRoZSByZXN1bHQgb2YgaW50ZXJuYWxTaG93Q29udGV4
dE1lbnUsIGFsd2F5cyBub3RpZnkgdGhlIFdlYlByb2Nlc3MgdGhhdCB0aGUgbWVudSBpcyBoaWRk
ZW4gc28gaXQgc3RhcnRzIGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBhZ2Fpbi4KLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlkZGVuKCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUhpZGRlbigpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNv
bnRleHRNZW51SXRlbURhdGEmIGl0ZW0pCkBAIC02MDMwLDEyICs2MDMwLDEyIEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0
ZW1EYXRhJiBpdGVtKQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRh
Z0xlYXJuU3BlbGxpbmcgfHwgaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdJZ25v
cmVTcGVsbGluZykKICAgICAgICAgKyttX3BlbmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VD
b3VudDsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0
SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoaXRlbSkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVLZXlFdmVudCgpCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUZvcktl
eUV2ZW50KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0
TWVudUZvcktleUV2ZW50KCkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQog
CkBAIC02MDUxLDEwICs2MDUxLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBmaWxlVVJMcy5zaXplKCk7ICsraSkKICAgICAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpU
eXBlOjpSZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3Bl
blBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZXMpKTsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5n
QW5kSWNvbihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0
YVJlZmVyZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCkpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxh
eVN0cmluZ0FuZEljb24oZmlsZVVSTHMsIGRpc3BsYXlTdHJpbmcsIGljb25EYXRhID8gaWNvbkRh
dGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0YVJlZmVyZW5jZSgpKSk7CiAKICAgICBtX29w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1
bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MDc5LDEwICs2MDc5LDEwIEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZmlsZVVSTHMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4
dGVuc2lvbkhhbmRsZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RXh0ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
cykpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKSk7
CiAKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9v
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MDkzLDcgKzYwOTMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2FuY2VsRm9yT3BlblBhbmVsKCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKSk7CiAgICAg
CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwogICAgIG1fb3Bl
blBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAtNjEwMSw3ICs2MTAxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9wZW5QYW5lbCgpCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikK
IHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkdmFuY2VUb05leHRN
aXNzcGVsbGluZyhzdGFydEJlZm9yZVNlbGVjdGlvbiksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpBZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNv
bnN0IFN0cmluZyYgd29yZCkKQEAgLTYxMDksNyArNjEwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCiAgICAgaWYgKHdvcmQu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNoYW5nZVNwZWxsaW5nVG9Xb3JkKHdvcmQpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlU3BlbGxpbmdUb1dvcmQod29yZCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWY8V2ViRWRpdENvbW1h
bmRQcm94eT4mJiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVkbykKQEAgLTYxMjgs
NyArNjEyOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVFZGl0Q29tbWFuZChXZWJFZGl0
Q29tbWFuZFByb3h5JiBjb21tYW5kKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRSZW1vdmVFZGl0Q29tbWFuZChjb21tYW5kLmNvbW1hbmRJRCgpKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUVkaXRDb21tYW5kKGNvbW1hbmQuY29t
bWFuZElEKCkpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmNhblVuZG8oKQpAQCAtNjIxNywx
MiArNjIxNywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
dWludDY0X3QgcmVxdWVzdElELCBjb25zdCBUZXh0Q2hlY2tpbgogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9y
PFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdCkKIHsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEZpbmlzaENoZWNraW5nVGV4dChyZXF1ZXN0SUQs
IHJlc3VsdCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRGaW5p
c2hDaGVja2luZ1RleHQocmVxdWVzdElELCByZXN1bHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxDaGVja2luZ1RleHQocmVx
dWVzdElEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNl
bENoZWNraW5nVGV4dChyZXF1ZXN0SUQpKTsKIH0KIC8vIE90aGVyCiAKQEAgLTYzNTEsNyArNjM1
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVl
VHlwZSwgYm9vbCBoYW5kbGVkKQogICAgICAgICBib29sIGNhblByb2Nlc3NNb3JlS2V5RXZlbnRz
ID0gIW1fa2V5RXZlbnRRdWV1ZS5pc0VtcHR5KCk7CiAgICAgICAgIGlmIChjYW5Qcm9jZXNzTW9y
ZUtleUV2ZW50cykgewogICAgICAgICAgICAgTE9HKEtleUhhbmRsaW5nLCAiIFVJIHByb2Nlc3M6
IHNlbnQga2V5RXZlbnQgZnJvbSBkaWRSZWNlaXZlRXZlbnQiKTsKLSAgICAgICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZp
cnN0KCkpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpL
ZXlFdmVudChtX2tleUV2ZW50UXVldWUuZmlyc3QoKSkpOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gVGhlIGNhbGwgdG8gZG9uZVdpdGhLZXlFdmVudCBtYXkgY2xvc2UgdGhpcyBXZWJQYWdlLgpA
QCAtNjcxNSw3ICs2NzE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lU2V0TGFyZ2VzdEZy
YW1lQ2hhbmdlZCh1aW50NjRfdCBmcmFtZUlEKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vz
c0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVu
cmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjcyNyw3ICs2NzI3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJw
cm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
IAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzIz
Myw3ICs3MjMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQ2xlYXIoKQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0
YT4mIGdhbWVwYWREYXRhcywgYm9vbCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKQogewotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2aXR5KGdhbWVw
YWREYXRhcywgc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHYW1lcGFkQWN0aXZpdHkoZ2FtZXBhZERhdGFzLCBzaG91bGRN
YWtlR2FtZXBhZHNWaXNpYmxlKSk7CiB9CiAKICNlbmRpZgpAQCAtNzUzOSw3ICs3NTM5LDcgQEAg
Ym9vbCBXZWJQYWdlUHJveHk6OndpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRzKCkgY29u
c3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9s
aWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNpdGVQb2xpY2llcyksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVXZWJzaXRlUG9saWNp
ZXMod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hM
b2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCkBAIC03
NTQ5LDcgKzc1NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFG
b3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6YmFja0ZvcndhcmRSZW1vdmVkSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJiBpdGVtSUQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKGJvb2wgY2FuUnVuTW9kYWwpCkBAIC03
NTYyLDcgKzc1NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwoYm9vbCBj
YW5SdW5Nb2RhbCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9k
YWwobV9jYW5SdW5Nb2RhbCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRDYW5SdW5Nb2RhbChtX2NhblJ1bk1vZGFsKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5
OjpjYW5SdW5Nb2RhbCgpCkBAIC03NTc2LDcgKzc1NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
YmVnaW5QcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmlu
dEluZgogICAgICAgICByZXR1cm47CiAKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFt
ZS0+ZnJhbWVJRCgpLCBwcmludEluZm8pLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyht
X2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8pLCBwcmludGlu
Z1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmVuZFByaW50aW5nKCkKQEAgLTc1ODUsNyArNzU4NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjplbmRQcmludGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNJ
blByaW50aW5nTW9kZSA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RW5kUHJpbnRpbmcoKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1Bl
cmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkVuZFByaW50aW5nKCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01Qcmlu
dE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJp
bnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBS
ZWY8Q29tcHV0ZWRQYWdlc0NhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtNzU5OCw3ICs3NTk4LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8KICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFj
ay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCks
IHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1f
aXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8s
IGNhbGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRP
cGVyYXRpb24pKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzYxMSw3ICs3NjExLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBj
YWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRv
SW1hZ2UoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVBy
aW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1JlY3RUb0lt
YWdlKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgcmVjdCwgaW1hZ2VTaXplLCBjYWxsYmFj
a0lEKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9u
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5
KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50
MzJfdCBjb3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTc2MjMsNyArNzYy
Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiBm
cmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShj
YWxsYmFjaykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1Bh
Z2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVBy
aW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzVG9Q
REYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIGNhbGxiYWNrSUQp
LCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsK
IH0KICNlbGlmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQ
cmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8s
IFJlZjxQcmludEZpbmlzaGVkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC03NjM2LDcgKzc2MzYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94
eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxi
YWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2sp
KTsKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwg
cHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9p
c1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRyYXdQYWdlc0ZvclByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2Fs
bGJhY2tJRCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJh
dGlvbikpOwogfQogI2VuZGlmCiAKQEAgLTc2ODEsNyArNzY4MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3TGF5b3V0U2l6ZSkKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld0xheW91dFNpemUodmlld0xheW91
dFNpemUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld0xh
eW91dFNpemUodmlld0xheW91dFNpemUpKTsKICAgICBtX2RyYXdpbmdBcmVhLT52aWV3TGF5b3V0
U2l6ZURpZENoYW5nZSgpOwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTc3MDAsNyArNzcwMCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0
KGJvb2wgc2hvdWxkRXhwYW5kKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRB
dXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KHNob3VsZEV4cGFuZCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5k
VG9WaWV3SGVpZ2h0KHNob3VsZEV4cGFuZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNp
emUpCkBAIC03NzEzLDcgKzc3MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRT
aXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpegogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVu
aXRzKHZpZXdwb3J0U2l6ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHZpZXdwb3J0U2l6ZSkpOwogfQog
CiAjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQpAQCAtNzc4NCw3ICs3Nzg0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJf
dCByZXNwb25zZSwgY29uc3QgU3RyaW5nJgogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFsdGVy
bmF0aXZlVGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQogewogICAgIGlmICghaXND
bG9zZWQoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5k
bGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3Vs
dCkpOwogfQogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCkBAIC03ODI1LDcgKzc4
MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0
ZXh0LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBz
ZWxlY3Rpb25FbmQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0
ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCByZXBsYWNlbWVu
dFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmNvbmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBp
bnQ2NF90IHNlbGVjdGlvblN0YXJ0LCBpbnQ2NF90IHNlbGVjdGlvbkxlbmd0aCkKQEAgLTc4MzMs
NyArNzgzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb24oY29uc3Qg
U3RyaW5nJiBjb21wb3NpdGlvblN0cmluZywgaW50NjRfdCBzCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCBzZWxlY3Rp
b25TdGFydCwgc2VsZWN0aW9uTGVuZ3RoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgc2VsZWN0aW9u
U3RhcnQsIHNlbGVjdGlvbkxlbmd0aCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2Vs
Q29tcG9zaXRpb24oKQpAQCAtNzg0MSw3ICs3ODQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNh
bmNlbENvbXBvc2l0aW9uKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxD
b21wb3NpdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2Fu
Y2VsQ29tcG9zaXRpb24oKSk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCkBAIC03ODU4
LDcgKzc4NTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9y
KFNjcm9sbFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogICAgIG1fc2Nyb2xsUGlubmluZ0JlaGF2
aW9yID0gcGlubmluZzsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdCZWhhdmlv
cihwaW5uaW5nKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IocGlubmluZykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92
ZXJsYXlTdHlsZT4gc2Nyb2xsYmFyU3R5bGUpCkBAIC03ODc2LDcgKzc4NzYsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNj
cm9sbGJhck92ZXJsYXlTdAogICAgICAgICBzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2UgPSBzdGF0
aWNfY2FzdDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHNjcm9sbGJhclN0eWxlLnZhbHVlKCkpOwog
CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0eWxl
Rm9yTWVzc2FnZSksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZSkpOwogfQog
CiAjaWYgRU5BQkxFKFdFQl9DUllQVE8pCkBAIC03OTIxLDcgKzc5MjEsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNp
emVJbmRleCwgY29ucwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkTUlNRVR5cGVXaXRoQ3VzdG9t
Q29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJv
dmlkZXIobWltZVR5cGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKG1pbWVUeXBlKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmli
dXRlQ2hhbmdlcyYmIGNoYW5nZXMpCkBAIC03OTI5LDcgKzc5MjksNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMm
JiBjaGFuZ2VzKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnRBdHRy
aWJ1dGVzKFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Q2hhbmdlRm9udEF0dHJpYnV0ZXMoV1RGTW92ZShjaGFuZ2VzKSkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5n
ZXMpCkBAIC03OTM3LDcgKzc5MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChX
ZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Q2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2VzKSkpOwogfQogCiAj
aWYgUExBVEZPUk0oQ09DT0EpCkBAIC03OTQ1LDcgKzc5NDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAoaGFz
UnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFRleHRBc3luYyh0ZXh0KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiBy
ZXBsYWNlbWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmIG9wdGlvbnMpCkBAIC03OTUzLDcg
Kzc5NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmlu
ZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3Zl
KG9wdGlvbnMpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2Vy
dFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYXNNYXJrZWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY2FsbGJhY2spCkBAIC03OTYyLDcgKzc5NjIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxi
YWNrKQogICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgp
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRS
YW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzk3Myw3ICs3OTczLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0
aW5nUmFuZ2UsIENhbGxiYWMKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJ
RCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdURjo6
RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQpAQCAtNzk4NCw3ICs3OTg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2Fs
bGIKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJD
b3JlOjpJbnRQb2ludCYgcG9pbnQsIFdURjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxi
YWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC03OTk1LDcgKzc5OTUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb2ludCwgVwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMocG9pbnQsIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFj
dGVySW5kZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdS
YW5nZSYgcmFuZ2UsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYs
IGNvbnN0IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCkBAIC04MDA2LDcgKzgwMDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVAogICAg
IH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RG
b3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMo
cmFuZ2UsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0
aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
cmxpbmU+JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBj
b25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpCkBAIC04MDE3LDcgKzgwMTcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IFZlY3RvcjxDb21wb3NpdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uQXN5bmModGV4
dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uUmFuZ2UsIHJlcGxhY2VtZW50UmFuZ2UpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb25Bc3luYyh0ZXh0
LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25SYW5nZSwgcmVwbGFjZW1lbnRSYW5nZSkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQpAQCAtODAyNSw3ICs4
MDI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb25Bc3luYygpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9u
QXN5bmMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQZXJmb3JtYW5jZURh
dGFDb2xsZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC04MDUwLDcgKzgwNTAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50U2l6ZSBiaXRt
YXBTaXplLCBTbmFwc2hvdE9wdGlvbgogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBzaG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMs
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFr
ZVNuYXBzaG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4oKQpAQCAtODIwOCw3
ICs4MjA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vz
c2lvbkluZm8oUmVmPE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2sKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVl
c3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25J
bmZvKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5vd1BsYXlpbmdJbmZv
Q2FsbGJhY2soYm9vbCBoYXNBY3RpdmVTZXNzaW9uLCBib29sIHJlZ2lzdGVyZWRBc05vd1BsYXlp
bmdBcHBsaWNhdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3Vi
bGUgZWxhcHNlZFRpbWUsIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKQEAgLTgyNTEsMjIgKzgyNTEsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZUF1dG9wbGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlFdmVudCBldmVudCwgT3B0aW9uU2V0PEEK
ICNpZiBQTEFURk9STShNQUMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybUltbWVkaWF0ZUFj
dGlvbkhpdFRlc3RBdExvY2F0aW9uKEZsb2F0UG9pbnQgcG9pbnQpCiB7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0
TG9jYXRpb24ocG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKHBvaW50KSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25E
aWRVcGRhdGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRD
YW5jZWwoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRp
YXRlQWN0aW9uRGlkQ2FuY2VsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjppbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0
VGVzdChjb25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgcmVzdWx0LCBib29sIGNvbnRlbnRQcmV2
ZW50c0RlZmF1bHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTgyODEsNyArODI4MSw3
IEBAIE5TT2JqZWN0ICpXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRy
b2xsZXJGb3JIaXRUZXN0UmVzdWx0KFJlZlB0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZShXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgYWNjZXB0ZWRDYW5k
aWRhdGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVB
Y2NlcHRlZENhbmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShhY2NlcHRlZENhbmRp
ZGF0ZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRh
dGUoKQpAQCAtODI5OSwxNyArODI5OSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlU3lz
dGVtQXBwZWFyYW5jZShib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFVzZVN5c3RlbUFwcGVhcmFuY2UodXNlU3lzdGVtQXBwZWFyYW5j
ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VTeXN0ZW1B
cHBlYXJhbmNlKHVzZVN5c3RlbUFwcGVhcmFuY2UpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWlnaHQpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRIZWFkZXJCYW5uZXJIZWlnaHRG
b3JUZXN0aW5nKGhlaWdodCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGhlaWdodCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhpbnQgaGVpZ2h0KQog
ewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9vdGVyQmFubmVy
SGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpKTsKIH0KIAog
I2VuZGlmCkBAIC04MzM1LDcgKzgzMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VPck1l
ZGlhRG9jdW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJv
b2wgc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZl
bnRzKHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVu
dHMoc2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpoYW5kbGVBdXRvRmlsbEJ1dHRvbkNsaWNrKGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKQEAgLTgzODQsNyArODM4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQbGF5YmFja1Rh
cmdldCh1aW50NjRfdCBjb250ZXh0SWQsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0CiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoY29udGV4dElk
LCB0YXJnZXQtPnRhcmdldENvbnRleHQoKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRleHRJZCwgdGFyZ2V0LT50YXJn
ZXRDb250ZXh0KCkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2
aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBhdmFpbGFibGUp
CkBAIC04MzkyLDcgKzgzOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXRE
ZXZpY2VBdmFpbGFibGVEaWRDaGFuZ2UodWludDY0X3QgY29udGV4dElkLCBibwogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5n
ZShjb250ZXh0SWQsIGF2YWlsYWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShjb250ZXh0SWQsIGF2
YWlsYWJsZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkUGxheVRvUGxheWJh
Y2tUYXJnZXQodWludDY0X3QgY29udGV4dElkLCBib29sIHNob3VsZFBsYXkpCkBAIC04NDAwLDcg
Kzg0MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJn
ZXQodWludDY0X3QgY29udGV4dElkLCBib29sIHNob3VsZAogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjb250ZXh0SWQsIHNob3Vs
ZFBsYXkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxk
UGxheVRvUGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBzaG91bGRQbGF5KSk7CiB9CiAjZW5kaWYK
IApAQCAtODQyNiw3ICs4NDI2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyV2hlZWxFdmVu
dFRlc3RUcmlnZ2VyKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFy
V2hlZWxFdmVudFRlc3RUcmlnZ2VyKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoV1RGOjpGdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKQEAgLTg0NDksNyArODQ0OSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wg
c2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1
bWVudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRT
Y2FsZVZpZXdUb0ZpdERvY3VtZW50KHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCkBAIC04NDY5
LDcgKzg0NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihj
b25zdCBXZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwogICAgICAgICBib29sIGRlY2lz
aW9uID0gKGJvb2wpY2FsbGJhY2tGdW5jdGlvbjsKICAgICAgICAgYXV0byBuZXdDYWxsYmFja0lk
ZW50aWZpZXIgPSBkZWNpc2lvbiA/IE9wdGlvbmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQoKTsKIAotICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3Bh
Z2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lv
bkZvckljb24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZpZXIp
KTsKICAgICB9KTsKIH0KIApAQCAtODQ4OCw3ICs4NDg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGRpc2FibGVkKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFJlc291cmNlQ2FjaGlu
Z0Rpc2FibGVkKGRpc2FibGVkKSk7CiB9CiAKIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXRE
aXJlY3Rpb24gV2ViUGFnZVByb3h5Ojp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkKQEAg
LTg1MDEsNyArODUwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXRECiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24p
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlVmFsaWRhdGlvbk1lc3NhZ2UoKQpAQCAt
ODU0OCwxNCArODU0OCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQWxsb3dQb2ludGVyTG9j
aygpCiAgICAgQ0dEaXNwbGF5SGlkZUN1cnNvcihDR01haW5EaXNwbGF5SUQoKSk7CiAgICAgQ0dB
c3NvY2lhdGVNb3VzZUFuZE1vdXNlQ3Vyc29yUG9zaXRpb24oZmFsc2UpOwogI2VuZGlmCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRBY3F1aXJlUG9pbnRlckxvY2so
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEFjcXVpcmVQb2lu
dGVyTG9jaygpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZW55UG9pbnRlckxv
Y2soKQogewogICAgIEFTU0VSVChtX2lzUG9pbnRlckxvY2tQZW5kaW5nICYmICFtX2lzUG9pbnRl
ckxvY2tlZCk7CiAgICAgbV9pc1BvaW50ZXJMb2NrUGVuZGluZyA9IGZhbHNlOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9p
bnRlckxvY2soKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9j
aygpCkBAIC04NTY2LDEyICs4NTY2LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9p
bnRlclVubG9jaygpCiAgICAgICAgIENHRGlzcGxheVNob3dDdXJzb3IoQ0dNYWluRGlzcGxheUlE
KCkpOwogI2VuZGlmCiAgICAgICAgIG1fdWlDbGllbnQtPmRpZExvc2VQb2ludGVyTG9jayh0aGlz
KTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRMb3NlUG9p
bnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRMb3NlUG9pbnRlckxvY2soKSk7CiAgICAgfQogCiAgICAgaWYgKG1faXNQb2ludGVyTG9ja1Bl
bmRpbmcpIHsKICAgICAgICAgbV91aUNsaWVudC0+ZGlkTG9zZVBvaW50ZXJMb2NrKHRoaXMpOwot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQ
b2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpKTsKICAgICB9CiAKICAgICBtX2lzUG9pbnRlckxv
Y2tlZCA9IGZhbHNlOwpAQCAtODU5Miw3ICs4NTkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFVSTFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYgaGFu
ZGwKICAgICBhdXRvIGlkZW50aWZpZXJSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVu
dGlmaWVyLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKICAgICBBU1NFUlRfVU5V
U0VEKGlkZW50aWZpZXJSZXN1bHQsIGlkZW50aWZpZXJSZXN1bHQuaXNOZXdFbnRyeSk7CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFu
ZGxlcihpZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGlk
ZW50aWZpZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOwogfQogCiBXZWJVUkxTY2hl
bWVIYW5kbGVyKiBXZWJQYWdlUHJveHk6OnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCkBAIC04NjUxLDcgKzg2NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UodXNlRGFya0FwcGVhcmFuY2UoKSwg
dXNlSW5hY3RpdmVBcHBlYXJhbmNlKCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSh1c2VEYXJrQXBwZWFyYW5jZSgp
LCB1c2VJbmFjdGl2ZUFwcGVhcmFuY2UoKSkpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBA
IC04NjkwLDcgKzg2OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChS
ZWY8QVBJOjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIEZ1bmN0aW9uPAogCiAgICAgYXV0byBh
dHRhY2htZW50SWRlbnRpZmllciA9IGF0dGFjaG1lbnQtPmlkZW50aWZpZXIoKTsKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGF0dGFjaG1lbnRJZGVu
dGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC0+Zmls
ZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGF0dGFjaG1l
bnRJZGVudGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVu
dC0+ZmlsZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwgY2FsbGJhY2tJRCkpOwog
ICAgIG1fYXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0KGF0dGFjaG1lbnRJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKIH0KIApAQCAtODcwNiw3ICs4NzA2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQ
STo6QXR0YWNobWVudCYgYXR0YWNobWVudCwKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRh
dGEgfTsKIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1l
bnRBdHRyaWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXpl
Rm9yRGlzcGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5h
bWUoKSwgV1RGTW92ZShkYXRhUmVmZXJlbmNlKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRh
Y2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0
YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0
YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lz
dGVyQXR0YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5h
bWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKQEAgLTg4NjYsNyArODg2Niw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQo
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdD
YWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25NYW5pZmVzdChjYWxs
YmFja0lEKSk7CiB9CiAjZW5kaWYKIApAQCAtODkzMCw3ICs4OTMwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlcG9ydFBhZ2VMb2FkUmVzdWx0KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RGVmZXJzTG9hZGluZ0ZvclRlc3RpbmcoYm9vbCBkZWZl
cnNMb2FkaW5nKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
RGVmZXJzTG9hZGluZyhkZWZlcnNMb2FkaW5nKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZykpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0SXNWaWV3VmlzaWJsZShib29sJiByZXN1bHQpCkBAIC04OTQyLDcg
Kzg5NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUo
KQogewogI2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVS
X0JMT0NLSU5HKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gbW9kaWZpZXJzID0g
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50U3RhdGVPZk1vZGlmaWVyS2V5cygpOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQ3VycmVudE1vZGlmaWVy
U3RhdGUobW9kaWZpZXJzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKG1vZGlmaWVycykpOwogI2VuZGlmCiB9CiAKQEAg
LTg5ODQsMTkgKzg5ODQsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxBY3F1aXJlVW5pdmVy
c2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKFdlYlByb2Nlc3NQcm94eSYKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoZG91YmxlIGFscGhhLCBk
b3VibGUgYmV0YSwgZG91YmxlIGdhbW1hKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwg
Z2FtbWEpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2ltdWxhdGVE
ZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEpKTsKIH0KIAogI2lmIEVO
QUJMRShEQVRBX0RFVEVDVElPTikKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRldGVjdERhdGFJbkFs
bEZyYW1lcyhXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlcyB0eXBlcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6RGV0ZWN0RGF0YUluQWxsRnJhbWVzKHN0YXRpY19jYXN0PHVpbnQ2NF90
Pih0eXBlcykpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGV0ZWN0RGF0YUluQWxsRnJhbWVz
KHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBlcykpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcygpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiAjZW5kaWYKQEAgLTkxNDYsNyArOTE0Niw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5Ojp0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJl
Y3QgcmVjdCwgQ29tcGxldGlvbkhhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3By
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1fcGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OlRleHRJbnB1dENvbnRleHRzSW5SZWN0KHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3Qg
VGV4dElucHV0Q29udGV4dCYgY29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTkxNTYsNyArOTE1Niw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYgY29udGV4
dCwgQ29tcGxlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c1RleHRJ
bnB1dENvbnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c1RleHRJ
bnB1dENvbnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAog
TG9nZ2VyJiBXZWJQYWdlUHJveHk6OmxvZ2dlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDZjNWFkNjI1ZDEyLi5hNmU4ZmUxODJmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5j
bHVkZSAiV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlVuZG9TdGVwSUQuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9s
aWNpZXNEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CkBAIC04Miw2
ICs4Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRTaXplLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVk
aWFQcm9kdWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3Jt
U2NyZWVuLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVy
YW5jZS5oPgpAQCAtMzgyLDE0ICszODQsMTQgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICNlbmRpZgogICAgICwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2VQcm94eT4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYs
IHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOworICAgIHN0
YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94
eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4m
Jik7CiAgICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKICAgICBzdGF0aWMgdm9pZCBmb3JN
b3N0VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJQYWdlUHJveHkqKT4m
Jik7CiAKICAgICBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkg
Y29uc3Q7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsg
fQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlEOyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIApAQCAt
MTUwMiw3ICsxNTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdh
dGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViTmF2aWdhdGlv
bkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlz
aW9uYWxVUkxGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
LCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCi0gICAgICAgIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0
YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLAorICAg
ICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1l
SW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCiAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0
IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVz
ZXJEYXRhJik7CkBAIC0xNTExLDcgKzE1MTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIEFQSTo6TmF2
aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9
IFdURjo6bnVsbG9wdCk7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4m
Jik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1l
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0g
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAg
ICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAj
aWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUpOwpAQCAtMTU0OSw5ICsxNTUxLDkgQEAgV0VCUEFHRVBST1hZX0xP
QURPUFRJTUlaRVJfQURESVRJT05TXzEKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
YXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRR
dW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJh
c2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHVpbnQ2NF90KT4mJik7Ci0KKyAgICAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiYmKTsKKyAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlBy
b2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZvaWQg
bm90aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0oKTsKQEAgLTE1NzMsNiArMTU3NSwxMSBAQCBwcml2
YXRlOgogICAgIHZvaWQgcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4aXRlZChQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24pOwogCiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoU3RyaW5nJiYpOworICAgIAor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZFRvUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIFUmJiBtZXNzYWdlLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5k
T3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIHJldHVybiBwcm9jZXNzLnNlbmQoV1RGTW92
ZShtZXNzYWdlKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgc2VuZE9wdGlvbnMpOworICAgIH0KIAog
ICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+KSBvdmVycmlk
ZTsKQEAgLTE2MjcsMTMgKzE2MzQsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lO
YXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViRnJhbWVQcm94
eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0
YSYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9E
YXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0
YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5
LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwg
Y29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
CisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYm
KTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE2NTUsNyArMTY2Miw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpOwogCiAgICAgLy8gVUkgY2xpZW50Ci0g
ICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRv
d0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ld1Bh
Z2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNob3dQ
YWdlKCk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJik7CiAgICAg
dm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYpOwpAQCAtMjMyNyw3ICsy
MzM0LDcgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzIKICAgICBSZWZQ
dHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4gbV92YWxpZGF0aW9uQnViYmxlOwogI2VuZGlm
CiAKLSAgICBjb25zdCB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBjb25zdCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3BhZ2VJRDsKIAogICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5kZWQgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9hZGRzVmlzaXRlZExpbmtzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDZmY2VjZGM2
YjY1Li5iMWU3OTkyMjNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgICMgVUkgbWVzc2FnZXMKLSAgICBDcmVhdGVOZXdQYWdlKHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBv
cmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVj
dCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcywgc3RydWN0IFdlYktpdDo6
TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEpIC0+ICh1aW50NjRfdCBu
ZXdQYWdlSUQsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gbmV3
UGFnZVBhcmFtZXRlcnMpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRlTmV3UGFnZShzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzIHdpbmRvd0Zl
YXR1cmVzLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBuZXdQYWdlSUQs
IE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gbmV3UGFnZVBhcmFt
ZXRlcnMpIFN5bmNocm9ub3VzCiAgICAgU2hvd1BhZ2UoKQogICAgIENsb3NlUGFnZShib29sIHN0
b3BSZXNwb25zaXZlbmVzc1RpbWVyKQogICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBm
cmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIFN0cmluZyBtZXNzYWdlKSAtPiAoKSBTeW5jaHJvbm91cwpAQCAtMTA0LDggKzEwNCw4
IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIFBvbGljeSBtZXNzYWdlcwog
ICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFN0cmluZyBkb3dubG9h
ZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVp
bnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2
aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0
OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5bmNocm9ub3VzCisgICAg
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2Vi
S2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKKyAgICBEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFp
bkZyYW1lLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVz
cG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJL
aXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNp
ZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5bmNocm9ub3VzCiAgICAgRGVjaWRlUG9saWN5Rm9y
TmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFj
dGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVz
ZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZy
YW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NM
aWZldGltZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NM
aWZldGltZU9ic2VydmVyLmNwcAppbmRleCBjODAyM2RlNDE2MS4uZjQ5NzE1MWQ3NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNl
cnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZl
cjo6YWRkV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHJvY2UKICAgICBS
RUxFQVNFX0FTU0VSVCghcHJvY2Vzcy5pc1ByZXdhcm1lZCgpKTsKIAogICAgIGlmIChtX3Byb2Nl
c3Nlcy5hZGQoJnByb2Nlc3MpLmlzTmV3RW50cnkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0coTG9h
ZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZp
ZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0coTG9hZGlu
ZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIo
KSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgICAgICB3ZWJQcm9jZXNz
V2lsbE9wZW5Db25uZWN0aW9uKHByb2Nlc3MsICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAgICAg
fQogCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OnJl
bW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYlByCiAgICAgd2ViUGFn
ZURpZENsb3NlQ29ubmVjdGlvbih3ZWJQYWdlUHJveHksICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7
CiAKICAgICBpZiAobV9wcm9jZXNzZXMucmVtb3ZlKCZwcm9jZXNzKSkgewotICAgICAgICBSRUxF
QVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3Zl
V2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5w
cm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgICAgICBSRUxF
QVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3Zl
V2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5w
cm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSk7CiAg
ICAgICAgIHdlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24ocHJvY2VzcywgKnByb2Nlc3MuY29u
bmVjdGlvbigpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
UG9vbC5jcHAKaW5kZXggMGUxMzlmMzBkOWMuLjBiOGIzNDVlZjhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMjk2LDkgKzEyOTYsOSBAQCBib29s
IFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFdl
YnNpdGVEYXRhU3RvcmUmIHN0bwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBh
Z2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRh
U3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vi
c2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5hZGQo
ZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PHVpbnQ2NF90PigpKS5pdGVyYXRvci0+dmFs
dWUuYWRkKHBhZ2VJRCk7CisgICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAu
YWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDxQYWdlSWRlbnRpZmllcj4oKSkuaXRl
cmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQuaXNOZXdFbnRyeSk7CiAKICAgICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9u
SUQoKTsKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdp
blVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhCiAgICAg
fQogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3Jl
KHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKICAgICBhdXRvIHNlc3Npb25J
RCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXNzaW9u
VG9QYWdlSURzTWFwLmZpbmQoc2Vzc2lvbklEKTsKQEAgLTIyMTEsNyArMjIxMSw3IEBAIHZvaWQg
V2ViUHJvY2Vzc1Bvb2w6OnJlaW5zdGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0
d29ya1Byb2Nlc3NQcm94eSYKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CitTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21Q
YWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGluZWZmaWNpZW50LgogICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKQEAgLTI1MTksNyArMjUxOSw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5n
KCkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyQ3Vy
cmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQb29s
Ojpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9j
ZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICghbV9uZXR3
b3JrUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4
IDE2NTU0NWIxYTJmLi4xN2UzZTgwMmJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC0xNDgsNiArMTQ4LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1l
c3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwogICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOworICAgIAor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8
VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsK
KyAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0
aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0
aW9uSUQpCisgICAgeworICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2Vp
dmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKKyAgICB9CiAKICAgICBib29sIGRp
c3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAgICBib29s
IGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKQEAgLTE5Myw4ICsyMDUsOCBAQCBwdWJsaWM6
CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8
QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAKLSAgICB2b2lkIHBhZ2VCZWdpblVzaW5nV2Vi
c2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICB2
b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRl
RGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICB2b2lkIHBhZ2VF
bmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVE
YXRhU3RvcmUmKTsKICAgICBib29sIGhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYnNp
dGVEYXRhU3RvcmUmKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQ
YXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgo
KTsgfQpAQCAtMzY1LDcgKzM3Nyw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dP
UktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKLSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQp
IGNvbnN0OworICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHlGcm9tUGFnZUlEKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBjb25zdDsKICAgICBj
b25zdCBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNTTENlcnRp
ZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CkBAIC00OTMsNyArNTA1LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2VuZERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JUZXN0aW5n
KCk7CiAgICAgdm9pZCBjbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpOwogCi0g
ICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29u
c3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6
OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4s
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAgICAg
dm9pZCBzZXRTYW5kYm94RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9zYW5kYm94RW5hYmxlZCA9
IGVuYWJsZWQ7IH07CkBAIC03NTgsNyArNzcwLDcgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIFBh
dGhzIG1fcmVzb2x2ZWRQYXRoczsKIAotICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hT
ZXQ8dWludDY0X3Q+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7CisgICAgSGFzaE1hcDxQQUw6OlNl
c3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4+IG1fc2Vzc2lvblRvUGFn
ZUlEc01hcDsKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQcm9jZXNzUG9vbD4gbV9zZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzVGVybWluYXRpb25UaW1lcjsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA4MjAz
NDY1Y2IyOC4uNjc4MzFlMjA3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMTEwLDEwICsxMTAsOSBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlBy
b2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRp
ZgogICAgIHJldHVybiBhbGxQcm9jZXNzZXMoKS5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXVpbnQ2
NF90IFdlYlByb2Nlc3NQcm94eTo6Z2VuZXJhdGVQYWdlSUQoKQorUGFnZUlkZW50aWZpZXIgV2Vi
UHJvY2Vzc1Byb3h5OjpnZW5lcmF0ZVBhZ2VJRCgpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVu
aXF1ZVBhZ2VJRDsKLSAgICByZXR1cm4gKyt1bmlxdWVQYWdlSUQ7CisgICAgcmV0dXJuIFBhZ2VJ
ZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogfQogCiBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQ
YWdlUHJveHlNYXAmIGdsb2JhbFBhZ2VNYXAoKQpAQCAtMzMwLDcgKzMyOSw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAgICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVjdFBy
b2Nlc3ModGhpcyk7CiB9CiAKLVdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdl
dChwYWdlSUQpOwogfQpAQCAtMzYzLDcgKzM2Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpu
b3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdl
CiAKIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29u
ZmlndXJhdGlvbikKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOwor
ICAgIGF1dG8gcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBSZWY8V2ViUGFnZVByb3h5
PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJ
RCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgYWRkRXhpc3RpbmdXZWJQYWdl
KHdlYlBhZ2UuZ2V0KCksIEJlZ2luc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwpAQCAtNDE1LDEwICs0
MTQsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5
JiB3ZWJQYWdlLCBFbmRzVXNpbmdEYXRhU3RvcmUgZW4KICAgICBtYXliZVNodXREb3duKCk7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVk
TGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlz
aXRlZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8mIHVzZXJz
ID0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbnN1cmUoJnZpc2l0ZWRMaW5rU3RvcmUs
IFtdIHsKLSAgICAgICAgcmV0dXJuIEhhc2hTZXQ8dWludDY0X3Q+IHsgfTsKKyAgICAgICAgcmV0
dXJuIEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+IHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAKICAgICBBU1NFUlQoIXVzZXJzLmNvbnRhaW5zKHBhZ2VJRCkpOwpAQCAtNDI4LDcgKzQyNyw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVk
TGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlCiAgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUuYWRk
UHJvY2VzcygqdGhpcyk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVWaXNpdGVk
TGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRf
dCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVz
ZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogICAgIGF1dG8gaXQgPSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmZpbmQo
JnZpc2l0ZWRMaW5rU3RvcmUpOwogICAgIGlmIChpdCA9PSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0
aFVzZXJzLmVuZCgpKQpAQCAtNTQxLDcgKzU0MCw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5Ojpm
dWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCkKIH0KICNlbmRpZgogCi1ib29sIFdlYlByb2Nlc3NQ
cm94eTo6aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jv
b2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKSBjb25zdAogewogICAgIGZvciAoYXV0byogcHJvdmlzaW9uYWxQYWdlIDogbV9w
cm92aXNpb25hbFBhZ2VzKSB7CiAgICAgICAgIGlmIChwcm92aXNpb25hbFBhZ2UtPnBhZ2UoKS5w
YWdlSUQoKSA9PSBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94
eS5oCmluZGV4IDlhNmNiZjFmNDYwLi5hZDNmMDM4ZGQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0SWRlbnRpZmllci5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFp
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkU3RyaW5nSGFzaC5oPgpAQCAtOTcsNyArOTgs
NyBAQCBlbnVtIGNsYXNzIEFsbG93UHJvY2Vzc0NhY2hpbmcgeyBObywgWWVzIH07CiBjbGFzcyBX
ZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwdWJsaWMgUmVz
cG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8V2Vi
UHJvY2Vzc1Byb3h5PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlByb2Nlc3NQcm94eT4sIHBy
aXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJhbWVQcm94eT4+IFdlYkZyYW1lUHJveHlNYXA7Ci0g
ICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdlUHJveHkqPiBXZWJQYWdlUHJveHlN
YXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdl
UHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPj4gVXNlckluaXRpYXRlZEFjdGlvbk1hcDsK
IAogICAgIGVudW0gY2xhc3MgSXNQcmV3YXJtZWQgewpAQCAtMTI4LDcgKzEyOSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAg
ICAgc3RhdGljIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0ZvcklkZW50aWZpZXIoV2ViQ29yZTo6
UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2UodWlu
dDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBh
Z2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAKICAgICBlbnVtIGNs
YXNzIEJlZ2luc1VzaW5nRGF0YVN0b3JlIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTE0OSwxMCAr
MTUwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NlcnZpY2VXb3JrZXJQcm9j
ZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgZGlkQ3JlYXRlV2ViUGFn
ZUluUHJvY2Vzcyh1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgZGlkQ3JlYXRlV2ViUGFnZUlu
UHJvY2VzcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRM
aW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZv
aWQgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIHVpbnQ2NF90
IHBhZ2VJRCk7CisgICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0
b3JlJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExp
bmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
IAogICAgIHZvaWQgYWRkV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkmLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9p
ZCBkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkmKTsKQEAgLTMxMSw3ICszMTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3
ZWJQYWdlTWVkaWFTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHkmKTsKIAogcHJvdGVjdGVkOgot
ICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VJRCgpOworICAgIHN0YXRpYyBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBnZW5lcmF0ZVBhZ2VJRCgpOwogICAgIFdlYlByb2Nlc3NQcm94eShX
ZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1lZCk7CiAKICAgICAv
LyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKQEAgLTM1NCw3ICszNTUsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXllckhvc3Rp
bmdDb250ZXh0SUQpOwogI2VuZGlmCiAKLSAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJ
RCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIGJvb2wgaGFzUHJvdmlzaW9uYWxQYWdlV2l0
aElEKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBjb25zdDsKICAgICBib29sIGlzQWxsb3dlZFRv
VXBkYXRlQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBjb25zdDsKIAog
ICAgIC8vIFBsdWdpbnMKQEAgLTQ0Nyw3ICs0NDgsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8
UHJvdmlzaW9uYWxQYWdlUHJveHkqPiBtX3Byb3Zpc2lvbmFsUGFnZXM7CiAgICAgVXNlckluaXRp
YXRlZEFjdGlvbk1hcCBtX3VzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKLSAgICBIYXNoTWFwPFZp
c2l0ZWRMaW5rU3RvcmUqLCBIYXNoU2V0PHVpbnQ2NF90LyogcGFnZUlEICovPj4gbV92aXNpdGVk
TGlua1N0b3Jlc1dpdGhVc2VyczsKKyAgICBIYXNoTWFwPFZpc2l0ZWRMaW5rU3RvcmUqLCBIYXNo
U2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vy
czsKICAgICBIYXNoU2V0PFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4gbV93ZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94aWVzOwogCiAgICAgaW50IG1fbnVtYmVyT2ZUaW1lc1N1ZGRl
blRlcm1pbmF0aW9uV2FzRGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4IGUzNTUzMTllYTRjLi43ZDU3NWE0MDRiMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKQEAg
LTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnRhc2tDb21wbGV0ZWQo
V2ViVVJMU2NoZW1lVGFzayYgdGFzaykKICAgICBwbGF0Zm9ybVRhc2tDb21wbGV0ZWQodGFzayk7
CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6cmVtb3ZlVGFza0Zyb21QYWdlTWFwKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVy
OjpyZW1vdmVUYXNrRnJvbVBhZ2VNYXAoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCB0
YXNrSUQpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmZp
bmQocGFnZUlEKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV90YXNrc0J5UGFnZUlkZW50aWZp
ZXIuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxl
ci5oCmluZGV4IDg5OTc2YzYxZjgzLi5iN2FmMDc1OTc1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApAQCAtNjYsMTMgKzY2LDEzIEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiwgV2Vi
VVJMU2NoZW1lVGFzayYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1UYXNrQ29tcGxl
dGVkKFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAKLSAgICB2b2lkIHJlbW92ZVRhc2tGcm9tUGFn
ZU1hcCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCk7CisgICAgdm9pZCByZW1vdmVU
YXNrRnJvbVBhZ2VNYXAoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJRCk7
CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9yVGFza0lkZW50aWZpZXIodWludDY0X3Qp
IGNvbnN0OwogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogCiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmPFdlYlVSTFNjaGVtZVRhc2s+PiBtX3Rhc2tzOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllcjsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5
UGFnZUlkZW50aWZpZXI7CiAgICAgCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5
bmNMb2FkQ29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAKaW5kZXggMTlhNmJiODRjM2MuLjliN2FkNWUyMzExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtNzAsNyArNzAs
NyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9ucwogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJl
c3BvbnNlOwogCiAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRQZXJmb3JtUmVkaXJlY3Rpb24obV91
cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UsIHJl
cXVlc3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
UkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRl
bnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlLCByZXF1ZXN0KSk7CiAKICAgICByZXR1
cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgYXV0byBXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpIC0+IEUKICAgICBpZiAoaXNTeW5jKCkpCiAgICAgICAgIG1fc3luY1Jlc3BvbnNlID0g
cmVzcG9uc2U7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNj
aGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVy
KCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJs
U2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlKSk7CiAg
ICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKQEAgLTExOCw3ICsxMTgsNyBAQCBh
dXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9u
ZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNj
aGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwg
bV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1l
SGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHsgYnVmZmVyIH0pKTsKICAgICBy
ZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIApAQCAtMTQzLDcgKzE0Myw3IEBAIGF1dG8g
V2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
IC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgbV9zeW5jRGF0YSA9IG51bGxwdHI7CiAgICAgfQog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlk
Q29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwg
ZXJyb3IpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
UkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCks
IG1faWRlbnRpZmllciwgZXJyb3IpKTsKICAgICBtX3VybFNjaGVtZUhhbmRsZXItPnRhc2tDb21w
bGV0ZWQoKnRoaXMpOwogCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CkBAIC0xNjks
NCArMTY5LDE0IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFzazo6c3RvcCgpCiAgICAgICAgIG1fc3lu
Y0NvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFpbGVkQ3VzdG9tUHJvdG9jb2xTeW5jTG9hZChtX3Jl
cXVlc3QpLCB7IH0pOwogfQogCitJUEM6OkNvbm5lY3Rpb24qIFdlYlVSTFNjaGVtZVRhc2s6Om1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wcm9jZXNzLT5j
b25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFdlYlVSTFNjaGVtZVRhc2s6Om1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLT5wYWdlSUQoKS50
b1VJbnQ2NCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBiODcyMDczYmQyNy4uN2YxNGI5ODYwNDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
cXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KQEAgLTUxLDEz
ICs1MiwxMyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIHVzaW5nIFN5bmNMb2FkQ29tcGxldGlv
bkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJik+OwogCi1jbGFzcyBXZWJVUkxTY2hlbWVUYXNrIDogcHVibGljIFJlZkNvdW50
ZWQ8V2ViVVJMU2NoZW1lVGFzaz4sIHB1YmxpYyBJbnN0YW5jZUNvdW50ZWQ8V2ViVVJMU2NoZW1l
VGFzaz4geworY2xhc3MgV2ViVVJMU2NoZW1lVGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVS
TFNjaGVtZVRhc2s+LCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIEluc3RhbmNl
Q291bnRlZDxXZWJVUkxTY2hlbWVUYXNrPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2Vi
VVJMU2NoZW1lVGFzayk7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJVUkxTY2hlbWVUYXNr
PiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQ
cm94eSYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBT
eW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CiAgICAgV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzLmdldCgpOyB9
CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7
IHJldHVybiBtX3JlcXVlc3Q7IH0KQEAgLTgwLDYgKzgxLDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0
ZToKICAgICBXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJv
eHkmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICAKKyAgICAv
LyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3Rp
bmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wgaXNTeW5jKCkgY29uc3QgeyByZXR1
cm4gISFtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsgfQogCkBAIC04Nyw3ICs5Miw3IEBAIHByaXZh
dGU6CiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94
eT4gbV9wcm9jZXNzOwogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKLSAgICB1aW50NjRfdCBt
X3BhZ2VJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlkZW50
aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBib29s
IG1fc3RvcHBlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jlc3BvbnNlU2VudCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCmluZGV4IDBiZjUxMTJhOWU0Li4wYThiMGMxMTIyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAKQEAgLTE1NzYsNyArMTU3Niw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0
Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1ZSwgQ29tcGxlCiAg
ICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldE5vdGlmeVBhZ2Vz
V2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29s
LCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0p
OwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVz
KHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYm
IGRvbWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpn
ZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBh
Z2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNjQyZTMzMDlkMDcu
LjgyMmMzZmM3NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tp
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBlcm1pc3Np
b25TdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMTM1LDcgKzEz
Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgbG9nVGVzdGlu
Z0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CisgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRl
cmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5nVG8oY29u
c3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXgg
NzYwYTFkMDA5ZGUuLjAxNzk5NWE1MTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0xNjQsNyAr
MTY0LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHIKICAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgbV9pbnNw
ZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6
OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVX
ZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSkpOwogICAg
IH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgewpAQCAtMjEyLDcgKzIxMiw3IEBAIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkVVJMLCBjb25zdCBTCiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCiAgICAgV2Vi
UGFnZVByb3h5KiBpbnNwZWN0b3JQYWdlID0gd2ViVmlldygpLT5fcGFnZS5nZXQoKTsKLSAgICBp
bnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9y
VUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIGluc3BlY3RvclBhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBpbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJ
bnNwZWN0b3JVSTo6RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSk7CiB9CiAK
IHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0U2hlZXRSZWN0KGNvbnN0
IEZsb2F0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KaW5kZXgg
ZjcwZjFhNGFjNGQuLmM1NzM4NmUzNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94
eS5tbQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eTo6ZGlkVXBkYXRlR2VvbWV0cnkoKQogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRl
Q2hhbmdlSUQpCiB7CiAgICAgU2Vjb25kcyBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCA9IFNl
Y29uZHM6OmZyb21NaWxsaXNlY29uZHMoMjUwKTsKLSAgICBwcm9jZXNzKCkuY29ubmVjdGlvbigp
LT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlPihtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgYWN0aXZpdHlT
dGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lm
U3luY01lc3NhZ2VBcnJpdmVzKTsKKyAgICBwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9y
QW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVB
Y3Rpdml0eVN0YXRlPihtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBhY3Rpdml0
eVN0YXRlVXBkYXRlVGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5n
SWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCiB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHk6OndpbGxTZW5kVXBkYXRlR2VvbWV0cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KaW5kZXgg
NTAyNDFkOGJmNjIuLmY1M2ZiMjFlM2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KQEAgLTE0NCw3ICsxNDQs
NyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1
cmVFdmVudChOU0V2ZW50ICpldmVudCwgRmxvYQogCiAgICAgICAgIC8vIEZJWE1FOiBXZSBkcm9w
IHRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0aGUgZmxvb3IsIGJlY2F1c2Ugd2Ug
ZG9uJ3QgaGF2ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJvdW5kcyB5ZXQuCiAgICAgICAgIG1fbWFn
bmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICBt
X3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKSwgbV93
ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgICAgICBtX3dlYlBhZ2VQcm94eS5zZW5kKE1lc3Nh
Z2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JNYWdu
aWZpY2F0aW9uR2VzdHVyZSgpKTsKICAgICAgICAgbV9sYXN0TWFnbmlmaWNhdGlvbkdlc3R1cmVX
YXNTbWFydE1hZ25pZmljYXRpb24gPSBmYWxzZTsKIAogICAgICAgICByZXR1cm47CkBAIC0xOTYs
NyArMTk2LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlm
aWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCiAgICAgaWYgKG1fYWN0aXZlR2VzdHVy
ZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpOb25lKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRy
eUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShv
cmlnaW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgbV93ZWJQYWdlUHJveHkuc2Vu
ZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5
Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4pKTsKIH0KIAogc3RhdGljIGZsb2F0
IG1heGltdW1SZWN0YW5nbGVDb21wb25lbnREZWx0YShGbG9hdFJlY3QgYSwgRmxvYXRSZWN0IGIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rp
b25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRl
QWN0aW9uQ29udHJvbGxlci5tbQppbmRleCAyMTUxNjYyZDM0Ny4uNWE2ODMwOTZlODAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbQpAQCAtMTkzLDcgKzE5Myw3IEBAIC0gKHZvaWQpaW1tZWRpYXRlQWN0
aW9uUmVjb2duaXplcldpbGxCZWdpbkFuaW1hdGlvbjooTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJl
UmVjCiAgICAgLy8gRklYTUU6IENvbm5lY3Rpb24gY2FuIGJlIG51bGwgaWYgdGhlIHByb2Nlc3Mg
aXMgY2xvc2VkOyB3ZSBzaG91bGQgY2xlYW4gdXAgYmV0dGVyIGluIHRoYXQgY2FzZS4KICAgICBp
ZiAoX3N0YXRlID09IFdlYktpdDo6SW1tZWRpYXRlQWN0aW9uU3RhdGU6OlBlbmRpbmcpIHsKICAg
ICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBfcGFnZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24o
KSkgewotICAgICAgICAgICAgYm9vbCByZWNlaXZlZFJlcGx5ID0gY29ubmVjdGlvbi0+d2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9y
bUltbWVkaWF0ZUFjdGlvbkhpdFRlc3Q+KF9wYWdlLT5wYWdlSUQoKSwgU2Vjb25kczo6ZnJvbU1p
bGxpc2Vjb25kcyg1MDApKTsKKyAgICAgICAgICAgIGJvb2wgcmVjZWl2ZWRSZXBseSA9IGNvbm5l
Y3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0PihfcGFnZS0+cGFnZUlEKCkudG9V
SW50NjQoKSwgU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyg1MDApKTsKICAgICAgICAgICAgIGlm
ICghcmVjZWl2ZWRSZXBseSkKICAgICAgICAgICAgICAgICBfc3RhdGUgPSBXZWJLaXQ6OkltbWVk
aWF0ZUFjdGlvblN0YXRlOjpUaW1lZE91dDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDAwN2Q4N2Rm
Y2Q4Li5mNGFiOTFlODliMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29u
c3QgU3RyaW5nJiBjCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdy
aXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0Vu
Y29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1
dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVS
TCBhYnNvbHV0ZVN0cmluZ10pKTsKICAgICB9OwogCiAgICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cp
IHsKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFw
cGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogICAgIFtoYW5k
bGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFs
VVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1f
aW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChb
YWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5
Ojp3aW5kb3dGcmFtZURpZENoYW5nZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA4N2M2OGIzMzQ4NS4uNDU1ZDJkNWQ0MDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMTcx
LDcgKzE3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdl
ZChjb25zdCBGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2luZG93CiAgICAgLy8gSW4gY2FzZSB0aGUg
VUkgY2xpZW50IG92ZXJyaWRlcyBnZXRXaW5kb3dGcmFtZSgpLCB3ZSBjYWxsIGl0IGhlcmUgdG8g
bWFrZSBzdXJlIHdlIHNlbmQgdGhlIGFwcHJvcHJpYXRlIHdpbmRvdyBmcmFtZS4KICAgICBtX3Vp
Q2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywgYWNjZXNzaWJpbGl0eVZpZXdD
b29yZGluYXRlc10gKEZsb2F0UmVjdCB3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMpIHsK
ICAgICAgICAgRmxvYXRSZWN0IHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRl
cyA9IHBhZ2VDbGllbnQoKS5jb252ZXJ0VG9Vc2VyU3BhY2Uod2luZG93RnJhbWVJblNjcmVlbkNv
b3JkaW5hdGVzKTsKLSAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Oldp
bmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywg
d2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzLCB2aWV3RnJhbWVJbldpbmRv
d0Nvb3JkaW5hdGVzLCBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKSwgbV9wYWdlSUQpOwor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdl
ZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRT
Y3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywgYWNjZXNzaWJp
bGl0eVZpZXdDb29yZGluYXRlcykpOwogICAgIH0pOwogfQogCkBAIC0xODAsNyArMTgwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShib29sIGlzU2Nyb2xs
YWJsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYWluRnJhbWVJc1Njcm9s
bGFibGUoaXNTY3JvbGxhYmxlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShpc1Njcm9sbGFibGUpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwg
Y29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlLCBjb25zdCBWZWN0b3I8VGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0ZXJuYXRpdmVzV2l0aFJhbmdlLCBib29s
IHJlZ2lzdGVyVW5kb0dyb3VwKQpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRp
bmdSYW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRS
YW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyh0
ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5k
b0dyb3VwKSk7CiAjZWxzZQogICAgIEluc2VydFRleHRPcHRpb25zIG9wdGlvbnM7CiAgICAgb3B0
aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVyVW5kb0dyb3VwOwpAQCAtMjIzLDcgKzIy
Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVy
UmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmCiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKIAotICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwg
Y2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN0cmluZ0Zv
ckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0cmlidXRlZFN0cmluZyYgc3RyaW5nLCBj
b25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBA
IC0yNDksNyArMjQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6
OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGRvdWJsZSwgYm8KICAgICAKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICAK
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9udEF0
U2VsZWN0aW9uKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNl
bGVjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmluZyYgZm9udE5hbWUsIGRvdWJsZSBmb250U2l6ZSwg
Ym9vbCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBA
IC0yNzEsNyArMjcxLDcgQEAgU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RyaW5nU2VsZWN0aW9uRm9y
UGFzdGVib2FyZCgpCiAgICAgICAgIHJldHVybiB2YWx1ZTsKICAgICAKICAgICBjb25zdCBTZWNv
bmRzIG1lc3NhZ2VUaW1lb3V0KDIwKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSwgTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgbV9w
YWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6
R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpLCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0
U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkodmFsdWUpLCBtZXNzYWdlVGltZW91
dCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yODIsOCArMjgyLDggQEAgUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVi
b2FyZChjb25zdCBTdHIKICAgICBTaGFyZWRNZW1vcnk6OkhhbmRsZSBoYW5kbGU7CiAgICAgdWlu
dDY0X3Qgc2l6ZSA9IDA7CiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgyMCk7Ci0g
ICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9u
Rm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlv
bkZvclBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRsZSwgc2l6ZSksIG1fcGFnZUlELCBtZXNzYWdlVGlt
ZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25G
b3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKSwKKyAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6
OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCBtZXNz
YWdlVGltZW91dCk7CiAgICAgaWYgKGhhbmRsZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gc2hhcmVkTWVtb3J5QnVmZmVyID0gU2hh
cmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5
KTsKQEAgLTI5NywxNCArMjk3LDE0IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpyZWFkU2VsZWN0aW9u
RnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSkKIAogICAgIGJvb2wg
cmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgyMCk7Ci0g
ICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFkU2VsZWN0aW9uRnJv
bVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVj
dGlvbkZyb21QYXN0ZWJvYXJkOjpSZXBseShyZXN1bHQpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVv
dXQpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBh
c3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlv
bkZyb21QYXN0ZWJvYXJkOjpSZXBseShyZXN1bHQpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX0NPTlRST0xTKQogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VTZWxlY3Rpb25XaXRoUGFz
dGVib2FyZERhdGEodHlwZXMsIGRhdGEpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YSkp
OwogfQogI2VuZGlmCiAKQEAgLTMzNCwyMiArMzM0LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5w
dXRJCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAg
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRDb21wbGV4VGV4dElu
cHV0VG9QbHVnaW4ocGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIHRleHRJbnB1dCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kQ29tcGxleFRleHRJ
bnB1dFRvUGx1Z2luKHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB0ZXh0SW5wdXQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwcGVyY2FzZVdvcmQoKQogewotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcHBlcmNhc2VXb3JkKCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcHBlcmNhc2VXb3JkKCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6bG93ZXJjYXNlV29yZCgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6Okxvd2VyY2FzZVdvcmQoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6Okxvd2VyY2FzZVdvcmQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpjYXBpdGFsaXplV29yZCgpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNhcGl0YWxpemVXb3JkKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDYXBpdGFsaXplV29yZCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sIGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKQpAQCAt
MzU5LDcgKzM1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoYm9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkKIAogICAgIFRleHRDaGVja2Vy
OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQp
OwogICAgIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQgPSBpc1NtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZDsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxl
ZChpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3QgRGljdGlvbmFyeVBvcHVwSW5mbyYgZGlj
dGlvbmFyeVBvcHVwSW5mbykKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVUlQcm9jZXNzQWNj
ZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRvd1Rva2VuKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0
eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRvd1Rva2VuKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKHVpbnQ2NF90IHBsdWdpbkNvbXBs
ZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBib29sIHBsdWdpbkhhc0ZvY3VzQW5kV2luZG93SGFzRm9j
dXMpCkBAIC00MjQsNyArNDI0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZERlbGF5V2lu
ZG93T3JkZXJpbmdGb3JFdmVudChjb25zdCBXZWJLaXQ6OldlYk1vdXNlRXZlbnQKIAogICAgIGJv
b2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgzKTsK
LSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlNob3VsZERlbGF5V2lu
ZG93T3JkZXJpbmdFdmVudChldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdp
bmRvd09yZGVyaW5nRXZlbnQ6OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91
dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3Jk
ZXJpbmdFdmVudChldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09y
ZGVyaW5nRXZlbnQ6OlJlcGx5KHJlc3VsdCksIG1lc3NhZ2VUaW1lb3V0KTsKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCkBAIC00MzUsNyArNDM1LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OmFjY2Vw
dHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW4K
IAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGlt
ZW91dCgzKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2Vw
dHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVyLCBldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2Nl
cHRzRmlyc3RNb3VzZTo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsK
KyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91c2UoZXZlbnRO
dW1iZXIsIGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlOjpSZXBs
eShyZXN1bHQpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yLmNwcAppbmRleCBmZjQ0OTM0MWQ5ZS4uNTdmM2ZlMTczY2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWlu
dDY0X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAgICByZXR1cm4gbV93
ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yOjp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFN0cmluZyYgdmFsaWRhdGlvblVSTFN0cmluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggYjFjYmM5NjNiMGUuLjQ1NGNh
NmJjODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcApAQCAtMjMxLDcgKzIz
MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxsYmFja0lELCBlcnJv
ck1lc3NhZ2UsIGVycm9yVHlwZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1l
bnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1Rp
bWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJn
dW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFj
a1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsK
QEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZEV2
YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsCiAgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNhbGxi
YWNrSUQsIHJlc3VsdCwgZXJyb3JUeXBlKSwgMCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFs
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5h
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTM1MCw3ICsz
NTAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1l
V2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxk
RnJhbWVXaXRoTm9kZUhhbmRsZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2Vi
UGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAg
ICBpZiAoIXBhZ2UpIHsKQEAgLTM4OCw3ICszODgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlE
LAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgZnJhbWVGcm9tRWxlbWVudC0+
ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZl
Q2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4s
IHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFn
ZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQyNiw3ICs0MjYsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFn
ZUlELCB1aW50NgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgY2hpbGRGcmFt
ZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNv
bHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZy
YW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBh
Z2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgcGFy
ZW50RnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6Zm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCit2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJhbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlEKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtNTI3LDcgKzUy
Nyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNvbnZlcnRQb2ludEZyb21GcmFtZUNs
aWVudFRvUm9vdFZpZXcoV2ViQ29yZTo6RnJhbWVWCiAgICAgcmV0dXJuIGNsaWVudFBvaW50Owog
fQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJv
b2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lz
dGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6Oklu
dFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5
b3V0KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29y
ZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdl
YkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTYzNSw3ICs2MzUs
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6
bnVsbG9wdCwgcmVzdWx0RWxlbWVudEJvdW5kcywgcmVzdWx0SW5WaWV3Q2VudGVyUG9pbnQsIGlz
T2JzY3VyZWQpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9w
dGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9k
ZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0
aW9uRWxlbWVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC03MDMsNyAr
NzAzLDcgQEAgc3RhdGljIFdlYkNvcmU6OkludFJlY3Qgc25hcHNob3RSZWN0Rm9yU2NyZWVuc2hv
dChXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpFbGVtZW4KICAgICByZXR1cm4geyB9OwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
K3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBz
Y3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxs
YmFja0lEKQogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKIApAQCAtNzUx
LDcgKzc1MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNo
b3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlECiAgICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0
b21hdGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNhbGxiYWNrSUQsIGhhbmRsZSwgeyB9
KSwgMCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2llc0Zv
ckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tp
ZXNGb3JGcmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC03
NzYsNyArNzc2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVz
Rm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmEKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om51bGxvcHQsIGZvdW5kQ29va2llcyk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6ZGVsZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OmRlbGV0ZUNvb2tpZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKaW5kZXggNjI5NTQxZDIwYmEuLjExNjc2NDUyNzdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVTeXN0ZW0uaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTYwLDE3ICs2MSwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBDYWxsZWQgYnkgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBtZXNzYWdlcwotICAgIHZv
aWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMs
IGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91
dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhP
cmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5h
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYp
OwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQg
cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgZm9jdXNGcmFtZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpOwotICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlv
dXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwg
Ym9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFs
PFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYpOwotICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxl
bWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKLSAgICB2b2lk
IHRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3
cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRDb29raWVzRm9yRnJhbWUo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJik7Ci0gICAgdm9p
ZCBkZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
Y29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7
CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0
cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGlu
dCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2
ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRo
Tm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1l
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3Qp
PiYmKTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgZm9jdXNGcmFtZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgdWludDY0X3QgZnJhbWVJRCk7CisgICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91
dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBP
cHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmKTsKKyAgICB2b2lkIHNlbGVjdE9w
dGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4p
PiYmKTsKKyAgICB2b2lkIHRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1
aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIGdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
ZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CiAKICAgICBTdHJpbmcgbV9z
ZXNzaW9uSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggYWExMjE5ZTJlZjEuLmQ3MmY4OWQyNjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDIxICsyMSwyMSBA
QAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
IHsKLSAgICBFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBi
b29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgZnVu
Y3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxs
YmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQog
Ci0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhO
b2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkg
QXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlUGFyZW50RnJhbWUodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5
cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3Jk
aW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3Qg
ZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkg
QXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUpIC0+IChPcHRpb25hbDxT
dHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlUGFy
ZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
KSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5j
CiAKLSAgICBGb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKKyAg
ICBGb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCkKIAotICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRl
ZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVt
KSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwg
T3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2Jz
Y3VyZWQpIEFzeW5jCisgICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBz
Y3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRlU3lz
dGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2Vi
Q29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2Vu
dGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkgQXN5bmMKIAotICAgIFNlbGVjdE9wdGlvbkVsZW1l
bnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkg
LT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYworICAgIFNlbGVjdE9wdGlvbkVs
ZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYwog
Ci0gICAgVGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBU
b1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFRha2VTY3JlZW5zaG90KFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIEdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKLSAgICBEZWxldGVDb29raWUo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkgLT4g
KE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYworICAgIEdldENvb2tpZXNGb3JGcmFt
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChP
cHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2ll
cykgQXN5bmMKKyAgICBEZWxldGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3JUeXBlKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggYWUz
ODgzZDg2YjYuLmFmODlkNzg4MTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTg5
LDcgKzg5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogd2ViUGFn
ZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UoZGVjb2Rlci5kZXN0aW5hdGlvbklE
KCkpKQorICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAgICAgICAgd2ViUGFnZS0+ZGlkUmVjZWl2ZVdlYlBh
Z2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuY3BwCmluZGV4IDA0YWUwZTQ1ZDVlLi4yNzhiNjAxODQ3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApA
QCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChS
ZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgYXV0byYgZnJh
bWVMb2FkZXJDbGllbnQgPSByZXNvdXJjZUxvYWRlci5mcmFtZUxvYWRlcigpLT5jbGllbnQoKTsK
IAogICAgIFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2luZ1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJh
bWV0ZXJzOwotICAgIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVu
dC5wYWdlSUQoKS52YWx1ZU9yKDApOworICAgIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQgPSBm
cmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsgfSk7CiAg
ICAgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQgPSBmcmFtZUxvYWRlckNsaWVudC5mcmFtZUlE
KCkudmFsdWVPcigwKTsKICAgICB0cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCA9IGlkZW50
aWZpZXI7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBmcmFtZUxvYWRlckNsaWVudC5zZXNzaW9uSUQo
KTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxv
YWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIC8vIHRo
ZW4gd2Ugc2hvdWxkIHJlbWVtYmVyIHRoZSBSZXNvdXJjZUxvYWRlciBpbiBvdXIgcmVjb3JkcyBi
dXQgbm90IHNjaGVkdWxlIGl0IGluIHRoZSBOZXR3b3JrUHJvY2Vzcy4KICAgICBpZiAocmVzb3Vy
Y2VMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+c2NoZWR1bGVBcmNoaXZlTG9hZChyZXNvdXJjZUxv
YWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpKSkgewogICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFyY2hpdmUgcmVzb3VyY2UuIiwgcmVzb3Vy
Y2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJl
IGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRy
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
aGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJ
bnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAg
IG1fd2ViUmVzb3VyY2VMb2FkZXJzLnNldChpZGVudGlmaWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6
Y3JlYXRlKHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTE3NSwxNCArMTc1LDE0IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291
CiAKICAgICBpZiAocmVzb3VyY2VMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25D
YWNoZUhvc3QoKS5tYXliZUxvYWRSZXNvdXJjZShyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2Fk
ZXIucmVxdWVzdCgpLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkpKSB7CiAgICAgICAg
IExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNh
Y2hlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZSAoZnJhbWUgPSAlcCwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDog
VVJMIHdpbGwgYmUgbG9hZGVkIGZyb20gYXBwbGljYXRpb24gY2FjaGUgKGZyYW1lID0gJXAsIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVy
KTsKICAgICAgICAgbV93ZWJSZXNvdXJjZUxvYWRlcnMuc2V0KGlkZW50aWZpZXIsIFdlYlJlc291
cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLnJlcXVlc3Qo
KS51cmwoKS5wcm90b2NvbElzRGF0YSgpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGlu
ZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVz
JyB3aWxsIGJlIGxvYWRlZCBhcyBkYXRhLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNl
TG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgYXMgZGF0YSAoZnJhbWUg
PSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxl
TG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAg
ICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAjaWYgVVNFKFFV
SUNLX0xPT0spCiAgICAgaWYgKGlzUXVpY2tMb29rUHJldmlld1VSTChyZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCkudXJsKCkpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQ
cm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJl
IGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
cmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBR
dWlja0xvb2sgcmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxv
YWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRl
cnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
cmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBR
dWlja0xvb2sgcmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxv
YWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExv
YWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjAxLDcgKzIw
MSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRl
ciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgLy8gaHR0cHM6Ly9ibG9ncy5nbm9t
ZS5vcmcvYWxleGwvMjAxMi8wMS8yNi9yZXNvdXJjZXMtaW4tZ2xpYi8KICAgICBpZiAocmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXMoInJlc291cmNlIikpIHsKICAgICAg
ICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJjZS4i
LCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJM
IHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRy
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
aGFuZGxlZCBhcyBhIEdSZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291
cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICBzdGFydExv
Y2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMTEs
MTEgKzIxMSwxMSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3Vy
Y2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIFdlYlNlcnZpY2VXb3Jr
ZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuaGFuZGxlRmV0Y2gocmVzb3VyY2VMb2FkZXIsIHNlc3Np
b25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgW3RoaXMsIHRy
YWNraW5nUGFyYW1ldGVycywgaWRlbnRpZmllciwgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1C
dWZmZXJpbmdUaW1lKHJlc291cmNlKSwgcmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmKHJlc291cmNl
TG9hZGVyKV0gKFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0IHJlc3VsdCkgbXV0YWJs
ZSB7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1
bHQ6OlVuaGFuZGxlZCkgewogICAgICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdl
YlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwg
YmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGht
IiwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2No
ZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhh
bmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJj
ZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
c2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChm
cmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IGlmIChyZXNvdXJjZUxvYWRlci0+b3B0aW9ucygpLnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2
aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBz
Y2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0g
KGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJj
ZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogdW5hYmxlIHRvIHNjaGVkdWxlIFVSTCB0aHJv
dWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVy
KTsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Jlc291cmNlTG9hZGVyID0gV1RGTW92
ZShyZXNvdXJjZUxvYWRlcildIHsKICAgICAgICAgICAgICAgICBhdXRvIGVycm9yID0gaW50ZXJu
YWxFcnJvcihyZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpLnVybCgpKTsKICAgICAgICAgICAgICAg
ICBlcnJvci5zZXRUeXBlKFJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CkBAIC0y
MjcsMTMgKzIyNywxMyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgICAgICBpZiAoIVdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkudHJ5TG9hZGluZ1VzaW5n
VVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlcikpCiAgICAgICAgICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnNjaGVkdWxlTG9hZEZyb21OZXR3b3Jr
UHJvY2VzcyhyZXNvdXJjZUxvYWRlci5nZXQoKSwgcmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLCBzZXNzaW9uSUQsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBT
VG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKTsKICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNj
aGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2No
ZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZp
ZXIpOwogICAgIH0pOwogI2Vsc2UKICAgICBpZiAoIXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhh
bmRsZXIocmVzb3VyY2VMb2FkZXIpKQogICAgICAgICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1By
b2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLCBzZXNzaW9uSUQsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CiAgICAgZWxzZQotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBV
Ukwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRs
ZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VM
b2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAjZW5kaWYKIH0KIApAQCAtMzI1
LDcgKzMyNSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3
b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAgICAgaWYgKGxvYWRQYXJhbWV0
ZXJzLm9wdGlvbnMubW9kZSAhPSBGZXRjaE9wdGlvbnM6Ok1vZGU6Ok5hdmlnYXRlKSB7CiAgICAg
ICAgIEFTU0VSVChsb2FkUGFyYW1ldGVycy5zb3VyY2VPcmlnaW4pOwogICAgICAgICBpZiAoIWxv
YWRQYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbikgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogbm8gc291cmNlT3Jp
Z2luIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VM
b2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCku
cHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBubyBz
b3VyY2VPcmlnaW4gKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBy
ZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJl
cXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwog
ICAgICAgICAgICAgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChyZXNvdXJjZUxvYWRlcik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM0Niw5ICszNDYsOSBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3Vy
Y2VMb2FkZXImIHJlc291cmNlTAogCiAgICAgQVNTRVJUKChsb2FkUGFyYW1ldGVycy53ZWJQYWdl
SUQgJiYgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCkgfHwgbG9hZFBhcmFtZXRlcnMuY2xpZW50
Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGll
bnRGb3JDcmVkZW50aWFscyk7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNl
TG9hZGVyLCAic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0
aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2Fk
UGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBSZXNv
dXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0g
JXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgp
LCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwg
bG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgIGlmICghV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJl
c291cmNlTG9hZChsb2FkUGFyYW1ldGVycyksIDApKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBz
Y2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJp
b3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRp
Y19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFy
YW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0
ZXJzLmlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJl
c291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ug
d2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlk
ZW50aWZpZXIpOwogICAgICAgICAvLyBXZSBwcm9iYWJseSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhp
cyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQuCiAg
ICAgICAgIC8vIFRoaXMgbG9hZCB3aWxsIG5ldmVyIHN1Y2NlZWQgc28gd2Ugd2lsbCBzY2hlZHVs
ZSBpdCB0byBmYWlsIGFzeW5jaHJvbm91c2x5LgogICAgICAgICBzY2hlZHVsZUludGVybmFsbHlG
YWlsZWRMb2FkKHJlc291cmNlTG9hZGVyKTsKQEAgLTUwNywxOSArNTA3LDE5IEBAIHZvaWQgV2Vi
TG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZy
YW1lTG9hZGVyLCB1bnNpCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJD
bGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CiAgICAg
V2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7
CiAKLSAgICBhdXRvIHBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7Cisg
ICAgYXV0byBwYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+cGFnZUlEKCkgOiBQYWdlSWRlbnRp
ZmllciB7IH07CiAgICAgYXV0byBmcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJ
RCgpIDogMDsKICAgICBhdXRvIHNlc3Npb25JRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9u
SUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CiAKICAgICBhdXRvKiBk
b2N1bWVudCA9IGZyYW1lTG9hZGVyLmZyYW1lKCkuZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3Vt
ZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAi
bG9hZFJlc291cmNlU3luY2hyb25vdXNseTogbm8gZG9jdW1lbnQgKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELCBm
cmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBubyBk
b2N1bWVudCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2Fk
SWRlbnRpZmllcik7CiAgICAgICAgIGVycm9yID0gaW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChhdXRvIHN5bmNMb2FkUmVzdWx0
ID0gdHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIoZnJhbWVMb2Fk
ZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHJlcXVlc3QpKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNs
eTogZmFpbGVkIGNhbGxpbmcgdHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhh
bmRsZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlbHUsIGVycm9yID0gJWQpIiwgcGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBzeW5jTG9hZFJlc3VsdC0+ZXJyb3IuZXJyb3JDb2RlKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHk6IGZhaWxlZCBjYWxsaW5nIHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxT
Y2hlbWVIYW5kbGVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJWx1LCBlcnJvciA9ICVkKSIsIHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFt
ZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBzeW5jTG9hZFJlc3VsdC0+ZXJyb3IuZXJyb3JD
b2RlKCkpOwogICAgICAgICBlcnJvciA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQtPmVycm9yKTsK
ICAgICAgICAgcmVzcG9uc2UgPSBXVEZNb3ZlKHN5bmNMb2FkUmVzdWx0LT5yZXNwb25zZSk7CiAg
ICAgICAgIGRhdGEgPSBXVEZNb3ZlKHN5bmNMb2FkUmVzdWx0LT5kYXRhKTsKQEAgLTU1Myw3ICs1
NTMsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxl
ciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3lu
YyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJv
bm91c0xvYWQobG9hZFBhcmFtZXRlcnMpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6OlJlcGx5KGVycm9yLCByZXNwb25zZSwg
ZGF0YSksIDApKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lv
bklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25v
dXMgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELCBmcmFtZUlELCByZXNv
dXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgc2VuZGluZyBz
eW5jaHJvbm91cyBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQudG9VSW50
NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChhdXRv
KiBwYWdlID0gd2ViUGFnZSA/IHdlYlBhZ2UtPmNvcmVQYWdlKCkgOiBudWxscHRyKQogICAgICAg
ICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2Fn
ZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2Vi
Q29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzeW5jaHJvbm91c01lc3NhZ2VGYWlsZWRLZXko
KSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAgICAgICAgIHJlc3BvbnNlID0gUmVzb3Vy
Y2VSZXNwb25zZSgpOwpAQCAtNTYxLDcgKzU2MSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNp
CiAgICAgfQogfQogCi12b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwYWdlTG9hZENvbXBsZXRlZCh1
aW50NjRfdCB3ZWJQYWdlSUQpCit2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwYWdlTG9hZENvbXBs
ZXRlZChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQYWdlTG9hZENvbXBsZXRl
ZCh3ZWJQYWdlSUQpLCAwKTsKIH0KQEAgLTY0OCwxMCArNjQ4LDEwIEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVS
TCYgdXJsLCBTCiAKICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJz
OwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHVybCB9OwotICAg
IHBhcmFtZXRlcnMud2ViUGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogMDsK
LSAgICBwYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlE
KCkgOiAwOworICAgIHBhcmFtZXRlcnMud2ViUGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7Cisg
ICAgcGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUtPmZyYW1lSUQoKTsKICAgICBwYXJh
bWV0ZXJzLnBhcmVudFBJRCA9IHByZXNlbnRpbmdBcHBsaWNhdGlvblBJRCgpOwotICAgIHBhcmFt
ZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpT
ZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9
IHdlYlBhZ2UtPnNlc3Npb25JRCgpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFBy
ZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6OlllczsKICAgICBwYXJhbWV0ZXJzLnNob3Vs
ZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzID0gc2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tz
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaAppbmRleCA0YWY1OTk0MWUzNC4uYWM1MjQ5NjZhODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBsb2FkUmVzb3VyY2UoV2ViQ29y
ZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpIGZp
bmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXZWJDb3JlOjpGcmFtZUxv
YWRlciYsIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29u
c3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgVmVj
dG9yPGNoYXI+JiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2
NF90IHdlYlBhZ2VJRCkgZmluYWw7CisgICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcikgZmluYWw7CiAKICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNv
dXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmODhmZGEzMDA3
Li44OGJkNTNiZjFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtODgsMTYgKzg4LDE2IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3Nl
ZFJlcXVlc3QsIFJlc291CiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKIAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJp
bmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxT
ZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291
cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJ
RCk7CiAKICAgICBpZiAobV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlv
bkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QobV9jb3JlTG9hZGVyLmdl
dCgpLCBwcm9wb3NlZFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNl
IG1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QgcmV0dXJuZWQgZmFsc2UgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZy
YW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBt
YXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZhbHNlIChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3QoV1RG
TW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qp
IHsKICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRpZmll
cigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVl
c3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9hZGVyIG9yIGlkZW50aWZpZXIgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVh
cmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBvciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExMywxMiArMTEzLDEyIEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90
YWxCeXRlc1RvQmVTCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vzcykg
V2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSBmb3IgJyVzJy4gU3RhdHVzICVk
LiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCByZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHN0YXR1cyA9ICVkKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBz
dGF0dXMgPSAlZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJ
RCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAKICAgICBSZWY8V2ViUmVzb3VyY2VMb2Fk
ZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja0ZvclJl
c3BvbnNlKG1fY29yZUxvYWRlci5nZXQoKSwgcmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBi
ZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVhZHkgY2FjaGVkIChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2Ug
dGhlIGNvbnRlbnQgaXMgYWxyZWFkeSBjYWNoZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgICAg
ICAgICAgaWYgKG1fY29yZUxvYWRlciAmJiBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkKICAg
ICAgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRp
bnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRp
bnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQgKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcg
bG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIH07CiAg
ICAgfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdv
cmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhl
IHJlc3BvbnNlIik7CiAKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcg
ZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVEYXRhOiBTdGFydGVk
IHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgIH0KICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0g
ZGF0YS5zaXplKCk7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3Qg
ZQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewogICAgIExPRyhOZXR3b3Jr
LCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQg
Zm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoUmVzb3VyY2VMb2FkOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBsZW5ndGggPSAlemQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZEZpbmlzaFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCBtX251bUJ5dGVzUmVjZWl2
ZWQpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVz
cG9uc2UsICJMb2FkIHNob3VsZCBub3QgYmUgYWJsZSB0byBmaW5pc2ggYmVmb3JlIHdlJ3ZlIHZh
bGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKICAgICBtX2NvcmVMb2FkZXItPmRpZEZpbmlzaExvYWRp
bmcobmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNz
JiBuZXR3b3JrTAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9j
ZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1f
Y29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRGYWlsUmVzb3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIkxvYWQgc2hvdWxkIG5vdCBiZSBh
YmxlIHRvIGZpbmlzaCBiZWZvcmUgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCkBA
IC0xNzksNyArMTc5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNl
TG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewogICAgIExPRyhOZXR3b3JrLCAi
KFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5k
YXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEJsb2NrQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFy
YW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIG1fY29yZUxvYWRlci0+ZGlkQmxvY2tBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSgpOwogfQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0
eVBvbGljeURlbmllZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBM
T0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdB
ZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZCBmb3IgJyVzJyIs
IG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVu
dFNlY3VyaXR5UG9saWN5RGVuaWVkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RvcExvYWRp
bmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZDogKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7
CiAKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnN0b3BMb2FkaW5nQWZ0ZXJY
RnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQobV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCksIHJlc3BvbnNlKTsKIH0KQEAgLTE5NiwxMyArMTk2LDEzIEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2Vj
dXJpdHlQb2xpY3lEZW5pCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3Vy
Y2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxlKQogewogICAgIExPRyhO
ZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3Vy
Y2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIo
KTsKIAogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNy
ZWF0ZSBidWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsg
cHJvY2Vzcy4iKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZm
ZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVz
b3VyY2VJRCk7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IG1fY29yZUxvYWRlci0+ZnJhbWUo
KSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQogICAgICAg
ICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01l
c3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCks
IFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3JlYXRlU2hhcmVkQnVmZmVyRmFpbGVk
S2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggN2ZkNzgzMjIz
M2EuLjU4NjU0MzcxOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJD
b25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNoYXJl
YWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01
MCw3ICs1MSw3IEBAIHR5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIGNs
YXNzIFdlYlJlc291cmNlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2Fk
ZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgVHJh
Y2tpbmdQYXJhbWV0ZXJzIHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEIHsgMCB9OworICAgICAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIHVpbnQ2NF90IGZyYW1l
SUQgeyAwIH07CiAgICAgICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCB7IDAg
fTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCAyMGU0ZDVj
NWFkYi4uZmEwNzgyM2ZmM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBA
IC0xNTAsNyArMTUwLDcgQEAgYm9vbCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpzaG93KE5vdGlm
aWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogICAgIGF1dG8gaXQgPSBtX25v
dGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkpLml0ZXJhdG9yOwogICAgIGl0LT52YWx1ZS5hcHBl
bmQobm90aWZpY2F0aW9uSUQpOwogCi0gICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd05vdGlmaWNhdGlvbihub3Rp
ZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNhdGlvbi0+Ym9keSgpLCBub3RpZmljYXRpb24tPmlj
b24oKS5zdHJpbmcoKSwgbm90aWZpY2F0aW9uLT50YWcoKSwgbm90aWZpY2F0aW9uLT5sYW5nKCks
IG5vdGlmaWNhdGlvbi0+ZGlyKCksIG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpLCBub3RpZmljYXRpb25JRCksIHBhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dO
b3RpZmljYXRpb24obm90aWZpY2F0aW9uLT50aXRsZSgpLCBub3RpZmljYXRpb24tPmJvZHkoKSwg
bm90aWZpY2F0aW9uLT5pY29uKCkuc3RyaW5nKCksIG5vdGlmaWNhdGlvbi0+dGFnKCksIG5vdGlm
aWNhdGlvbi0+bGFuZygpLCBub3RpZmljYXRpb24tPmRpcigpLCBub3RpZmljYXRpb24tPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbm90aWZp
Y2F0aW9uSUQpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5v
dGlmaWNhdGlvbik7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiAg
ICAgaWYgKCFub3RpZmljYXRpb25JRCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJv
Y2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNhbmNlbE5vdGlmaWNhdGlv
bihub3RpZmljYXRpb25JRCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9u
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCoKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiYg
bm90aWZpY2F0aW9uSURzID0gaXQtPnZhbHVlOwotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsZWFyTm90aWZpY2F0
aW9ucyhub3RpZmljYXRpb25JRHMpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURz
KSk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0aW9uSURzLnNpemUoKTsKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgUmVmUHRyPE5vdGlmaWNh
dGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC50YWtlKG5vdGlmaWNhdGlv
bklEc1tpXSk7CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLAogCiAg
ICAgbV9ub3RpZmljYXRpb25JRE1hcC5yZW1vdmUobm90aWZpY2F0aW9uSUQpOwogICAgIHJlbW92
ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKG5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24p
OwotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCBw
YWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShub3RpZmljYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCAzNGI1YTY0M2YwMy4uOGNkZGI1MzBkN2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAg
c3RhdGljIGNvbnN0IFNlY29uZHMgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwMF9t
cyB9OyAvLyBPbmx5IHVzZWQgYnkgbGEKIAogY2xhc3MgU2VydmljZVdvcmtlckZyYW1lTG9hZGVy
Q2xpZW50IGZpbmFsIDogcHVibGljIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgewogcHVibGljOgot
ICAgIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudChXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQorICAgIFNl
cnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudChXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50
KQogICAgICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICAgICAsIG1fc2Vzc2lv
bklEKHNlc3Npb25JRCkKICAgICAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC05NSwxOCArOTUs
MTggQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3Vt
ZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9u
SUQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9wYWdlSUQ7IH0KKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7IH0KICAgICBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZnJhbWVJRDsgfQogICAgIFN0
cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgZmluYWwgeyByZXR1cm4gbV91c2VyQWdlbnQ7IH0K
IAogICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CiAgICAg
UEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07
CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9m
cmFtZUlEIHsgMCB9OwogICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKIH07CiAKLVdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBD
OjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgOiBt
X2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBt
X3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggNmNlODNkMWQwOWUuLmZiYjYzMGU0ZTE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0
IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAKIGNsYXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24s
IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUdy
b3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAg
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVp
bnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYpOwogICAgIH5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwog
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNv
bm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CiAgICAgdWludDY0X3QgbV9w
YWdlR3JvdXBJRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICB1aW50NjRfdCBtX3ByZXZpb3VzU2VydmljZVdv
cmtlcklEIHsgMCB9OwogCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9j
a2luZ1BvbGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSB7IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsU3RvcmFnZSB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCA0OTMzY2E0YzNhMC4uMjlhM2ZlNTc0ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC04MiwxNCArODIsMTQgQEAgUmVm
PFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRP
ckNyZWF0ZShVc2VyQ29udGVudEMKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmll
cikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAq
dGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyLCAqdGhpcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6fldl
YlVzZXJDb250ZW50Q29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKHVzZXJDb250ZW50Q29udHJv
bGxlcnMoKS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lk
ZW50aWZpZXIpOwogCiAgICAgdXNlckNvbnRlbnRDb250cm9sbGVycygpLnJlbW92ZShtX2lkZW50
aWZpZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCA0OTYyOTZmNmQ4OC4uMzQzZTgz
NWFkMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgRmxvYXRS
ZWN0IFdlYkNocm9tZUNsaWVudDo6d2luZG93UmVjdCgpCiAKICAgICBGbG9hdFJlY3QgbmV3V2lu
ZG93RnJhbWU7CiAKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRv
d0ZyYW1lKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpSZXBseShu
ZXdXaW5kb3dGcmFtZSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWUoKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWU6OlJlcGx5KG5ld1dpbmRvd0ZyYW1lKSkpCiAgICAg
ICAgIHJldHVybiBGbG9hdFJlY3QoKTsKIAogICAgIHJldHVybiBuZXdXaW5kb3dGcmFtZTsKQEAg
LTI2Myw3ICsyNjMsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdl
ZChGcmFtZSogZnJhbWUpCiB7CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gZnJhbWUgPyBXZWJG
cmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpIDogbnVsbHB0cjsKIAotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6Rm9jdXNlZEZyYW1lQ2hhbmdlZCh3ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFt
ZUlEKCkgOiAwKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpGb2N1c2VkRnJhbWVDaGFuZ2VkKHdlYkZyYW1lID8gd2ViRnJhbWUtPmZy
YW1lSUQoKSA6IDApKTsKIH0KIAogUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3co
RnJhbWUmIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5k
b3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmln
YXRpb25BY3Rpb24pCkBAIC0yODgsMTkgKzI4OCwyMCBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6
OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVl
cwogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJh
bWUpOwogCi0gICAgdWludDY0X3QgbmV3UGFnZUlEID0gMDsKKyAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gbmV3UGFnZUlEOwogICAgIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnM+IHBhcmFtZXRlcnM7Ci0gICAgaWYgKCF3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2Vi
RnJhbWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCksIHJlcXVlc3QucmVzb3Vy
Y2VSZXF1ZXN0KCksIHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1l
dGVycyksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZSh3ZWJGcmFtZS0+aW5mbygpLCB3ZWJGcmFt
ZS0+cGFnZSgpLT5wYWdlSUQoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgd2luZG93RmVh
dHVyZXMsIG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3Jl
YXRlTmV3UGFnZTo6UmVwbHkobmV3UGFnZUlELCBwYXJhbWV0ZXJzKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgaWYgKCFuZXdQYWdlSUQpCiAgICAgICAgIHJldHVybiBudWxscHRy
OworCiAgICAgQVNTRVJUKHBhcmFtZXRlcnMpOwogICAgIGlmIChwYXJhbWV0ZXJzLT5zZXNzaW9u
SUQgPT0gbV9wYWdlLnNlc3Npb25JRCgpKQogICAgICAgICBwYXJhbWV0ZXJzLT5vbGRQYWdlSUQg
PSBtX3BhZ2UucGFnZUlEKCk7CiAKLSAgICB3ZWJQcm9jZXNzLmNyZWF0ZVdlYlBhZ2UobmV3UGFn
ZUlELCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSk7Ci0gICAgcmV0dXJuIHdlYlByb2Nlc3Mud2ViUGFn
ZShuZXdQYWdlSUQpLT5jb3JlUGFnZSgpOworICAgIHdlYlByb2Nlc3MuY3JlYXRlV2ViUGFnZSgq
bmV3UGFnZUlELCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIHdlYlByb2Nlc3Mu
d2ViUGFnZSgqbmV3UGFnZUlEKS0+Y29yZVBhZ2UoKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnNob3coKQpAQCAtMzM1LDcgKzMzNiw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp0b29s
YmFyc1Zpc2libGUoKQogICAgICAgICByZXR1cm4gdG9vbGJhcnNWaXNpYmlsaXR5ID09IEFQSTo6
SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6VUlFbGVtZW50VmlzaWJpbGl0eTo6VmlzaWJs
ZTsKICAgICAKICAgICBib29sIHRvb2xiYXJzQXJlVmlzaWJsZSA9IHRydWU7Ci0gICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGUoKSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpSZXBseSh0b29sYmFyc0Fy
ZVZpc2libGUpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZSgpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGU6OlJlcGx5KHRvb2xiYXJzQXJlVmlz
aWJsZSkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiB0b29sYmFyc0FyZVZp
c2libGU7CkBAIC0zNTMsNyArMzU0LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnN0YXR1c2Jh
clZpc2libGUoKQogICAgICAgICByZXR1cm4gc3RhdHVzYmFyVmlzaWJpbGl0eSA9PSBBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxpdHk6OlZpc2libGU7
CiAKICAgICBib29sIHN0YXR1c0JhcklzVmlzaWJsZSA9IHRydWU7Ci0gICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGUoKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxlOjpSZXBseShzdGF0dXNCYXJJc1Zpc2li
bGUpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGU6OlJlcGx5KHN0YXR1c0JhcklzVmlzaWJsZSkp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBzdGF0dXNCYXJJc1Zpc2libGU7
CkBAIC0zODIsNyArMzgzLDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6Om1lbnViYXJWaXNpYmxl
KCkKICAgICAgICAgcmV0dXJuIG1lbnViYXJWaXNpYmlsaXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5k
bGU6OlBhZ2VVSUNsaWVudDo6VUlFbGVtZW50VmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICAKICAg
ICBib29sIG1lbnVCYXJJc1Zpc2libGUgPSB0cnVlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpHZXRNZW51QmFySXNWaXNpYmxlOjpSZXBseShtZW51QmFySXNWaXNpYmxlKSwgbV9wYWdlLnBh
Z2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpHZXRNZW51QmFySXNWaXNpYmxlKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVC
YXJJc1Zpc2libGU6OlJlcGx5KG1lbnVCYXJJc1Zpc2libGUpKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICByZXR1cm4gbWVudUJhcklzVmlzaWJsZTsKQEAgLTExODYsNyArMTE4Nyw3IEBA
IHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5n
ZSh1aW50NjRfdCBlbGVtZW50SUQpCiBib29sIFdlYkNocm9tZUNsaWVudDo6d3JhcENyeXB0b0tl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5
KSBjb25zdAogewogICAgIGJvb2wgc3VjY2VlZGVkOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6V3JhcENyeXB0b0tleShrZXkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpX
cmFwQ3J5cHRvS2V5OjpSZXBseShzdWNjZWVkZWQsIHdyYXBwZWRLZXkpLCBtX3BhZ2UucGFnZUlE
KCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Oldy
YXBDcnlwdG9LZXkoa2V5KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V3JhcENyeXB0b0tleTo6
UmVwbHkoc3VjY2VlZGVkLCB3cmFwcGVkS2V5KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICByZXR1cm4gc3VjY2VlZGVkOwogfQpAQCAtMTE5NCw3ICsxMTk1LDcgQEAgYm9vbCBXZWJDaHJv
bWVDbGllbnQ6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rv
cjx1aW50OF90PiYKIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp1bndyYXBDcnlwdG9LZXkoY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtleSkgY29uc3QK
IHsKICAgICBib29sIHN1Y2NlZWRlZDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
VW53cmFwQ3J5cHRvS2V5OjpSZXBseShzdWNjZWVkZWQsIGtleSksIG1fcGFnZS5wYWdlSUQoKSkp
CisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW53cmFw
Q3J5cHRvS2V5KHdyYXBwZWRLZXkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbndyYXBDcnlw
dG9LZXk6OlJlcGx5KHN1Y2NlZWRlZCwga2V5KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICByZXR1cm4gc3VjY2VlZGVkOwogfQpAQCAtMTIwNCw3ICsxMjA1LDcgQEAgYm9vbCBXZWJDaHJv
bWVDbGllbnQ6OnVud3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRL
ZXksIFZlY3RvcjwKIFN0cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxl
bmdlU3RyaW5nLCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0Owot
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5
KHJlc3VsdCksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtl
eVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCkpKQogICAg
ICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTMx
NywxMiArMTMxOCwxMiBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkSW52YWxpZGF0ZURvY3Vt
ZW50TWFya2VyUmVjdHMoKQogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9t
YWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VB
Y2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21h
aW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
bV9wYWdlLmhhc1N0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUo
dG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKLXZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJs
ZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFp
biYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UucmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJh
bWVEb21haW4pLCBmcmFtZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hy
b21lQ2xpZW50LmgKaW5kZXggZGQzYjIyNTQzNWQuLjI5MWM1ZWRkYzhjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5oCkBAIC0zNjksOCArMzY5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEludmFsaWRh
dGVEb2N1bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9B
RF9TVEFUSVNUSUNTKQotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0
U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duKT4mJikgZmluYWw7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwor
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
JiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJikgZmluYWw7CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29sb3JDaG9vc2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuY3BwCmluZGV4
IGQ1MzVlNWM1NWM2Li5jYjQwMjQxNzA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAKQEAgLTQy
LDcgKzQyLDcgQEAgV2ViQ29sb3JDaG9vc2VyOjpXZWJDb2xvckNob29zZXIoV2ViUGFnZSogcGFn
ZSwgQ29sb3JDaG9vc2VyQ2xpZW50KiBjbGllbnQsIGNvbnMKICAgICAsIG1fcGFnZShwYWdlKQog
ewogICAgIG1fcGFnZS0+c2V0QWN0aXZlQ29sb3JDaG9vc2VyKHRoaXMpOwotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2hvd0NvbG9yUGlja2VyKGluaXRpYWxDb2xvciwgY2xpZW50LT5lbGVt
ZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpLCBjbGllbnQtPnN1Z2dlc3RlZENvbG9ycygpKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNob3dDb2xvclBpY2tlcihpbml0aWFsQ29sb3IsIGNsaWVudC0+ZWxlbWVudFJlY3RSZWxh
dGl2ZVRvUm9vdFZpZXcoKSwgY2xpZW50LT5zdWdnZXN0ZWRDb2xvcnMoKSkpOwogfQogCiBXZWJD
b2xvckNob29zZXI6On5XZWJDb2xvckNob29zZXIoKQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFdl
YkNvbG9yQ2hvb3Nlcjo6cmVhdHRhY2hDb2xvckNob29zZXIoY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIG1fcGFnZS0+c2V0QWN0aXZlQ29sb3JDaG9vc2VyKHRoaXMpOwogCiAgICAgQVNTRVJUKG1f
Y29sb3JDaG9vc2VyQ2xpZW50KTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xv
clBpY2tlcihjb2xvciwgbV9jb2xvckNob29zZXJDbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVU
b1Jvb3RWaWV3KCksIG1fY29sb3JDaG9vc2VyQ2xpZW50LT5zdWdnZXN0ZWRDb2xvcnMoKSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTaG93Q29sb3JQaWNrZXIoY29sb3IsIG1fY29sb3JDaG9vc2VyQ2xpZW50LT5lbGVtZW50UmVj
dFJlbGF0aXZlVG9Sb290VmlldygpLCBtX2NvbG9yQ2hvb3NlckNsaWVudC0+c3VnZ2VzdGVkQ29s
b3JzKCkpKTsKIH0KIAogdm9pZCBXZWJDb2xvckNob29zZXI6OnNldFNlbGVjdGVkQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yKQpAQCAtODUsNyArODUsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6
c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKG1fcGFnZS0+YWN0
aXZlQ29sb3JDaG9vc2VyKCkgIT0gdGhpcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTZXRDb2xvclBpY2tlckNvbG9yKGNvbG9yKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldENvbG9y
UGlja2VyQ29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBXZWJDb2xvckNob29zZXI6OmVuZENob29z
ZXIoKQpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6ZW5kQ2hvb3Nlcigp
CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RW5kQ29sb3JQaWNrZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVuZENvbG9yUGlja2VyKCkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlci5jcHAKaW5kZXggZDAyNWRmYWNmYTIuLmQzNmExNTRjZmVmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXI6On5XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoKSB7IH0K
IAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmhhbmRsZUtleWRvd25XaXRoSWRl
bnRpZmllcihjb25zdCBXVEY6OlN0cmluZyYga2V5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6SGFuZGxlS2V5ZG93bkluRGF0YUxpc3Qoa2V5KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUtleWRvd25JbkRh
dGFMaXN0KGtleSkpOwogfQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlk
U2VsZWN0T3B0aW9uKGNvbnN0IFdURjo6U3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKQEAgLTYyLDcg
KzYyLDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZENsb3NlU3VnZ2Vz
dGlvbnMoKQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6Y2xvc2UoKQogewot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygpKTsKIH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rp
b25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWN0
aXZhdGlvblR5cGUgdHlwZSkKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXI6OmRpc3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoRGF0YUxpc3RTdWdnZXN0aW9u
QWMKICAgICBtX3BhZ2UtPnNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcih0aGlzKTsK
IAogICAgIERhdGFMaXN0U3VnZ2VzdGlvbkluZm9ybWF0aW9uIGluZm8gPSB7IHR5cGUsIG1fZGF0
YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+c3VnZ2VzdGlvbnMoKSwgbV9kYXRhTGlzdFN1Z2dlc3Rp
b25zQ2xpZW50LT5lbGVtZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIH07Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpTaG93RGF0YUxpc3RTdWdnZXN0aW9ucyhpbmZvKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNo
b3dEYXRhTGlzdFN1Z2dlc3Rpb25zKGluZm8pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGY0MjhmZDIzOTdlLi43MDUyMDI1YjlkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRv
ckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6cmVnaXN0ZXJVbmRvU3RlcChVbmRvU3RlcCYgc3RlcCkKICAgICBhdXRvIHN0ZXBJRCA9
IHdlYlN0ZXAtPnN0ZXBJRCgpOwogCiAgICAgbV9wYWdlLT5hZGRXZWJVbmRvU3RlcChzdGVwSUQs
IFdURk1vdmUod2ViU3RlcCkpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyhzdGVwSUQsIHN0ZXAubGFiZWwoKSksIG1f
cGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oc3RlcElELCBzdGVwLmxhYmVsKCkpLCBJ
UEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBs
eSk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFVuZG9TdGVw
JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDUyOWMwNDY3MDMwLi4zZGNk
N2UyZWMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTIsNyArMTEy
LDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6On5XZWJGcmFtZUxvYWRlckNsaWVudCgpCiB7CiB9
CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29u
c3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlE
KCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAg
IHJldHVybiBtX2ZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJiBlCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKSwgbV9mcmFtZS0+
ZnJhbWVJRCgpKTsKKyAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKS50
b1VJbnQ2NCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOwogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0
PiB1c2VyRGF0YTsKIApAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAg
aWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3Jr
LCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZDogKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+
cGFnZUlEKCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywg
IiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQ6IChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBh
Z2VJRCgpLnRvVUludDY0KCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CiAKICAgICBSZWZQdHI8QVBJ
OjpPYmplY3Q+IHVzZXJEYXRhOwogCkBAIC05MDEsNyArOTAxLDkgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0
IE5hdmlnYXQKICAgICBpZiAocmVxdWVzdGVyLmZyYW1lSUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJGcmFtZShyZXF1ZXN0ZXIuZnJhbWVJRCgpKSkKICAgICAgICAgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPSByZXF1ZXN0ZXIuZnJhbWVJRCgpOwogCi0gICAgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQgPSByZXF1ZXN0ZXIucGFnZUlEKCkgJiYgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShyZXF1ZXN0ZXIucGFnZUlEKCkpID8gcmVxdWVzdGVyLnBh
Z2VJRCgpIDogMDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQ7CisgICAgaWYgKHJlcXVlc3Rlci5wYWdlSUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJQYWdlKHJlcXVlc3Rlci5wYWdlSUQoKSkpCisgICAgICAgIG9yaWdpbmF0aW5nUGFnZUlE
ID0gcmVxdWVzdGVyLnBhZ2VJRCgpOwogCiAgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdh
dGlvbkFjdGlvbkRhdGE7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUg
PSBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmlu
ZGV4IGY3M2FiOGNhNzNmLi5jOGZiMmFmMjEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseVRvRG9jdW1lbnRM
b2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQo
KSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUG9wdXBNZW51LmNwcAppbmRleCBkMTZmZTg1Nzc4NC4uMjA4YmI4OGEzYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1l
bnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQ
b3B1cE1lbnUuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OnNob3co
Y29uc3QgSW50UmVjdCYgcmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiAgICAgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhIHBsYXRmb3JtRGF0YTsKICAgICBzZXRVcFBsYXRmb3JtRGF0YShw
YWdlQ29vcmRpbmF0ZXMsIHBsYXRmb3JtRGF0YSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlNob3dQb3B1cE1lbnUocGFnZUNvb3JkaW5hdGVzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4o
bV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCkudGV4dERpcmVjdGlvbigpKSwgaXRlbXMsIGluZGV4
LCBwbGF0Zm9ybURhdGEpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd1BvcHVwTWVudShwYWdlQ29vcmRpbmF0ZXMsIHN0YXRp
Y19jYXN0PHVpbnQ2NF90PihtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKS50ZXh0RGlyZWN0aW9u
KCkpLCBpdGVtcywgaW5kZXgsIHBsYXRmb3JtRGF0YSkpOwogfQogCiB2b2lkIFdlYlBvcHVwTWVu
dTo6aGlkZSgpCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OmhpZGUoKQog
ICAgIGlmICghbV9wYWdlIHx8ICFtX3BvcHVwQ2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhpZGVQb3B1cE1lbnUoKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhpZGVQb3B1cE1l
bnUoKSk7CiAgICAgbV9wYWdlLT5zZXRBY3RpdmVQb3B1cE1lbnUobnVsbHB0cik7CiAgICAgbV9w
b3B1cENsaWVudC0+cG9wdXBEaWRIaWRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3Bw
CmluZGV4IDMzZDQ3NTZlZGEyLi5jMGU4YzE5MTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVu
dS5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNl
bnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICAgICBpZiAo
IXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2F2
ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1zKSwgcGFnZS0+cGFnZUlEKCkpOworICAg
IHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5h
bWUsIHNlYXJjaEl0ZW1zKSk7CiB9CiAKIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVj
ZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNo
PiYgcmVzdWx0SXRlbXMpCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51
Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVj
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNoZXMobmFtZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkxvYWRSZWNlbnRTZWFyY2hlczo6UmVwbHkocmVzdWx0SXRlbXMpLCBwYWdlLT5wYWdlSUQo
KSk7CisgICAgcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9hZFJlY2Vu
dFNlYXJjaGVzKG5hbWUpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNo
ZXM6OlJlcGx5KHJlc3VsdEl0ZW1zKSk7CiB9CiAKIGJvb2wgV2ViU2VhcmNoUG9wdXBNZW51Ojpl
bmFibGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggZjk5
ODZlNDFjYTIuLmNmN2NiZjRmOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU3RyaW5nIG1f
ZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwotICAgIGNvbnN0IHVpbnQ2NF90IG1f
cGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAg
IFF1aWNrTG9va0RvY3VtZW50RGF0YSBtX2RhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggMjc2YjgwYmYyOGYuLjhk
NjliODU0YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9E
cmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJh
d2luZ0FyZWEuY3BwCkBAIC02OCw3ICs2OCw3IEBAIERyYXdpbmdBcmVhOjpEcmF3aW5nQXJlYShE
cmF3aW5nQXJlYVR5cGUgdHlwZSwgRHJhd2luZ0FyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAg
ICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKQog
ewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRl
bnRpZmllciwgKnRoaXMpOwogfQogCiBEcmF3aW5nQXJlYTo6fkRyYXdpbmdBcmVhKCkKQEAgLTk0
LDcgKzk0LDE3IEBAIHZvaWQgRHJhd2luZ0FyZWE6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcklmTmVl
ZGVkKCkKICAgICBpZiAobV9oYXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVyKQogICAgICAgICByZXR1
cm47CiAgICAgbV9oYXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVyID0gdHJ1ZTsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdB
cmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7Cit9CisK
K0lQQzo6Q29ubmVjdGlvbiogRHJhd2luZ0FyZWE6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgRHJhd2luZ0FyZWE6Om1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVudGlmaWVyLnRvVUludDY0
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKaW5kZXggODA2OWExNThlZTIuLmVjOTUzN2Q3MGYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKICNpbmNsdWRl
ICJMYXllclRyZWVDb250ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpA
QCAtNjUsNyArNjYsNyBAQCBjbGFzcyBMYXllclRyZWVIb3N0Owogc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM7CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIAotY2xhc3MgRHJh
d2luZ0FyZWEgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgRHJhd2luZ0Fy
ZWEgOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByb3RlY3RlZCBJUEM6Ok1lc3NhZ2VT
ZW5kZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERyYXdpbmdBcmVhKTsKIApAQCAtMTUzLDExICsxNTQsNiBAQCBwdWJsaWM6CiBwcm90
ZWN0ZWQ6CiAgICAgRHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlLCBEcmF3aW5nQXJlYUlkZW50
aWZpZXIsIFdlYlBhZ2UmKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChj
b25zdCBVJiBtZXNzYWdlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2ViUGFnZS5zZW5kKG1l
c3NhZ2UsIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCB7IH0pOwotICAgIH0KLQogICAgIERyYXdp
bmdBcmVhVHlwZSBtX3R5cGU7CiAgICAgRHJhd2luZ0FyZWFJZGVudGlmaWVyIG1faWRlbnRpZmll
cjsKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7CkBAIC0xNzAsNiArMTY2LDEwIEBAIHByaXZhdGU6
CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIAorICAgIC8vIElQQzo6
TWVzc2FnZVNlbmRlcgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKSBjb25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25J
RCgpIGNvbnN0IGZpbmFsOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICAvLyBGSVhN
RTogVGhlc2Ugc2hvdWxkIGJlIHB1cmUgdmlydHVhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDY5MTgzMGI1OTNj
Li5jZDc4MjY4ZWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24p
CiAgICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpF
dmVudERpc3BhdGNoZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1ZS5nZXQoKSwgdGhp
cyk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRM
ZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwg
Ym9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxF
dmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZl
bnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwg
Ym9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQogewog
I2lmIFBMQVRGT1JNKENPQ09BKSB8fCBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIFBsYXRm
b3JtV2hlZWxFdmVudCBwbGF0Zm9ybVdoZWVsRXZlbnQgPSBwbGF0Zm9ybSh3aGVlbEV2ZW50KTsK
QEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbgogfQogCiAjaWYgRU5B
QkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXN0dXJlRXZl
bnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYgZ2VzdHVy
ZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7
CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5kaXNwYXRjaEdlc3R1cmVFdmVudChwYWdlSUQsIGdlc3R1cmVFdmVudCk7CkBAIC0x
NjMsNyArMTYzLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmdldFF1ZXVlZFRvdWNoRXZlbnRz
Rm9yUGFnZShjb25zdCBXZWJQYWdlJiB3ZWJQYWdlLCBUb3VjaEUKICAgICBkZXN0aW5hdGlvblF1
ZXVlID0gbV90b3VjaEV2ZW50cy50YWtlKHdlYlBhZ2UucGFnZUlEKCkpOwogfQogCi12b2lkIEV2
ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6
V2ViVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2
ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiB0
b3VjaEV2ZW50KQogewogICAgIGJvb2wgdXBkYXRlTGlzdFdhc0VtcHR5OwogICAgIHsKQEAgLTIw
Nyw3ICsyMDcsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cygp
CiB9CiAjZW5kaWYKIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit2b2lkIEV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHcK
IH0KIAogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi12b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEdlc3R1
cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2Vz
dHVyZUV2ZW50KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIzMiw5
ICsyMzIsOSBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
QVNZTkNfU0NST0xMSU5HKQotdm9pZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRSZWNlaXZlRXZl
bnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJFdmVudCYgZXZlbnQsIGJvb2wgZGlkSGFuZGxl
RXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6c2VuZERpZFJlY2VpdmVFdmVudChQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiBldmVudCwgYm9vbCBkaWRIYW5kbGVFdmVu
dCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNf
Y2FzdDx1aW50MzJfdD4oZXZlbnQudHlwZSgpKSwgZGlkSGFuZGxlRXZlbnQpLCBwYWdlSUQpOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVp
bnQzMl90PihldmVudC50eXBlKCkpLCBkaWRIYW5kbGVFdmVudCksIHBhZ2VJRC50b1VJbnQ2NCgp
KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDFkNDc3ODc3ZWFhLi5lMWJiYmQ0Nzk2OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKICNpbmNsdWRlICJX
ZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1doZWVsRXZlbnREZWx0YUZpbHRlci5oPgogI2luY2x1ZGUgPG1lbW9yeT4KICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNzcsMzggKzc4LDM4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKLSAgICB2b2lkIHdoZWVsRXZlbnQo
dWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRv
cCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOworICAgIHZvaWQgd2hlZWxFdmVudChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViV2hlZWxFdmVudCYsIGJvb2wgY2FuUnViYmVy
QmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsKICNpZiBFTkFCTEUoSU9TX1RPVUNI
X0VWRU5UUykKLSAgICB2b2lkIHRvdWNoRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJU
b3VjaEV2ZW50Jik7CisgICAgdm9pZCB0b3VjaEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVf
RVZFTlRTKQotICAgIHZvaWQgZ2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
R2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBnZXN0dXJlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAKIAogICAgIC8vIFRoaXMg
aXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVu
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKKyAgICB2b2lkIGRpc3Bh
dGNoV2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViV2hlZWxFdmVu
dCYpOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgZGlzcGF0Y2hUb3Vj
aEV2ZW50cygpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLSAgICB2
b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVy
ZUV2ZW50Jik7CisgICAgdm9pZCBkaXNwYXRjaEdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShB
U1lOQ19TQ1JPTExJTkcpCi0gICAgdm9pZCBzZW5kRGlkUmVjZWl2ZUV2ZW50KHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgV2ViRXZlbnQmLCBib29sIGRpZEhhbmRsZUV2ZW50KTsKKyAgICB2b2lkIHNl
bmREaWRSZWNlaXZlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkV2ZW50
JiwgYm9vbCBkaWRIYW5kbGVFdmVudCk7CiAjZW5kaWYKIAogICAgIFJlZjxXb3JrUXVldWU+IG1f
cXVldWU7CiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIExvY2sgbV9zY3JvbGxp
bmdUcmVlc011dGV4OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3JlOjpUaHJl
YWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOworICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+
PiBtX3Njcm9sbGluZ1RyZWVzOwogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OldoZWVsRXZlbnREZWx0YUZpbHRlcj4gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0ZXI7CiAj
aWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgTG9jayBtX3RvdWNoRXZlbnRzTG9jazsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBUb3VjaEV2ZW50UXVldWU+IG1fdG91Y2hFdmVudHM7Cisg
ICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVG91Y2hFdmVudFF1ZXVlPiBtX3Rv
dWNoRXZlbnRzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KaW5kZXggNWUx
NTQzYzk4Y2MuLmFmOTA0YjQ1MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCkBAIC0yMSwx
MSArMjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gRXZlbnREaXNwYXRjaGVy
IHsKLSAgICBXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50
IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0Umln
aHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkK
KyAgICBXaGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpX
ZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnVi
YmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJh
bmRBdEJvdHRvbSkKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICBUb3VjaEV2ZW50
KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorICAgIFRvdWNo
RXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlRvdWNoRXZl
bnQgZXZlbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIEdl
c3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50
KQorICAgIEdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktp
dDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggYjc1MmMxYzU0ZDQu
LmIyOTFkZjBiN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCkBAIC03NSw3ICs3NSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25z
dCBXCiAgICAgLy8gRklYTUU6IFdoaWxlIHVzaW5nIHRoZSBoaWdoIGVuZCBvZiB0aGUgcmFuZ2Ug
b2YgRGlzcGxheUlEcyBtYWtlcyBhIGNvbGxpc2lvbiB3aXRoIHJlYWwsIG5vbi1SZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYQogICAgIC8vIERpc3BsYXlJRHMgbGVzcyBsaWtlbHksIGl0IGlzIG5v
dCBlbnRpcmVseSBzYWZlIHRvIGhhdmUgYSBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSBhbmQg
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEKICAgICAvLyBjb2VleGlzdCBpbiB0aGUgc2Ft
ZSBwcm9jZXNzLgotICAgIHdlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJp
Y19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkpOworICAgIHdlYlBh
Z2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+Ojpt
YXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoKQpAQCAtNDM0LDcgKzQz
NCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAg
ICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0b3JlRmx1c2hlciA9IEJhY2tp
bmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLCBXVEZNb3ZlKGNvbW1pdEVuY29kZXIpLCBXVEZNb3ZlKGNvbnRleHRz
VG9GbHVzaCkpOwogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXIgPSBiYWNraW5nU3Rv
cmVGbHVzaGVyOwogCi0gICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgpOwor
ICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgpOwogICAgIGRpc3BhdGNoX2FzeW5j
KG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3Rv
cmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNo
KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90
ZVdlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZVdlYkluc3BlY3RvclVJLmNwcAppbmRleCAwNTQ0MDQ1NmY0MS4uYzk0MGUwY2QwNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZVdlYkluc3Bl
Y3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVX
ZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0
b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogdm9p
ZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTZW5k
TWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNlbmRNZXNzYWdlVG9CYWNr
ZW5kKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6d2luZG93T2Jq
ZWN0Q2xlYXJlZCgpCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clVJOjpmcm9udGVuZExvYWRlZCgpCiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmNoYW5n
ZVNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OlNldFNoZWV0UmVjdChyZWN0KSwgbV9wYWdlLnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNldFNo
ZWV0UmVjdChyZWN0KSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnN0YXJ0V2lu
ZG93RHJhZygpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0
V2luZG93RHJhZygpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5kb3dEcmFnKCkpOwogfQogCiB2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkKQEAg
LTEyNCwzNCArMTI0LDM0IEBAIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24g
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OnVzZXJJbnRlcmZhY2VMYXlvdXRECiAKIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250
KCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdygpCiB7CiAg
ICAgbV9wYWdlLmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNwZWN0b3JG
cm9udGVuZENsaWVudChudWxscHRyKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpGcm9udGVuZERpZENsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpGcm9udGVuZERpZENsb3Nl
KCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpyZW9wZW4oKQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpSZW9wZW4oKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlJl
b3BlbigpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6b3BlbkluTmV3VGFiKGNv
bnN0IFN0cmluZyYgdXJsKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5
OjpPcGVuSW5OZXdUYWIodXJsKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Ok9wZW5Jbk5ld1RhYih1cmwpKTsKIH0K
IAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNh
dmVBcykKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2F2ZShmaWxl
bmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpKTsKIH0K
IAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6YXBwZW5kKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9wYWdlLnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkFwcGVu
ZChmaWxlbmFtZSwgY29udGVudCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpp
bnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQpAQCAtMTYxLDcgKzE2
MSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6Omluc3BlY3RlZFVSTENoYW5nZWQoY29u
c3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNob3dD
ZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2hvd0NlcnRpZmljYXRlKGNlcnRp
ZmljYXRlSW5mbyksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTaG93Q2VydGlmaWNhdGUoY2VydGlmaWNhdGVJbmZv
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmlu
ZGV4IDIxMWQ2MDFlZjBiLi5mY2VlMGRmZGZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApA
QCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgSURUb0hpc3RvcnlJdGVtTWFwJiBpZFRvSGlzdG9yeUl0
ZW1NYXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
IGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCwgT3Zlcndy
aXRlRXhpc3RpbmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKK3ZvaWQgV2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXImIGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKIHsK
ICAgICAvLyBUaGlzIGl0ZW0vaXRlbUlEIHBhaXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0IGlu
IG91ciBtYXAuCiAgICAgQVNTRVJUX1VOVVNFRChvdmVyd3JpdGVFeGlzdGluZ0l0ZW0sIG92ZXJ3
cml0ZUV4aXN0aW5nSXRlbSA9PSBPdmVyd3JpdGVFeGlzdGluZ0l0ZW06OlllcyB8fCAhaWRUb0hp
c3RvcnlJdGVtTWFwKCkuY29udGFpbnMoaXRlbUlEKSk7CkBAIC0xMTYsNyArMTE2LDcgQEAgUmVm
UHRyPEhpc3RvcnlJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6aXRlbUF0SW5kZXgoaW50
IGl0ZW1JbmRleCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBPcHRpb25hbDxCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyPiBpdGVtSUQ7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGl0ZW1JbmRleCksIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXg6OlJlcGx5KGl0ZW1JRCksIG1fcGFn
ZS0+cGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4KGl0ZW1JbmRleCksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXg6OlJlcGx5KGl0ZW1JRCkpKQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghaXRlbUlEKQpAQCAtMTMxLDcgKzEzMSw3IEBA
IHVuc2lnbmVkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjpiYWNrTGlzdENvdW50KCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICB1bnNpZ25lZCBiYWNrTGlzdENvdW50ID0gMDsKLSAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3Vu
dCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQ6OlJl
cGx5KGJhY2tMaXN0Q291bnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNrTGlzdENvdW50
KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudDo6UmVw
bHkoYmFja0xpc3RDb3VudCkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBiYWNr
TGlzdENvdW50OwpAQCAtMTQzLDcgKzE0Myw3IEBAIHVuc2lnbmVkIFdlYkJhY2tGb3J3YXJkTGlz
dFByb3h5Ojpmb3J3YXJkTGlzdENvdW50KCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICB1bnNpZ25lZCBmb3J3YXJkTGlzdENvdW50ID0gMDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudCgpLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQ6OlJlcGx5KGZvcndhcmRMaXN0
Q291bnQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KCksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudDo6UmVwbHkoZm9y
d2FyZExpc3RDb3VudCkpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIHJldHVybiBmb3J3YXJk
TGlzdENvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKaW5kZXggZjNiMWM4YWY1NDguLmQxYmFhZGI5
MWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNr
Rm9yd2FyZExpc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENsaWVudC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzLAog
ICAgICAgICBObwogICAgIH07Ci0gICAgdm9pZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJ
dGVtPiYmLCB1aW50NjRfdCBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7CisgICAgdm9p
ZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5k
ZXggMTYwZWRlZmQ1OWQuLjJkOWQwODVlM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgV2ViQ29v
a2llSmFyOjpXZWJDb29raWVKYXIoKQogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7
CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkucGFnZUlEKCk7CkBAIC02Niw3ICs2Niw3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6
OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29u
c3QKIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgV2ViQ29va2llSmFy
Ojpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2Vj
dXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+
IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpT
ZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAg
ICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0g
ZmFsc2U7CkBAIC05NSw3ICs5NSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhCiBib29sIFdl
YkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAppbmRleCA5N2RkNzZmNjY0Yy4uNTU5YmQw
ZTUwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUphci5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgY29va2llcyhXZWJD
b3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0Q29v
a2llcyhXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKSBmaW5hbDsKICAgICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6OkRv
Y3VtZW50JikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2Vj
dXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQ
QUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dCBmaW5hbDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNj
ZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklE
JiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmlu
YWw7CiAgICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29u
c3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSkgZmluYWw7CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4IDg5MGM1ZTU2YWMwLi40YWY0OTVh
NTFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUxpc3RlbmVySUQo
KQogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWluRnJhbWUoV2ViUGFn
ZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSkKIHsKICAgICBhdXRvIGZyYW1lID0g
Y3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRlckNsaWVudD4oc3RhdGljX2Nhc3Q8
V2ViRnJhbWVMb2FkZXJDbGllbnQqPigmY29yZUZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKSkpKTsK
LSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFt
ZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZyYW1lKGZyYW1lLT5mcmFtZUlEKCkp
KTsKIAogICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFtZTsKICAgICBmcmFtZS0+bV9j
b3JlRnJhbWUtPnRyZWUoKS5zZXROYW1lKFN0cmluZygpKTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBS
ZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShXZWJQYWdlKiBw
YWdlLCBXZWJDb3JlOjpGcmFtZSogYwogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3Vi
ZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEhUTUxGcmFtZU93
bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewogICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3Rk
OjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7Ci0gICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgp
KSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwogCiAgICAgYXV0byBjb3Jl
RnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdlKCksIG93bmVyRWxlbWVudCwgZnJh
bWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwogICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9
IGNvcmVGcmFtZS5wdHIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3IuY3BwCmluZGV4IGQ3N2U2MzcwYzExLi5iZGI5MmY3NGRhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCkBA
IC03Miw3ICs3Miw3IEBAIFdlYkluc3BlY3Rvcjo6fldlYkluc3BlY3RvcigpCiAKIHZvaWQgV2Vi
SW5zcGVjdG9yOjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIHVuZGVyVGVzdCkKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6T3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRl
bmQoY2FuQXR0YWNoV2luZG93KCksIHVuZGVyVGVzdCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Ok9wZW5Mb2NhbEluc3Bl
Y3RvckZyb250ZW5kKGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpKTsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3I6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgZW5jb2Rl
ZENvbm5lY3Rpb25JZGVudGlmaWVyKQpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yOjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0
aW9uSWRlbnRpCiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbigp
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENsb3NlKCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OkRpZENsb3NlKCkpOwogCiAgICAgLy8gSWYgd2UgdHJpZWQgdG8gY2xvc2UgdGhlIGZyb250ZW5k
IGJlZm9yZSBpdCB3YXMgY3JlYXRlZCwgdGhlbiBubyBjb25uZWN0aW9uIGV4aXN0cyB5ZXQuCiAg
ICAgaWYgKG1fZnJvbnRlbmRDb25uZWN0aW9uKSB7CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmRDb25uZWN0aW9uKCkKIAogdm9pZCBXZWJJbnNwZWN0
b3I6OmJyaW5nVG9Gcm9udCgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJy
aW5nVG9Gcm9udCgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSk7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yOjp3aGVuRnJvbnRlbmRDb25uZWN0aW9uRXN0YWJsaXNoZWQoRnVuY3Rpb248dm9pZCgp
PiYmIGNhbGxiYWNrKQpAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpzdG9w
RWxlbWVudFNlbGVjdGlvbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yOjplbGVtZW50U2VsZWN0aW9u
Q2hhbmdlZChib29sIGFjdGl2ZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6
RWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYWN0aXZlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RWxlbWVudFNlbGVjdGlv
bkNoYW5nZWQoYWN0aXZlKSk7CiB9CiAKIGJvb2wgV2ViSW5zcGVjdG9yOjpjYW5BdHRhY2hXaW5k
b3coKQpAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjp1cGRhdGVEb2NraW5n
QXZhaWxhYmlsaXR5KCkKIAogICAgIG1fcHJldmlvdXNDYW5BdHRhY2ggPSBjYW5BdHRhY2hXaW5k
b3c7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQXZhaWxhYmlsaXR5
Q2hhbmdlZChjYW5BdHRhY2hXaW5kb3cpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFu
Z2VkKGNhbkF0dGFjaFdpbmRvdykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcApp
bmRleCBjOTY1MmU5NGFmOC4uMjc1NTZkMDFjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
V2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJKFdlYlBhZ2UmIHBhZ2UpCiAjZW5kaWYKIH0K
IAotdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25M
ZXZlbCkKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oUGFnZUlkZW50
aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBp
bnNwZWN0aW9uTGV2ZWwpCiB7CiAgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLnJlc2V0KCk7
CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6dXBkYXRlQ29ubmVjdGlv
bigpCiAgICAgbV9iYWNrZW5kQ29ubmVjdGlvbi0+b3BlbigpOwogI2VuZGlmCiAKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25D
bGllbnRQb3J0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OlNldEZyb250ZW5kQ29ubmVjdGlvbihjb25uZWN0aW9uQ2xpZW50UG9y
dCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yVUk6OndpbmRvd09iamVjdENsZWFyZWQoKQpAQCAtMTI4LDE0ICsxMjgsMTQgQEAg
dm9pZCBXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQoKQogICAgIHNldERvY2tTaWRlKG1f
ZG9ja1NpZGUpOwogICAgIHNldElzVmlzaWJsZShtX2lzVmlzaWJsZSk7CiAKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6RnJvbnRlbmRMb2FkZWQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRl
bnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkZyb250ZW5kTG9hZGVk
KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKICAgICBicmluZ1Rv
RnJvbnQoKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6c3RhcnRXaW5kb3dEcmFnKCkKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5kb3dEcmFnKCksIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpT
dGFydFdpbmRvd0RyYWcoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkp
CkBAIC0xNDcsMTIgKzE0NywxMiBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93Qnko
ZmxvYXQgeCwgZmxvYXQgeSkKIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6YnJpbmdUb0Zyb250KCkK
IHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpC
cmluZ1RvRnJvbnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2JhY2tlbmRDb25uZWN0aW9u
KSB7CiAgICAgICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPmludmFsaWRhdGUoKTsKQEAgLTE2Nywx
MyArMTY3LDEzIEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKICAgICBpZiAo
bV9mcm9udGVuZEhvc3QpCiAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50
KCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yVUk6OnJlb3BlbigpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
UHJveHk6OlJlb3BlbigpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6UmVvcGVuKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiB9CiAKIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24g
V2ViSW5zcGVjdG9yVUk6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oKSBjb25zdApAQCAt
MTg2LDE2ICsxODYsMTYgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6cmVxdWVzdFNldERvY2tTaWRl
KERvY2tTaWRlIHNpZGUpCiAgICAgYXV0byYgd2ViUHJvY2VzcyA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpOwogICAgIHN3aXRjaCAoc2lkZSkgewogICAgIGNhc2UgRG9ja1NpZGU6OlVuZG9ja2Vk
OgotICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2goKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7CisgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRldGFjaCgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvY2tTaWRl
OjpSaWdodDoKLSAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoUmlnaHQoKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaFJpZ2h0KCks
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgRG9ja1NpZGU6OkxlZnQ6Ci0gICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaExl
ZnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgICAgIHdlYlByb2Nlc3MucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OkF0dGFjaExlZnQoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBEb2NrU2lkZTo6Qm90dG9tOgotICAgICAgICB3ZWJQcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAg
ICAgIHdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEJvdHRvbSgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyLnRvVUludDY0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC0yNDMsMTcgKzI0
MywxNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpzZXRJc1Zpc2libGUoYm9vbCB2aXNpYmxlKQog
CiB2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25l
ZCBoZWlnaHQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KGhlaWdodCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQp
LCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvclVJOjpjaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogewot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdp
ZHRoKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OlNldEF0dGFjaGVkV2luZG93V2lkdGgod2lkdGgpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpjaGFuZ2VT
aGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVjdCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVjdCksIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVj
dG9yVUk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKQEAgLTI2NCwyMiArMjY0LDIy
IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkK
IAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2F2ZShjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFdURjo6U3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9y
Y2VTYXZlQXMpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5h
bWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5h
bWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSwgbV9pbnNwZWN0ZWRQYWdl
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6YXBwZW5k
KGNvbnN0IFdURjo6U3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIGNvbnRlbnQp
CiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29u
dGVudCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBtX2luc3BlY3RlZFBhZ2VJZGVu
dGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjppbnNwZWN0ZWRV
UkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogewotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpJbnNwZWN0ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0
ZWRVUkxDaGFuZ2VkKHVybFN0cmluZyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50
NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNob3dDZXJ0aWZpY2F0ZShjb25zdCBD
ZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6U2hvd0NlcnRpZmljYXRlKGNlcnRpZmljYXRlSW5mbyksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTaG93Q2Vy
dGlmaWNhdGUoY2VydGlmaWNhdGVJbmZvKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2hvd0NvbnNvbGUoKQpAQCAtMzQ5
LDcgKzM0OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnBhZ2VVbnBhdXNlZCgpCiAKIHZvaWQg
V2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb0JhY2tl
bmQobWVzc2FnZSksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUku
aAppbmRleCA4MzgxYmYxY2VkZS4uOTQyNGJmZTFmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKQEAg
LTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2Vi
SW5zcGVjdG9yVUkgbWVzc2FnZXMKLSAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24odWludDY0
X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNw
ZWN0aW9uTGV2ZWwpOworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2ln
bmVkIGluc3BlY3Rpb25MZXZlbCk7CiAgICAgdm9pZCB1cGRhdGVDb25uZWN0aW9uKCk7CiAKICAg
ICB2b2lkIHNob3dDb25zb2xlKCk7CkBAIC0xMzMsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICAv
LyBjb3JlUGFnZSgpLCBzaW5jZSB3ZSBtYXkgbmVlZCBpdCBhZnRlciB0aGUgZnJvbnRlbmQncyBw
YWdlIGhhcyBzdGFydGVkIGRlc3RydWN0aW9uLgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXIqIG1fZnJvbnRlbmRDb250cm9sbGVyIHsgbnVsbHB0ciB9OwogCi0gICAgdWludDY0X3Qg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIGJvb2wgbV91bmRlclRlc3QgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9kb2NraW5nVW5hdmFpbGFibGUgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc1Zpc2libGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgppbmRleCBkZWEw
ZmU1ODRkNC4uNDMxOTBhYTgzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsy
MSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJIHsKLSAg
ICBFc3RhYmxpc2hDb25uZWN0aW9uKHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBi
b29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQorICAgIEVzdGFibGlzaENv
bm5lY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIs
IGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiAgICAgVXBkYXRlQ29u
bmVjdGlvbigpCiAKICAgICBBdHRhY2hlZEJvdHRvbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDNiYWFmZDE4NTRjLi43M2FlMjBiMzAxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM2
MCw3ICszNjAsNyBAQCBwcml2YXRlOgogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpS
ZWZDb3VudGVkTGVha0NvdW50ZXIsIHdlYlBhZ2VDb3VudGVyLCAoIldlYlBhZ2UiKSk7CiAKLVJl
ZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK1JlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUo
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogewogICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJ
RCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogCkBAIC0zNzAsNyArMzcwLDcgQEAgUmVmPFdlYlBh
Z2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWUKICAgICByZXR1cm4gcGFnZTsKIH0KIAotV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQor
V2ViUGFnZTo6V2ViUGFnZShJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX3ZpZXdT
aXplKHBhcmFtZXRlcnMudmlld1NpemUpCiAgICAgLCBtX2Fsd2F5c1Nob3dzSG9yaXpvbnRhbFNj
cm9sbGVyIHsgcGFyYW1ldGVycy5hbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciB9CkBAIC04
MzEsNyArODMxLDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYWdlOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFnZUlEKCk7CisgICAgcmV0dXJuIHBhZ2VJ
RCgpLnRvVUludDY0KCk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTE2NDgs
NyArMTY0OCw3IEBAIHZvaWQgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkCiAgICAgaWYgKCFpdGVtKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBMT0coTG9hZGluZywgIkluIFdlYlByb2Nlc3MgcGlkICVpLCBX
ZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFjay9mb3J3YXJkIFVSTCAlcyIs
IGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9wYWdlSUQsIGl0ZW0tPnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIExPRyhMb2FkaW5nLCAiSW4gV2ViUHJvY2VzcyBwaWQgJWksIFdl
YlBhZ2UgJSIgUFJJdTY0ICIgaXMgbmF2aWdhdGluZyB0byBiYWNrL2ZvcndhcmQgVVJMICVzIiwg
Z2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBpdGVtLT51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEFTU0VSVCghbV9wZW5kaW5nTmF2aWdhdGlv
bklEKTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CkBAIC0yMDc2
LDcgKzIwNzYsNyBAQCBib29sIFdlYlBhZ2U6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQogICAgIGlmICghdmlldyB8fCB2aWV3LT5maXhlZExheW91dFNpemUoKSA9PSBz
aXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJs
ZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIHNldEZpeGVkTGF5
b3V0U2l6ZSAiIDw8IHNpemUpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0
cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBzZXRGaXhlZExh
eW91dFNpemUgIiA8PCBzaXplKTsKICAgICB2aWV3LT5zZXRGaXhlZExheW91dFNpemUoc2l6ZSk7
CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpeGVkTGF5b3V0U2l6ZURpZENo
YW5nZShzaXplKSk7CkBAIC0yNTA0LDcgKzI1MDQsNyBAQCBjb25zdCBXZWJFdmVudCogV2ViUGFn
ZTo6Y3VycmVudEV2ZW50KCkKIHZvaWQgV2ViUGFnZTo6ZnJlZXplTGF5ZXJUcmVlKExheWVyVHJl
ZUZyZWV6ZVJlYXNvbiByZWFzb24pCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICIlcCAtIFdlYlBhZ2UgKFBhZ2VJRD0lbGx1KSAtIEFkZGluZyBhIHJlYXNvbiAlZCB0byBm
cmVlemUgbGF5ZXIgdHJlZTsgY3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMs
IG1fcGFnZUlELCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVl
emVSZWFzb25zLnRvUmF3KCkpOworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRv
UmF3KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy5hZGQocmVhc29uKTsKICAgICB1
cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBAIC0yNTEyLDcgKzI1
MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFz
b24gcmVhc29uKQogdm9pZCBXZWJQYWdlOjp1bmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVl
emVSZWFzb24gcmVhc29uKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
JXAgLSBXZWJQYWdlIChQYWdlSUQ9JWxsdSkgLSBSZW1vdmluZyBhIHJlYXNvbiAlZCB0byBmcmVl
emUgbGF5ZXIgdHJlZTsgY3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMsIG1f
cGFnZUlELCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVS
ZWFzb25zLnRvUmF3KCkpOworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3
KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy5yZW1vdmUocmVhc29uKTsKICAgICB1
cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBAIC0zMTY4LDcgKzMx
NjgsNyBAQCB2b2lkIFdlYlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogCiB2b2lkIFdlYlBh
Z2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2
aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNv
bnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpCiB7Ci0gICAgTE9HX1dJVEhfU1RS
RUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IHBhZ2VJRCgpIDw8ICIg
c2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOworICAgIExPR19XSVRIX1NU
UkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBwYWdlSUQoKS50b1VJ
bnQ2NCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOwogCiAg
ICAgYXV0byBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKICAgICBt
X2FjdGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRlOwpAQCAtMzE3Niw3ICszMTc2LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFn
PiBhY3Rpdml0eVN0YXRlLCBBY3QKICAgICBpZiAoY2hhbmdlZCkKICAgICAgICAgdXBkYXRlVGhy
b3R0bGVTdGF0ZSgpOwogCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BhZ2UsICJzZXRBY3Rp
dml0eVN0YXRlIGNhbGxlZCBvbiAlIiBQUkl1NjQgIiBidXQgV2ViQ29yZSBwYWdlIHdhcyBudWxs
IiwgcGFnZUlEKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wYWdlLCAic2V0QWN0aXZp
dHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJdTY0ICIgYnV0IFdlYkNvcmUgcGFnZSB3YXMgbnVsbCIs
IHBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIGlmIChtX3BhZ2UpIHsKICAgICAgICAgU2V0Rm9y
U2NvcGU8T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+PiBjdXJyZW50bHlDaGFuZ2luZ0Fj
dGl2aXR5U3RhdGUgeyBtX2xhc3RBY3Rpdml0eVN0YXRlQ2hhbmdlcywgY2hhbmdlZCB9OwogICAg
ICAgICBtX3BhZ2UtPnNldEFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZSk7CkBAIC00MzM5LDcg
KzQzMzksNyBAQCB2b2lkIFdlYlBhZ2U6Om1haW5GcmFtZURpZExheW91dCgpCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVW
aWV3KCkpIHsKICAgICAgICAgSW50U2l6ZSBuZXdDb250ZW50U2l6ZSA9IGZyYW1lVmlldy0+Y29u
dGVudHNTaXplKCk7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVh
bSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlEIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRp
bmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVudFNpemUpOworICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50
b1VJbnQ2NCgpIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRv
ICIgPDwgbmV3Q29udGVudFNpemUpOwogICAgICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRp
b24uc2V0Q29udGVudHNTaXplKG5ld0NvbnRlbnRTaXplKSkKICAgICAgICAgICAgIHZpZXdwb3J0
Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKICAgICB9CkBAIC01NzQyLDcgKzU3NDIsNyBAQCB2b2lk
IFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgIAogICAgIGJvb2wg
dmlld3BvcnRDaGFuZ2VkID0gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJl
Y3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIGRpZENvbW1pdExvYWQg
c2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBjb3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNT
aXplKCkpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2Vi
UGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBkaWRDb21taXRMb2FkIHNldHRpbmcg
Y29udGVudCBzaXplIHRvICIgPDwgY29yZUZyYW1lLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsK
ICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNTaXplKGNvcmVGcmFt
ZS0+dmlldygpLT5jb250ZW50c1NpemUoKSkpCiAgICAgICAgIHZpZXdwb3J0Q2hhbmdlZCA9IHRy
dWU7CiAKQEAgLTYwNTYsNyArNjA1Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2VuZEVkaXRvclN0YXRl
VXBkYXRlKCkKICAgICAvLyBJZiB0aGF0IGlzIHRoZSBjYXNlLCBqdXN0IHNlbmQgd2hhdCB3ZSBo
YXZlIChpLmUuIGRvbid0IGluY2x1ZGUgcG9zdC1sYXlvdXQgZGF0YSkgYW5kIHdhaXQgdW50aWwg
dGhlCiAgICAgLy8gbmV4dCBsYXllciB0cmVlIGNvbW1pdCB0byBjb21wdXRlIGFuZCBzZW5kIHRo
ZSBjb21wbGV0ZSBFZGl0b3JTdGF0ZSBvdmVyLgogICAgIGF1dG8gc3RhdGUgPSBlZGl0b3JTdGF0
ZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2Vk
KHN0YXRlKSwgcGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRp
dG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSwgcGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBpZiAo
c3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAgIHNjaGVkdWxlRnVsbEVkaXRv
clN0YXRlVXBkYXRlKCk7CkBAIC02MjM3LDcgKzYyMzcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBvc3RN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9k
eSkKIAogdm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZUlnbm9yaW5nRnVsbHlTeW5jaHJvbm91c01v
ZGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQog
ewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdl
TmFtZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyhtZXNzYWdlQm9keSkpKSwgcGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6SWdub3Jl
RnVsbHlTeW5jaHJvbm91c01vZGUpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkpKSwgcGFnZUlEKCkudG9V
SW50NjQoKSwgSVBDOjpTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6cG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JiByZXR1cm5EYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IDg2OGFlOTJmMmZiLi5lYWQ3YjQ5NmVmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50U2l6ZUhhc2guaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGx1Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUG9pbnRlcklELmg+CkBAIC0yNzMs
NyArMjc0LDkgQEAgdXNpbmcgV0tFdmVudE1vZGlmaWVycyA9IHVpbnQzMl90OwogCiBjbGFzcyBX
ZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxl
UGFnZT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIElQQzo6TWVzc2FnZVNl
bmRlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYlBhZ2U+IGNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJik7CisgICAgdXNpbmcgSWRlbnRpZmllciA9IFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyOworICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRlKElkZW50aWZpZXIsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJik7CisKICAgICB2aXJ0dWFsIH5XZWJQYWdlKCk7CiAKICAgICB2
b2lkIHJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKQEAg
LTI4Myw3ICsyODYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlBhZ2UqIGZyb21Db3JlUGFn
ZShXZWJDb3JlOjpQYWdlKik7CiAKICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUlEOyB9CisgICAgSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VJRDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZS0+c2Vzc2lvbklEKCk7IH0KICAgICBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOyB9CiAKQEAg
LTExNjYsNyArMTE2OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5ZWRS
ZXBseShUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKICAgICB7CiAgICAg
ICAgIGNhbmNlbEdlc3R1cmVzQmxvY2tlZE9uU3luY2hyb25vdXNSZXBsaWVzKCk7Ci0gICAgICAg
IHJldHVybiBzZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9wYWdl
SUQsIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRm
b3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKKyAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBTZWNvbmRzOjpp
bmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxs
U3VzcGVuZCk7CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSBy
ZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKQEAg
LTExOTksNyArMTIwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZXJJc0ludGVyYWN0aW5n
KGJvb2wgdXNlcklzSW50ZXJhY3RpbmcpIHsgbV91c2VySXNJbnRlcmFjdGluZyA9IHVzZXJJc0lu
dGVyYWN0aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgV2ViUGFnZShJZGVudGlmaWVyLCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRl
KCk7CiAKQEAgLTE1ODUsNyArMTU4OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZU1v
Y2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKTsKIAotICAgIHVpbnQ2
NF90IG1fcGFnZUlEOworICAgIElkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwogICAgIFJlZlB0cjxXZWJGcmFtZT4gbV9tYWlu
RnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCmluZGV4IGQ5NmE3ZDdkZGE5Li5iNzc5OWI0ZmJi
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUlu
c3BlY3RvclRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV2ViUGFnZUluc3Bl
Y3RvclRhcmdldDo6V2ViUGFnZUluc3BlY3RvclRhcmdldChXZWJQYWdlJiBwYWdlKQogCiBTdHJp
bmcgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6aWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gbWFr
ZVN0cmluZygicGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZUluc3BlY3RvclRhcmdldDo6Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5l
bCYgY2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgK
aW5kZXggMzAxYjEzOWUxZDIuLjZiN2VjNWIxNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdEJhc2UuaApAQCAtMjYsMTMgKzI2LDE1IEBACiAjaWZuZGVmIFdLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlX2gKICNkZWZpbmUgV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdEJhc2VfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgor
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiB9CiAKIEBpbnRlcmZhY2UgV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UgOiBOU09iamVjdCB7CiAgICAgV2ViS2l0OjpX
ZWJQYWdlKiBtX3BhZ2U7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgaWQgbV9wYXJlbnQ7CiAgICAgYm9vbCBtX2hhc01h
aW5GcmFtZVBsdWdpbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
QmFzZS5tbQppbmRleCAzZDNmMzU1NTNlNi4uNjE2NWEwMWZlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTE0OCw3ICsxNDgsNyBAQCAtICh2
b2lkKXNldFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSopcGFnZQogICAgICAgICBhdXRvKiBmcmFt
ZSA9IHBhZ2UtPm1haW5GcmFtZSgpOwogICAgICAgICBtX2hhc01haW5GcmFtZVBsdWdpbiA9IGZy
YW1lICYmIGZyYW1lLT5kb2N1bWVudCgpID8gZnJhbWUtPmRvY3VtZW50KCktPmlzUGx1Z2luRG9j
dW1lbnQoKSA6IGZhbHNlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fcGFnZUlEID0gMDsKKyAg
ICAgICAgbV9wYWdlSUQgPSB7IH07CiAgICAgICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gZmFs
c2U7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQppbmRleCBhMDdjYTQ1ZDMzNy4uYjZhZTg0MzI3YWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBA
IC0yNjYsOCArMjY2LDggQEAgYm9vbCBXZWJQYWdlOjpleGVjdXRlS2V5cHJlc3NDb21tYW5kc0lu
dGVybmFsKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW0KICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGJvb2wgY29tbWFuZFdh
c0hhbmRsZWRCeVVJUHJvY2VzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbW1hbmRzW2ld
LmNvbW1hbmROYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3I6OlJlcGx5KGNvbW1hbmRXYXNIYW5kbGVk
QnlVSVByb2Nlc3MpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICAgICAgc2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29tbWFuZHNb
aV0uY29tbWFuZE5hbWUpLAorICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcjo6UmVwbHkoY29tbWFuZFdhc0hhbmRs
ZWRCeVVJUHJvY2VzcykpOwogICAgICAgICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBjb21t
YW5kV2FzSGFuZGxlZEJ5VUlQcm9jZXNzOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNWNlNjljY2Y4MzMuLjYxNzRi
MGEzYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yMjEs
NyArMjIxLDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgICAgIGVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RG
TW92ZShzdGF0aXN0aWNzKSksIDApOwogICAgIH0pOwogCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhb
dGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKSB7CisgICAgUmVzb3VyY2VMb2FkT2Jz
ZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFj
ayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFn
ZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKSB7CiAgICAgICAgIGVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihzZXNzaW9uSUQsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFn
ZUlELCBvcGVuZXJEb21haW4pLCAwKTsKICAgICB9KTsKICNlbmRpZgpAQCAtNjY3LDE2ICs2Njcs
MTYgQEAgV2ViUGFnZSogV2ViUHJvY2Vzczo6Zm9jdXNlZFdlYlBhZ2UoKSBjb25zdAogICAgIHJl
dHVybiAwOwogfQogICAgIAotV2ViUGFnZSogV2ViUHJvY2Vzczo6d2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQpIGNvbnN0CitXZWJQYWdlKiBXZWJQcm9jZXNzOjp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlTWFwLmdldChwYWdlSUQpOwogfQog
Ci12b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRl
V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWV0ZXJzKQogewogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBmb3IgcGFn
ZSBleGlzdGVuY2UgaGVyZSBzaW5jZSBkdXJpbmcgYSB3aW5kb3cub3BlbigpIChvciB0YXJnZXRl
ZAogICAgIC8vIGxpbmspIHRoZSBXZWJQYWdlIGdldHMgY3JlYXRlZCBib3RoIGluIHRoZSBzeW5j
aHJvbm91cyBoYW5kbGVyIGFuZCB0aHJvdWdoIHRoZSBub3JtYWwgd2F5LiAKLSAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlTWFw
LmFkZChwYWdlSUQsIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChw
YWdlSUQsIG51bGxwdHIpOwogICAgIGF1dG8gb2xkUGFnZUlEID0gcGFyYW1ldGVycy5vbGRQYWdl
SUQgPyBwYXJhbWV0ZXJzLm9sZFBhZ2VJRC52YWx1ZSgpIDogcGFnZUlEOwogICAgIGlmIChyZXN1
bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUp
OwpAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhCiAgICAgQVNTRVJU
KHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdl
YlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdl
YlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5jb250YWlucyhwYWdlSUQp
KTsKIApAQCAtMTQ1MCw3ICsxNDUwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25p
dG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbikKIAogI2VuZGlmCiAKLXZvaWQgV2ViUHJv
Y2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0X3QsIE9wdGlvblNldDxXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQordm9pZCBXZWJQcm9jZXNzOjpwYWdl
QWN0aXZpdHlTdGF0ZURpZENoYW5nZShQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpCiB7CiAgICAgaWYgKGNoYW5nZWQgJiBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAgIHVwZGF0ZUNQVU1vbml0b3JT
dGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uOjpWaXNpYmlsaXR5SGFzQ2hhbmdlZCk7CkBAIC0x
NjI0LDEzICsxNjI0LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2VuZFByZXdhcm1JbmZvcm1hdGlv
bihjb25zdCBVUkwmIHVybCkKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24ocmVn
aXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5nOjpjb2xsZWN0UHJld2FybUlu
Zm9ybWF0aW9uKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwYWdlRGlkRW50ZXJXaW5k
b3codWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlRGlkRW50ZXJXaW5kb3co
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fcGFnZXNJbldpbmRvd3MuYWRkKHBhZ2VJ
RCk7CiAgICAgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lci5zdG9wKCk7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzczo6cGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQpCit2b2lk
IFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVhdmVXaW5kb3coUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIG1fcGFnZXNJbldpbmRvd3MucmVtb3ZlKHBhZ2VJRCk7CiAKQEAgLTE2NzMsNyArMTY3
Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhi
b29sIGVuYWJsZSkKICAgICBpZiAoZW5hYmxlKQogICAgICAgICBlbnN1cmVMZWdhY3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwogCi0gICAgVmVjdG9yPHVpbnQ2NF90
PiBwYWdlSURzOworICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4gcGFnZUlEczsKICAgICBmb3Ig
KGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXApIHsKICAgICAgICAgaWYgKHBhZ2UudmFsdWUpCiAgICAg
ICAgICAgICBwYWdlSURzLmFwcGVuZChwYWdlLmtleSk7CkBAIC0xODUzLDcgKzE4NTMsNyBAQCBM
aWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2Vy
Q29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCB1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNl
c3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3Jr
ZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUs
IFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7CiAgICAgLy8gV2UgYXJlIGluIHRo
ZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFi
bGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKICAgICAvLyBieSBj
YWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBu
ZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA1MjVkZjE4M2YyMi4uMTg1N2Nl
YTBlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzksNiArMzks
NyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRl
ICJXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5
U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRl
IDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KQEAgLTE0NSw5ICsxNDYsOSBAQCBwdWJsaWM6
CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vz
cygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQoKTsgfQogCi0gICAgV2ViUGFn
ZSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OwotICAgIHZvaWQgY3JlYXRlV2ViUGFn
ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7Ci0gICAgdm9p
ZCByZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdl
YlBhZ2UqIHdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQg
Y3JlYXRlV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYmKTsKKyAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBXZWJQYWdlKiBmb2N1c2VkV2ViUGFnZSgpIGNvbnN0
OwogCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVuZGxlKCkgY29uc3QgeyByZXR1cm4g
bV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQpAQCAtMTk5LDggKzIwMCw4IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nl
c3MoKTsKIAotICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7Ci0g
ICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBw
YWdlRGlkRW50ZXJXaW5kb3coV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcGFn
ZVdpbGxMZWF2ZVdpbmRvdyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIG5v
blZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmlyZWQoKTsKIApAQCAtMjE5LDcgKzIyMCw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlUGFnZXMoKTsKICAgICB2b2lkIGdldEFj
dGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCBwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZSh1aW50
NjRfdCBwYWdlSUQsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFu
Z2VkKTsKKyAgICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdl
ZCk7CiAKICAgICB2b2lkIHNldEhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdJbmNyZWFzZUxp
bWl0KGludCBtaWxsaXNlY29uZHMpOwogCkBAIC0zNTksNyArMzYwLDcgQEAgcHJpdmF0ZToKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29y
a2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElE
LCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNlc3Np
b25JRCk7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVn
aXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogI2VuZGlmCiAKQEAgLTQ2MCw3ICs0NjEsNyBA
QCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcz4gbV93ZWJD
b25uZWN0aW9uOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+PiBtX3Bh
Z2VNYXA7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYlBh
Z2U+PiBtX3BhZ2VNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VHcm91
cFByb3h5Pj4gbV9wYWdlR3JvdXBNYXA7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBtX2lu
amVjdGVkQnVuZGxlOwogCkBAIC01MTQsNyArNTE1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
bV9wcm9jZXNzSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCi0gICAgSGFzaFNldDx1aW50NjRfdD4g
bV9wYWdlc0luV2luZG93czsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBt
X3BhZ2VzSW5XaW5kb3dzOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fbm9uVmlzaWJsZVByb2Nlc3ND
bGVhbnVwVGltZXI7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2U+IG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGIzOWIzOGMxODNjLi41N2EyNjU2MzQ1
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgU2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoc3RydWN0IFdlYktpdDo6V2Vi
UHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlIGEg
bmV3IHBhZ2UuCi0gICAgQ3JlYXRlV2ViUGFnZSh1aW50NjRfdCBuZXdQYWdlSUQsIHN0cnVjdCBX
ZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykK
KyAgICBDcmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG5ld1BhZ2VJRCwgc3Ry
dWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzKQogCiAgICAgUHJld2FybUdsb2JhbGx5KCk7CiAgICAgUHJld2FybVdpdGhEb21haW5JbmZv
cm1hdGlvbihzdHJ1Y3QgV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uIHByZXdhcm1JbmZvcm1h
dGlvbikKQEAgLTExMSw3ICsxMTEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFi
bGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdl
R3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0
b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQorICAgIEVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3Jv
dXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQog
ICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcApp
bmRleCAwYmQ5MGFmOTE4Ny4uMGU5NDI5NjA0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTMxMSw3ICsz
MTEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQo
dWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgYwogCiAgICAgLy8gTmFtZXNwYWNlIElEcyBm
b3Igc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2Ug
SURzCiAgICAgLy8gc28gd2UgY2FuIGdldCB0aGUgcmlnaHQgcGFnZSBoZXJlLgotICAgIFdlYlBh
Z2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fc3RvcmFnZU5h
bWVzcGFjZUlEKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KG1fc3Rv
cmFnZU5hbWVzcGFjZUlEKSk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5oCmluZGV4IDI5YmE3ZDhhOGEzLi5lY2FmNjY1MTlkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggYjM5MDgxZTZl
M2MuLjgwOTYyMzQyNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00MCwxMiArNDAs
MTIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5C
eXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNy
ZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdl
TmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwg
cXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFj
ZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIudG9VSW50NjQoKSwgbnVsbHB0
ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50
NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVz
cGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3Jh
Z2VOYW1lc3BhY2UoUGFnZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5
dGVzKQogewogICAgIHJldHVybiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShpZGVudGlm
aWVyLCBxdW90YUluQnl0ZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggNjc1N2UzYjgx
ODguLjFiZmVjNDhiODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTM5LDggKzM5LDggQEAg
Y2xhc3MgV2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2Vi
Q29yZTo6U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdl
TmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRl
bnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VO
YW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVm
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAgICAg
c3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAgICAgc3Rh
dGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0
b3BMZXZlbE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpp
bmRleCBmYzY1OTg2MzI1Mi4uNzY1ZWZmNDA0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC0yNzks
NyArMjc5LDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW0KICAgICBhZGRDbGllbnRGb3JDb250
ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKIAogICAgIG1fcGFnZS0+dmlkZW9Db250
cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJ
RChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRyb2xz
TWFuYWdlcigpCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKICAgICBtX2NvbnRyb2xzTWFuYWdlckNv
bnRleHRJZCA9IDA7CiAKICAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdl
KCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNs
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSk7CiB9CiAKIHVpbnQ2NF90IFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmNvbnRleHRJZEZvck1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50JiBtZWRpYUVsZW1lbnQpCkBAIC0zMTgsMjcgKzMxOCwyNyBAQCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50UGxheWJhY2tDb250
cm9sc0VsZW1lbgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2Vk
KGNvbnRleHRJZCwgZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2Vk
KGNvbnRleHRJZCwgZHVyYXRpb24pKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpjdXJyZW50VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRp
bWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBj
dXJyZW50VGltZSwgYW5jaG9yVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNo
YW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSkpOwogfQogCiB2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1ZmZlcmVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpCdWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJ
ZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkJ1ZmZlcmVkVGltZUNoYW5nZWQo
Y29udGV4dElkLCBidWZmZXJlZFRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250
ZXh0SWQsIHBsYXliYWNrU3RhcnRlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tT
dGFydGVkVGltZUNoYW5nZWQoY29udGV4dElkLCBwbGF5YmFja1N0YXJ0ZWRUaW1lKSk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChj
b250ZXh0SWQsIGlzUGxheWluZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJh
dGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpKTsKIH0KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUg
bGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCkKQEAgLTM0OSwzNyAr
MzQ5LDM3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViCiAgICAgICAgIGRvdWJsZSBlbmQgPSB0
aW1lUmFuZ2VzLnJhbmdlcygpLmVuZChpKS50b0RvdWJsZSgpOwogICAgICAgICByYW5nZXNWZWN0
b3IuYXBwZW5kKHsgc3RhcnQsIGVuZCB9KTsKICAgICB9Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hh
bmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwg
bGl2ZVVwZGF0ZUludGVydmFsKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVj
dG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVk
VGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
dmFsdWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY29udGV4dElkLCB2YWx1ZSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpDYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFs
dWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFT
ZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3Rl
ZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hh
bmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQs
IG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5h
YmxlZCwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRh
cmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNr
UHJvcGVydGllc0NoYW5nZWQoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4odGFyZ2V0VHlwZSksIGxvY2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFuZ2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSk7CiB9
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1
ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4
dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWlu
dDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2Vk
KGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVk
aWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KaW5kZXggNWQ2MTEwYjc5MDkuLjcwNjYzOTc3Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAt
MjkwLDcgKzI5MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1
bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVuCiAgICAgICAgIGludGVyZmFj
ZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIodmlkZW9MYXllcik7CiAgICAg
fQogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0
aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGlj
dHVyZSwgc3RhbmRieSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQo
Y29udGV4dElkLCBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCks
IHZpZGVvUmVjdCwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxz
Y3JlZW5Nb2RlKCksIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpKTsKIH0KIAogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVt
ZW50KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCkKQEAgLTMwOCw3ICsz
MDgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZAogICAgICAgICByZXR1cm47CiAKICAgICBp
bnRlcmZhY2Uuc2V0SXNBbmltYXRpbmcodHJ1ZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCwg
aW5saW5lVmlkZW9GcmFtZSh2aWRlb0VsZW1lbnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRG
dWxsc2NyZWVuKGNvbnRleHRJZCwgaW5saW5lVmlkZW9GcmFtZSh2aWRlb0VsZW1lbnQpKSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9k
ZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50
LCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFy
Z2V0TW9kZSkKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OgogCiAg
ICAgaW50ZXJmYWNlLnNldFRhcmdldElzRnVsbHNjcmVlbihmYWxzZSk7CiAKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3Jl
ZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKGNvbnRleHRJZCwgdGFyZ2V0TW9kZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4dElk
LCB0YXJnZXRNb2RlKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2aWRlb0VsZW1lbnQpOwog
ICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRNb2RlKTsKQEAgLTMzNiwxMyArMzM2LDEzIEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRB
bmltYXRpb24oV2ViQ29yZTo6CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Omhhc1ZpZGVv
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pCiB7CiAgICAgaWYgKG1f
cGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OlNldEhhc1ZpZGVvKGNvbnRleHRJZCwgaGFzVmlkZW8pLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OlNldEhhc1ZpZGVvKGNvbnRleHRJZCwgaGFzVmlkZW8pKTsKIH0KIAogdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKHVpbnQ2NF90IGNv
bnRleHRJZCwgY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7CiAgICAgaWYgKG1f
cGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OlNldFZpZGVvRGltZW5zaW9ucyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucyks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGNvbnRleHRJZCwgdmlk
ZW9EaW1lbnNpb25zKSk7CiB9CiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eToKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCkK
IAogICAgIGF1dG8mIG1vZGVsID0gZW5zdXJlTW9kZWwoY29udGV4dElkKTsKICAgICBJbnRSZWN0
IGlubGluZVJlY3QgPSBpbmxpbmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSk7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNl
dElubGluZVJlY3QoY29udGV4dElkLCBpbmxpbmVSZWN0LCBpbmxpbmVSZWN0ICE9IEludFJlY3Qo
MCwgMCwgMCwgMCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SW5saW5lUmVjdChjb250ZXh0SWQs
IGlubGluZVJlY3QsIGlubGluZVJlY3QgIT0gSW50UmVjdCgwLCAwLCAwLCAwKSkpOwogfQogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50
NjRfdCBjb250ZXh0SWQpCkBAIC0zNzgsNyArMzc4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogICAg
IG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAg
ICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0Nv
bnRlbnRMYXllcihjb250ZXh0SWQsIHRydWUpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCB0cnVl
KSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29u
dGV4dElkKQogICAgICAgICAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwg
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRd
ICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwg
dGhpcywgY29udGV4dElkXSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlz
LT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29u
dGV4dElkLCBmYWxzZSksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgZmFsc2UpKTsK
ICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTQx
Myw3ICs0MTMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNj
cmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICBpZiAocHJvdGVj
dGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90
ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29u
dGV4dElkKSk7CiAgICAgfSk7CiAjZWxzZQogICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRl
cmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+cm9vdExheWVyKCk7CkBAIC00MjEsNyArNDIx
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWlu
dDY0X3QgY29udGV4dElkKQogICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRl
b0xheWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJ
ZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywg
Y29udGV4dElkXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAg
ICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAg
ICAgICAgfSk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OndpbGxFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1lbnQgPSBXVEZNb3ZlKHZpZGVvRWxl
bWVudCksIGNvbnRleHRJZF0gewogICAgICAgICB2aWRlb0VsZW1lbnQtPndpbGxFeGl0RnVsbHNj
cmVlbigpOwogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OlByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRv
RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ4Niw3ICs0ODYs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2VdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRo
aXMtPm1fcGFnZSkKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNz
YWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250
ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKICNlbHNlCiAg
ICAgbW9kZWwtPndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBt
YWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdICgpIG11dGFibGUg
ewpAQCAtNDk4LDcgKzQ5OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhp
dEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgICAgICAgICAgICAgICAgICAgICAg
aW50ZXJmYWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KG51bGxwdHIpOwogICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2Up
Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29u
dGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAg
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC01NTUsNyAr
NTU1LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTWF5UmV0dXJu
VG9JbmxpbmUodWludDY0X3QgY29udGV4dElkLCBib28KIAogICAgIGlmICghaXNQYWdlVmlzaWJs
ZSkKICAgICAgICAgbW9kZWwudmlkZW9FbGVtZW50KCktPnNjcm9sbEludG9WaWV3SWZOb3RWaXNp
YmxlKGZhbHNlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5s
aW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50KCkpKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OlByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvRnJh
bWUoKm1vZGVsLnZpZGVvRWxlbWVudCgpKSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKHVpbnQ2NF90IGNv
bnRleHRJZCwgTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RSb3V0ZVNo
YXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEOjpBc3luY1JlcGx5JiYgcmVwbHkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCAyZTE5
MGIwMzVmNy4uYjljZTc5ZDI3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBOU1VS
TCAqb3JpZ2luKFdlYlBhZ2UmIHBhZ2UpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0
YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNv
bnN0IEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPj4mIHBhZ2VNYXApCitzdGF0aWMg
UmV0YWluUHRyPE5TQXJyYXk8TlNTdHJpbmcgKj4+IGFjdGl2ZVBhZ2VzT3JpZ2lucyhjb25zdCBI
YXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+JiBwYWdlTWFwKQogewogICAg
IFJldGFpblB0cjxOU011dGFibGVBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlT3JpZ2lucyA9IGFk
b3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAKaW5kZXggOTg3MmMzMWJhNTguLjc5NjAyNGM4Y2U0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJj
ZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1l
TG9hZGUKICAgICBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShmcmFt
ZUxvYWRlci5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRpYWxz
ID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQgPyBTdG9yZWRDcmVkZW50aWFsc1Bv
bGljeTo6RG9Ob3RVc2UgOiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBlcnJvciwgcmVz
cG9uc2UsIGRhdGEpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxv
YWRDb21wbGV0ZWQodWludDY0X3QgLyp3ZWJQYWdlSUQqLykKK3ZvaWQgV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyOjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggNTViMzY5NzUzMDYuLjVmNjJmNzc3YWE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAg
dm9pZCBsb2FkUmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJy
ZXNvdXJjZUxvYWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hy
b25vdXNseShXZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNv
bnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAm
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZl
Y3RvcjxjaGFyPiYpIGZpbmFsOwotICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qg
d2ViUGFnZUlEKSBmaW5hbDsKKyAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJlc291
cmNlTG9hZGVyJiwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAx
Mzg1NTgzYWYyOS4uYjE0MDNkMDU2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAt
NjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBm
aW5hbDsKICAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBmaW5hbDsgLy8gbWFpbmx5IGZvciBh
c3NlcnRpb25zCiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZp
bmFsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAgICAg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KaW5kZXggN2Y4NjlmMWRkY2IuLjdlYmEzYTk4YWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQpAQCAtMjA5LDcgKzIwOSw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpXZWJGcmFtZUxvYWRlckNsaWVudChXZWJGcmFtZSAqd2ViRnJhbWUpCiB7CiB9CiAKLU9wdGlv
bmFsPHVpbnQ2NF90PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QK
IHsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370592</attachid>
            <date>2019-05-24 14:25:51 -0700</date>
            <delta_ts>2019-05-24 15:47:24 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>198206_PageIdentifier_wip.patch</filename>
            <type>text/plain</type>
            <size>615195</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwNy4uYjNiY2FkZDlkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjIsNiArMTIz
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVu
dGlmaWVyPFQ+PiB7CiAgICAgdHlwZWRlZiBPYmplY3RJZGVudGlmaWVySGFzaDxUPiBIYXNoOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VD4mIGlkZW50aWZpZXIpCit7CisgICAg
dHMgPDwgaWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IGMyYzdjMjI0OWUzLi40NDgyZDVkNDc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC03NzksNiArNzc5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAogICAgIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
aAogICAgIHBhZ2UvUGFnZUdyb3VwLmgKKyAgICBwYWdlL1BhZ2VJZGVudGlmaWVyLmgKICAgICBw
YWdlL1BhZ2VPdmVybGF5LmgKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCiAgICAg
cGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU2YTFmNWYxZDcxLi5iNmE4Zjg5YWI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTIxNyw2ICsxMjE3LDcgQEAKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3
Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0
Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2QjY1MEREMjI5NjI2
MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4QTIwN0Q2MzI4
MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBBN0QyREQgLyogQWJz
dHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NzIwN0Q2MzQw
MDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAwQTdEMkREIC8qIEds
b2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzU5OSw2ICs3NjAwLDcgQEAKIAkJNDY4MzQ0REQxRURERkE1RjAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUxRURERkE1RjAwQjc3
OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCNjUwREIy
Mjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3Rl
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4RDIwN0Q2MzJBMDBB
N0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDE5Nyw2ICsyMDE5OSw3IEBACiAJCQkJOTMwMkIwQkUwRDc5RjgyQzAwQzdFRTgzIC8q
IFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuY3BwICovLAogCQkJCTdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLywKKwkJCQk0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRDVDOUNGQjE5QzdCNTJFMDBCM0M1QzEgLyog
UGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdl
T3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3Zlcmxh
eUNvbnRyb2xsZXIuY3BwICovLApAQCAtMjk4NzEsNiArMjk4NzQsNyBAQAogCQkJCUJDMzA1QzdB
MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTg1QjFFQjBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MT0xpc3RFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFN0U5QjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MT3B0R3Jv
dXBFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3RTk5MEExQTgzRTMw
MDdGQjhDNSAvKiBKU0hUTUxPcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhB
MjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA3NjkxMmNh
ZWI4YS4uMGU3ZDU0MjA1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQodWludDY0X3Qg
cGFnZUlELCBBWE9iamVjdENhY2hlJiBjYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29s
YXRlZFRyZWU6OmluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
QVhPYmplY3RDYWNoZSYgY2FjaGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGF1dG8gdHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0
eVRyZWUoKTsKQEAgLTg3LDcgKzg3LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6dHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogICAgIHJldHVybiB0
cmVlSURDYWNoZSgpLmdldCh0cmVlSUQpOwogfQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNv
bGF0ZWRUcmVlOjpjcmVhdGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIApA
QCAtOTcsNyArOTcsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gbmV3VHJlZTsKIH0K
IAotUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCh1
aW50NjRfdCBwYWdlSUQpCitSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0
cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihzX2NhY2hlTG9jayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGMwNzVkNWIwMTY3
Li42ZWVjMjY0NTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYSXNv
bGF0ZWRUcmVlTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00Myw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BWElzb2xhdGVk
VHJlZSgpOwogCi0gICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBh
Z2VJRCh1aW50NjRfdCBwYWdlSUQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QVhJ
c29sYXRlZFRyZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhP
YmplY3RDYWNoZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRl
ZFRyZWU+IHRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPEFY
SXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRy
ZWVGb3JJRChQYWdlSWRlbnRpZmllciwgQVhPYmplY3RDYWNoZSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IHRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+
IHRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBWElzb2xhdGVkVHJlZU5vZGU+IHJvb3ROb2RlKCk7CkBAIC03MCw3ICs3MSw3IEBAIHByaXZh
dGU6CiAgICAgQVhJc29sYXRlZFRyZWUoKTsKIAogICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0
ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlSURDYWNoZSgpOwotICAgIHN0YXRp
YyBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgp
OworICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+
PiYgdHJlZVBhZ2VDYWNoZSgpOwogCiAgICAgLy8gT25seSBhY2Nlc3Mgb24gQVggdGhyZWFkIHJl
cXVlc3RpbmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+
PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlNzBh
OWY3ZmU1NS4uZDM1NDE2NzNlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzc2Niw3
ICs3NzY2LDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2VyKCkKICAgICByZXR1cm4gKm1fbG9n
Z2VyOwogfQogICAgIAotT3B0aW9uYWw8dWludDY0X3Q+IERvY3VtZW50OjpwYWdlSUQoKSBjb25z
dAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggYzA3NjU1NjUwNmEuLmEyNDgxZGY4YTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNp
bmNsdWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmll
ci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVu
dC5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBA
IC02MzUsNyArNjM2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2Fj
aGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQVhPYmplY3RDYWNoZSgp
OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0OworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdDsKICAgICAvLyB0byBnZXQgdmlzdWFsbHkg
b3JkZXJlZCBoZWJyZXcgYW5kIGFyYWJpYyBwYWdlcyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFs
bHlPcmRlcmVkKCk7CiAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbGx5T3JkZXJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBi
MWJlZDhmMDMyZi4uMzNlMjc4NjM4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29r
aWVzID0gc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CiAKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtMTEwLDcgKzExMCw3IEBAIENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoY29u
c3QgRG9jCiB2b2lkIENvb2tpZUphcjo6c2V0Q29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29raWVz
RW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3Rk
OjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
IHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3Rv
cmFnZVNlc3Npb24oKSkgewogICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQg
PSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHUKIFN0cmluZyBDb29raWVK
YXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAg
ICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAg
ICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdQogYm9vbCBDb29raWVKYXI6OmdldFJh
d0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIGNvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkp
IHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7
CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCAwZGIwN2M2ZDEyZS4uMjgxZjg0YzQ5MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzKERvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogCiAgICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8
U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OworICAg
IHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggNGYwYmI4NmRkZDUuLjFmN2EyOWM0YjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBG
cmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJy
aWRlIHsgfQogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBt
YWlubHkgZm9yIGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZWMzOTEyN2ExYWQuLjA3NDg3NjExOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmUuaCIKICNpbmNsdWRl
ICJMaW5rSWNvbi5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgpAQCAtMTI2LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBtYWtl
UmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0
ZWd5LmgKaW5kZXggOGE4MjM4MWYwMTguLjQ1ZmViNjM1ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCIKQEAgLTU3LDcg
KzU4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UoRnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJl
c291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRlciYsIGJvb2wpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA3NzQ1
MDAxZTc4YS4uZjI2YTlhYWYyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmF2aWdh
dGlvbkFjdGlvbjo6UmVxdWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogbV91cmwgeyBVUkwgeyBkb2N1bWVudC51cmwoKSB9IH0KICAgICAsIG1fb3JpZ2lu
IHsgbWFrZVJlZlB0cihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX3BhZ2VJ
REFuZEZyYW1lSURQYWlyIHsgZG9jdW1lbnQuZnJhbWUoKSA/IHN0ZDo6bWFrZV9wYWlyKGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpLnZhbHVlT3IoMCksIGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKDApKSA6IHN0
ZDo6bWFrZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9wYWdlSURB
bmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVu
dC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlm
aWVyIHsgfSksIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52
YWx1ZU9yKDApKSA6IHN0ZDo6bWFrZV9wYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4oeyB9
LCAwKSB9CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmlu
ZGV4IDFhNDRmOTFkMzY4Li5lZDdkMDljZjI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRl
ICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtNjMsMTQgKzY0LDE0IEBAIHB1YmxpYzoKICAg
ICBOYXZpZ2F0aW9uQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24mJik7CiAgICAgTmF2aWdhdGlvbkFj
dGlvbiYgb3BlcmF0b3I9KE5hdmlnYXRpb25BY3Rpb24mJik7CiAKLSAgICB1c2luZyBQYWdlSURB
bmRGcmFtZUlEUGFpciA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKiBwYWdlSUQgKi8sIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+OworICAgIHVzaW5nIFBhZ2VJREFuZEZyYW1lSURQYWlyID0gc3RkOjpw
YWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBmcmFtZUlEICovPjsKICAgICBjbGFzcyBS
ZXF1ZXN0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVxdWVzdGVyKGNvbnN0IERvY3VtZW50
Jik7CiAKICAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiAqbV9vcmlnaW47IH0KLSAgICAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5maXJzdDsgfQorICAgICAgICBQYWdlSWRlbnRpZmll
ciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZyYW1lSURQYWlyLmZpcnN0OyB9
CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZy
YW1lSURQYWlyLnNlY29uZDsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFVSTCBtX3VybDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDE0
YmMyZjNiZWVmLi5mZmFkYTFjNDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lk
KFZlY3RvCiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9u
Q2FsbGJhY2spOwogfQogCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVCghbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2sp
OwogICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MK
IH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1l
bnQpCit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlE
LCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVu
ZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBv
cGVuZXJVcmwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKaW5kZXggYzQ2NjFiMDQ3NjAuLmRlMWM5NGE3MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgorI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTczLDcgKzc0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0
IFVSTCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBkYXRlZENh
bGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
Jik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0
aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJTb2NrZXRM
b2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxU
aW1lKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dTdWJyZXNvdXJjZUxvYWRp
bmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiYmKTsKQEAgLTk0LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3Vt
ZW50KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKICNlbmRpZgogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25N
YXA7CiAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
IG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1aW50NjRfdCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CisgICAg
RnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQ
YWdlSWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3Rp
ZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlm
aWNhdGlvbkNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjM1Mzkw
YzhjM2EuLjUyYjJlOTRiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQ4
Niw4ICs0ODYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMgKi8pID0gMDsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQq
LywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8q
c3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8s
IHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5v
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21h
aW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYm
IC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVy
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd246Ok5vKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKaW5kZXgg
MTU2YzljZDIwNWQuLjBkN2IzZGJmNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFs
RnJhbWVJZGVudGlmaWVyLmgKQEAgLTI1LDEzICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRnJhbWUgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1
ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgogc3RydWN0IEdsb2JhbEZyYW1lSWRl
bnRpZmllciB7Ci0gICAgdWludDY0X3QgcGFnZUlEOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RDsKICAgICB1aW50NjRfdCBmcmFtZUlEOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIEdsb2Jh
bEZyYW1lSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxG
cmFtZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50aWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDRkNWY4ZDI5NzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBhZ2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBQYWdlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDExNTkw
NTBjZDMyLi40ZTZiNmFjZTMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb29raWVKYXIuaCIKKyNp
bmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zOCw3ICsz
OSw3IEBAIHN0cnVjdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSB7CiAgICAgU2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbzsKICAgICBVUkwgdXJsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcyB7IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObyB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNzEsOCAr
NzIsMTEgQEAgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5OjpkZWNvZGUoRGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mcmFtZUlEKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdl
SUQpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gcGFnZUlEOworICAg
IGRlY29kZXIgPj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJlc3VsdC5wYWdlSUQgPSBXVEZNb3ZlKCpwYWdlSUQpOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluY2x1ZGVTZWN1cmVDb29raWVzKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CmluZGV4IDNiMThlNjJmZTM5Li42M2RmMDU4OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAt
NjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0K
ICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29v
a2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlEKSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3Jh
bnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7
CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7
CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAg
ICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChw
YWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vz
cy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAg
IGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1lSUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdl
U3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwog
ICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21h
aW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhm
cm9tRG9tYWluKSkKICAgICAgICAgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJl
dmFsZW50UmVzb3VyY2UuYWRkKHBhZ2VJRCwgdG9Eb21haW4pOwpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZygpCiAgICAgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9u
VGVzdE1vZGUgPSB0cnVlOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHksIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0CitPcHRpb25hbDxTZWNvbmRz
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdl
SUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2Uu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDAzMDIwMGRmOWM0Li4zZjM5YzhhY2Q4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRp
YWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdp
c3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNp
ZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9t
YWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4g
bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1aW50
NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFzaDx1
aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0
X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVsdEhh
c2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmlnYXRl
ZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dp
dGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRp
b25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDYzNzQwMzUyYzRhLi41NTdlOTc3YjRk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3
b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0yOTQsNyArMjk0
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkgKnVu
ZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1cm4gZmlsdGVyZWRDb29raWVz
OwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkKK3N0YXRpYyBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYg
KHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwgcGFn
ZUlEKSkKQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZgogfQogCiBl
bnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVI
VFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJ
bmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNv
b2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQogewogICAgIEFTU0VSVCho
YXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMp
KTsKIApAQCAtMzYzLDEyICszNjMsMTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENvb2tp
ZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENvb2tp
ZVN0b3JhZ2VEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBhaXI8
U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
K3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
ckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywg
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJbmNs
dWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29r
aWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVy
biBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2llcyk7
CiB9CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KICAgICByZXR1
cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0eSwg
aGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBoZWFk
ZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRlSFRU
UE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi12b2lk
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQ
cml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIApAQCAtNDQzLDcgKzQ0Myw3IEBAIGJv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNsZWFy
KCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4IDJj
MTE1NjhmY2U1Li5kNjBkNzBhODM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtNTksNyArNTksNyBAQCBz
dGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3RyaW5nKCk7CiB9
CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQg
Q29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBV
TlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC03NCw3
ICs3NCw3IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9uc2Uo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzCiAgICAgY29va2llSmFyREIuc2V0Q29v
a2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdvcmsp
OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVzRm9y
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29v
a2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7
CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1l
SUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMTEzLDcgKzExMyw3IEBAIGJvb2wg
Q29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCkuaXNF
bmFibGVkKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBj
b25zdAorYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5NGM4NmFmZThmLi42
ODcyYjBhYzliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAtODAs
NyArODAsNyBAQCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVEYXRh
YmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29va2llRGF0YWJhc2U7CiB9CiAKLXZvaWQgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25z
dAogewogICAgIGNvb2tpZVN0b3JhZ2UoKS5zZXRDb29raWVzRnJvbURPTSgqdGhpcywgZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgdmFsdWUpOwogfQpAQCAt
OTAsNyArOTAsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0VuYWJsZWQo
KSBjb25zdAogICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2llc0VuYWJsZWQoKnRoaXMp
OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2Vj
dXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVT
dG9yYWdlKCkuY29va2llc0ZvckRPTSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpAQCAtMTU0LDcg
KzE1NCw3IEBAIFZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29va2ll
cyhjb25zdCBVUkwmKQogICAgIHJldHVybiB7IH07CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nv
b2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewog
ICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuZ2V0UmF3Q29va2llcygqdGhpcywgZmlyc3RQYXJ0
eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmF3Q29va2llcyk7CiB9CkBA
IC0xNjQsNyArMTY0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29va2ll
U3RvcmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0byB1c2UuCiB9CiAK
LXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFn
ZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHAKaW5kZXggMWY3NTg3N2E4MmIuLmY2NjQxZWZlYjQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIGlubGluZSBi
b29sIGh0dHBPbmx5Q29va2llRXhpc3RzKGNvbnN0IEdTTGlzdCogY29va2llcywgY29uc3QgZ2No
YXIqIG5hbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5V
U0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC00NDQsNyArNDQ0LDcgQEAgVmVjdG9yPENvb2tpZT4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsKQogICAgIHJldHVy
biBjb29raWVzOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
IGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAgIFVOVVNFRF9QQVJB
TShmcmFtZUlEKTsKQEAgLTUxNCw3ICs1MTQsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZQog
ICAgIHJldHVybiB7IFN0cmluZzo6ZnJvbVVURjgoY29va2llSGVhZGVyLmdldCgpKSwgZGlkQWNj
ZXNzU2VjdXJlQ29va2llcyB9OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0
eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTIyLDcgKzUyMiw3IEBAIHN0ZDo6
cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShj
b25zdCBVUkwmIGZpcnN0UGFyCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCB1
cmwsIGZhbHNlLCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAgIFVO
VVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDg3OWMwYjE5ZTk2Li5iNjg5YzNlMjVhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiAgICAgbV9kYXRhYmFzZS5ydW5W
YWN1dW1Db21tYW5kKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9t
YWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1l
SUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURv
bWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFt
ZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjpp
c01haW4oKSk7CiAKQEAgLTc0Myw3ICs3NDMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJgog
ICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BG
cmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIFBhZ2VJRCBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BG
cmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IApAQCAtNzk1LDcgKzc5NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYKICAgICB9KTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9wZW5lclBhZ2VJRCBvcGVuZXJQYWdlSUQsIE9wZW5lckRv
bWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBv
cGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQo
ZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5lckRvbWFpbik7CiAgICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihEb21haW4KICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKGRvbWFpbklu
TmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgV1RGOjpudWxsb3B0
LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIFtdKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0
V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdh
c1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IApAQCAtODI4LDcgKzgyOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1CiAgICAgZ3JhbnRT
dG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9w
RnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZy
YW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChT
dWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5kZXgg
YmFiMmI3YWVhYjcuLmJmYzIzMzk2ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzeW5jU3RvcmFnZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5jU3Rv
cmFnZUltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBhZ2VJ
RCwgT3BlbmVyRG9tYWluJiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgZ3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYpIG92ZXJyaWRlOwogCkBAIC05MSw5ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lk
IGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBG
cmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
IG92ZXJyaWRlOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsK
KyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1l
RG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdy
YW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihj
b25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2
aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4m
KSBvdmVycmlkZTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJl
dmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQcmV2
YWxlbmNlKTsKICAgICB1bnNpZ25lZCByZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5z
VGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21haW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBTdGRT
ZXQ8dW5zaWduZWQ+JiBub25QcmV2YWxlbnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVkIG51
bWJlck9mUmVjdXJzaXZlQ2FsbHMpOwogICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50KFN0
ZFNldDx1bnNpZ25lZD4mJik7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFn
ZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lk
IGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9t
YWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2
YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNw
cAppbmRleCAwZWU3Zjk2Mzg5NC4uYTVmMjYyNGU0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnN5bmNTdG9yYWdlSW1tZWRp
YXRlbHkoKQogICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdlLT5zY2hlZHVsZU9yV3JpdGVNZW1v
cnlTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OkZvcmNlSW1t
ZWRpYXRlV3JpdGU6Olllcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9y
eVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURv
bWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFt
ZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9t
YWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1l
SUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzCiAg
ICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFt
ZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFt
ZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApA
QCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1CiAgICAgfSk7CiB9CiAK
LXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2VzcywgT3BlbmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWlu
JiYgb3BlbmVyRG9tYWluKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5lckRvbWFpbik7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWlu
SW4KICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgV1RGOjpudWxsb3B0LCBvcGVu
ZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIFtdKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpn
cmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJh
bWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yOTks
NyArMjk5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkYKICAgICBncmFudFN0b3JhZ2VBY2Nl
c3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFp
biksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omdy
YW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4s
IFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1l
SUQsIFBhZ2VJRCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNT
aG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4m
JiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggNDRlZmJmNGRlYzEuLjQ1Zjdl
MWI3NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNTdG9yYWdlSWZO
ZWVkZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgT3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbklu
TmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3BlbmVyRG9t
YWluJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBncmFuZGZhdGhlckRhdGFGb3JEb21haW5zKGNv
bnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jikgb3ZlcnJpZGU7CiAKQEAgLTk3LDkgKzk3
LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFt
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBG
cmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1
cyk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9t
YWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWlu
JiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1JlZGly
ZWN0LCBib29sIGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFj
dGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwpAQCAtMTIzLDcgKzEyMyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50Rm9yRG9tYWlu
cyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFBy
ZXZhbGVudFJlc291cmNlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBSZXNvdXJjZUxvYWRQcmV2
YWxlbmNlKTsKICAgICB1bnNpZ25lZCByZWN1cnNpdmVseUdldEFsbERvbWFpbnNUaGF0SGF2ZVJl
ZGlyZWN0ZWRUb1RoaXNEb21haW4oY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIEhhc2hT
ZXQ8UmVkaXJlY3RlZFRvRG9tYWluPiYsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMp
IGNvbnN0OwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBncmFudFN0b3Jh
Z2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBPcHRp
b25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwogICAgIHZvaWQgbWFya0FzUHJldmFsZW50SWZIYXNS
ZWRpcmVjdGVkVG9QcmV2YWxlbnQoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIGJvb2wg
aXNQcmV2YWxlbnREdWVUb0RlYnVnTW9kZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JEZWJ1
Z01vZGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAppbmRleCAwYjU3NzViYmI3Ny4uZDc3OThiMjVkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHVzaW5n
IE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNp
bmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47
Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0g
dWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogICAgIAogICAgIHZpcnR1
YWwgflJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwpAQCAtMTEwLDcgKzEwOCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJEb21h
aW4mJikgPSAwOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc0RlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVn
TW9kZUVuYWJsZWQ7IH07CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9k
ZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9w
dGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21h
aW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdy
YW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFt
ZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYm
LCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkKT4mJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZyYW1lTmF2
aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
Y29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5G
cmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9w
RnJhbWVEb21haW4mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCmluZGV4IDg3MWIxOWQyZjA3Li42MjI0MzBjZDhlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTI3NSw3ICsyNzUs
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcgogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVChzdWJGcmFtZURvbWFpbiAhPSB0b3BGcmFtZURvbWFpbik7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTI5OCwxMiArMjk4LDEyIEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzCiAgICAgfSk7CiB9CiAKLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQorYm9vbCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBm
aXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQp
CiB7CiAgICAgcmV0dXJuIG1fbmV0d29ya1Nlc3Npb24gPyBtX25ldHdvcmtTZXNzaW9uLT5uZXR3
b3JrU3RvcmFnZVNlc3Npb24oKS5oYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBmaXJz
dFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpIDogZmFsc2U7CiB9CiAKLXZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFu
ZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxi
YWNrKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBSCiAgICAg
Y2FsbGJhY2soZmFsc2UpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChzdWJGcmFtZURvbWFpbiA9PSB0b3BGcmFtZURvbWFpbikgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVzLCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29u
c3QgUmVnaXN0cmFibGVEb21haQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJs
ZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFn
ZUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFJlZ2lz
dHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmll
ciBvcGVuZXJQYWdlSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihSZWdpc3RyYWJsZQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBz
dWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9tYWlu
ID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9wRnJh
bWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24s
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYKICAgICB9KTsK
IH0KIAotU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK1N0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgYm9vbCBpc1N0b3JhZ2VHcmFudGVkID0gZmFs
c2U7CiAKQEAgLTQwOSw3ICs0MDksNyBAQCBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdAogICAgIHJl
dHVybiBpc1N0b3JhZ2VHcmFudGVkID8gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcyA6IFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObzsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsR3Jh
bnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDg3NTlkNjAxNjZhLi43OWNmMjQ2MDFjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTdG9yYWdlQWNj
ZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgpAQCAtODIsOCArODMsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVk
VG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1
c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2lu
ZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsK
ICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDsKICAgICB1c2luZyBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd247CkBAIC0xMDQsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hvdWxk
Q2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShi
b29sKTsKIAotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CisgICAgdm9pZCBncmFudFN0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogCiAgICAgdm9pZCBhcHBsaWNhdGlvbldp
bGxUZXJtaW5hdGUoKTsKIApAQCAtMTE4LDExICsxMTcsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIEhhc2hNYXA8UmVnaXN0cmFibGVE
b21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYm
KTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICBTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQpOworICAgIFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAg
IHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7Ci0gICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3Qg
U3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCk7
Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgYm9vbCBoYXNT
dG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVE
b21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQcmV2
YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTY2LDEx
ICsxNjUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogCiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAgdm9p
ZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHZvaWQgY2Fs
bEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBU
b3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwog
ICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgY2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2llc0Zv
ckhhbmRsZXIoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxsUmVtb3ZlRG9tYWluc0hhbmRsZXIoY29uc3Qg
VmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwotICAgIHZvaWQgY2FsbEhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CisgICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBTdWJG
cmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAgdm9p
ZCBkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOwogCkBAIC0xODIsNyArMTgxLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25l
ZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzU3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2lucykgY29uc3Q7CiAKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVk
KFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIHVpbnQ2
NF90IG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKTsKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Np
b24mLCBjb25zdCBTdHJpbmcmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oCmluZGV4IDJjOTcxODM2YWRhLi40ZDNkMTY5ZjZhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHJlZmVycmVyOwog
ICAgICAgICBTdHJpbmcgdXNlckFnZW50OwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQ7Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlEOwogICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICBXZWJDb3Jl
OjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAzZDcxZjhmNmIxYi4uOTJjOGI3YWU0
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00NDIsNyArNDQyLDcgQEAgdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlTG9hZElkZW50aWZpZXIoUmVz
b3VyY2VMb2FkSWRlbnRpZmllcgogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2FkZXJz
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlkZW50aWZp
ZXIgd2ViUGFnZUlEKQogewogICAgIHN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0ZvclBh
Z2Uod2ViUGFnZUlEKTsKIH0KQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFMOjpT
ZXNzaQogICAgIGxvYWRlci0+Y29udmVydFRvRG93bmxvYWQoZG93bmxvYWRJRCwgcmVxdWVzdCwg
cmVzcG9uc2UpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29r
aWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29r
aWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
ID0gc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBhdXRv
IHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFydHks
IHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVz
KTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
Ojpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29ucwogICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAK
LXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNG
cm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNlc3Np
b24gPSBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOwogICAgIG5l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOwpAQCAtNTQyLDEzICs1
NDIsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJs
ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb20KICAgICBjb21wbGV0aW9uSGFuZGxlcihz
dG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZXNFbmFibGVk
KCkpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcmVzdWx0ID0g
c3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5jb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
TW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4gcmVzdWx0OwogICAgIHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Np
b25JRCkuZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCByZXN1bHQpOwpAQCAtNjM4LDEzICs2MzgsMTMgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
CiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdv
cmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFnZVNl
c3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShmcmFtZUlELCBwYWdlSUQpOwogfQog
Ci12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZpY0Rh
dGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQ
YWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFn
ZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAg
ICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5jbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzKHBhZ2VJRCk7CkBAIC02OTcsNyArNjk3LDcgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9y
PFdlYkNvcmUKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJvY2Vz
cygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKSB7CkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGMKICAgICBj
b21wbGV0aW9uSGFuZGxlcih0cnVlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
IHdhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRX
YXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
IHByb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byBu
ZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklE
KSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtT
ZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKQEAgLTcyMSw3ICs3MjEsNyBAQCB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bjo6Tm8pOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Ms
IHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVu
ZXJEb21haW4pCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVu
dGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJE
b21haW4pCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJvY2Vzcygp
Lm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygp
KQpAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiAgICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0
T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogfQogCi1PcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlU
cmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jlc291
cmNlTG9hZCh1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJ
RCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkK
K09wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
UmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29sIGlzTWFpblJlc291cmNlLCBj
b25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQogewogICAgIGlmIChzZXNzaW9uSUQuaXNF
cGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTgxNCw3ICs4MTQs
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxsTmV0d29ya0Fj
dGl2aXR5VHJhY2tpbmcoKQogICAgIG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcnMuY2xlYXIoKTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtB
Y3Rpdml0eVRyYWNraW5nRm9yUGFnZSh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdl
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBmb3IgKGF1dG8mIGFjdGl2aXR5VHJhY2tl
ciA6IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcnMpIHsKICAgICAgICAgaWYgKGFjdGl2aXR5VHJh
Y2tlci5wYWdlSUQgPT0gcGFnZUlEKQpAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0ZvclBh
Z2UodWludDY0CiAgICAgfSk7CiB9CiAKLXNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkodWludDY0X3QgcGFnZUlEKQorc2l6ZV90IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kUm9vdE5ldHdvcmtBY3Rpdml0eShQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIG1fbmV0d29ya0FjdGl2aXR5VHJhY2tl
cnMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7CiAgICAgICAgIHJldHVybiBp
dGVtLmlzUm9vdEFjdGl2aXR5ICYmIGl0ZW0ucGFnZUlEID09IHBhZ2VJRDsKQEAgLTkwMywxNyAr
OTAzLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyQ29ubmVj
dGlvbkhhc1VwbG9hZHMoKQogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpDbGVhcldlYlByb2Nlc3NI
YXNVcGxvYWRzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCit2b2lkIE5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9sZFBhZ2VJRCkKIHsKICAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQYWdlV2FzQWRkZWQobV9j
b25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCwgb2xkUGFnZUlEKTsKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQ
YWdlV2FzUmVtb3ZlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCwgcGFnZUlEKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25D
aGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgcGFnZXMpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9jZXNz
U2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
UGFnZUlkZW50aWZpZXI+JiBwYWdlcykKIHsKICAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQcm9j
ZXNzU2Vzc2lvbkNoYW5nZWQobV9jb25uZWN0aW9uLmdldCgpLCBuZXdTZXNzaW9uSUQsIHBhZ2Vz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBjYmM3YmJmZThmNS4uMDZkNTc5Njg4
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmgiCiAjaW5jbHVkZSAiV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
cm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4u
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTMzLDcgKzEzNCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgbV9uZXR3b3JrTG9hZEluZm9ybWF0aW9uQnlJRC5yZW1vdmUoaWRlbnRpZmll
cik7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gc3RhcnRU
cmFja2luZ1Jlc291cmNlTG9hZCh1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQm
KTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVz
b3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVy
IHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJik7
CiAgICAgdm9pZCBzdG9wVHJhY2tpbmdSZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciByZXNvdXJjZUlELCBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpDb21wbGV0aW9uQ29kZSk7CiAK
ICAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnkoKTsKQEAgLTE0NCw5
ICsxNDUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb25uZWN0aW9uSGFzVXBsb2FkcygpOwog
ICAgIHZvaWQgY2xlYXJDb25uZWN0aW9uSGFzVXBsb2FkcygpOwogCi0gICAgdm9pZCB3ZWJQYWdl
V2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFn
ZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBwYWdlSUQpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lv
bklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZXMpOworICAgIHZv
aWQgd2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKTsKKyAgICB2b2lkIHdlYlBhZ2VX
YXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAg
dm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiBwYWdlcyk7CiAKIHByaXZh
dGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3MmLCBJ
UEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwpAQCAtMTcwLDE2ICsxNzEsMTYgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHByZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRpZmll
ciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIHJlbW92ZUxv
YWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwotICAgIHZvaWQgcGFnZUxvYWRD
b21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKTsKKyAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVk
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJlY3RS
ZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJMKTsK
ICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9
IHsgfSk7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJik7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Ci0g
ICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7Cisg
ICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBj
b25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYmKT4mJik7CisgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNl
c3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUlu
Zm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25J
RCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAogICAgIHZvaWQgcmVn
aXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hF
eHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKQEAgLTIxOCwx
NyArMjE5LDE3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbiYg
Y2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Np
b25JRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIGNsZWFy
UGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
UEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KTsKKyAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQg
bG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYpOwogICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAgICAgdm9pZCBsb2dTdWJyZXNv
dXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJn
ZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2FsbFRp
bWUgbGFzdFNlZW4pOwogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRhcmdldERvbWFpbik7CiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7Ci0g
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsK
LSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
LCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3Bl
bmVyRG9tYWluKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKTsK
ICNlbmRpZgogCiAgICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBT
dHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CkBAIC0yMzksMjkgKzI0MCwyOSBAQCBwcml2YXRlOgogICAgICAgICBSZXNvdXJjZU5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0d29y
a0FjdGl2aXR5VHJhY2tlcihjb25zdCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXImKSA9
IGRlZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNvdXJj
ZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXImJikgPSBkZWZhdWx0OwotICAgICAgICBSZXNvdXJjZU5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIodWludDY0X3QgcGFnZUlEKQorICAgICAgICBSZXNvdXJjZU5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAg
ICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAgLCBpc1Jvb3RBY3Rpdml0
eSB7IHRydWUgfQogICAgICAgICAgICAgLCBuZXR3b3JrQWN0aXZpdHkgeyBOZXR3b3JrQWN0aXZp
dHlUcmFja2VyOjpMYWJlbDo6TG9hZFBhZ2UgfQogICAgICAgICB7CiAgICAgICAgIH0KIAotICAg
ICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIodWludDY0X3QgcGFnZUlELCBSZXNv
dXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29ya0Fj
dGl2aXR5VHJhY2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9h
ZElkZW50aWZpZXIgcmVzb3VyY2VJRCkKICAgICAgICAgICAgIDogcGFnZUlEIHsgcGFnZUlEIH0K
ICAgICAgICAgICAgICwgcmVzb3VyY2VJRCB7IHJlc291cmNlSUQgfQogICAgICAgICAgICAgLCBu
ZXR3b3JrQWN0aXZpdHkgeyBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpMYWJlbDo6TG9hZFJlc291
cmNlIH0KICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdWludDY0X3QgcGFnZUlEIHsg
MCB9OworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIFJl
c291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCB7IDAgfTsKICAgICAgICAgYm9vbCBpc1Jv
b3RBY3Rpdml0eSB7IGZhbHNlIH07CiAgICAgICAgIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIgbmV0
d29ya0FjdGl2aXR5OwogICAgIH07CiAKICAgICB2b2lkIHN0b3BBbGxOZXR3b3JrQWN0aXZpdHlU
cmFja2luZygpOwotICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFn
ZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHNpemVfdCBmaW5kUm9vdE5ldHdvcmtBY3Rpdml0eSh1
aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5n
Rm9yUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc2l6ZV90IGZpbmRSb290TmV0
d29ya0FjdGl2aXR5KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBzaXplX3QgZmluZE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlEKTsK
IAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZjdjOTdlZWJiMjEuLjgzM2U3NGZjZjYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDE4ICsyNiwx
OCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNl
aXZlciB7CiAgICAgUGVyZm9ybVN5bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0
b3I8Y2hhcj4gZGF0YSkgU3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCiAgICAgUmVtb3Zl
TG9hZElkZW50aWZpZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKLSAgICBQYWdl
TG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpCisgICAgUGFnZUxvYWRDb21wbGV0ZWQo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIFByZWZldGNoRE5TKFN0cmlu
ZyBob3N0bmFtZSkKICAgICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50
aWZpZXIsIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRl
cnMpOwogCiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktp
dDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9h
ZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkK
IAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQ
YXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBl
bnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMp
IFN5bmNocm9ub3VzCi0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0
ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wg
V2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChT
dHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9u
b3VzCisgICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwg
Zmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVS
TCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFi
bGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25v
dXMKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVT
aXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNj
ZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNv
b2tpZXMpIFN5bmNocm9ub3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wg
V2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChT
dHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9u
b3VzCisgICAgR2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJz
dFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5j
aHJvbm91cwogICAgIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1
cmwsIFN0cmluZyBjb29raWVOYW1lKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJs
LCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9u
SGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCkBAIC01NiwxNiArNTYsMTYgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEVu
c3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwot
ICAgIENsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFJlbW92ZVN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CisgICAgQ2xlYXJQYWdlU3BlY2lmaWNE
YXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWlu
KQogICAgIExvZ1dlYlNvY2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNv
dXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291cmNl
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAgICAgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3M+IHN0YXRpc3RpY3MpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwotICAg
IFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+
IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwg
ZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNT
aG93bikgQXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVk
T2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIG9wZW5lckRvbWFpbikKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VB
Y2Nlc3MpIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYworICAgIFJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
b3BlbmVyRG9tYWluKQogI2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eShTdHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5n
IGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC04
Nyw3ICs4Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKIAogICAgIFNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlBy
b2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogCi0gICAgV2ViUGFnZVdhc0FkZGVk
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQ
YWdlSUQpCi0gICAgV2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1
aW50NjRfdCBwYWdlSUQpCi0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lv
bklEIG5ld1Nlc3Npb25JRCwgVmVjdG9yPHVpbnQ2NF90PiBwYWdlcykKKyAgICBXZWJQYWdlV2Fz
QWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKKyAgICBXZWJQYWdlV2Fz
UmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkKKyAgICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3
U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3Bw
CmluZGV4IGQxNGIxZGU5ZDkxLi40MDk3MTRkNjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAtNDgsNyArNDgsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lT3JpZ2luKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
ZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0RhdGEoKSB8
fCB1cmwucHJvdG9jb2xJc0Jsb2IoKSB8fCAhb3JpZ2luIHx8IG9yaWdpbi0+Y2FuUmVxdWVzdCh1
cmwpOwogfQogCi1OZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBIVFRQ
SGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJlZmxpZ2h0UG9s
aWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQsIGJvb2wg
c2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlwZSByZXF1ZXN0TG9h
ZFR5cGUpCitOZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJv
Y2VzcyYgbmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBI
VFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJlZmxpZ2h0
UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQsIGJv
b2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlwZSByZXF1ZXN0
TG9hZFR5cGUpCiAgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1fc2Vz
c2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nlc3Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkQ2hl
Y2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
aAppbmRleCAzMWQxMWMzYThhZS4uNTdkZjFkYTQ2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaApAQCAtNTQsNyArNTQsNyBAQCBj
bGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29ya0xv
YWRDaGVja2VyPiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBMb2FkVHlwZSA6IGJvb2wgeyBN
YWluRnJhbWUsIE90aGVyIH07CiAKLSAgICBOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nl
c3MmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwmJiwg
UmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGlnaHRQb2xp
Y3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZhbHNl
LCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBMb2Fk
VHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOworICAgIE5ldHdvcmtMb2Fk
Q2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBp
c0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gTG9hZFR5
cGU6Ok90aGVyKTsKICAgICB+TmV0d29ya0xvYWRDaGVja2VyKCk7CiAKICAgICBzdHJ1Y3QgUmVk
aXJlY3Rpb25UcmlwbGV0IHsKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAg
ICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgUmVmPE5ldHdvcmtQcm9jZXNzPiBt
X25ldHdvcmtQcm9jZXNzOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKICAgICBXZWJD
b3JlOjpIVFRQSGVhZGVyTWFwIG1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVyczsgLy8gTmVlZGVkIGZv
ciBDT1JTIGNoZWNrcy4KICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fZmlyc3RSZXF1ZXN0
SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JTIGNoZWNrcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCmluZGV4IDg5NjM5OWQx
MzMyLi44OTczMGNmOWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZp
bGVSZWZlcmVuY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTM4LDcg
KzM5LDcgQEAgZW51bSBjbGFzcyBQcmVjb25uZWN0T25seSB7IE5vLCBZZXMgfTsKIAogY2xhc3Mg
TmV0d29ya0xvYWRQYXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQg
eyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEOwogICAgIHVpbnQ2
NF90IHdlYkZyYW1lSUQgeyAwIH07CiAgICAgV1RGOjpQcm9jZXNzSUQgcGFyZW50UElEIHsgMCB9
OwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBBTDo6U2Vzc2lvbklEOjplbXB0eVNl
c3Npb25JRCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IGE1ZDZmNWNmY2M3Li4yOWQxN2Y5OWYwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTExNTUsNyArMTE1
NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2VzCiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVpbnQ2
NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vz
c2lvbihzZXNzaW9uSUQpKQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvbW1pdHRl
ZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oZnJvbURvbWFpbiwgdG9Eb21haW4sIHBh
Z2VJRCk7CkBAIC0xOTU0LDcgKzE5NTQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRBbGxv
d3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29sIGFsbG93cywgQ29tcGxldAogICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdu
b3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9p
ZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2UoUGFnZUlkZW50aWZpZXIgd2Vi
UGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFn
bm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzcwogICAg
IHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
UHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRp
b24sIFNob3VsZFNhbXBsZTo6Tm8pLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBEaWFnbm9zdGljTG9nZ2lu
Z1Jlc3VsdFR5cGUgcmVzdWx0LCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3
b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFBhZ2VJZGVudGlmaWVy
IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUgcmVzdWx0LCBTaG91bGRTYW1wbGUgc2hv
dWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNob3VsZExv
Z0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk3MCw3
ICsxOTcwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
UmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3QKICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dEaWFnbm9z
dGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFnZUlELCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwgcmVz
dWx0LCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6Omxv
Z0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVu
c2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJZGVu
dGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgU2hv
dWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTI2MTksNyArMjYxOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtlcHRB
bGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiAgICAgICAgIHNlc3Npb24t
PnJlbW92ZUtlcHRBbGl2ZUxvYWQobG9hZGVyKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
d2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBQYWdl
SWRlbnRpZmllciBvbGRQYWdlSUQpCiB7CiAgICAgaWYgKCFwYWdlSUQgfHwgIW9sZFBhZ2VJRCkg
ewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsK
QEAgLTI2MzgsMTMgKzI2MzgsMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc0Fk
ZGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQKICAgICAgICAg
cmV0dXJuIHNlc3Npb25JRDsKICAgICB9KTsKIAotICAgIHN0b3JhZ2VNYW5hZ2VyLmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRCwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25l
ZD46Om1heCgpKTsKLSAgICBzdG9yYWdlTWFuYWdlci5hZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRCwgY29ubmVjdGlvbik7CisgICAgc3RvcmFnZU1hbmFn
ZXIuY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUlELnRvVUludDY0KCksIHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgc3RvcmFnZU1hbmFnZXIuYWRk
QWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQudG9VSW50NjQo
KSwgY29ubmVjdGlvbik7CiAgICAgaWYgKHBhZ2VJRCAhPSBvbGRQYWdlSUQpCi0gICAgICAgIHN0
b3JhZ2VNYW5hZ2VyLmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uob2xkUGFnZUlELCBwYWdl
SUQpOworICAgICAgICBzdG9yYWdlTWFuYWdlci5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KG9sZFBhZ2VJRC50b1VJbnQ2NCgpLCBwYWdlSUQudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
biwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdv
cmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAg
IGlmICghcGFnZUlEKSB7CiAgICAgICAgIExPR19FUlJPUigiQ2Fubm90IHJlbW92ZSBwYWdlIHdp
dGggaW52YWxpZCBpZCIpOwpAQCAtMjY1Nyw4ICsyNjU3LDggQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNl
c3Npb24KICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byYgc3RvcmFnZU1hbmFnZXIgPSBzZXNz
aW9uLT5zdG9yYWdlTWFuYWdlcigpOwotICAgIHN0b3JhZ2VNYW5hZ2VyLnJlbW92ZUFsbG93ZWRT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELCBjb25uZWN0aW9uKTsKLSAg
ICBzdG9yYWdlTWFuYWdlci5kZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUlEKTsK
KyAgICBzdG9yYWdlTWFuYWdlci5yZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VD
b25uZWN0aW9uKHBhZ2VJRC50b1VJbnQ2NCgpLCBjb25uZWN0aW9uKTsKKyAgICBzdG9yYWdlTWFu
YWdlci5kZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UocGFnZUlELnRvVUludDY0KCkpOwog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6
Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKQEAgLTI2NzQsNyArMjY3NCw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OndlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQogICAgIG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPnN0b3JhZ2VNYW5hZ2VyKCku
cHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIH0KIAotdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+
JiBwYWdlSURzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2Vk
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlSURzKQogewogICAgIGF1dG8gY29u
bmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwogICAgIEFTU0VSVChtX3Nlc3Npb25C
eUNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbklEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggN2FjYjNmOTY3NWMuLmViZjNiN2Zl
NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5o
CkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQlNl
cnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29y
a2VySWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+
CkBAIC0xMzYsOCArMTM3LDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWlu
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3Bl
bmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVy
UGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNp
bmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogCiAgICAgTmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJv
Y2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmKTsKQEAgLTE5MCw5ICsxODksOSBAQCBwdWJs
aWM6CiAgICAgdm9pZCByZXN1bWUoKTsKIAogICAgIC8vIERpYWdub3N0aWMgbWVzc2FnZXMgbG9n
Z2luZy4KLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGUpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0
KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUsIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMs
IFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZvaWQgbG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdu
b3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lk
IGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2
YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUp
OwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNl
QXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdDsKQEAgLTI1OCw3ICsyNTcsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RG
cm9tKFBBTDo6U2Vzc2lvbklELCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0
ZWRGcm9tRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJl
Z2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7Ci0gICAgdm9pZCBjb21t
aXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dp
dGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKQEAgLTI3MSwxMCArMjcwLDEwIEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQs
IGJvb2wpOwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNl
c3Npb25JRCkgY29uc3Q7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rp
b24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQp
OwotICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNz
aW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoSVBDOjpD
b25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNv
bm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAg
IHZvaWQgd2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2
b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Np
b25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpOworICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+Jik7CiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmln
aW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmKTsKIAogI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkOWZlZTA3OGZl
Ny4uZjVlZjUzMDEzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTMxLDcgKzEzMSw3IEBAIG1lc3Nh
Z2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVk
aXJlY3RlZFRvRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVkaXJl
Y3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0ZWRG
cm9tRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAgIENv
bW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKSAtPiAoKSBBc3luYwor
ICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlEKSAtPiAoKSBBc3luYwogICAgIFNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4p
IC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0
ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgp
IEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDU4YWFjYjk5M2RiLi4zM2Nk
YzRkMTdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTEwNyw4ICsxMDcsMTEg
QEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQud2ViUGFnZUlEKSkKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
d2ViUGFnZUlEOworICAgIGRlY29kZXIgPj4gd2ViUGFnZUlEOworICAgIGlmICghd2ViUGFnZUlE
KQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0LndlYlBhZ2VJRCA9ICp3ZWJQYWdl
SUQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53ZWJGcmFtZUlEKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGZlMjY1MzZmMjFjLi5mNGNiYWUyZGFi
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcApAQCAtMTc0LDE4ICsxNzQsMTggQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0KCkKICAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJl
c291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH0sIHRoaXMsIFt0aGlzXSAoYXV0byYm
IHJlc3VsdCkgewogICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1bHQsCiAgICAgICAgICAg
ICAgICAgW3RoaXNdIChSZXNvdXJjZUVycm9yJiBlcnJvcikgewotICAgICAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogZXJyb3IgY2hlY2tpbmcgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQg
PSAlZCwgZXJyb3IuZG9tYWluID0gJXtwdWJsaWN9cywgZXJyb3IuY29kZSA9ICVkKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygp
LCBtX3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBl
cnJvci5lcnJvckNvZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0YXJ0OiBlcnJvciBjaGVja2luZyAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkLCBlcnJvci5kb21haW4g
PSAle3B1YmxpY31zLCBlcnJvci5jb2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJh
bWV0ZXJzLnBhcmVudFBJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJy
b3JDb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9yLmlzQ2FuY2VsbGF0aW9u
KCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5kaWRGYWlsTG9hZGluZyhlcnJvcik7
CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBbdGhpc10gKE5ldHdvcmtMb2Fk
Q2hlY2tlcjo6UmVkaXJlY3Rpb25UcmlwbGV0JiB0cmlwbGV0KSB7CiAgICAgICAgICAgICAgICAg
ICAgIHRoaXMtPm1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRp
cmVjdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMtPndpbGxTZW5kUmVkaXJlY3Rl
ZFJlcXVlc3QoV1RGTW92ZSh0cmlwbGV0LnJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQucmVkaXJl
Y3RSZXF1ZXN0KSwgV1RGTW92ZSh0cmlwbGV0LnJlZGlyZWN0UmVzcG9uc2UpKTsKLSAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IHN5bnRoZXRpYyByZWRp
cmVjdCBzZW50IGJlY2F1c2UgcmVxdWVzdCBVUkwgd2FzIG1vZGlmaWVkIChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNo
cm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogc3ludGhldGljIHJlZGlyZWN0IHNlbnQgYmVj
YXVzZSByZXF1ZXN0IFVSTCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3Vy
Y2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJv
bm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKICAgICAgICAgICAgICAgICB9LAogICAg
ICAgICAgICAgICAgIFt0aGlzXSAoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSB7CiAgICAgICAg
ICAgICAgICAgICAgIGlmICh0aGlzLT5jYW5Vc2VDYWNoZShyZXF1ZXN0KSkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNh
Y2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQs
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+
aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFy
ZW50UElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
InN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWlu
UmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBt
X3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNT
eW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMtPnJldHJpZXZlQ2FjaGVFbnRyeShyZXF1ZXN0KTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTk4LDcgKzE5OCw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAgICAgfQogICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhhdCBjb2RlIHBhdGggb25jZSBtX25ldHdvcmtMb2FkQ2hlY2tlciBpcyB1
c2VkIGZvciBhbGwgbmV0d29yayBsb2Fkcy4KICAgICBpZiAoY2FuVXNlQ2FjaGUob3JpZ2luYWxS
ZXF1ZXN0KCkpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBDaGVj
a2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAl
ZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJ
RCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNo
ZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5j
aHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50
UElEKTsKICAgICAgICAgcmV0cmlldmVDYWNoZUVudHJ5KG9yaWdpbmFsUmVxdWVzdCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIyNywxMyArMjI3LDEzIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KQogICAgICAgICBsb2FkZXItPmxvZ1Nsb3dDYWNoZVJldHJpZXZlSWZOZWVkZWQoaW5m
byk7CiAKICAgICAgICAgaWYgKCFlbnRyeSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2Ug
bm90IGluIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hy
b25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2Uo
KSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9h
ZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAg
ICBpZiAoZW50cnktPmhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFnZUNhcCgpKSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291
cmNlIGhhcyByZWFjaGVkIHByZXZhbGVudCByZXNvdXJjZSBhZ2UgY2FwIChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIGhhcyByZWFj
aGVkIHByZXZhbGVudCByZXNvdXJjZSBhZ2UgY2FwIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291
cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIG1fY2Fj
aGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24gPSBXVEZNb3ZlKGVudHJ5KTsKICAgICAgICAg
ICAgIFJlc291cmNlUmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0ID0gb3JpZ2luYWxSZXF1ZXN0
KCk7CiAgICAgICAgICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXZhbGlk
YXRpb25SZXF1ZXN0KSwgRmlyc3RMb2FkOjpZZXMpOwpAQCAtMjQxLDIxICsyNDEsMjEgQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICBpZiAoZW50cnkt
PnJlZGlyZWN0UmVxdWVzdCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJyZXRyaWV2ZUNhY2hlRW50cnk6IEhhbmRsaW5nIHJlZGlyZWN0IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IEhhbmRsaW5nIHJlZGlyZWN0IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91
cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3RGb3JDYWNo
ZUVudHJ5KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobG9hZGVyLT5tX3BhcmFtZXRlcnMubmVlZHND
ZXJ0aWZpY2F0ZUluZm8gJiYgIWVudHJ5LT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpKSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6
IFJlc291cmNlIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgY2VydGlmaWNhdGUgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBu
b3QgaGF2ZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXIt
PnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXF1ZXN0KSwgRmlyc3RMb2FkOjpZZXMpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChlbnRyeS0+bmVlZHNWYWxp
ZGF0aW9uKCkgfHwgcmVxdWVzdC5jYWNoZVBvbGljeSgpID09IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdENhY2hlUG9saWN5OjpSZWZyZXNoQW55Q2FjaGVEYXRhKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFZhbGlkYXRpbmcgY2FjaGUg
ZW50cnkgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBt
X3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygp
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRy
eTogVmFsaWRhdGluZyBjYWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9
ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2
NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlz
TWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXItPnZh
bGlkYXRlQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVu
dHJ5OiBSZXRyaWV2ZWQgcmVzb3VyY2UgZnJvbSBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01h
aW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9tIGNhY2hl
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCki
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpKTsKICAgICAgICAgbG9hZGVyLT5kaWRSZXRyaWV2ZUNhY2hlRW50cnkoV1RGTW92ZShl
bnRyeSkpOwogICAgIH0pOwogfQpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2FkIGxvYWQpCiB7CiAgICAgaWYgKGxvYWQgPT0g
Rmlyc3RMb2FkOjpZZXMpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnRO
ZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJv
bm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9h
ZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOwogCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCkBAIC0y
ODksNyArMjg5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xv
YWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAgICB9CiAgICAgaWYgKCFu
ZXR3b3JrU2Vzc2lvbikgewogICAgICAgICBXVEZMb2dBbHdheXMoIkF0dGVtcHRlZCB0byBjcmVh
dGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9l
cyBub3QgZXhpc3QuIiwgcGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBBdHRlbXB0
ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xvYWQgd2l0aCBhIHNlc3Npb24gdGhhdCBkb2VzIG5vdCBl
eGlzdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBzZXNzaW9uSUQ9JSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0byBjcmVh
dGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0IChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgcGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwogICAgICAgICBtX2Nvbm5l
Y3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubG9nRGlhZ25vc3RpY01lc3NhZ2UobV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRCwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9y
S2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW52YWxpZFNlc3Npb25JREtl
eSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICAgICAgZGlkRmFpbExvYWRpbmco
aW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI5OCw3
ICsyOTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgIHBhcmFtZXRlcnMucmVxdWVz
dCA9IFdURk1vdmUocmVxdWVzdCk7CiAgICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlx
dWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbV9jb25uZWN0aW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGRlc2NyaXB0aW9uID0g
JXtwdWJsaWN9cykiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9u
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3
b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0Zjgo
KS5kYXRhKCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cChMb2Fk
UmVzdWx0IHJlc3VsdCkKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Y2xlYW51cChMb2FkUmVzdWx0IHJlc3VsdCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNvbnZlcnRUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkK
IHsKLSAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiQ29udmVydGluZyBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIgJXAgdG8gZG93bmxvYWQgJSIgUFJJdTY0ICIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCBk
b3dubG9hZElELmRvd25sb2FkSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xP
RyhMb2FkaW5nLCAiQ29udmVydGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgJXAgdG8gZG93bmxv
YWQgJSIgUFJJdTY0ICIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCBkb3dubG9hZElELmRvd25sb2Fk
SUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgIAogICAgIC8vIFRoaXMgY2Fu
IGhhcHBlbiBpZiB0aGUgcmVzb3VyY2UgY2FtZSBmcm9tIHRoZSBkaXNrIGNhY2hlLgogICAgIGlm
ICghbV9uZXR3b3JrTG9hZCkgewpAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFib3J0OiBDYW5jZWxpbmcgcmVzb3VyY2UgbG9hZCAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsCi0gICAgICAgIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyKTsKIAogICAgIGlmIChtX3BhcmFtZXRlcnMub3B0aW9ucy5r
ZWVwQWxpdmUgJiYgbV9yZXNwb25zZS5pc051bGwoKSAmJiAhbV9pc0tlcHRBbGl2ZSkgewogICAg
ICAgICBtX2lzS2VwdEFsaXZlID0gdHJ1ZTsKQEAgLTM4NCwxMiArMzg0LDEyIEBAIGJvb2wgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhj
b25zdCBTdHJpbmcmIHhGCiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0aW9uc0NvbmZsaWN0OiB7
CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAiTXVsdGlwbGUgJ1gtRnJhbWUtT3B0aW9u
cycgaGVhZGVycyB3aXRoIGNvbmZsaWN0aW5nIHZhbHVlcyAoJyIgKyB4RnJhbWVPcHRpb25zICsg
IicpIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNp
emVkVG9MZW5ndGgoKSArICInLiBGYWxsaW5nIGJhY2sgdG8gJ0RFTlknLiI7Ci0gICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JN
ZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJy
b3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2
NCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0aW9u
c0ludmFsaWQ6IHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9ICJJbnZhbGlkICdYLUZy
YW1lLU9wdGlvbnMnIGhlYWRlciBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJzogJyIgKyB4RnJhbWVPcHRpb25zICsg
IicgaXMgbm90IGEgcmVjb2duaXplZCBkaXJlY3RpdmUuIFRoZSBoZWFkZXIgd2lsbCBiZSBpZ25v
cmVkLiI7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdl
IHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNz
YWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICB9CkBAIC00MTYsNyArNDE2LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3Vs
ZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1lT3B0aW8KICAgICAgICAg
U3RyaW5nIHhGcmFtZU9wdGlvbnMgPSBtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6WEZyYW1lT3B0aW9ucyk7CiAgICAgICAgIGlmICgheEZyYW1lT3B0aW9ucy5pc051
bGwoKSAmJiBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyh4RnJhbWVPcHRpb25z
LCByZXNwb25zZS51cmwoKSkpIHsKICAgICAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAi
UmVmdXNlZCB0byBkaXNwbGF5ICciICsgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKCkgKyAiJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9w
dGlvbnMnIHRvICciICsgeEZyYW1lT3B0aW9ucyArICInLiI7Ci0gICAgICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9y
TWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFt
ZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFn
ZUlELnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAg
ICB9CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3Vs
ZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1lT3B0aW8KIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNl
JiYgcmVjZWl2ZWRSZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNw
b25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaHR0cFN0YXR1c0NvZGUgPSAlZCwgbGVuZ3RoID0gJSIgUFJJ
ZDY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaHR0
cFN0YXR1c0NvZGUgPSAlZCwgbGVuZ3RoID0gJSIgUFJJZDY0ICIpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRS
ZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7CiAKICAgICBtX3Jlc3BvbnNlID0gV1RG
TW92ZShyZWNlaXZlZFJlc3BvbnNlKTsKIApAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5n
dGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCi0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgIG1fbnVtQnl0ZXNSZWNl
aXZlZCArPSBidWZmZXItPnNpemUoKTsKIAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFs
aWRhdGlvbik7CkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKIAog
dm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgbV9udW1CeXRlc1JlY2VpdmVkKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGggPSAlemQp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNSZWNlaXZlZCk7CiAKICAg
ICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkpCiAgICAgICAgIG1f
Y29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJpY3MoaWRlbnRpZmllcigp
LCBuZXR3b3JrTG9hZE1ldHJpY3MpOwpAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYg
bmV0d29ya0xvCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGluZyhj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRGYWlsTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2Vs
bGF0aW9uID0gJWQsIGlzQWNjZXNzQ29udHJvbCA9ICVkLCBlcnJDb2RlID0gJWQpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJy
b3IuaXNBY2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRGYWlsTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNUaW1lb3V0ID0g
JWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGlzQWNjZXNzQ29udHJvbCA9ICVkLCBlcnJDb2RlID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGVycm9yLmlzVGltZW91dCgpLCBlcnJv
ci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5pc0FjY2Vzc0NvbnRyb2woKSwgZXJyb3IuZXJyb3JD
b2RlKCkpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygp
KQogICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24oaWRl
bnRpZmllcigpKTsKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdAog
ICAgICAgICB9CiAgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVX
aWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVdpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAKICAgICBtX2lzQWxsb3dlZFRv
QXNrVXNlckZvckNyZWRlbnRpYWxzID0gaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7
CiAKQEAgLTk4OCw2ICs5ODgsMTEgQEAgc3RhdGljIFN0cmluZyBlc2NhcGVJREZvckpTT04oY29u
c3QgT3B0aW9uYWw8dWludDY0X3Q+JiB2YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPyBTdHJpbmc6
Om51bWJlcih2YWx1ZS52YWx1ZSgpKSA6IFN0cmluZygiTm9uZSJfcyk7CiB9OwogCitzdGF0aWMg
U3RyaW5nIGVzY2FwZUlERm9ySlNPTihjb25zdCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mIHZh
bHVlKQoreworICAgIHJldHVybiB2YWx1ZSA/IFN0cmluZzo6bnVtYmVyKHZhbHVlLT50b1VJbnQ2
NCgpKSA6IFN0cmluZygiTm9uZSJfcyk7Cit9OworCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogewogICAgIEFTU0VSVChzaG91bGRMb2dD
b29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sIHNlc3Npb25JRCgpKSk7CkBAIC05OTgsNyAr
MTAwMyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlv
bigpIGNvbnN0CiAgICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29y
a1Jlc291cmNlTG9hZGVyIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpu
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxS
ZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlE
KCksIHBhZ2VJRCgpLCBpZGVudGlmaWVyKCkpOwogfQogCi1zdGF0aWMgdm9pZCBsb2dCbG9ja2Vk
Q29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
b24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlk
ZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWws
IGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAg
QVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24o
Y29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTEw
MjUsNyArMTAzMCw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvCiAjdW5kZWYgTE9DQUxfTE9H
X0lGX0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5h
bChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmll
cikKK3N0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAg
ICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRp
b24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAg
LTEwODYsNyArMTA5MSw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJu
YWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpCiAjdW5kZWYgTE9DQUxf
TE9HX0lGX0FMTE9XRUQKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tp
ZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQordm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChzaG91bGRM
b2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vz
c2lvbklEKCkpKTsKIApAQCAtMTA5OSwxNyArMTEwNCwxNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlIG1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbG9uZykKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgbWVz
c2FnZVNvdXJjZSwgbWVzc2FnZUxldmVsLCBtZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29s
ZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIG1lc3NhZ2VTb3VyY2UsIG1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzZW5kQ1NQVmlv
bGF0aW9uUmVwb3J0KFVSTCYmIHJlcG9ydFVSTCwgUmVmPEZvcm1EYXRhPiYmIHJlcG9ydCkKIHsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kQ1NQVmlvbGF0aW9uUmVwb3J0IHsgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIFdURk1vdmUocmVwb3J0VVJMKSwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSB7IFdURk1vdmUocmVwb3J0KSB9IH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRDU1BWaW9sYXRpb25SZXBvcnQgeyBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgV1RGTW92ZShyZXBvcnRVUkwpLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlIHsgV1RGTW92ZShyZXBvcnQpIH0gfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJ
bnQ2NCgpKTsKIH0KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmVucXVldWVTZWN1cml0
eVBvbGljeVZpb2xhdGlvbkV2ZW50KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZl
bnQ6OkluaXQmJiBldmVudEluaXQpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RW5x
dWV1ZVNlY3VyaXR5UG9saWN5VmlvbGF0aW9uRXZlbnQgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgV1RGTW92ZShldmVudEluaXQpIH0sIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVucXVldWVTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50
IHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIFdURk1vdmUoZXZlbnRJbml0KSB9LCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6bG9nU2xvd0NhY2hlUmV0cmlldmVJZk5lZWRlZChjb25zdCBOZXR3b3JrQ2FjaGU6OkNh
Y2hlOjpSZXRyaWV2ZUluZm8mIGluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhOGEzMDA1YzE0Mi4uYThmNmQz
MTU3OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UmVzb3VyY2VMb2FkZXIuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnNlc3Npb25JRDsg
fQogICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAgICAgdWludDY0X3QgZnJhbWVJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9Ci0gICAgdWludDY0X3QgcGFnZUlE
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRDsgfQorICAgIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQ7IH0KIAogICAgIHN0cnVjdCBTeW5jaHJvbm91c0xvYWREYXRhOwogCkBAIC0xMTAsNyAr
MTEwLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykg
JiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nQ29va2ll
SW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBQQUw6OlNl
c3Npb25JRCYpOwotICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCog
bG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7
CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmpl
Y3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpOwog
I2VuZGlmCiAKICAgICB2b2lkIGRpc2FibGVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0NhcHR1cmUo
KSB7IG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmlu
ZGV4IGM3ZjM4NmIzZDdjLi44YmJjMTY5Nzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiTmV0d29ya0NhY2hlRW50cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdl
LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNl
dC5oPgpAQCAtODQsNyArODUsNyBAQCBlbnVtIGNsYXNzIFVzZURlY2lzaW9uIHsKICAgICBOb0R1
ZVRvRXhwaXJlZFJlZGlyZWN0CiB9OwogCi11c2luZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWly
PHVpbnQ2NF90IC8qd2ViUGFnZUlEKi8sIHVpbnQ2NF90IC8qd2ViRnJhbWVJRCovPjsKK3VzaW5n
IEdsb2JhbEZyYW1lSUQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2
NF90IC8qd2ViRnJhbWVJRCovPjsKIAogY2xhc3MgQ2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxD
YWNoZT4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IDk2NWM2ZmE2NjRiLi4yZGQw
ZTdkNDZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBOZXR3
b3JrU2Vzc2lvbkNvY29hOwogY2xhc3MgTmV0d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBwdWJs
aWMgTmV0d29ya0RhdGFUYXNrIHsKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1Nlc3Npb25Db2Nv
YTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdv
cmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVu
dFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFz
a0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tl
cj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFz
az4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQm
IGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250
ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5j
b2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91
bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0NvY29h
KHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlm
Ziwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29u
bmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBuZXR3b3JrQWN0aXZp
dHlUcmFja2VyKSk7CiAgICAgfQpAQCAtNzAsMTIgKzcwLDEyIEBAIHB1YmxpYzoKICAgICBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcygpIHsgcmV0dXJuIG1f
bmV0d29ya0xvYWRNZXRyaWNzOyB9CiAKICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFtZUlEOyB9OwotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZUlEOyB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZUlEOyB9OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nl
c3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNv
cmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNG
b3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPik7
CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRh
c2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVu
Y29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5h
dmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKIAogICAgIGJvb2wg
dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFw
cGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0
cm9uZyBOU1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxk
Q29udGVudEVuY29kaW5nU25pZmYpOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFJl
dGFpblB0cjxOU1VSTFNlc3Npb25EYXRhVGFzaz4gbV90YXNrOwogICAgIFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyBtX25ldHdvcmtMb2FkTWV0cmljczsKICAgICB1aW50NjRfdCBtX2ZyYW1l
SUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9wYWdlSUQ7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGJv
b2wgbV9oYXNCZWVuU2V0VG9Vc2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCmluZGV4IDM1ZTQ0M2I5ZWU5Li4yOGEwNWU4MGRiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFza1dp
dGhGaXJzdFBhcnR5Rm9yU2FtZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0YXMK
ICNlbmRpZgogfQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2Eo
TmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmlu
Z1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5l
Y3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29ya0Rh
dGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9u
LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwg
Ym9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtEYXRh
VGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFtZUlE
KQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwg
TmV0d29ya0RhdGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZv
cm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJ
bmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTog
QmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAodW5z
aWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0
ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNr
SUQgPSAlbHU6IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50b1VJ
bnQ2NCgpLCBmcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwg
bnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAgICAg
IExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwg
W21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRG
OFN0cmluZyk7CiAjZW5kaWYKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJgogICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVs
ZXNzQ29va2llbGVzcyB8fCBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNob3Vs
ZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1h
dGlvbigpKQotICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9
ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhp
cywgbV9wYWdlSUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRp
Zmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIp
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNF
X0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29y
a0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZv
cm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMg
Y29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwg
bV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3Vs
ZEJsb2NrQ29va2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vzc2lv
biwgIiVsbHUgJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNrSWRl
bnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2lu
ZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBAIC0z
NzksNyArMzc5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3VsZEJs
b2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9z
ZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdv
cmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5m
b3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IE5v
dCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdl
SUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29y
a0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZv
cm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogTm90
IHBhcnRpdGlvbmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50
aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAg
ICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMg
Zm9yIHJlZGlyZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggZDVmOTgxZTQ1MzQuLmY4NjQ1NGRkYTQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC0zNCw5ICsz
NCw5IEBAIGNsYXNzIE1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lc3Nh
Z2VTZW5kZXIoKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBV
JiBtZXNzYWdlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBt
ZXNzYWdlLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCiAgICAgewot
ICAgICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
LCB7IH0pOworICAgICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9w
dGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTY1LDggKzY1LDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRpbWVv
dXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2Fn
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgorICAgIHZvaWQgc2VuZFdpdGhB
c3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAg
ICAgICBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1lc3NhZ2VTZW5kZXJEZXN0
aW5hdGlvbklEKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CmluZGV4IDUyNTE0OTAyYWJiLi41Yjk3NTMwMzA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysgYi9Tb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMDUsNiArMjA1LDcgQEAgZGVmIGZvcndhcmRfZGVj
bGFyYXRpb25zX2FuZF9oZWFkZXJzKHJlY2VpdmVyKToKICAgICAgICAgJ1N0cmluZycsCiAgICAg
ICAgICdXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6RmV0
Y2hJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlBhZ2VJZGVudGlmaWVyJywKICAgICAg
ICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCiAgICAgICAgICdXZWJDb3JlOjpQcm9jZXNzSWRlbnRp
ZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcicsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAKaW5kZXggYTZhMDA5OTU1MDAu
LmU2MDVhNDU5NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFn
ZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUu
Y3BwCkBAIC0zMSwxNyArMzEsMTcgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLVJlZjxQYWdlSGFu
ZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGUodWludDY0X3QgcGFnZUlEKQorUmVmPFBhZ2VIYW5kbGU+
IFBhZ2VIYW5kbGU6OmNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUhhbmRsZShwYWdlSUQsIGZhbHNlKSk7CiB9CiAK
LVJlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29udmVydGluZyh1aW50NjRf
dCBwYWdlSUQpCitSZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRlQXV0b2NvbnZlcnRp
bmcoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFBhZ2VIYW5kbGUocGFnZUlELCB0cnVlKSk7CiB9CiAKLVBhZ2VIYW5kbGU6OlBhZ2VI
YW5kbGUodWludDY0X3QgcGFnZUlELCBib29sIGlzQXV0b2NvbnZlcnRpbmcpCitQYWdlSGFuZGxl
OjpQYWdlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgYm9vbCBpc0F1dG9j
b252ZXJ0aW5nKQogICAgIDogbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV9pc0F1dG9jb252ZXJ0
aW5nKGlzQXV0b2NvbnZlcnRpbmcpCiB7CkBAIC01OSwxNSArNTksMTYgQEAgdm9pZCBQYWdlSGFu
ZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiBib29sIFBhZ2VIYW5k
bGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJlZlB0cjxPYmplY3Q+JiByZXN1bHQp
CiB7Ci0gICAgdWludDY0X3QgcGFnZUlEOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFnZUlE
KSkKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEOworICAgIGRl
Y29kZXIgPj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBib29sIGlzQXV0b2NvbnZlcnRpbmc7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShp
c0F1dG9jb252ZXJ0aW5nKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmVzdWx0ID0g
aXNBdXRvY29udmVydGluZyA/IGNyZWF0ZUF1dG9jb252ZXJ0aW5nKHBhZ2VJRCkgOiBjcmVhdGUo
cGFnZUlEKTsKKyAgICByZXN1bHQgPSBpc0F1dG9jb252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZl
cnRpbmcoKnBhZ2VJRCkgOiBjcmVhdGUoKnBhZ2VJRCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5oCmluZGV4IGYzMGZhZmJkYzMx
Li43ZDdhZGM2ODllNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBh
Z2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5o
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEFQSVBhZ2VIYW5kbGVfaAogCiAjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zOCwyMCArMzksMjAgQEAgbmFt
ZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFBhZ2VIYW5kbGUgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmpl
Y3Q6OlR5cGU6OlBhZ2VIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBhZ2VIYW5k
bGU+IGNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4g
Y3JlYXRlQXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPFBh
Z2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFJl
ZjxQYWdlSGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+UGFnZUhhbmRsZSgpOwogCi0gICAgdWludDY0X3QgcGFnZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIGJvb2wgaXNBdXRvY29udmVy
dGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvY29udmVydGluZzsgfQogCiAgICAgdm9pZCBl
bmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6
RGVjb2RlciYsIFJlZlB0cjxPYmplY3Q+Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGFn
ZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZyk7CisgICAgZXhw
bGljaXQgUGFnZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgYm9vbCBpc0F1dG9jb252
ZXJ0aW5nKTsKIAotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIGNvbnN0IGJvb2wgbV9pc0F1dG9jb252
ZXJ0aW5nOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1JlbW90ZU9iamVjdFJlZ2lzdHJ5Lm1tCmluZGV4IDFjYjllNmM3ZDQxLi5mZTViOTM4NzFlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJl
Z2lzdHJ5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmpl
Y3RSZWdpc3RyeS5tbQpAQCAtNDQsNyArNDQsNyBAQCBSZW1vdGVPYmplY3RSZWdpc3RyeTo6UmVt
b3RlT2JqZWN0UmVnaXN0cnkoX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkgKnJlbW90ZU9iamVjdAog
ICAgICwgbV9tZXNzYWdlU2VuZGVyKHBhZ2UpCiAgICAgLCBtX3Rha2VCYWNrZ3JvdW5kQWN0aXZp
dHlUb2tlbihbXSB7IHJldHVybiBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpOyB9KQogICAgICwgbV9pc1JlZ2lzdGVyZWRBc01lc3NhZ2VSZWNlaXZlcih0cnVlKQot
ICAgICwgbV9tZXNzYWdlUmVjZWl2ZXJJRChwYWdlLnBhZ2VJRCgpKQorICAgICwgbV9tZXNzYWdl
UmVjZWl2ZXJJRChwYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpCiB7CiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVPYmplY3RSZWdp
c3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX21lc3NhZ2VSZWNlaXZlcklELCAqdGhpcyk7
CiAgICAgcGFnZS5zZXRSZW1vdGVPYmplY3RSZWdpc3RyeSgqdGhpcyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUu
bW0KaW5kZXggNThjYjFkZDJiNWUuLjdlOTdmMTc2YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCkBA
IC0yOCw3ICsyOCw3IEBACiAKIEBpbXBsZW1lbnRhdGlvbiBXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZQogCi0tIChpZClfaW5pdFdpdGhQYWdlSUQ6KHVpbnQ2NF90KXBhZ2VJRAorLSAoaWQpX2luaXRX
aXRoUGFnZUlEOihXZWJDb3JlOjpQYWdlSWRlbnRpZmllcilwYWdlSUQKIHsKICAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQwLDcgKzQwLDcg
QEAgLSAoaWQpX2luaXRXaXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKIAogLSAoTlNVSW50ZWdl
ciloYXNoCiB7Ci0gICAgcmV0dXJuIF9wYWdlSUQ7CisgICAgcmV0dXJuIF9wYWdlSUQudG9VSW50
NjQoKTsKIH0KIAogLSAoQk9PTClpc0VxdWFsOihpZClvYmplY3QKQEAgLTUzLDcgKzUzLDcgQEAg
LSAoQk9PTClpc0VxdWFsOihpZClvYmplY3QKIAogLSAodm9pZCllbmNvZGVXaXRoQ29kZXI6KE5T
Q29kZXIgKiljb2RlcgogewotICAgIFtjb2RlciBlbmNvZGVJbnQ2NDpfcGFnZUlEIGZvcktleTpA
InBhZ2VJRCJdOworICAgIFtjb2RlciBlbmNvZGVJbnQ2NDpfcGFnZUlELnRvVUludDY0KCkgZm9y
S2V5OkAicGFnZUlEIl07CiB9CiAKIC0gKGlkKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIgKiljb2Rl
cgpAQCAtNjEsNyArNjEsNyBAQCAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIK
ICAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgIF9wYWdlSUQgPSBbY29kZXIgZGVjb2RlSW50NjRGb3JLZXk6QCJwYWdlSUQiXTsKKyAgICBf
cGFnZUlEID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXJUeXBl
PihbY29kZXIgZGVjb2RlSW50NjRGb3JLZXk6QCJwYWdlSUQiXSk7CiAKICAgICByZXR1cm4gc2Vs
ZjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dz
aW5nQ29udGV4dEhhbmRsZUludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29j
b2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oCmluZGV4IDJhOWU2NDYyODFhLi40
M2U0MWUyNGNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oCkBAIC0yNCwxMSAr
MjQsMTIgQEAKICAqLwogCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5oIgorI2lt
cG9ydCA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogCiBAaW50ZXJmYWNlIFdLQnJvd3NpbmdD
b250ZXh0SGFuZGxlICgpCiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVy
ID0gX3BhZ2VJRCkgdWludDY0X3QgcGFnZUlEOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBnZXR0ZXI9X3BhZ2VJRCkgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogCi0t
IChpZClfaW5pdFdpdGhQYWdlSUQ6KHVpbnQ2NF90KXBhZ2VJRDsKKy0gKGlkKV9pbml0V2l0aFBh
Z2VJRDooV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlEOwogCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5jcHAKaW5kZXggZWI4YTBiNjYxN2EuLmQ0ZTFjMjUwMDgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuY3BwCkBAIC02Niw3ICs2Niw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWlu
dDY0X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gKm1fZGVzdGluYXRpb25JRDsKKyAgICByZXR1cm4g
bV9kZXN0aW5hdGlvbklELT50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpjYW5NYWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiByZXBseSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmkKICAgICBw
bGF0Zm9ybU9wZW5QYXltZW50U2V0dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5h
dGluZ1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywg
Y29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1
ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmIChhdXRvJiBjb29yZGluYXRvciA9IGFjdGl2ZVBheW1lbnRDb29yZGluYXRvclBy
b3h5KCkpCiAgICAgICAgIGNvb3JkaW5hdG9yLT5kaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmgKaW5kZXggZDIzN2VhYjNkYWIuLjZlNGE4NWNmMmUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2
ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTE1LDcgKzExNiw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7CiAgICAgdm9pZCBjYW5NYWtlUGF5bWVudHNXaXRoQWN0aXZlQ2FyZChjb25zdCBT
dHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1lLCBQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBv
cGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIGRvbWFpbk5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAg
IHZvaWQgc2hvd1BheW1lbnRVSSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25J
RCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lk
IHNob3dQYXltZW50VUkoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZGVzdGluYXRpb25JRCwgUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uJik7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2Vs
ZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYpOwog
ICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8
V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYpOwpAQCAtMTQ3LDcgKzE0OCw3IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIENsaWVudCYgbV9jbGllbnQ7Ci0gICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IG1fZGVzdGluYXRpb25JRDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gbV9kZXN0aW5hdGlvbklEOwogCiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7CiAgICAgICAg
IC8vIElkbGUgLSBOb3RoaW5nJ3MgaGFwcGVuaW5nLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbgppbmRleCBkZDMxMzEyN2JmNC4uMWRlNGNkZGNlNGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zMCw3ICszMCw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IHsKICAgICBDYW5NYWtlUGF5bWVudHNXaXRo
QWN0aXZlQ2FyZChTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyLCBTdHJpbmcgZG9tYWluTmFtZSwg
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBjYW5NYWtlUGF5bWVudHMpIEFzeW5j
CiAgICAgT3BlblBheW1lbnRTZXR1cChTdHJpbmcgbWVyY2hhbnRJZGVudGlmaWVyLCBTdHJpbmcg
ZG9tYWluTmFtZSkgLT4gKGJvb2wgcmVzdWx0KSBBc3luYwogCi0gICAgU2hvd1BheW1lbnRVSSh1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBv
cmlnaW5hdGluZ1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdzLCBX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkgLT4g
KGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cworICAgIFNob3dQYXltZW50VUkoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJp
bmcgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5n
cywgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3Qp
IC0+IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKICAgICBDb21wbGV0ZU1lcmNoYW50VmFsaWRh
dGlvbihXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uIHBheW1lbnRNZXJjaGFudFNlc3Np
b24pCiAgICAgQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3Jl
OjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4gdXBkYXRlKQogICAgIENvbXBsZXRlU2hpcHBpbmdDb250
YWN0U2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4gdXBk
YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggNmViMzM1ZjA3ZDMuLjlkZWI3NmZm
MTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdWludDY0
X3QgQXV0aGVudGljYXRpb25NYW5hZ2VyOjphZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcChDaGFs
bGVuZ2UmJiBjaGFsbGVuZ2UKICAgICByZXR1cm4gY2hhbGxlbmdlSUQ7CiB9CiAKLWJvb2wgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlKSBjb25zdAorYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNob3VsZENvYWxl
c2NlQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQs
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0CiB7CiAgICAg
aWYgKCFjYW5Db2FsZXNjZUNoYWxsZW5nZShjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMDgsNyArMTA4LDcgQEAgVmVjdG9yPHVpbnQ2NF90PiBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmNvYWxlc2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWwKICAgICByZXR1
cm4gY2hhbGxlbmdlc1RvQ29hbGVzY2U7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChw
YWdlSUQpOwogICAgIEFTU0VSVChmcmFtZUlEKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVp
bnQ2NF90IHBhZ2VJRCwgdQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICB1aW50NjRfdCBkdW1teVBhZ2VJRCA9IDA7CisgICAgUGFnZUlkZW50aWZpZXIgZHVtbXlQ
YWdlSUQ7CiAgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5n
ZU1hcCh7IGR1bW15UGFnZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikgfSk7CiAgICAgCiAgICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0
aGUgc2FtZSBwcm90ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaAppbmRleCA3ZmUzOTllMGI3ZS4uODZlNzQ0YzEwOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9u
TWFuYWdlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NTdXBw
bGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTYwLDcgKzYx
LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHN1cHBsZW1lbnROYW1lKCk7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
KTsKIAogICAgIHZvaWQgY29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBj
aGFsbGVuZ2VJRCwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgV2ViQ29yZTo6
Q3JlZGVudGlhbCYmKTsKQEAgLTY5LDcgKzcwLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IHN0cnVjdCBDaGFsbGVuZ2UgewotICAgICAgICB1aW50NjRfdCBwYWdlSUQ7CisgICAgICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlOwogICAgICAgICBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciBjb21wbGV0aW9uSGFuZGxlcjsKICAgICB9OwpAQCAtODMsNyArODQsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKICAgICB1aW50NjRfdCBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1h
cChDaGFsbGVuZ2UmJik7Ci0gICAgYm9vbCBzaG91bGRDb2FsZXNjZUNoYWxsZW5nZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYpIGNvbnN0OworICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2Uo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYpIGNvbnN0OwogCiAgICAgVmVjdG9yPHVpbnQ2
NF90PiBjb2FsZXNjZUNoYWxsZW5nZXNNYXRjaGluZyh1aW50NjRfdCBjaGFsbGVuZ2VJRCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3Mu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaAppbmRleCAzMmIwYTQ3
NWRjMi4uMTkyNTNlMmJhYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGls
aWFyeVByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmgKQEAgLTYyLDYgKzYyLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklEKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmlu
Z1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOworICAgIAorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwg
SVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAgYWRkTWVzc2Fn
ZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwg
cmVjZWl2ZXIpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2
b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgeworICAg
ICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpKTsKKyAgICB9CiAKICAgICB2b2lkIHNldFByb2Nlc3NTdXBwcmVzc2lv
bkVuYWJsZWQoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJ
bnB1dENvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaApp
bmRleCA0Zjc1ZmQ4MDZmNi4uNTRkNDI3N2I4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1RleHRJbnB1dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0
SW5wdXRDb250ZXh0LmgKQEAgLTI5LDEzICsyOSwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9j
dW1lbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
SWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRleHRJbnB1dENv
bnRleHQgewogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CiAKLSAgICB1aW50
NjRfdCB3ZWJQYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJ
ZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVudGlm
aWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExp
c3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0u
Y3BwCmluZGV4IDlkYmIzNmE0NTUzLi5kOTAwYTE2NzMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAKQEAgLTM1LDEyICszNSwxMiBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmNyZWF0ZShCYWNrRm9y
d2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90IHBh
Z2VJRCkKK1JlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
OjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViQmFja0ZvcndhcmRMaXN0SXRlbShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSks
IHBhZ2VJRCkpOwogfQogCi1XZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZSwgdWludDY0X3QgcGFnZUlEKQorV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0Zvcndh
cmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKICAgICA6IG1faXRlbVN0YXRlKFdURk1vdmUo
YmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlKSkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKICAgICAs
IG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyKG1faXRlbVN0YXRlLmlkZW50aWZpZXIucHJvY2Vzc0lk
ZW50aWZpZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmgKaW5kZXggODcyZWYxODA5NWQuLmJhMzQ0ODBjZDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJTZXNzaW9uU3RhdGUuaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC00Niw3
ICs0Nyw3IEBAIGNsYXNzIFN1c3BlbmRlZFBhZ2VQcm94eTsKIAogY2xhc3MgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJh
Y2tGb3J3YXJkTGlzdEl0ZW0+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0+IGNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgdWludDY0X3Qg
cGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IGNyZWF0ZShC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAg
IHZpcnR1YWwgfldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oKTsKIAogICAgIHN0YXRpYyBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKiBpdGVtRm9ySUQoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciYpOwpAQCAtNTQsNyArNTUsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBXZWJD
b3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQoKSBjb25zdCB7IHJldHVybiBt
X2l0ZW1TdGF0ZS5pZGVudGlmaWVyOyB9CiAgICAgY29uc3QgQmFja0ZvcndhcmRMaXN0SXRlbVN0
YXRlJiBpdGVtU3RhdGUoKSB7IHJldHVybiBtX2l0ZW1TdGF0ZTsgfQotICAgIHVpbnQ2NF90IHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KIAogICAgIFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIGxhc3RQcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJu
IG1fbGFzdFByb2Nlc3NJZGVudGlmaWVyOyB9CiAgICAgdm9pZCBzZXRMYXN0UHJvY2Vzc0lkZW50
aWZpZXIoY29uc3QgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgbV9s
YXN0UHJvY2Vzc0lkZW50aWZpZXIgPSBpZGVudGlmaWVyOyB9CkBAIC04MSwxMiArODIsMTIgQEAg
cHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgdWludDY0X3QgcGFnZUlEKTsKKyAg
ICBleHBsaWNpdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0
ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIHJlbW92ZVN1c3BlbmRl
ZFBhZ2VGcm9tUHJvY2Vzc1Bvb2woKTsKIAogICAgIEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSBt
X2l0ZW1TdGF0ZTsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBtX3BhZ2VJRDsKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBtX2xhc3RQ
cm9jZXNzSWRlbnRpZmllcjsKICAgICBXZWFrUHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4gbV9zdXNw
ZW5kZWRQYWdlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZTlkYTYwYWVlYmUuLjBjYmZkMDM0NmFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApA
QCAtMzkyLDcgKzM5Miw3IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29sb3IgPSBXVEZNb3Zl
KCpiYWNrZ3JvdW5kQ29sb3IpOwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8dWludDY0X3Q+PiBv
bGRQYWdlSUQ7CisgICAgT3B0aW9uYWw8T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBvbGRQYWdl
SUQ7CiAgICAgZGVjb2RlciA+PiBvbGRQYWdlSUQ7CiAgICAgaWYgKCFvbGRQYWdlSUQpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggYzJiZTg0MTQ2YjMuLjkwMTI3YmMzMTAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUHJv
ZHVjZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QYWdpbmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oPgpAQCAtMjAy
LDcgKzIwMyw3IEBAIHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIE9w
dGlvbmFsPFdlYkNvcmU6OkNvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gb2xkUGFnZUlEOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBvbGRQYWdlSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCmluZGV4IGM2NTQ4NGY1NTEyLi43MTFhMjYx
OTg3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFw
aC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCkBA
IC0zMDIsNyArMzAyLDcgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29k
ZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYWdlSUQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJl
c3VsdCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRo
UGFnZUlEOnBhZ2VJRF0pOworICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0Nv
bnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDptYWtlT2JqZWN0SWRlbnRpZmllcjxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllclR5cGU+KHBhZ2VJRCldKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAppbmRleCBlZDg2
MzU4MjAxYi4uNTk3MDFhMTM0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmNwcApAQCAtMTIwNiw3ICsxMjA2LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VMb2FkZXJDbGllbnRCYXNlKgogICAg
ICAgICBtaWxlc3RvbmVzLmFkZChXZWJDb3JlOjpEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXQpOwogCiAgICAgaWYgKG1pbGVzdG9uZXMpCi0gICAgICAgIHdlYlBhZ2VQcm94eS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMobWls
ZXN0b25lcyksIHdlYlBhZ2VQcm94eS0+cGFnZUlEKCkpOworICAgICAgICB3ZWJQYWdlUHJveHkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0
b25lcykpOwogCiAgICAgd2ViUGFnZVByb3h5LT5zZXRMb2FkZXJDbGllbnQoV1RGTW92ZShsb2Fk
ZXJDbGllbnQpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKaW5kZXggMTA3NTc4MWFmMmMuLjJm
OWNmZTk0MjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNTQsNiArNTQsNyBAQAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKIAogU3RyaW5nIEF1dG9tYXRpb25Db21tYW5kRXJyb3I6OnRvUHJvdG9j
b2xTdHJpbmcoKQogewpAQCAtNTIyLDcgKzUyMyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OndhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uRnJhbWUoV2ViRnJhbWVQcm94eSYgZnJh
CiAgICAgfQogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNwb25kVG9QZW5kaW5n
UGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mIG1hcCkKK3Zv
aWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNh
bGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0
b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQogewogICAgIEluc3Bl
Y3Rvcjo6RXJyb3JTdHJpbmcgdGltZW91dEVycm9yID0gU1RSSU5HX0ZPUl9QUkVERUZJTkVEX0VS
Uk9SX05BTUUoVGltZW91dCk7CiAgICAgZm9yIChhdXRvIGlkIDogY29weVRvVmVjdG9yKG1hcC5r
ZXlzKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggNjVlYjNlNDZlNWIuLmYzOWMwNjFiNTc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2hhcmVh
YmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgiCiAjaW5j
bHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFnZShXZWJQYWdlUHJv
eHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5LCBT
ZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPiYm
KTsKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uRnJhbWUoV2ViRnJhbWVQ
cm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3ks
IFNlY29uZHMsIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+
JiYpOwotICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0
aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CisgICAgdm9pZCByZXNwb25kVG9QZW5kaW5nUGFnZU5h
dmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4m
KTsKICAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdGcmFtZU5hdmlnYXRpb25DYWxsYmFja3NXaXRo
VGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mKTsKICAgICB2b2lkIGxvYWRUaW1lckZpcmVkKCk7CiAKQEAg
LTI4MCwyMiArMjgxLDIyIEBAIHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlv
bkJhY2tlbmREaXNwYXRjaGVyPiBtX2RvbWFpbkRpc3BhdGNoZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5Ob3Rp
ZmllcjsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFw
OwotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJQYWdlTWFwOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxl
TWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbV9oYW5k
bGVXZWJQYWdlTWFwOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYkZyYW1l
SGFuZGxlTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJGcmFt
ZU1hcDsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93
c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdF
YWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFz
aE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dz
aW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZT4+IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3Np
bmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0Vh
Z2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7
CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5U
RVJBQ1RJT05TKQotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5j
dGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ01v
dXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKIAogICAgIHVpbnQ2NF90
IG1fbmV4dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQgeyAxIH07CkBAIC0zMTksNyArMzIw
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIgQVBJcyB0YWtl
IGEgc2V0IG9mIGlucHV0IHNvdXJjZXMuIFdlIGFsc28gaW50ZXJuIHRoZXNlCiAgICAgLy8gc28g
dGhhdCBwcmV2aW91cyBpbnB1dCBzb3VyY2Ugc3RhdGUgaXMgdXNlZCBhcyBpbml0aWFsIHN0YXRl
IGZvciBsYXRlciBjb21tYW5kcy4KICAgICBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJj
ZT4+IG1faW5wdXRTb3VyY2VzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI+PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1f
aW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZ
Qk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIEtlZXAgdHJhY2sgb2YgY3VycmVudGx5IGFjdGl2
ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9rZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDk4OTNkMzk4YjU3Li44
NThhNWJlZDZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmgKQEAgLTY3LDYgKzY3LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3Nh
Z2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwogICAgIHZvaWQgcmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIAorICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4g
ZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsKKyAg
ICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9u
SUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9u
SUQpCisgICAgeworICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVy
TmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKKyAgICB9CiAKICAgICBlbnVtIGNsYXNz
IFN0YXRlIHsKICAgICAgICAgTGF1bmNoaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCmluZGV4
IGYwNWQ3OWMwZDAxLi42NzA2NTk3Njg2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpAQCAt
NTI3LDk0ICs1MjcsOTQgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmhhbmRs
ZUNvbnRyb2xsZWRFbGVtZW50SURSZXNwb25zZSh1aW50NjRfdCBjb24KIAogdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OnBsYXkodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGxheShjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpwYXVzZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQYXVzZShjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGxheVN0YXRlKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRv
Z2dsZVBsYXlTdGF0ZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBsYXlTdGF0ZShj
b250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2lu
U2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2NydWJiaW5nKGNvbnRleHRJZCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjplbmRTY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5k
U2NydWJiaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2NydWJiaW5nKGNvbnRleHRJ
ZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2Vla1RvVGltZSh1
aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lLCBkb3VibGUgdG9sZXJhbmNlQmVmb3JlLCBk
b3VibGUgdG9sZXJhbmNlQWZ0ZXIpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwgdGltZSwgdG9sZXJhbmNl
QmVmb3JlLCB0b2xlcmFuY2VBZnRlciksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2Vla1RvVGltZShjb250ZXh0
SWQsIHRpbWUsIHRvbGVyYW5jZUJlZm9yZSwgdG9sZXJhbmNlQWZ0ZXIpKTsKIH0KIAogdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmZhc3RTZWVrKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIHRpbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpGYXN0U2Vlayhjb250ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkZhc3RT
ZWVrKGNvbnRleHRJZCwgdGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6YmVnaW5TY2FubmluZ0ZvcndhcmQodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2Fubmlu
Z0ZvcndhcmQoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nRm9yd2FyZChj
b250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2lu
U2Nhbm5pbmdCYWNrd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nQmFja3dhcmQo
Y29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nQmFja3dhcmQoY29udGV4dElk
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjplbmRTY2FubmluZyh1
aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpFbmRTY2FubmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVu
ZFNjYW5uaW5nKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6c2VsZWN0QXVkaW9NZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90
IGluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6U2VsZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpTZWxlY3RBdWRpb01lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpKTsKIH0KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlbGVjdExlZ2libGVNZWRpYU9wdGlvbih1
aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IGluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRpYU9wdGlv
bihjb250ZXh0SWQsIGluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5Ojp0b2dnbGVQaWN0dXJlSW5QaWN0dXJlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1
cmVJblBpY3R1cmUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQaWN0dXJlSW5QaWN0
dXJlKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
dG9nZ2xlTXV0ZWQodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlTXV0ZWQoY29udGV4dElkKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnNldE11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBtdXRl
ZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlNldE11dGVkKGNvbnRleHRJZCwgbXV0ZWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldE11dGVkKGNvbnRl
eHRJZCwgbXV0ZWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNl
dFZvbHVtZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB2b2x1bWUpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRWb2x1bWUoY29udGV4
dElkLCB2b2x1bWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0SWQsIHZvbHVtZSkp
OwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0UGxheWluZ09uU2Vj
b25kU2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKIHsKICAgICBpZiAobV9w
YWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OlNldFBsYXlpbmdPblNlY29uZFNjcmVlbihjb250ZXh0SWQsIHZhbHVlKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6U2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKGNvbnRleHRJZCwgdmFsdWUpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJlcXVlc3RDb250cm9sbGVkRWxl
bWVudElEKCkKIHsKICAgICBpZiAobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpCi0gICAgICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6SGFuZGxlQ29u
dHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdChtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCkpOwogfQogCiBQbGF0Zm9ybVBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZSogUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpjb250cm9sc01hbmFnZXJJbnRlcmZhY2Uo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmluZGV4IDZiYTQ3OWUwNjBhLi5jOGQ2NWMzNjJhYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtNjIwLDQzICs2MjAsNDMgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbih1aW50NjRf
dCBjb250ZXh0SWQpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0
RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRp
YSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlh
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29udGV4dElkLCBtb2RlLCBm
aW5pc2hlZFdpdGhNZWRpYSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFVwZGF0
ZUlubGluZVJlY3QoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5saW5l
UmVjdChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VmlkZW9D
b250ZW50TGF5ZXIoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VmlkZW9Db250ZW50
TGF5ZXIoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXR1cm5WaWRlb0Nv
bnRlbnRMYXllcihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVudExh
eWVyKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZFNldHVwRnVsbHNjcmVlbihj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZFNldHVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFeGl0RnVsbHNjcmVl
bih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpXaWxsRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0
SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpEaWRFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxs
c2NyZWVuKGNvbnRleHRJZCkpOwogICAgIG1fcGFnZS0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKIH0K
IAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgbV9wYWdlLT5kaWRFbnRl
ckZ1bGxzY3JlZW4oKTsKIH0KIApAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwogICAgIFttb2RlbC0+bGF5ZXJIb3N0Vmlldygp
IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxw
dHIpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
RGlkQ2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRDbGVhbnVw
RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKIAogICAgIGludGVyZmFjZS0+c2V0TW9kZShIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICByZW1vdmVDbGll
bnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CkBAIC02ODgsMjUgKzY4OCwyNSBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckZyYW1lKHVpbnQ2NF90IGNvbnRl
eHRJZCwgV2ViQ29yZQogICAgICAgICBtYWNoX3BvcnRfbmFtZV90IGZlbmNlUG9ydCA9IGZlbmNl
U2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKTsKICNlbmRpZgogCi0gICAgICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVu
Y2VkKGNvbnRleHRJZCwgZnJhbWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNH
X1RZUEVfTU9WRV9TRU5EKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJGcmFtZUZl
bmNlZChjb250ZXh0SWQsIGZyYW1lLCBJUEM6OkF0dGFjaG1lbnQoZmVuY2VQb3J0LCBNQUNIX01T
R19UWVBFX01PVkVfU0VORCkpKTsKICAgICB9CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpzZXRWaWRlb0xheWVyR3Jhdml0eSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckdy
YXZpdHlFbnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNl
dFZpZGVvTGF5ZXJHcmF2aXR5RW51bShjb250ZXh0SWQsICh1bnNpZ25lZClncmF2aXR5KSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTW9kZUNoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBtX3BhZ2UtPnVpQ2xpZW50KCkuaGFzVmlk
ZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UobV9wYWdlLCBtb2RlICYgTWVkaWFQbGF5ZXJF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOwotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1vZGVDaGFu
Z2VkKGNvbnRleHRJZCwgbW9kZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KGNvbnRleHRJZCwgbW9kZSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAg
ICBib29sIGlzVmlld1Zpc2libGUgPSBtX3BhZ2UtPmlzVmlld1Zpc2libGUoKTsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIGlzVmlld1Zpc2libGUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1
bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIGlzVmlld1Zpc2libGUpKTsKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
YWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQ
cm94eUNvY29hLm1tCmluZGV4IGY5MTQ2ODExYzU1Li5mYzNlZmJlMjZiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTIw
Miw3ICsyMDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBB
dExvY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihwb2ludCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlvbmFy
eUxvb2t1cEF0TG9jYXRpb24ocG9pbnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZv
cm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCkKQEAgLTIxMCw3ICsyMTAsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxl
Y3Rpb24oKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlv
bmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24o
KSk7CiB9CiAgICAgCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKQEAgLTI2NiwxNyArMjY2LDE3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXN1bWVTcGVha2luZyhXZWJDb3JlOjpQbGF0Zm9ybVNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzcGVha2luZ0Vy
cm9yT2NjdXJyZWQoV2ViQ29yZTo6UGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UmKQog
ewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTcGVha2luZ0Vycm9yT2Nj
dXJyZWQoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNwZWFraW5n
RXJyb3JPY2N1cnJlZCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmJvdW5kYXJ5RXZlbnRP
Y2N1cnJlZChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYsIFdlYkNv
cmU6OlNwZWVjaEJvdW5kYXJ5IHNwZWVjaEJvdW5kYXJ5LCB1bnNpZ25lZCBjaGFySW5kZXgpCiB7
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJvdW5kYXJ5RXZlbnRPY2N1
cnJlZChzcGVlY2hCb3VuZGFyeSA9PSBXZWJDb3JlOjpTcGVlY2hCb3VuZGFyeTo6U3BlZWNoV29y
ZEJvdW5kYXJ5LCBjaGFySW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Qm91bmRhcnlFdmVudE9jY3VycmVkKHNwZWVjaEJvdW5kYXJ5ID09IFdlYkNvcmU6OlNw
ZWVjaEJvdW5kYXJ5OjpTcGVlY2hXb3JkQm91bmRhcnksIGNoYXJJbmRleCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6dm9pY2VzRGlkQ2hhbmdlKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Vm9pY2VzRGlkQ2hhbmdlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpWb2ljZXNEaWRDaGFuZ2UoKSk7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKFNQRUVDSF9TWU5USEVTSVMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0KaW5kZXggMmFhNzQ4ZjAwNGYuLjA4YTNkMzA4ZDNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMTk5NywxMyArMTk5
NywxMyBAQCBmbG9hdCBXZWJWaWV3SW1wbDo6aW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoKSBj
b25zdAogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9mZlNjcmVlbigpCiB7Ci0g
ICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dE
aWRPcmRlck9mZlNjcmVlbiIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rp
dml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZT
Y3JlZW4iLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+
YWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CiB9CiAKIHZvaWQg
V2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT25TY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0
eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPblNjcmVl
biIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2Vi
Vmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPblNjcmVlbiIsIHRoaXMsIG1f
cGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlk
Q2hhbmdlKHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9KTsKIH0KIApAQCAtMjA3MSw3ICsyMDcxLDcgQEAg
dm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkQ2hhbmdlTGF5ZXJIb3N0aW5nKCkKIAogdm9pZCBX
ZWJWaWV3SW1wbDo6d2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUoKQogewotICAgIExPRyhB
Y3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdl
T2NjbHVzaW9uU3RhdGUiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZp
dHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZENoYW5nZU9jY2x1
c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3Bh
Z2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlKTsKIH0KIApAQCAtMjIzNCwxOSArMjIzNCwxOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3
RGlkQ2hhbmdlQmFja2luZ1Byb3BlcnRpZXMoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjp2aWV3RGlk
SGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAl
bGx1KSB2aWV3RGlkSGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rp
dml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlz
LCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0
ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCiB2b2lk
IFdlYlZpZXdJbXBsOjp2aWV3RGlkVW5oaWRlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwg
IldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRVbmhpZGUiLCB0aGlzLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdl
ICVsbHUpIHZpZXdEaWRVbmhpZGUiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkp
OwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0
YXRlOjpJc1Zpc2libGUpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjphY3RpdmVTcGFjZURpZENo
YW5nZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAl
bGx1KSBhY3RpdmVTcGFjZURpZENoYW5nZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgYWN0aXZlU3Bh
Y2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1f
cGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHku
Y3BwCmluZGV4IGI1YjRlMGFkMjIxLi5lY2Y1ZGEwYTkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBEcmF3aW5n
QXJlYVByb3h5OjpEcmF3aW5nQXJlYVByb3h5KERyYXdpbmdBcmVhVHlwZSB0eXBlLCBXZWJQYWdl
UHJveHkmIHdlYlBhZ2VQcgogICAgICwgbV92aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXIoUnVu
TG9vcDo6bWFpbigpLCB0aGlzLCAmRHJhd2luZ0FyZWFQcm94eTo6dmlld0V4cG9zZWRSZWN0Q2hh
bmdlZFRpbWVyRmlyZWQpCiAjZW5kaWYKIHsKLSAgICBwcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lk
ZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
aWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBEcmF3aW5nQXJlYVByb3h5Ojp+RHJhd2luZ0FyZWFQ
cm94eSgpCiB7Ci0gICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
RHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
RHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIpOwog
fQogCiBib29sIERyYXdpbmdBcmVhUHJveHk6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwg
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IGNhNzY4N2Y2YjUyLi5iOTMwMTI4NTk4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNlaXZlR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uRGUKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQot
ICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZUdl
b2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKGdlb2xvY2F0aW9uSUQsIGFsbG93ZWQpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNl
aXZlR2VvbG9jYXRpb25QZXJtaXNzaW9uRGVjaXNpb24oZ2VvbG9jYXRpb25JRCwgYWxsb3dlZCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oYWxsb3dlZCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNwcAppbmRleCA2MmIwNzI5
ZjhhNS4uMGY0MTAyMGVhNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3RvclRhcmdldFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3JUYXJnZXRQcm94eS5jcHAKQEAgLTUwLDE5ICs1MCwxOSBAQCBJbnNwZWN0b3JUYXJnZXRQ
cm94eTo6SW5zcGVjdG9yVGFyZ2V0UHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBjb25zdCBTdHJp
bmcmIHRhcgogdm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6Y29ubmVjdChJbnNwZWN0b3I6OkZy
b250ZW5kQ2hhbm5lbCYgY2hhbm5lbCkKIHsKICAgICBpZiAobV9wYWdlLmhhc1J1bm5pbmdQcm9j
ZXNzKCkpCi0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q29ubmVjdEluc3BlY3RvcihpZGVudGlmaWVyKCksIGNoYW5uZWwuY29ubmVjdGlvblR5cGUoKSks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb25uZWN0SW5zcGVjdG9yKGlkZW50aWZpZXIoKSwgY2hhbm5lbC5jb25uZWN0aW9uVHlwZSgp
KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OmRpc2Nvbm5lY3QoSW5zcGVjdG9y
OjpGcm9udGVuZENoYW5uZWwmKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKLSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaXNj
b25uZWN0SW5zcGVjdG9yKGlkZW50aWZpZXIoKSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaXNjb25uZWN0SW5zcGVjdG9yKGlkZW50
aWZpZXIoKSkpOwogfQogCiB2b2lkIEluc3BlY3RvclRhcmdldFByb3h5OjpzZW5kTWVzc2FnZVRv
VGFyZ2V0QmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKG1fcGFnZS5o
YXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVz
c2FnZSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZW5kTWVzc2FnZVRvVGFyZ2V0QmFja2VuZChpZGVudGlmaWVyKCksIG1lc3NhZ2Up
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNDQzYjM4
NWZhYy4uMmQ5OTY2ZTNjODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MoY29uc3QgSVBDOjpBdHRhCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNvcmVD
aGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNv
cmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogewogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG1fcHJv
Y2Vzc1Bvb2wuc2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQocGFnZUlEKSkgewpA
QCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1
bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29uCiAjZW5kaWYKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJv
Y2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVs
bC1jaGVjayBiZWNhdXNlIGJ5IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwg
dGhlIHBhZ2UgbWF5IGJlIGdvbmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApA
QCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3Rp
Y01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lCiAgICAgcGFnZS0+bG9n
RGlhZ25vc3RpY01lc3NhZ2UobWVzc2FnZSwgZGVzY3JpcHRpb24sIHNob3VsZFNhbXBsZSk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVz
dWx0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91
bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFJlc3VsdChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
Y29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91
bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51
bGwtY2hlY2sgYmVjYXVzZSBieSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUs
IHRoZSBwYWdlIG1heSBiZSBnb25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywK
QEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0CiAgICAgcGFnZS0+bG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1bHQs
IHNob3VsZFNhbXBsZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25v
c3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2ln
bmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdl
SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBw
YWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdl
IGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBs
b2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdvbmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBh
dm9pZCB0aGlzLApAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzCiAg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0R3JhbmRm
YXRoZXJlZChzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBpc0dyYW5kZmF0aGVyZWQpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzQ29uZmlybShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtOTA4
LDcgKzkwOCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bm90aWZ5UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkCiAgICAgV2ViUHJvY2Vzc1Byb3h5
Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6RGljdGlvbmFyeTo6
Y3JlYXRlKG1lc3NhZ2VCb2R5KS5wdHIoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFj
YW5TZW5kTWVzc2FnZSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CmluZGV4IDIwYTc5OThjNGRjLi4yYmVjNjhmZDg5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTgxLDggKzgx
LDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0
X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVp
bnQ2NF90OwogCiAgICAgZXhwbGljaXQgTmV0d29ya1Byb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9v
bCYpOwpAQCAtMTMxLDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFByZXZhbGVudFJl
c291cmNlRm9yRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NF
bnRyaWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+IGRvbWFpbnMpPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShQ
YWdlSUQsIEZyYW1lSUQsIGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzQ29uZmlybShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnJhbWVJRCwgY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFs
dWVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25J
RCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3Rh
dGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTE0NSw3ICsxNDMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKFBB
TDo6U2Vzc2lvbklELCBib29sIGRlYnVnTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNS
ZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgcmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6
OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGNvbW1p
dHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IE5hdmlnYXRlZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIFBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0
ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IE5hdmlnYXRlZEZy
b21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRl
TG9hZFdpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IE5h
dmlnYXRlZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTIwNywxMyArMjA1LDEzIEBAIHByaXZh
dGU6CiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQ
cm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAg
IHZvaWQgZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgSVBDOjpB
dHRhY2htZW50Jik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYmLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CisgICAgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNo
YWxsZW5nZUlEKTsKICAgICB2b2lkIGRpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJh
Y2tJRCwgY29uc3QgV2Vic2l0ZURhdGEmKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRh
KHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JP
cmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3Nh
Z2UodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9z
dGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJD
b3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFs
dWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZp
Z3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dHbG9iYWxEaWFnbm9z
dGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGJlOThlNjY2MzBm
Li4yMmZmZmQxOTg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNyAr
MjMsNyBAQAogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgRGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoSVBDOjpBdHRhY2ht
ZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogCi0gICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKKyAg
ICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogCiAgICAgRGlkRmV0Y2hXZWJz
aXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YSB3
ZWJzaXRlRGF0YSkKICAgICBEaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lE
KQpAQCAtMzUsOSArMzUsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2Fj
eVJlY2VpdmVyIHsKICAgICBTZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xv
Y2tlZEZpbGVzKQogCiAgICAgIyBEaWFnbm9zdGljIG1lc3NhZ2VzIGxvZ2dpbmcKLSAgICBMb2dE
aWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcg
ZGVzY3JpcHRpb24sIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxl
KQotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQsIFN0
cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAgTG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5n
IGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywg
ZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAgTG9nRGlh
Z25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdHJpbmcgbWVz
c2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKKyAgICBMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0
aW9uLCB1aW50MzJfdCByZXN1bHQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hv
dWxkU2FtcGxlKQorICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJD
b3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogICAgIExvZ0dsb2JhbERpYWdub3N0aWNN
ZXNzYWdlV2l0aFZhbHVlKFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJs
ZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCkBAIC00Niw3ICs0Niw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJv
eHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIE5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVn
aXN0cmFibGVEb21haW5zRmluaXNoZWQoKQogICAgIE5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5z
aWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25l
ZCB0b3AzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucykKLSAgICBSZXF1ZXN0U3RvcmFnZUFj
Y2Vzc0NvbmZpcm0odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gdG9wRnJhbWVEb21haW4pIC0+IChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgQXN5bmMKKyAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4pIC0+IChi
b29sIHVzZXJEaWRHcmFudEFjY2VzcykgQXN5bmMKICAgICBEZWxldGVXZWJzaXRlRGF0YUluVUlQ
cm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0
aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJL
aXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgVmVjdG9yPFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSAtPiAoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4gZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKSBBc3luYwogI2VuZGlm
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggZjg3NjFi
MWYzZjQuLjNmMjg3MzJhYjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBSZWY8
Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlclByb3h5OjpjcgogewogICAgIGF1dG8gcmVxdWVzdCA9IE5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0OjpjcmVhdGUoW3RoaXMsIG5vdGlmaWNhdGlvbklELCBwYWdlID0gbWFr
ZVJlZihtX3BhZ2UpXShib29sIGFsbG93ZWQpIHsKICAgICAgICAgbV9wZW5kaW5nUmVxdWVzdHMu
dGFrZShub3RpZmljYXRpb25JRCk7Ci0gICAgICAgIHBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKG5v
dGlmaWNhdGlvbklELCBhbGxvd2VkKSwgcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBwYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRl
Y2lzaW9uKG5vdGlmaWNhdGlvbklELCBhbGxvd2VkKSk7CiAgICAgfSk7CiAgICAgbV9wZW5kaW5n
UmVxdWVzdHMuYWRkKG5vdGlmaWNhdGlvbklELCByZXF1ZXN0LnB0cigpKTsKICAgICByZXR1cm4g
cmVxdWVzdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCBm
YWUxZjNmY2E4OC4uMmFhZmYxZWMyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRpdGwKIHsK
ICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmljYXRpb25JRCA9IGdlbmVyYXRlR2xvYmFsTm90aWZp
Y2F0aW9uSUQoKTsKICAgICBhdXRvIG5vdGlmaWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3Jl
YXRlKHRpdGxlLCBib2R5LCBpY29uVVJMLCB0YWcsIGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBn
bG9iYWxOb3RpZmljYXRpb25JRCk7Ci0gICAgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4g
bm90aWZpY2F0aW9uSURQYWlyID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZS0+cGFnZUlEKCksIHBh
Z2VOb3RpZmljYXRpb25JRCk7CisgICAgc3RkOjpwYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRf
dD4gbm90aWZpY2F0aW9uSURQYWlyID0gc3RkOjptYWtlX3BhaXIod2ViUGFnZS0+cGFnZUlEKCks
IHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAgbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KGds
b2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb25JRFBhaXIpOwogICAgIG1fbm90aWZpY2F0
aW9ucy5zZXQobm90aWZpY2F0aW9uSURQYWlyLCBzdGQ6Om1ha2VfcGFpcihnbG9iYWxOb3RpZmlj
YXRpb25JRCwgbm90aWZpY2F0aW9uLmNvcHlSZWYoKSkpOwogICAgIG1fcHJvdmlkZXItPnNob3co
KndlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQoKSk7CkBAIC0xMTksMTIgKzExOSwxMiBAQCB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQ
YWdlUHJveHkqIHdlYlBhZ2UsCiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBwYWdlSURzTWF0Y2go
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3Qg
VmVjdG9yPHVpbnQ2NF90PiYpCitzdGF0aWMgYm9vbCBwYWdlSURzTWF0Y2goUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCwgUGFnZUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3Qg
VmVjdG9yPHVpbnQ2NF90PiYpCiB7CiAgICAgcmV0dXJuIHBhZ2VJRCA9PSBkZXNpcmVkUGFnZUlE
OwogfQogCi1zdGF0aWMgYm9vbCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2godWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIHVpbnQ2NF90IGRlc2lyZWRQYWdl
SUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQor
c3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBQYWdlSWRlbnRpZmllciBkZXNpcmVk
UGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklE
cykKIHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQgJiYgZGVzaXJlZFBhZ2VO
b3RpZmljYXRpb25JRHMuY29udGFpbnMocGFnZU5vdGlmaWNhdGlvbklEKTsKIH0KQEAgLTE0MSwx
MyArMTQxLDEzIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlm
aWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zCiAKIHZvaWQgV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdl
LCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRp
b25GaWx0ZXJGdW5jdGlvbiBmaWx0ZXJGdW5jdGlvbikKIHsKLSAgICB1aW50NjRfdCB0YXJnZXRQ
YWdlSUQgPSB3ZWJQYWdlLT5wYWdlSUQoKTsKKyAgICBhdXRvIHRhcmdldFBhZ2VJRCA9IHdlYlBh
Z2UtPnBhZ2VJRCgpOwogCiAgICAgVmVjdG9yPHVpbnQ2NF90PiBnbG9iYWxOb3RpZmljYXRpb25J
RHM7CiAgICAgZ2xvYmFsTm90aWZpY2F0aW9uSURzLnJlc2VydmVDYXBhY2l0eShtX2dsb2JhbE5v
dGlmaWNhdGlvbk1hcC5zaXplKCkpOwogCiAgICAgZm9yIChhdXRvIGl0ID0gbV9ub3RpZmljYXRp
b25zLmJlZ2luKCksIGVuZCA9IG1fbm90aWZpY2F0aW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KSB7Ci0gICAgICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCA9IGl0LT5rZXkuZmlyc3Q7CisgICAgICAg
IGF1dG8gd2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKICAgICAgICAgdWludDY0X3QgcGFnZU5v
dGlmaWNhdGlvbklEID0gaXQtPmtleS5zZWNvbmQ7CiAgICAgICAgIGlmICghZmlsdGVyRnVuY3Rp
b24od2ViUGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSUQsIHRhcmdldFBhZ2VJRCwgcGFnZU5vdGlm
aWNhdGlvbklEcykpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2
b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0
aW9uKHVpbnQ2NF90IGdsb2JhbE5vdAogICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlv
bk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdWludDY0X3Qgd2ViUGFnZUlEID0g
aXQtPnZhbHVlLmZpcnN0OworICAgIGF1dG8gd2ViUGFnZUlEID0gaXQtPnZhbHVlLmZpcnN0Owog
ICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh3ZWJQ
YWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg1LDcgKzE4
NSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNr
Tm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vCiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90
aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgdWludDY0X3Qg
d2ViUGFnZUlEID0gaXQtPnZhbHVlLmZpcnN0OworICAgIGF1dG8gd2ViUGFnZUlEID0gaXQtPnZh
bHVlLmZpcnN0OwogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZSh3ZWJQYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKaW5kZXggZjcyN2VkNDcyYzUuLmU3
OGRhYmE2ZmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTc4
LDcgKzc4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKk5v
dGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VO
b3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOworICAgIHR5cGVkZWYgYm9vbCAoKk5v
dGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZGVz
aXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRp
b25JRHMpOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0
IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRl
ckZ1bmN0aW9uKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CkBAIC04OCw5ICs4OCw5
IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92
aWRlcj4gbV9wcm92aWRlcjsKICAgICAvLyBQYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBh
bmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElECi0gICAgSGFzaE1hcDx1aW50NjRf
dCwgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFw
OworICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgdWludDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKICAgICAvLyBLZXkgcGFpciBj
b21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlv
biBJRDsgdmFsdWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5k
IG5vdGlmaWNhdGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50NjRfdCwgdWlu
dDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9u
b3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlv
bj4+PiBtX25vdGlmaWNhdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA0
NWExZjBmNWI1Yy4uNTE4ODkzYjA4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiAjZGVmaW5lIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5p
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdl
UHJveHk6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRiht
X3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFByb3Zpc2lv
bmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIApAQCAtNjEsNyArNjMs
NyBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVBy
b3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1BybwogICAgICwgbV9zdXNwZW5zaW9uVG9rZW4obV9w
cm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKQogI2VuZGlmCiB7
Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJQcm92
aXNpb25hbFBhZ2VQcm94eTogcGFnZUlEID0gJSIgUFJJdTY0ICIgbmF2aWdhdGlvbklEID0gJSIg
UFJJdTY0ICIgc3VzcGVuZGVkUGFnZTogJXAiLCBtX3BhZ2UucGFnZUlEKCksIG5hdmlnYXRpb25J
RCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJQcm92aXNpb25hbFBhZ2VQcm94eTogcGFnZUlEID0gJSIgUFJJ
dTY0ICIgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0ICIgc3VzcGVuZGVkUGFnZTogJXAiLCBtX3Bh
Z2UucGFnZUlEKCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdldCgp
KTsKIAogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CiAg
ICAgbV9wcm9jZXNzLT5hZGRQcm92aXNpb25hbFBhZ2VQcm94eSgqdGhpcyk7CkBAIC0xMDAsNyAr
MTAyLDcgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6On5Qcm92aXNpb25hbFBhZ2VQcm94eSgpCiAg
ICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKG1fcGFnZS5wYWdlSUQoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOwogCiAg
ICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92
ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKG1fcGFnZS52aXNpdGVkTGlua1N0b3JlKCksIG1fcGFnZS5w
YWdlSUQoKSk7CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb2Nlc3MgPSBtX3By
b2Nlc3MuY29weVJlZigpXSB7CkBAIC0xMTcsNyArMTE5LDcgQEAgdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6Y29ubmVjdGlvbldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikK
IAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSgpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJwcm9jZXNz
RGlkVGVybWluYXRlOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJwcm9jZXNzRGlk
VGVybWluYXRlOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKICAgICBtX3BhZ2UucHJvdmlzaW9uYWxQcm9jZXNzRGlkVGVybWluYXRlKCk7CiB9CiAKQEAg
LTEzMiw3ICsxMzQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQogICAg
IGlmIChtX3Byb3Zpc2lvbmFsTG9hZFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2VsOiBTaW11
bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0
KCkpOwogICAgIEFTU0VSVChtX21haW5GcmFtZSk7CiAgICAgYXV0byBlcnJvciA9IFdlYktpdDo6
Y2FuY2VsbGVkRXJyb3IobV9yZXF1ZXN0KTsKICAgICBlcnJvci5zZXRUeXBlKFdlYkNvcmU6OlJl
c291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CkBAIC0xNTEsMTQgKzE1MywxNCBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiAKIHZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwg
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNp
ZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2Fk
RGF0YTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6IHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgbV9wYWdlLmxvYWREYXRh
V2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbmF2aWdhdGlvbiwgZGF0
YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CiB9
CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlv
biYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29y
ZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9s
aWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRS
ZXF1ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsK
IAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCBjb250aW51aW5nIGlu
IGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBm
cm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJl
IHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVudGlmaWVyIGFzIHdlIHdhbnQgZnV0dXJl
IG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQgaXRlbSB0byBoYXBwZW4gaW4gdGhlCkBA
IC0xNzEsNyArMTczLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3Qo
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKIAogdm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIE9wdGlvbmFsPFdlYnNpdGVQb2xp
Y2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Bh
Z2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX3BhZ2Uu
YmFja0ZvcndhcmRMaXN0KCkuZmlsdGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJnZXRJdGVtID0g
Jml0ZW1dKGF1dG8mIGl0ZW0pIHsKICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBpdGVtLnN1c3Bl
bmRlZFBhZ2UoKSkgewpAQCAtMTgwLDggKzE4Miw4IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJC
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICZpdGVtICE9IHRhcmdldEl0ZW07CiAgICAgfSk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVCYWNrRm9yd2Fy
ZExpc3RGb3JSZWF0dGFjaChXVEZNb3ZlKGl0ZW1TdGF0ZXMpKSwgbV9wYWdlLnBhZ2VJRCgpKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0
ZW0obmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgKm5hdmlnYXRpb24u
YmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCksIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpLCBtX3BhZ2UucGFnZUlEKCkp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJl
YXR0YWNoKFdURk1vdmUoaXRlbVN0YXRlcykpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIGl0ZW0uaXRl
bUlEKCksICpuYXZpZ2F0aW9uLmJhY2tGb3J3YXJkRnJhbWVMb2FkVHlwZSgpLCBXZWJDb3JlOjpT
aG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMp
KSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIApA
QCAtMTk2LDcgKzE5OCw3IEBAIGlubGluZSBib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp2YWxp
ZGF0ZUlucHV0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IE9wdGlvbmFsCiAKIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFp
bkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wYWdl
LnBhZ2VJRCgpLCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
d2FwcGluZywgImRpZENyZWF0ZU1haW5GcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKICAg
ICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsKIAogICAgIG1fbWFpbkZyYW1lID0gV2ViRnJhbWVQcm94
eTo6Y3JlYXRlKG1fcGFnZSwgZnJhbWVJRCk7CkBAIC0yMzQsNyArMjM2LDcgQEAgdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW4KICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlv
bklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1
NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
Rm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5h
dmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1l
SUQsIG5hdmlnYXRpb25JRCk7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVs
bCgpKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHVybDsKIApAQCAtMjU0LDcgKzI1Niw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1l
SUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZp
Z2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJRCwgbmF2aWdhdGlv
bklEKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
ImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFn
ZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKICAgICBBU1NFUlQoIW1f
cHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9
IHsgfTsKIApAQCAtMjcwLDcgKzI3Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpCiAgICAg
aWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29t
bWl0TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJRCwg
bmF2aWdhdGlvbklEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGlu
ZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCku
dG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9h
ZFVSTCA9IHsgfTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7
CiAKQEAgLTI5NSw3ICsyOTcsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDaGFu
Z2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbgogfQogCiB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIs
Ci0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEs
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCiAgICAgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogewogICAgIGlmICghdmFsaWRh
dGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQpAQCAtMzQxLDcgKzM0Myw3IEBAIHZvaWQg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNN
YWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmln
aW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
UGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTM3NCw2
ICszNzYsMTYgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cmVnaXN0ZXJXZWJQcm9jZXNz
QWNjZXNzaWJpbGl0eVRva2VuKGNvbnN0IElQQzo6RGF0YVIKIH0KICNlbmRpZgogCitJUEM6OkNv
bm5lY3Rpb24qIFByb3Zpc2lvbmFsUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpOworfQorCit1aW50
NjRfdCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKTsKK30KKwogdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uLCBJUEM6OkRlY29kZXImIGRlY29kZXIpCiB7CiAgICAgQVNTRVJUKGRlY29k
ZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9u
YWxQYWdlUHJveHkuaAppbmRleCA2NDU2YzFmOTE2ZC4uYjg2M2ZkZDAzYjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtMjYsNiArMjYs
NyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNs
dWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eU1lc3NhZ2VzLmgiCkBAIC01OCw3ICs1OSw3IEBAIHN0cnVjdCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YTsKIHN0cnVjdCBVUkxTY2hlbWVUYXNrUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlOwogCi1jbGFzcyBQcm92aXNpb25hbFBhZ2VQcm94eSA6IHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFByb3Zpc2lvbmFsUGFnZVBy
b3h5PiB7CitjbGFzcyBQcm92aXNpb25hbFBhZ2VQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmLCBSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBib29sIGlzU2VydmVyUmVkaXJlY3QsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQpOwpAQCAtOTIs
OSArOTMsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmlu
YWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKKyAgICAK
KyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VT
ZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLAotICAg
ICAgICB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVp
bnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLAogICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTExMCw3
ICsxMTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrKFVSTFNjaGVt
ZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFt
ZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAot
ICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAg
ICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOwog
I2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggMDU1OWM5ODc0
YmQuLjI3OGNhODU0ZjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5tbQpAQCAtMTE1LDcgKzExNSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3
CiAgICAgSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgpLnNldFBvb2xTaXplKDApOwogI2VuZGlm
CiAKLSAgICBwcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSwgKnRoaXMpOworICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogCiAgICAgaWYgKG1fd2ViUGFnZVByb3h5LnByZWZl
cmVuY2VzKCkudGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlKCkpCiAgICAgICAgIGluaXRp
YWxpemVEZWJ1Z0luZGljYXRvcigpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFn
ZVByb3h5JiB3CiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp+UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eSgpCiB7CiAgICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBwcm9jZXNzKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFttX2Rpc3BsYXlMaW5rSGFuZGxlciBp
bnZhbGlkYXRlXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZVdl
Ykluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZVdlYklu
c3BlY3RvclByb3h5LmNwcAppbmRleCA2Njc5ZDQ1YmQ5OS4uMDg2YWViMDc5NWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAK
QEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6bG9hZChjb25z
dCBTdHJpbmcmIGRlYnVnZ2FibGVUeXBlLCBjb25zdCBTdHJpbmcmIGIKICAgICBtX2RlYnVnZ2Fi
bGVUeXBlID0gZGVidWdnYWJsZVR5cGU7CiAgICAgbV9iYWNrZW5kQ29tbWFuZHNVUkwgPSBiYWNr
ZW5kQ29tbWFuZHNVUkw7CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6SW5pdGlhbGl6ZShkZWJ1Z2dhYmxlVHlwZSwg
YmFja2VuZENvbW1hbmRzVVJMKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9p
bnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6SW5pdGlh
bGl6ZShkZWJ1Z2dhYmxlVHlwZSwgYmFja2VuZENvbW1hbmRzVVJMKSk7CiAgICAgbV9pbnNwZWN0
b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0
b3JQYWdlVVJMKCkpKTsKIH0KIApAQCAtODEsNyArODEsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5OjpzaG93KCkKIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6c2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBtX2luc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6U2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJ
OjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclByb3h5Ojpmcm9udGVuZERpZENsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggNWExNGZiZTRk
Y2QuLmIyZjc3MjlmZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk6OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CiAKLXZvaWQg
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHk+JiYgY2hhbGxlbmdlKQordm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4m
JiBjaGFsbGVuZ2UpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CiAgICAgVU5VU0VEX1BB
UkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5oCmluZGV4IDkzMjQ1ZjBkYzc2Li5lOTM2NWFmYWM0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHku
aApAQCAtNDEsMTQgKzQxLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGhhc1JlZ2lz
dGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3Rvcnkp
OwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eT4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5PiYmKTsKIAogICAgIHZvaWQgc3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKTsKICAgICB2
b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVu
Y2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCiAgICAgY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgeyByZXR1cm4gbV9yZWdp
c3RyYWJsZURvbWFpbjsgfQotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
c2VydmljZVdvcmtlclBhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclBhZ2VJRDsgfQogCiBwcml2YXRlOgog
ICAgIC8vIEF1eGlsaWFyeVByb2Nlc3NQcm94eQpAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgog
ICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47Ci0gICAgdWludDY0X3Qg
bV9zZXJ2aWNlV29ya2VyUGFnZUlEIHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG1fc2VydmljZVdvcmtlclBhZ2VJRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggMTM0
NmZjYzA1YzUuLmViZTQxNzRjYzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgU3VzcGVuZGVkUGFnZVByb3h5
OjpTdXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1By
b3h5PiYKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSwgKnRoaXMpOwog
CiAgICAgbV9zdXNwZW5zaW9uVGltZW91dFRpbWVyLnN0YXJ0T25lU2hvdChzdXNwZW5zaW9uVGlt
ZW91dCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3Bl
bmRlZCh0cnVlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRJc1N1c3BlbmRlZCh0cnVlKSk7CiB9CiAKIFN1c3BlbmRlZFBhZ2VQcm94eTo6flN1c3Bl
bmRlZFBhZ2VQcm94eSgpCkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJv
eHk6OnVuc3VzcGVuZCgpCiAgICAgQVNTRVJUKG1fc3VzcGVuc2lvblN0YXRlID09IFN1c3BlbnNp
b25TdGF0ZTo6U3VzcGVuZGVkKTsKIAogICAgIG1fc3VzcGVuc2lvblN0YXRlID0gU3VzcGVuc2lv
blN0YXRlOjpSZXN1bWVkOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0SXNTdXNwZW5kZWQoZmFsc2UpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKGZhbHNlKSk7CiB9CiAKIHZvaWQgU3VzcGVuZGVk
UGFnZVByb3h5OjpjbG9zZSgpCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBTdXNwZW5kZWRQYWdl
UHJveHk6OmNsb3NlKCkKIAogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTd2FwcGluZywgIiVwIC0g
U3VzcGVuZGVkUGFnZVByb3h5OjpjbG9zZSgpIiwgdGhpcyk7CiAgICAgbV9pc0Nsb3NlZCA9IHRy
dWU7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCkpOwogfQog
CiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6cGFnZUVudGVyZWRBY2NlbGVyYXRlZENvbXBvc2l0
aW5nTW9kZSgpCkBAIC0yNDIsMTEgKzI0MiwyMSBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsCiB7
CiB9CiAKK0lQQzo6Q29ubmVjdGlvbiogU3VzcGVuZGVkUGFnZVByb3h5OjptZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
OworfQorCit1aW50NjRfdCBTdXNwZW5kZWRQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7
Cit9CisKICNpZiAhTE9HX0RJU0FCTEVECiAKIGNvbnN0IGNoYXIqIFN1c3BlbmRlZFBhZ2VQcm94
eTo6bG9nZ2luZ1N0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoMHgi
LCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBwYWdlIElEICIsIG1f
cGFnZS5wYWdlSUQoKSwgIiwgbV9zdXNwZW5zaW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KG1fc3VzcGVuc2lvblN0YXRlKSwgJyknKTsKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIigw
eCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwg
bV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAppbmRleCAwZGFk
MDU0YjI3Mi4uNjM1ZWJhMDAwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1N1c3BlbmRlZFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc1Rocm90dGxlci5oIgogI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaCIK
ICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgpAQCAtMzksNyArNDAsNyBAQCBjbGFz
cyBXZWJQcm9jZXNzUHJveHk7CiAKIGVudW0gY2xhc3MgU2hvdWxkRGVsYXlDbG9zaW5nVW50aWxF
bnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlIDogYm9vbCB7IE5vLCBZZXMgfTsKIAot
Y2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5IGZpbmFsOiBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IHsKK2NsYXNzIFN1
c3BlbmRlZFBhZ2VQcm94eSBmaW5hbDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJp
dmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxTdXNwZW5kZWRQ
YWdlUHJveHk+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBT
dXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
dWludDY0X3QgbWFpbkZyYW1lSUQsIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CkBAIC03MSw2ICs3MiwxMCBAQCBwcml2YXRlOgogICAg
IC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRl
cgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBm
aW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZp
bmFsOwogCiAgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgUmVmPFdlYlByb2Nlc3NQcm94
eT4gbV9wcm9jZXNzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmlu
ZGV4IDk3MTFiMjMzNzIxLi4wMWI2ZDEyZTQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcApAQCAtNzMsNyArNzMsNyBAQCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKIHsKICAgICB3ZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94aWVzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiAgICAgZm9y
IChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKLSAgICAgICAgcHJvY2Vzcy0+cmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAg
IHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKICAg
ICAgICAgcHJvY2Vzcy0+ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCp0
aGlzKTsKICAgICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTg1LDcgKzg1
LDcgQEAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6On5XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eSgpCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQoJndlYlByb2Nl
c3NQcm94eSkuaXNOZXdFbnRyeSkKLSAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCksICp0aGlzKTsKKyAgICAgICAg
d2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLCAq
dGhpcyk7CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcy5pc0VtcHR5
KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgd29ybGQgOiBtX3VzZXJDb250ZW50V29ybGRzKQpA
QCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiAgICAgQVNTRVJUKG1f
cHJvY2Vzc2VzLmNvbnRhaW5zKCZ3ZWJQcm9jZXNzUHJveHkpKTsKIAogICAgIG1fcHJvY2Vzc2Vz
LnJlbW92ZSgmd2ViUHJvY2Vzc1Byb3h5KTsKLSAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgd2ViUHJv
Y2Vzc1Byb3h5LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKIH0K
IAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3Js
ZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQpAQCAtMzI3LDcgKzMyNyw3IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFu
ZGxlcnMoQVBJOjpVc2VyQ29udGVuCiAgICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29y
bGQsIG51bWJlclJlbW92ZWQpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVz
c2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQor
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKICAgICBXZWJQYWdlUHJveHkq
IHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCA2MjMzMDExMTZlZC4u
MGVkMzZhNTljYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgpAQCAtMTEwLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdl
UmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0
X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9p
ZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkVXNl
KEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRXb3Js
ZFVzZXMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1v
dmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA4MTcxNDM1MWZjZS4uMjVhNGUyOTEyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCw1ICsyNCw1IEBA
CiAgKi8KIAogbWVzc2FnZXMgLT4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgewotRGlk
UG9zdE1lc3NhZ2UodWludDY0X3QgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIElQQzo6RGF0YVJlZmVy
ZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5lY3Rpb24KK0RpZFBvc3RNZXNzYWdlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUlu
Zm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVz
c2FnZSkgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKaW5kZXggMWYyNjAyOTFjYzcuLmJkMzdiYTBjOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y2FwdHVyZURldmljZXNDaGFuZ2VkKCkKICAgICAgICAg
aWYgKG1fZ3JhbnRlZFJlcXVlc3RzLmlzRW1wdHkoKSAmJiAhKm9yaWdpbkhhc1BlcnNpc3RlbnRB
Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXB0dXJlRGV2aWNlc0NoYW5nZWQoKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1cmVE
ZXZpY2VzQ2hhbmdlZCgpKTsKICAgICB9OwogCiAgICAgYXV0byBvcmlnaW4gPSBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fcGFnZS5tYWluRnJhbWUoKS0+dXJsKCkpOwpAQCAtMTgy
LDcgKzE4Miw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6
OmRlbnlSZXF1ZXN0KHVpbnQ2NF90IHVzZXJNZWRpYUlELCBVCiAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCB1c2VyTWVkaWFJRCwgIiwgcmVhc29uOiAiLCByZWFzb24pOwogCiAjaWYgRU5B
QkxFKE1FRElBX1NUUkVBTSkKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0RlbmllZCh1c2VyTWVkaWFJRCwgdG9XZWJDb3JlKHJl
YXNvbiksIGludmFsaWRDb25zdHJhaW50KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNzV2FzRGVuaWVkKHVzZXJNZWRp
YUlELCB0b1dlYkNvcmUocmVhc29uKSwgaW52YWxpZENvbnN0cmFpbnQpKTsKICNlbHNlCiAgICAg
VU5VU0VEX1BBUkFNKHJlYXNvbik7CiAgICAgVU5VU0VEX1BBUkFNKGludmFsaWRDb25zdHJhaW50
KTsKQEAgLTI5NiwxMSArMjk2LDExIEBAIGJvb2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHk6OmdyYW50QWNjZXNzKGNvbnN0IFVzZXJNZWRpYVBlcm1pc3NpCiAgICAgfQog
CiAgICAgKyttX2hhc1BlbmRpbmdDYXB0dXJlOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuY29ubmVj
dGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFj
Y2Vzc1dhc0dyYW50ZWQgeyByZXF1ZXN0LnVzZXJNZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9EZXZp
Y2UoKSwgcmVxdWVzdC52aWRlb0RldmljZSgpLCByZXF1ZXN0LmRldmljZUlkZW50aWZpZXJIYXNo
U2FsdCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CisgICAgbV9w
YWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNz
V2FzR3JhbnRlZCB7IHJlcXVlc3QudXNlck1lZGlhSUQoKSwgcmVxdWVzdC5hdWRpb0RldmljZSgp
LCByZXF1ZXN0LnZpZGVvRGV2aWNlKCksIHJlcXVlc3QuZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0
KCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgLS1tX2hhc1BlbmRpbmdD
YXB0dXJlOwotICAgIH0sIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAjZW5kaWYKQEAgLTYwOCw3ICs2MDgsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5OjplbnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSh1aW50
NgogCiAgICAgICAgICAgICBib29sIHJldmVhbElkc0FuZExhYmVscyA9IG9yaWdpbkhhc1BlcnNp
c3RlbnRBY2Nlc3MgfHwgd2FzR3JhbnRlZFZpZGVvT3JBdWRpb0FjY2VzcyhmcmFtZUlELCB1c2Vy
TWVkaWFEb2N1bWVudE9yaWdpbi5nZXQoKSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi5nZXQoKSk7
CiAKLSAgICAgICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ29tcGxldGVNZWRpYURldmljZUVudW1lcmF0aW9uIHsgdXNlck1lZGlhSUQsIGNvbXB1dGVG
aWx0ZXJlZERldmljZUxpc3QocmV2ZWFsSWRzQW5kTGFiZWxzLCBkZXZpY2VJREhhc2hTYWx0KSwg
ZGV2aWNlSURIYXNoU2FsdCwgb3JpZ2luSGFzUGVyc2lzdGVudEFjY2VzcyB9LCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgICAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENv
bXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbiB7IHVzZXJNZWRpYUlELCBjb21wdXRlRmlsdGVy
ZWREZXZpY2VMaXN0KHJldmVhbElkc0FuZExhYmVscywgZGV2aWNlSURIYXNoU2FsdCksIGRldmlj
ZUlESGFzaFNhbHQsIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MgfSk7CiAgICAgICAgIH0pOwog
ICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJl
Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwCmluZGV4IDI0ODE4MmQ4MDkyLi43NjgwNmQ0ODQzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC02NiwxMCAr
NjYsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1TY3JvbGxFdmVudFJhdGlvRm9yU3dp
cGUgPSAwLjU7CiBzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJU
cmVlU2l6ZVRhcmdldEZyYWN0aW9uID0gMC41OwogI2VuZGlmCiAKLXN0YXRpYyBIYXNoTWFwPHVp
bnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0Zv
ckFsbFBhZ2VzKCkKK3N0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkKIHsKICAgICAv
LyBUaGUga2V5IGluIHRoaXMgbWFwIGlzIHRoZSBhc3NvY2lhdGVkIHBhZ2UgSUQuCi0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIFZpZXdHZXN0dXJlQ29udHJvbGxl
cio+PiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1
cmVDb250cm9sbGVyczsKICAgICByZXR1cm4gdmlld0dlc3R1cmVDb250cm9sbGVycy5nZXQoKTsK
IH0KIApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb25u
ZWN0VG9Qcm9jZXNzKCkKICAgICBtX2lzQ29ubmVjdGVkVG9Qcm9jZXNzID0gdHJ1ZTsKIH0KIAot
Vmlld0dlc3R1cmVDb250cm9sbGVyKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbnRyb2xsZXJG
b3JHZXN0dXJlKHVpbnQ2NF90IHBhZ2VJRCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJl
SUQgZ2VzdHVyZUlEKQorVmlld0dlc3R1cmVDb250cm9sbGVyKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmNvbnRyb2xsZXJGb3JHZXN0dXJlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpHZXN0dXJlSUQgZ2VzdHVyZUlEKQogewogICAgIGF1dG8gZ2VzdHVyZUNv
bnRyb2xsZXJJdGVyID0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZmluZChw
YWdlSUQpOwogICAgIGlmIChnZXN0dXJlQ29udHJvbGxlckl0ZXIgPT0gdmlld0dlc3R1cmVDb250
cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZW5kKCkpCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmZvcmNlUmVwYWludElmTmVlZGVkKCkKIAogICAgIG1faGFzT3V0
c3RhbmRpbmdSZXBhaW50UmVxdWVzdCA9IHRydWU7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBt
X3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7
CiAgICAgbV93ZWJQYWdlUHJveHkuZm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtw
YWdlSUQsIGdlc3R1cmVJRF0gKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAg
aWYgKGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQs
IGdlc3R1cmVJRCkpCkBAIC02MTcsNyArNjE3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OnJlcXVlc3RSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvbklmTmVlZGVkKCkKICAgICBhdXRv
JiBwcm9jZXNzID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxQYWdlUHJveHkoKSA/IG1fd2Vi
UGFnZVByb3h5LnByb3Zpc2lvbmFsUGFnZVByb3h5KCktPnByb2Nlc3MoKSA6IG1fd2ViUGFnZVBy
b3h5LnByb2Nlc3MoKTsKICAgICBhdXRvIHRocmVzaG9sZCA9IG1fc25hcHNob3RSZW1vdmFsVHJh
Y2tlci5yZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCgpOwogCi0gICAgcHJvY2Vzcy5zZW5kKE1lc3Nh
Z2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpTZXRSZW5kZXJUcmVlU2l6ZU5vdGlm
aWNhdGlvblRocmVzaG9sZCh0aHJlc2hvbGQpLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cisg
ICAgcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpT
ZXRSZW5kZXJUcmVlU2l6ZU5vdGlmaWNhdGlvblRocmVzaG9sZCh0aHJlc2hvbGQpLCBtX3dlYlBh
Z2VQcm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDQzMWMyNzY2ZDA4
Li5jMTY3MGQzYTk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dl
c3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1
cmVDb250cm9sbGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMTc1LDcgKzE3Niw3IEBAIHByaXZhdGU6
CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHN0YXRp
YyBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JHZXN0dXJlKHVpbnQ2NF90IHBh
Z2VJRCwgR2VzdHVyZUlEKTsKKyAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250
cm9sbGVyRm9yR2VzdHVyZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgR2VzdHVyZUlEKTsKIAog
ICAgIHN0YXRpYyBHZXN0dXJlSUQgdGFrZU5leHRHZXN0dXJlSUQoKTsKICAgICB2b2lkIHdpbGxC
ZWdpbkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VmlzaXRlZExpbmtTdG9yZS5jcHAKaW5kZXggZjJlN2I5MzQwNTcuLjk5MWRjMmZjZmY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIHZvaWQgVmlzaXRlZExpbmtTdG9yZTo6d2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVj
dGlvbihXZWJQcm9jZXNzUHJveHkmLCBJUEM6OkNvbm5lCiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dC4KIH0KIAotdm9pZCBWaXNpdGVkTGlua1N0b3JlOjphZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFn
ZSh1aW50NjRfdCBwYWdlSUQsIFNoYXJlZFN0cmluZ0hhc2ggbGlua0hhc2gpCit2b2lkIFZpc2l0
ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgU2hhcmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkKIHsKICAgICBpZiAoYXV0byogd2ViUGFn
ZVByb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCkpIHsKICAgICAgICAgaWYg
KCF3ZWJQYWdlUHJveHktPmFkZHNWaXNpdGVkTGlua3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaAppbmRleCAwNmYyMGJhOTFjYi4uMDJiNDliYWM1NWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmgKQEAgLTY3LDcgKzY3
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVTaGFyZWRNZW1vcnkoKSBmaW5h
bDsKICAgICB2b2lkIGRpZFVwZGF0ZVNoYXJlZFN0cmluZ0hhc2hlcyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2hhcmVkU3RyaW5nSGFzaD4mIGFkZGVkSGFzaGVzLCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6U2hhcmVkU3RyaW5nSGFzaD4mIHJlbW92ZWRIYXNoZXMpIGZpbmFsOwogCi0gICAgdm9pZCBh
ZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlNoYXJl
ZFN0cmluZ0hhc2gpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gpOwogCiAgICAgdm9p
ZCBzZW5kU3RvcmVIYW5kbGVUb1Byb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCmlu
ZGV4IGU3ODYyZTM2NWIwLi4yZTY2YzQyODA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCkBAIC0yMSw1ICsyMSw1IEBA
CiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFZpc2l0ZWRMaW5rU3RvcmUgewotICAgIEFk
ZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgbGlua0hh
c2gpCisgICAgQWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCBsaW5rSGFzaCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAKaW5kZXggODdiMGFmYzIwYzIuLjBkYmUwYWZi
NDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5
LmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFdlYkVkaXRDb21tYW5kUHJveHk6OnVuYXBwbHko
KQogICAgIGlmICghbV9wYWdlIHx8ICFtX3BhZ2UtPmhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlVuYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJRCksIG1fcGFnZS0+cGFnZUlEKCksIElQ
Qzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVuYXBwbHlFZGl0Q29tbWFu
ZChtX2NvbW1hbmRJRCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1hbmQoKnRo
aXMsIFVuZG9PclJlZG86OlJlZG8pOwogfQogCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgV2ViRWRp
dENvbW1hbmRQcm94eTo6cmVhcHBseSgpCiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFnZS0+aGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVhcHBseUVkaXRDb21tYW5kKG1fY29tbWFuZElE
KSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVu
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVhcHBseUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwgSVBDOjpTZW5kT3B0aW9uOjpE
aXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogICAgIG1fcGFnZS0+
cmVnaXN0ZXJFZGl0Q29tbWFuZCgqdGhpcywgVW5kb09yUmVkbzo6VW5kbyk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggNWM4NTFiNzI3NTUuLmIw
MWIzMDUwNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcApA
QCAtODMsNyArODMsNyBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmxvYWRVUkwoY29uc3QgVVJMJiB1
cmwpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkxJbkZyYW1lKHVybCwgbV9mcmFt
ZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkVVJMSW5GcmFtZSh1cmwsIG1fZnJhbWVJRCkpOwogfQogCiB2b2lkIFdlYkZyYW1l
UHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3Ry
aW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYgYmFz
ZVVSTCkKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVQKICAgICBpZiAo
IW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGFJbkZyYW1lKGRhdGEsIE1JTUVUeXBlLCBlbmNvZGlu
Z05hbWUsIGJhc2VVUkwsIG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGFJbkZyYW1lKGRhdGEsIE1JTUVUeXBl
LCBlbmNvZGluZ05hbWUsIGJhc2VVUkwsIG1fZnJhbWVJRCkpOwogfQogCiB2b2lkIFdlYkZyYW1l
UHJveHk6OnN0b3BMb2FkaW5nKCkgY29uc3QKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFdlYkZy
YW1lUHJveHk6OnN0b3BMb2FkaW5nKCkgY29uc3QKICAgICBpZiAoIW1fcGFnZS0+aGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcExvYWRpbmdGcmFtZShtX2ZyYW1lSUQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2Fk
aW5nRnJhbWUobV9mcmFtZUlEKSk7CiB9CiAgICAgCiBib29sIFdlYkZyYW1lUHJveHk6OmNhblBy
b3ZpZGVTb3VyY2UoKSBjb25zdApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgV2ViRnJhbWVQcm94
eTo6Y29sbGFwc2VTZWxlY3Rpb24oKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb2xsYXBz
ZVNlbGVjdGlvbkluRnJhbWUobV9mcmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUobV9m
cmFtZUlEKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAppbmRleCA4ZTkzYjFkYzJkMC4uZWM2OThl
MTYwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5N
YW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkuY3BwCkBAIC01NiwxMyArNTYsMTMgQEAgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6fldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkoKQogdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5Ojp3aWxsRW50ZXJGdWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNj
cmVlbkNsaWVudCgpLndpbGxFbnRlckZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdlLnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEVudGVyRnVs
bFNjcmVlbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEVudGVyRnVsbFNjcmVlbigpKTsKIH0KIAogdm9pZCBX
ZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxTY3JlZW4oKQogewogICAgIG1f
cGFnZS5mdWxsc2NyZWVuQ2xpZW50KCkuZGlkRW50ZXJGdWxsc2NyZWVuKCZtX3BhZ2UpOwotICAg
IG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OkRp
ZEVudGVyRnVsbFNjcmVlbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsU2NyZWVuKCkpOwogCiAg
ICAgaWYgKG1fcGFnZS5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSkgewogICAgICAgICBpZiAo
V2ViQXV0b21hdGlvblNlc3Npb24qIGF1dG9tYXRpb25TZXNzaW9uID0gbV9wYWdlLnByb2Nlc3Mo
KS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCkBAIC03MywxMyArNzMsMTMgQEAg
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxTY3JlZW4oKQogdm9p
ZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp3aWxsRXhpdEZ1bGxTY3JlZW4oKQogewogICAg
IG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50KCkud2lsbEV4aXRGdWxsc2NyZWVuKCZtX3BhZ2UpOwot
ICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6
OldpbGxFeGl0RnVsbFNjcmVlbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsU2NyZWVuKCkpOwog
fQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsU2NyZWVuKCkK
IHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLmRpZEV4aXRGdWxsc2NyZWVuKCZtX3Bh
Z2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1h
bmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbFNjcmVlbigp
KTsKICAgICAKICAgICBpZiAobV9wYWdlLmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpKSB7CiAg
ICAgICAgIGlmIChXZWJBdXRvbWF0aW9uU2Vzc2lvbiogYXV0b21hdGlvblNlc3Npb24gPSBtX3Bh
Z2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKQEAgLTg5LDEy
ICs4OSwxMiBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsU2Ny
ZWVuKCkKIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRBbmltYXRpbmdGdWxs
U2NyZWVuKGJvb2wgYW5pbWF0aW5nKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYW5pbWF0
aW5nKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVs
bFNjcmVlbk1hbmFnZXI6OlNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYW5pbWF0aW5nKSk7CiB9CiAK
IHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEV4aXRGdWxsU2NyZWVuKCkK
IHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjpSZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlcXVlc3RFeGl0RnVsbFNj
cmVlbigpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1
bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMDgsMjcgKzEwOCwyNyBAQCB2b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2FyZCwg
Q29tcGxldGlvbgogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNhdmVTY3JvbGxQ
b3NpdGlvbigpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxs
U2NyZWVuTWFuYWdlcjo6U2F2ZVNjcm9sbFBvc2l0aW9uKCksIG1fcGFnZS5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTYXZlU2Nyb2xs
UG9zaXRpb24oKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6cmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6
OlJlc3RvcmVTY3JvbGxQb3NpdGlvbigpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5OjpzZXRGdWxsc2NyZWVuSW5zZXRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0ZW50
JiBpbnNldHMpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxs
U2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkluc2V0cyhpbnNldHMpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2V0
RnVsbHNjcmVlbkluc2V0cyhpbnNldHMpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdl
clByb3h5OjpzZXRGdWxsc2NyZWVuQXV0b0hpZGVEdXJhdGlvbihTZWNvbmRzIGR1cmF0aW9uKQog
ewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXI6OlNldEZ1bGxzY3JlZW5BdXRvSGlkZUR1cmF0aW9uKGR1cmF0aW9uKSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNl
dEZ1bGxzY3JlZW5BdXRvSGlkZUR1cmF0aW9uKGR1cmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViRnVs
bFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbkNvbnRyb2xzSGlkZGVuKGJvb2wgaGlk
ZGVuKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihoaWRkZW4pLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6
U2V0RnVsbHNjcmVlbkNvbnRyb2xzSGlkZGVuKGhpZGRlbikpOwogfQogCiB2b2lkIFdlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHk6OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
Ykluc3BlY3RvclByb3h5LmNwcAppbmRleCAxMmJiMjYxZDA3Yy4uZmU5MGNjYzg5YTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQo
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSkpOwogfQogCiAv
LyBQdWJsaWMgQVBJcwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OmNvbm5lY3QoKQogICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCiAgICAgbV9pbnNwZWN0ZWRQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0
Y2hlcjo6Tm90aWZ5TmVlZERlYnVnZ2VyQnJlYWsoKSwgMCk7Ci0gICAgbV9pbnNwZWN0ZWRQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93KCksIG1faW5zcGVj
dGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTaG93KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93
KCkKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjbG9zZSgpCiAg
ICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2UoKSwg
bV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkNsb3NlKCkpOwogCiAgICAgY2xvc2VGcm9udGVuZFBhZ2VB
bmRXaW5kb3coKTsKIH0KQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
Ojp1cGRhdGVGb3JOZXdQYWdlUHJvY2VzcyhXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2UpCiAg
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3RlZFBh
Z2UtPnBhZ2VJRCgpLCAqdGhpcyk7CiAKICAgICBpZiAobV9pbnNwZWN0b3JQYWdlKQotICAgICAg
ICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6VXBkYXRlQ29ubmVjdGlvbigpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAg
ICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6VXBkYXRl
Q29ubmVjdGlvbigpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0RnJvbnRlbmRD
b25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTIwNyw3
ICsyMDcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRGcm9udGVuZENvbm5lY3Rpb24o
SVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaQogICAgIGlmICghbV9pbnNwZWN0ZWRQ
YWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEZyb250ZW5kQ29ubmVjdGlvbihjb25uZWN0
aW9uSWRlbnRpZmllciksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRGcm9udGVuZENvbm5lY3Rp
b24oY29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
c2hvd0NvbnNvbGUoKQpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
OnNob3dDb25zb2xlKCkKIAogICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCi0gICAgbV9pbnNw
ZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93Q29u
c29sZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMoKQpAQCAtMjI3LDcgKzIyNyw3IEBAIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMoKQogCiAgICAgY3JlYXRlRnJvbnRl
bmRQYWdlKCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNo
b3dSZXNvdXJjZXMoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dUaW1lbGlu
ZXMoKQpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dUaW1l
bGluZXMoKQogCiAgICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAKLSAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dUaW1lbGluZXMo
KSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dUaW1lbGluZXMoKSk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFp
blJlc291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiAKICAgICBjcmVhdGVGcm9u
dGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlE
KCkpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1l
LT5mcmFtZUlEKCkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoQm90dG9t
KCkKQEAgLTI3OCwxOSArMjc4LDE5IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaChB
dHRhY2htZW50U2lkZSBzaWRlKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVj
dG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1ZSk7CiAK
LSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNldEF0dGFjaGVkKHRydWUpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQo
dHJ1ZSkpOwogCiAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7CiAgICAgY2FzZSBBdHRh
Y2htZW50U2lkZTo6Qm90dG9tOgotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCkpOwogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgotICAgICAgICBtX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgp
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpKTsKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpMZWZ0OgotICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNo
ZWRMZWZ0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3Rv
clBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZExlZnQoKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMzA3LDggKzMwNyw4IEBAIHZvaWQgV2ViSW5zcGVj
dG9yUHJveHk6OmRldGFjaCgpCiAgICAgaWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNwZWN0
b3JQYWdlUHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZChmYWxzZSk7CiAK
LSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNldEF0dGFjaGVkKGZhbHNlKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7Ci0gICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkRldGFjaGVkKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVk
UGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSkpOwor
ICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFj
aGVkKCkpOwogCiAgICAgcGxhdGZvcm1EZXRhY2goKTsKIH0KQEAgLTM0MSw5ICszNDEsOSBAQCB2
b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1faXNQcm9maWxpbmdQYWdlKQotICAgICAgICBtX2luc3BlY3RlZFBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BQYWdlUHJvZmls
aW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcFBhZ2VQcm9maWxpbmcoKSk7CiAg
ICAgZWxzZQotICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OlN0YXJ0UGFnZVByb2ZpbGluZygpKTsKIAogICAgIC8vIEZJWE1FOiBoYXZlIHRoZSBX
ZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgogICAgIG1faXNQcm9maWxpbmdQ
YWdlID0gIW1faXNQcm9maWxpbmdQYWdlOwpAQCAtMzU2LDEwICszNTYsMTAgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6dG9nZ2xlRWxlbWVudFNlbGVjdGlvbigpCiAKICAgICBpZiAobV9lbGVt
ZW50U2VsZWN0aW9uQWN0aXZlKSB7CiAgICAgICAgIG1faWdub3JlRWxlbWVudFNlbGVjdGlvbkNo
YW5nZSA9IHRydWU7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcEVsZW1lbnRTZWxlY3Rpb24oKSwgbV9pbnNwZWN0ZWRQ
YWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTdG9wRWxlbWVudFNlbGVjdGlvbigpKTsKICAgICB9IGVsc2UgewogICAg
ICAgICBjb25uZWN0KCk7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRFbGVtZW50U2VsZWN0aW9uKCksIG1faW5zcGVj
dGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRFbGVtZW50U2VsZWN0aW9uKCkpOwogICAgIH0KIH0KIApA
QCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW5Mb2NhbEluc3Bl
Y3RvckZyb250ZW5kKGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzCiAgICAgaWYgKCFtX2lu
c3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0aW9u
KG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0LCBpbnNwZWN0aW9uTGV2ZWwo
KSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24obV9pbnNwZWN0
ZWRQYWdlLT5wYWdlSUQoKSwgbV91bmRlclRlc3QsIGluc3BlY3Rpb25MZXZlbCgpKSk7CiAKICAg
ICBBU1NFUlQoIW1faXNBY3RpdmVGcm9udGVuZCk7CiAgICAgbV9pc0FjdGl2ZUZyb250ZW5kID0g
dHJ1ZTsKQEAgLTQyMywyNiArNDIzLDI2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW5M
b2NhbEluc3BlY3RvckZyb250ZW5kKGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzCiAgICAg
ICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwogICAgICAgICBtX2F0dGFj
aG1lbnRTaWRlID0gc3RhdGljX2Nhc3Q8QXR0YWNobWVudFNpZGU+KGluc3BlY3RvclBhZ2VQcmVm
ZXJlbmNlcygpLmluc3BlY3RvckF0dGFjaG1lbnRTaWRlKCkpOwogCi0gICAgICAgIG1faW5zcGVj
dGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNo
ZWQobV9pc0F0dGFjaGVkKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1f
aW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCht
X2lzQXR0YWNoZWQpKTsKIAogICAgICAgICBpZiAobV9pc0F0dGFjaGVkKSB7CiAgICAgICAgICAg
ICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICAgICAgICAgIGNhc2UgQXR0YWNobWVu
dFNpZGU6OkJvdHRvbToKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0
OgotICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFn
ZUlEKCkpOworICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkxlZnQ6Ci0gICAgICAgICAgICAg
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAg
ICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpB
dHRhY2hlZExlZnQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOworICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSk7CiAKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldERvY2tpbmdVbmF2YWls
YWJsZSghbV9jYW5BdHRhY2gpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAg
bV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2lu
Z1VuYXZhaWxhYmxlKCFtX2NhbkF0dGFjaCkpOwogICAgIH0KIAogICAgIG1faW5zcGVjdG9yUGFn
ZS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCBtX3VuZGVyVGVzdCA/IFdlYkluc3BlY3RvclByb3h5
OjppbnNwZWN0b3JUZXN0UGFnZVVSTCgpIDogV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBh
Z2VVUkwoKSkpOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9w
ZW4oKQogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNPcGVuaW5nKG1faXNPcGVuaW5nLCB0cnVl
KTsKICAgICBtX2lzVmlzaWJsZSA9IHRydWU7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJs
ZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSkpOwog
CiAgICAgaWYgKG1faXNBdHRhY2hlZCkKICAgICAgICAgcGxhdGZvcm1BdHRhY2goKTsKQEAgLTQ4
NSw3ICs0ODUsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFnZUFu
ZFdpbmRvdygpCiAKICAgICB1bnRyYWNrSW5zcGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2UpOwog
Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSkpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vz
cygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAKICAgICBp
ZiAobV9pc0FjdGl2ZUZyb250ZW5kKSB7CkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6YXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW5zcGVjdG9yUGFnZSAmJiAhbV91bmRlclRlc3Qp
Ci0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0
b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OlNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9jYW5BdHRhY2gpKTsK
IAogICAgIHBsYXRmb3JtQXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChtX2NhbkF0dGFjaCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2NTZjOGRjYzU5
Yy4uMmE1NGRlOWQ2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMzgxLDEyICszODEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvck1vc3RWaXNpYmxl
V2ViUGFnZUlmQW55KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2UKICAgICBjb21w
bGV0aW9uSGFuZGxlcihzZWxlY3RlZFBhZ2UpOwogfQogCi1SZWY8V2ViUGFnZVByb3h5PiBXZWJQ
YWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYg
Y29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9u
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xpZW50LCBw
cm9jZXNzLCBwYWdlSUQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVBy
b3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYm
IGNvbmZpZ3VyYXRpb24pCitXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKICAgICA6IG1f
cGFnZUNsaWVudChtYWtlV2Vha1B0cihwYWdlQ2xpZW50KSkKICAgICAsIG1fY29uZmlndXJhdGlv
bihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VV
bmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpKQpAQCAtNDM1LDcgKzQzNSw3IEBAIFdl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgdWluCiAjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENv
dW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2Vu
dENyYXNoQ291bnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29u
c3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAg
ICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmRyYXdzQmFja2dyb3VuZCgpKQogICAgICAgICBtX2Jh
Y2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CkBAIC00ODksNyArNDg5
LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwg
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVBy
b3h5KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVjdG9y
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkZXN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgQVNTRVJU
KG1fcHJvY2Vzcy0+d2ViUGFnZShtX3BhZ2VJRCkgIT0gdGhpcyk7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRApAQCAtNjEzLDcgKzYxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4mJiB1aUNsaWVudCkKICAgICBtX3VpQ2xpZW50
ID0gV1RGTW92ZSh1aUNsaWVudCk7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwobV91aUNsaWVudC0+Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKCkpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENh
blJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChtX3VpQ2xpZW50LT5jYW5SdW5CZWZvcmVVbmxv
YWRDb25maXJtUGFuZWwoKSkpOwogCiAgICAgc2V0Q2FuUnVuTW9kYWwobV91aUNsaWVudC0+Y2Fu
UnVuTW9kYWwoKSk7CiAgICAgc2V0TmVlZHNGb250QXR0cmlidXRlcyhtX3VpQ2xpZW50LT5uZWVk
c0ZvbnRBdHRyaWJ1dGVzKCkpOwpAQCAtNjMwLDcgKzYzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0Ns
aWVudD4mCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUljb25Mb2FkaW5n
Q2xpZW50KGhhc0NsaWVudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGllbnQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4mJiBm
aW5kQ2xpZW50KQpAQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQ
cm9jZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKICAgICBB
U1NFUlQoIW1faXNDbG9zZWQpOwogICAgIEFTU0VSVCghaGFzUnVubmluZ1Byb2Nlc3MoKSk7CiAK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVu
Y2hQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9wcm9jZXNz
LT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9y
ZTo6WWVzKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKQEAgLTc2Myw3
ICs3NjMsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJs
ZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3Vz
cGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpKTsKICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5p
cXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWlu
RnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdNb2RlKTsKIAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIg
UFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJh
Y2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dn
aW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBm
cm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKKyAgICBMT0coUHJvY2Vzc1N3YXBw
aW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMg
Zm9yIHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQo
KS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3Ry
aW5nKCkgOiAwKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQgZm9yY2VkIGEgc3dhcCB0aGVuIGl0
IG1heSBub3QgYmUgd2ViLWNvbXBhdGlibGUgdG8ga2VlcCB0aGUgcHJldmlvdXMgcGFnZSBiZWNh
dXNlIG90aGVyIHdpbmRvd3MgbWF5IGhhdmUgYW4gb3BlbmVyIGxpbmsgdG8gaXQuIFdlIHRodXMg
Y2xvc2UgaXQgYXMgc29vbiBhcyB3ZQogICAgIC8vIGNhbiBkbyBzbyB3aXRob3V0IGZsYXNoaW5n
LgpAQCAtNzgxLDcgKzc4MSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBh
Z2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiB2b2lkIFdlYlBh
Z2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Ms
IHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRyYXdpbmdBcmVhLCBSZWZQdHI8
V2ViRnJhbWVQcm94eT4mJiBtYWluRnJhbWUpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzd2FwVG9XZWJQcm9jZXNzOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJz
d2FwVG9XZWJQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9w
cm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKTsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBtX3By
b2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKTsKQEAgLTg3MywxMCArODczLDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
YXVuY2hQcm9jZXNzRm9yUmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAg
ICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQ
cm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtODg1LDE0ICs4
ODUsMTQgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9j
ZXNzRm9yUmVsb2FkKCkKICAgICBsYXVuY2hQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluKTsKIAog
ICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpIHsKLSAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8g
Y3VycmVudCBpdGVtIHRvIHJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1
cnJlbnQgaXRlbSB0byByZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2
aWdhdGlvblN0YXRlLT5jcmVhdGVSZWxvYWROYXZpZ2F0aW9uKCk7CiAKICAgICAvLyBXZSBhbGxv
dyBzdGFsZSBjb250ZW50IHdoZW4gcmVsb2FkaW5nIGEgV2ViUHJvY2VzcyB0aGF0J3MgYmVlbiBr
aWxsZWQgb3IgY3Jhc2hlZC4KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG1fYmFja0Zv
cndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5kZXhl
ZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxv
cHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3
YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1
cnJlbnRJdGVtKCktPml0ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQs
IFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCkpOwogICAgIG1f
cHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2
aWdhdGlvbjsKQEAgLTkwMCwxMCArOTAwLDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAKIFJlZlB0cjxBUEk6Ok5hdmln
YXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHBhZ2Ug
aXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiBwYWdlIGlzIGNsb3NlZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC05MTUsNyArOTE1LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5OjpsYXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogICAgIGF1
dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5hdmln
YXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCksIEZyYW1lTG9hZFR5
cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCks
IGl0ZW0uaXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxk
VHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+
bmF2aWdhdGlvbklEKCksIGl0ZW0uaXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNr
Rm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSk7
CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJl
dHVybiBuYXZpZ2F0aW9uOwpAQCAtOTU2LDcgKzk1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
bG9zZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwogCkBAIC0xMDA5LDcgKzEw
MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgbV9wcm9jZXNzLT5wcm9j
ZXNzUG9vbCgpLnJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VzRm9yUGFnZSgqdGhpcyk7CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92
ZVdlYlBhZ2UoKnRoaXMsIFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZZXMp
OwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vzcy0+
cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4oKS0+
Y2xlYXJOb3RpZmljYXRpb25zKHRoaXMpOwpAQCAtMTAzMSwxNCArMTAzMSwxNCBAQCBib29sIFdl
YlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAidHJ5Q2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICAvLyBDbG9zZSB3aXRob3V0IGRlbGF5IGlmIHRoZSBwcm9jZXNzIGFsbG93cyBpdC4gT3VyIGdv
YWwgaXMgdG8gdGVybWluYXRlCiAgICAgLy8gdGhlIHByb2Nlc3MsIHNvIHdlIGNoZWNrIGEgcGVy
LXByb2Nlc3Mgc3RhdHVzIGJpdC4KICAgICBpZiAobV9wcm9jZXNzLT5pc1N1ZGRlblRlcm1pbmF0
aW9uRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VHJ5Q2xvc2UoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlRyeUNsb3NlKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5l
c3NUaW1lcigpLnN0YXJ0KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTA3Nyw3ICsxMDc3
LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkUmVxdWVzdDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3Mo
UmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0LnVybCgpIH0pOwpAQCAtMTA5MSw3ICsxMDkxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwog
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2
aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlv
bigpOwogCkBAIC0xMTE0LDE2ICsxMTE0LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAg
ICAgICAgIHdpbGxBY3F1aXJlVW5pdmVyc2FsRmlsZVJlYWRTYW5kYm94RXh0ZW5zaW9uKHByb2Nl
c3MpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCi0g
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFt
ZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFRvUHJvY2Vzcyhwcm9jZXNzLCBNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRlcnMpKTsKICAgICBwcm9jZXNzLT5yZXNw
b25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9h
ZEZpbGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3Nl
ZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTog
cGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
MTEzMiw3ICsxMTMyLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
b2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKIAogICAgIFVSTCBmaWxl
VVJMID0gVVJMKFVSTCgpLCBmaWxlVVJMU3RyaW5nKTsKICAgICBpZiAoIWZpbGVVUkwuaXNMb2Nh
bEZpbGUoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
RmlsZTogZmlsZSBpcyBub3QgbG9jYWw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWw6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtMTE0Miw3ICsxMTQyLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAg
ICBlbHNlIHsKICAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlVUkwgPSBVUkwoVVJMKCksIHJlc291
cmNlRGlyZWN0b3J5VVJMU3RyaW5nKTsKICAgICAgICAgaWYgKCFyZXNvdXJjZURpcmVjdG9yeVVS
TC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkRmlsZTogcmVzb3VyY2UgVVJMIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
RmlsZTogcmVzb3VyY2UgVVJMIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTE2NCw3ICsxMTY0LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojps
b2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKICAgICBhZGRQbGF0Zm9y
bUxvYWRQYXJhbWV0ZXJzKGxvYWRQYXJhbWV0ZXJzKTsKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1l
UmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgcmVzb3VyY2VEaXJlY3RvcnlVUkwpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3QobG9hZFBhcmFtZXRl
cnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFJlcXVlc3Qo
bG9hZFBhcmFtZXRlcnMpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5z
dGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0xMTcyLDEwICsxMTcyLDEwIEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBT
dHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTog
cGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEsIGMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBN
SU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vi
c2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWREYXRhV2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAgLTEyMDksMTkg
KzEyMDksMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogICAgIGFkZFBsYXRmb3JtTG9hZFBh
cmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAgICAgcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vz
c1RvQmFzZVVSTCgqdGhpcywgYmFzZVVSTCk7Ci0gICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFRv
UHJvY2Vzcyhwcm9jZXNzLCBNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGEobG9hZFBhcmFtZXRl
cnMpKTsKICAgICBwcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgaHRtbERhdGEsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFVSTCYgYmFzZVVS
TCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkQWx0ZXJuYXRlSFRNTDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIC8v
IFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGluZyBhIGZhaWxp
bmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBzdGFydCBhIHNl
Y29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQgdGhlIHBhZ2Ug
bG9hZCBzdGF0ZSBmcm9tIGJlaW5nCiAgICAgLy8gaGFuZGxlZCBwcm9wZXJseS4KICAgICBpZiAo
bV9pc0Nsb3NlZCB8fCBtX2lzTG9hZGluZ0FsdGVybmF0ZUhUTUxTdHJpbmdGb3JGYWlsaW5nUHJv
dmlzaW9uYWxMb2FkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNsb3NlZCAob3Igb3RoZXIpOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFs
dGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhlcik6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNTIsMTYgKzEyNTIs
MTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFMKIAogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVh
ZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVSTCk7CiAgICAgbV9wcm9jZXNzLT5hc3N1bWVS
ZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCB1bnJlYWNoYWJsZVVSTCk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTChsb2FkUGFyYW1ldGVy
cyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRl
SFRNTChsb2FkUGFyYW1ldGVycykpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1l
cigpLnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEo
QVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9h
ZFdlYkFyY2hpdmVEYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYg
KG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0
YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTEyNzksMTYgKzEyNzksMTYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9i
amVjdCogdXMKICAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRhKHByb2Nlc3Mo
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7CiAgICAgYWRkUGxh
dGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSk7
CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBJbnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3Jl
ZW5Qb2ludCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0
ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Ns
b3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0
ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0
ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyOTgsMjAg
KzEyOTgsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVs
YXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLAogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFpbiB7IFVSTChV
UkwoKSwgdXJsU3RyaW5nKSB9KTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6TmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3RyaW5nLCBkb2N1
bWVudFBvaW50LCBzY3JlZW5Qb2ludCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayh1cmxTdHJpbmcsIGRv
Y3VtZW50UG9pbnQsIHNjcmVlblBvaW50KSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVz
c1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKCkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9wTG9hZGluZzogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3Rv
cExvYWRpbmc6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlk
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZh
bGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9hZGluZygp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcExvYWRpbmcoKSk7
CiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlKSB7CiAgICAgICAgIG1fcHJvdmlzaW9uYWxQYWdl
LT5jYW5jZWwoKTsKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBudWxscHRyOwpAQCAtMTMy
MSw3ICsxMzIxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKCkKIAogUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNvcmU6
OlJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJyZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgInJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlOwogCkBA
IC0xMzQ2LDcgKzEzNDYsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcAogICAgIGlmIChvcHRp
b25zLmNvbnRhaW5zKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RGlzYWJsZUNvbnRlbnRCbG9ja2Vy
cykpCiAgICAgICAgIG5hdmlnYXRpb24tPnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQo
ZmFsc2UpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxvYWQo
bmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWxv
YWQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0
YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTEzOTgsNyArMTM5OCw3IEBAIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQ
cm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBG
cmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94
eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51cmwo
KS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKQEAgLTE0
MTIsNyArMTQxMiw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29U
b0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgaWYgKCFtX2JhY2tG
b3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlzSW5TYW1lRG9jdW1lbnQoaXRlbSkpCiAg
ICAgICAgIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlQmFja0ZvcndhcmRO
YXZpZ2F0aW9uKGl0ZW0sIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLCBmcmFtZUxv
YWRUeXBlKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0Jh
Y2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCkgOiAw
LCBpdGVtLml0ZW1JRCgpLCBmcmFtZUxvYWRUeXBlLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQ6Ok5vLCBXVEY6Om51bGxvcHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdh
dGlvbklEKCkgOiAwLCBpdGVtLml0ZW1JRCgpLCBmcmFtZUxvYWRUeXBlLCBTaG91bGRUcmVhdEFz
Q29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3Bv
bnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC0x
NDIwLDE0ICsxNDIwLDE0IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6
Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojp0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNj
cm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0
cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeVJlc3RvcmVTY3JvbGxQb3Np
dGlvbigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlz
dChXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBhZGRlZCwgVmVjdG9yPFJlZjxXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtPj4mJiByZW1vdmVkKQpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVkKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGNvbnRy
b2xsZWQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29udHJv
bGxlZEJ5QXV0b21hdGlvbihjb250cm9sbGVkKSk7CiAgICAgbV9wcm9jZXNzLT5wcm9jZXNzUG9v
bCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0
U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihtX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Np
b25JRCgpLCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24pKTsKIH0KIApAQCAtMTUxNCw3ICsxNTE0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEluZGljYXRpbmcoYm9vbCBpbmRpY2F0aW5nKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbmRpY2F0aW5nKGluZGljYXRpbmcp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5kaWNhdGluZyhp
bmRpY2F0aW5nKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjphbGxvd3NSZW1vdGVJbnNwZWN0
aW9uKCkgY29uc3QKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVh
ckluc3BlY3RvclRhcmdldHMoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9y
VGFyZ2V0cygpCiB7Ci0gICAgU3RyaW5nIHBhZ2VUYXJnZXRJZCA9IG1ha2VTdHJpbmcoInBhZ2Ut
IiwgbV9wYWdlSUQpOworICAgIFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBtYWtlU3RyaW5nKCJwYWdl
LSIsIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y3Jl
YXRlSW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJn
ZXRUeXBlOjpQYWdlKTsKIH0KIApAQCAtMTU2MSw3ICsxNTYxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbDxDb2xvcj4mIGNvbG9yKQogCiAg
ICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYWNrZ3Jv
dW5kQ29sb3IoY29sb3IpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldEJhY2tncm91bmRDb2xvcihjb2xvcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRlbnRJbnNldCkKQEAgLTE1NzcsOSArMTU3Nyw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQgY29udGVudElu
c2V0KQogICAgIE1hY2hTZW5kUmlnaHQgZmVuY2UgPSBtX2RyYXdpbmdBcmVhLT5jcmVhdGVGZW5j
ZSgpOwogCiAgICAgYXV0byBmZW5jZUF0dGFjaG1lbnQgPSBJUEM6OkF0dGFjaG1lbnQoZmVuY2Uu
bGVha1NlbmRSaWdodCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXRGZW5jZWQoY29udGVu
dEluc2V0LCBmZW5jZUF0dGFjaG1lbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0VG9wQ29udGVudEluc2V0RmVuY2VkKGNvbnRlbnRJbnNldCwgZmVuY2VBdHRh
Y2htZW50KSk7CiAjZWxzZQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0VG9wQ29udGVudEluc2V0KGNvbnRlbnRJbnNldCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXQoY29udGVudEluc2V0KSk7CiAjZW5k
aWYKIH0KIApAQCAtMTU5MSw3ICsxNTkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVuZGVy
bGF5Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fdW5kZXJsYXlDb2xvciA9IGNvbG9y
OwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VW5kZXJsYXlDb2xvcihjb2xvciksIG1fcGFnZUlEKTsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VW5kZXJsYXlDb2xvcihjb2xvcikp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld1dpbGxTdGFydExpdmVSZXNpemUoKQpAQCAt
MTYwMCwxNCArMTYwMCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld1dpbGxTdGFydExpdmVS
ZXNpemUoKQogICAgICAgICByZXR1cm47CiAKICAgICBjbG9zZU92ZXJsYXllZFZpZXdzKCk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbFN0YXJ0TGl2ZVJl
c2l6ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxT
dGFydExpdmVSZXNpemUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3V2lsbEVuZExp
dmVSZXNpemUoKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxFbmRM
aXZlUmVzaXplKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3
V2lsbEVuZExpdmVSZXNpemUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWaWV3TmVl
ZHNEaXNwbGF5KGNvbnN0IFJlZ2lvbiYgcmVnaW9uKQpAQCAtMTcwMSw3ICsxNzAxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnZpZXdEaWRFbnRlcldpbmRvdygpCiAgICAgTGF5ZXJIb3N0aW5nTW9k
ZSBsYXllckhvc3RpbmdNb2RlID0gcGFnZUNsaWVudCgpLnZpZXdMYXllckhvc3RpbmdNb2RlKCk7
CiAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9kZSAhPSBsYXllckhvc3RpbmdNb2RlKSB7CiAgICAg
ICAgIG1fbGF5ZXJIb3N0aW5nTW9kZSA9IGxheWVySG9zdGluZ01vZGU7Ci0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhv
c3RpbmdNb2RlKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpKTsKICAgICB9CiB9CiAKQEAgLTE3
NTAsNyArMTc1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2aXR5U3RhdGVD
aGFuZ2UoKQogICAgIGF1dG8gYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gbV9hY3Rpdml0eVN0YXRl
Q2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID8gdGFrZU5leHRBY3Rpdml0eVN0YXRlQ2hhbmdl
SUQoKSA6IHN0YXRpY19jYXN0PEFjdGl2aXR5U3RhdGVDaGFuZ2VJRD4oQWN0aXZpdHlTdGF0ZUNo
YW5nZUFzeW5jaHJvbm91cyk7CiAKICAgICBpZiAoY2hhbmdlZCB8fCBhY3Rpdml0eVN0YXRlQ2hh
bmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAhbV9uZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWN0aXZpdHlTdGF0ZShtX2FjdGl2aXR5U3RhdGUsIGFj
dGl2aXR5U3RhdGVDaGFuZ2VJRCwgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcyks
IG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWN0aXZpdHlT
dGF0ZShtX2FjdGl2aXR5U3RhdGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgbV9uZXh0QWN0aXZp
dHlTdGF0ZUNoYW5nZUNhbGxiYWNrcykpOwogCiAgICAgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5n
ZUNhbGxiYWNrcy5jbGVhcigpOwogCkBAIC0xODUzLDcgKzE4NTMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bGF5ZXJIb3N0aW5nTW9kZURpZENoYW5nZSgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fbGF5ZXJIb3N0aW5nTW9kZSA9IGxheWVySG9zdGluZ01vZGU7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01v
ZGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0
aW5nTW9kZShsYXllckhvc3RpbmdNb2RlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3YWl0
Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlT
dGF0ZUNoYW5nZUlEKQpAQCAtMTg5NSwyMSArMTg5NSwyMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZlbnRWYWxpZCwg
Y29ucwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBrZXlib2FyZEV2
ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEluaXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwga2V5Ym9hcmRF
dmVudCwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJTZWxlY3Rp
b24oKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJTZWxlY3Rpb24oKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFyU2VsZWN0aW9uKCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRh
YmxlRWxlbWVudCgpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vs
ZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50
KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgYm9vbCwg
aW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTE5
MjAsNyArMTkyMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1hbmQoY29uc3Qg
U3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkCiAgICAgfQogCiAgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1hbmQoY29tbWFu
ZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RMZXZlbCgpCkBAIC0xOTI4LDcgKzE5MjgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6aW5jcmVhc2VMaXN0TGV2ZWwoKQogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxpc3RMZXZlbCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6SW5jcmVhc2VMaXN0TGV2ZWwoKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNyZWFzZUxpc3RMZXZlbCgpCkBAIC0xOTM2LDcgKzE5MzYsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjcmVhc2VMaXN0TGV2ZWwoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEZWNyZWFzZUxpc3RMZXZlbCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGVjcmVhc2VMaXN0TGV2ZWwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpjaGFuZ2VMaXN0VHlwZSgpCkBAIC0xOTQ0LDcgKzE5NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y2hhbmdlTGlzdFR5cGUoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFu
Z2VMaXN0VHlwZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hh
bmdlTGlzdFR5cGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYXNlV3JpdGluZ0Rp
cmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKQEAgLTE5NTIsNyArMTk1Miw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0
aW9uIGRpcmVjdGlvbikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFzZVdy
aXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldEJhc2VXcml0aW5nRGlyZWN0aW9uKGRpcmVjdGlvbikpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6dXBkYXRlRm9udEF0dHJpYnV0ZXNBZnRlckVkaXRvclN0YXRlQ2hhbmdl
KCkKQEAgLTE5NzYsNyArMTk3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZWVkc0ZvbnRB
dHRyaWJ1dGVzKGJvb2wgbmVlZHNGb250QXR0cmlidXRlcykKICAgICBtX25lZWRzRm9udEF0dHJp
YnV0ZXMgPSBuZWVkc0ZvbnRBdHRyaWJ1dGVzOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNz
KCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TmVlZHNG
b250QXR0cmlidXRlcyhuZWVkc0ZvbnRBdHRyaWJ1dGVzKSwgbV9wYWdlSUQpOworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKG5lZWRzRm9udEF0
dHJpYnV0ZXMpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6Om1haW50YWluc0luYWN0aXZlU2Vs
ZWN0aW9uKCkgY29uc3QKQEAgLTE5OTksNyArMTk5OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
Y2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdEFsbCgpCkBAIC0yMDA3LDcgKzIwMDcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2VsZWN0QWxsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZWxlY3RBbGwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGVjdXRlRWRpdENv
bW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudCwg
V1RGOjpGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCkBAIC0yMDE4LDcgKzIwMTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRD
b21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYQogICAgIH0K
IAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRD
b21tYW5kV2l0aENhbGxiYWNrKGNvbW1hbmROYW1lLCBhcmd1bWVudCwgY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENvbW1hbmRX
aXRoQ2FsbGJhY2soY29tbWFuZE5hbWUsIGFyZ3VtZW50LCBjYWxsYmFja0lEKSk7CiB9CiAgICAg
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29t
bWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpCkBAIC0yMDMxLDcgKzIwMzEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFu
ZE5hbWUsIGNvbnN0IFN0cmluZyYgYQogICAgIGlmIChjb21tYW5kTmFtZSA9PSBpZ25vcmVTcGVs
bGluZ0NvbW1hbmROYW1lKQogICAgICAgICArK21fcGVuZGluZ0xlYXJuT3JJZ25vcmVXb3JkTWVz
c2FnZUNvdW50OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVj
dXRlRWRpdENvbW1hbmQoY29tbWFuZE5hbWUsIGFyZ3VtZW50KSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5kTmFtZSwgYXJn
dW1lbnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0
U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRl
cyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtMjA0Miw3ICsyMDQyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3Rh
cnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWIKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEZv
bnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpmb250QXR0cmlidXRlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yMDYzLDcgKzIw
NjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RWRpdGFibGUoYm9vbCBlZGl0YWJsZSkKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RWRpdGFibGUoZWRpdGFibGUpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RWRpdGFibGUoZWRpdGFibGUp
KTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNZWRpYVN0cmVhbUNhcHR1cmVNdXRl
ZChib29sIG11dGVkKQpAQCAtMjEyOCw5ICsyMTI4LDkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBl
cmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBhY3Rpb24sIERy
YWcKIAogICAgIEFTU0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAgV2ViU2VsZWN0
aW9uRGF0YSBzZWxlY3Rpb24oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihh
Y3Rpb24sIGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9u
KCksIGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBzZWxlY3Rpb24sIGRy
YWdEYXRhLmZsYWdzKCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEuY2xpZW50UG9zaXRp
b24oKSwgZHJhZ0RhdGEuZ2xvYmFsUG9zaXRpb24oKSwgZHJhZ0RhdGEuZHJhZ2dpbmdTb3VyY2VP
cGVyYXRpb25NYXNrKCksIHNlbGVjdGlvbiwgZHJhZ0RhdGEuZmxhZ3MoKSkpOwogI2Vsc2UKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlLCBzYW5kYm94
RXh0ZW5zaW9uc0ZvclVwbG9hZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YSwgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpKTsKICNlbmRpZgog
fQogCkBAIC0yMTYwLDcgKzIxNjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhZ0VuZGVkKGNv
bnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGdsbwogewogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0aW9uLCBnbG9i
YWxQb3NpdGlvbiwgb3BlcmF0aW9uKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRyYWdFbmRlZChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIG9wZXJhdGlv
bikpOwogICAgIHNldERyYWdDYXJldFJlY3QoeyB9KTsKIH0KIApAQCAtMjE3MiwxMyArMjE3Miwx
MyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdPcGVyYXRpb24oYm9vbCBoYW5k
bGVkKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0RHJhZygpCiB7CiAgICAgaWYgKGhhc1J1
bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkU3RhcnREcmFnKCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkU3RhcnREcmFnKCkpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdD
YW5jZWxsZWQoKQogewogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdDYW5jZWxsZWQoKSwgbV9wYWdlSUQp
OworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnQ2FuY2VsbGVkKCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kRHJhZ2dpbmcoKQpAQCAtMjI3Nyw3ICsyMjc3LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVudCgpCiAgICAg
fQogCiAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICJVSVByb2Nlc3M6IHNlbnQgbW91c2UgZXZlbnQg
JXMgKHF1ZXVlIHNpemUgJXp1KSIsIHdlYk1vdXNlRXZlbnRUeXBlU3RyaW5nKGV2ZW50VHlwZSks
IG1fbW91c2VFdmVudFF1ZXVlLnNpemUoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQpKTsKIH0KIAogI2lmIE1FUkdFX1dIRUVMX0VW
RU5UUwpAQCAtMjQzNyw3ICsyNDM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUtleWJv
YXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKICAgICBpZiAo
bV9rZXlFdmVudFF1ZXVlLnNpemUoKSA9PSAxKSB7IC8vIE90aGVyd2lzZSwgc2VudCBmcm9tIERp
ZFJlY2VpdmVFdmVudCBtZXNzYWdlIGhhbmRsZXIuCiAgICAgICAgIExPRyhLZXlIYW5kbGluZywg
IiBVSSBwcm9jZXNzOiBzZW50IGtleUV2ZW50IGZyb20gaGFuZGxlS2V5Ym9hcmRFdmVudCIpOwot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50KGV2ZW50
KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVudChl
dmVudCkpOwogICAgIH0KIH0KIApAQCAtMjY0Myw3ICsyNjQzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmhhbmRsZVRvdWNoRXZlbnRTeW5jaHJvbm91c2x5KE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2
ZW50KQogCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKICAg
ICBib29sIGhhbmRsZWQgPSBmYWxzZTsKLSAgICBib29sIHJlcGx5UmVjZWl2ZWQgPSBtX3Byb2Nl
c3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYyhldmVudCksIE1l
c3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYzo6UmVwbHkoaGFuZGxlZCksIG1fcGFnZUlE
LCAxX3MpOworICAgIGJvb2wgcmVwbHlSZWNlaXZlZCA9IHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpUb3VjaEV2ZW50U3luYyhldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50
U3luYzo6UmVwbHkoaGFuZGxlZCksIDFfcyk7CiAgICAgLy8gSWYgdGhlIHN5bmMgcmVxdWVzdCBo
YXMgdGltZWQgb3V0LCB3ZSBzaG91bGQgY29uc2lkZXIgdGhlIGV2ZW50IGhhbmRsZWQuIFRoZSBX
ZWIgUHJvY2VzcyBpcyB0b28gYnVzeSB0byBhbnN3ZXIgYW55IHF1ZXN0aW9ucywgc28gdGhlIGRl
ZmF1bHQgYWN0aW9uIGlzIGFsc28gbGlrZWx5IHRvIGhhdmUgaXNzdWVzLgogICAgIGlmICghcmVw
bHlSZWNlaXZlZCkKICAgICAgICAgaGFuZGxlZCA9IHRydWU7CkBAIC0yNjg3LDcgKzI2ODcsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRpdmVXZWJUb3Vj
aEV2ZW50JiBldmVudCkKICAgICBpZiAoIW1faXNQYWdlU3VzcGVuZGVkKSB7CiAgICAgICAgIG1f
dG91Y2hFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7CiAgICAgICAgIG1fcHJvY2Vzcy0+cmVzcG9u
c2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCkpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGlmIChtX3RvdWNoRXZlbnRRdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGJvb2wg
aXNFdmVudEhhbmRsZWQgPSBmYWxzZTsKQEAgLTI3MDgsMTIgKzI3MDgsMTIgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZl
bnQpCiAjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQogdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNl
bFBvaW50ZXIoV2ViQ29yZTo6UG9pbnRlcklEIHBvaW50ZXJJZCwgY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmIGRvY3VtZW50UG9pbnQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDYW5jZWxQb2ludGVyKHBvaW50ZXJJZCwgZG9jdW1lbnRQb2ludCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxQb2ludGVyKHBvaW50ZXJJZCwg
ZG9jdW1lbnRQb2ludCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dG91Y2hXaXRoSWRlbnRp
Zmllcldhc1JlbW92ZWQoV2ViQ29yZTo6UG9pbnRlcklEIHBvaW50ZXJJZCkKIHsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoV2l0aElkZW50aWZpZXJXYXNSZW1v
dmVkKHBvaW50ZXJJZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpU
b3VjaFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChwb2ludGVySWQpKTsKIH0KICNlbmRpZgogCkBA
IC0yNzIyLDcgKzI3MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2Nyb2xsQnkoU2Nyb2xsRGly
ZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTY3JvbGxCeShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbEJ5KGRpcmVjdGlvbiwg
Z3JhbnVsYXJpdHkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbklu
VmlzaWJsZUFyZWEoKQpAQCAtMjczMCw3ICsyNzMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNl
bnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCkpOwogfQog
CiBjbGFzcyBXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8UG9saWN5RGVjaXNpb25TZW5kZXI+IHsKQEAgLTI4NzMsNyArMjg3Myw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24s
IEFQSTo6TmF2aWdhdGlvbioKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBh
Z2UodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBm
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpIYXNJ
bnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91
c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImNvbW1pdFByb3Zpc2lvbmFsUGFnZTogcHJldmlvdXNQSUQgPSAlaSwgbmV3UElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3By
b3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFtZUlESW5QcmV2aW91
c1Byb2Nlc3MgPSBtX21haW5GcmFtZSA/IG1ha2VPcHRpb25hbChtX21haW5GcmFtZS0+ZnJhbWVJ
RCgpKSA6IFdURjo6bnVsbG9wdDsKIApAQCAtMjg5Niw3ICsyODk2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQKIAogICAgIC8vIFRoZXJlIGlzIG5vIHdheSB3ZSdsbCBiZSBhYmxlIHRvIHJl
dHVybiB0byB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcGFnZSBzbyBjbG9zZSBpdC4KICAgICBp
ZiAoIWRpZFN1c3BlbmRQcmV2aW91c1BhZ2UpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgcGFnZUlEKCkpOworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDbG9zZSgpKTsKIAogICAgIHN3YXBUb1dlYlByb2Nlc3MobV9wcm92aXNpb25h
bFBhZ2UtPnByb2Nlc3MoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnRha2VEcmF3aW5nQXJlYSgpLCBt
X3Byb3Zpc2lvbmFsUGFnZS0+bWFpbkZyYW1lKCkpOwogCkBAIC0yOTEzLDcgKzI5MTMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZp
Z2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlx
dWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlUHJveHksIFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBw
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRh
PiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWki
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBuZXdQcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIG5ld1Byb2Nlc3NQSUQgPSAlaSwgaGFz
U3VzcGVuZGVkUGFnZSA9ICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3Bl
bmRlZFBhZ2VQcm94eSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmlnYXRpb24g
JSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdh
dGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKIAogICAgIGlmIChtX3Byb3Zp
c2lvbmFsUGFnZSkgewpAQCAtMjkzOCw3ICsyOTM4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNv
bnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IHMKICAgICBpZiAobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkgJiYgKG5hdmlnYXRp
b24ubG9ja0JhY2tGb3J3YXJkTGlzdCgpID09IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyB8fCBu
YXZpZ2F0aW9uLmxvY2tIaXN0b3J5KCkgPT0gTG9ja0hpc3Rvcnk6OlllcykpIHsKICAgICAgICAg
Ly8gSWYgV2ViQ29yZSBpcyBzdXBwb3NlZCB0byBsb2NrIHRoZSBoaXN0b3J5IGZvciB0aGlzIGxv
YWQsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIG5lZWRzIHRvIGtub3cgYWJvdXQgdGhlIGN1cnJlbnQg
aGlzdG9yeSBpdGVtIHNvIGl0IGNhbiB1cGRhdGUKICAgICAgICAgLy8gaXQgaW5zdGVhZCBvZiBj
cmVhdGluZyBhIG5ldyBvbmUuCi0gICAgICAgIG5ld1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldEN1cnJlbnRIaXN0b3J5SXRlbUZvclJlYXR0YWNoKG1fYmFja0ZvcndhcmRMaXN0
LT5jdXJyZW50SXRlbSgpLT5pdGVtU3RhdGUoKSksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZFRv
UHJvY2VzcyhuZXdQcm9jZXNzLCBNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q3VycmVudEhpc3RvcnlJ
dGVtRm9yUmVhdHRhY2gobV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1TdGF0
ZSgpKSk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IFdvcmsgb3V0IHRpbWluZyBvZiByZXNwb25k
aW5nIHdpdGggdGhlIGxhc3QgcG9saWN5IGRlbGVnYXRlLCBldGMKQEAgLTI5ODgsNyArMjk4OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQog
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VyQWdlbnQobV91c2VyQWdlbnQp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlckFnZW50KG1f
dXNlckFnZW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUpCkBAIC0zMDI1LDcgKzMw
MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMoKQogCiAgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKQEAgLTMwMzUsNyArMzAzNSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKQogCiAgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSB0cnVlOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3Rp
dmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnN1
cHBvcnRzVGV4dEVuY29kaW5nKCkgY29uc3QKQEAgLTMwNTIsNyArMzA1Miw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmdOYW1lKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXN0b21UZXh0RW5j
b2RpbmdOYW1lKGVuY29kaW5nTmFtZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nTmFtZSkpOwogfQogCiBT
ZXNzaW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxib29s
IChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiYgZmlsdGVyKSBjb25zdApAQCAtMzA3NCw3ICsz
MDc0LDcgQEAgU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVu
Y3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vz
c2lvblN0YXRlLCBib29sIG5hdmlnYXRlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0
ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fc2Vzc2lvblJlc3RvcmF0
aW9uUmVuZGVyVHJlZVNpemUgPSAwOwogICAgIG1faGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQg
PSBmYWxzZTsKQEAgLTMwODMsNyArMzA4Myw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoU2Vzc2lvblN0YXRlIHNlc3NpCiAK
ICAgICBpZiAoaGFzQmFja0ZvcndhcmRMaXN0KSB7CiAgICAgICAgIG1fYmFja0ZvcndhcmRMaXN0
LT5yZXN0b3JlRnJvbVN0YXRlKFdURk1vdmUoc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0
YXRlKSk7Ci0gICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3Jl
U2Vzc2lvbihtX2JhY2tGb3J3YXJkTGlzdC0+aXRlbVN0YXRlcygpKSwgbV9wYWdlSUQpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vzc2lvbihtX2JhY2tGb3J3YXJk
TGlzdC0+aXRlbVN0YXRlcygpKSk7CiAKICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFn
ZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0Q2Fu
R29CYWNrKHRyYW5zYWN0aW9uLCBtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0l0ZW0oKSk7CkBAIC0z
MTMxLDcgKzMxMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dFpvb21GYWN0b3IoZG91
YmxlIHpvb21GYWN0b3IpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRa
b29tRmFjdG9yKG1fdGV4dFpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFRleHRab29tRmFjdG9yKG1fdGV4dFpvb21GYWN0b3IpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2Vab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQpA
QCAtMzE0Niw3ICszMTQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2Vab29tRmFjdG9y
KGRvdWJsZSB6b29tRmFjdG9yKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQ
YWdlWm9vbUZhY3RvcihtX3BhZ2Vab29tRmFjdG9yKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlWm9vbUZhY3RvcihtX3BhZ2Vab29tRmFjdG9yKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGRvdWJsZSBw
YWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRab29tRmFjdG9yKQpAQCAtMzE2Miw3ICszMTYyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBh
Z2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFoKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhtX3BhZ2Vab29tRmFjdG9yLCBtX3RleHRab29t
RmFjdG9yKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdl
QW5kVGV4dFpvb21GYWN0b3JzKG1fcGFnZVpvb21GYWN0b3IsIG1fdGV4dFpvb21GYWN0b3IpKTsK
IH0KIAogZG91YmxlIFdlYlBhZ2VQcm94eTo6cGFnZVpvb21GYWN0b3IoKSBjb25zdApAQCAtMzE5
Miw3ICszMTkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFnZShkb3VibGUgc2NhbGUs
IGNvbnN0IEludFBvaW50JiBvcmlnaW4pCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNjYWxlUGFnZShzY2FsZSwgb3JpZ2luKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNjYWxlUGFnZShzY2FsZSwgb3JpZ2luKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzY2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhkb3VibGUgc2NhbGUsIGNvbnN0IEludFBv
aW50JiBjZW50ZXJJblZpZXdDb29yZGluYXRlcykKQEAgLTMyMDQsNyArMzIwNCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzY2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhkb3VibGUgc2NhbGUsIGNv
bnN0IEludFBvaW50JiBjZW50CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxl
UGFnZUluVmlld0Nvb3JkaW5hdGVzKHNjYWxlLCBjZW50ZXJJblZpZXdDb29yZGluYXRlcyksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2FsZVBhZ2VJblZpZXdDb29y
ZGluYXRlcyhzY2FsZSwgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNjYWxlVmlldyhkb3VibGUgc2NhbGUpCkBAIC0zMjE2LDcgKzMyMTYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVWaWV3KGRvdWJsZSBzY2FsZSkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVWaWV3KHNjYWxlKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlVmlldyhzY2FsZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCkBA
IC0zMjM1LDcgKzMyMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93U2NyZWVuRGlkQ2hh
bmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6V2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlE
KSk7CiB9CiAKIGZsb2F0IFdlYlBhZ2VQcm94eTo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdApA
QCAtMzI3NCw3ICszMjc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlTZXR0
aW5nc0RpZENoYW5nZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2Vzc2li
aWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6QWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBmaXhlZCkKQEAgLTMyOTEsNyArMzI5
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VGaXhlZExheW91dChmaXhlZCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VGaXhlZExheW91
dChmaXhlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNv
bnN0IEludFNpemUmIHNpemUpCkBAIC0zMzA0LDcgKzMzMDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEZpeGVkTGF5b3V0U2l6ZShzaXplKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZpeGVkTGF5b3V0U2l6ZShzaXplKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihi
b29sIGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKQpAQCAtMzMxNyw3ICszMzE3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wg
YWx3YXlzU2hvd3NIb3Jpem9udGFsU2MKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Ny
b2xsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlz
U2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihi
b29sIGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcikKQEAgLTMzMzAsNyArMzMzMCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYm9vbCBhbHdh
eXNTaG93c1ZlcnRpY2FsU2Nyb2xsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihhbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NW
ZXJ0aWNhbFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcikpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29y
ZTo6TGF5b3V0TWlsZXN0b25lPiBtaWxlc3RvbmVzKQpAQCAtMzM0Myw3ICszMzQzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNv
cmU6OkxheW91dE1pbGVzdG9uZT4KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlz
dGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcykp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25z
KGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQpAQCAtMzM1Niw3ICszMzU2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1cHByZXNzQW5p
bWF0aW9ucykKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U3VwcHJlc3NTY3Jv
bGxiYXJBbmltYXRpb25zKHN1cHByZXNzQW5pbWF0aW9ucyksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoc3VwcHJl
c3NBbmltYXRpb25zKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpydWJiZXJCYW5kc0F0TGVm
dCgpIGNvbnN0CkBAIC0zNDA4LDcgKzM0MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RW5h
YmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGJvb2wgZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaQog
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJh
bmRpbmcoZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhlbmFibGVW
ZXJ0aWNhbFJ1YmJlckJhbmRpbmcpKTsKIH0KICAgICAKIGJvb2wgV2ViUGFnZVByb3h5Ojp2ZXJ0
aWNhbFJ1YmJlckJhbmRpbmdJc0VuYWJsZWQoKSBjb25zdApAQCAtMzQyNSw3ICszNDI1LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldEVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKGJvb2wg
ZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckIKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJh
bmRpbmcpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxl
SG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpKTsK
IH0KICAgICAKIGJvb2wgV2ViUGFnZVByb3h5Ojpob3Jpem9udGFsUnViYmVyQmFuZGluZ0lzRW5h
YmxlZCgpIGNvbnN0CkBAIC0zNDQyLDcgKzM0NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJvb2wgYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQ
YQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYWNrZ3JvdW5kRXh0ZW5kc0Jl
eW9uZFBhZ2UoYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShiYWNr
Z3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmJhY2tn
cm91bmRFeHRlbmRzQmV5b25kUGFnZSgpIGNvbnN0CkBAIC0zNDU5LDcgKzM0NTksNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbk1vZGUoV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9k
ZSBtb2RlKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTW9k
ZShtb2RlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2lu
YXRpb25Nb2RlKG1vZGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25C
ZWhhdmVzTGlrZUNvbHVtbnMoYm9vbCBiZWhhdmVzTGlrZUNvbHVtbnMpCkBAIC0zNDcxLDcgKzM0
NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1u
cyhib29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkJlaGF2
ZXNMaWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFBhZ2VMZW5ndGgoZG91YmxlIHBhZ2VMZW5ndGgpCkBAIC0zNDgzLDcgKzM0ODMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxlbmd0aChkb3VibGUgcGFnZUxlbmd0aCkKIAog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VMZW5ndGgocGFn
ZUxlbmd0aCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0R2FwQmV0d2VlblBhZ2VzKGRv
dWJsZSBnYXApCkBAIC0zNDk1LDcgKzM0OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0R2Fw
QmV0d2VlblBhZ2VzKGRvdWJsZSBnYXApCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEdhcEJldHdlZW5QYWdlcyhnYXApLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0R2FwQmV0d2VlblBhZ2VzKGdhcCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChib29sIGxpbmVHcmlkRW5hYmxlZCkKQEAg
LTM1MDcsNyArMzUwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uTGluZUdy
aWRFbmFibGVkKGJvb2wgbGluZUdyaWRFbmFibGVkKQogICAgIAogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJsZWQp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkxp
bmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJsZWQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnBhZ2VTY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgc2NhbGVGYWN0b3IpCkBAIC0zNTMyLDI3
ICszNTMyLDI3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBT
dHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZ01h
dGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywg
bWF4TWF0Y2hDb3VudCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZyhjb25z
dCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hD
b3VudCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJp
bmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENv
dW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQz
Ml90IG1hdGNoSW5kZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRJbWFnZUZvckZpbmRNYXRjaChtYXRjaEluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldEltYWdlRm9yRmluZE1hdGNoKG1hdGNoSW5kZXgpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdEZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgp
CiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RGaW5kTWF0
Y2gobWF0Y2hJbmRleCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZWxlY3RGaW5kTWF0Y2gobWF0Y2hJbmRleCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlk
ZUZpbmRVSSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIaWRl
RmluZFVJKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIaWRlRmlu
ZFVJKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENv
dW50KQpAQCAtMzU2MCw3ICszNTYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50U3RyaW5n
TWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0
aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+
JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxl
Y3Rpb25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFjaykKQEAgLTM1NzEsNyArMzU3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBs
YWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcm
CiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZU1hdGNo
ZXMoV1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlvbk9ubHks
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVw
bGFjZU1hdGNoZXMoV1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNlbWVudFRleHQsIHNlbGVj
dGlvbk9ubHksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaElu
aXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQpAQCAtMzU5NiwxNCArMzU5NiwxNCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBm
b3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29y
bGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVu
Y3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9u
LCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKICAgICBBU1NFUlQobWFpbkZyYW1lKCktPmZyYW1lSUQoKSAhPSBmcmFt
ZUlEKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFT
Y3JpcHRJbkZyYW1lKGZyYW1lSUQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0
SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGNhbGxiYWNrSUQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0
aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM2MTQsNyArMzYxNCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9u
PHZvaWQgKGNvbnN0CiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVl
RXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQpAQCAtMzYyNiw3ICszNjI2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNvdXJj
ZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGMKICAg
ICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJ
RCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VGb3JG
cmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNh
bGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmco
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzYzOCw3ICszNjM4LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldENvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
LCBDYWxsYmEKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5h
ZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7CiB9CiAKICNp
ZiBQTEFURk9STShDT0NPQSkKQEAgLTM2NDksNyArMzY0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IEF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0Fz
QXR0cmlidXRlZFN0cmluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQp
OworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNB
c0F0dHJpYnV0ZWRTdHJpbmcoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogI2Vu
ZGlmCiAKQEAgLTM2NjIsNyArMzY2Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29k
ZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFjCiAgICAg
CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQp
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9m
aWxlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzY3NCw3
ICszNjc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQo
V1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLAogICAgIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERl
cGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGlu
Z1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAg
LTM2ODYsNyArMzY4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxE
YXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiAgICAgfQogCiAgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxE
YXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0Q29udGVudHNBc01IVE1MRGF0YShjYWxsYmFja0lEKSk7CiB9CiAjZW5kaWYKIApAQCAtMzY5
OCw3ICszNjk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNB
c1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmkKICAgICB9CiAgICAgCiAgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRl
bnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJRCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlv
bjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQpAQCAtMzcwOSw3ICszNzA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlv
bkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGIKICAgICB9
CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxl
Y3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShjYWxsYmFja0lE
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM3MjAsNyArMzcyMCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSwgRnVuY3Rpb248dm9pCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9
IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZy
YW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFj
a0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUo
V2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvdXJjZVVSTCwgRnVuY3Rpb248dm9p
ZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
QEAgLTM3MzEsNyArMzczMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFG
cm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAgICAgfQogICAg
IAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VE
YXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNv
dXJjZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygp
LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZG
cmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM3NDIsNyArMzc0Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUtPmZy
YW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFj
az4mJiBjYWxsYmFjaykKQEAgLTM3NzYsNyArMzc3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpm
b3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIAogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxi
YWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
ICAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQo
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChj
YWxsYmFja0lEKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3Jj
ZVJlcGFpbnQoY2FsbGJhY2tJRCkpOwogfQogCiBzdGF0aWMgT3B0aW9uU2V0PElQQzo6U2VuZE9w
dGlvbj4gcHJpbnRpbmdTZW5kT3B0aW9ucyhib29sIGlzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0
aW9uKQpAQCAtMzgwMiw3ICszODAyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2Vz
RGlkQ2hhbmdlKCkKICAgICAvLyBldmVuIGlmIG5vdGhpbmcgY2hhbmdlZCBpbiBVSSBwcm9jZXNz
LCBzbyB0aGF0IG92ZXJyaWRlcyBnZXQgcmVtb3ZlZC4KIAogICAgIC8vIFByZWZlcmVuY2VzIG5l
ZWQgdG8gYmUgdXBkYXRlZCBkdXJpbmcgc3luY2hyb25vdXMgcHJpbnRpbmcgdG8gbWFrZSAicHJp
bnQgYmFja2dyb3VuZHMiIHByZWZlcmVuY2Ugd29yayB3aGVuIHRvZ2dsZWQgZnJvbSBhIHByaW50
IGRpYWxvZyBjaGVja2JveC4KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3RvcmUoKSksIG1fcGFnZUlELCBwcmlu
dGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZShwcmVmZXJlbmNlc1N0
b3JlKCkpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRp
b24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSh1aW50NjRf
dCBmcmFtZUlEKQpAQCAtMzkzMiw4ICszOTMyLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJgog
ICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5h
dmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiAK
LSAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBp
ZCAlaSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0
ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgdXJsLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUi
IFBSSXU2NCAiIGluIHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwg
JXMiLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBm
cmFtZUlELCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCks
IGZyYW1lSUQpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFu
c2FjdGlvbigpOwogCkBAIC0zOTg1LDcgKzM5ODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3Qg
Zgogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJX
ZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwg
dXJsICVzIiwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBh
Z2VDbGllbnQoKSk7CiAKQEAgLTQwMTQsNyArNDAxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChS
ZWY8CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSwgV2Vi
Q29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJ
RCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC00MDI3LDcgKzQwMjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cgogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENhbmNlbENs
aWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3Rl
Y3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDA3NCw4ICs0MDc0LDggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTZWN1cmkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJM
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29u
dGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgTE9HKExvYWRp
bmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdlYiBwcm9jZXNzIHBp
ZCAlaSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlzaW9uYWxVUkwgJXMi
LCBtX3BhZ2VJRCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwu
dXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlELCBlcnJvci5kb21h
aW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgTE9HKExvYWRpbmcs
ICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdlYiBwcm9jZXNzIHBpZCAl
aSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlzaW9uYWxVUkwgJXMiLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNp
b25hbFVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9
ICVkIiwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwg
ZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkp
OwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApA
QCAtNDE0MSw5ICs0MTQxLDkgQEAgc3RhdGljIGJvb2wgaXNOb25VbmlxdWVOYXZpZ2F0aW9uV2l0
aExpbmtEZWNvcmF0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSByZXEKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0
b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNvbnN0IFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1
Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250
ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgTE9HKExvYWRpbmcsICIoTG9h
ZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBu
YXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9wYWdlSUQsIG5hdmlnYXRpb25JRCk7CisgICAgTE9HKExv
YWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRG
b3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9wYWdlSUQudG9VSW50NjQoKSwgbmF2
aWdhdGlvbklEKTsKICAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBBZnRlciBs
b2FkIGNvbW1pdCwgYmFjay9mb3J3YXJkIGxpc3QgaXMgbm93OiVzIiwgbV9iYWNrRm9yd2FyZExp
c3QtPmxvZ2dpbmdTdHJpbmcoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImRpZENvbW1pdExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI1NCw3ICs0MjU0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00Mjc4LDcgKzQy
NzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZp
bmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQ
cm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lIC0gV2ViUGFnZVByb3h5ICVwIHdpdGggbmF2aWdh
dGlvbklEICUiIFBSSXU2NCAiIGRpZEZpbmlzaExvYWQiLCB0aGlzLCBuYXZpZ2F0aW9uSUQpOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFt
ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFt
ZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7
CiAKQEAgLTQzMjMsNyArNDMyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRGYWlsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0
ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAl
ZCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwg
ZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkp
OwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApA
QCAtNDM2NSw3ICs0MzY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELAogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGUsIFVSTCYmIHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ1MzUsNyArNDUzNSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIGJvb2wsIFdlYkZyYW1l
UG9saWN5TGlzdGVuCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
aWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELAotICAgIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRh
LCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
CisgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5l
cklEKQogewogICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZCht
X3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4p
LCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEp
LApAQCAtNDU0Myw3ICs0NTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3IKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sCi0gICAgV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1l
SW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBs
aXN0ZW5lcklEKQogewpAQCAtNDU1MSw3ICs0NTUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3gKICAgICBNRVNTQUdFX0NIRUNLKHByb2Nlc3MsIGZyYW1lKTsKIAogICAgIGF1dG8gc2VuZGVy
ID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklELCBwcm9jZXNzID0g
cHJvY2Vzcy5jb3B5UmVmKCldIChhdXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxp
c3RlbmVySUQsIGFyZ3MuLi4pLCBtX3BhZ2VJRCk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5l
cklELCBhcmdzLi4uKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgfSk7CiAKICAgICBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHByb2Nlc3MuY29weVJlZigpLCAqZnJhbWUsIFdU
Rk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIG5hdmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0
aW9uQWN0aW9uRGF0YSksIFdURk1vdmUoZnJhbWVJbmZvRGF0YSksIG9yaWdpbmF0aW5nUGFnZUlE
LApAQCAtNDU1OSw3ICs0NTU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3gKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELAotICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZy
YW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKKyAgICBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVy
PiYmIHNlbmRlcikKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiAtIE9yaWdpbmFsIFVSTCAlcywgY3VycmVudCB0YXJnZXQg
VVJMICVzIiwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC00Njk5LDcgKzQ2OTksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICBpZiAoIWZyb21BUEkgJiYgb3JpZ2lu
YXRpbmdGcmFtZSA9PSAmZnJhbWUpCiAgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBkZXN0
aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7CiAgICAgICAgIGVsc2UgaWYgKCFmcm9tQVBJKQot
ICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFn
ZShvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyKTsKKyAgICAgICAgICAgIHNvdXJjZUZyYW1l
SW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBv
cmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6
IG51bGxwdHIpOwogCiAgICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gcHJvY2Vz
cy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJl
VG9rZW5JZGVudGlmaWVyKTsKICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9z
aG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCkBAIC00
NzcyLDcgKzQ3NzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNv
bnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZwogI2VuZGlmCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRf
dCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEm
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwK
LSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBv
cmlnaW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAg
ICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7
CkBAIC00NzkwLDcgKzQ3OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpcwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBib29sIGlz
TWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwK
KyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CkBAIC00ODIxLDcgKzQ4MjEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaQogICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVC
cm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKIAogICAgICAgICBhdXRvIHNl
bmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklE
XSAoYXV0by4uLiBhcmdzKSB7Ci0gICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBh
cmdzLi4uKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pKTsK
ICAgICAgICAgfSk7CiAKICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rp
b24sIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKQEAgLTQ4NzAsNyAr
NDg3MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAgICAgICAgIEFTU0VSVF9VTlVTRUQo
c2FmZUJyb3dzaW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCiAgICAgICAgIGF1
dG8gc2VuZGVyID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3Rl
bmVySUQsIHByb2Nlc3MgPSBXVEZNb3ZlKHByb2Nlc3MpXSAoYXV0by4uLiBhcmdzKSB7Ci0gICAg
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLiksIG1fcGFnZUlEKTsKKyAgICAg
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CiAgICAgICAgIH0pOwogICAgICAgICAKICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bihwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb24uZ2V0KCksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShz
ZW5kZXIpKTsKQEAgLTQ5MDcsNyArNDkwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsU3Vi
bWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25zCiAg
ICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIHNvdXJjZUZyYW1lKTsKIAogICAgIG1fZm9ybUNs
aWVudC0+d2lsbFN1Ym1pdEZvcm0oKnRoaXMsICpmcmFtZSwgKnNvdXJjZUZyYW1lLCB0ZXh0Rmll
bGRWYWx1ZXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5v
YmplY3QoKSkuZ2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZy
YW1lSUQsIGxpc3RlbmVySURdKCkgewotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0oZnJhbWVJRCwgbGlzdGVuZXJJRCksIG1f
cGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGludWVXaWxsU3Vi
bWl0Rm9ybShmcmFtZUlELCBsaXN0ZW5lcklEKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ5MjMsNyAr
NDkyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
IHByb2Nlc3MsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCB1aW50NjRfdCBm
cmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZE5hdmln
YXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFT
aGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3Rl
Y3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDk0Myw3ICs0OTQzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTFN0cmluZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGll
bnRSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0
cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5n
LCB1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDk3MCw3ICs0OTcw
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBl
cmZvcm1TZXJ2ZXJSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Ms
IGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
VVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01MDE4LDE0ICs1MDE4LDE0IEBAIFdF
QlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU182CiAjZW5kaWYKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgTUVT
U0FHRV9DSEVDSyhtX3Byb2Nlc3MsIG1fcHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLmZyYW1lSUQpKTsKLSAgICBhdXRvIG9yaWdpbmF0aW5nRnJhbWVJbmZvID0gQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG1fcHJvY2Vzcy0+
d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJRCkpOworICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUlu
Zm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3Jp
Z2luYXRpbmdQYWdlSUQgPyBtX3Byb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6
IG51bGxwdHIpOwogICAgIGF1dG8gbWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUgPyBtX21haW5G
cmFtZS0+dXJsKCkgOiBVUkwoKTsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1ZXN0LCBy
ZXBseSA9IFdURk1vdmUocmVwbHkpXSAoUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghbmV3UGFnZSkgewotICAgICAgICAgICAgcmVwbHkoMCwgV1RG
OjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJlcGx5KFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01Mzc0LDcgKzUzNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbQogdm9pZCBXZWJQYWdlUHJveHk6OnNob3dTaGFyZVNo
ZWV0KGNvbnN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNoYXJlRGF0YSwgU2hhcmVTaGVldENh
bGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrSURdIChib29sIGFjY2VzcykgewotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlU2hhcmVTaGVldChhY2Nlc3MsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBs
ZXRlU2hhcmVTaGVldChhY2Nlc3MsIGNhbGxiYWNrSUQpKTsKICAgICB9OwogICAgIAogICAgIHBh
Z2VDbGllbnQoKS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKQEAgLTU0MDYsNyArNTQwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNZWRp
YVZvbHVtZShmbG9hdCB2b2x1bWUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRNZWRpYVZvbHVtZSh2b2x1bWUpLCBtX3BhZ2VJRCk7ICAgIAorICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1lKHZvbHVtZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIHN0
YXRlKQpAQCAtNTQyMiw3ICs1NDIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE11dGVkKFdl
YkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBzdGF0ZSkKICAgICAgICAgVXNl
ck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLm11dGVDYXB0dXJlTWVkaWFTdHJlYW1z
RXhjZXB0SW4oKnRoaXMpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldE11dGVkKHN0YXRlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldE11dGVkKHN0YXRlKSk7CiAgICAgYWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7
IEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRp
YSB9KTsKIH0KIApAQCAtNTQ0NCw3ICs1NDQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BN
ZWRpYUNhcHR1cmUoKQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcE1lZGlhQ2FwdHVy
ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcE1lZGlhQ2Fw
dHVyZSgpKTsKICNlbmRpZgogfQogCkBAIC01NDUzLDcgKzU0NTMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c3RvcEFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTdG9wQWxsTWVkaWFQbGF5YmFjaygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U3RvcEFsbE1lZGlhUGxheWJhY2soKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpCkBAIC01NDYxLDcgKzU0NjEsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkKQEAgLTU0Njks
NyArNTQ2OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWxsTWVkaWFQbGF5YmFjaygp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWxsTWVkaWFQ
bGF5YmFjaygpKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpAQCAtNTQ3OCw3ICs1
NDc4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZU1lZGlhRXZlbnQoTWVkaWFFdmVudFR5
cGUgZXZlbnRUeXBlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxl
TWVkaWFFdmVudChldmVudFR5cGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6SGFuZGxlTWVkaWFFdmVudChldmVudFR5cGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1bWUsIHVpbnQ2NF90IGVsZW1l
bnRJRCkKQEAgLTU0ODYsNyArNTQ4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWb2x1bWVP
Zk1lZGlhRWxlbWVudChkb3VibGUgdm9sdW1lLCB1aW50NjRfdCBlbGVtZW50SUQpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZvbHVtZU9mTWVkaWFFbGVtZW50KHZvbHVtZSwg
ZWxlbWVudElEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZv
bHVtZU9mTWVkaWFFbGVtZW50KHZvbHVtZSwgZWxlbWVudElEKSk7CiB9CiAjZW5kaWYKIApAQCAt
NTUwMCw3ICs1NTAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1heVN0YXJ0TWVkaWFXaGVu
SW5XaW5kb3coYm9vbCBtYXlTdGFydE1lZGlhKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cobWF5U3RhcnRNZWRpYSksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYXlTdGFydE1lZGlhV2hlbkluV2lu
ZG93KG1heVN0YXJ0TWVkaWEpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZURvd25s
b2FkUmVxdWVzdChEb3dubG9hZFByb3h5JiBkb3dubG9hZCkKQEAgLTU1NDcsNyArNTU0Nyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYg
Y29sb3IpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUNvbG9yKGNv
bG9yKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUNv
bG9yKGNvbG9yKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmRDb2xvclBpY2tlcigp
CkBAIC01NTU2LDcgKzU1NTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kQ29sb3JQaWNr
ZXIoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRDb2xvclBpY2tlcigp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JQaWNr
ZXIoKSk7CiB9CiAjZW5kaWYKIApAQCAtNTU5MCw3ICs1NTkwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZENsb3NlU3VnZ2VzdGlvbnMoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RhdGFM
aXN0U3VnZ2VzdGlvbnNEcm9wZG93biA9IG51bGxwdHI7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRDbG9zZVN1Z2dlc3Rpb25zKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDbG9zZVN1Z2dlc3Rpb25zKCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRp
b24pCkBAIC01NTk4LDcgKzU1OTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2VsZWN0T3B0
aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0aW9uKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdERhdGFMaXN0T3B0aW9u
KHNlbGVjdGVkT3B0aW9uKSk7CiB9CiAKICNlbmRpZgpAQCAtNTY1MSw3ICs1NjUxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29s
IGFsbG93cykKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWxsb3dzTWVkaWFEb2N1bWVudElubGlu
ZVBsYXliYWNrID0gYWxsb3dzOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYWxsb3dzKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsbG93c01lZGlhRG9jdW1lbnRJ
bmxpbmVQbGF5YmFjayhhbGxvd3MpKTsKIH0KICNlbmRpZgogCkBAIC01ODM0LDE3ICs1ODM0LDE3
IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlv
bigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2VJRDsKKyAgICByZXR1cm4gbV9wYWdl
SUQudG9VSW50NjQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hhbmdlZEZvclBv
cHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCkKIHsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVk
SW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRleCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZl
UG9wdXBNZW51KG5ld1NlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgaW5k
ZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0Rm9y
QWN0aXZlUG9wdXBNZW51KGluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFRleHRGb3JBY3RpdmVQb3B1cE1lbnUoaW5kZXgpKTsKIH0KIAogYm9vbCBXZWJQ
YWdlUHJveHk6OmlzUHJvY2Vzc2luZ0tleWJvYXJkRXZlbnRzKCkgY29uc3QKQEAgLTU4NzksMTMg
KzU4NzksMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRs
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok8KICAgICAvLyBGb3IgYmFja3dhcmQt
Y29tcGF0aWJpbGl0eSwgbWFrZSBzdXJlIHdlIGxhdW5jaCB0aGUgaW5pdGlhbCBwcm9jZXNzIGlm
IHRoZSBjbGllbnQgYXNrcyB0byBwb3N0IGEgbWVzc2FnZSB0byBpdHMgaW5qZWN0ZWQgYnVuZGxl
IGJlZm9yZSBkb2luZyBhIGxvYWQuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2Fy
eSgpOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvc3RJbmplY3Rl
ZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlTmFt
ZSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJv
ZHkpLmdldCgpKSkpOwogfQogCiAjaWYgUExBVEZPUk0oR1RLKQogdm9pZCBXZWJQYWdlUHJveHk6
OmZhaWxlZFRvU2hvd1BvcHVwTWVudSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpGYWlsZWRUb1Nob3dQb3B1cE1lbnUoKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkZhaWxlZFRvU2hvd1BvcHVwTWVudSgpKTsKIH0KICNlbmRpZgog
CkBAIC01OTUyLDcgKzU5NTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51
KENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0TWVudUNvbnRleHREYQogICAgIG1fYWN0
aXZlQ29udGV4dE1lbnUtPnNob3coKTsKIAogICAgIC8vIE5vIG1hdHRlciB0aGUgcmVzdWx0IG9m
IGludGVybmFsU2hvd0NvbnRleHRNZW51LCBhbHdheXMgbm90aWZ5IHRoZSBXZWJQcm9jZXNzIHRo
YXQgdGhlIG1lbnUgaXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBtb3VzZSBldmVudHMg
YWdhaW4uCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVu
dUhpZGRlbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4
dE1lbnVIaWRkZW4oKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1T
ZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpAQCAtNjAzMCwxMiAr
NjAzMCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29u
c3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9
PSBDb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nIHx8IGl0ZW0uYWN0aW9uKCkgPT0gQ29u
dGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcpCiAgICAgICAgICsrbV9wZW5kaW5nTGVhcm5P
cklnbm9yZVdvcmRNZXNzYWdlQ291bnQ7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoaXRlbSksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTZWxlY3RJdGVtRnJvbUFjdGl2
ZUNvbnRleHRNZW51KGl0ZW0pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUNvbnRl
eHRNZW51S2V5RXZlbnQoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q29udGV4dE1lbnVGb3JLZXlFdmVudCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q29udGV4dE1lbnVGb3JLZXlFdmVudCgpKTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKIApAQCAtNjA1MSwxMCArNjA1MSwxMCBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24o
Y29uc3QgVmVjdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVVSTHMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlVVJMc1tpXSwg
U2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGVz
W2ldKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5kU2Fu
ZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNG
cm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSk7CiAjZW5kaWYKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFu
ZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMsIGRpc3BsYXlTdHJpbmcsIGljb25E
YXRhID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0YVJlZmVyZW5jZSgpKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9y
T3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGZpbGVVUkxzLCBkaXNwbGF5U3RyaW5n
LCBpY29uRGF0YSA/IGljb25EYXRhLT5kYXRhUmVmZXJlbmNlKCkgOiBJUEM6OkRhdGFSZWZlcmVu
Y2UoKSkpOwogCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwog
ICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAtNjA3OSwxMCArNjA3
OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9t
T3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZXMpKTsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcyksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9w
ZW5QYW5lbChmaWxlVVJMcykpOwogCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52
YWxpZGF0ZSgpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAt
NjA5Myw3ICs2MDkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9wZW5QYW5l
bCgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbEZvck9wZW5QYW5l
bCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2FuY2VsRm9y
T3BlblBhbmVsKCkpOwogICAgIAogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFs
aWRhdGUoKTsKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsKQEAgLTYx
MDEsNyArNjEwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwo
KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3Rh
cnRCZWZvcmVTZWxlY3Rpb24pCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpBZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24pLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWR2YW5jZVRvTmV4dE1pc3NwZWxs
aW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFu
Z2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCkBAIC02MTA5LDcgKzYxMDksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3
b3JkKQogICAgIGlmICh3b3JkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VTcGVsbGluZ1RvV29yZCh3b3Jk
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZVNwZWxsaW5n
VG9Xb3JkKHdvcmQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1h
bmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYgY29tbWFuZFByb3h5LCBVbmRvT3JSZWRvIHVu
ZG9PclJlZG8pCkBAIC02MTI4LDcgKzYxMjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3Zl
RWRpdENvbW1hbmQoV2ViRWRpdENvbW1hbmRQcm94eSYgY29tbWFuZCkKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlRWRpdENvbW1hbmQoY29tbWFuZC5jb21tYW5kSUQo
KSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVFZGl0
Q29tbWFuZChjb21tYW5kLmNvbW1hbmRJRCgpKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5Ojpj
YW5VbmRvKCkKQEAgLTYyMTcsMTIgKzYyMTcsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVGV4dENoZWNraW4K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1
ZXN0SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHQp
CiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRGaW5pc2hDaGVj
a2luZ1RleHQocmVxdWVzdElELCByZXN1bHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkRmluaXNoQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCwgcmVzdWx0KSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDaGVja2luZ1RleHQodWludDY0X3QgcmVx
dWVzdElEKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2Fu
Y2VsQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRDYW5jZWxDaGVja2luZ1RleHQocmVxdWVzdElEKSk7CiB9CiAvLyBPdGhl
cgogCkBAIC02MzUxLDcgKzYzNTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2
ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCkKICAgICAgICAgYm9vbCBjYW5Q
cm9jZXNzTW9yZUtleUV2ZW50cyA9ICFtX2tleUV2ZW50UXVldWUuaXNFbXB0eSgpOwogICAgICAg
ICBpZiAoY2FuUHJvY2Vzc01vcmVLZXlFdmVudHMpIHsKICAgICAgICAgICAgIExPRyhLZXlIYW5k
bGluZywgIiBVSSBwcm9jZXNzOiBzZW50IGtleUV2ZW50IGZyb20gZGlkUmVjZWl2ZUV2ZW50Iik7
Ci0gICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50
KG1fa2V5RXZlbnRRdWV1ZS5maXJzdCgpKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCkpKTsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBjYWxsIHRvIGRvbmVXaXRoS2V5RXZlbnQgbWF5IGNs
b3NlIHRoaXMgV2ViUGFnZS4KQEAgLTY3MTUsNyArNjcxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpmcmFtZVNldExhcmdlc3RGcmFtZUNoYW5nZWQodWludDY0X3QgZnJhbWVJRCkKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzcywg
InByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTY3MjcsNyArNjcyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5y
ZXNwb25zaXZlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25z
aXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlk
QmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTcyMzMsNyArNzIzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNr
Rm9yd2FyZENsZWFyKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmdhbWVwYWRBY3Rpdml0eShjb25z
dCBWZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGF0YXMsIGJvb2wgc2hvdWxkTWFrZUdhbWVw
YWRzVmlzaWJsZSkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdh
bWVwYWRBY3Rpdml0eShnYW1lcGFkRGF0YXMsIHNob3VsZE1ha2VHYW1lcGFkc1Zpc2libGUpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2aXR5KGdh
bWVwYWREYXRhcywgc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSkpOwogfQogCiAjZW5kaWYKQEAg
LTc1MzksNyArNzUzOSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp3aWxsSGFuZGxlSG9yaXpvbnRh
bFNjcm9sbEV2ZW50cygpIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVXZWJzaXRl
UG9saWNpZXMoV2Vic2l0ZVBvbGljaWVzRGF0YSYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3
ZWJzaXRlUG9saWNpZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29u
c3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhUmVmZXJlbmNlKQpAQCAtNzU0OSw3ICs3NTQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYg
c3UKIAogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oY29uc3QgQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0
ZW0oaXRlbUlEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5SdW5Nb2RhbChib29s
IGNhblJ1bk1vZGFsKQpAQCAtNzU2Miw3ICs3NTYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dENhblJ1bk1vZGFsKGJvb2wgY2FuUnVuTW9kYWwpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldENhblJ1bk1vZGFsKG1fY2FuUnVuTW9kYWwpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwobV9jYW5SdW5Nb2RhbCkpOwogfQog
CiBib29sIFdlYlBhZ2VQcm94eTo6Y2FuUnVuTW9kYWwoKQpAQCAtNzU3Niw3ICs3NTc2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNv
bnN0IFByaW50SW5mbyYgcHJpbnRJbmYKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0luUHJp
bnRpbmdNb2RlID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkJlZ2luUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvKSwgbV9wYWdlSUQsIHBy
aW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2luUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwg
cHJpbnRJbmZvKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3Bl
cmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjplbmRQcmludGluZygpCkBAIC03NTg1
LDcgKzc1ODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZW5kUHJpbnRpbmcoKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSBmYWxzZTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVuZFByaW50aW5nKCksIG1fcGFnZUlELCBwcmludGlu
Z1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpFbmRQcmludGluZygpLCBwcmludGluZ1NlbmRPcHRpb25zKG1f
aXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmlu
dEluZm8mIHByaW50SW5mbywgUmVmPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4mJiBjYWxsYmFjaykK
QEAgLTc1OTgsNyArNzU5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQ
cmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvCiAgICAgYXV0byBj
YWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGlu
ZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJp
bnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZy
YW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lz
UGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkK
QEAgLTc2MTEsNyArNzYxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1hZ2Uo
V2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJCiAgICAgCiAgICAg
YXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhd1JlY3RUb0ltYWdlKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgcmVj
dCwgaW1hZ2VTaXplLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMo
bV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRyYXdSZWN0VG9JbWFnZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJlY3Qs
IGltYWdlU2l6ZSwgY2FsbGJhY2tJRCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1p
bmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2Vz
VG9QREYoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1
aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJlZjxEYXRhQ2FsbGJhY2s+JiYgY2FsbGJh
Y2spCkBAIC03NjIzLDcgKzc2MjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9Q
REYoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogICAgIAog
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywg
Zmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMo
bV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgZmlyc3Qs
IGNvdW50LCBjYWxsYmFja0lEKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RP
TVByaW50T3BlcmF0aW9uKSk7CiB9CiAjZWxpZiBQTEFURk9STShHVEspCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFBy
aW50SW5mbyYgcHJpbnRJbmZvLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmIGNhbGxiYWNr
KQpAQCAtNzYzNiw3ICs3NjM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclBy
aW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1
dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc0ZvclByaW50aW5n
KGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmlu
dGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJ
RCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJm
b3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KICNlbmRpZgogCkBAIC03NjgxLDcgKzc2ODEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld0xheW91dFNpemUoY29uc3QgSW50U2l6ZSYg
dmlld0xheW91dFNpemUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdM
YXlvdXRTaXplKHZpZXdMYXlvdXRTaXplKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplKSk7CiAgICAgbV9kcmF3
aW5nQXJlYS0+dmlld0xheW91dFNpemVEaWRDaGFuZ2UoKTsKIAogI2lmIFVTRShBUFBLSVQpCkBA
IC03NzAwLDcgKzc3MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QXV0b1NpemluZ1Nob3Vs
ZEV4cGFuZFRvVmlld0hlaWdodChib29sIHNob3VsZEV4cGFuZCkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0QXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChzaG91
bGRFeHBhbmQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QXV0
b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChzaG91bGRFeHBhbmQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3Qg
SW50U2l6ZSYgdmlld3BvcnRTaXplKQpAQCAtNzcxMyw3ICs3NzEzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgSW50U2l6ZSYg
dmlld3BvcnRTaXoKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRT
aXplRm9yQ1NTVmlld3BvcnRVbml0cyh2aWV3cG9ydFNpemUpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyh2
aWV3cG9ydFNpemUpKTsKIH0KIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkK
QEAgLTc3ODQsNyArNzc4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVj
dGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYKIHZvaWQgV2ViUGFn
ZVByb3h5OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3Vs
dCkKIHsKICAgICBpZiAoIWlzQ2xvc2VkKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KSwgbV9w
YWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRlcm5hdGl2
ZVRleHRVSVJlc3VsdChyZXN1bHQpKTsKIH0KIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJ
VkVTKQpAQCAtNzgyNSw3ICs3ODI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0
aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVz
LCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJl
cGxhY2VtZW50UmFuZ2VFbmQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVj
dGlvbkVuZCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBj
b21wb3NpdGlvblN0cmluZywgaW50NjRfdCBzZWxlY3Rpb25TdGFydCwgaW50NjRfdCBzZWxlY3Rp
b25MZW5ndGgpCkBAIC03ODMzLDcgKzc4MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmly
bUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGludDY0X3Qgcwog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbihjb21wb3Np
dGlvblN0cmluZywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRp
b25TdHJpbmcsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25MZW5ndGgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkKQEAgLTc4NDEsNyArNzg0MSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjYW5jZWxDb21wb3NpdGlvbigpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2FuY2VsQ29tcG9zaXRpb24oKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNhbmNlbENvbXBvc2l0aW9uKCkpOwogfQogI2VuZGlmIC8vIFBMQVRG
T1JNKEdUSykKIApAQCAtNzg1OCw3ICs3ODU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNj
cm9sbFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKICAgICBt
X3Njcm9sbFBpbm5pbmdCZWhhdmlvciA9IHBpbm5pbmc7CiAKICAgICBpZiAoaGFzUnVubmluZ1By
b2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRT
Y3JvbGxQaW5uaW5nQmVoYXZpb3IocGlubmluZyksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHBpbm5pbmcpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShPcHRpb25hbDxX
ZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0eWxlKQpAQCAtNzg3Niw3
ICs3ODc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShP
cHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3QKICAgICAgICAgc2Nyb2xsYmFyU3R5
bGVGb3JNZXNzYWdlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPihzY3JvbGxi
YXJTdHlsZS52YWx1ZSgpKTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbGJhck92ZXJsYXlT
dHlsZShzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2UpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3JvbGxiYXJTdHls
ZUZvck1lc3NhZ2UpKTsKIH0KIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpAQCAtNzkyMSw3ICs3
OTIxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0
cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFk
ZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBl
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkTUlNRVR5cGVX
aXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKG1pbWVUeXBlKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlciht
aW1lVHlwZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMo
V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQpAQCAtNzkyOSw3ICs3OTI5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZv
bnRBdHRyaWJ1dGVDaGFuZ2VzJiYgY2hhbmdlcykKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDaGFuZ2VGb250QXR0cmlidXRlcyhXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdURk1vdmUo
Y2hhbmdlcykpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQoV2ViQ29yZTo6
Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQpAQCAtNzkzNyw3ICs3OTM3LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2VzKSksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250KFdURk1vdmUo
Y2hhbmdlcykpKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzk0NSw3ICs3OTQ1LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJiBj
aGFuZ2VzKQogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRl
eHQpCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEFzeW5jKHRleHQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJiBv
cHRpb25zKQpAQCAtNzk1Myw3ICs3OTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRl
eHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGEKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFj
ZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25zKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgV1RG
TW92ZShvcHRpb25zKSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFzTWFya2VkVGV4dChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQpAQCAtNzk2Miw3ICs3OTYy
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omhhc01hcmtlZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okhhc01hcmtlZFRleHQoKSwgV1RGTW92ZShjYWxs
YmFjayksIG1fcGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6Okhhc01hcmtlZFRleHQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdS
YW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTc5NzMs
NyArNzk3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6
RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFjCiAgICAgfQogCiAgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYXJrZWRS
YW5nZUFzeW5jKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVj
dGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tC
YXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTc5ODQsNyArNzk4NCw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lk
IChFZGl0aW5nUmFuZ2UsIENhbGxiCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFuZ2VBc3luYyhj
YWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBv
aW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpA
QCAtNzk5NSw3ICs3OTk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9y
UG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICB9CiAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQ
b2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhwb2ludCwgY2FsbGJhY2tJ
RCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VB
c3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtODAwNiw3ICs4MDA2LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1Jh
bmdlJiByYW5nZSwgV1QKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JD
aGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVj
dG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGluZ1Jhbmdl
JiBzZWxlY3Rpb25SYW5nZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlKQpA
QCAtODAxNyw3ICs4MDE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uQXN5
bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXQKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRD
b21wb3NpdGlvbkFzeW5jKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblJhbmdlLCByZXBsYWNl
bWVudFJhbmdlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENv
bXBvc2l0aW9uQXN5bmModGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uUmFuZ2UsIHJlcGxhY2Vt
ZW50UmFuZ2UpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFz
eW5jKCkKQEAgLTgwMjUsNyArODAyNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29t
cG9zaXRpb25Bc3luYygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNv
bXBvc2l0aW9uQXN5bmMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAt
ODA1MCw3ICs4MDUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRSZWN0
IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb24KICAgICB9CiAKICAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBi
aXRtYXBTaXplLCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCBj
YWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURp
ZEJlZ2luKCkKQEAgLTgyMDgsNyArODIwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0
QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKFJlZjxOb3dQbGF5aW5nSW5mb0NhbGxiYWNrCiAg
ICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFjdGl2
ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojpub3dQbGF5aW5nSW5mb0NhbGxiYWNrKGJvb2wgaGFzQWN0aXZlU2Vzc2lvbiwgYm9vbCBy
ZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGRv
dWJsZSBkdXJhdGlvbiwgZG91YmxlIGVsYXBzZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJZGVudGlm
aWVyLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC04MjUxLDIyICs4MjUxLDIyIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpoYW5kbGVBdXRvcGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQg
ZXZlbnQsIE9wdGlvblNldDxBCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBXZWJQYWdlUHJveHk6
OnBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihGbG9hdFBvaW50IHBvaW50
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybUltbWVk
aWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKHBvaW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlv
bihwb2ludCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uRGlkVXBk
YXRlKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0
ZUFjdGlvbkRpZFVwZGF0ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
aW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkltbWVkaWF0ZUFjdGlvbkRpZENhbmNlbCgpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUoKQogewotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ29t
cGxldGUoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0
ZUFjdGlvbkRpZENvbXBsZXRlKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9y
bUltbWVkaWF0ZUFjdGlvbkhpdFRlc3QoY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIHJlc3Vs
dCwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CkBAIC04MjgxLDcgKzgyODEsNyBAQCBOU09iamVjdCAqV2ViUGFnZVByb3h5OjppbW1lZGlhdGVB
Y3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChSZWZQdAogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoV2ViQ29yZTo6VGV4dENoZWNraW5n
UmVzdWx0IGFjY2VwdGVkQ2FuZGlkYXRlKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6SGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoYWNjZXB0ZWRDYW5kaWRhdGUpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWNjZXB0ZWRDYW5k
aWRhdGUoYWNjZXB0ZWRDYW5kaWRhdGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEhh
bmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkKQEAgLTgyOTksMTcgKzgyOTksMTcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFVzZVN5c3RlbUFwcGVhcmFuY2UoYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNl
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VTeXN0ZW1BcHBlYXJhbmNl
KHVzZVN5c3RlbUFwcGVhcmFuY2UpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0VXNlU3lzdGVtQXBwZWFyYW5jZSh1c2VTeXN0ZW1BcHBlYXJhbmNlKSk7CiB9CiAg
ICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhp
bnQgaGVpZ2h0KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWln
aHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvb3RlckJhbm5lckhlaWdodEZvclRl
c3RpbmcoaW50IGhlaWdodCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3Rp
bmcoaGVpZ2h0KSk7CiB9CiAKICNlbmRpZgpAQCAtODMzNSw3ICs4MzM1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgbmV3U2kKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZERpc3BhdGNoRmFr
ZU1vdXNlTW92ZUV2ZW50cyhib29sIHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cykK
IHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZERpc3Bh
dGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkRGlzcGF0
Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cykp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQXV0b0ZpbGxCdXR0b25DbGljayhjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC04Mzg0LDcgKzgzODQsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0UGxheWJhY2tUYXJnZXQodWludDY0X3QgY29udGV4dElkLCBSZWY8TWVkaWFQbGF5
YmFja1RhcmdldAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1Rhcmdl
dFNlbGVjdGVkKGNvbnRleHRJZCwgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250
ZXh0SWQsIHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSh1aW50NjRfdCBjb250ZXh0
SWQsIGJvb2wgYXZhaWxhYmxlKQpAQCAtODM5Miw3ICs4MzkyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm8KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRB
dmFpbGFiaWxpdHlEaWRDaGFuZ2UoY29udGV4dElkLCBhdmFpbGFibGUpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRD
aGFuZ2UoY29udGV4dElkLCBhdmFpbGFibGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBzaG91
bGRQbGF5KQpAQCAtODQwMCw3ICs4NDAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3Vs
ZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBzaG91bGQKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJn
ZXQoY29udGV4dElkLCBzaG91bGRQbGF5KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgc2hvdWxk
UGxheSkpOwogfQogI2VuZGlmCiAKQEAgLTg0MjYsNyArODQyNiw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRl
KFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCkBA
IC04NDQ5LDcgKzg0NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkU2NhbGVWaWV3
VG9GaXREb2N1bWVudChib29sIHNob3VsZFNjYWxlVmlld1RvRml0RG9jdQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KHNob3Vs
ZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChzaG91bGRTY2FsZVZpZXdU
b0ZpdERvY3VtZW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXN0b3JlU2Nyb2xs
UG9zaXRpb24oKQpAQCAtODQ2OSw3ICs4NDY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExv
YWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENhbGxiYWMK
ICAgICAgICAgYm9vbCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247CiAgICAgICAg
IGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25hbENhbGxiYWNr
SUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkpIDogT3B0aW9uYWxDYWxsYmFj
a0lEKCk7CiAKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRH
ZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJh
Y2tJZGVudGlmaWVyKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3
Q2FsbGJhY2tJZGVudGlmaWVyKSk7CiAgICAgfSk7CiB9CiAKQEAgLTg0ODgsNyArODQ4OCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChib29sIGRpc2Fi
bGVkKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRSZXNvdXJjZUNhY2hpbmdE
aXNhYmxlZChkaXNhYmxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChkaXNhYmxlZCkpOwogfQogCiBXZWJDb3JlOjpV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIFdlYlBhZ2VQcm94eTo6dXNlckludGVyZmFjZUxh
eW91dERpcmVjdGlvbigpCkBAIC04NTAxLDcgKzg1MDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5
b3V0RAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih1c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih1c2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uKSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZVZhbGlk
YXRpb25NZXNzYWdlKCkKQEAgLTg1NDgsMTQgKzg1NDgsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEFsbG93UG9pbnRlckxvY2soKQogICAgIENHRGlzcGxheUhpZGVDdXJzb3IoQ0dNYWluRGlz
cGxheUlEKCkpOwogICAgIENHQXNzb2NpYXRlTW91c2VBbmRNb3VzZUN1cnNvclBvc2l0aW9uKGZh
bHNlKTsKICNlbmRpZgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRBY3F1aXJlUG9pbnRlckxvY2soKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRGVueVBvaW50ZXJMb2NrKCkKIHsKICAgICBBU1NFUlQobV9pc1BvaW50ZXJMb2NrUGVu
ZGluZyAmJiAhbV9pc1BvaW50ZXJMb2NrZWQpOwogICAgIG1faXNQb2ludGVyTG9ja1BlbmRpbmcg
PSBmYWxzZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFj
cXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdFBvaW50ZXJVbmxvY2soKQpAQCAtODU2NiwxMiArODU2NiwxMiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2soKQogICAgICAgICBDR0Rpc3BsYXlTaG93Q3Vy
c29yKENHTWFpbkRpc3BsYXlJRCgpKTsKICNlbmRpZgogICAgICAgICBtX3VpQ2xpZW50LT5kaWRM
b3NlUG9pbnRlckxvY2sodGhpcyk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCkpOwogICAgIH0KIAogICAgIGlm
IChtX2lzUG9pbnRlckxvY2tQZW5kaW5nKSB7CiAgICAgICAgIG1fdWlDbGllbnQtPmRpZExvc2VQ
b2ludGVyTG9jayh0aGlzKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSk7CiAgICAgfQog
CiAgICAgbV9pc1BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKQEAgLTg1OTIsNyArODU5Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlZjxXZWJVUkxT
Y2hlbWVIYW5kbGVyPiYmIGhhbmRsCiAgICAgYXV0byBpZGVudGlmaWVyUmVzdWx0ID0gbV91cmxT
Y2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVy
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChpZGVudGlmaWVyUmVzdWx0LCBpZGVudGlmaWVyUmVzdWx0
LmlzTmV3RW50cnkpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoaWRlbnRpZmllciwgY2Fub25pY2FsaXplZFNjaGVtZS52
YWx1ZSgpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVy
VVJMU2NoZW1lSGFuZGxlcihpZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkp
KTsKIH0KIAogV2ViVVJMU2NoZW1lSGFuZGxlciogV2ViUGFnZVByb3h5Ojp1cmxTY2hlbWVIYW5k
bGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQpAQCAtODY1MSw3ICs4NjUxLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UoKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKHVz
ZURhcmtBcHBlYXJhbmNlKCksIHVzZUluYWN0aXZlQXBwZWFyYW5jZSgpKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2Uo
dXNlRGFya0FwcGVhcmFuY2UoKSwgdXNlSW5hY3RpdmVBcHBlYXJhbmNlKCkpKTsKIH0KIAogI2lm
IFBMQVRGT1JNKENPQ09BKQpAQCAtODY5MCw3ICs4NjkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
Omluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBhdHRhY2htZW50LCBGdW5j
dGlvbjwKIAogICAgIGF1dG8gYXR0YWNobWVudElkZW50aWZpZXIgPSBhdHRhY2htZW50LT5pZGVu
dGlmaWVyKCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2Vu
KCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNo
bWVudChhdHRhY2htZW50SWRlbnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNpemVGb3JEaXNwbGF5
KCksIGF0dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRlbnRUeXBlKCksIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0
QXR0YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNpemVGb3JE
aXNwbGF5KCksIGF0dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRlbnRUeXBl
KCksIGNhbGxiYWNrSUQpKTsKICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50
TWFwLnNldChhdHRhY2htZW50SWRlbnRpZmllciwgV1RGTW92ZShhdHRhY2htZW50KSk7CiB9CiAK
QEAgLTg3MDYsNyArODcwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50
QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgICAgIGRh
dGFSZWZlcmVuY2UgPSB7ICpkYXRhIH07CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxi
YWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwg
YXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgp
LCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNo
bWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNp
emVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxl
TmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJp
bmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCkBA
IC04ODY2LDcgKzg4NjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5p
ZmVzdChGdW5jdGlvbjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OgogCiAgICAgYXV0byBj
YWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9s
b2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25NYW5pZmVzdChjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFwcGxp
Y2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJRCkpOwogfQogI2VuZGlmCiAKQEAgLTg5MzAsNyArODkz
MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBSZXNv
dXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldERlZmVyc0xvYWRpbmdG
b3JUZXN0aW5nKGJvb2wgZGVmZXJzTG9hZGluZykKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZyksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xv
YWRpbmcpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldElzVmlld1Zpc2libGUoYm9vbCYg
cmVzdWx0KQpAQCAtODk0Miw3ICs4OTQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUN1
cnJlbnRNb2RpZmllclN0YXRlKCkKIHsKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQ
Uk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBhdXRvIG1vZGlmaWVycyA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Y3VycmVudFN0YXRlT2ZN
b2RpZmllcktleXMoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVw
ZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKG1vZGlmaWVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZShtb2RpZmllcnMp
KTsKICNlbmRpZgogfQogCkBAIC04OTg0LDE5ICs4OTg0LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbihXZWJQcm9jZXNz
UHJveHkmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzaW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hh
bmdlKGRvdWJsZSBhbHBoYSwgZG91YmxlIGJldGEsIGRvdWJsZSBnYW1tYSkKIHsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25D
aGFuZ2UoYWxwaGEsIGJldGEsIGdhbW1hKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoYWxwaGEsIGJldGEsIGdh
bW1hKSk7CiB9CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZXRlY3REYXRhSW5BbGxGcmFtZXMoV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXMgdHlw
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRGF0YURldGVjdGlvblJlc3VsdCYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRldGVjdERhdGFJbkFsbEZyYW1lcyhz
dGF0aWNfY2FzdDx1aW50NjRfdD4odHlwZXMpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IG1fcGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRl
dGVjdERhdGFJbkFsbEZyYW1lcyhzdGF0aWNfY2FzdDx1aW50NjRfdD4odHlwZXMpKSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlRGF0
YURldGVjdGVkTGlua3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9u
UmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlRGF0YURl
dGVjdGVkTGlua3MoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZURhdGFEZXRlY3Rl
ZExpbmtzKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogI2VuZGlmCkBAIC05
MTQ2LDcgKzkxNDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGV4dElucHV0Q29udGV4dHNJblJl
Y3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QsIENvbXBsZXRpb25IYQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZTo6VGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0
SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJbnB1dENvbnRleHQmIGNvbnRleHQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05MTU2LDcgKzkxNTYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJ
bnB1dENvbnRleHQmIGNvbnRleHQsIENvbXBsZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6Rm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnRleHQpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6Rm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnRleHQpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKIExvZ2dlciYgV2ViUGFnZVByb3h5Ojpsb2dnZXIoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2YzVhZDYyNWQxMi4uYTZlOGZlMTgy
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02Niw2ICs2Niw3
IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQb3B1
cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuaCIKKyNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJVbmRvU3RlcElELmgiCiAj
aW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZp
dHlTdGF0ZS5oPgpAQCAtODIsNiArODMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0U2l6
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaD4KQEAgLTM4MiwxNCArMzg0LDE0IEBAIGNsYXNzIFdl
YlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBh
Z2U+CiAjZW5kaWYKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYWdlUHJveHk+IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQm
LCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1
cmF0aW9uPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGll
bnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZpcnR1YWwgfldlYlBhZ2VQcm94eSgpOwogCiAg
ICAgc3RhdGljIHZvaWQgZm9yTW9zdFZpc2libGVXZWJQYWdlSWZBbnkoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViUGFnZVByb3h5Kik+JiYpOwogCiAgICAgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlv
biYgY29uZmlndXJhdGlvbigpIGNvbnN0OwogCi0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3Q7CiAKQEAgLTE1MDIsNyArMTUwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYs
IGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2
b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLAotICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwKKyAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLAogICAgICAgICBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3Rl
bmVySUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsCiAgICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTUxMSw3ICsxNTEzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
V2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNp
dGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRH
b1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUmJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJ
RCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6
RGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlkUmVxdWVz
dFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKQEAgLTE1NDksOSArMTU1MSw5
IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU18xCiAgICAgdm9pZCBkaWRS
ZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1
bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VTcGFjZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWlu
dDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFdURjo6
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotCisgICAgCiBwcml2YXRlOgot
ICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3Qg
cGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAgV2ViUGFnZVByb3h5
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKCk7CiAKICAgICB2b2lkIG5vdGlmeVByb2Nlc3NQb29sVG9QcmV3YXJtKCk7CkBAIC0xNTcz
LDYgKzE1NzUsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0U3RhdGVBZnRlclByb2Nlc3NF
eGl0ZWQoUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uKTsKIAogICAgIHZvaWQgc2V0VXNlckFnZW50
KFN0cmluZyYmKTsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNlbmRUb1By
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBVJiYgbWVzc2FnZSwgT3B0aW9uU2V0PElQ
Qzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4g
cHJvY2Vzcy5zZW5kKFdURk1vdmUobWVzc2FnZSksIG1fcGFnZUlELnRvVUludDY0KCksIHNlbmRP
cHRpb25zKTsKKyAgICB9CiAKICAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICBib29sIHNl
bmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBPcHRpb25TZXQ8SVBDOjpT
ZW5kT3B0aW9uPikgb3ZlcnJpZGU7CkBAIC0xNjI3LDEzICsxNjM0LDEzIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFt
ZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJ
bmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgY29uc3QgVXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwK
LSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisg
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBm
cmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNjU1LDcg
KzE2NjIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAog
ICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9E
YXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJik7Cisg
ICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkm
Jik7CiAgICAgdm9pZCBzaG93UGFnZSgpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0
IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVs
YXllZFJlcGx5JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBs
eSYmKTsKQEAgLTIzMjcsNyArMjMzNCw3IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FE
RElUSU9OU18yCiAgICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU+IG1fdmFsaWRh
dGlvbkJ1YmJsZTsKICNlbmRpZgogCi0gICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAg
Y29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBib29sIG1faXNQ
YWdlU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zpc2l0ZWRMaW5rcyB7IHRy
dWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA2ZmNlY2RjNmI2NS4uYjFlNzk5MjIzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcgQEAK
IAogbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIFVJIG1lc3NhZ2VzCi0gICAgQ3Jl
YXRlTmV3UGFnZShzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVy
ZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhKSAtPiAodWludDY0X3QgbmV3UGFnZUlELCBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM+IG5ld1BhZ2VQYXJhbWV0ZXJzKSBTeW5jaHJvbm91cworICAgIENyZWF0
ZU5ld1BhZ2Uoc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcywgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gbmV3UGFnZUlELCBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM+IG5ld1BhZ2VQYXJhbWV0ZXJzKSBTeW5jaHJvbm91cwogICAgIFNob3dQYWdlKCkKICAg
ICBDbG9zZVBhZ2UoYm9vbCBzdG9wUmVzcG9uc2l2ZW5lc3NUaW1lcikKICAgICBSdW5KYXZhU2Ny
aXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkgU3luY2hyb25v
dXMKQEAgLTEwNCw4ICsxMDQsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAg
IyBQb2xpY3kgbWVzc2FnZXMKICAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBm
cmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQotICAgIERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNN
YWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0
eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0
YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKSAtPiAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNr
SWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2Fk
SUQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVz
KSBTeW5jaHJvbm91cworICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
ZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3Rl
bmVySUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3Qg
ZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
cG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAo
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgZW51
bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5l
d05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIE9wdGlvbmFsPFdl
YktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBTeW5jaHJvbm91cwog
ICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHN0cnVjdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBVbmFibGVUb0ltcGxlbWVu
dFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKaW5kZXggYzgwMjNkZTQxNjEu
LmY0OTcxNTFkNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJv
eHksIFdlYlByb2NlCiAgICAgUkVMRUFTRV9BU1NFUlQoIXByb2Nlc3MuaXNQcmV3YXJtZWQoKSk7
CiAKICAgICBpZiAobV9wcm9jZXNzZXMuYWRkKCZwcm9jZXNzKS5pc05ld0VudHJ5KSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICIlcCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVy
OjphZGRXZWJQYWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9j
ZXNzLnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgICAg
IFJFTEVBU0VfTE9HKExvYWRpbmcsICIlcCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjph
ZGRXZWJQYWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNz
LnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQcm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsK
ICAgICAgICAgd2ViUHJvY2Vzc1dpbGxPcGVuQ29ubmVjdGlvbihwcm9jZXNzLCAqcHJvY2Vzcy5j
b25uZWN0aW9uKCkpOwogICAgIH0KIApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYlByb2Nlc3NM
aWZldGltZU9ic2VydmVyOjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5
LCBXZWJQcgogICAgIHdlYlBhZ2VEaWRDbG9zZUNvbm5lY3Rpb24od2ViUGFnZVByb3h5LCAqcHJv
Y2Vzcy5jb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fcHJvY2Vzc2VzLnJlbW92ZSgmcHJvY2Vz
cykpIHsKLSAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpLnRvVUludDY0KCkpOwogICAgICAgICB3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKHBy
b2Nlc3MsICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDBlMTM5ZjMwZDljLi4wYjhiMzQ1ZWY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTI5
Niw5ICsxMjk2LDkgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2
aWNlV29ya2Vycyhjb25zdCBXZWJzaXRlRGF0YVN0b3JlJiBzdG8KIH0KICNlbmRpZgogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3Qg
cGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX3Nlc3Np
b25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDx1aW50NjRf
dD4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9z
ZXNzaW9uVG9QYWdlSURzTWFwLmFkZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIEhhc2hTZXQ8UGFn
ZUlkZW50aWZpZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgYXV0byBzZXNzaW9uSUQg
PSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlE
LCBXZWJzaXRlRGF0YQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVz
aW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3Rv
cmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7
CiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CiAgICAgYXV0byBp
dGVyYXRvciA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Npb25JRCk7CkBAIC0yMjEx
LDcgKzIyMTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vz
c0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmCiB9CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi1TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0X3QgcGFnZUlEKSBjb25z
dAorU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBmb3IgKGF1dG8qIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7CkBA
IC0yNTE5LDcgKzI1MTksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhckN1cnJlbnRNb2Rp
ZmllclN0YXRlRm9yVGVzdGluZygpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpDbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBm
cm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBh
Z2VJRCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCAxNjU1NDViMWEyZi4uMTdlM2U4MDJiYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTQ4LDYgKzE0OCwxOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEKTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVy
JiByZWNlaXZlcikKKyAgICB7CisgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKKyAgICB9Cisg
ICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRl
bnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAgIHsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7Cisg
ICAgfQogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CiAgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CkBAIC0xOTMs
OCArMjA1LDggQEAgcHVibGljOgogCiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCi0gICAgdm9p
ZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRl
RGF0YVN0b3JlJik7Ci0gICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2
NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3Jl
Jik7CisgICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAgICAgYm9vbCBoYXNQYWdlc1VzaW5nV2Vi
c2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJikgY29uc3Q7CiAKICAgICBjb25zdCBTdHJp
bmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+
aW5qZWN0ZWRCdW5kbGVQYXRoKCk7IH0KQEAgLTM2NSw3ICszNzcsNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7Ci0gICAgU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdl
SUQodWludDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllcikgY29uc3Q7CiAgICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNv
bnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQogICAgIHZvaWQgc2V0QWxs
b3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wgYWxsb3dzKSB7IG1fYWxs
b3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxsb3dzOyB9CiAgICAgYm9v
bCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoKSBjb25zdCB7IHJldHVy
biBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjsgfQpAQCAtNDkzLDcg
KzUwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmREaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5n
ZWRNZXNzYWdlRm9yVGVzdGluZygpOwogICAgIHZvaWQgY2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0
ZUZvclRlc3RpbmcoKTsKIAotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFp
biwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oV1BFKQogICAgIHZvaWQgc2V0U2FuZGJveEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7
IG1fc2FuZGJveEVuYWJsZWQgPSBlbmFibGVkOyB9OwpAQCAtNzU4LDcgKzc3MCw3IEBAIHByaXZh
dGU6CiAgICAgfTsKICAgICBQYXRocyBtX3Jlc29sdmVkUGF0aHM7CiAKLSAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV9zZXNzaW9uVG9QYWdlSURzTWFwOwor
ICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUHJvY2Vz
c1Bvb2w+IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0aW9uVGltZXI7CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggODIwMzQ2NWNiMjguLjY3ODMxZTIwNzgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTExMCwxMCArMTEwLDkgQEAgV2Vi
UHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKFByb2Nl
c3NJZGVudGlmaWVyIGlkZW50aWYKICAgICByZXR1cm4gYWxsUHJvY2Vzc2VzKCkuZ2V0KGlkZW50
aWZpZXIpOwogfQogCi11aW50NjRfdCBXZWJQcm9jZXNzUHJveHk6OmdlbmVyYXRlUGFnZUlEKCkK
K1BhZ2VJZGVudGlmaWVyIFdlYlByb2Nlc3NQcm94eTo6Z2VuZXJhdGVQYWdlSUQoKQogewotICAg
IHN0YXRpYyB1aW50NjRfdCB1bmlxdWVQYWdlSUQ7Ci0gICAgcmV0dXJuICsrdW5pcXVlUGFnZUlE
OworICAgIHJldHVybiBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIH0KIAogc3RhdGljIFdl
YlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwJiBnbG9iYWxQYWdlTWFwKCkKQEAgLTMzMCw3
ICszMjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2h1dERvd24oKQogICAgIG1fcHJvY2Vz
c1Bvb2wtPmRpc2Nvbm5lY3RQcm9jZXNzKHRoaXMpOwogfQogCi1XZWJQYWdlUHJveHkqIFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCitXZWJQYWdlUHJveHkqIFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJu
IGdsb2JhbFBhZ2VNYXAoKS5nZXQocGFnZUlEKTsKIH0KQEAgLTM2Myw3ICszNjIsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChB
UEk6Ok9iamVjdCogbWVzc2FnZQogCiBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgdWludDY0X3QgcGFnZUlEID0g
Z2VuZXJhdGVQYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7CiAg
ICAgUmVmPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VD
bGllbnQsICp0aGlzLCBwYWdlSUQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAg
IGFkZEV4aXN0aW5nV2ViUGFnZSh3ZWJQYWdlLmdldCgpLCBCZWdpbnNVc2luZ0RhdGFTdG9yZTo6
WWVzKTsKQEAgLTQxNSwxMCArNDE0LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVX
ZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgRW5kc1VzaW5nRGF0YVN0b3JlIGVuCiAgICAg
bWF5YmVTaHV0RG93bigpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExp
bmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgdWludDY0X3Qg
cGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZp
c2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICBhdXRvJiB1c2VycyA9IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnMuZW5zdXJl
KCZ2aXNpdGVkTGlua1N0b3JlLCBbXSB7Ci0gICAgICAgIHJldHVybiBIYXNoU2V0PHVpbnQ2NF90
PiB7IH07CisgICAgICAgIHJldHVybiBIYXNoU2V0PFBhZ2VJZGVudGlmaWVyPiB7IH07CiAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJUKCF1c2Vycy5jb250YWlucyhwYWdlSUQp
KTsKQEAgLTQyOCw3ICs0MjcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExp
bmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZQogICAgICAgICB2
aXNpdGVkTGlua1N0b3JlLmFkZFByb2Nlc3MoKnRoaXMpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRl
ZExpbmtTdG9yZSwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92
ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvIGl0ID0gbV92aXNpdGVkTGlua1N0
b3Jlc1dpdGhVc2Vycy5maW5kKCZ2aXNpdGVkTGlua1N0b3JlKTsKICAgICBpZiAoaXQgPT0gbV92
aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbmQoKSkKQEAgLTU0MSw3ICs1NDAsNyBAQCBib29s
IFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpCiB9CiAjZW5kaWYK
IAotYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCh1aW50NjRf
dCBwYWdlSUQpIGNvbnN0Citib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdl
V2l0aElEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8qIHBy
b3Zpc2lvbmFsUGFnZSA6IG1fcHJvdmlzaW9uYWxQYWdlcykgewogICAgICAgICBpZiAocHJvdmlz
aW9uYWxQYWdlLT5wYWdlKCkucGFnZUlEKCkgPT0gcGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA5YTZjYmYxZjQ2MC4uYWQzZjAzOGRkNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNz
YWdlUG9ydElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFN0cmluZ0hh
c2guaD4KQEAgLTk3LDcgKzk4LDcgQEAgZW51bSBjbGFzcyBBbGxvd1Byb2Nlc3NDYWNoaW5nIHsg
Tm8sIFllcyB9OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIEF1eGlsaWFyeVByb2Nl
c3NQcm94eSwgcHVibGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudCwgcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxX
ZWJQcm9jZXNzUHJveHk+LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQgewogcHVibGlj
OgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+PiBX
ZWJGcmFtZVByb3h5TWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZVBy
b3h5Kj4gV2ViUGFnZVByb3h5TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJ
bml0aWF0ZWRBY3Rpb25NYXA7CiAKICAgICBlbnVtIGNsYXNzIElzUHJld2FybWVkIHsKQEAgLTEy
OCw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNp
dGVEYXRhU3RvcmUmKTsKIAogICAgIHN0YXRpYyBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JJ
ZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFdlYlBhZ2VQcm94
eSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgUmVmPFdlYlBhZ2VQcm94
eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYpOwogCiAgICAgZW51bSBjbGFzcyBCZWdpbnNVc2luZ0RhdGFTdG9yZSA6IGJvb2wgeyBObywg
WWVzIH07CkBAIC0xNDksMTAgKzE1MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3ModWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lk
IGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCi0g
ICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgdWludDY0
X3QgcGFnZUlEKTsKLSAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRM
aW5rU3RvcmUmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9y
ZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2
b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYpOwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CkBAIC0zMTEsNyArMzEyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgd2ViUGFnZU1lZGlhU3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5
Jik7CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKTsK
KyAgICBzdGF0aWMgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZ2VuZXJhdGVQYWdlSUQoKTsKICAg
ICBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQ
cmV3YXJtZWQpOwogCiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC0zNTQsNyArMzU1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJv
cGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKICNlbmRpZgogCi0gICAgYm9vbCBoYXNQ
cm92aXNpb25hbFBhZ2VXaXRoSUQodWludDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBib29sIGhh
c1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAg
ICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJikgY29uc3Q7CiAKICAgICAvLyBQbHVnaW5zCkBAIC00NDcsNyArNDQ4LDcgQEAgcHJp
dmF0ZToKICAgICBIYXNoU2V0PFByb3Zpc2lvbmFsUGFnZVByb3h5Kj4gbV9wcm92aXNpb25hbFBh
Z2VzOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25NYXAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFw
OwogCi0gICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDx1aW50NjRfdC8qIHBh
Z2VJRCAqLz4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CisgICAgSGFzaE1hcDxWaXNp
dGVkTGlua1N0b3JlKiwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4+IG1fdmlzaXRl
ZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAgICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllczsKIAogICAgIGludCBt
X251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAppbmRleCBlMzU1MzE5ZWE0
Yy4uN2Q1NzVhNDA0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZUhhbmRsZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5k
bGVyOjp0YXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smIHRhc2spCiAgICAgcGxhdGZvcm1U
YXNrQ29tcGxldGVkKHRhc2spOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJlbW92
ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCkKK3ZvaWQg
V2ViVVJMU2NoZW1lSGFuZGxlcjo6cmVtb3ZlVGFza0Zyb21QYWdlTWFwKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rhc2tz
QnlQYWdlSWRlbnRpZmllci5maW5kKHBhZ2VJRCk7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1f
dGFza3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCA4OTk3NmM2MWY4My4uYjdhZjA3NTk3NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTY2
LDEzICs2NiwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0b3BUYXNr
KFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtVGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJikgPSAwOwogCi0gICAgdm9p
ZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQp
OworICAgIHZvaWQgcmVtb3ZlVGFza0Zyb21QYWdlTWFwKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCB1aW50NjRfdCB0YXNrSUQpOwogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0ZvclRhc2tJ
ZGVudGlmaWVyKHVpbnQ2NF90KSBjb25zdDsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsK
IAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxXZWJVUkxTY2hlbWVUYXNrPj4gbV90YXNrczsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlk
ZW50aWZpZXI7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgSGFzaFNldDx1
aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyOwogICAgIAogICAgIFN5bmNMb2FkQ29t
cGxldGlvbkhhbmRsZXIgbV9zeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IDE5YTZiYjg0YzNjLi45
YjdhZDVlMjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3Jt
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnMKICAgICAgICAg
bV9zeW5jUmVzcG9uc2UgPSByZXNwb25zZTsKIAogICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUGVy
Zm9ybVJlZGlyZWN0aW9uKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50
aWZpZXIsIHJlc3BvbnNlLCByZXF1ZXN0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihtX3Vy
bFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVx
dWVzdCkpOwogCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CkBAIC05Myw3ICs5
Myw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgaWYgKGlzU3luYygpKQogICAgICAg
ICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1l
SGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJl
Y2VpdmVSZXNwb25zZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlm
aWVyLCByZXNwb25zZSkpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCkBA
IC0xMTgsNyArMTE4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5k
bGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgeyBidWZmZXIgfSksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNl
aXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCB7
IGJ1ZmZlciB9KSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKQEAgLTE0
Myw3ICsxNDMsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgICAgIG1fc3luY0RhdGEg
PSBudWxscHRyOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmll
cigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFu
ZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSk7CiAgICAgbV91cmxTY2hl
bWVIYW5kbGVyLT50YXNrQ29tcGxldGVkKCp0aGlzKTsKIAogICAgIHJldHVybiBFeGNlcHRpb25U
eXBlOjpOb25lOwpAQCAtMTY5LDQgKzE2OSwxNCBAQCB2b2lkIFdlYlVSTFNjaGVtZVRhc2s6OnN0
b3AoKQogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcih7IH0sIGZhaWxlZEN1c3RvbVBy
b3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9KTsKIH0KIAorSVBDOjpDb25uZWN0aW9uKiBX
ZWJVUkxTY2hlbWVUYXNrOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBXZWJVUkxTY2hl
bWVUYXNrOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggYjg3MjA3
M2JkMjcuLjdmMTRiOTg2MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
TWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
c3BvbnNlLmg+CkBAIC01MSwxMyArNTIsMTMgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogCiB1c2lu
ZyBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPjsKIAotY2xhc3MgV2ViVVJMU2NoZW1lVGFz
ayA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+LCBwdWJsaWMgSW5zdGFuY2VD
b3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+IHsKK2NsYXNzIFdlYlVSTFNjaGVtZVRhc2sgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVUYXNrPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5k
ZXIsIHB1YmxpYyBJbnN0YW5jZUNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFdlYlVSTFNjaGVtZVRhc2spOwogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8V2ViVVJMU2NoZW1lVGFzaz4gY3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdl
UHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHVp
bnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRl
bnRpZmllcjsgfQogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvY2Vzcy5nZXQoKTsgfQogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CkBAIC04MCw2ICs4MSwxMCBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVI
YW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgaWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXImJik7CisgICAgCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlz
U3luYygpIGNvbnN0IHsgcmV0dXJuICEhbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7IH0KIApAQCAt
ODcsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFJl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50aWZp
ZXI7Ci0gICAgdWludDY0X3QgbV9wYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBt
X3JlcXVlc3Q7CiAgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNw
b25zZVNlbnQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwYmY1MTEyYTllNC4uMGE4
YjBjMTEyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNTc2LDcgKzE1NzYsNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJv
b2wgdmFsdWUsIENvbXBsZQogICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChtX3Nlc3Npb25JRCwg
dmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxT
dG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlu
cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nl
c3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CmluZGV4IDY0MmUzMzA5ZDA3Li44MjJjM2ZjNzYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RldmljZU9yaWVudGF0
aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KQEAgLTEzNSw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsK
ICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGxvZ1Vz
ZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModWludDY0X3QgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOworICAgIHZv
aWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CiAgICAg
dm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNSZWdpc3RlcmVk
QXNSZWRpcmVjdGluZ1RvKGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBjb25zdCBVUkwm
IGhvc3RSZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclBy
b3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5TWFjLm1tCmluZGV4IDc2MGExZDAwOWRlLi4wMTc5OTVhNTE1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94
eU1hYy5tbQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyCiAgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJM
IGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExd
OwogCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVdlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2Vu
ZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNv
bHV0ZVN0cmluZ10pKTsKICAgICB9OwogCiAgICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAg
LTIxMiw3ICsyMTIsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUFw
cGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgUwogICAgIFtoYW5kbGUgY2xv
c2VGaWxlXTsKIAogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9IHdlYlZpZXcoKS0+
X3BhZ2UuZ2V0KCk7Ci0gICAgaW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVdlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmlu
Z10pLCBpbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgaW5zcGVjdG9yUGFnZS0+c2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29s
dXRlU3RyaW5nXSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYVByb3h5Lm1tCmluZGV4IGY3MGYxYTRhYzRkLi5jNTczODZlMzQ1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
UHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1h
dGlvbkRyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFRpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmRpZFVwZGF0ZUdlb21ldHJ5KCkKIHZvaWQgVGls
ZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5
U3RhdGUoQWN0aXZpdHlTdGF0ZUNoYW5nZUlEKQogewogICAgIFNlY29uZHMgYWN0aXZpdHlTdGF0
ZVVwZGF0ZVRpbWVvdXQgPSBTZWNvbmRzOjpmcm9tTWlsbGlzZWNvbmRzKDI1MCk7Ci0gICAgcHJv
Y2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZT4obV93ZWJQYWdlUHJveHku
cGFnZUlEKCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRpb246
OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgcHJvY2VzcygpLmNv
bm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkVXBkYXRlQWN0aXZpdHlTdGF0ZT4obV93ZWJQYWdlUHJveHkucGFnZUlEKCku
dG9VSW50NjQoKSwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6V2FpdEZvck9wdGlv
bjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKIH0KIAogdm9pZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3aWxsU2VuZFVwZGF0ZUdlb21ldHJ5KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250
cm9sbGVyTWFjLm1tCmluZGV4IDUwMjQxZDhiZjYyLi5mNTNmYjIxZTNlZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFj
Lm1tCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRs
ZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQoTlNFdmVudCAqZXZlbnQsIEZsb2EKIAogICAgICAg
ICAvLyBGSVhNRTogV2UgZHJvcCB0aGUgZmlyc3QgZnJhbWUgb2YgdGhlIGdlc3R1cmUgb24gdGhl
IGZsb29yLCBiZWNhdXNlIHdlIGRvbid0IGhhdmUgdGhlIHZpc2libGUgY29udGVudCBib3VuZHMg
eWV0LgogICAgICAgICBtX21hZ25pZmljYXRpb24gPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVG
YWN0b3IoKTsKLSAgICAgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmlj
YXRpb25HZXN0dXJlKCksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAgICAgbV93ZWJQ
YWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29s
bGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUoKSk7CiAgICAgICAgIG1fbGFzdE1h
Z25pZmljYXRpb25HZXN0dXJlV2FzU21hcnRNYWduaWZpY2F0aW9uID0gZmFsc2U7CiAKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVy
OjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQogICAg
IGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFn
bmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAg
IG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSk7
CiB9CiAKIHN0YXRpYyBmbG9hdCBtYXhpbXVtUmVjdGFuZ2xlQ29tcG9uZW50RGVsdGEoRmxvYXRS
ZWN0IGEsIEZsb2F0UmVjdCBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggMjE1MTY2MmQzNDcu
LjVhNjgzMDk2ZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJ
bW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCAt
ICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJXaWxsQmVnaW5BbmltYXRpb246KE5TSW1t
ZWRpYXRlQWN0aW9uR2VzdHVyZVJlYwogICAgIC8vIEZJWE1FOiBDb25uZWN0aW9uIGNhbiBiZSBu
dWxsIGlmIHRoZSBwcm9jZXNzIGlzIGNsb3NlZDsgd2Ugc2hvdWxkIGNsZWFuIHVwIGJldHRlciBp
biB0aGF0IGNhc2UuCiAgICAgaWYgKF9zdGF0ZSA9PSBXZWJLaXQ6OkltbWVkaWF0ZUFjdGlvblN0
YXRlOjpQZW5kaW5nKSB7CiAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gX3BhZ2UtPnBy
b2Nlc3MoKS5jb25uZWN0aW9uKCkpIHsKLSAgICAgICAgICAgIGJvb2wgcmVjZWl2ZWRSZXBseSA9
IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0PihfcGFnZS0+cGFnZUlE
KCksIFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoNTAwKSk7CisgICAgICAgICAgICBib29sIHJl
Y2VpdmVkUmVwbHkgPSBjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdD4o
X3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMoNTAw
KSk7CiAgICAgICAgICAgICBpZiAoIXJlY2VpdmVkUmVwbHkpCiAgICAgICAgICAgICAgICAgX3N0
YXRlID0gV2ViS2l0OjpJbW1lZGlhdGVBY3Rpb25TdGF0ZTo6VGltZWRPdXQ7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94
eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQppbmRleCAwMDdkODdkZmNkOC4uZjRhYjkxZTg5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTQ3Nyw3ICs0
NzcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgYwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKIAotICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkU2F2
ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkp
OworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSk7CiAgICAgfTsKIAogICAgIGlm
ICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC01MjIsNyArNTIyLDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0
IFN0cmluZyYKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAg
IG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pKTsKIH0KIAogdm9p
ZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJhbWVEaWRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KaW5kZXggODdjNjhiMzM0ODUu
LjQ1NWQyZDVkNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdl
UHJveHlNYWMubW0KQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93
QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgRmxvYXRSZWN0JiB2aWV3RnJhbWVJbldpbmRvdwog
ICAgIC8vIEluIGNhc2UgdGhlIFVJIGNsaWVudCBvdmVycmlkZXMgZ2V0V2luZG93RnJhbWUoKSwg
d2UgY2FsbCBpdCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSBzZW5kIHRoZSBhcHByb3ByaWF0ZSB3aW5k
b3cgZnJhbWUuCiAgICAgbV91aUNsaWVudC0+d2luZG93RnJhbWUoKnRoaXMsIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMs
IGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXNdIChGbG9hdFJlY3Qgd2luZG93RnJhbWVJblNj
cmVlbkNvb3JkaW5hdGVzKSB7CiAgICAgICAgIEZsb2F0UmVjdCB3aW5kb3dGcmFtZUluVW5mbGlw
cGVkU2NyZWVuQ29vcmRpbmF0ZXMgPSBwYWdlQ2xpZW50KCkuY29udmVydFRvVXNlclNwYWNlKHdp
bmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcyk7Ci0gICAgICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZCh3aW5kb3dGcmFtZUlu
U2NyZWVuQ29vcmRpbmF0ZXMsIHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRl
cywgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGlu
YXRlcyksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2luZG93
QW5kVmlld0ZyYW1lc0NoYW5nZWQod2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzLCB3aW5k
b3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMsIHZpZXdGcmFtZUluV2luZG93Q29v
cmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMpKTsKICAgICB9KTsKIH0KIApA
QCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNYWluRnJhbWVJc1Njcm9s
bGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxh
YmxlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhj
b25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwg
Y29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0
aXZlc1dpdGhSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9Hcm91cCkKQEAgLTIwNSw3ICsyMDUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5j
KHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRpY3RhdGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJV
bmRvR3JvdXApLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0
RGljdGF0ZWRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJu
YXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCkpOwogI2Vsc2UKICAgICBJbnNlcnRUZXh0T3B0aW9u
cyBvcHRpb25zOwogICAgIG9wdGlvbnMucmVnaXN0ZXJVbmRvR3JvdXAgPSByZWdpc3RlclVuZG9H
cm91cDsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1
YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJgogCiAgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAK
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXR0cmlidXRlZFN1YnN0cmlu
Z0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3Rl
clJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5nZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0
ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpm
b250QXRTZWxlY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUs
IGJvCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7CiAgICAgCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkZvbnRBdFNlbGVjdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkZvbnRBdFNlbGVjdGlvbihjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb25DYWxsYmFjayhjb25zdCBTdHJpbmcmIGZvbnROYW1l
LCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9uSGFzTXVsdGlwbGVGb250cywgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQpAQCAtMjcxLDcgKzI3MSw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6
OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQogICAgICAgICByZXR1cm4gdmFsdWU7CiAg
ICAgCiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2Vzcygp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
OjpSZXBseSh2YWx1ZSksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKSwgTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KHZh
bHVlKSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjgyLDgg
KzI4Miw4IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0
YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3RyCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5k
bGUgaGFuZGxlOwogICAgIHVpbnQ2NF90IHNpemUgPSAwOwogICAgIGNvbnN0IFNlY29uZHMgbWVz
c2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBh
Z2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCBt
X3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSksCisgICAgICAg
IE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHko
aGFuZGxlLCBzaXplKSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJl
ZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CkBAIC0yOTcsMTQgKzI5NywxNCBAQCBib29sIFdlYlBhZ2VQ
cm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2Fy
ZE5hbWUpCiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVz
c2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6
OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZDo6UmVwbHkocmVzdWx0KSwgbV9w
YWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6
UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZDo6UmVwbHkocmVzdWx0KSwgbWVzc2Fn
ZVRpbWVvdXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9D
T05UUk9MUykKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9h
cmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlcywgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBs
YWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKHR5cGVzLCBkYXRhKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2Fy
ZERhdGEodHlwZXMsIGRhdGEpKTsKIH0KICNlbmRpZgogCkBAIC0zMzQsMjIgKzMzNCwyMiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBw
bHVnaW5Db21wbGV4VGV4dElucHV0SQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVu
dGlmaWVyLCB0ZXh0SW5wdXQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbihwbHVnaW5Db21wbGV4VGV4dElucHV0SWRl
bnRpZmllciwgdGV4dElucHV0KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cHBlcmNhc2VX
b3JkKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBwZXJjYXNl
V29yZCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBwZXJjYXNl
V29yZCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omxvd2VyY2FzZVdvcmQoKQogewotICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb3dlcmNhc2VXb3JkKCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb3dlcmNhc2VXb3JkKCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FwaXRhbGl6ZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBpdGFsaXplV29yZCgpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwaXRhbGl6ZVdvcmQoKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBpc1NtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZCkKQEAgLTM1OSw3ICszNTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQp
CiAKICAgICBUZXh0Q2hlY2tlcjo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKTsKICAgICBtX2lzU21hcnRJbnNlcnREZWxldGVFbmFibGVkID0g
aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChpc1NtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTbWFy
dEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rp
b25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1cEluZm8pCkBAIC0zOTUsNyArMzk1LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoZWxlbWVudFRva2VuLCB3aW5kb3dU
b2tlbiksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJ
UHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoZWxlbWVudFRva2VuLCB3aW5kb3dUb2tlbikpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGx1Z2luRm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1
aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNG
b2N1c0FuZFdpbmRvd0hhc0ZvY3VzKQpAQCAtNDI0LDcgKzQyNCw3IEBAIGJvb2wgV2ViUGFnZVBy
b3h5OjpzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9yRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJN
b3VzZUV2ZW50CiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMg
bWVzc2FnZVRpbWVvdXQoMyk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoZXZlbnQpLCBNZXNzYWdlczo6V2Vi
UGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50OjpSZXBseShyZXN1bHQpLCBtX3Bh
Z2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
aG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6
U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50OjpSZXBseShyZXN1bHQpLCBtZXNzYWdlVGlt
ZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wg
V2ViUGFnZVByb3h5OjphY2NlcHRzRmlyc3RNb3VzZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdl
YktpdDo6V2ViTW91c2VFdmVuCiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGNvbnN0
IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZShldmVudE51bWJlciwgZXZlbnQpLCBNZXNz
YWdlczo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91c2U6OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlE
LCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2Vw
dHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVyLCBldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2Nl
cHRzRmlyc3RNb3VzZTo6UmVwbHkocmVzdWx0KSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggZmY0NDkzNDFkOWUuLjU3
ZjNmZTE3M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIElQ
Qzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVNl
bmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX3dlYlBhZ2UucGFnZUlE
KCk7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpOwogfQogCiB2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBTdHJpbmcmIHZh
bGlkYXRpb25VUkxTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4
IGIxY2JjOTYzYjBlLi40NTRjYTZiYzg0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQogICAgICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b24oY2FsbGJhY2tJRCwgZXJyb3JNZXNzYWdlLCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZl
Y3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3Vt
ZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24s
IFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0Fy
Z3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAg
IFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7
CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpkaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBmcmFt
ZUlELAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbihjYWxsYmFja0lELCByZXN1bHQsIGVycm9yVHlwZSksIDApOwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGlu
YWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNo
aWxkRnJhbWVXaXRoT3JkaW5hbChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBh
Z2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFw
YWdlKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWkKICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRo
Tm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1
aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFu
ZGxlKHVpbnQ2NF90IHBhZ2VJRCwKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQs
IGZyYW1lRnJvbUVsZW1lbnQtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00MjYsNyArNDI2
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50
NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OnJlc29sdmVQYXJlbnRGcmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00NTIs
NyArNDUyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50
RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmEKICAgICBjb21wbGV0aW9uSGFuZGxl
cihXVEY6Om51bGxvcHQsIHBhcmVudEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpmb2N1c0ZyYW1lKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKIHsKICAgICBXZWJQYWdlKiBw
YWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICgh
cGFnZSkKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjb252
ZXJ0UG9pbnRGcm9tRnJhbWVDbGllbnRUb1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1lVgogICAgIHJl
dHVybiBjbGllbnRQb2ludDsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpj
b21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVT
eXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojpjb21wdXRlRWxlbWVudExheW91dChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENv
b3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQ
b2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2Ug
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdl
KSB7CkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpj
b21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGYKICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdElu
Vmlld0NlbnRlclBvaW50LCBpc09ic2N1cmVkKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBw
YWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICgh
cGFnZSkgewpAQCAtNzAzLDcgKzcwMyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHNuYXBz
aG90UmVjdEZvclNjcmVlbnNob3QoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6RWxlbWVuCiAgICAg
cmV0dXJuIHsgfTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2Ny
ZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFu
ZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VT
Y3JlZW5zaG90KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3
cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRs
ZSBoYW5kbGU7CiAKQEAgLTc1MSw3ICs3NTEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRAog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxs
YmFja0lELCBoYW5kbGUsIHsgfSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OmdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQ
YWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAg
IGlmICghcGFnZSkgewpAQCAtNzc2LDcgKzc3Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQog
Ci12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkZWxldGVDb29raWUoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBX
ZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwog
ICAgIGlmICghcGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCmluZGV4IDYyOTU0
MWQyMGJhLi4xMTY3NjQ1Mjc3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaApAQCAt
MjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJDb29yZGlu
YXRlU3lzdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCwxNyArNjEsMTcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkgbWVzc2FnZXMKLSAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9y
PFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQs
IGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgcmVz
b2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVI
YW5kbGUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5v
ZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0
X3QpPiYmKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHJlc29s
dmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lk
IGZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2b2lk
IGNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0
ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3Jl
OjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmKTsKLSAgICB2
b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+KT4mJik7Ci0gICAgdm9pZCB0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVk
ZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
Z2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPik+JiYpOworICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24o
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
ZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRD
YWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lE
KTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJl
c29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcmVzb2x2
ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIGZvY3VzRnJh
bWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQpOworICAgIHZvaWQg
Y29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENv
b3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
V2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJik7
CisgICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1
aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCB0YWtlU2NyZWVuc2hvdChXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJv
b2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmKTsKKyAgICB2b2lkIGRlbGV0
ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYp
OwogCiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGFhMTIxOWUyZWYxLi5kNzJmODlk
MjYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0yMSwyMSArMjEsMjEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eSB7Ci0gICAgRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxT
dHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBp
bnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wg
ZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsKSAtPiAoT3B0
aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVz
b2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUs
IHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9u
YWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2
ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYworICAgIFJlc29s
dmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBl
cnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVX
aXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUs
IHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBu
YW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFz
eW5jCisgICAgUmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50
NjRfdCBmcmFtZUlEKSBBc3luYwogCi0gICAgRm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQpCisgICAgRm9jdXNGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCiAKLSAgICBDb21wdXRlRWxlbWVudExheW91dCh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIGVudW06dWludDhfdCBXZWJLaXQ6OkNvb3JkaW5hdGVTeXN0
ZW0gY29vcmRpbmF0ZVN5c3RlbSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJD
b3JlOjpJbnRSZWN0IHJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50
ZXJQb2ludCwgYm9vbCBpc09ic2N1cmVkKSBBc3luYworICAgIENvbXB1dGVFbGVtZW50TGF5b3V0
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgZW51bTp1aW50OF90IFdl
YktpdDo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSAtPiAoT3B0aW9uYWw8U3Ry
aW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6
SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIEFzeW5jCiAKLSAg
ICBTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMK
KyAgICBTZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+
IGVycm9yVHlwZSkgQXN5bmMKIAotICAgIFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBU
YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJv
b2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBHZXRDb29raWVz
Rm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8
U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIEFzeW5j
Ci0gICAgRGVsZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIGNvb2tpZU5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAg
ICBHZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMpIEFzeW5jCisgICAgRGVsZXRlQ29va2llKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUp
IC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24uY3BwCmluZGV4IGFlMzg4M2Q4NmI2Li5hZjg5ZDc4ODE2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVu
dGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAgIHdlYlBh
Z2UtPmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwNGFlMGU0NWQ1ZS4uMjc4YjYwMTg0
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRS
ZXNvdQogICAgIGF1dG8mIGZyYW1lTG9hZGVyQ2xpZW50ID0gcmVzb3VyY2VMb2FkZXIuZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCk7CiAKICAgICBXZWJSZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJh
bWV0ZXJzIHRyYWNraW5nUGFyYW1ldGVyczsKLSAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
ID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVPcigwKTsKKyAgICB0cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVPcihQYWdl
SWRlbnRpZmllciB7IH0pOwogICAgIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlEID0gZnJhbWVM
b2FkZXJDbGllbnQuZnJhbWVJRCgpLnZhbHVlT3IoMCk7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJz
LnJlc291cmNlSUQgPSBpZGVudGlmaWVyOwogICAgIGF1dG8gc2Vzc2lvbklEID0gZnJhbWVMb2Fk
ZXJDbGllbnQuc2Vzc2lvbklEKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2Fj
aGVkUmVzb3UKICAgICAvLyB0aGVuIHdlIHNob3VsZCByZW1lbWJlciB0aGUgUmVzb3VyY2VMb2Fk
ZXIgaW4gb3VyIHJlY29yZHMgYnV0IG5vdCBzY2hlZHVsZSBpdCBpbiB0aGUgTmV0d29ya1Byb2Nl
c3MuCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPnNjaGVkdWxlQXJj
aGl2ZUxvYWQocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSkpIHsKICAg
ICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZl
IHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1
bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFyY2hpdmUgcmVzb3VyY2UgKGZyYW1l
ID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVs
ZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNvdXJjZSAoZnJhbWUg
PSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlk
ZW50aWZpZXIpOwogICAgICAgICBtX3dlYlJlc291cmNlTG9hZGVycy5zZXQoaWRlbnRpZmllciwg
V2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0
ZXJzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNzUsMTQgKzE3NSwxNCBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNl
TG9hZGVyLCBDYWNoZWRSZXNvdQogCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLmRvY3VtZW50TG9h
ZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkUmVzb3VyY2UocmVzb3VyY2VM
b2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgp
LnVybCgpKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2Vzcykg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBsb2FkZWQg
ZnJvbSBhcHBsaWNhdGlvbiBjYWNoZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxv
YWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGZyb20gYXBwbGljYXRpb24g
Y2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgp
LCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
aWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNh
Y2hlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIG1fd2ViUmVzb3VyY2VMb2FkZXJzLnNldChp
ZGVudGlmaWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHJlc291cmNlTG9hZGVyLCB0cmFj
a2luZ1BhcmFtZXRlcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChyZXNv
dXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0RhdGEoKSkgewogICAgICAgICBM
T0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBsb2FkZWQgYXMgZGF0YS4iLCByZXNvdXJjZUxv
YWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9h
ZGVkIGFzIGRhdGEgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5m
cmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3Vy
Y2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBhcyBkYXRhIChmcmFt
ZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
aWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNo
ZWRSZXNvdQogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChpc1F1aWNrTG9va1ByZXZpZXdV
UkwocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICBMT0coTmV0d29y
a1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlLiIsIHJl
c291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2ls
bCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2ls
bCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAg
ICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIC8v
IGh0dHBzOi8vYmxvZ3MuZ25vbWUub3JnL2FsZXhsLzIwMTIvMDEvMjYvcmVzb3VyY2VzLWluLWds
aWIvCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzKCJy
ZXNvdXJjZSIpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNz
KSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRs
ZWQgYXMgYSBHUmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIs
ICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UgKGZyYW1l
ID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVs
ZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UgKGZyYW1lID0gJXAsIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVy
KTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjExLDExICsyMTEsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UK
ICAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLmhhbmRsZUZldGNoKHJl
c291cmNlTG9hZGVyLCBzZXNzaW9uSUQsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFtZXRlcnMsIGlkZW50aWZpZXIsIHNlc3Npb25J
RCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZl
cmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSksIHJlc291cmNlTG9hZGVy
ID0gbWFrZVJlZihyZXNvdXJjZUxvYWRlcildIChTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJl
c3VsdCByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0ICE9IFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpIHsKICAgICAgICAgICAgIExPRyhOZXR3
b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVM
b2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFu
ZGxlIGZldGNoIGFsZ29yaXRobSIsIHJlc291cmNlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRp
bjEoKS5kYXRhKCkpOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJj
ZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91
Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVs
ZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxl
IGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9h
ZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBpZiAocmVzb3VyY2VMb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNl
V29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1
bGVMb2FkOiB1bmFibGUgdG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5k
bGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VM
b2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0
byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0
aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXNv
dXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSB7CiAgICAgICAgICAgICAgICAg
YXV0byBlcnJvciA9IGludGVybmFsRXJyb3IocmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKS51cmwo
KSk7CiAgICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpD
YW5jZWxsYXRpb24pOwpAQCAtMjI3LDEzICsyMjcsMTMgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVz
b3UKICAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVn
eSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKQogICAg
ICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hl
ZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIuZ2V0KCksIHJlc291cmNl
TG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2Vzc2lvbklELCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3Vy
Y2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFu
ZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IGlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJj
ZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5k
bGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgp
LCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICB9KTsKICNlbHNlCiAgICAgaWYgKCF0cnlMb2Fk
aW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyKSkKICAgICAgICAgc2NoZWR1
bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkp
OwogICAgIGVsc2UKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ciwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUg
PSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxl
TG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwog
I2VuZGlmCiB9CiAKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
Y2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAog
ICAgIGlmIChsb2FkUGFyYW1ldGVycy5vcHRpb25zLm1vZGUgIT0gRmV0Y2hPcHRpb25zOjpNb2Rl
OjpOYXZpZ2F0ZSkgewogICAgICAgICBBU1NFUlQobG9hZFBhcmFtZXRlcnMuc291cmNlT3JpZ2lu
KTsKICAgICAgICAgaWYgKCFsb2FkUGFyYW1ldGVycy5zb3VyY2VPcmlnaW4pIHsKLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVs
ZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQs
IGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwg
InNjaGVkdWxlTG9hZDogbm8gc291cmNlT3JpZ2luIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVk
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50
PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1l
dGVycy5pZGVudGlmaWVyKTsKICAgICAgICAgICAgIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExv
YWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0z
NDYsOSArMzQ2LDkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5l
dHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKIAogICAgIEFTU0VSVCgobG9h
ZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8IGxv
YWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBv
bGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwogCi0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVp
bmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0
eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nh
c3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0
ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMu
aWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwg
InNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdv
cmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1
ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBs
b2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMpLCAwKSkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1
bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nl
c3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxv
YWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5w
cmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2FkUGFyYW1ldGVycy53ZWJG
cmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVW5hYmxlIHRv
IHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBw
cmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3Rh
dGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQ
YXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFp
bGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNl
IGl0IGhhZCBjcmFzaGVkLgogICAgICAgICAvLyBUaGlzIGxvYWQgd2lsbCBuZXZlciBzdWNjZWVk
IHNvIHdlIHdpbGwgc2NoZWR1bGUgaXQgdG8gZmFpbCBhc3luY2hyb25vdXNseS4KICAgICAgICAg
c2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChyZXNvdXJjZUxvYWRlcik7CkBAIC01MDcsMTkg
KzUwNywxOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgIFdlYkZyYW1lKiB3ZWJGcmFt
ZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1l
KCkgOiBudWxscHRyOwogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1l
LT5wYWdlKCkgOiBudWxscHRyOwogCi0gICAgYXV0byBwYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFn
ZS0+cGFnZUlEKCkgOiAwOworICAgIGF1dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBh
Z2VJRCgpIDogUGFnZUlkZW50aWZpZXIgeyB9OwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1l
ID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CiAgICAgYXV0byBzZXNzaW9uSUQgPSB3ZWJQYWdl
ID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpOwogCiAgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZUxvYWRlci5mcmFtZSgpLmRvY3VtZW50
KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IG5vIGRvY3VtZW50
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNl
U3luY2hyb25vdXNseTogbm8gZG9jdW1lbnQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELnRvVUludDY0KCksIGZy
YW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgICAgICBlcnJvciA9IGludGVybmFs
RXJyb3IocmVxdWVzdC51cmwoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
YXV0byBzeW5jTG9hZFJlc3VsdCA9IHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hl
bWVIYW5kbGVyKGZyYW1lTG9hZGVyLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0KSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBjYWxsaW5nIHRyeUxvYWRpbmdTeW5jaHJvbm91
c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1LCBlcnJvciA9ICVkKSIsIHBhZ2VJRCwgZnJh
bWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3luY0xvYWRSZXN1bHQtPmVycm9yLmVycm9y
Q29kZSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQs
ICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgY2FsbGluZyB0cnlMb2FkaW5nU3lu
Y2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFuZGxlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSwgZXJyb3IgPSAlZCkiLCBwYWdl
SUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3luY0xvYWRS
ZXN1bHQtPmVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAgZXJyb3IgPSBXVEZNb3ZlKHN5bmNM
b2FkUmVzdWx0LT5lcnJvcik7CiAgICAgICAgIHJlc3BvbnNlID0gV1RGTW92ZShzeW5jTG9hZFJl
c3VsdC0+cmVzcG9uc2UpOwogICAgICAgICBkYXRhID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+
ZGF0YSk7CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICBI
YW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVyOwogCiAgICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpSZXBs
eShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxl
ZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBh
Z2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNs
eTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
bHUpIiwgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIp
OwogICAgICAgICBpZiAoYXV0byogcGFnZSA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5jb3JlUGFnZSgp
IDogbnVsbHB0cikKICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCku
bG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRl
cm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6c3luY2hyb25v
dXNNZXNzYWdlRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAg
ICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVy
JiBmcmFtZUxvYWRlciwgdW5zaQogICAgIH0KIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKQordm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogewogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UGFnZUxvYWRDb21wbGV0ZWQod2ViUGFnZUlEKSwgMCk7CiB9CkBAIC02NDgsMTAgKzY0OCwx
MCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXImIGZy
YW1lTG9hZGVyLCBjb25zdCBVUkwmIHVybCwgUwogCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJl
cXVlc3QgeyB1cmwgfTsKLSAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQ
YWdlLT5wYWdlSUQoKSA6IDA7Ci0gICAgcGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUg
PyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKKyAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdl
YlBhZ2UtPnBhZ2VJRCgpOworICAgIHBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lLT5m
cmFtZUlEKCk7CiAgICAgcGFyYW1ldGVycy5wYXJlbnRQSUQgPSBwcmVzZW50aW5nQXBwbGljYXRp
b25QSUQoKTsKLSAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5z
ZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgcGFy
YW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlLT5zZXNzaW9uSUQoKTsKICAgICBwYXJhbWV0ZXJz
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAg
cGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RPbmx5OjpZZXM7CiAg
ICAgcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyA9IHNob3VsZFBl
cmZvcm1TZWN1cml0eUNoZWNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggNGFmNTk5NDFlMzQuLmFjNTI0OTY2
YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2Fk
ZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQg
bG9hZFJlc291cmNlKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJP
cHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U3VicmVzb3Vy
Y2VMb2FkZXI+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoV2ViQ29yZTo6RnJhbWVMb2FkZXImLCB1bnNpZ25lZCBsb25nIHJlc291cmNlTG9hZElkZW50
aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNsaWVudENy
ZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IFdlYkNv
cmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBwYWdl
TG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpIGZpbmFsOworICAgIHZvaWQgcGFnZUxv
YWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgdm9pZCBy
ZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVy
c0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNw
cAppbmRleCBiZjg4ZmRhMzAwNy4uODhiZDUzYmYxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg4LDE2
ICs4OCwxNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBSZXNvdQogICAgIFJlZjxXZWJSZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9j
ZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IHRvICclcyciLCBwcm9wb3Nl
ZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3
aWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRM
b2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGly
ZWN0KG1fY29yZUxvYWRlci5nZXQoKSwgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNl
KSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4
aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVk
IGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlE
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0
aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBm
YWxzZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2
NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5y
ZXNvdXJjZUlEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fY29yZUxvYWRlci0+
d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25z
ZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0KSB7CiAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2Nv
cmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRl
ciBvciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5y
ZXNvdXJjZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5k
UmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG5vIGNvcmVsb2FkZXIgb3IgaWRlbnRpZmll
ciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTMsMTIgKzEx
MywxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRl
c1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlUwogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29s
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewogICAgIExPRyhOZXR3
b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2Ug
Zm9yICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGlu
MSgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAl
ZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZy
YW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25z
ZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgc3RhdHVzID0gJWQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogCiAgICAg
UmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmICht
X2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5
YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShtX2NvcmVMb2FkZXIuZ2V0KCksIHJlc3BvbnNlKSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5v
dCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSB0aGUgY29udGVudCBpcyBhbHJlYWR5IGNhY2hlZCAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRp
bnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVhZHkgY2FjaGVkIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlLCBib28KICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIgJiYgbV9jb3JlTG9hZGVy
LT5pZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Jl
c291cmNlTG9hZGVyOjpDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpKTsKICAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5v
IElEIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsK
KyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9u
c2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOwogICAgICAgICB9OwogICAgIH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3
b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwg
d2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKCFtX251bUJ5dGVzUmVj
ZWl2ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6
IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRS
ZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICB9CiAgICAgbV9u
dW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhLCBpbnQ2NF90IGUKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJl
c291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykK
IHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
RmluaXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlz
aFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRlc1JlY2VpdmVkKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxl
bmd0aCA9ICV6ZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJ
RCwgbV9udW1CeXRlc1JlY2VpdmVkKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQ
cm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTG9hZCBzaG91bGQgbm90IGJlIGFibGUgdG8gZmlu
aXNoIGJlZm9yZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAgICAgbV9jb3JlTG9h
ZGVyLT5kaWRGaW5pc2hMb2FkaW5nKG5ldHdvcmtMb2FkTWV0cmljcyk7CkBAIC0xNjcsNyArMTY3
LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0
IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0wKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9H
KE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJj
ZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAg
ICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJM
b2FkIHNob3VsZCBub3QgYmUgYWJsZSB0byBmaW5pc2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0
aGUgcmVzcG9uc2UiKTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsK
ICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxv
Y2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCku
c3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJk
aWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2Fk
ZXItPmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKIH0KQEAgLTE4Nyw3ICsxODcs
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRp
b25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VM
b2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xp
Y3lEZW5pZWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgp
LmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhG
cmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQ
b2xpY3lEZW5pZWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigp
LT5zdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVu
aWVkKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CkBAIC0xOTYsMTMg
KzE5NiwxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1l
T3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaQogdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhh
bmRsZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJp
bmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJl
c291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJj
ZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVz
b3VyY2VJRCk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5
V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0df
RVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2Vu
dCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0
byBjcmVhdGUgU2hhcmVkQnVmZmVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBt
X2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJh
bWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVu
dCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6
aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0
ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRl
ci5oCmluZGV4IDdmZDc4MzIyMzNhLi41ODY1NDM3MThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KIApAQCAtNTAsNyArNTEsNyBAQCB0eXBlZGVmIHVpbnQ2NF90IFJlc291cmNl
TG9hZElkZW50aWZpZXI7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlJlc291cmNlTG9hZGVyPiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJs
aWM6CiAgICAgc3RydWN0IFRyYWNraW5nUGFyYW1ldGVycyB7Ci0gICAgICAgIHVpbnQ2NF90IHBh
Z2VJRCB7IDAgfTsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAg
ICAgICB1aW50NjRfdCBmcmFtZUlEIHsgMCB9OwogICAgICAgICBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIHJlc291cmNlSUQgeyAwIH07CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHAKaW5kZXggMjBlNGQ1YzVhZGIuLmZhMDc4MjNmZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIGJvb2wgV2ViTm90aWZpY2F0aW9u
TWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkK
ICAgICBhdXRvIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmFkZChub3RpZmljYXRpb24t
PnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgVmVjdG9yPHVpbnQ2NF90PigpKS5pdGVyYXRvcjsK
ICAgICBpdC0+dmFsdWUuYXBwZW5kKG5vdGlmaWNhdGlvbklEKTsKIAotICAgIG1fcHJvY2Vzcy5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNo
b3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT50aXRsZSgpLCBub3RpZmljYXRpb24tPmJvZHko
KSwgbm90aWZpY2F0aW9uLT5pY29uKCkuc3RyaW5nKCksIG5vdGlmaWNhdGlvbi0+dGFnKCksIG5v
dGlmaWNhdGlvbi0+bGFuZygpLCBub3RpZmljYXRpb24tPmRpcigpLCBub3RpZmljYXRpb24tPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbm90
aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTaG93Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi0+dGl0bGUoKSwgbm90
aWZpY2F0aW9uLT5ib2R5KCksIG5vdGlmaWNhdGlvbi0+aWNvbigpLnN0cmluZygpLCBub3RpZmlj
YXRpb24tPnRhZygpLCBub3RpZmljYXRpb24tPmxhbmcoKSwgbm90aWZpY2F0aW9uLT5kaXIoKSwg
bm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCkt
PnRvU3RyaW5nKCksIG5vdGlmaWNhdGlvbklEKSk7CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQog
ICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2VsKE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
LCBXZWJQYWdlKiBwYWdlKQogICAgIGlmICghbm90aWZpY2F0aW9uSUQpCiAgICAgICAgIHJldHVy
bjsKICAgICAKLSAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQp
LCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2UpOwpAQCAtMTg0LDcg
KzE4NCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25z
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAgICAgICAgIHJldHVybjsKIAogICAg
IFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlvbklEcyA9IGl0LT52YWx1ZTsKLSAgICBtX3By
b2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpDbGVhck5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uSURzKSwgcGFnZS0+cGFnZUlEKCkp
OworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2xlYXJOb3RpZmljYXRp
b25zKG5vdGlmaWNhdGlvbklEcykpOwogICAgIHNpemVfdCBjb3VudCA9IG5vdGlmaWNhdGlvbklE
cy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAg
ICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURN
YXAudGFrZShub3RpZmljYXRpb25JRHNbaV0pOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24q
IG5vdGlmaWNhdGlvbiwKIAogICAgIG1fbm90aWZpY2F0aW9uSURNYXAucmVtb3ZlKG5vdGlmaWNh
dGlvbklEKTsKICAgICByZW1vdmVOb3RpZmljYXRpb25Gcm9tQ29udGV4dE1hcChub3RpZmljYXRp
b25JRCwgbm90aWZpY2F0aW9uKTsKLSAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWREZXN0cm95Tm90aWZpY2F0aW9u
KG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFS
QU0ocGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggMzRiNWE2
NDNmMDMuLjhjZGRiNTMwZDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3Bw
CkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRzIHN5bmNXb3JrZXJUZXJtaW5h
dGlvblRpbWVvdXQgeyAxMDBfbXMgfTsgLy8gT25seSB1c2VkIGJ5IGxhCiAKIGNsYXNzIFNlcnZp
Y2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBFbXB0eUZyYW1lTG9hZGVy
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQoV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCkKKyAgICBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQoV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCkKICAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikK
ICAgICAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAgICAgICwgbV9wYWdlSUQocGFn
ZUlEKQpAQCAtOTUsMTggKzk1LDE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRVc2VDcmVk
ZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9
CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2ZyYW1lSUQ7IH0KICAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGZpbmFsIHsgcmV0
dXJuIG1fdXNlckFnZW50OyB9CiAKICAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYg
bV9jb25uZWN0aW9uOwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotICAgIHVpbnQ2
NF90IG1fcGFnZUlEIHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlE
OwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRCB7IDAgfTsKICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7
CiB9OwogCi1XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBw
YWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBz
dG9yZSkKK1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBh
Z2VHcm91cElELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlKQogICAgIDogbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNv
bm5lY3Rpb24pKQogICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkKICAgICAsIG1fcGFn
ZUlEKHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDZjZTgzZDFk
MDllLi5mYmI2MzBlNGUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01
MSw3ICs1MSw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRN
YW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGlj
OgotICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+
JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKTsKKyAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBD
OjpDb25uZWN0aW9uPiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB+V2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6
CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
OwogICAgIHVpbnQ2NF90IG1fcGFnZUdyb3VwSUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQgeyAw
IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3Qg
bV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCB7IDAgfTsKIAogICAgIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5OjpBbGxvd0FsbFN0
b3JhZ2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggNDkzM2NhNGMz
YTAuLjI5YTNmZTU3NGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAt
ODIsMTQgKzgyLDE0IEBAIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoVXNlckNvbnRlbnRDCiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcihVc2VyQ29udGVudENvbnRyb2xsZXJJ
ZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKQogewogICAgIEFTU0VS
VCh1c2VyQ29udGVudENvbnRyb2xsZXJzKCkuY29udGFpbnMobV9pZGVudGlmaWVyKSk7CiAKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKIAogICAgIHVzZXJDb250ZW50Q29udHJvbGxl
cnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXgg
NDk2Mjk2ZjZkODguLjM0M2U4MzVhZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTc4
LDcgKzE3OCw3IEBAIEZsb2F0UmVjdCBXZWJDaHJvbWVDbGllbnQ6OndpbmRvd1JlY3QoKQogCiAg
ICAgRmxvYXRSZWN0IG5ld1dpbmRvd0ZyYW1lOwogCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRX
aW5kb3dGcmFtZTo6UmVwbHkobmV3V2luZG93RnJhbWUpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAg
IGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0Zy
YW1lKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpSZXBseShuZXdX
aW5kb3dGcmFtZSkpKQogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiAKICAgICByZXR1cm4g
bmV3V2luZG93RnJhbWU7CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmZvY3VzZWRGcmFtZUNoYW5nZWQoRnJhbWUqIGZyYW1lKQogewogICAgIFdlYkZyYW1lKiB3ZWJG
cmFtZSA9IGZyYW1lID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKSA6IG51bGxwdHI7
CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZvY3VzZWRGcmFtZUNoYW5nZWQod2ViRnJh
bWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9jdXNlZEZyYW1lQ2hhbmdlZCh3ZWJG
cmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwKSk7CiB9CiAKIFBhZ2UqIFdlYkNocm9tZUNs
aWVudDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIHdpbmRvd0ZlYXR1cmVzLCBjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQpAQCAtMjg4LDE5ICsyODgsMjAgQEAgUGFn
ZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFt
ZUxvYWRSZXF1ZXN0JiByZXF1ZXMKIAogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1l
Ojpmcm9tQ29yZUZyYW1lKGZyYW1lKTsKIAotICAgIHVpbnQ2NF90IG5ld1BhZ2VJRCA9IDA7Cisg
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRDsKICAgICBPcHRpb25hbDxXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOwotICAgIGlmICghd2ViUHJvY2Vzcy5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpDcmVhdGVOZXdQYWdlKHdlYkZyYW1lLT5pbmZvKCksIHdlYkZyYW1lLT5wYWdlKCktPnBhZ2VJ
RCgpLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCB3aW5kb3dGZWF0dXJlcywgbmF2aWdhdGlv
bkFjdGlvbkRhdGEpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpSZXBs
eShuZXdQYWdlSUQsIHBhcmFtZXRlcnMpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9w
YWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJh
bWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCksIHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCksIHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVy
cykpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbmV3UGFnZUlEKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIEFTU0VSVChwYXJhbWV0ZXJzKTsKICAgICBpZiAo
cGFyYW1ldGVycy0+c2Vzc2lvbklEID09IG1fcGFnZS5zZXNzaW9uSUQoKSkKICAgICAgICAgcGFy
YW1ldGVycy0+b2xkUGFnZUlEID0gbV9wYWdlLnBhZ2VJRCgpOwogCi0gICAgd2ViUHJvY2Vzcy5j
cmVhdGVXZWJQYWdlKG5ld1BhZ2VJRCwgV1RGTW92ZSgqcGFyYW1ldGVycykpOwotICAgIHJldHVy
biB3ZWJQcm9jZXNzLndlYlBhZ2UobmV3UGFnZUlEKS0+Y29yZVBhZ2UoKTsKKyAgICB3ZWJQcm9j
ZXNzLmNyZWF0ZVdlYlBhZ2UoKm5ld1BhZ2VJRCwgV1RGTW92ZSgqcGFyYW1ldGVycykpOworICAg
IHJldHVybiB3ZWJQcm9jZXNzLndlYlBhZ2UoKm5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7CiB9CiAK
IHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzaG93KCkKQEAgLTMzNSw3ICszMzYsNyBAQCBib29sIFdl
YkNocm9tZUNsaWVudDo6dG9vbGJhcnNWaXNpYmxlKCkKICAgICAgICAgcmV0dXJuIHRvb2xiYXJz
VmlzaWJpbGl0eSA9PSBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVu
dFZpc2liaWxpdHk6OlZpc2libGU7CiAgICAgCiAgICAgYm9vbCB0b29sYmFyc0FyZVZpc2libGUg
PSB0cnVlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNB
cmVWaXNpYmxlKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJs
ZTo6UmVwbHkodG9vbGJhcnNBcmVWaXNpYmxlKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAo
IW1fcGFnZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZp
c2libGUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpS
ZXBseSh0b29sYmFyc0FyZVZpc2libGUpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBy
ZXR1cm4gdG9vbGJhcnNBcmVWaXNpYmxlOwpAQCAtMzUzLDcgKzM1NCw3IEBAIGJvb2wgV2ViQ2hy
b21lQ2xpZW50OjpzdGF0dXNiYXJWaXNpYmxlKCkKICAgICAgICAgcmV0dXJuIHN0YXR1c2JhclZp
c2liaWxpdHkgPT0gQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50OjpVSUVsZW1lbnRW
aXNpYmlsaXR5OjpWaXNpYmxlOwogCiAgICAgYm9vbCBzdGF0dXNCYXJJc1Zpc2libGUgPSB0cnVl
OwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNp
YmxlKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6UmVw
bHkoc3RhdHVzQmFySXNWaXNpYmxlKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFn
ZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGUo
KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxlOjpSZXBseShz
dGF0dXNCYXJJc1Zpc2libGUpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4g
c3RhdHVzQmFySXNWaXNpYmxlOwpAQCAtMzgyLDcgKzM4Myw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xp
ZW50OjptZW51YmFyVmlzaWJsZSgpCiAgICAgICAgIHJldHVybiBtZW51YmFyVmlzaWJpbGl0eSA9
PSBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxpdHk6
OlZpc2libGU7CiAgICAgCiAgICAgYm9vbCBtZW51QmFySXNWaXNpYmxlID0gdHJ1ZTsKLSAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGUoKSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6UmVwbHkobWVudUJhcklz
VmlzaWJsZSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZSgpLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlOjpSZXBseShtZW51QmFySXNWaXNpYmxlKSkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIG1lbnVCYXJJc1Zpc2libGU7CkBA
IC0xMTg2LDcgKzExODcsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZENvbnRlbnRN
ZWRpYUVsZW1lbnREaWRDaGFuZ2UodWludDY0X3QgZWxlbWVudElEKQogYm9vbCBXZWJDaHJvbWVD
bGllbnQ6OndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1
aW50OF90PiYgd3JhcHBlZEtleSkgY29uc3QKIHsKICAgICBib29sIHN1Y2NlZWRlZDsKLSAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldyYXBDcnlwdG9LZXkoa2V5KSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6V3JhcENyeXB0b0tleTo6UmVwbHkoc3VjY2VlZGVkLCB3cmFwcGVk
S2V5KSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpXcmFwQ3J5cHRvS2V5KGtleSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OldyYXBDcnlwdG9LZXk6OlJlcGx5KHN1Y2NlZWRlZCwgd3JhcHBlZEtleSkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHN1Y2NlZWRlZDsKIH0KQEAgLTExOTQsNyArMTE5
NSw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYga2V5LCBWZWN0b3I8dWludDhfdD4mCiBib29sIFdlYkNocm9tZUNsaWVudDo6dW53
cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPHVp
bnQ4X3Q+JiBrZXkpIGNvbnN0CiB7CiAgICAgYm9vbCBzdWNjZWVkZWQ7Ci0gICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbndyYXBDcnlwdG9LZXkod3JhcHBlZEtleSksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlVud3JhcENyeXB0b0tleTo6UmVwbHkoc3VjY2VlZGVkLCBrZXkp
LCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5KSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5OjpSZXBseShzdWNjZWVkZWQsIGtleSkpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHN1Y2NlZWRlZDsKIH0KQEAgLTEyMDQsNyArMTIw
NSw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8CiBTdHJpbmcgV2ViQ2hyb21lQ2xpZW50Ojpz
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBj
b25zdCBTdHJpbmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nIHJlc3VsdDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNp
Z25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0
cmluZywgdXJsKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hh
bGxlbmdlU3RyaW5nOjpSZXBseShyZXN1bHQpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICgh
bV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZywgdXJsKSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nOjpS
ZXBseShyZXN1bHQpKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KQEAgLTEzMTcsMTIgKzEzMTgsMTIgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkKIH0KIAogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6aGFzU3RvcmFnZUFj
Y2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFp
biYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIG1fcGFnZS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJh
bWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkNocm9tZUNsaWVu
dDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFp
biwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgbV9wYWdlLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21h
aW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGRkM2IyMjU0MzVkLi4yOTFjNWVk
ZGM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzY5LDggKzM2OSw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpIGZpbmFsOwogCiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nl
c3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFs
OwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFt
ZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpIGZpbmFsOworICAgIHZvaWQgaGFzU3Rv
cmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYp
IGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbG9yQ2hv
b3Nlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29s
b3JDaG9vc2VyLmNwcAppbmRleCBkNTM1ZTVjNTVjNi4uY2I0MDI0MTcwNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xv
ckNob29zZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIFdlYkNvbG9yQ2hvb3Nlcjo6V2ViQ29sb3JD
aG9vc2VyKFdlYlBhZ2UqIHBhZ2UsIENvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50LCBjb25zCiAg
ICAgLCBtX3BhZ2UocGFnZSkKIHsKICAgICBtX3BhZ2UtPnNldEFjdGl2ZUNvbG9yQ2hvb3Nlcih0
aGlzKTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihpbml0aWFs
Q29sb3IsIGNsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSwgY2xpZW50LT5z
dWdnZXN0ZWRDb2xvcnMoKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29sb3JQaWNrZXIoaW5pdGlhbENvbG9yLCBjbGll
bnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCksIGNsaWVudC0+c3VnZ2VzdGVkQ29s
b3JzKCkpKTsKIH0KIAogV2ViQ29sb3JDaG9vc2VyOjp+V2ViQ29sb3JDaG9vc2VyKCkKQEAgLTc0
LDcgKzc0LDcgQEAgdm9pZCBXZWJDb2xvckNob29zZXI6OnJlYXR0YWNoQ29sb3JDaG9vc2VyKGNv
bnN0IENvbG9yJiBjb2xvcikKICAgICBtX3BhZ2UtPnNldEFjdGl2ZUNvbG9yQ2hvb3Nlcih0aGlz
KTsKIAogICAgIEFTU0VSVChtX2NvbG9yQ2hvb3NlckNsaWVudCk7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTaG93Q29sb3JQaWNrZXIoY29sb3IsIG1fY29sb3JDaG9vc2VyQ2xpZW50LT5l
bGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpLCBtX2NvbG9yQ2hvb3NlckNsaWVudC0+c3Vn
Z2VzdGVkQ29sb3JzKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbG9yUGlja2VyKGNvbG9yLCBtX2NvbG9yQ2hvb3Nl
ckNsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSwgbV9jb2xvckNob29zZXJD
bGllbnQtPnN1Z2dlc3RlZENvbG9ycygpKSk7CiB9CiAKIHZvaWQgV2ViQ29sb3JDaG9vc2VyOjpz
ZXRTZWxlY3RlZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTg1LDcgKzg1LDcgQEAgdm9p
ZCBXZWJDb2xvckNob29zZXI6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQog
ICAgIGlmIChtX3BhZ2UtPmFjdGl2ZUNvbG9yQ2hvb3NlcigpICE9IHRoaXMpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0Q29sb3JQaWNrZXJDb2xvcihj
b2xvciksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpTZXRDb2xvclBpY2tlckNvbG9yKGNvbG9yKSk7CiB9CiAKIHZvaWQgV2ViQ29s
b3JDaG9vc2VyOjplbmRDaG9vc2VyKCkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBXZWJDb2xvckNo
b29zZXI6OmVuZENob29zZXIoKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVuZENvbG9yUGlja2VyKCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbmRDb2xv
clBpY2tlcigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJE
YXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCmluZGV4IGQwMjVkZmFjZmEyLi5kMzZhMTU0Y2Zl
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjp+V2ViRGF0YUxpc3RTdWdn
ZXN0aW9uUGlja2VyKCkgeyB9CiAKIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpo
YW5kbGVLZXlkb3duV2l0aElkZW50aWZpZXIoY29uc3QgV1RGOjpTdHJpbmcmIGtleSkKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUtleWRvd25JbkRhdGFMaXN0KGtleSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpIYW5kbGVLZXlkb3duSW5EYXRhTGlzdChrZXkpKTsKIH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXI6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBXVEY6OlN0cmluZyYgc2VsZWN0
ZWRPcHRpb24pCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyOjpkaWRDbG9zZVN1Z2dlc3Rpb25zKCkKIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI6OmNsb3NlKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVuZERhdGFMaXN0
U3VnZ2VzdGlvbnMoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkVuZERhdGFMaXN0U3VnZ2VzdGlvbnMoKSk7CiB9CiAKIHZvaWQg
V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBlKERh
dGFMaXN0U3VnZ2VzdGlvbkFjdGl2YXRpb25UeXBlIHR5cGUpCkBAIC03NSw3ICs3NSw3IEBAIHZv
aWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBl
KERhdGFMaXN0U3VnZ2VzdGlvbkFjCiAgICAgbV9wYWdlLT5zZXRBY3RpdmVEYXRhTGlzdFN1Z2dl
c3Rpb25QaWNrZXIodGhpcyk7CiAKICAgICBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiBp
bmZvID0geyB0eXBlLCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPnN1Z2dlc3Rpb25zKCks
IG1fZGF0YUxpc3RTdWdnZXN0aW9uc0NsaWVudC0+ZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRp
bmF0ZXMoKSB9OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0RhdGFMaXN0U3VnZ2Vz
dGlvbnMoaW5mbyksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTaG93RGF0YUxpc3RTdWdnZXN0aW9ucyhpbmZvKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBmNDI4ZmQyMzk3
ZS4uNzA1MjAyNWI5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0zMDksNyArMzA5LDcg
QEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyVW5kb1N0ZXAoVW5kb1N0ZXAmIHN0ZXAp
CiAgICAgYXV0byBzdGVwSUQgPSB3ZWJTdGVwLT5zdGVwSUQoKTsKIAogICAgIG1fcGFnZS0+YWRk
V2ViVW5kb1N0ZXAoc3RlcElELCBXVEZNb3ZlKHdlYlN0ZXApKTsKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oc3RlcElE
LCBzdGVwLmxhYmVsKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3Bh
dGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHN0ZXBJ
RCwgc3RlcC5sYWJlbCgpKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hl
bldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0
ZXJSZWRvU3RlcChVbmRvU3RlcCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRl
eCA1MjljMDQ2NzAzMC4uM2RjZDdlMmVjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp+V2ViRnJhbWVM
b2FkZXJDbGllbnQoKQogewogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnBhZ2VJRCgpIGNvbnN0CitPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFt
ZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpLT5wYWdlSUQoKTsKQEAg
LTU0MSw3ICs1NDEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZh
aWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZQogICAgIGlmICghd2ViUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZDogKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+
cGFnZUlEKCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywg
IiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywg
d2ViUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAg
IFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmFpbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
KSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOworICAgIFJF
TEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEZhaWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiki
LCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkp
OwogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIApAQCAtOTAxLDcgKzkwMSw5
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgaWYgKHJlcXVlc3Rlci5mcmFtZUlEKCkg
JiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUocmVxdWVzdGVyLmZyYW1lSUQoKSkp
CiAgICAgICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID0gcmVxdWVzdGVyLmZy
YW1lSUQoKTsKIAotICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlEID0gcmVxdWVzdGVyLnBh
Z2VJRCgpICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJ
RCgpKSA/IHJlcXVlc3Rlci5wYWdlSUQoKSA6IDA7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlEOworICAgIGlmIChyZXF1ZXN0ZXIucGFnZUlEKCkgJiYgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShyZXF1ZXN0ZXIucGFnZUlEKCkpKQorICAgICAg
ICBvcmlnaW5hdGluZ1BhZ2VJRCA9IHJlcXVlc3Rlci5wYWdlSUQoKTsKIAogICAgIE5hdmlnYXRp
b25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhOwogICAgIG5hdmlnYXRpb25BY3Rpb25E
YXRhLm5hdmlnYXRpb25UeXBlID0gYWN0aW9uLT5uYXZpZ2F0aW9uVHlwZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBmNzNhYjhjYTczZi4uYzhmYjJhZjIxMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgYXBwbHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llc0RhdGEmJik7CiAKLSAgICBP
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwogICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKaW5kZXggZDE2ZmU4NTc3ODQu
LjIwOGJiODhhM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQg
V2ViUG9wdXBNZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3QsIEZyYW1lVmlldyogdmlldywg
aW50IGluZGV4KQogICAgIFBsYXRmb3JtUG9wdXBNZW51RGF0YSBwbGF0Zm9ybURhdGE7CiAgICAg
c2V0VXBQbGF0Zm9ybURhdGEocGFnZUNvb3JkaW5hdGVzLCBwbGF0Zm9ybURhdGEpOwogCi0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93UG9wdXBNZW51KHBhZ2VDb29yZGluYXRlcywgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KG1fcG9wdXBDbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rp
b24oKSksIGl0ZW1zLCBpbmRleCwgcGxhdGZvcm1EYXRhKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUocGFn
ZUNvb3JkaW5hdGVzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9wb3B1cENsaWVudC0+bWVudVN0
eWxlKCkudGV4dERpcmVjdGlvbigpKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpKTsKIH0K
IAogdm9pZCBXZWJQb3B1cE1lbnU6OmhpZGUoKQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgV2Vi
UG9wdXBNZW51OjpoaWRlKCkKICAgICBpZiAoIW1fcGFnZSB8fCAhbV9wb3B1cENsaWVudCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIaWRlUG9wdXBNZW51
KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpIaWRlUG9wdXBNZW51KCkpOwogICAgIG1fcGFnZS0+c2V0QWN0aXZlUG9wdXBNZW51
KG51bGxwdHIpOwogICAgIG1fcG9wdXBDbGllbnQtPnBvcHVwRGlkSGlkZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBv
cHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VhcmNoUG9wdXBNZW51LmNwcAppbmRleCAzM2Q0NzU2ZWRhMi4uYzBlOGMxOTE0NGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgV2ViU2VhcmNo
UG9wdXBNZW51OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBWZWN0CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBzZWFyY2hJdGVtcyksIHBh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNh
dmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBzZWFyY2hJdGVtcykpOwogfQogCiB2b2lkIFdlYlNlYXJj
aFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
VmVjdG9yPFJlY2VudFNlYXJjaD4mIHJlc3VsdEl0ZW1zKQpAQCAtNjgsNyArNjgsNyBAQCB2b2lk
IFdlYlNlYXJjaFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgVmVjdG9yPFJlYwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9hZFJlY2VudFNlYXJjaGVzKG5hbWUpLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNoZXM6OlJlcGx5KHJlc3VsdEl0
ZW1zKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkxvYWRSZWNlbnRTZWFyY2hlcyhuYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6TG9hZFJlY2VudFNlYXJjaGVzOjpSZXBseShyZXN1bHRJdGVtcykpOwogfQogCiBib29sIFdl
YlNlYXJjaFBvcHVwTWVudTo6ZW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oCmluZGV4IGY5OTg2ZTQxY2EyLi5jZjdjYmY0ZjllNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKLSAg
ICBjb25zdCB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX3BhZ2VJRDsKICAgICBRdWlja0xvb2tEb2N1bWVudERhdGEgbV9kYXRhOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCmlu
ZGV4IDI3NmI4MGJmMjhmLi44ZDY5Yjg1NGI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtNjgsNyArNjgsNyBAQCBEcmF3aW5n
QXJlYTo6RHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIERyYXdpbmdBcmVhSWRlbnRp
ZmllciBpZGVudGlmaWVyLAogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBt
X3dlYlBhZ2Uod2ViUGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIH0KIAogRHJhd2luZ0FyZWE6On5E
cmF3aW5nQXJlYSgpCkBAIC05NCw3ICs5NCwxNyBAQCB2b2lkIERyYXdpbmdBcmVhOjpyZW1vdmVN
ZXNzYWdlUmVjZWl2ZXJJZk5lZWRlZCgpCiAgICAgaWYgKG1faGFzUmVtb3ZlZE1lc3NhZ2VSZWNl
aXZlcikKICAgICAgICAgcmV0dXJuOwogICAgIG1faGFzUmVtb3ZlZE1lc3NhZ2VSZWNlaXZlciA9
IHRydWU7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2lkZW50aWZpZXIpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIERyYXdpbmdBcmVhOjptZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IERyYXdpbmdB
cmVhOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aWRlbnRpZmllci50b1VJbnQ2NCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDgwNjlh
MTU4ZWUyLi5lYzk1MzdkNzBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFJbmZvLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJXZWJQ
YWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GbG9hdFJlY3QuaD4KQEAgLTY1LDcgKzY2LDcgQEAgY2xhc3MgTGF5ZXJUcmVlSG9zdDsK
IHN0cnVjdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2Vz
U3RvcmU7CiAKLWNsYXNzIERyYXdpbmdBcmVhIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
IHsKK2NsYXNzIERyYXdpbmdBcmVhIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcm90
ZWN0ZWQgSVBDOjpNZXNzYWdlU2VuZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEcmF3aW5nQXJlYSk7CiAKQEAgLTE1MywxMSArMTU0
LDYgQEAgcHVibGljOgogcHJvdGVjdGVkOgogICAgIERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlw
ZSwgRHJhd2luZ0FyZWFJZGVudGlmaWVyLCBXZWJQYWdlJik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBtX3dlYlBhZ2Uuc2VuZChtZXNzYWdlLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgeyB9KTsK
LSAgICB9Ci0KICAgICBEcmF3aW5nQXJlYVR5cGUgbV90eXBlOwogICAgIERyYXdpbmdBcmVhSWRl
bnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOwpAQCAtMTcwLDYg
KzE2NiwxMCBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsK
KyAgICAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1l
c3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2Fn
ZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2UgaGFu
ZGxlcnMuCiAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNw
cAppbmRleCA2OTE4MzBiNTkzYy4uY2Q3ODI2OGVkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtODcsNyArODcs
NyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uKiBjb25uZWN0aW9uKQogICAgIGNvbm5lY3Rpb24tPmFkZFdvcmtRdWV1ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcXVldWUuZ2V0KCksIHRoaXMpOwogfQogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxF
dmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGJv
b2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBj
YW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQordm9pZCBFdmVu
dERpc3BhdGNoZXI6OndoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJX
aGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2Fu
UnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJl
ckJhbmRBdEJvdHRvbSkKIHsKICNpZiBQTEFURk9STShDT0NPQSkgfHwgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykKICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgcGxhdGZvcm1XaGVlbEV2ZW50ID0gcGxh
dGZvcm0od2hlZWxFdmVudCk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBFdmVudERpc3BhdGNo
ZXI6OndoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVl
bEV2ZW4KIH0KIAogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi12b2lkIEV2ZW50RGlz
cGF0Y2hlcjo6Z2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJH
ZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXN0dXJl
RXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVu
dCYgZ2VzdHVyZUV2ZW50KQogewogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBwYWdlSUQsIGdlc3R1cmVFdmVudF0oKSBtdXRhYmxl
IHsKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hHZXN0dXJlRXZlbnQocGFnZUlELCBn
ZXN0dXJlRXZlbnQpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpn
ZXRRdWV1ZWRUb3VjaEV2ZW50c0ZvclBhZ2UoY29uc3QgV2ViUGFnZSYgd2ViUGFnZSwgVG91Y2hF
CiAgICAgZGVzdGluYXRpb25RdWV1ZSA9IG1fdG91Y2hFdmVudHMudGFrZSh3ZWJQYWdlLnBhZ2VJ
RCgpKTsKIH0KIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OnRvdWNoRXZlbnQodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCit2b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6dG91Y2hFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYktp
dDo6V2ViVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKIHsKICAgICBib29sIHVwZGF0ZUxpc3RXYXNF
bXB0eTsKICAgICB7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoVG91Y2hFdmVudHMoKQogfQogI2VuZGlmCiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpk
aXNwYXRjaFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3
aGVlbEV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQg
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJXaGVlbEV2ZW50JiB3CiB9CiAKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQot
dm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0
Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC0yMzIsOSArMjMyLDkgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3Bh
dGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW4KICNl
bmRpZgogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLXZvaWQgRXZlbnREaXNwYXRjaGVy
OjpzZW5kRGlkUmVjZWl2ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmIGV2
ZW50LCBib29sIGRpZEhhbmRsZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRS
ZWNlaXZlRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJFdmVudCYgZXZlbnQs
IGJvb2wgZGlkSGFuZGxlRXZlbnQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRS
ZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGV2ZW50LnR5cGUoKSksIGRpZEhhbmRs
ZUV2ZW50KSwgcGFnZUlEKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVF
dmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXZlbnQudHlwZSgpKSwgZGlkSGFuZGxlRXZlbnQp
LCBwYWdlSUQudG9VSW50NjQoKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAppbmRleCAxZDQ3Nzg3N2VhYS4u
ZTFiYmJkNDc5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlv
bi5oIgogCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaD4KICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTc3LDM4ICs3OCwz
OCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCi0g
ICAgdm9pZCB3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYs
IGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9v
bCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsKKyAgICB2
b2lkIHdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYldoZWVsRXZl
bnQmLCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQs
IGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSk7CiAj
aWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAgdm9pZCB0b3VjaEV2ZW50KHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgV2ViVG91Y2hFdmVudCYpOworICAgIHZvaWQgdG91Y2hFdmVudChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViVG91Y2hFdmVudCYpOwogI2VuZGlmCiAjaWYg
RU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLSAgICB2b2lkIGdlc3R1cmVFdmVudCh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOworICAgIHZvaWQgZ2VzdHVyZUV2ZW50
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICNlbmRp
ZgogCiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdm9p
ZCBkaXNwYXRjaFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50
Jik7CisgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAg
ICB2b2lkIGRpc3BhdGNoVG91Y2hFdmVudHMoKTsKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VT
VFVSRV9FVkVOVFMpCi0gICAgdm9pZCBkaXNwYXRjaEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOworICAgIHZvaWQgZGlzcGF0Y2hHZXN0dXJlRXZl
bnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotICAgIHZvaWQgc2VuZERpZFJlY2Vp
dmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiwgYm9vbCBkaWRIYW5kbGVF
dmVudCk7CisgICAgdm9pZCBzZW5kRGlkUmVjZWl2ZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlkSGFuZGxlRXZlbnQpOwogI2VuZGlmCiAKICAg
ICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
ICAgICBMb2NrIG1fc2Nyb2xsaW5nVHJlZXNNdXRleDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxpbmdUcmVlczsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6VGhy
ZWFkZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxpbmdUcmVlczsKICNlbmRpZgogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpXaGVlbEV2ZW50RGVsdGFGaWx0ZXI+IG1fcmVjZW50V2hlZWxF
dmVudERlbHRhRmlsdGVyOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIExvY2sg
bV90b3VjaEV2ZW50c0xvY2s7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgVG91Y2hFdmVudFF1ZXVl
PiBtX3RvdWNoRXZlbnRzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFRv
dWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1l
c3NhZ2VzLmluCmluZGV4IDVlMTU0M2M5OGNjLi5hZjkwNGI0NTE2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5t
ZXNzYWdlcy5pbgpAQCAtMjEsMTEgKzIxLDExIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2Vz
IC0+IEV2ZW50RGlzcGF0Y2hlciB7Ci0gICAgV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdl
YktpdDo6V2ViV2hlZWxFdmVudCBldmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29s
IGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5S
dWJiZXJCYW5kQXRCb3R0b20pCisgICAgV2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVudCwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRv
cCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVO
VFMpCi0gICAgVG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2ViVG91Y2hFdmVu
dCBldmVudCkKKyAgICBUb3VjaEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQogI2VuZGlmCiAjaWYgRU5BQkxFKE1BQ19HRVNU
VVJFX0VWRU5UUykKLSAgICBHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBXZWJLaXQ6Oldl
Ykdlc3R1cmVFdmVudCBldmVudCkKKyAgICBHZXN0dXJlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCBldmVudCkKICNlbmRpZgogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1t
CmluZGV4IGI3NTJjMWM1NGQ0Li5iMjkxZGYwYjdkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNzUsNyArNzUsNyBAQCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2Vi
UGFnZSYgd2ViUGFnZSwgY29uc3QgVwogICAgIC8vIEZJWE1FOiBXaGlsZSB1c2luZyB0aGUgaGln
aCBlbmQgb2YgdGhlIHJhbmdlIG9mIERpc3BsYXlJRHMgbWFrZXMgYSBjb2xsaXNpb24gd2l0aCBy
ZWFsLCBub24tUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEKICAgICAvLyBEaXNwbGF5SURzIGxl
c3MgbGlrZWx5LCBpdCBpcyBub3QgZW50aXJlbHkgc2FmZSB0byBoYXZlIGEgUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEgYW5kIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhCiAgICAgLy8g
Y29lZXhpc3QgaW4gdGhlIHNhbWUgcHJvY2Vzcy4KLSAgICB3ZWJQYWdlLndpbmRvd1NjcmVlbkRp
ZENoYW5nZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSB3ZWJQYWdlLnBh
Z2VJRCgpKTsKKyAgICB3ZWJQYWdlLndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSB3ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwog
fQogCiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6flJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhKCkKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
OjpmbHVzaExheWVycygpCiAgICAgUmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IGJhY2tpbmdT
dG9yZUZsdXNoZXIgPSBCYWNraW5nU3RvcmVGbHVzaGVyOjpjcmVhdGUoV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgV1RGTW92ZShjb21taXRFbmNvZGVy
KSwgV1RGTW92ZShjb250ZXh0c1RvRmx1c2gpKTsKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVG
bHVzaGVyID0gYmFja2luZ1N0b3JlRmx1c2hlcjsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1f
d2ViUGFnZS5wYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQoKTsK
ICAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hlciA9
IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBhZ2VJRF0gewogICAgICAgICBiYWNraW5n
U3RvcmVGbHVzaGVyLT5mbHVzaCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggMDU0NDA0NTZm
NDEuLmM5NDBlMGNkMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9C
YWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5
OjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5z
cGVjdG9yVUk6OndpbmRvd09iamVjdENsZWFyZWQoKQpAQCAtMTAyLDEyICsxMDIsMTIgQEAgdm9p
ZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQoKQogCiB2b2lkIFJlbW90ZVdl
Ykluc3BlY3RvclVJOjpjaGFuZ2VTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogewot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVjdCks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVjdCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclVJOjpzdGFydFdpbmRvd0RyYWcoKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjpTdGFydFdpbmRvd0RyYWcoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0V2luZG93
RHJhZygpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bW92ZVdpbmRvd0J5KGZs
b2F0IHgsIGZsb2F0IHkpCkBAIC0xMjQsMzQgKzEyNCwzNCBAQCBXZWJDb3JlOjpVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIFJlbW90ZVdlYkluc3BlY3RvclVJOjp1c2VySW50ZXJmYWNlTGF5
b3V0RAogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQoKQogewotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdl
LnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OkJyaW5nVG9Gcm9udCgpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6
Y2xvc2VXaW5kb3coKQogewogICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobnVsbHB0cik7CiAKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6RnJvbnRlbmREaWRDbG9zZSgpLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eTo6RnJvbnRlbmREaWRDbG9zZSgpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6
cmVvcGVuKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6UmVvcGVu
KCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5OjpSZW9wZW4oKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9y
VUk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6T3BlbkluTmV3VGFiKHVybCksIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpPcGVu
SW5OZXdUYWIodXJsKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNhdmUoY29u
c3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVu
Y29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVj
dG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2
ZUFzKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQs
IGZvcmNlU2F2ZUFzKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmFwcGVuZChj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7Ci0gICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpKTsKIH0KIAogdm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0
cmluZykKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjppbnNw
ZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogCiB2b2lkIFJlbW90ZVdl
Ykluc3BlY3RvclVJOjpzaG93Q2VydGlmaWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0
aWZpY2F0ZUluZm8pCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNo
b3dDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZUluZm8pLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2hvd0NlcnRpZmlj
YXRlKGNlcnRpZmljYXRlSW5mbykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlz
dFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmNwcAppbmRleCAyMTFkNjAxZWYwYi4uZmNlZTBkZmRmZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9y
d2FyZExpc3RQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIElEVG9IaXN0b3J5SXRl
bU1hcCYgaWRUb0hpc3RvcnlJdGVtTWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi12b2lkIFdl
YkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCB1aW50
NjRfdCBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0p
Cit2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25z
dCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBp
dGVtLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3Jp
dGVFeGlzdGluZ0l0ZW0pCiB7CiAgICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWlyIHNob3VsZCBu
b3QgYWxyZWFkeSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQob3ZlcndyaXRl
RXhpc3RpbmdJdGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3RpbmdJ
dGVtOjpZZXMgfHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwpAQCAt
MTE2LDcgKzExNiw3IEBAIFJlZlB0cjxIaXN0b3J5SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6Oml0ZW1BdEluZGV4KGludCBpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgT3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gaXRlbUlEOwotICAgIGlm
ICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleChpdGVt
SW5kZXgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4OjpS
ZXBseShpdGVtSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleChpdGVtSW5k
ZXgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4OjpSZXBs
eShpdGVtSUQpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWl0ZW1JRCkK
QEAgLTEzMSw3ICsxMzEsNyBAQCB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFj
a0xpc3RDb3VudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdW5zaWduZWQgYmFj
a0xpc3RDb3VudCA9IDA7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNr
Rm9yd2FyZEJhY2tMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0Zvcndh
cmRCYWNrTGlzdENvdW50OjpSZXBseShiYWNrTGlzdENvdW50KSwgbV9wYWdlLT5wYWdlSUQoKSkp
CisgICAgaWYgKCFtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tG
b3J3YXJkQmFja0xpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2Fy
ZEJhY2tMaXN0Q291bnQ6OlJlcGx5KGJhY2tMaXN0Q291bnQpKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICByZXR1cm4gYmFja0xpc3RDb3VudDsKQEAgLTE0Myw3ICsxNDMsNyBAQCB1bnNpZ25l
ZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0CiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgdW5zaWduZWQgZm9yd2FyZExpc3RDb3VudCA9IDA7Ci0gICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291
bnQoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50
OjpSZXBseShmb3J3YXJkTGlzdENvdW50KSwgbV9wYWdlLT5wYWdlSUQoKSkpCisgICAgaWYgKCFt
X3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2Fy
ZExpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRM
aXN0Q291bnQ6OlJlcGx5KGZvcndhcmRMaXN0Q291bnQpKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICByZXR1cm4gZm9yd2FyZExpc3RDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCmluZGV4IGYz
YjFjOGFmNTQ4Li5kMWJhYWRiOTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBAIC0yNiw2ICsy
Niw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRDbGll
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJs
aWM6CiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9OwotICAgIHZvaWQgYWRkSXRlbUZy
b21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJl
ZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgdWludDY0X3QgcGFnZUlELCBPdmVyd3JpdGVFeGlz
dGluZ0l0ZW0pOworICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7CiAKICAgICB2
b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJDb29raWVKYXIuY3BwCmluZGV4IDE2MGVkZWZkNTlkLi4yZDlkMDg1ZTNiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC00
OSw3ICs0OSw3IEBAIFdlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKCkKIFN0cmluZyBXZWJDb29r
aWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCkgY29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7
CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFt
ZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtNjYsNyArNjYsNyBAQCBT
dHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgVVJMJiB1cmwpIGNvbnN0CiB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZVN0cmluZykKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBm
cmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFn
ZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtODMsNyArODMsNyBA
QCBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1l
bnQmIGRvY3VtZW50KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFpcjxT
dHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2Vj
dXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0CiB7CiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwpAQCAtOTUsNyArOTUsNyBAQCBzdGQ6OnBhaXI8U3Ry
aW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2ll
UmVxdWVzdEhlYQogYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29y
ZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkp
IHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7
CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXgg
OTdkZDc2ZjY2NGMuLjU1OWJkMGU1MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAg
U3RyaW5nIGNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmKSBjb25zdCBmaW5h
bDsKICAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykgZmluYWw7CiAgICAgYm9vbCBjb29raWVzRW5hYmxl
ZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6cGFpcjxT
dHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29y
ZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJD
b3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29u
c3QgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQm
LCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA4
OTBjNWU1NmFjMC4uNGFmNDk1YTUxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgdWludDY0X3Qg
Z2VuZXJhdGVMaXN0ZW5lcklEKCkKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhD
b3JlTWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUpCiB7
CiAgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJD
bGllbnQ+KHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oJmNvcmVGcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkpKSk7Ci0gICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRDcmVhdGVNYWluRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFt
ZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUgPSBjb3JlRnJh
bWU7CiAgICAgZnJhbWUtPm1fY29yZUZyYW1lLT50cmVlKCkuc2V0TmFtZShTdHJpbmcoKSk7CkBA
IC0xMjEsNyArMTIxLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVN
YWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMKIFJlZjxXZWJGcmFtZT4g
V2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsKICAgICBhdXRv
IGZyYW1lID0gY3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkp
OwotICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJh
bWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkp
KTsKIAogICAgIGF1dG8gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgp
LCBvd25lckVsZW1lbnQsIGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKICAgICBm
cmFtZS0+bV9jb3JlRnJhbWUgPSBjb3JlRnJhbWUucHRyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBkNzdlNjM3MGMxMS4u
YmRiOTJmNzRkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViSW5zcGVjdG9yLmNwcApAQCAtNzIsNyArNzIsNyBAQCBXZWJJbnNwZWN0b3I6On5XZWJJbnNw
ZWN0b3IoKQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQo
Ym9vbCB1bmRlclRlc3QpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Ok9wZW5M
b2NhbEluc3BlY3RvckZyb250ZW5kKGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpPcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChjYW5BdHRhY2hXaW5kb3coKSwgdW5kZXJU
ZXN0KSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBD
OjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTEwOCw3ICsxMDgs
NyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNo
bWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2VG
cm9udGVuZENvbm5lY3Rpb24oKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpE
aWRDbG9zZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpKTsKIAogICAgIC8vIElmIHdlIHRyaWVkIHRv
IGNsb3NlIHRoZSBmcm9udGVuZCBiZWZvcmUgaXQgd2FzIGNyZWF0ZWQsIHRoZW4gbm8gY29ubmVj
dGlvbiBleGlzdHMgeWV0LgogICAgIGlmIChtX2Zyb250ZW5kQ29ubmVjdGlvbikgewpAQCAtMTI0
LDcgKzEyNCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbigp
CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCkp
OwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6d2hlbkZyb250ZW5kQ29ubmVjdGlvbkVzdGFibGlz
aGVkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lk
IFdlYkluc3BlY3Rvcjo6c3RvcEVsZW1lbnRTZWxlY3Rpb24oKQogCiB2b2lkIFdlYkluc3BlY3Rv
cjo6ZWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYm9vbCBhY3RpdmUpCiB7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkVsZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKGFjdGl2ZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6OkVsZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKGFjdGl2ZSkpOwogfQogCiBib29sIFdlYkluc3Bl
Y3Rvcjo6Y2FuQXR0YWNoV2luZG93KCkKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIFdlYkluc3Bl
Y3Rvcjo6dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpCiAKICAgICBtX3ByZXZpb3VzQ2FuQXR0
YWNoID0gY2FuQXR0YWNoV2luZG93OwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OkF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoY2FuQXR0YWNoV2luZG93KSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0
YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChjYW5BdHRhY2hXaW5kb3cpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggYzk2NTJlOTRhZjguLjI3NTU2ZDAxY2FiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3Bw
CkBAIC01OCw3ICs1OCw3IEBAIFdlYkluc3BlY3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdl
JiBwYWdlKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5l
Y3Rpb24odWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1
bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCit2b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hD
b25uZWN0aW9uKFBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVu
ZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogewogICAgIG1faW5zcGVjdGVkUGFn
ZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBtX2Zyb250ZW5kQVBJ
RGlzcGF0Y2hlci5yZXNldCgpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9y
VUk6OnVwZGF0ZUNvbm5lY3Rpb24oKQogICAgIG1fYmFja2VuZENvbm5lY3Rpb24tPm9wZW4oKTsK
ICNlbmRpZgogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNldEZyb250ZW5kQ29u
bmVjdGlvbihjb25uZWN0aW9uQ2xpZW50UG9ydCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRGcm9udGVuZENvbm5lY3Rpb24o
Y29ubmVjdGlvbkNsaWVudFBvcnQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0
KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RDbGVhcmVkKCkKQEAg
LTEyOCwxNCArMTI4LDE0IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmZyb250ZW5kTG9hZGVkKCkK
ICAgICBzZXREb2NrU2lkZShtX2RvY2tTaWRlKTsKICAgICBzZXRJc1Zpc2libGUobV9pc1Zpc2li
bGUpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkZyb250ZW5kTG9hZGVkKCks
IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpGcm9udGVuZExvYWRlZCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0
KCkpOwogCiAgICAgYnJpbmdUb0Zyb250KCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnN0
YXJ0V2luZG93RHJhZygpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlN0YXJ0
V2luZG93RHJhZygpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5kb3dEcmFnKCksIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dC
eShmbG9hdCB4LCBmbG9hdCB5KQpAQCAtMTQ3LDEyICsxNDcsMTIgQEAgdm9pZCBXZWJJbnNwZWN0
b3JVSTo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCiAKIHZvaWQgV2ViSW5zcGVjdG9y
VUk6OmJyaW5nVG9Gcm9udCgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkJy
aW5nVG9Gcm9udCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkK
IHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkRpZENs
b3NlKCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiAKICAgICBpZiAo
bV9iYWNrZW5kQ29ubmVjdGlvbikgewogICAgICAgICBtX2JhY2tlbmRDb25uZWN0aW9uLT5pbnZh
bGlkYXRlKCk7CkBAIC0xNjcsMTMgKzE2NywxMyBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9z
ZVdpbmRvdygpCiAgICAgaWYgKG1fZnJvbnRlbmRIb3N0KQogICAgICAgICBtX2Zyb250ZW5kSG9z
dC0+ZGlzY29ubmVjdENsaWVudCgpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9
IDA7CisgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IHsgfTsKICAgICBtX3VuZGVyVGVz
dCA9IGZhbHNlOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpyZW9wZW4oKQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpSZW9wZW4oKSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRp
Zmllcik7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlJlb3BlbigpLCBtX2luc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiBXZWJDb3JlOjpVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uIFdlYkluc3BlY3RvclVJOjp1c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKCkgY29uc3QKQEAgLTE4NiwxNiArMTg2LDE2IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6
OnJlcXVlc3RTZXREb2NrU2lkZShEb2NrU2lkZSBzaWRlKQogICAgIGF1dG8mIHdlYlByb2Nlc3Mg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKTsKICAgICBzd2l0Y2ggKHNpZGUpIHsKICAgICBjYXNl
IERvY2tTaWRlOjpVbmRvY2tlZDoKLSAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGV0YWNoKCksIG1f
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEZXRhY2go
KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBEb2NrU2lkZTo6UmlnaHQ6Ci0gICAgICAgIHdlYlByb2Nlc3MucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFj
aFJpZ2h0KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgICAgICB3ZWJQcm9jZXNz
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclBy
b3h5OjpBdHRhY2hSaWdodCgpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIERvY2tTaWRlOjpMZWZ0OgotICAgICAgICB3ZWJQ
cm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3Bl
Y3RvclByb3h5OjpBdHRhY2hMZWZ0KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAg
ICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hMZWZ0KCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIudG9VSW50NjQoKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRG9ja1NpZGU6OkJvdHRv
bToKLSAgICAgICAgd2ViUHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNoQm90dG9tKCksIG1faW5zcGVjdGVkUGFn
ZUlkZW50aWZpZXIpOworICAgICAgICB3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hCb3R0b20oKSwgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQpAQCAtMjQzLDE3ICsyNDMsMTcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6c2V0SXNWaXNp
YmxlKGJvb2wgdmlzaWJsZSkKIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRX
aW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd0hlaWdodChoZWlnaHQpLCBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0YWNoZWRX
aW5kb3dIZWlnaHQoaGVpZ2h0KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aCh1
bnNpZ25lZCB3aWR0aCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0QXR0
YWNoZWRXaW5kb3dXaWR0aCh3aWR0aCksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpTZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHdpZHRo
KSwgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJ
bnNwZWN0b3JVSTo6Y2hhbmdlU2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0U2hlZXRSZWN0KHJlY3QpLCBtX2luc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2V0
U2hlZXRSZWN0KHJlY3QpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwog
fQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwp
CkBAIC0yNjQsMjIgKzI2NCwyMiBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpvcGVuSW5OZXdUYWIo
Y29uc3QgU3RyaW5nJiB1cmwpCiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNhdmUoY29uc3QgV1RG
OjpTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgY29udGVudCwgYm9vbCBiYXNl
NjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFzKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpTYXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVB
cyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpTYXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVB
cyksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yVUk6OmFwcGVuZChjb25zdCBXVEY6OlN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFdU
Rjo6U3RyaW5nJiBjb250ZW50KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpB
cHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxT
dHJpbmcpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6SW5zcGVjdGVkVVJMQ2hhbmdlZCh1cmxTdHJpbmcpLCBtX2luc3BlY3RlZFBh
Z2VJZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpzaG93
Q2VydGlmaWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCiB7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OlNob3dDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0
ZUluZm8pLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3JQcm94eTo6U2hvd0NlcnRpZmljYXRlKGNlcnRpZmljYXRlSW5mbyksIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yVUk6OnNo
b3dDb25zb2xlKCkKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpwYWdl
VW5wYXVzZWQoKQogCiB2b2lkIFdlYkluc3BlY3RvclVJOjpzZW5kTWVzc2FnZVRvQmFja2VuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OlNlbmRNZXNzYWdlVG9CYWNrZW5kKG1lc3NhZ2UpLCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQo
bWVzc2FnZSksIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkluc3BlY3RvclVJLmgKaW5kZXggODM4MWJmMWNlZGUuLjk0MjRiZmUxZjI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3Bh
dGNoZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZEhvc3QuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluc3Bl
Y3RvckNvbnRyb2xsZXI7CkBAIC01Miw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJl
Y2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2UpIG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQogCiAg
ICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3BlY3RvclVJIG1lc3NhZ2VzCi0gICAgdm9pZCBlc3RhYmxp
c2hDb25uZWN0aW9uKHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVy
VGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKTsKKyAgICB2b2lkIGVzdGFibGlzaENvbm5l
Y3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJv
b2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpOwogICAgIHZvaWQgdXBkYXRl
Q29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBzaG93Q29uc29sZSgpOwpAQCAtMTMzLDcgKzEzNCw3
IEBAIHByaXZhdGU6CiAgICAgLy8gY29yZVBhZ2UoKSwgc2luY2Ugd2UgbWF5IG5lZWQgaXQgYWZ0
ZXIgdGhlIGZyb250ZW5kJ3MgcGFnZSBoYXMgc3RhcnRlZCBkZXN0cnVjdGlvbi4KICAgICBXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiBtX2Zyb250ZW5kQ29udHJvbGxlciB7IG51bGxwdHIg
fTsKIAotICAgIHVpbnQ2NF90IG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgeyAwIH07CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBi
b29sIG1fdW5kZXJUZXN0IHsgZmFsc2UgfTsKICAgICBib29sIG1fZG9ja2luZ1VuYXZhaWxhYmxl
IHsgZmFsc2UgfTsKICAgICBib29sIG1faXNWaXNpYmxlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVz
c2FnZXMuaW4KaW5kZXggZGVhMGZlNTg0ZDQuLjQzMTkwYWE4MzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNz
YWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBX
ZWJJbnNwZWN0b3JVSSB7Ci0gICAgRXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0
ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZl
bCkKKyAgICBFc3RhYmxpc2hDb25uZWN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGluc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxl
dmVsKQogICAgIFVwZGF0ZUNvbm5lY3Rpb24oKQogCiAgICAgQXR0YWNoZWRCb3R0b20oKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzYmFhZmQx
ODU0Yy4uNzNhZTIwYjMwMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAgcHJpdmF0ZToKIAogREVGSU5FX0RFQlVH
X09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCB3ZWJQYWdlQ291bnRlciwg
KCJXZWJQYWdlIikpOwogCi1SZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKHVpbnQ2NF90IHBh
Z2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZWY8V2ViUGFn
ZT4gV2ViUGFnZTo6Y3JlYXRlKElkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVm
KCpuZXcgV2ViUGFnZShwYWdlSUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKIApAQCAtMzcwLDcg
KzM3MCw3IEBAIFJlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUodWludDY0X3QgcGFnZUlELCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAK
LVdlYlBhZ2U6OldlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKK1dlYlBhZ2U6OldlYlBhZ2UoSWRlbnRpZmllciBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogbV9wYWdlSUQocGFn
ZUlEKQogICAgICwgbV92aWV3U2l6ZShwYXJhbWV0ZXJzLnZpZXdTaXplKQogICAgICwgbV9hbHdh
eXNTaG93c0hvcml6b250YWxTY3JvbGxlciB7IHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NIb3Jpem9u
dGFsU2Nyb2xsZXIgfQpAQCAtODMxLDcgKzgzMSw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGFn
ZTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogCiB1aW50NjRfdCBXZWJQYWdlOjpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2VJRCgp
OworICAgIHJldHVybiBwYWdlSUQoKS50b1VJbnQ2NCgpOwogfQogCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0odWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZAog
ICAgIGlmICghaXRlbSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKExvYWRpbmcsICJJbiBX
ZWJQcm9jZXNzIHBpZCAlaSwgV2ViUGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZpZ2F0aW5nIHRvIGJh
Y2svZm9yd2FyZCBVUkwgJXMiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIG1fcGFnZUlELCBpdGVt
LT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTG9hZGluZywgIkluIFdl
YlByb2Nlc3MgcGlkICVpLCBXZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFj
ay9mb3J3YXJkIFVSTCAlcyIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSwgaXRlbS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBBU1NFUlQo
IW1fcGVuZGluZ05hdmlnYXRpb25JRCk7CiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbmF2
aWdhdGlvbklEOwpAQCAtMjA3Niw3ICsyMDc2LDcgQEAgYm9vbCBXZWJQYWdlOjpzZXRGaXhlZExh
eW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoIXZpZXcgfHwgdmlldy0+Zml4
ZWRMYXlvdXRTaXplKCkgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTE9H
X1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdl
SUQgPDwgIiBzZXRGaXhlZExheW91dFNpemUgIiA8PCBzaXplKTsKKyAgICBMT0dfV0lUSF9TVFJF
QU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2
NCgpIDw8ICIgc2V0Rml4ZWRMYXlvdXRTaXplICIgPDwgc2l6ZSk7CiAgICAgdmlldy0+c2V0Rml4
ZWRMYXlvdXRTaXplKHNpemUpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpG
aXhlZExheW91dFNpemVEaWRDaGFuZ2Uoc2l6ZSkpOwpAQCAtMjUwNCw3ICsyNTA0LDcgQEAgY29u
c3QgV2ViRXZlbnQqIFdlYlBhZ2U6OmN1cnJlbnRFdmVudCgpCiB2b2lkIFdlYlBhZ2U6OmZyZWV6
ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogewogICAgIFJFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQYWdlIChQYWdlSUQ9JWxsdSkgLSBBZGRp
bmcgYSByZWFzb24gJWQgdG8gZnJlZXplIGxheWVyIHRyZWU7IGN1cnJlbnQgcmVhc29ucyBhcmUg
JWQiLAotICAgICAgICB0aGlzLCBtX3BhZ2VJRCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNv
biksIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50b1JhdygpKTsKKyAgICAgICAgdGhpcywgbV9w
YWdlSUQudG9VSW50NjQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJU
cmVlRnJlZXplUmVhc29ucy50b1JhdygpKTsKICAgICBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMu
YWRkKHJlYXNvbik7CiAgICAgdXBkYXRlRHJhd2luZ0FyZWFMYXllclRyZWVGcmVlemVTdGF0ZSgp
OwogfQpAQCAtMjUxMiw3ICsyNTEyLDcgQEAgdm9pZCBXZWJQYWdlOjpmcmVlemVMYXllclRyZWUo
TGF5ZXJUcmVlRnJlZXplUmVhc29uIHJlYXNvbikKIHZvaWQgV2ViUGFnZTo6dW5mcmVlemVMYXll
clRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uIHJlYXNvbikKIHsKICAgICBSRUxFQVNFX0xPRyhQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUGFnZSAoUGFnZUlEPSVsbHUpIC0gUmVtb3Zpbmcg
YSByZWFzb24gJWQgdG8gZnJlZXplIGxheWVyIHRyZWU7IGN1cnJlbnQgcmVhc29ucyBhcmUgJWQi
LAotICAgICAgICB0aGlzLCBtX3BhZ2VJRCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiks
IG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50b1JhdygpKTsKKyAgICAgICAgdGhpcywgbV9wYWdl
SUQudG9VSW50NjQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVl
RnJlZXplUmVhc29ucy50b1JhdygpKTsKICAgICBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMucmVt
b3ZlKHJlYXNvbik7CiAgICAgdXBkYXRlRHJhd2luZ0FyZWFMYXllclRyZWVGcmVlemVTdGF0ZSgp
OwogfQpAQCAtMzE2OCw3ICszMTY4LDcgQEAgdm9pZCBXZWJQYWdlOjp2aXNpYmlsaXR5RGlkQ2hh
bmdlKCkKIAogdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0
eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZp
dHlTdGF0ZUNoYW5nZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKQog
ewotICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2Ug
IiA8PCBwYWdlSUQoKSA8PCAiIHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBhY3Rpdml0eVN0YXRl
KTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdl
ICIgPDwgcGFnZUlEKCkudG9VSW50NjQoKSA8PCAiIHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBh
Y3Rpdml0eVN0YXRlKTsKIAogICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFj
dGl2aXR5U3RhdGU7CiAgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsKQEAgLTMx
NzYsNyArMzE3Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8
QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgQWN0CiAgICAgaWYgKGNoYW5nZWQp
CiAgICAgICAgIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NB
R0UobV9wYWdlLCAic2V0QWN0aXZpdHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJdTY0ICIgYnV0IFdl
YkNvcmUgcGFnZSB3YXMgbnVsbCIsIHBhZ2VJRCgpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KG1fcGFnZSwgInNldEFjdGl2aXR5U3RhdGUgY2FsbGVkIG9uICUiIFBSSXU2NCAiIGJ1dCBXZWJD
b3JlIHBhZ2Ugd2FzIG51bGwiLCBwYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBpZiAobV9wYWdl
KSB7CiAgICAgICAgIFNldEZvclNjb3BlPE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPj4g
Y3VycmVudGx5Q2hhbmdpbmdBY3Rpdml0eVN0YXRlIHsgbV9sYXN0QWN0aXZpdHlTdGF0ZUNoYW5n
ZXMsIGNoYW5nZWQgfTsKICAgICAgICAgbV9wYWdlLT5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2aXR5
U3RhdGUpOwpAQCAtNDMzOSw3ICs0MzM5LDcgQEAgdm9pZCBXZWJQYWdlOjptYWluRnJhbWVEaWRM
YXlvdXQoKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gbWFpbkZyYW1lVmlldygpKSB7CiAgICAgICAgIEludFNpemUgbmV3Q29udGVudFNp
emUgPSBmcmFtZVZpZXctPmNvbnRlbnRzU2l6ZSgpOwotICAgICAgICBMT0dfV0lUSF9TVFJFQU0o
VmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIG1haW5G
cmFtZURpZExheW91dCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IG5ld0NvbnRlbnRTaXpl
KTsKKyAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQ
YWdlICIgPDwgbV9wYWdlSUQudG9VSW50NjQoKSA8PCAiIG1haW5GcmFtZURpZExheW91dCBzZXR0
aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IG5ld0NvbnRlbnRTaXplKTsKICAgICAgICAgaWYgKG1f
dmlld3BvcnRDb25maWd1cmF0aW9uLnNldENvbnRlbnRzU2l6ZShuZXdDb250ZW50U2l6ZSkpCiAg
ICAgICAgICAgICB2aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7CiAgICAgfQpAQCAtNTc0
Miw3ICs1NzQyLDcgQEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFt
ZSkKICAgICAKICAgICBib29sIHZpZXdwb3J0Q2hhbmdlZCA9IGZhbHNlOwogCi0gICAgTE9HX1dJ
VEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQg
PDwgIiBkaWRDb21taXRMb2FkIHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgY29yZUZyYW1l
LT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJl
Y3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgZGlk
Q29tbWl0TG9hZCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IGNvcmVGcmFtZS0+dmlldygp
LT5jb250ZW50c1NpemUoKSk7CiAgICAgaWYgKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldENv
bnRlbnRzU2l6ZShjb3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkpKQogICAgICAgICB2
aWV3cG9ydENoYW5nZWQgPSB0cnVlOwogCkBAIC02MDU2LDcgKzYwNTYsNyBAQCB2b2lkIFdlYlBh
Z2U6OnNlbmRFZGl0b3JTdGF0ZVVwZGF0ZSgpCiAgICAgLy8gSWYgdGhhdCBpcyB0aGUgY2FzZSwg
anVzdCBzZW5kIHdoYXQgd2UgaGF2ZSAoaS5lLiBkb24ndCBpbmNsdWRlIHBvc3QtbGF5b3V0IGRh
dGEpIGFuZCB3YWl0IHVudGlsIHRoZQogICAgIC8vIG5leHQgbGF5ZXIgdHJlZSBjb21taXQgdG8g
Y29tcHV0ZSBhbmQgc2VuZCB0aGUgY29tcGxldGUgRWRpdG9yU3RhdGUgb3Zlci4KICAgICBhdXRv
IHN0YXRlID0gZWRpdG9yU3RhdGUoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkVkaXRvclN0YXRlQ2hhbmdlZChzdGF0ZSksIHBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChzdGF0ZSksIHBhZ2VJRCgpLnRvVUlu
dDY0KCkpOwogCiAgICAgaWYgKHN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlvdXREYXRhKQogICAgICAg
ICBzY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpOwpAQCAtNjIzNyw3ICs2MjM3LDcgQEAg
dm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6
Ok9iamVjdCogbWVzc2FnZUJvZHkpCiAKIHZvaWQgV2ViUGFnZTo6cG9zdE1lc3NhZ2VJZ25vcmlu
Z0Z1bGx5U3luY2hyb25vdXNNb2RlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2Jq
ZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okhh
bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpKSksIHBhZ2VJRCgpLCBJUEM6
OlNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hyb25vdXNNb2RlKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJv
ZHkpKSksIHBhZ2VJRCgpLnRvVUludDY0KCksIElQQzo6U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlT
eW5jaHJvbm91c01vZGUpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnBvc3RTeW5jaHJvbm91c01lc3Nh
Z2VGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNz
YWdlQm9keSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4NjhhZTkyZjJmYi4uZWFkN2I0OTZl
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY0
LDYgKzY0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ludFNpemVIYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXku
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bv
aW50ZXJJRC5oPgpAQCAtMjczLDcgKzI3NCw5IEBAIHVzaW5nIFdLRXZlbnRNb2RpZmllcnMgPSB1
aW50MzJfdDsKIAogY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpP
YmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1
YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYWdlPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWludDY0X3QgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHVzaW5nIElkZW50aWZpZXIgPSBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcjsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2U+IGNyZWF0ZShJ
ZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworCiAgICAgdmlydHVhbCB+
V2ViUGFnZSgpOwogCiAgICAgdm9pZCByZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJik7CkBAIC0yODMsNyArMjg2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBX
ZWJQYWdlKiBmcm9tQ29yZVBhZ2UoV2ViQ29yZTo6UGFnZSopOwogCiAgICAgV2ViQ29yZTo6UGFn
ZSogY29yZVBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KLSAgICB1aW50NjRf
dCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIElkZW50aWZpZXIgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UtPnNlc3Npb25JRCgpOyB9CiAgICAgYm9vbCB1
c2VzRXBoZW1lcmFsU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+dXNlc0VwaGVtZXJh
bFNlc3Npb24oKTsgfQogCkBAIC0xMTY2LDcgKzExNjksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
ZW5kU3luY1dpdGhEZWxheWVkUmVwbHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYg
cmVwbHkpCiAgICAgewogICAgICAgICBjYW5jZWxHZXN0dXJlc0Jsb2NrZWRPblN5bmNocm9ub3Vz
UmVwbGllcygpOwotICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RG
TW92ZShyZXBseSksIG1fcGFnZUlELCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5j
T3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CisgICAgICAgIHJldHVy
biBzZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9wYWdlSUQudG9V
SW50NjQoKSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3Jt
UGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwogICAgIH0KIAogICAgIFdlYkNvcmU6OkRPTVBh
c3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFN0cmluZyYgb3Jp
Z2luSWRlbnRpZmllcik7CkBAIC0xMTk5LDcgKzEyMDIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRVc2VySXNJbnRlcmFjdGluZyhib29sIHVzZXJJc0ludGVyYWN0aW5nKSB7IG1fdXNlcklzSW50
ZXJhY3RpbmcgPSB1c2VySXNJbnRlcmFjdGluZzsgfQogCiBwcml2YXRlOgotICAgIFdlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIFdlYlBh
Z2UoSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQg
dXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCkBAIC0xNTg1LDcgKzE1ODgsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCB1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnRBZnRlckNvbW1pdHRpbmdM
b2FkKCk7CiAKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBJZGVudGlmaWVyIG1fcGFnZUlE
OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKICAgICBSZWZQ
dHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcAppbmRleCBkOTZh
N2Q3ZGRhOS4uYjc3OTliNGZiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCkBAIC00MSw3ICs0
MSw3IEBAIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXQoV2Vi
UGFnZSYgcGFnZSkKIAogU3RyaW5nIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OmlkZW50aWZpZXIo
KSBjb25zdAogewotICAgIHJldHVybiBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZS5wYWdlSUQo
KSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlLnBhZ2VJRCgpLnRvVUlu
dDY0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OmNvbm5lY3QoSW5zcGVj
dG9yOjpGcm9udGVuZENoYW5uZWwmIGNoYW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5oCmluZGV4IDMwMWIxMzllMWQyLi42YjdlYzViMTZmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAgLTI2LDEzICsyNiwx
NSBAQAogI2lmbmRlZiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZV9oCiAjZGVmaW5l
IFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlX2gKIAorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwog
fQogCiBAaW50ZXJmYWNlIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIDogTlNPYmpl
Y3QgewogICAgIFdlYktpdDo6V2ViUGFnZSogbV9wYWdlOwotICAgIHVpbnQ2NF90IG1fcGFnZUlE
OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIGlkIG1fcGFyZW50
OwogICAgIGJvb2wgbV9oYXNNYWluRnJhbWVQbHVnaW47CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXggM2QzZjM1NTUzZTYuLjYxNjVhMDFmZTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCkBAIC0x
NDgsNyArMTQ4LDcgQEAgLSAodm9pZClzZXRXZWJQYWdlOihXZWJLaXQ6OldlYlBhZ2UqKXBhZ2UK
ICAgICAgICAgYXV0byogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKICAgICAgICAgbV9oYXNN
YWluRnJhbWVQbHVnaW4gPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKSA/IGZyYW1lLT5kb2N1
bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkgOiBmYWxzZTsKICAgICB9IGVsc2UgewotICAgICAg
ICBtX3BhZ2VJRCA9IDA7CisgICAgICAgIG1fcGFnZUlEID0geyB9OwogICAgICAgICBtX2hhc01h
aW5GcmFtZVBsdWdpbiA9IGZhbHNlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXggYTA3Y2E0NWQzMzcuLmI2
YWU4NDMyN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQpAQCAtMjY2LDggKzI2Niw4IEBAIGJvb2wgV2ViUGFnZTo6ZXhlY3V0
ZUtleXByZXNzQ29tbWFuZHNJbnRlcm5hbChjb25zdCBWZWN0b3I8V2ViQ29yZTo6S2V5cHJlc3ND
b21tCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBib29sIGNvbW1hbmRXYXNIYW5kbGVkQnlVSVByb2Nlc3MgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGVjdXRlU2F2ZWRDb21tYW5kQnlT
ZWxlY3Rvcihjb21tYW5kc1tpXS5jb21tYW5kTmFtZSksCi0gICAgICAgICAgICAgICAgICAgIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yOjpSZXBs
eShjb21tYW5kV2FzSGFuZGxlZEJ5VUlQcm9jZXNzKSwgbV9wYWdlSUQpOworICAgICAgICAgICAg
ICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVTYXZlZENvbW1hbmRC
eVNlbGVjdG9yKGNvbW1hbmRzW2ldLmNvbW1hbmROYW1lKSwKKyAgICAgICAgICAgICAgICAgICAg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3I6OlJl
cGx5KGNvbW1hbmRXYXNIYW5kbGVkQnlVSVByb2Nlc3MpKTsKICAgICAgICAgICAgICAgICBldmVu
dFdhc0hhbmRsZWQgfD0gY29tbWFuZFdhc0hhbmRsZWRCeVVJUHJvY2VzczsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4
IDVjZTY5Y2NmODMzLi42MTc0YjBhM2JiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQog
ICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlc291cmNlTG9hZFN0
YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpLCAwKTsKICAgICB9KTsKIAotICAg
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90
IG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbikgewor
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRv
bWFpbikgewogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoc2Vzc2lvbklELCBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7CiAgICAgfSk7CiAjZW5k
aWYKQEAgLTY2NywxNiArNjY3LDE2IEBAIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OmZvY3VzZWRXZWJQ
YWdlKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KICAgICAKLVdlYlBhZ2UqIFdlYlByb2Nlc3M6
OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdAorV2ViUGFnZSogV2ViUHJvY2Vzczo6d2Vi
UGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZU1h
cC5nZXQocGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lk
IFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICAvLyBJdCBpcyBuZWNlc3Nh
cnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5nIGEgd2luZG93
Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0
ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFs
IHdheS4gCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+Pjo6QWRkUmVzdWx0
IHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKICAgICBhdXRvIG9sZFBhZ2VJRCA9
IHBhcmFtZXRlcnMub2xkUGFnZUlEID8gcGFyYW1ldGVycy5vbGRQYWdlSUQudmFsdWUoKSA6IHBh
Z2VJRDsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXN1
bHQuaXRlcmF0b3ItPnZhbHVlKTsKQEAgLTY5Myw3ICs2OTMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYgcGFyYQogICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIAotdm9pZCBX
ZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIEFTU0VSVChtX3BhZ2VN
YXAuY29udGFpbnMocGFnZUlEKSk7CiAKQEAgLTE0NTAsNyArMTQ1MCw3IEBAIHZvaWQgV2ViUHJv
Y2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24pCiAKICNl
bmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2
NF90LCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCkKK3Zv
aWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoUGFnZUlkZW50aWZpZXIs
IE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQogewogICAg
IGlmIChjaGFuZ2VkICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQogICAgICAg
ICB1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbjo6VmlzaWJpbGl0
eUhhc0NoYW5nZWQpOwpAQCAtMTYyNCwxMyArMTYyNCwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNl
bmRQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgVVJMJiB1cmwpCiAgICAgcGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRDb2xsZWN0UHJl
d2FybUluZm9ybWF0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpQcm9jZXNzV2FybWlu
Zzo6Y29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
czo6cGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzczo6
cGFnZURpZEVudGVyV2luZG93KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3BhZ2Vz
SW5XaW5kb3dzLmFkZChwYWdlSUQpOwogICAgIG1fbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGlt
ZXIuc3RvcCgpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVhdmVXaW5kb3codWlu
dDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlV2lsbExlYXZlV2luZG93KFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3BhZ2VzSW5XaW5kb3dzLnJlbW92ZShwYWdlSUQp
OwogCkBAIC0xNjczLDcgKzE2NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuYWJsZVByaXZhdGVC
cm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGUpCiAgICAgaWYgKGVuYWJsZSkKICAgICAgICAg
ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKIAot
ICAgIFZlY3Rvcjx1aW50NjRfdD4gcGFnZUlEczsKKyAgICBWZWN0b3I8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRHM7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwKSB7CiAgICAgICAgIGlm
IChwYWdlLnZhbHVlKQogICAgICAgICAgICAgcGFnZUlEcy5hcHBlbmQocGFnZS5rZXkpOwpAQCAt
MTg1Myw3ICsxODUzLDcgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRD
TmV0d29yaygpCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nl
c3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50
NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKK3ZvaWQgV2ViUHJv
Y2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVp
bnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQogewog
ICAgIC8vIFdlIGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0
aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQ
cm9jZXNzCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
IFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpD
b25uZWN0aW9uIGFzIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXgg
NTI1ZGYxODNmMjIuLjE4NTdjZWEwZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CkBAIC0xNDUs
OSArMTQ2LDkgQEAgcHVibGljOgogCiAgICAgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKiB3ZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbm5lY3Rpb24uZ2V0
KCk7IH0KIAotICAgIFdlYlBhZ2UqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdDsKLSAg
ICB2b2lkIGNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOwotICAgIHZvaWQgcmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgcGFnZUlEKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgdm9pZCByZW1vdmVXZWJQYWdlKFBB
TDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgV2ViUGFnZSogZm9j
dXNlZFdlYlBhZ2UoKSBjb25zdDsKIAogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KQEAgLTE5OSw4ICsy
MDAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nl
c3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAKLSAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyh1
aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBw
YWdlSUQpOworICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyKTsKKyAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3coV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOwogCiAgICAgdm9pZCBub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKCk7CiAK
QEAgLTIxOSw3ICsyMjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVBhZ2Vz
KCk7CiAgICAgdm9pZCBnZXRBY3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0aW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgcGFnZUFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UodWludDY0X3QgcGFnZUlELCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCk7CisgICAgdm9pZCBwYWdlQWN0aXZpdHlTdGF0ZURpZENo
YW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWc+IGNoYW5nZWQpOwogCiAgICAgdm9pZCBzZXRIaWRkZW5QYWdlRE9NVGltZXJU
aHJvdHRsaW5nSW5jcmVhc2VMaW1pdChpbnQgbWlsbGlzZWNvbmRzKTsKIApAQCAtMzU5LDcgKzM2
MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1
aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vzc2lv
bklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKTsKICNlbmRpZgog
CkBAIC00NjAsNyArNDYxLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4+IG1fcGFnZUdyb3VwTWFwOwogICAgIFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZT4gbV9pbmplY3RlZEJ1bmRsZTsKIApAQCAtNTE0LDcgKzUxNSw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fcHJvY2Vzc0lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKIAotICAg
IEhhc2hTZXQ8dWludDY0X3Q+IG1fcGFnZXNJbldpbmRvd3M7CisgICAgSGFzaFNldDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gbV9wYWdlc0luV2luZG93czsKICAgICBXZWJDb3JlOjpUaW1lciBt
X25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiMzli
MzhjMTgzYy4uNTdhMjY1NjM0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
KHN0cnVjdCBXZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMp
CiAKICAgICAjIENyZWF0ZSBhIG5ldyBwYWdlLgotICAgIENyZWF0ZVdlYlBhZ2UodWludDY0X3Qg
bmV3UGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMpCisgICAgQ3JlYXRlV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBuZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
cGFnZUNyZWF0aW9uUGFyYW1ldGVycykKIAogICAgIFByZXdhcm1HbG9iYWxseSgpOwogICAgIFBy
ZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oc3RydWN0IFdlYkNvcmU6OlByZXdhcm1JbmZvcm1h
dGlvbiBwcmV3YXJtSW5mb3JtYXRpb24pCkBAIC0xMTEsNyArMTExLDcgQEAgbWVzc2FnZXMgLT4g
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgc3RydWN0IFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Np
b25JRCkKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
c3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQg
aW5pdGlhbFNlc3Npb25JRCkKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggMGJkOTBhZjkxODcuLjBlOTQyOTYwNDllIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFN
YXAuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hT
ZXNzaW9uU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGMKIAogICAg
IC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBlcXVp
dmFsZW50IHRvIHdlYiBwYWdlIElEcwogICAgIC8vIHNvIHdlIGNhbiBnZXQgdGhlIHJpZ2h0IHBh
Z2UgaGVyZS4KLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViUGFnZShtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlk
ZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1lc3BhY2VJRCkpOwogICAgIGlmICghd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAppbmRleCAyOWJhN2Q4YThhMy4uZWNhZjY2NTE5ZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3Rv
cmFnZUFyZWEuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCmluZGV4IGIzOTA4MWU2ZTNjLi44MDk2MjM0MjQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVy
LCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlSWRlbnRp
ZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlk
ZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVy
LnRvVUludDY0KCksIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWY8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
KQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIGlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoaWRlbnRpZmllciwgcXVvdGFJbkJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1w
bC5oCmluZGV4IDY3NTdlM2I4MTg4Li4xYmZlYzQ4Yjg5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CkBAIC0zOSw4ICszOSw4IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNsYXNzIFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3BhY2UgewogcHVibGljOgotICAg
IHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAg
c3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7
CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRl
cyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpOwogICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0
ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpOwogICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVRy
YW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2NF90IHF1b3RhSW5CeXRlcyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nl
c3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubW0KaW5kZXggZmM2NTk4NjMyNTIuLjc2NWVmZjQwNGIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5tbQpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6c2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtCiAg
ICAgYWRkQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCk7CiAKICAg
ICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldFVwUGxheWJhY2tD
b250cm9sc01hbmFnZXJXaXRoSUQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6U2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRChtX2NvbnRyb2xz
TWFuYWdlckNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNs
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCiAgICAg
bV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSAwOwogCiAgICAgbV9wYWdlLT52aWRlb0NvbnRy
b2xzTWFuYWdlckRpZENoYW5nZSgpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpDbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpDbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkpOwogfQogCiB1
aW50NjRfdCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjb250ZXh0SWRGb3JNZWRpYUVsZW1lbnQo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KQpAQCAtMzE4LDI3ICszMTgs
MjcgQEAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
Y3VycmVudFBsYXliYWNrQ29udHJvbHNFbGVtZW4KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpkdXJhdGlvbkNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24p
CiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkR1cmF0aW9uQ2hhbmdlZChjb250ZXh0SWQsIGR1cmF0aW9uKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkR1cmF0aW9uQ2hhbmdlZChjb250ZXh0SWQsIGR1cmF0aW9uKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q3VycmVudFRpbWVD
aGFuZ2VkKGNvbnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRpbWUpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6Q3VycmVudFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRp
bWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpidWZmZXJlZFRpbWVDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QnVmZmVyZWRU
aW1lQ2hhbmdlZChjb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpC
dWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSk7CiB9CiAKIHZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgcGxheWJhY2tTdGFydGVkVGltZSkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTdGFy
dGVkVGltZUNoYW5nZWQoY29udGV4dElkLCBwbGF5YmFja1N0YXJ0ZWRUaW1lKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OlBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgcGxheWJhY2tT
dGFydGVkVGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJhdGVDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0
ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6UmF0ZUNoYW5nZWQoY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0SWQsIGlzUGxheWluZywgcGxheWJh
Y2tSYXRlKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5n
ZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6VGltZVJhbmdlcyYg
dGltZVJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmllZFRpbWUsIGRvdWJsZSBsaXZlVXBkYXRlSW50
ZXJ2YWwpCkBAIC0zNDksMzcgKzM0OSwzNyBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYgogICAg
ICAgICBkb3VibGUgZW5kID0gdGltZVJhbmdlcy5yYW5nZXMoKS5lbmQoaSkudG9Eb3VibGUoKTsK
ICAgICAgICAgcmFuZ2VzVmVjdG9yLmFwcGVuZCh7IHN0YXJ0LCBlbmQgfSk7CiAgICAgfQotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZWVr
YWJsZVJhbmdlc1ZlY3RvckNoYW5nZWQoY29udGV4dElkLCBXVEZNb3ZlKHJhbmdlc1ZlY3Rvciks
IGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZhbCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpTZWVrYWJsZVJhbmdlc1ZlY3RvckNoYW5nZWQoY29udGV4dElkLCBXVEZNb3ZlKHJhbmdlc1Zl
Y3RvciksIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZhbCkpOwogfQogCiB2b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQodWludDY0
X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNv
bnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2FuUGxheUZhc3RSZXZlcnNlQ2hh
bmdlZChjb250ZXh0SWQsIHZhbHVlKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Y29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2Vs
ZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJ
ZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFT
ZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVj
dGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
c0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBib29sIGVuYWJsZWQsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBs
YXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVkRGV2aWNlTmFtZSkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFuZ2VkKGNvbnRleHRJZCwgZW5hYmxlZCwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZChjb250
ZXh0SWQsIGVuYWJsZWQsIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0YXJnZXRUeXBlKSwgbG9jYWxp
emVkRGV2aWNlTmFtZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlv
TWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJ
ZCwgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9u
SW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCkpOwogfQogCiB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNl
bGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2Vs
ZWN0ZWRJbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZGlz
YWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDVkNjExMGI3OTA5Li43MDY2Mzk3NzM3OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0KQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1l
bgogICAgICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+c2V0Um9vdExheWVy
KHZpZGVvTGF5ZXIpOwogICAgIH0KIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4dElkLCBp
bnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZpZGVvUmVjdCwg
bV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCks
IGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0
dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRleHRJZCwgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250
ZXh0KCktPmNvbnRleHRJRCgpLCB2aWRlb1JlY3QsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3Io
KSwgaW50ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBz
dGFuZGJ5KSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVs
bHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0Vs
ZW1lbnQpCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpl
eGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWQKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaW50ZXJmYWNlLnNldElzQW5pbWF0aW5nKHRydWUpOwotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVs
bHNjcmVlbihjb250ZXh0SWQsIGlubGluZVZpZGVvRnJhbWUodmlkZW9FbGVtZW50KSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGlubGluZVZpZGVvRnJhbWUo
dmlkZW9FbGVtZW50KSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRW
aWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0Vs
ZW1lbnQmIHZpZGVvRWxlbWVudCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRl
b0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1h
dGlvbihXZWJDb3JlOjoKIAogICAgIGludGVyZmFjZS5zZXRUYXJnZXRJc0Z1bGxzY3JlZW4oZmFs
c2UpOwogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OkV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShjb250ZXh0SWQsIHRh
cmdldE1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0
aW9uVG9Nb2RlKGNvbnRleHRJZCwgdGFyZ2V0TW9kZSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0odmlkZW9FbGVtZW50KTsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0TW9kZSk7CkBAIC0zMzYs
MTMgKzMzNiwxMyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxz
Y3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6Ogogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpoYXNWaWRlb0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1Zp
ZGVvKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlbyhjb250ZXh0SWQsIGhhc1Zp
ZGVvKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlbyhjb250ZXh0SWQsIGhhc1Zp
ZGVvKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6dmlkZW9EaW1lbnNpb25z
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNp
b25zKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29udGV4dElk
LCB2aWRlb0RpbWVuc2lvbnMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZpZGVvRGltZW5z
aW9ucyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucykpOwogfQogCiAjcHJhZ21hIG1hcmsgTWVz
c2FnZXMgZnJvbSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6CkBAIC0zNjQsNyArMzY0LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCh1
aW50NjRfdCBjb250ZXh0SWQpCiAKICAgICBhdXRvJiBtb2RlbCA9IGVuc3VyZU1vZGVsKGNvbnRl
eHRJZCk7CiAgICAgSW50UmVjdCBpbmxpbmVSZWN0ID0gaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwu
dmlkZW9FbGVtZW50KCkpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpTZXRJbmxpbmVSZWN0KGNvbnRleHRJZCwgaW5saW5lUmVjdCwgaW5s
aW5lUmVjdCAhPSBJbnRSZWN0KDAsIDAsIDAsIDApKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldElu
bGluZVJlY3QoY29udGV4dElkLCBpbmxpbmVSZWN0LCBpbmxpbmVSZWN0ICE9IEludFJlY3QoMCwg
MCwgMCwgMCkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0Vmlk
ZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQpAQCAtMzc4LDcgKzM3OCw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2
NF90IGNvbnRleHRJZCkKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9M
YXllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRd
ICgpIG11dGFibGUgewogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNv
bnRleHRJZF0gewogICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAg
ICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCB0cnVlKSwgcHJvdGVjdGVk
VGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExh
eWVyKGNvbnRleHRJZCwgdHJ1ZSkpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTM5NCw3
ICszOTQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJldHVyblZpZGVvQ29udGVu
dExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICAgICAgICAgIG1vZGVsLT5zZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcihuaWwsIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgICAgICAg
ICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgICAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1Zp
ZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgZmFsc2UpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihj
b250ZXh0SWQsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsK
ICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3Jl
ZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0pOwogI2Vsc2UKICAgICBDQUxheWVy
KiB2aWRlb0xheWVyID0gaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnJvb3RMYXll
cigpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlk
U2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBtb2RlbC0+c2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRo
aXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewogICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgaWYgKHByb3RlY3Rl
ZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIHBy
b3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3Jl
ZW4oY29udGV4dElkKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogI2VuZGlmCkBAIC00NDIsNyAr
NDQyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVtZW50
ID0gV1RGTW92ZSh2aWRlb0VsZW1lbnQpLCBjb250ZXh0SWRdIHsKICAgICAgICAgdmlkZW9FbGVt
ZW50LT53aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1f
cGFnZSkKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oY29u
dGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6UHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0pOwog
fQogCkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRF
eGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CiAgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xl
YW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7
CiAgICAgfSk7CiAjZWxzZQogICAgIG1vZGVsLT53YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVu
KFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2Us
IG1vZGVsXSAoKSBtdXRhYmxlIHsKQEAgLTQ5OCw3ICs0OTgsNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICAg
ICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChudWxs
cHRyKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAocHJv
dGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNs
ZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlE
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVu
KGNvbnRleHRJZCkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOwpAQCAtNTU1LDcgKzU1NSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vCiAKICAg
ICBpZiAoIWlzUGFnZVZpc2libGUpCiAgICAgICAgIG1vZGVsLnZpZGVvRWxlbWVudCgpLT5zY3Jv
bGxJbnRvVmlld0lmTm90VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShj
b250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxlbWVudCgpKSks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCB0
cnVlLCBpbmxpbmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSkpKTsKIH0KIAogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29u
dGV4dFVJRCh1aW50NjRfdCBjb250ZXh0SWQsIE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpSZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRDo6QXN5bmNSZXBseSYm
IHJlcGx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlBy
b2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0KaW5kZXggMmUxOTBiMDM1ZjcuLmI5Y2U3OWQyNzRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTUzOSw3ICs1
MzksNyBAQCBzdGF0aWMgTlNVUkwgKm9yaWdpbihXZWJQYWdlJiBwYWdlKQogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk8TlNTdHJpbmcgKj4+IGFj
dGl2ZVBhZ2VzT3JpZ2lucyhjb25zdCBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4+
JiBwYWdlTWFwKQorc3RhdGljIFJldGFpblB0cjxOU0FycmF5PE5TU3RyaW5nICo+PiBhY3RpdmVQ
YWdlc09yaWdpbnMoY29uc3QgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYlBhZ2U+
PiYgcGFnZU1hcCkKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4+
IGFjdGl2ZU9yaWdpbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDk4NzJjMzFiYTU4Li43OTYwMjRj
OGNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlCiAgICAgUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoZnJhbWVMb2FkZXIubmV0d29ya2luZ0NvbnRleHQoKSwgcmVxdWVzdCwg
b3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0ID8g
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3k6OlVzZSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxv
YWRTY2hlZHVsZXI6OnBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IC8qd2ViUGFnZUlEKi8pCit2
b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlkZW50
aWZpZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1
cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IDU1YjM2OTc1MzA2
Li41ZjYyZjc3N2FhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZFJlc291cmNlKFdlYkNvcmU6OkZyYW1lJiwgV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lk
IGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6RnJhbWVMb2FkZXImLCB1bnNpZ25l
ZCBsb25nLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBjb25zdCBXZWJD
b3JlOjpIVFRQSGVhZGVyTWFwJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mKSBmaW5hbDsKLSAgICB2b2lkIHBhZ2VMb2Fk
Q29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgZmluYWw7CisgICAgdm9pZCBwYWdlTG9hZENv
bXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgZmluYWw7CiAKICAgICB2b2lkIHJlbW92
ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9h
ZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggMTM4NTU4M2FmMjkuLmIxNDAzZDA1NjM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZyYW1l
TG9hZGVyRGVzdHJveWVkKCkgZmluYWw7CiAgICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgZmlu
YWw7IC8vIG1haW5seSBmb3IgYXNzZXJ0aW9ucwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgp
IGNvbnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IDdmODY5ZjFkZGNiLi43ZWJhM2E5
OGFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwOSw3ICsyMDksNyBAQCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQoV2ViRnJhbWUgKndlYkZy
YW1lKQogewogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBh
Z2VJRCgpIGNvbnN0CitPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370598</attachid>
            <date>2019-05-24 15:47:24 -0700</date>
            <delta_ts>2019-05-24 16:06:20 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>198206_PageIdentifier_wip.patch</filename>
            <type>text/plain</type>
            <size>638768</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwNy4uYjNiY2FkZDlkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjIsNiArMTIz
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVu
dGlmaWVyPFQ+PiB7CiAgICAgdHlwZWRlZiBPYmplY3RJZGVudGlmaWVySGFzaDxUPiBIYXNoOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VD4mIGlkZW50aWZpZXIpCit7CisgICAg
dHMgPDwgaWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IGMyYzdjMjI0OWUzLi40NDgyZDVkNDc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC03NzksNiArNzc5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAogICAgIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
aAogICAgIHBhZ2UvUGFnZUdyb3VwLmgKKyAgICBwYWdlL1BhZ2VJZGVudGlmaWVyLmgKICAgICBw
YWdlL1BhZ2VPdmVybGF5LmgKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCiAgICAg
cGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU2YTFmNWYxZDcxLi5iNmE4Zjg5YWI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTIxNyw2ICsxMjE3LDcgQEAKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3
Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0
Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2QjY1MEREMjI5NjI2
MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4QTIwN0Q2MzI4
MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBBN0QyREQgLyogQWJz
dHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NzIwN0Q2MzQw
MDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAwQTdEMkREIC8qIEds
b2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzU5OSw2ICs3NjAwLDcgQEAKIAkJNDY4MzQ0REQxRURERkE1RjAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUxRURERkE1RjAwQjc3
OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCNjUwREIy
Mjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3Rl
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4RDIwN0Q2MzJBMDBB
N0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDE5Nyw2ICsyMDE5OSw3IEBACiAJCQkJOTMwMkIwQkUwRDc5RjgyQzAwQzdFRTgzIC8q
IFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuY3BwICovLAogCQkJCTdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLywKKwkJCQk0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRDVDOUNGQjE5QzdCNTJFMDBCM0M1QzEgLyog
UGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdl
T3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3Zlcmxh
eUNvbnRyb2xsZXIuY3BwICovLApAQCAtMjk4NzEsNiArMjk4NzQsNyBAQAogCQkJCUJDMzA1QzdB
MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTg1QjFFQjBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MT0xpc3RFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFN0U5QjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MT3B0R3Jv
dXBFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3RTk5MEExQTgzRTMw
MDdGQjhDNSAvKiBKU0hUTUxPcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhB
MjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA3NjkxMmNh
ZWI4YS4uMGU3ZDU0MjA1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQodWludDY0X3Qg
cGFnZUlELCBBWE9iamVjdENhY2hlJiBjYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29s
YXRlZFRyZWU6OmluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
QVhPYmplY3RDYWNoZSYgY2FjaGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGF1dG8gdHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0
eVRyZWUoKTsKQEAgLTg3LDcgKzg3LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6dHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogICAgIHJldHVybiB0
cmVlSURDYWNoZSgpLmdldCh0cmVlSUQpOwogfQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNv
bGF0ZWRUcmVlOjpjcmVhdGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIApA
QCAtOTcsNyArOTcsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gbmV3VHJlZTsKIH0K
IAotUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCh1
aW50NjRfdCBwYWdlSUQpCitSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0
cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihzX2NhY2hlTG9jayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGMwNzVkNWIwMTY3
Li42ZWVjMjY0NTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYSXNv
bGF0ZWRUcmVlTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00Myw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BWElzb2xhdGVk
VHJlZSgpOwogCi0gICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBh
Z2VJRCh1aW50NjRfdCBwYWdlSUQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QVhJ
c29sYXRlZFRyZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhP
YmplY3RDYWNoZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRl
ZFRyZWU+IHRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPEFY
SXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRy
ZWVGb3JJRChQYWdlSWRlbnRpZmllciwgQVhPYmplY3RDYWNoZSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IHRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+
IHRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBWElzb2xhdGVkVHJlZU5vZGU+IHJvb3ROb2RlKCk7CkBAIC03MCw3ICs3MSw3IEBAIHByaXZh
dGU6CiAgICAgQVhJc29sYXRlZFRyZWUoKTsKIAogICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0
ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlSURDYWNoZSgpOwotICAgIHN0YXRp
YyBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgp
OworICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+
PiYgdHJlZVBhZ2VDYWNoZSgpOwogCiAgICAgLy8gT25seSBhY2Nlc3Mgb24gQVggdGhyZWFkIHJl
cXVlc3RpbmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+
PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlNzBh
OWY3ZmU1NS4uZDM1NDE2NzNlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzc2Niw3
ICs3NzY2LDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2VyKCkKICAgICByZXR1cm4gKm1fbG9n
Z2VyOwogfQogICAgIAotT3B0aW9uYWw8dWludDY0X3Q+IERvY3VtZW50OjpwYWdlSUQoKSBjb25z
dAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggYzA3NjU1NjUwNmEuLmEyNDgxZGY4YTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNp
bmNsdWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmll
ci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVu
dC5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBA
IC02MzUsNyArNjM2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2Fj
aGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQVhPYmplY3RDYWNoZSgp
OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0OworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdDsKICAgICAvLyB0byBnZXQgdmlzdWFsbHkg
b3JkZXJlZCBoZWJyZXcgYW5kIGFyYWJpYyBwYWdlcyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFs
bHlPcmRlcmVkKCk7CiAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbGx5T3JkZXJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBi
MWJlZDhmMDMyZi4uMzNlMjc4NjM4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29r
aWVzID0gc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CiAKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtMTEwLDcgKzExMCw3IEBAIENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoY29u
c3QgRG9jCiB2b2lkIENvb2tpZUphcjo6c2V0Q29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29raWVz
RW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3Rk
OjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
IHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3Rv
cmFnZVNlc3Npb24oKSkgewogICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQg
PSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHUKIFN0cmluZyBDb29raWVK
YXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAg
ICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAg
ICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdQogYm9vbCBDb29raWVKYXI6OmdldFJh
d0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIGNvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkp
IHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7
CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCAwZGIwN2M2ZDEyZS4uMjgxZjg0YzQ5MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzKERvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogCiAgICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8
U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OworICAg
IHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggNGYwYmI4NmRkZDUuLjFmN2EyOWM0YjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBG
cmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJy
aWRlIHsgfQogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBt
YWlubHkgZm9yIGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZWMzOTEyN2ExYWQuLjA3NDg3NjExOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmUuaCIKICNpbmNsdWRl
ICJMaW5rSWNvbi5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgpAQCAtMTI2LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBtYWtl
UmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0
ZWd5LmgKaW5kZXggOGE4MjM4MWYwMTguLjQ1ZmViNjM1ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCIKQEAgLTU3LDcg
KzU4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UoRnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJl
c291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRlciYsIGJvb2wpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA3NzQ1
MDAxZTc4YS4uZjI2YTlhYWYyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmF2aWdh
dGlvbkFjdGlvbjo6UmVxdWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogbV91cmwgeyBVUkwgeyBkb2N1bWVudC51cmwoKSB9IH0KICAgICAsIG1fb3JpZ2lu
IHsgbWFrZVJlZlB0cihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX3BhZ2VJ
REFuZEZyYW1lSURQYWlyIHsgZG9jdW1lbnQuZnJhbWUoKSA/IHN0ZDo6bWFrZV9wYWlyKGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpLnZhbHVlT3IoMCksIGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKDApKSA6IHN0
ZDo6bWFrZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9wYWdlSURB
bmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVu
dC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlm
aWVyIHsgfSksIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52
YWx1ZU9yKDApKSA6IHN0ZDo6bWFrZV9wYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4oeyB9
LCAwKSB9CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmlu
ZGV4IDFhNDRmOTFkMzY4Li5lZDdkMDljZjI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRl
ICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtNjMsMTQgKzY0LDE0IEBAIHB1YmxpYzoKICAg
ICBOYXZpZ2F0aW9uQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24mJik7CiAgICAgTmF2aWdhdGlvbkFj
dGlvbiYgb3BlcmF0b3I9KE5hdmlnYXRpb25BY3Rpb24mJik7CiAKLSAgICB1c2luZyBQYWdlSURB
bmRGcmFtZUlEUGFpciA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKiBwYWdlSUQgKi8sIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+OworICAgIHVzaW5nIFBhZ2VJREFuZEZyYW1lSURQYWlyID0gc3RkOjpw
YWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBmcmFtZUlEICovPjsKICAgICBjbGFzcyBS
ZXF1ZXN0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVxdWVzdGVyKGNvbnN0IERvY3VtZW50
Jik7CiAKICAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiAqbV9vcmlnaW47IH0KLSAgICAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5maXJzdDsgfQorICAgICAgICBQYWdlSWRlbnRpZmll
ciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZyYW1lSURQYWlyLmZpcnN0OyB9
CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZy
YW1lSURQYWlyLnNlY29uZDsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFVSTCBtX3VybDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDE0
YmMyZjNiZWVmLi5mZmFkYTFjNDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lk
KFZlY3RvCiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9u
Q2FsbGJhY2spOwogfQogCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVCghbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2sp
OwogICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MK
IH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1l
bnQpCit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlE
LCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVu
ZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBv
cGVuZXJVcmwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKaW5kZXggYzQ2NjFiMDQ3NjAuLmRlMWM5NGE3MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgorI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTczLDcgKzc0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0
IFVSTCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBkYXRlZENh
bGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
Jik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0
aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJTb2NrZXRM
b2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxU
aW1lKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dTdWJyZXNvdXJjZUxvYWRp
bmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiYmKTsKQEAgLTk0LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3Vt
ZW50KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKICNlbmRpZgogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25N
YXA7CiAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
IG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1aW50NjRfdCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CisgICAg
RnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQ
YWdlSWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3Rp
ZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlm
aWNhdGlvbkNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjM1Mzkw
YzhjM2EuLjUyYjJlOTRiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQ4
Niw4ICs0ODYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMgKi8pID0gMDsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQq
LywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8q
c3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8s
IHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5v
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21h
aW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYm
IC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVy
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd246Ok5vKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKaW5kZXgg
MTU2YzljZDIwNWQuLjBkN2IzZGJmNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFs
RnJhbWVJZGVudGlmaWVyLmgKQEAgLTI1LDEzICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRnJhbWUgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1
ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgogc3RydWN0IEdsb2JhbEZyYW1lSWRl
bnRpZmllciB7Ci0gICAgdWludDY0X3QgcGFnZUlEOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RDsKICAgICB1aW50NjRfdCBmcmFtZUlEOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIEdsb2Jh
bEZyYW1lSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxG
cmFtZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50aWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDRkNWY4ZDI5NzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBhZ2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBQYWdlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDExNTkw
NTBjZDMyLi40ZTZiNmFjZTMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb29raWVKYXIuaCIKKyNp
bmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zOCw3ICsz
OSw3IEBAIHN0cnVjdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSB7CiAgICAgU2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbzsKICAgICBVUkwgdXJsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcyB7IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObyB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNzEsOCAr
NzIsMTEgQEAgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5OjpkZWNvZGUoRGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mcmFtZUlEKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdl
SUQpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gcGFnZUlEOworICAg
IGRlY29kZXIgPj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJlc3VsdC5wYWdlSUQgPSBXVEZNb3ZlKCpwYWdlSUQpOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluY2x1ZGVTZWN1cmVDb29raWVzKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CmluZGV4IDNiMThlNjJmZTM5Li42M2RmMDU4OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAt
NjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0K
ICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29v
a2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlEKSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3Jh
bnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7
CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7
CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAg
ICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChw
YWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vz
cy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAg
IGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1lSUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdl
U3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwog
ICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21h
aW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhm
cm9tRG9tYWluKSkKICAgICAgICAgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJl
dmFsZW50UmVzb3VyY2UuYWRkKHBhZ2VJRCwgdG9Eb21haW4pOwpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZygpCiAgICAgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9u
VGVzdE1vZGUgPSB0cnVlOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHksIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0CitPcHRpb25hbDxTZWNvbmRz
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdl
SUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2Uu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDAzMDIwMGRmOWM0Li4zZjM5YzhhY2Q4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRp
YWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdp
c3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNp
ZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9t
YWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4g
bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1aW50
NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFzaDx1
aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0
X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVsdEhh
c2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmlnYXRl
ZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dp
dGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRp
b25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5kZXggNjdkZjc2NGQyYzQuLjMzMGFhNjA4
NjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtMTg5LDcg
KzE4OSw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZEaWN0aW9uYXJ5UmVm
IGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQogICAgIHJldHVybiBwYXJzZWRDb29raWVzOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMjI1LDcg
KzIyNSw3IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zU2VjdXJlQ29va2llcyhDRkFycmF5UmVmIGNv
b2tpZXMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJh
bWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yNDAsNyArMjQwLDcgQEAgc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBjb29raWVTdHJpbmcsIGRpZEFjY2Vz
c1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNF
bmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VB
Y2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQ
Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0K
IAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDYzNzQwMzUyYzRhLi41NTdlOTc3
YjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0yOTQsNyAr
Mjk0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkg
KnVuZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1cm4gZmlsdGVyZWRDb29r
aWVzOwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkKK3N0YXRpYyBOU0FycmF5ICpjb29r
aWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
aWYgKHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwg
cGFnZUlEKSkKQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVS
TChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZgogfQog
CiBlbnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1
ZGVIVFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JT
ZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHks
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQogewogICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpKTsKIApAQCAtMzYzLDEyICszNjMsMTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENv
b2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENv
b2tpZVN0b3JhZ2VEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
c0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhp
cywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJ
bmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJl
dHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2ll
cyk7CiB9CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KICAgICBy
ZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0
eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBo
ZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRl
SFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi12
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYg
Y29va2llU3RyKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIApAQCAtNDQzLDcgKzQ0Myw3IEBA
IGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9v
bCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNs
ZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4
IDJjMTE1NjhmY2U1Li5kNjBkNzBhODM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtNTksNyArNTksNyBA
QCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3RyaW5nKCk7
CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3Zv
aWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAg
ICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC03
NCw3ICs3NCw3IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9u
c2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzCiAgICAgY29va2llSmFyREIuc2V0
Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdv
cmspOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJ
RCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBj
b25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZy
YW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMTEzLDcgKzExMyw3IEBAIGJv
b2wgQ29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCku
aXNFbmFibGVkKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KSBjb25zdAorYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5NGM4NmFmZThm
Li42ODcyYjBhYzliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAt
ODAsNyArODAsNyBAQCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVE
YXRhYmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29va2llRGF0YWJhc2U7CiB9CiAKLXZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdAogewogICAgIGNvb2tpZVN0b3JhZ2UoKS5zZXRDb29raWVzRnJvbURPTSgqdGhpcywgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgdmFsdWUpOwogfQpA
QCAtOTAsNyArOTAsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0VuYWJs
ZWQoKSBjb25zdAogICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2llc0VuYWJsZWQoKnRo
aXMpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29r
aWVTdG9yYWdlKCkuY29va2llc0ZvckRPTSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpAQCAtMTU0
LDcgKzE1NCw3IEBAIFZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29v
a2llcyhjb25zdCBVUkwmKQogICAgIHJldHVybiB7IH07CiB9CiAKLWJvb2wgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAog
ewogICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuZ2V0UmF3Q29va2llcygqdGhpcywgZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmF3Q29va2llcyk7CiB9
CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29v
a2llU3RvcmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0byB1c2UuCiB9
CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykg
Y29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAKaW5kZXggMWY3NTg3N2E4MmIuLmY2NjQxZWZlYjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdv
cmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKGNvbnN0IEdTTGlzdCogY29va2llcywgY29uc3Qg
Z2NoYXIqIG5hbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC00NDQsNyArNDQ0LDcgQEAgVmVjdG9yPENvb2tpZT4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsKQogICAgIHJl
dHVybiBjb29raWVzOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZUlEKTsKQEAgLTUxNCw3ICs1MTQsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZQogICAgIHJldHVybiB7IFN0cmluZzo6ZnJvbVVURjgoY29va2llSGVhZGVyLmdldCgpKSwgZGlk
QWNjZXNzU2VjdXJlQ29va2llcyB9OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQ
YXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTIyLDcgKzUyMiw3IEBAIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRP
TShjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlz
LCB1cmwsIGZhbHNlLCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAor
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDg3OWMwYjE5ZTk2Li5iNjg5YzNlMjVh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiAgICAgbV9kYXRhYmFzZS5y
dW5WYWN1dW1Db21tYW5kKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZy
YW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxG
cmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKQEAgLTc0Myw3ICs3NDMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBU
b3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIFBhZ2VJRCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBU
b3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVz
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIApAQCAtNzk1LDcgKzc5NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYKICAgICB9KTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9wZW5lclBhZ2VJRCBvcGVuZXJQYWdlSUQsIE9wZW5l
ckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmll
ciBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NF
UlQoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5lckRvbWFpbik7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihEb21haW4KICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgV1RGOjpudWxs
b3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIFtdKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBz
dWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJv
bXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21w
dFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIApAQCAtODI4LDcgKzgyOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1CiAgICAgZ3Jh
bnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUo
dG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYg
c3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFs
PEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5k
ZXggYmFiMmI3YWVhYjcuLmJmYzIzMzk2ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5j
U3RvcmFnZUltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBh
Z2VJRCwgT3BlbmVyRG9tYWluJiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiYpIG92ZXJyaWRlOwogCkBAIC05MSw5ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYm
LCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBG
cmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlv
bihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3Qg
TmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21h
aW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQ
cmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCByZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21h
aW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21haW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBT
dGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2YWxlbnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVk
IG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOwogICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50
KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwg
UGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1l
RG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQ
cmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcAppbmRleCAwZWU3Zjk2Mzg5NC4uYTVmMjYyNGU0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0yMDAsNyArMjAwLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnN5bmNTdG9yYWdlSW1t
ZWRpYXRlbHkoKQogICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdlLT5zY2hlZHVsZU9yV3JpdGVN
ZW1vcnlTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OkZvcmNl
SW1tZWRpYXRlV3JpdGU6Olllcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxG
cmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZy
YW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBz
CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BG
cmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BG
cmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1CiAgICAgfSk7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbklu
TmVlZE9mU3RvcmFnZUFjY2VzcywgT3BlbmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9t
YWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVu
ZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5lckRvbWFpbik7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9t
YWluSW4KICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgV1RGOjpudWxsb3B0LCBv
cGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIFtdKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
OjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9w
RnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0y
OTksNyArMjk5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omdy
YW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkYKICAgICBncmFudFN0b3JhZ2VB
Y2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURv
bWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZy
YW1lSUQsIFBhZ2VJRCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRX
YXNTaG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0
aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggNDRlZmJmNGRlYzEuLjQ1
ZjdlMWI3NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNTdG9yYWdl
SWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgT3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3BlbmVy
RG9tYWluJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBncmFuZGZhdGhlckRhdGFGb3JEb21haW5z
KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jikgb3ZlcnJpZGU7CiAKQEAgLTk3LDkg
Kzk3LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnko
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJG
cmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYm
LCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0
YXR1cyk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1l
RG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYXNTdG9y
YWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBP
cHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1
cyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9t
YWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1Jl
ZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGxvZ1VzZXJJbnRl
cmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwpAQCAtMTIzLDcgKzEyMyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50Rm9yRG9t
YWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNl
dFByZXZhbGVudFJlc291cmNlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBSZXNvdXJjZUxvYWRQ
cmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCByZWN1cnNpdmVseUdldEFsbERvbWFpbnNUaGF0SGF2
ZVJlZGlyZWN0ZWRUb1RoaXNEb21haW4oY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIEhh
c2hTZXQ8UmVkaXJlY3RlZFRvRG9tYWluPiYsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2Fs
bHMpIGNvbnN0OwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBncmFudFN0
b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBP
cHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwogICAgIHZvaWQgbWFya0FzUHJldmFsZW50SWZI
YXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIGJv
b2wgaXNQcmV2YWxlbnREdWVUb0RlYnVnTW9kZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAg
ICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JE
ZWJ1Z01vZGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAppbmRleCAwYjU3NzViYmI3Ny4uZDc3OThiMjVkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHVz
aW5nIE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAg
dXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlE
ID0gdWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogICAgIAogICAgIHZp
cnR1YWwgflJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwpAQCAtMTEwLDcgKzEwOCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJE
b21haW4mJikgPSAwOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0
ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0RlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rl
YnVnTW9kZUVuYWJsZWQ7IH07CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVn
TW9kZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBG
cmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRv
cEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZyYW1l
TmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01h
aW5GcmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3Qg
VG9wRnJhbWVEb21haW4mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCmluZGV4IDg3MWIxOWQyZjA3Li42MjI0MzBjZDhlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTI3NSw3ICsy
NzUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcgogICAgIH0pOwogfQogCi12b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChzdWJGcmFtZURvbWFpbiAhPSB0b3BGcmFtZURvbWFpbik7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTI5OCwxMiArMjk4LDEyIEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzCiAgICAgfSk7CiB9CiAKLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQorYm9vbCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgcmV0dXJuIG1fbmV0d29ya1Nlc3Npb24gPyBtX25ldHdvcmtTZXNzaW9uLT5u
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5oYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBm
aXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpIDogZmFsc2U7CiB9CiAKLXZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
SGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNh
bGxiYWNrKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJj
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBSCiAg
ICAgY2FsbGJhY2soZmFsc2UpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmIChzdWJGcmFtZURvbWFpbiA9PSB0b3BGcmFtZURvbWFpbikg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVz
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgUmVnaXN0cmFibGVEb21haQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3Ry
YWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVy
UGFnZUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFJl
Z2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRp
ZmllciBvcGVuZXJQYWdlSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihSZWdpc3RyYWJsZQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9t
YWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9w
RnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hv
d24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYKICAgICB9
KTsKIH0KIAotU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291
cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK1N0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgYm9vbCBpc1N0b3JhZ2VHcmFudGVkID0g
ZmFsc2U7CiAKQEAgLTQwOSw3ICs0MDksNyBAQCBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdAogICAg
IHJldHVybiBpc1N0b3JhZ2VHcmFudGVkID8gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcyA6
IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObzsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxs
R3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDg3NTlkNjAxNjZhLi43OWNmMjQ2MDFj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTdG9yYWdl
QWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgpAQCAtODIsOCArODMsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdh
dGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAg
ICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1
c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRf
dDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDsKICAgICB1c2lu
ZyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd247CkBAIC0xMDQsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRy
eShib29sKTsKIAotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CisgICAgdm9pZCBncmFu
dFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogCiAgICAgdm9pZCBhcHBsaWNhdGlv
bldpbGxUZXJtaW5hdGUoKTsKIApAQCAtMTE4LDExICsxMTcsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3Ry
YWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIEhhc2hNYXA8UmVnaXN0cmFi
bGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYp
PiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICBTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4m
LCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQpOworICAg
IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFt
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwot
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7Ci0gICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJ
RCk7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24pPiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4m
LCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgYm9vbCBo
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQ
cmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTY2
LDExICsxNjUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogCiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAg
dm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHZvaWQg
Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
OwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgY2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2ll
c0ZvckhhbmRsZXIoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxsUmVtb3ZlRG9tYWluc0hhbmRsZXIoY29u
c3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwotICAgIHZvaWQgY2FsbEhhc1N0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAg
dm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOwogCkBAIC0xODIsNyArMTgxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNp
Z25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNv
dXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzU3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2lucykgY29uc3Q7CiAKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRh
dGVkKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIHVp
bnQ2NF90IG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpOworICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKTsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nl
c3Npb24mLCBjb25zdCBTdHJpbmcmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oCmluZGV4IDJjOTcxODM2YWRhLi40ZDNkMTY5ZjZhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHJlZmVycmVy
OwogICAgICAgICBTdHJpbmcgdXNlckFnZW50OwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQ7Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEOwogICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAzZDcxZjhmNmIxYi4uOTJjOGI3
YWU0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00NDIsNyArNDQyLDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlTG9hZElkZW50aWZpZXIo
UmVzb3VyY2VMb2FkSWRlbnRpZmllcgogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2Fk
ZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlkZW50
aWZpZXIgd2ViUGFnZUlEKQogewogICAgIHN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0Zv
clBhZ2Uod2ViUGFnZUlEKTsKIH0KQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFM
OjpTZXNzaQogICAgIGxvYWRlci0+Y29udmVydFRvRG93bmxvYWQoZG93bmxvYWRJRCwgcmVxdWVz
dCwgcmVzcG9uc2UpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBh
dXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29ucwogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9N
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNv
b2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tp
ZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOwogICAg
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOwpAQCAtNTQyLDEz
ICs1NDIsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0Vu
YWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb20KICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZXNFbmFi
bGVkKCkpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcmVzdWx0
ID0gc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5jb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gcmVzdWx0OwogICAgIHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNl
c3Npb25JRCkuZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCByZXN1bHQpOwpAQCAtNjM4LDEzICs2MzgsMTMgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5l
dHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFn
ZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShmcmFtZUlELCBwYWdlSUQpOwog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZp
Y0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xl
YXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoYXV0byogc3Rv
cmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5jbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKHBhZ2VJRCk7CkBAIC02OTcsNyArNjk3LDcgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVj
dG9yPFdlYkNvcmUKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJv
Y2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKSB7CkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGMKICAg
ICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9t
cHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duIHByb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0
byBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdv
cmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKQEAgLTcyMSw3ICs3MjEsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bjo6Tm8pOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBv
cGVuZXJEb21haW4pCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVu
ZXJEb21haW4pCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJvY2Vz
cygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQpAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiAgICAgU2VjdXJpdHlQb2xpY3k6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogfQogCi1PcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jl
c291cmNlTG9hZCh1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3Vy
Y2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCkKK09wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29sIGlzTWFpblJlc291cmNl
LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQogewogICAgIGlmIChzZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTgxNCw3ICs4
MTQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxsTmV0d29y
a0FjdGl2aXR5VHJhY2tpbmcoKQogICAgIG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcnMuY2xlYXIo
KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdv
cmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZSh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBmb3IgKGF1dG8mIGFjdGl2aXR5VHJh
Y2tlciA6IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcnMpIHsKICAgICAgICAgaWYgKGFjdGl2aXR5
VHJhY2tlci5wYWdlSUQgPT0gcGFnZUlEKQpAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0Zv
clBhZ2UodWludDY0CiAgICAgfSk7CiB9CiAKLXNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkodWludDY0X3QgcGFnZUlEKQorc2l6ZV90
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kUm9vdE5ldHdvcmtBY3Rpdml0eShQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIG1fbmV0d29ya0FjdGl2aXR5VHJh
Y2tlcnMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7CiAgICAgICAgIHJldHVy
biBpdGVtLmlzUm9vdEFjdGl2aXR5ICYmIGl0ZW0ucGFnZUlEID09IHBhZ2VJRDsKQEAgLTkwMywx
NyArOTAzLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyQ29u
bmVjdGlvbkhhc1VwbG9hZHMoKQogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpDbGVhcldlYlByb2Nl
c3NIYXNVcGxvYWRzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG9sZFBhZ2VJRCkKIHsKICAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQYWdlV2FzQWRkZWQo
bV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCwgb2xkUGFnZUlEKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX25ldHdvcmtQcm9jZXNzLT53
ZWJQYWdlV2FzUmVtb3ZlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCwgcGFnZUlEKTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgcGFnZXMpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9j
ZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlcykKIHsKICAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQ
cm9jZXNzU2Vzc2lvbkNoYW5nZWQobV9jb25uZWN0aW9uLmdldCgpLCBuZXdTZXNzaW9uSUQsIHBh
Z2VzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBjYmM3YmJmZThmNS4uMDZkNTc5
Njg4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmgiCiAjaW5jbHVkZSAiV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTMzLDcgKzEzNCw3IEBAIHB1
YmxpYzoKICAgICAgICAgbV9uZXR3b3JrTG9hZEluZm9ybWF0aW9uQnlJRC5yZW1vdmUoaWRlbnRp
Zmllcik7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gc3Rh
cnRUcmFja2luZ1Jlc291cmNlTG9hZCh1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9u
SUQmKTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5n
UmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklE
Jik7CiAgICAgdm9pZCBzdG9wVHJhY2tpbmdSZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciByZXNvdXJjZUlELCBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpDb21wbGV0aW9uQ29kZSk7
CiAKICAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnkoKTsKQEAgLTE0
NCw5ICsxNDUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb25uZWN0aW9uSGFzVXBsb2Fkcygp
OwogICAgIHZvaWQgY2xlYXJDb25uZWN0aW9uSGFzVXBsb2FkcygpOwogCi0gICAgdm9pZCB3ZWJQ
YWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xk
UGFnZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vz
c2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZXMpOworICAg
IHZvaWQgd2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKTsKKyAgICB2b2lkIHdlYlBh
Z2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiBwYWdlcyk7CiAKIHBy
aXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3Mm
LCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwpAQCAtMTcwLDE2ICsxNzEsMTYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHByZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRp
ZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIHJlbW92
ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwotICAgIHZvaWQgcGFnZUxv
YWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKTsKKyAgICB2b2lkIHBhZ2VMb2FkQ29tcGxl
dGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJl
Y3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJM
KTsKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFt
ZSA9IHsgfSk7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9h
ZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7
Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7
CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5n
LCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2ll
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiYmKT4mJik7CisgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAogICAgIHZvaWQg
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKQEAgLTIx
OCwxNyArMjE5LDE3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
biYgY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIGNs
ZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJh
bWUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZv
aWQgbG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYpOwogICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAgICAgdm9pZCBsb2dTdWJy
ZXNvdXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2Fs
bFRpbWUgbGFzdFNlZW4pOwogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbik7CiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7
Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYm
KTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9u
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
b3BlbmVyRG9tYWluKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWlu
KTsKICNlbmRpZgogCiAgICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29s
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyk7CkBAIC0yMzksMjkgKzI0MCwyOSBAQCBwcml2YXRlOgogICAgICAgICBSZXNvdXJj
ZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0
d29ya0FjdGl2aXR5VHJhY2tlcihjb25zdCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIm
KSA9IGRlZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNv
dXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXImJikgPSBkZWZhdWx0OwotICAgICAgICBSZXNvdXJj
ZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIodWludDY0X3QgcGFnZUlEKQorICAgICAgICBSZXNvdXJj
ZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAgLCBpc1Jvb3RBY3Rp
dml0eSB7IHRydWUgfQogICAgICAgICAgICAgLCBuZXR3b3JrQWN0aXZpdHkgeyBOZXR3b3JrQWN0
aXZpdHlUcmFja2VyOjpMYWJlbDo6TG9hZFBhZ2UgfQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIodWludDY0X3QgcGFnZUlELCBS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29y
a0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNl
TG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCkKICAgICAgICAgICAgIDogcGFnZUlEIHsgcGFnZUlE
IH0KICAgICAgICAgICAgICwgcmVzb3VyY2VJRCB7IHJlc291cmNlSUQgfQogICAgICAgICAgICAg
LCBuZXR3b3JrQWN0aXZpdHkgeyBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpMYWJlbDo6TG9hZFJl
c291cmNlIH0KICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdWludDY0X3QgcGFnZUlE
IHsgMCB9OworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAg
IFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCB7IDAgfTsKICAgICAgICAgYm9vbCBp
c1Jvb3RBY3Rpdml0eSB7IGZhbHNlIH07CiAgICAgICAgIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIg
bmV0d29ya0FjdGl2aXR5OwogICAgIH07CiAKICAgICB2b2lkIHN0b3BBbGxOZXR3b3JrQWN0aXZp
dHlUcmFja2luZygpOwotICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9y
UGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHNpemVfdCBmaW5kUm9vdE5ldHdvcmtBY3Rpdml0
eSh1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNr
aW5nRm9yUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc2l6ZV90IGZpbmRSb290
TmV0d29ya0FjdGl2aXR5KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBzaXplX3QgZmlu
ZE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlE
KTsKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZjdjOTdlZWJiMjEuLjgzM2U3NGZjZjYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDE4ICsy
NiwxOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgUGVyZm9ybVN5bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBW
ZWN0b3I8Y2hhcj4gZGF0YSkgU3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCiAgICAgUmVt
b3ZlTG9hZElkZW50aWZpZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKLSAgICBQ
YWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpCisgICAgUGFnZUxvYWRDb21wbGV0
ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIFByZWZldGNoRE5TKFN0
cmluZyBob3N0bmFtZSkKICAgICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFt
ZXRlcnMpOwogCiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNl
TG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tp
ZXMpIFN5bmNocm9ub3VzCi0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJv
b2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+
IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNo
cm9ub3VzCisgICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBV
UkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8s
IFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNF
bmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hy
b25vdXMKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNh
bWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlk
QWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
IGNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJv
b2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+
IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNo
cm9ub3VzCisgICAgR2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBm
aXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJM
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBT
eW5jaHJvbm91cwogICAgIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVS
TCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwg
dXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5z
aW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCkBAIC01NiwxNiArNTYsMTYgQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAg
IEVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQp
OwotICAgIENsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFJlbW92ZVN0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CisgICAgQ2xlYXJQYWdlU3BlY2lm
aWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQogICAgIExvZ1dlYlNvY2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJy
ZXNvdXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZy
YW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZVJlZGlyZWN0
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291
cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAgICAg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+IHN0YXRpc3RpY3MpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwot
ICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQp
IC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRl
ZCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRX
YXNTaG93bikgQXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3Jh
Z2VBY2Nlc3MpIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYworICAgIFJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gb3BlbmVyRG9tYWluKQogI2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShTdHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3Ry
aW5nIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBA
IC04Nyw3ICs4Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogCi0gICAgV2ViUGFnZVdhc0Fk
ZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBv
bGRQYWdlSUQpCi0gICAgV2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBwYWdlSUQpCi0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vz
c2lvbklEIG5ld1Nlc3Npb25JRCwgVmVjdG9yPHVpbnQ2NF90PiBwYWdlcykKKyAgICBXZWJQYWdl
V2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKKyAgICBXZWJQYWdl
V2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCkKKyAgICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQg
bmV3U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwCmluZGV4IGQxNGIxZGU5ZDkxLi40MDk3MTRkNjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAtNDgsNyArNDgs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lT3JpZ2luKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0RhdGEo
KSB8fCB1cmwucHJvdG9jb2xJc0Jsb2IoKSB8fCAhb3JpZ2luIHx8IG9yaWdpbi0+Y2FuUmVxdWVz
dCh1cmwpOwogfQogCi1OZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3
b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBI
VFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJlZmxpZ2h0
UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQsIGJv
b2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlwZSByZXF1ZXN0
TG9hZFR5cGUpCitOZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJlZmxp
Z2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQs
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlwZSByZXF1
ZXN0TG9hZFR5cGUpCiAgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nl
c3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuaAppbmRleCAzMWQxMWMzYThhZS4uNTdkZjFkYTQ2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaApAQCAtNTQsNyArNTQsNyBA
QCBjbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29y
a0xvYWRDaGVja2VyPiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBMb2FkVHlwZSA6IGJvb2wg
eyBNYWluRnJhbWUsIE90aGVyIH07CiAKLSAgICBOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1By
b2Nlc3MmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwm
JiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGlnaHRQ
b2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZh
bHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBM
b2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOworICAgIE5ldHdvcmtM
b2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6
OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFdl
YkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9v
bCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gTG9h
ZFR5cGU6Ok90aGVyKTsKICAgICB+TmV0d29ya0xvYWRDaGVja2VyKCk7CiAKICAgICBzdHJ1Y3Qg
UmVkaXJlY3Rpb25UcmlwbGV0IHsKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7
CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgUmVmPE5ldHdvcmtQcm9jZXNz
PiBtX25ldHdvcmtQcm9jZXNzOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKICAgICBX
ZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVyczsgLy8gTmVlZGVk
IGZvciBDT1JTIGNoZWNrcy4KICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fZmlyc3RSZXF1
ZXN0SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JTIGNoZWNrcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCmluZGV4IDg5NjM5
OWQxMzMyLi44OTczMGNmOWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0
YUZpbGVSZWZlcmVuY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTM4
LDcgKzM5LDcgQEAgZW51bSBjbGFzcyBQcmVjb25uZWN0T25seSB7IE5vLCBZZXMgfTsKIAogY2xh
c3MgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAgICB1aW50NjRfdCB3ZWJQYWdl
SUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEOwogICAgIHVp
bnQ2NF90IHdlYkZyYW1lSUQgeyAwIH07CiAgICAgV1RGOjpQcm9jZXNzSUQgcGFyZW50UElEIHsg
MCB9OwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBBTDo6U2Vzc2lvbklEOjplbXB0
eVNlc3Npb25JRCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IGE1ZDZmNWNmY2M3Li5hYzRkMzJiZjJkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTExNTUsNyAr
MTE1NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2VzCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvbW1p
dHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oZnJvbURvbWFpbiwgdG9Eb21haW4s
IHBhZ2VJRCk7CkBAIC0xOTU0LDcgKzE5NTQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRB
bGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29sIGFsbG93cywgQ29tcGxldAog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0Rp
YWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2UoUGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24sIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAg
ICByZXR1cm47CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dE
aWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzcwog
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3Jp
cHRpb24sIFNob3VsZFNhbXBsZTo6Tm8pLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBEaWFnbm9zdGljTG9n
Z2luZ1Jlc3VsdFR5cGUgcmVzdWx0LCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUgcmVzdWx0LCBTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNob3Vs
ZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk3
MCw3ICsxOTcwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3QKICAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dEaWFn
bm9zdGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFnZUlELCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwg
cmVzdWx0LCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUs
IHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJ
ZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywg
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5n
Q2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI2MTksNyArMjYxOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtl
cHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiAgICAgICAgIHNlc3Np
b24tPnJlbW92ZUtlcHRBbGl2ZUxvYWQobG9hZGVyKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6d2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBQ
YWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7CiAgICAgaWYgKCFwYWdlSUQgfHwgIW9sZFBhZ2VJ
RCkgewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQgcGFnZSB3aXRoIGludmFsaWQgaWQi
KTsKQEAgLTI2NDQsNyArMjY0NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNB
ZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklECiAgICAgICAg
IHN0b3JhZ2VNYW5hZ2VyLmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uob2xkUGFnZUlELCBw
YWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIXBhZ2VJRCkgewogICAgICAgICBMT0dfRVJST1Io
IkNhbm5vdCByZW1vdmUgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsKQEAgLTI2NzQsNyArMjY3NCw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPnN0
b3JhZ2VNYW5hZ2VyKCkucHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBwYWdlSURzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vz
c1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9u
SUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlSURzKQog
ewogICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwogICAgIEFT
U0VSVChtX3Nlc3Npb25CeUNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbklEKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggN2FjYjNm
OTY3NWMuLmViZjNiN2ZlNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRj
aElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0lEQlNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXJ2aWNlV29ya2VySWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlclR5cGVzLmg+CkBAIC0xMzYsOCArMTM3LDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5h
dmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcg
RG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47
CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0g
ICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWlu
dDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogCiAgICAgTmV0d29ya1Byb2Nl
c3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmKTsKQEAgLTE5MCw5
ICsxODksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsKIAogICAgIC8vIERpYWdub3N0
aWMgbWVzc2FnZXMgbG9nZ2luZy4KLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2
NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01l
c3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jl
c3VsdFR5cGUsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWdu
aWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFn
bm9zdGljTWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwor
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdDsKQEAgLTI1OCw3ICsy
NTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZFRvRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklELCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7
Ci0gICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtE
ZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRD
cm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKQEAgLTI3MSwxMCArMjcwLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
UEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0
b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRl
ZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0
aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCB3ZWJQYWdl
V2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCB3ZWJQYWdlV2Fz
UmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgd2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5l
Y3Rpb24mKTsKLSAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rp
b24mLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpOworICAgIHZvaWQg
d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+Jik7CiAgICAgdm9pZCBnZXRM
b2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+
JiYpPiYmKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCBkOWZlZTA3OGZlNy4uZjVlZjUzMDEzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTMxLDcg
KzEzMSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBTZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVkaXJlY3RlZFRvRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlZGlyZWN0ZWRGcm9tRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAo
KSBBc3luYwotICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlE
KSAtPiAoKSBBc3luYworICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBm
cm9tRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlEKSAtPiAoKSBBc3luYwogICAgIFNldENyb3NzU2l0ZUxvYWRX
aXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBB
c3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25s
eUNvb2tpZXMpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDU4
YWFjYjk5M2RiLi4zM2NkYzRkMTdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAg
LTEwNyw4ICsxMDcsMTEgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmMKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViUGFnZUlEKSkKKyAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gd2ViUGFnZUlEOworICAgIGRlY29kZXIgPj4gd2ViUGFnZUlEOworICAg
IGlmICghd2ViUGFnZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0LndlYlBh
Z2VJRCA9ICp3ZWJQYWdlSUQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53ZWJG
cmFtZUlEKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGZlMjY1MzZm
MjFjLi4yMGQwYTc1ZTg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTc0LDE4ICsxNzQsMTggQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICAgICAgbV9uZXR3b3JrTG9hZENo
ZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH0sIHRoaXMs
IFt0aGlzXSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1
bHQsCiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJjZUVycm9yJiBlcnJvcikgewotICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogZXJyb3IgY2hl
Y2tpbmcgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkLCBwYXJlbnRQSUQgPSAlZCwgZXJyb3IuZG9tYWluID0gJXtwdWJsaWN9cywgZXJyb3IuY29k
ZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+
aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21haW4oKS51
dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBlcnJvciBjaGVja2luZyAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVk
LCBlcnJvci5kb21haW4gPSAle3B1YmxpY31zLCBlcnJvci5jb2RlID0gJWQpIiwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJh
bWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hy
b25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRh
dGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9y
LmlzQ2FuY2VsbGF0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5kaWRGYWls
TG9hZGluZyhlcnJvcik7CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBbdGhp
c10gKE5ldHdvcmtMb2FkQ2hlY2tlcjo6UmVkaXJlY3Rpb25UcmlwbGV0JiB0cmlwbGV0KSB7CiAg
ICAgICAgICAgICAgICAgICAgIHRoaXMtPm1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVl
c3RGb3JDYWNoZWRSZWRpcmVjdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMtPndp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZSh0cmlwbGV0LnJlcXVlc3QpLCBXVEZNb3Zl
KHRyaXBsZXQucmVkaXJlY3RSZXF1ZXN0KSwgV1RGTW92ZSh0cmlwbGV0LnJlZGlyZWN0UmVzcG9u
c2UpKTsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6
IHN5bnRoZXRpYyByZWRpcmVjdCBzZW50IGJlY2F1c2UgcmVxdWVzdCBVUkwgd2FzIG1vZGlmaWVk
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwg
cGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgp
LCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogc3ludGhldGljIHJl
ZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVSTCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwg
dGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKICAgICAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLT5jYW5Vc2VDYWNoZShyZXF1ZXN0
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3Rh
cnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNv
dXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBt
X3BhcmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQ
SUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3Vy
Y2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnJldHJpZXZlQ2FjaGVFbnRyeShyZXF1ZXN0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQpA
QCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAg
ICAgfQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhhdCBjb2RlIHBhdGggb25jZSBtX25ldHdvcmtM
b2FkQ2hlY2tlciBpcyB1c2VkIGZvciBhbGwgbmV0d29yayBsb2Fkcy4KICAgICBpZiAoY2FuVXNl
Q2FjaGUob3JpZ2luYWxSZXF1ZXN0KCkpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNN
YWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSwgbV9wYXJh
bWV0ZXJzLnBhcmVudFBJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3Vy
Y2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpLCBtX3Bh
cmFtZXRlcnMucGFyZW50UElEKTsKICAgICAgICAgcmV0cmlldmVDYWNoZUVudHJ5KG9yaWdpbmFs
UmVxdWVzdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIyNywxMyArMjI3LDEzIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICBsb2FkZXItPmxvZ1Nsb3dDYWNoZVJldHJp
ZXZlSWZOZWVkZWQoaW5mbyk7CiAKICAgICAgICAgaWYgKCFlbnRyeSkgewotICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBub3Qg
aW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91
cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91
cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVF
bnRyeTogUmVzb3VyY2Ugbm90IGluIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNl
ID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUlu
dDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwg
aXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+
c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgICAgICBpZiAoZW50cnktPmhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFn
ZUNhcCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNh
Y2hlRW50cnk6IFJlc291cmNlIGhhcyByZWFjaGVkIHByZXZhbGVudCByZXNvdXJjZSBhZ2UgY2Fw
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCki
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJh
bWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJl
c291cmNlIGhhcyByZWFjaGVkIHByZXZhbGVudCByZXNvdXJjZSBhZ2UgY2FwIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAg
ICAgICAgICAgIG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24gPSBXVEZNb3ZlKGVu
dHJ5KTsKICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0ID0g
b3JpZ2luYWxSZXF1ZXN0KCk7CiAgICAgICAgICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQo
V1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgRmlyc3RMb2FkOjpZZXMpOwpAQCAtMjQxLDIx
ICsyNDEsMjEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRy
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIH0KICNlbmRpZgogICAg
ICAgICBpZiAoZW50cnktPnJlZGlyZWN0UmVxdWVzdCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IEhhbmRsaW5nIHJlZGlyZWN0IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IEhhbmRs
aW5nIHJlZGlyZWN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hy
b25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2Uo
KSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+ZGlzcGF0Y2hXaWxsU2Vu
ZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZW50cnkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobG9hZGVyLT5tX3Bh
cmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gJiYgIWVudHJ5LT5yZXNwb25zZSgpLmNlcnRp
ZmljYXRlSW5mbygpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRy
aWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgY2VydGlmaWNh
dGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAg
ICAgICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXF1ZXN0KSwgRmlyc3RM
b2FkOjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChl
bnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkgfHwgcmVxdWVzdC5jYWNoZVBvbGljeSgpID09IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZWZyZXNoQW55Q2FjaGVEYXRhKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFZh
bGlkYXRpbmcgY2FjaGUgZW50cnkgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwg
aXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwg
aXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJl
dHJpZXZlQ2FjaGVFbnRyeTogVmFsaWRhdGluZyBjYWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAg
ICAgICBsb2FkZXItPnZhbGlkYXRlQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmV0cmlldmVDYWNoZUVudHJ5OiBSZXRyaWV2ZWQgcmVzb3VyY2UgZnJvbSBjYWNoZSAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJldHJpZXZlZCByZXNv
dXJjZSBmcm9tIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3lu
Y2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3Vy
Y2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgbG9hZGVyLT5kaWRSZXRyaWV2ZUNhY2hl
RW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAgIH0pOwogfQpAQCAtMjYzLDcgKzI2Myw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2FkIGxvYWQpCiB7CiAg
ICAgaWYgKGxvYWQgPT0gRmlyc3RMb2FkOjpZZXMpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2Ug
PSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3Vy
Y2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
c3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNT
eW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5z
aW9ucygpOwogCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAg
ICB9CiAgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikgewogICAgICAgICBXVEZMb2dBbHdheXMoIkF0
dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiAoaWQ9JSIgUFJJ
dTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgcGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vzc2lv
bklEKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydE5ldHdv
cmtMb2FkOiBBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xvYWQgd2l0aCBhIHNlc3Npb24g
dGhhdCBkb2VzIG5vdCBleGlzdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzZXNzaW9uSUQ9JSIgUFJJdTY0ICIp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0
dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMg
bm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgcGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwog
ICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubG9nRGlhZ25vc3RpY01lc3Nh
Z2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlz
OjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW52
YWxpZFNlc3Npb25JREtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICAgICAg
ZGlkRmFpbExvYWRpbmcoaW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgIHBh
cmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CiAgICAgbV9uZXR3b3JrTG9hZCA9
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbV9jb25uZWN0aW9uLT5ibG9i
UmVnaXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IGRlc2NyaXB0aW9uID0gJXtwdWJsaWN9cykiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xv
YWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1
YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX25ldHdvcmtMb2FkLT5kZXNj
cmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y2xlYW51cChMb2FkUmVzdWx0IHJlc3VsdCkKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cChMb2FkUmVzdWx0IHJlc3VsdCkKIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnZlcnRUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxv
YWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKLSAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiQ29udmVydGluZyBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIgJXAgdG8gZG93bmxvYWQgJSIgUFJJdTY0ICIgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCB0aGlzLCBkb3dubG9hZElELmRvd25sb2FkSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsK
KyAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiQ29udmVydGluZyBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIgJXAgdG8gZG93bmxvYWQgJSIgUFJJdTY0ICIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCBkb3du
bG9hZElELmRvd25sb2FkSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgIAog
ICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgcmVzb3VyY2UgY2FtZSBmcm9tIHRoZSBkaXNr
IGNhY2hlLgogICAgIGlmICghbV9uZXR3b3JrTG9hZCkgewpAQCAtMzQwLDcgKzM0MCw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFib3J0OiBDYW5jZWxpbmcg
cmVzb3VyY2UgbG9hZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsCi0gICAgICAgIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7
CisgICAgICAgIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKIAogICAgIGlmIChtX3BhcmFt
ZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUgJiYgbV9yZXNwb25zZS5pc051bGwoKSAmJiAhbV9pc0tl
cHRBbGl2ZSkgewogICAgICAgICBtX2lzS2VwdEFsaXZlID0gdHJ1ZTsKQEAgLTM4NCwxMiArMzg0
LDEyIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9y
WEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIHhGCiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0
aW9uc0NvbmZsaWN0OiB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAiTXVsdGlwbGUg
J1gtRnJhbWUtT3B0aW9ucycgaGVhZGVycyB3aXRoIGNvbmZsaWN0aW5nIHZhbHVlcyAoJyIgKyB4
RnJhbWVPcHRpb25zICsgIicpIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5zdHJp
bmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInLiBGYWxsaW5nIGJhY2sgdG8gJ0RFTlkn
LiI7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdl
IHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNh
c2UgWEZyYW1lT3B0aW9uc0ludmFsaWQ6IHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9
ICJJbnZhbGlkICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlciBlbmNvdW50ZXJlZCB3aGVuIGxvYWRp
bmcgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJzogJyIgKyB4
RnJhbWVPcHRpb25zICsgIicgaXMgbm90IGEgcmVjb2duaXplZCBkaXJlY3RpdmUuIFRoZSBoZWFk
ZXIgd2lsbCBiZSBpZ25vcmVkLiI7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkg
fSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICB9CkBAIC00MTYsNyArNDE2LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1l
T3B0aW8KICAgICAgICAgU3RyaW5nIHhGcmFtZU9wdGlvbnMgPSBtX3Jlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6WEZyYW1lT3B0aW9ucyk7CiAgICAgICAgIGlmICgheEZy
YW1lT3B0aW9ucy5pc051bGwoKSAmJiBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9u
cyh4RnJhbWVPcHRpb25zLCByZXNwb25zZS51cmwoKSkpIHsKICAgICAgICAgICAgIFN0cmluZyBl
cnJvck1lc3NhZ2UgPSAiUmVmdXNlZCB0byBkaXNwbGF5ICciICsgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQg
c2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICciICsgeEZyYW1lT3B0aW9ucyArICInLiI7Ci0gICAg
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1l
c3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICB9CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1l
T3B0aW8KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaHR0cFN0YXR1c0NvZGUgPSAlZCwg
bGVuZ3RoID0gJSIgUFJJZDY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCByZWNlaXZlZFJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIiwgaHR0cFN0YXR1c0NvZGUgPSAlZCwgbGVuZ3RoID0gJSIgUFJJZDY0ICIpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSwgcmVjZWl2ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7CiAKICAgICBt
X3Jlc3BvbnNlID0gV1RGTW92ZShyZWNlaXZlZFJlc3BvbnNlKTsKIApAQCAtNTA1LDcgKzUwNSw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCi0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVj
ZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2Vpdmlu
ZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAg
IG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXItPnNpemUoKTsKIAogICAgIEFTU0VSVCghbV9j
YWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXAKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
bGVuZ3RoID0gJXpkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9udW1CeXRlc1JlY2VpdmVkKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBsZW5ndGggPSAlemQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNS
ZWNlaXZlZCk7CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
KCkpCiAgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJp
Y3MoaWRlbnRpZmllcigpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwpAQCAtNTY5LDcgKzU2OSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGYWlsTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRGYWlsTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNUaW1lb3V0
ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGlzQWNjZXNzQ29udHJvbCA9ICVkLCBlcnJDb2Rl
ID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5j
ZWxsYXRpb24oKSwgZXJyb3IuaXNBY2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgpKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsTG9hZGluZzogKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGlzQWNjZXNzQ29udHJvbCA9
ICVkLCBlcnJDb2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGVycm9yLmlz
VGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5pc0FjY2Vzc0NvbnRyb2wo
KSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU5ldHdvcmtMb2Fk
SW5mb3JtYXRpb24oaWRlbnRpZmllcigpKTsKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdAogICAgICAgICB9CiAgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiY29udGludWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVdpbGxTZW5kUmVx
dWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAKICAg
ICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHM7CiAKQEAgLTk4OCw2ICs5ODgsMTEgQEAgc3RhdGljIFN0cmluZyBlc2Nh
cGVJREZvckpTT04oY29uc3QgT3B0aW9uYWw8dWludDY0X3Q+JiB2YWx1ZSkKICAgICByZXR1cm4g
dmFsdWUgPyBTdHJpbmc6Om51bWJlcih2YWx1ZS52YWx1ZSgpKSA6IFN0cmluZygiTm9uZSJfcyk7
CiB9OwogCitzdGF0aWMgU3RyaW5nIGVzY2FwZUlERm9ySlNPTihjb25zdCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4mIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA/IFN0cmluZzo6bnVtYmVy
KHZhbHVlLT50b1VJbnQ2NCgpKSA6IFN0cmluZygiTm9uZSJfcyk7Cit9OworCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogewogICAgIEFT
U0VSVChzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sIHNlc3Npb25JRCgp
KSk7CkBAIC05OTgsNyArMTAwMyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbigpIGNvbnN0CiAgICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25u
ZWN0aW9uLCAiTmV0d29ya1Jlc291cmNlTG9hZGVyIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2
b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVzdCgpLmZp
cnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVz
dCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZl
cnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBpZGVudGlmaWVyKCkpOwogfQogCi1zdGF0aWMg
dm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dl
ZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5m
b3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50
aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25J
RCgpKSk7CiAKQEAgLTEwMjUsNyArMTAzMCw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29r
aWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvCiAj
dW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5m
b3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJu
YWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlk
ZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9n
Q29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Np
b25JRCgpKSk7CiAKQEAgLTEwODYsNyArMTA5MSw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
CiAjdW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmpl
Y3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBp
ZGVudGlmaWVyKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0
aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAg
IEFTU0VSVChzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggYThhMzAwNWMxNDIuLmE4
ZjZkMzE1Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5zZXNzaW9u
SUQ7IH0KICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRDsgfQotICAgIHVpbnQ2NF90IHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KKyAgICBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlEOyB9CiAKICAgICBzdHJ1Y3QgU3luY2hyb25vdXNMb2FkRGF0YTsKIApAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyBib29sIHNob3VsZExvZ0Nv
b2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgUEFM
OjpTZXNzaW9uSUQmKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZv
aWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZp
ZXIpOworICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2Vk
T2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVy
KTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNhYmxlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NDYXB0
dXJlKCkgeyBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggOTdlMGIyNDQw
NzguLjU1M2NiYWQxOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwCkBAIC00NSw0MCArNDUsNDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9pZGVudGlm
aWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29s
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZl
UmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVj
ZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEg
eyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3Ro
IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiBmb3JtRGF0YSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9p
ZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1E
YXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIHsKICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRl
bnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNo
OjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogewogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRj
aDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVu
dGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IGVycm9yIH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkTm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0
Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFu
ZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
Tm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApp
bmRleCBkMzJjZDQ2Mzg5ZS4uOTFmZGM3MTU5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2Vy
dmkKICAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0
aW9uSUQoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogICAgIGlmICghd29y
a2VyKSB7CiAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIC0+IERpZE5vdEhhbmRsZSBi
ZWNhdXNlIG5vIGFjdGl2ZSB3b3JrZXIiLCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRj
aElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8gc2VydmljZVdv
cmtlcklkZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKTsKQEAgLTE3MCwxMyArMTcwLDEz
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAKICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CiAg
ICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSB3
b3JrZXIgZGlkIG5vdCBiZWNvbWUgYWN0aXZhdGVkIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsg
fSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAgbV9jb250ZW50Q29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RI
YW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgYXV0byogd29ya2VyID0gc2VydmVyKCkud29ya2VyQnlJRChzZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7CiAgICAgICAgIGlmICghd29ya2VyKSB7Ci0gICAgICAgICAgICBt
X2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAg
ICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgc2VydmkKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLnN0YXJ0RmV0Y2gobV9zZXNzaW9u
SUQsIG1fY29udGVudENvbm5lY3Rpb24uZ2V0KCksIHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0Y2hJ
ZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9y
bURhdGEsIHJlZmVycmVyKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
U1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0
Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRvIHJ1
biBzZXJ2aWNlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUg
eyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMDAzOTQ1MDUzZjUuLjBiZWQ2OTc2OTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5jcHAKQEAgLTQ5NCw3ICs0OTQsNyBAQCBTdG9yYWdlTWFuYWdlcjo6flN0
b3JhZ2VNYW5hZ2VyKCkKIHsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcykKIHsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSUQsIHF1b3RhSW5CeXRlc10oKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5zKHN0
b3JhZ2VOYW1lc3BhY2VJRCkpCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFj
ZUlELAogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKQordm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIHN0
b3JhZ2VOYW1lc3BhY2VJRCkKIHsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSURdIHsKICAgICAgICAg
QVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5zKHN0b3JhZ2VOYW1lc3Bh
Y2VJRCkpOwpAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCiAgICAg
fSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5l
Y3Rpb24mIGFsbG93ZWRDb25uZWN0aW9uKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dl
ZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihQYWdlSWRlbnRpZmllciBzdG9yYWdl
TmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlvbiYgYWxsb3dlZENvbm5lY3Rpb24pCiB7CiAgICAg
YXV0byBhbGxvd2VkQ29ubmVjdGlvbklEID0gYWxsb3dlZENvbm5lY3Rpb24udW5pcXVlSUQoKTsK
ICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBhbGxvd2VkQ29ubmVjdGlvbklELCBzdG9yYWdlTmFtZXNwYWNlSURdKCkgbXV0YWJsZSB7
CkBAIC01MjMsNyArNTIzLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dlZFNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbih1aW50NjRfdCBzdG9yYWcKICAgICB9KTsKIH0K
IAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlQ29ubmVjdGlvbih1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlv
biYgYWxsb3dlZENvbm5lY3Rpb24pCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2Vk
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VO
YW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKIHsKICAgICBh
dXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVjdGlvbi51bmlxdWVJRCgpOwog
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3BhY2VJRF0oKSBtdXRhYmxlIHsK
QEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0bwogICAgIH0pOwogfQog
Ci12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKQor
dm9pZCBTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlSWRl
bnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFBhZ2VJZGVudGlmaWVyIG5ld1N0b3JhZ2VOYW1l
c3BhY2VJRCkKIHsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSUQsIG5ld1N0b3JhZ2VOYW1lc3BhY2VJ
RF0gewogICAgICAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlE
KTsKQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xv
c2VDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICAgICAgZm9yIChh
dXRvJiBwYWlyIDogY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmUpCiAgICAg
ICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUocGFpcik7CiAKLSAgICAg
ICAgVmVjdG9yPHVpbnQ2NF90PiBzZXNzaW9uU3RvcmFnZU5hbWVTcGFjZUlEc1RvUmVtb3ZlOwor
ICAgICAgICBWZWN0b3I8UGFnZUlkZW50aWZpZXI+IHNlc3Npb25TdG9yYWdlTmFtZVNwYWNlSURz
VG9SZW1vdmU7CiAgICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBt
X3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcykgewogICAgICAgICAgICAgaWYgKHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlLnZhbHVlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5jb250YWlucyhjb25uZWN0
aW9uSUQpKQogICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5y
ZW1vdmVBbGxvd2VkQ29ubmVjdGlvbihjb25uZWN0aW9uSUQpOwpAQCAtNzc5LDcgKzc3OSw3IEBA
IHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3Rv
cmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0
YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSkKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9u
LnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZUlELCBzZWN1cml0eU9y
aWdpbkRhdGEgPSBzZWN1cml0eU9yaWdpbkRhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpLCBzdG9yYWdlTWFwSUQs
IHN0b3JhZ2VOYW1lc3BhY2VJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVy
VHlwZT4oc3RvcmFnZU5hbWVzcGFjZUlEKSwgc2VjdXJpdHlPcmlnaW5EYXRhID0gc2VjdXJpdHlP
cmlnaW5EYXRhLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9pc0Vw
aGVtZXJhbCkgewogICAgICAgICAgICAgbV9lcGhlbWVyYWxTdG9yYWdlLmFkZChzZWN1cml0eU9y
aWdpbkRhdGEsIFdlYkNvcmU6OlN0b3JhZ2VNYXA6OmNyZWF0ZShsb2NhbFN0b3JhZ2VEYXRhYmFz
ZVF1b3RhSW5CeXRlcykpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAppbmRl
eCBhODg4MzMyZWZjZi4uNWU2NWU1MDM4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTUwLDExICs1MSwx
MSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB+U3RvcmFnZU1hbmFnZXIoKTsK
IAotICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotICAgIHZvaWQgZGVzdHJveVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAg
dm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVB
bGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCBjbG9uZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgbmV3U3Rv
cmFnZU5hbWVzcGFjZUlEKTsKKyAgICB2b2lkIGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgdW5zaWduZWQgcXVv
dGFJbkJ5dGVzKTsKKyAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIHZvaWQgYWRkQWxs
b3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVt
b3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlvbiYpOworICAgIHZv
aWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBz
dG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG5ld1N0b3JhZ2VOYW1l
c3BhY2VJRCk7CiAKICAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uJik7CiAgICAgdm9pZCB3YWl0VW50aWxXcml0ZXNGaW5pc2hlZCgpOwpAQCAtMTA3LDcg
KzEwOCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dWludDY0X3QsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4sIFJlZlB0cjxUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2U+PiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXM7CiAKICAgICBjbGFzcyBT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKIAogICAgIEhhc2hNYXA8c3RkOjpw
YWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiwgUmVmUHRyPFN0b3JhZ2VB
cmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGM3ZjM4NmIzZDdjLi44
YmJjMTY5Nzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hl
RW50cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlUmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgpAQCAtODQsNyArODUs
NyBAQCBlbnVtIGNsYXNzIFVzZURlY2lzaW9uIHsKICAgICBOb0R1ZVRvRXhwaXJlZFJlZGlyZWN0
CiB9OwogCi11c2luZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPHVpbnQ2NF90IC8qd2ViUGFn
ZUlEKi8sIHVpbnQ2NF90IC8qd2ViRnJhbWVJRCovPjsKK3VzaW5nIEdsb2JhbEZyYW1lSUQgPSBz
dGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IC8qd2ViRnJhbWVJRCov
PjsKIAogY2xhc3MgQ2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZT4gewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oCmluZGV4IDk2NWM2ZmE2NjRiLi4yZGQwZTdkNDZiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwog
Y2xhc3MgTmV0d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNr
IHsKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9u
LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJD
b3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpD
b250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwg
Ym9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0
T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2
aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5
VHJhY2tlcikKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtT
ZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwg
Ym9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwg
cmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxk
Q29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNr
SXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKSk7CiAgICAg
fQpAQCAtNzAsMTIgKzcwLDEyIEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcygpIHsgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNz
OyB9CiAKICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUlEOyB9
OwotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9OworICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6Ci0gICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0
YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPik7CisgICAgTmV0d29ya0RhdGFU
YXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNv
bnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xp
Y3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29u
bmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFs
PE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1
dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2ll
c0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJlcXVlc3Qq
JiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25p
ZmYpOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1VSTFNlc3Np
b25EYXRhVGFzaz4gbV90YXNrOwogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBtX25l
dHdvcmtMb2FkTWV0cmljczsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQ7Ci0gICAgdWludDY0X3Qg
bV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGJvb2wgbV9oYXNCZWVuU2V0VG9V
c2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmlu
ZGV4IDM1ZTQ0M2I5ZWU5Li4yOGEwNWU4MGRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0x
NjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFza1dpdGhGaXJzdFBhcnR5Rm9yU2Ft
ZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0YXMKICNlbmRpZgogfQogCi1OZXR3
b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNl
c3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdv
cmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tD
bGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0
aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZm
LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9y
TWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0
d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGll
bnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZy
YW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdlSUQo
cGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3Jr
RGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAgICAg
aWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
ICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmss
ICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlE
ID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogQmxvY2tpbmcgY29va2llcyBm
b3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNr
IHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5n
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2llSW5mb3JtYXRp
b246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IEJsb2NraW5n
IGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCAo
dW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lv
biwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRp
Zmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAjZW5kaWYK
QEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAgIGJvb2wgc2hv
dWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcyB8fCBt
X3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNob3VsZEJsb2NrQ29va2llcyhyZXF1
ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICBS
RUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0g
TmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29r
aWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVs
dTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQsIG1fZnJh
bWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIChzaG91bGRCbG9j
a0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1ZXN0LnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0g
JWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJl
Y3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgbV9mcmFtZUlELCAodW5zaWdu
ZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29va2llcyA/ICJC
bG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgJXMgY29va2ll
cyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIChzaG91bGRC
bG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1ZXN0LnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBAIC0zNzksNyArMzc5LDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3VsZEJsb2NrQ29va2llcykgewogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dD
b29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9
ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IE5vdCBwYXJ0aXRpb25pbmcgY29v
a2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQsIG1fZnJhbWVJRCwgKHVu
c2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0g
JWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogTm90IHBhcnRpdGlvbmluZyBjb29r
aWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBtX2Zy
YW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICAgICAgTE9HKE5ldHdvcmtT
ZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMgZm9yIHJlZGlyZWN0IFVSTCAl
cyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
aW5kZXggYzRmYjAwYjA4M2MuLjA4MzQ4ZDJjOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCkBAIC0xODYsNiArMTg2LDE4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRXaXRoUmVwbHkoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIEZ1bmN0aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlv
bjx2b2lkKE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6UmVwbHk+OjpU
eXBlPik+JiYgcmVwbHlIYW5kbGVyKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNl
bmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRp
b25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9u
PiB3YWl0Rm9yT3B0aW9ucyA9IHsgfSk7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8
VT4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VD4oV1RGTW92ZShtZXNzYWdlKSwgZGVzdGlu
YXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQorICAgIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJ
bW1lZGlhdGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGlt
ZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+KGRlc3Rp
bmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAgIH0KIAog
ICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8
U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHko
dWludDY0X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIEZ1bmN0aW9uRGlz
cGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPik+JiYgcmVwbHlIYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01l
c3NhZ2VTZW5kZXIuaAppbmRleCBkNWY5ODFlNDUzNC4uM2Q2ZjM0Mjg5MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTM0LDkgKzM0LDkgQEAgY2xh
c3MgTWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVzc2FnZVNlbmRlcigp
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2Up
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9w
dGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzZW5kKG1lc3NhZ2UsIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCksIHsgfSk7Cisg
ICAgICAgIHJldHVybiBzZW5kKG1lc3NhZ2UsIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCks
IHNlbmRPcHRpb25zKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNl
bmQoY29uc3QgVSYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNl
bmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQpAQCAtNDgsNiArNDgsMTIgQEAgcHVibGljOgog
ICAgICAgICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNl
bmRPcHRpb25zKTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5h
bWUgVD4KKyAgICBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxU
PiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0p
CisgICAgeworICAgICAgICByZXR1cm4gc2VuZDxVPihtZXNzYWdlLCBkZXN0aW5hdGlvbklELnRv
VUludDY0KCksIHNlbmRPcHRpb25zKTsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVw
bHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQpAQCAtNjUsOCArNzEsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kU3luYyhX
VEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwg
c2VuZFN5bmNPcHRpb25zKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZS4uLiBBcmdzPgotICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+CisgICAgdm9pZCBzZW5kV2l0aEFzeW5j
UmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAg
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
aW5kZXggNTI1MTQ5MDJhYmIuLjViOTc1MzAzMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIwNSw2ICsyMDUsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJh
dGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogICAgICAgICAnU3RyaW5nJywKICAgICAgICAg
J1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAn
V2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAgICAgJ1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcAppbmRleCBhNmEwMDk5NTUwMC4uZTYw
NWE0NTk0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAK
QEAgLTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBhZ2VIYW5kbGU+
IFBhZ2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhhbmRsZT4gUGFn
ZUhhbmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsKIH0KIAotUmVm
PFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVpbnQ2NF90IHBh
Z2VJRCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29udmVydGluZyhX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6UGFnZUhhbmRs
ZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VIYW5kbGU6OlBh
Z2VIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlzQXV0b2NvbnZl
cnRpbmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2NvbnZlcnRpbmco
aXNBdXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBhZ2VIYW5kbGU6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFnZUhhbmRsZTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsK
LSAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQor
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgZGVjb2Rl
ciA+PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQXV0
b2NvbnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBpc0F1
dG9jb252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNyZWF0ZShwYWdl
SUQpOworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRvY29udmVydGlu
ZygqcGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFmYmRjMzEuLjZh
MWNmYjY5ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQVBJUGFnZUhhbmRsZV9oCiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTM4LDIwICszOSwyMCBAQCBuYW1lc3Bh
Y2UgQVBJIHsKIAogY2xhc3MgUGFnZUhhbmRsZSA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6
VHlwZTo6UGFnZUhhbmRsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4g
Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgc3RhdGljIFJlZjxQYWdlSGFuZGxlPiBjcmVh
dGVBdXRvY29udmVydGluZyh1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBSZWY8UGFnZUhh
bmRsZT4gY3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFBh
Z2VIYW5kbGU+IGNyZWF0ZUF1dG9jb252ZXJ0aW5nKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
ICAgICB2aXJ0dWFsIH5QYWdlSGFuZGxlKCk7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgYm9vbCBpc0F1dG9jb252ZXJ0aW5n
KCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dG9jb252ZXJ0aW5nOyB9CiAKICAgICB2b2lkIGVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNv
ZGVyJiwgUmVmUHRyPE9iamVjdD4mKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQYWdlSGFu
ZGxlKHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBpc0F1dG9jb252ZXJ0aW5nKTsKKyAgICBQYWdlSGFu
ZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBib29sIGlzQXV0b2NvbnZlcnRpbmcpOwogCi0g
ICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9wYWdlSUQ7CiAgICAgY29uc3QgYm9vbCBtX2lzQXV0b2NvbnZlcnRpbmc7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RS
ZWdpc3RyeS5oCmluZGV4IDg2ZjgwNDE3MDlhLi40MDQwODE3ODAwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUg
IlByb2Nlc3NUaHJvdHRsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtPYmpDUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTczLDcgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICBGdW5jdGlvbjx2b2lkKCk+IG1fbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeTsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbj4gbV9wZW5kaW5nUmVwbGllczsKICAgICBib29sIG1faXNSZWdpc3RlcmVkQXNNZXNzYWdl
UmVjZWl2ZXIgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fbWVzc2FnZVJlY2VpdmVySUQgeyAw
IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9tZXNzYWdlUmVjZWl2ZXJJRDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCmluZGV4IDU4Y2IxZGQy
YjVlLi43ZTk3ZjE3NmMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgsNyArMjgsNyBAQAog
CiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAotLSAoaWQpX2luaXRX
aXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBhZ2VJRDooV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0gKGlkKV9pbml0V2l0
aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFzaAogewotICAgIHJl
dHVybiBfcGFnZUlEOworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7CiB9CiAKIC0gKEJP
T0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJPT0wpaXNFcXVhbDoo
aWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIHsK
LSAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdlSUQiXTsKKyAgICBb
Y29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpAInBhZ2VJRCJdOwog
fQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAgLTYxLDcgKzYxLDcg
QEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcGFnZUlEID0gW2Nv
ZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJRCA9IG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2NvZGVyIGRlY29kZUlu
dDY0Rm9yS2V5OkAicGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250
ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYS4uNDNlNDFlMjRjZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhh
bmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaApAQCAtMjQsMTEgKzI0LDEyIEBACiAgKi8KIAog
I2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KIAogQGludGVyZmFjZSBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAoKQog
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlciA9IF9wYWdlSUQpIHVpbnQ2
NF90IHBhZ2VJRDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9wYWdl
SUQpIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKIAotLSAoaWQpX2luaXRXaXRoUGFn
ZUlEOih1aW50NjRfdClwYWdlSUQ7CistIChpZClfaW5pdFdpdGhQYWdlSUQ6KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKXBhZ2VJRDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4
IGViOGEwYjY2MTdhLi5kNGUxYzI1MDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAt
NjYsNyArNjYsNyBAQCBJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuICptX2Rlc3RpbmF0aW9uSUQ7CisgICAgcmV0dXJuIG1fZGVzdGluYXRpb25JRC0+
dG9VSW50NjQoKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y2FuTWFr
ZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgcmVwbHkpCkBAIC04NCw3
ICs4NCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om9wZW5QYXltZW50U2V0
dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpCiAgICAgcGxhdGZvcm1PcGVuUGF5bWVu
dFNldHVwKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5
bWVudFVJKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hv
d1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byYg
Y29vcmRpbmF0b3IgPSBhY3RpdmVQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpKQogICAgICAgICBj
b29yZGluYXRvci0+ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
CmluZGV4IGQyMzdlYWIzZGFiLi42ZTRhODVjZjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChj
b25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHNob3dQYXltZW50
VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
b3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0
cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzaG93UGF5bWVudFVJKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlu
a0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY29tcGxl
dGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lv
biYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAgICB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5n
Q29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBDbGllbnQmIG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2Rlc3RpbmF0
aW9uSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fZGVzdGluYXRp
b25JRDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90aGlu
ZydzIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggZGQzMTMxMjdiZjQuLjFkZTRjZGRjZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMzAsNyArMzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSB7CiAgICAgQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoU3RyaW5n
IG1lcmNoYW50SWRlbnRpZmllciwgU3RyaW5nIGRvbWFpbk5hbWUsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gKGJvb2wgY2FuTWFrZVBheW1lbnRzKSBBc3luYwogICAgIE9wZW5QYXltZW50
U2V0dXAoU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllciwgU3RyaW5nIGRvbWFpbk5hbWUpIC0+IChi
b29sIHJlc3VsdCkgQXN5bmMKIAotICAgIFNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRp
b25JRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJp
bmcsIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+IChib29sIHJlc3VsdCkgU3lu
Y2hyb25vdXMKKyAgICBTaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJM
U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQp
IFN5bmNocm9ub3VzCiAgICAgQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oV2ViQ29yZTo6UGF5
bWVudE1lcmNoYW50U2Vzc2lvbiBwYXltZW50TWVyY2hhbnRTZXNzaW9uKQogICAgIENvbXBsZXRl
U2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RV
cGRhdGU+IHVwZGF0ZSkKICAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRp
b25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+IHVwZGF0ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuY3BwCmluZGV4IDZlYjMzNWYwN2QzLi45ZGViNzZmZjEzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHVpbnQ2NF90IEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6YWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdlJiYgY2hhbGxlbmdl
CiAgICAgcmV0dXJuIGNoYWxsZW5nZUlEOwogfQogCi1ib29sIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6c2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjaGFs
bGVuZ2VJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgY29uc3QK
K2Jvb2wgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZShQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBjb25zdAogewogICAgIGlmICghY2FuQ29hbGVzY2VD
aGFsbGVuZ2UoY2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA4LDcgKzEw
OCw3IEBAIFZlY3Rvcjx1aW50NjRfdD4gQXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb2FsZXNjZUNo
YWxsZW5nZXNNYXRjaGluZyh1aW50NjRfdCBjaGFsCiAgICAgcmV0dXJuIGNoYWxsZW5nZXNUb0Nv
YWxlc2NlOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocGFnZUlEKTsKICAgICBBU1NF
UlQoZnJhbWVJRCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHUK
IAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgdWludDY0X3QgZHVt
bXlQYWdlSUQgPSAwOworICAgIFBhZ2VJZGVudGlmaWVyIGR1bW15UGFnZUlEOwogICAgIHVpbnQ2
NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoeyBkdW1teVBhZ2VJ
RCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0p
OwogICAgIAogICAgIC8vIENvYWxlc2NlIGNoYWxsZW5nZXMgaW4gdGhlIHNhbWUgcHJvdGVjdGlv
biBzcGFjZSBhbmQgaW4gdGhlIHNhbWUgcGFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKaW5kZXgg
N2ZlMzk5ZTBiN2UuLjg2ZTc0NGMxMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQ
Qzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2b2lkIGNv
bXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik7CkBA
IC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hhbGxlbmdl
IHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNo
YWxsZW5nZTsKICAgICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhh
bmRsZXI7CiAgICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwog
CiAgICAgdWludDY0X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdlJiYpOwot
ICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBj
b25zdDsKKyAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gY29hbGVzY2VDaGFs
bGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0NzVkYzIuLjE5MjUzZTJiYWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCkBAIC02Miw2ICs2Miwx
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAg
ICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpNZXNz
YWdlUmVjZWl2ZXImKTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lk
IGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2Vp
dmVyJiByZWNlaXZlcikKKyAgICB7CisgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKKyAgICB9
CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0
SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAgIHsKKyAgICAgICAgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7
CisgICAgfQogCiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgKaW5kZXggNGY3NWZkODA2ZjYu
LjU0ZDQyNzdiODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCkBA
IC0yOSwxMyArMjksMTQgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50SWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBUZXh0SW5wdXRDb250ZXh0IHsKICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgYm91bmRpbmdSZWN0OwogCi0gICAgdWludDY0X3Qgd2ViUGFnZUlkZW50
aWZpZXI7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlkZW50aWZpZXI7CiAg
ICAgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcjsKICAgICBX
ZWJDb3JlOjpFbGVtZW50SWRlbnRpZmllciBlbGVtZW50SWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCA5ZGJiMzZh
NDU1My4uZDkwMGExNjczM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVt
PiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
JiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitSZWY8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBwYWdlSUQpKTsKIH0KIAot
V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90IHBhZ2VJ
RCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2xhc3RQcm9jZXNzSWRl
bnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDg3MmVmMTgw
OTVkLi5iYTM0NDgwY2Q1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBT
dXNwZW5kZWRQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExpc3RJdGVt
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVh
dGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3Rh
dGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKCk7CiAKICAgICBzdGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSog
aXRlbUZvcklEKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKQEAg
LTU0LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYgaXRlbUlEKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtU3RhdGUuaWRlbnRp
ZmllcjsgfQogICAgIGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRlbVN0YXRlKCkg
eyByZXR1cm4gbV9pdGVtU3RhdGU7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBsYXN0UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xhc3RQcm9jZXNzSWRl
bnRpZmllcjsgfQogICAgIHZvaWQgc2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKGNvbnN0IFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IG1fbGFzdFByb2Nlc3NJZGVudGlm
aWVyID0gaWRlbnRpZmllcjsgfQpAQCAtODEsMTIgKzgyLDEyIEBAIHB1YmxpYzoKICNlbmRpZgog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgZXhwbGljaXQgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZW1vdmVTdXNwZW5kZWRQYWdlRnJvbVByb2Nlc3NQ
b29sKCk7CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7Ci0gICAg
dWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7
CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7
CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVkUGFnZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CmluZGV4IGU5ZGE2MGFlZWJlLi42OTk0ODI1ZDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
dm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdXNlckFnZW50OwogICAgIGVuY29kZXIgPDwgaXRl
bVN0YXRlczsKICAgICBlbmNvZGVyIDw8IHNlc3Npb25JRDsKLSAgICBlbmNvZGVyIDw8IHVzZXJD
b250ZW50Q29udHJvbGxlcklELnRvVUludDY0KCk7CisgICAgZW5jb2RlciA8PCB1c2VyQ29udGVu
dENvbnRyb2xsZXJJRDsKICAgICBlbmNvZGVyIDw8IHZpc2l0ZWRMaW5rVGFibGVJRDsKICAgICBl
bmNvZGVyIDw8IHdlYnNpdGVEYXRhU3RvcmVJRDsKICAgICBlbmNvZGVyIDw8IGNhblJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbDsKQEAgLTE5MywxMSArMTkzLDExIEBAIE9wdGlvbmFsPFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNlc3Npb25JRCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4g
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBPcHRpb25hbDxVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICAgICBpZiAo
IXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgcGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJRCA9IG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CisgICAgcGFyYW1ldGVycy51c2VyQ29udGVudENv
bnRyb2xsZXJJRCA9ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpc2l0ZWRMaW5rVGFibGVJRCkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0zOTIsNyArMzkyLDcgQEAgT3B0aW9uYWw8V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQ
Qzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmJh
Y2tncm91bmRDb2xvciA9IFdURk1vdmUoKmJhY2tncm91bmRDb2xvcik7CiAKLSAgICBPcHRpb25h
bDxPcHRpb25hbDx1aW50NjRfdD4+IG9sZFBhZ2VJRDsKKyAgICBPcHRpb25hbDxPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4+IG9sZFBhZ2VJRDsKICAgICBkZWNvZGVyID4+IG9sZFBhZ2VJRDsKICAg
ICBpZiAoIW9sZFBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBjMmJl
ODQxNDZiMy4uOTAxMjdiYzMxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGJhY2tncm91bmRD
b2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7CisgICAgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAppbmRleCA5
NjM5ZDAxNWMyZi4uNGQxY2NlYTY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VHcm91cERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VH
cm91cERhdGEuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHZvaWQgV2ViUGFnZUdyb3VwRGF0YTo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IGlkZW50
aWZpZXI7CiAgICAgZW5jb2RlciA8PCBwYWdlR3JvdXBJRDsKLSAgICBlbmNvZGVyIDw8IHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIudG9VSW50NjQoKTsKKyAgICBlbmNvZGVyIDw8IHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiB9CiAKIE9wdGlvbmFsPFdlYlBhZ2VHcm91
cERhdGE+IFdlYlBhZ2VHcm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBA
IC00OSwxMiArNDksMTIgQEAgT3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gV2ViUGFnZUdyb3Vw
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXBhZ2VHcm91cElE
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIE9wdGlvbmFsPFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAg
IGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdU
Rk1vdmUoKnBhZ2VHcm91cElEKSwgbWFrZU9iamVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllclR5cGU+KCp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSB9
fTsKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnBhZ2VHcm91
cElEKSwgKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgfX07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNP
YmplY3RHcmFwaC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgu
bW0KaW5kZXggYzY1NDg0ZjU1MTIuLmZlNjZkZTY1OTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KQEAgLTI5OCwxMSArMjk4LDEyIEBAIGJvb2wgT2Jq
Q09iamVjdEdyYXBoOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8aWQ+
JiByZXN1bHQpCiAgICAgfQogCiAgICAgY2FzZSBPYmpDVHlwZTo6V0tCcm93c2luZ0NvbnRleHRI
YW5kbGU6IHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOwotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhZ2VJRCkpCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQ7CisgICAgICAgIGRlY29kZXIgPj4gcGFnZUlEOworICAgICAgICBpZiAoIXBhZ2VJ
RCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXN1bHQgPSBhZG9wdE5T
KFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDpwYWdlSURd
KTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFs
bG9jXSBfaW5pdFdpdGhQYWdlSUQ6KnBhZ2VJRF0pOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGVkODYzNTgyMDFi
Li41OTcwMWExMzQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqCiAgICAgICAgIG1p
bGVzdG9uZXMuYWRkKFdlYkNvcmU6OkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCk7CiAK
ICAgICBpZiAobWlsZXN0b25lcykKLSAgICAgICAgd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVz
KSwgd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7CisgICAgICAgIHdlYlBhZ2VQcm94eS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSk7
CiAKICAgICB3ZWJQYWdlUHJveHktPnNldExvYWRlckNsaWVudChXVEZNb3ZlKGxvYWRlckNsaWVu
dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAxMDc1NzgxYWYyYy4uMmY5Y2ZlOTQy
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBTdHJpbmcgQXV0b21hdGlvbkNvbW1hbmRFcnJvcjo6dG9Qcm90b2NvbFN0cmlu
ZygpCiB7CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2Fp
dEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEKICAgICB9
CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2
aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tz
V2l0aFRpbWVvdXQoSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCiB7CiAgICAgSW5zcGVjdG9yOjpF
cnJvclN0cmluZyB0aW1lb3V0RXJyb3IgPSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFN
RShUaW1lb3V0KTsKICAgICBmb3IgKGF1dG8gaWQgOiBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uaAppbmRleCA2NWViM2U0NmU1Yi4uZjM5YzA2MWI1NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJX
ZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0yMjUsNyArMjI2LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdlKFdlYlBhZ2VQcm94eSYsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3ksIFNlY29uZHMs
IFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+JiYpOwogICAg
IHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5Jiwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25k
cywgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7Ci0g
ICAgdm9pZCByZXNwb25kVG9QZW5kaW5nUGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91
dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6
Q2FsbGJhY2tCYXNlPj4mKTsKKyAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlv
bkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJl
ZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOwogICAg
IHZvaWQgcmVzcG9uZFRvUGVuZGluZ0ZyYW1lTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0
KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpD
YWxsYmFja0Jhc2U+PiYpOwogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoKTsKIApAQCAtMjgwLDIy
ICsyODEsMjIgQEAgcHJpdmF0ZToKICAgICBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2Vu
ZERpc3BhdGNoZXI+IG1fZG9tYWluRGlzcGF0Y2hlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPiBtX2RvbWFpbk5vdGlmaWVyOwog
Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYlBhZ2VIYW5kbGVNYXA7Ci0gICAg
SGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdlYlBhZ2VNYXA7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3RyaW5nPiBtX3dlYlBhZ2VIYW5kbGVNYXA7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX2hhbmRsZVdlYlBh
Z2VNYXA7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fd2ViRnJhbWVIYW5kbGVN
YXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdlYkZyYW1lTWFwOwog
Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29u
dGV4dENhbGxiYWNrc1BlclBhZ2U7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0VhZ2VyTmF2
aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250
ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9w
ZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRl
eHRDYWxsYmFja3NQZXJGcmFtZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZp
Z2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJGcmFtZTsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
Pj4gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6
Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZTsKICNpZiBF
TkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPHVpbnQ2
NF90LCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1f
cGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElP
TlMpCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQ
ZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZv
aWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nTW91c2VFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsKICNlbmRpZgogCiAgICAgdWludDY0X3QgbV9uZXh0
RXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tJRCB7IDEgfTsKQEAgLTMxOSw3ICszMjAsNyBAQCBw
cml2YXRlOgogICAgIC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciBBUElzIHRha2UgYSBzZXQg
b2YgaW5wdXQgc291cmNlcy4gV2UgYWxzbyBpbnRlcm4gdGhlc2UKICAgICAvLyBzbyB0aGF0IHBy
ZXZpb3VzIGlucHV0IHNvdXJjZSBzdGF0ZSBpcyB1c2VkIGFzIGluaXRpYWwgc3RhdGUgZm9yIGxh
dGVyIGNvbW1hbmRzLgogICAgIEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4gbV9p
bnB1dFNvdXJjZXM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERp
c3BhdGNoZXJzQnlQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9J
TlRFUkFDVElPTlMpCiAgICAgLy8gS2VlcCB0cmFjayBvZiBjdXJyZW50bHkgYWN0aXZlIG1vZGlm
aWVycyBhY3Jvc3MgbXVsdGlwbGUga2V5c3Ryb2tlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5kZXggOTg5M2QzOThiNTcuLjRjNmIzZDQy
MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuaApAQCAtNTEsNiArNTEsMTIgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0
PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQ
Qzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmKTsKKyAgICAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2Jq
ZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9u
PiBzZW5kT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIHJldHVybiBzZW5kKFdURk1vdmUo
bWVzc2FnZSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgc2VuZE9wdGlvbnMpOworICAgIH0K
IAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0CiAgICAgewpAQCAtNjcs
NiArNzMsMTggQEAgcHVibGljOgogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNl
aXZlcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAg
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCkpOworICAgIH0KIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICBM
YXVuY2hpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXggZjA1ZDc5YzBkMDEuLjY3MDY1
OTc2ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC01MjcsOTQgKzUyNyw5NCBAQCB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJ
RFJlc3BvbnNlKHVpbnQ2NF90IGNvbgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
UGxheShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
UGF1c2UoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRleHRJZCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY3J1YmJpbmcodWludDY0X3Qg
Y29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNj
cnViYmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElk
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xlcmFuY2VCZWZvcmUsIGRvdWJsZSB0b2xlcmFuY2VBZnRl
cikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFm
dGVyKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwgdGltZSwgdG9sZXJhbmNl
QmVmb3JlLCB0b2xlcmFuY2VBZnRlcikpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkZhc3RTZWVr
KGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1l
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5n
Rm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nRm9yd2FyZChjb250ZXh0SWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRleHRJZCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVu
ZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElk
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdEF1ZGlvTWVk
aWFPcHRpb24oY29udGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
dWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBpY3R1cmVJ
blBpY3R1cmUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoY29udGV4dElkKSk7CiB9
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVNdXRlZCh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11
dGVkKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
c2V0TXV0ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIG11dGVkKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElk
LCBtdXRlZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElkLCBtdXRlZCkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Vm9sdW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0SWQsIHZvbHVtZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4odWludDY0X3Qg
Y29udGV4dElkLCBib29sIHZhbHVlKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0UGxheWluZ09uU2Vj
b25kU2NyZWVuKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRQbGF5aW5n
T25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKQogewogICAgIGlm
IChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVx
dWVzdChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkhhbmRs
ZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7
CiB9CiAKIFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubW0KaW5kZXggNmJhNDc5ZTA2MGEuLmM4ZDY1YzM2MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCkBAIC02MjAsNDMgKzYyMCw0MyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIAogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50
NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJl
cXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhKSk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5saW5lUmVjdChjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KGNvbnRleHRJZCkpOwog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFZpZGVvQ29udGVu
dExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvQ29udGVu
dExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVudExheWVyKGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkKSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1cEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVs
bHNjcmVlbihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsc2NyZWVu
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7
CiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRp
ZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNj
cmVlbihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwogfQog
CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRp
ZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBbQ0FUcmFuc2FjdGlv
biBmbHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmll
d107CiAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0cik7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRDbGVhbnVwRnVsbHNjcmVl
bihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJ
ZCkpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQoY29udGV4
dElkKTsKQEAgLTY4OCwyNSArNjg4LDI1IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlCiAgICAg
ICAgIG1hY2hfcG9ydF9uYW1lX3QgZmVuY2VQb3J0ID0gZmVuY2VTZW5kUmlnaHQubGVha1NlbmRS
aWdodCgpOwogI2VuZGlmCiAKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoY29udGV4dElkLCBmcmFt
ZSwgSVBDOjpBdHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKGNvbnRleHRJZCwgZnJh
bWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSkp
OwogICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVv
TGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oY29udGV4dElk
LCAodW5zaWduZWQpZ3Jhdml0eSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckdyYXZpdHlF
bnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBt
b2RlKQogewogICAgIG1fcGFnZS0+dWlDbGllbnQoKS5oYXNWaWRlb0luUGljdHVyZUluUGljdHVy
ZURpZENoYW5nZShtX3BhZ2UsIG1vZGUgJiBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2Rl
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2RlKSk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTWF5UmV0
dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNWaWV3VmlzaWJs
ZSA9IG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRl
eHRJZCwgaXNWaWV3VmlzaWJsZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXgg
ZjkxNDY4MTFjNTUuLmZjM2VmYmUyNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVy
Zm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50KSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihw
b2ludCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBP
ZkN1cnJlbnRTZWxlY3Rpb24oKQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50
U2VsZWN0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJm
b3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpKTsKIH0KICAgICAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZKQpAQCAtMjY2LDE3ICsyNjYsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlc3VtZVNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlJikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNwZWFraW5nRXJyb3JPY2N1cnJlZChXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCiB7Ci0gICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNwZWFraW5nRXJyb3JPY2N1cnJlZCgpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3BlYWtpbmdFcnJvck9jY3VycmVkKCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Ym91bmRhcnlFdmVudE9jY3VycmVkKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiwgV2ViQ29yZTo6U3BlZWNoQm91bmRhcnkg
c3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkKIHsKLSAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Qm91bmRhcnlFdmVudE9jY3VycmVkKHNwZWVjaEJvdW5kYXJ5
ID09IFdlYkNvcmU6OlNwZWVjaEJvdW5kYXJ5OjpTcGVlY2hXb3JkQm91bmRhcnksIGNoYXJJbmRl
eCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCb3VuZGFyeUV2ZW50
T2NjdXJyZWQoc3BlZWNoQm91bmRhcnkgPT0gV2ViQ29yZTo6U3BlZWNoQm91bmRhcnk6OlNwZWVj
aFdvcmRCb3VuZGFyeSwgY2hhckluZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lj
ZXNEaWRDaGFuZ2UoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpW
b2ljZXNEaWRDaGFuZ2UoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlZvaWNlc0RpZENoYW5nZSgpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRl
eCAyYWE3NDhmMDA0Zi4uMDhhM2QzMDhkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xOTk3LDEzICsxOTk3LDEzIEBAIGZsb2F0IFdlYlZp
ZXdJbXBsOjppbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHZvaWQgV2ViVmll
d0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0
ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIsIHRoaXMsIG1fcGFn
ZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93
RGlkT3JkZXJPblNjcmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1w
bCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAl
bGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJ
bnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlIH0pOwogfQogCkBAIC0yMDcxLDcgKzIwNzEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp3
aW5kb3dEaWRDaGFuZ2VMYXllckhvc3RpbmcoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dE
aWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJW
aWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSIsIHRo
aXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0lt
cGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUiLCB0aGlzLCBt
X3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCkBAIC0yMjM0
LDE5ICsyMjM0LDE5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRDaGFuZ2VCYWNraW5nUHJv
cGVydGllcygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRIaWRlKCkKIHsKLSAgICBMT0co
QWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRIaWRlIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkSGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCku
dG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdE
aWRVbmhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBh
Z2UgJWxsdSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZFVuaGlk
ZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9
CiAKIHZvaWQgV2ViVmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlkQ2hhbmdlKCkKIHsKLSAgICBMT0co
QWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNwYWNlRGlk
Q2hhbmdlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUs
ICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSBhY3RpdmVTcGFjZURpZENoYW5nZSIsIHRoaXMs
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggYjViNGUwYWQy
MjEuLmVjZjVkYTBhOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIERyYXdpbmdBcmVhUHJveHk6OkRyYXdpbmdB
cmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByCiAg
ICAgLCBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZEcmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCkKICNl
bmRpZgogewotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5n
QXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
LCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdp
bmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7
CiB9CiAKIERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAKIGJvb2wgRHJhd2luZ0Fy
ZWFQcm94eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggY2E3
Njg3ZjZiNTIuLmI5MzAxMjg1OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZQogICAgICAg
ICByZXR1cm47CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9u
RGVjaXNpb24oZ2VvbG9jYXRpb25JRCwgYWxsb3dlZCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1p
c3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBhbGxvd2VkKSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShhbGxvd2VkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmluZGV4IDYyYjA3MjlmOGE1Li4wZjQxMDIwZWE3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNw
cApAQCAtNTAsMTkgKzUwLDE5IEBAIEluc3BlY3RvclRhcmdldFByb3h5OjpJbnNwZWN0b3JUYXJn
ZXRQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGFyCiB2b2lkIEluc3Bl
Y3RvclRhcmdldFByb3h5Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBjaGFu
bmVsKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25uZWN0SW5zcGVjdG9yKGlk
ZW50aWZpZXIoKSwgY2hhbm5lbC5jb25uZWN0aW9uVHlwZSgpKSwgbV9wYWdlLnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0b3Io
aWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCYp
CiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3BhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRl
bnRpZmllcigpKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OnNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9wYWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkp
Ci0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZE1l
c3NhZ2VUb1RhcmdldEJhY2tlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRNZXNzYWdl
VG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM0NDNiMzg1ZmFjLi4yZDk5NjZlM2M4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0
dGEKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3Qg
Y2hhbGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0
X3QgY2hhbGxlbmdlSUQpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChh
dXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbV9wcm9jZXNzUG9vbC5zZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChwYWdlSUQpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5j
aGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGlj
TWVzc2FnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBs
ZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uo
cGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1c2UgYnkg
dGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkgYmUgZ29u
ZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC0zODIsNyArMzgyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWUKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZSht
ZXNzYWdlLCBkZXNjcmlwdGlvbiwgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQz
Ml90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5
IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdv
bmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzkzLDcgKzM5Myw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQobWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgc2hvdWxkU2FtcGxlKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUg
dmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJv
eHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNr
IGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFn
ZSBtYXkgYmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC03MzYs
NyArNzM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRHcmFuZGZhdGhlcmVkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXMKICAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRHcmFuZGZhdGhlcmVkKHNlc3Npb25JRCwg
cmVzb3VyY2VEb21haW4sIGlzR3JhbmRmYXRoZXJlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbmZpcm0odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25m
aXJtKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojpub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
RmluaXNoZWQodW5zaWduZWQKICAgICBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0
aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUobWVzc2FnZUJvZHkp
LnB0cigpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb21taXR0ZWRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbW1pdHRlZENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMjBhNzk5OGM0ZGMu
LjJiZWM2OGZkODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCArODEsNiBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAg
ICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdl
SUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBleHBs
aWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBAIC0xMzEsNyArMTI5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYpOwot
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJRCwgRnJhbWVJRCwgY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJt
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGlt
ZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGJvb2wg
ZGVidWdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9u
SUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFp
biYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5h
dmlnYXRlZFRvRG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYs
IGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZv
aWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRl
RGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1
ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwor
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGxvZ1Rl
c3RpbmdFdmVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGYuLjIyZmZmZDE5ODgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50
aWZpZXIpCiAKLSAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQorICAgIERpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWlu
dDY0X3QgY2hhbGxlbmdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQogICAgIERp
ZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC0zNSw5ICszNSw5IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCiAKICAgICAj
IERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZwotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAgTG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmlu
ZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1
aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJs
ZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dEaWFnbm9zdGljTWVzc2FnZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3Jp
cHRpb24sIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAg
IExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3Vs
dCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAgTG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2ln
bmVkIHNpZ25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCiAgICAgTG9nR2xvYmFsRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoU3Ry
aW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBz
aWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxk
U2FtcGxlKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTQ2LDcg
KzQ2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCkKICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5p
c2hlZCgpCiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVk
KHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVu
dFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW5zKQotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1
YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikg
LT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNj
ZXNzQ29uZmlybShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNj
ZXNzKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5z
V2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBmODc2MWIxZjNmNC4uM2YyODczMmFiNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNy
CiB7CiAgICAgYXV0byByZXF1ZXN0ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNy
ZWF0ZShbdGhpcywgbm90aWZpY2F0aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1fcGFnZSldKGJvb2wg
YWxsb3dlZCkgewogICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5vdGlmaWNhdGlvbklE
KTsKLSAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93
ZWQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9u
SUQsIGFsbG93ZWQpKTsKICAgICB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQobm90aWZp
Y2F0aW9uSUQsIHJlcXVlc3QucHRyKCkpOwogICAgIHJldHVybiByZXF1ZXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZhZTFmM2ZjYTg4Li4yYWFmZjFl
YzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdl
UHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAgIHVpbnQ2NF90IGdsb2Jh
bE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwogICAgIGF1
dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGlj
b25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklE
KTsKLSAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIg
PSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsK
KyAgICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBh
aXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklE
KTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQs
IG5vdGlmaWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRp
b25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRp
b24uY29weVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0
aW9uLmdldCgpKTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwK
ICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90LCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikK
K3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
LCBQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikK
IHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29s
IHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBh
Z2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5k
Tm90aWZpY2F0aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdl
Tm90aWZpY2F0aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBw
YWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250
YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEzICsxNDEsMTMgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNs
ZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZp
bHRlckZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBh
Z2VJRCgpOworICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CiAKICAg
ICBWZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAgICBnbG9iYWxOb3Rp
ZmljYXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUo
KSk7CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKSwgZW5kID0g
bV9ub3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgdWludDY0
X3Qgd2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAgYXV0byB3ZWJQYWdlSUQgPSBp
dC0+a2V5LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+
a2V5LnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VO
b3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFs
Tm90CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7Cisg
ICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3
ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3
ZWJQYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0
X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFs
dWUuZmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNS4uZTc4ZGFiYTZmZmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQ
cm9jZXNzUG9vbCopOwogCi0gICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24pKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCB1aW50
NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5v
dGlmaWNhdGlvbklEcyk7CisgICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVu
Y3Rpb24pKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlm
aWNhdGlvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
cGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pOwogCiAgICAg
Ly8gV2ViQ29udGV4dFN1cHBsZW1lbnQKQEAgLTg4LDkgKzg4LDkgQEAgcHJpdmF0ZToKIAogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwog
ICAgIC8vIFBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFuZCB0aGUgd2ViIHByb2Nlc3Mn
cyBub3RpZmljYXRpb24gSUQKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8dWludDY0
X3QsIHVpbnQ2NF90Pj4gbV9nbG9iYWxOb3RpZmljYXRpb25NYXA7CisgICAgSGFzaE1hcDx1aW50
NjRfdCwgc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4+IG1fZ2xv
YmFsTm90aWZpY2F0aW9uTWFwOwogICAgIC8vIEtleSBwYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFn
ZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElEOyB2YWx1ZSBwYWlyIGNv
bXByaXNlZCBvZiBnbG9iYWwgbm90aWZpY2F0aW9uIElELCBhbmQgbm90aWZpY2F0aW9uIG9iamVj
dAotICAgIEhhc2hNYXA8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1
aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CisgICAg
SGFzaE1hcDxzdGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90Piwgc3Rk
OjpwYWlyPHVpbnQ2NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9u
czsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDQ1YTFmMGY1YjVjLi41MTg4OTNi
MDg0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdl
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcApAQCAtNDcsNiArNDcsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFu
bmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxs
b3dlZCgpLCBjaGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMs
ICMjX19WQV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hh
bm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9n
Z2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10
LCB0aGlzLCAjI19fVkFfQVJHU19fKQogCkBAIC02MSw3ICs2Myw3IEBAIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQ
cm9jZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBw
YWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQ
YWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdl
dCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
IlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQg
PSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2
NCgpLCBuYXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCiAgICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFBy
b3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlzKTsKQEAgLTEwMCw3ICsxMDIsNyBAQCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KCkKICAgICAgICAgbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUobV9wYWdlLnBhZ2VJRCgp
LCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKICAgICBtX3Byb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNsb3NlKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVz
ZXIobV9wYWdlLnZpc2l0ZWRMaW5rU3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKIAogICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvY2VzcyA9IG1fcHJvY2Vzcy5jb3B5UmVmKCldIHsK
QEAgLTExNyw3ICsxMTksNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpjb25uZWN0aW9u
V2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS5wcm92
aXNpb25hbFByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKIH0KIApAQCAtMTMyLDcgKzEzNCw3IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxM
b2FkVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNhbmNl
bDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSBmb3IgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgQVNTRVJUKG1f
bWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0OjpjYW5jZWxsZWRFcnJvcihtX3Jl
cXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6UmVzb3VyY2VFcnJvcjo6VHlwZTo6
Q2FuY2VsbGF0aW9uKTsKQEAgLTE1MSwxNCArMTUzLDE0IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJsb2FkRGF0YTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlE
KCkudG9VSW50NjQoKSk7CiAKICAgICBtX3BhZ2UubG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJl
ZChtX3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBkYXRhLCBNSU1FVHlwZSwgZW5jb2Rp
bmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xv
YWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVx
dWVzdDogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgLy8gSWYgdGhpcyBp
cyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcgaW4gYSBuZXcgcHJvY2VzcywgdGhl
biB0aGUgbmV3IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhlIGZyb21JdGVtJ3MgVVJMLiBJbiB0
aGlzIGNhc2UsCiAgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgdXBkYXRlIGZyb21JdGVt
J3MgcHJvY2Vzc0lkZW50aWZpZXIgYXMgd2Ugd2FudCBmdXR1cmUgbmF2aWdhdGlvbnMgdG8gdGhp
cyBCYWNrRm9yd2FyZCBpdGVtIHRvIGhhcHBlbiBpbiB0aGUKQEAgLTE3MSw3ICsxNzMsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIFdlYkNvcmU6OlJlcwogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpnb1Rv
QmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRl
UG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQo
KSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFj
a0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2
NCgpKTsKIAogICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5m
aWx0ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkg
ewogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7CkBAIC0x
ODAsOCArMTgyLDggQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJk
SXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gJml0ZW0gIT0gdGFyZ2V0SXRlbTsKICAgICB9KTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdU
Rk1vdmUoaXRlbVN0YXRlcykpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmln
YXRpb25JRCgpLCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9h
ZFR5cGUoKSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1v
dmUod2Vic2l0ZVBvbGljaWVzKSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yUmVhdHRhY2goV1RGTW92ZShpdGVt
U3RhdGVzKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0
ZW0obmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgaXRlbS5pdGVtSUQoKSwgKm5hdmlnYXRpb24u
YmFja0ZvcndhcmRGcmFtZUxvYWRUeXBlKCksIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51
aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpKTsKICAgICBtX3Byb2Nlc3Mt
PnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCkBAIC0xOTYsNyArMTk4LDcgQEAg
aW5saW5lIGJvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgT3B0aW9uYWwKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlk
Q3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRl
TWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9w
YWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQpOwogICAgIEFTU0VSVCghbV9tYWluRnJh
bWUpOwogCiAgICAgbV9tYWluRnJhbWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUobV9wYWdlLCBm
cmFtZUlEKTsKQEAgLTIzNCw3ICsyMzYsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbgogICAg
IGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgp
LCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJ
dTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsK
ICAgICBBU1NFUlQobV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlz
aW9uYWxMb2FkVVJMID0gdXJsOwogCkBAIC0yNTQsNyArMjU2LDcgQEAgdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnMKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2
NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbExvYWRVUkwu
aXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogCkBAIC0yNzAsNyAr
MjcyLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmkKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQo
ZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9
ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZv
ckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZp
Z2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogICAgIG1f
cHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKIApAQCAtMjk1LDcgKzI5Nyw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWluCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZy
YW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCisgICAgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVp
bnQ2NF90IGxpc3RlbmVySUQpCiB7CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5h
dmlnYXRpb25JRCkpCkBAIC0zNDEsNyArMzQzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6YmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGUK
IH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0
X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtMzc0LDYgKzM3NiwxNiBAQCB2b2lkIFBy
b3Zpc2lvbmFsUGFnZVByb3h5OjpyZWdpc3RlcldlYlByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW4o
Y29uc3QgSVBDOjpEYXRhUgogfQogI2VuZGlmCiAKK0lQQzo6Q29ubmVjdGlvbiogUHJvdmlzaW9u
YWxQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpOworfQorCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQQzo6
RGVjb2RlciYgZGVjb2RlcikKIHsKICAgICBBU1NFUlQoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJO
YW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4
IDY0NTZjMWY5MTZkLi5iODYzZmRkMDNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIu
aCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xp
Y3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAg
LTU4LDcgKzU5LDcgQEAgc3RydWN0IE5hdmlnYXRpb25BY3Rpb25EYXRhOwogc3RydWN0IFVSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzOwogc3RydWN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmU7CiAKLWNs
YXNzIFByb3Zpc2lvbmFsUGFnZVByb3h5IDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8UHJvdmlzaW9uYWxQYWdlUHJveHk+IHsKK2NsYXNzIFByb3Zp
c2lvbmFsUGFnZVByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQcm92aXNpb25hbFBhZ2VQ
cm94eT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIFByb3Zp
c2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHN0
ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGJvb2wgaXNTZXJ2ZXJSZWRpcmVjdCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
UHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCk7CkBAIC05Miw5ICs5MywxMyBAQCBwcml2YXRl
OgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOworICAgIAorICAgIC8vIElQQzo6TWVzc2Fn
ZVNlbmRlcgorICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBj
b25zdCBmaW5hbDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNv
bnN0IGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCi0gICAgICAgIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiByZXF1ZXN0Qm9keSwKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTEwLDcgKzExNSw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7
CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0Rh
dGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRh
JiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCAwNTU5Yzk4NzRiZC4uNWIwMmRkYjI0ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0x
MTUsNyArMTE1LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcKICAgICBJT1N1cmZhY2VQb29s
OjpzaGFyZWRQb29sKCkuc2V0UG9vbFNpemUoMCk7CiAjZW5kaWYKIAotICAgIHByb2Nlc3MuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7
CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAq
dGhpcyk7CiAKICAgICBpZiAobV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS50aWxlZFNjcm9s
bGluZ0luZGljYXRvclZpc2libGUoKSkKICAgICAgICAgaW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9y
KCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcKIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
KCkKIHsKICAgICBtX2NhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93
bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgIHByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHByb2Nlc3MoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgW21fZGlzcGxheUxpbmtIYW5kbGVyIGludmFsaWRhdGVdOwpAQCAtNDYz
LDcgKzQ2Myw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZv
ckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0CiAgICAgfSgpOwogCiAgICAgYXV0
byBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICB3aGlsZSAocHJvY2Vzcygp
LmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZT4obV9pZGVudGlm
aWVyLnRvVUludDY0KCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0IC0gKE1vbm90b25pY1Rp
bWU6Om5vdygpIC0gc3RhcnRUaW1lKSwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0
aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKSB7CisgICAgd2hpbGUgKHByb2Nlc3MoKS5jb25uZWN0
aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU+KG1faWRlbnRpZmllciwgYWN0
aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRp
bWUpLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJy
aXZlcykpIHsKICAgICAgICAgaWYgKGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9PSBBY3Rpdml0eVN0
YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8IGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCA8PSBtX2FjdGl2
aXR5U3RhdGVDaGFuZ2VJRCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXgg
NjY3OWQ0NWJkOTkuLjA4NmFlYjA3OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQoY29uc3QgU3RyaW5nJiBkZWJ1Z2dhYmxlVHlw
ZSwgY29uc3QgU3RyaW5nJiBiCiAgICAgbV9kZWJ1Z2dhYmxlVHlwZSA9IGRlYnVnZ2FibGVUeXBl
OwogICAgIG1fYmFja2VuZENvbW1hbmRzVVJMID0gYmFja2VuZENvbW1hbmRzVVJMOwogCi0gICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVj
dG9yVUk6OkluaXRpYWxpemUoZGVidWdnYWJsZVR5cGUsIGJhY2tlbmRDb21tYW5kc1VSTCksIG1f
aW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNz
YWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkluaXRpYWxpemUoZGVidWdnYWJsZVR5cGUsIGJh
Y2tlbmRDb21tYW5kc1VSTCkpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVlc3QoVVJM
KFVSTCgpLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpKSk7CiB9CiAKQEAg
LTgxLDcgKzgxLDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6c2hvdygpCiAKIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNz
YWdlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6ZnJvbnRlbmRE
aWRDbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDVhMTRmYmU0ZGNkLi5iMmY3NzI5ZmQzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojp1
cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmIGNoYWxs
ZW5nZSkKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
UmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYgY2hhbGxlbmdlKQogewogICAgIFVO
VVNFRF9QQVJBTShwYWdlSUQpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAppbmRl
eCA5MzI0NWYwZGM3Ni4uZTkzNjVhZmFjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTQxLDE0ICs0MSwxNCBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29u
c3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7CiAKICAg
ICB2b2lkIHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBPcHRpb25hbDxQQUw6OlNl
c3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbigpIHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KLSAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0K
KyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZpY2VXb3JrZXJQYWdlSUQ7IH0KIAogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNz
UHJveHkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
LCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBt
X3JlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVpbnQ2NF90IG1fc2VydmljZVdvcmtlclBhZ2VJRCB7
IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDEzNDZmY2MwNWM1Li5lYmU0MTc0Y2MzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBA
IC05Miw3ICs5Miw3IEBAIFN1c3BlbmRlZFBhZ2VQcm94eTo6U3VzcGVuZGVkUGFnZVByb3h5KFdl
YlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mCiAgICAgbV9wcm9jZXNzLT5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKIAogICAgIG1fc3VzcGVuc2lvblRpbWVv
dXRUaW1lci5zdGFydE9uZVNob3Qoc3VzcGVuc2lvblRpbWVvdXQpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNTdXNwZW5kZWQodHJ1ZSksIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNTdXNwZW5kZWQodHJ1ZSkp
OwogfQogCiBTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQpAQCAtMTQ3
LDcgKzE0Nyw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojp1bnN1c3BlbmQoKQogICAgIEFT
U0VSVChtX3N1c3BlbnNpb25TdGF0ZSA9PSBTdXNwZW5zaW9uU3RhdGU6OlN1c3BlbmRlZCk7CiAK
ICAgICBtX3N1c3BlbnNpb25TdGF0ZSA9IFN1c3BlbnNpb25TdGF0ZTo6UmVzdW1lZDsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKGZhbHNlKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3Bl
bmRlZChmYWxzZSkpOwogfQogCiB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xvc2UoKQpAQCAt
MTU5LDcgKzE1OSw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpjbG9zZSgpCiAKICAgICBS
RUxFQVNFX0xPRyhQcm9jZXNzU3dhcHBpbmcsICIlcCAtIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xv
c2UoKSIsIHRoaXMpOwogICAgIG1faXNDbG9zZWQgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJv
eHk6OnBhZ2VFbnRlcmVkQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQpAQCAtMjQyLDExICsy
NDIsMjEgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLAogewogfQogCitJUEM6OkNvbm5lY3Rpb24q
IFN1c3BlbmRlZFBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAorewor
ICAgIHJldHVybiBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKTsKK30KKwordWludDY0X3QgU3VzcGVu
ZGVkUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpOworfQorCiAjaWYgIUxPR19ESVNBQkxF
RAogCiBjb25zdCBjaGFyKiBTdXNwZW5kZWRQYWdlUHJveHk6OmxvZ2dpbmdTdHJpbmcoKSBjb25z
dAogewotICAgIHJldHVybiBkZWJ1Z1N0cmluZygiKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pih0aGlzKSksICIgcGFnZSBJRCAiLCBtX3BhZ2UucGFnZUlEKCksICIsIG1fc3Vz
cGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSks
ICcpJyk7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoMHgiLCBoZXgocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBwYWdlIElEICIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2
NCgpLCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zdXNw
ZW5zaW9uU3RhdGUpLCAnKScpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggMGRhZDA1NGIyNzIuLjYzNWViYTAwMGRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAtMjYs
NiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNp
bmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKQEAgLTM5LDcgKzQwLDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Byb3h5OwogCiBl
bnVtIGNsYXNzIFNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSA6IGJvb2wgeyBObywgWWVzIH07CiAKLWNsYXNzIFN1c3BlbmRlZFBhZ2VQcm94
eSBmaW5hbDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8U3VzcGVuZGVkUGFnZVByb3h5PiB7CitjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHkgZmluYWw6
IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVy
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiB7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgU3VzcGVuZGVkUGFnZVByb3h5KFdlYlBh
Z2VQcm94eSYsIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IG1haW5GcmFtZUlELCBT
aG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUp
OwpAQCAtNzEsNiArNzIsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
cgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5h
bDsKKyAgICAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICBJUEM6OkNvbm5lY3Rpb24q
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIAogICAgIFdlYlBhZ2VQcm94
eSYgbV9wYWdlOwogICAgIFJlZjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRleCA5NzExYjIzMzcyMS4uYWQ3ODFm
NmY4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTcz
LDcgKzczLDcgQEAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6On5XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSgpCiB7CiAgICAgd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGll
cygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwogICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJv
Y2Vzc2VzKSB7Ci0gICAgICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CiAgICAgICAgIHByb2Nlc3MtPmRpZERlc3Ry
b3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgqdGhpcyk7CiAgICAgfQogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC04NSw3ICs4NSw3IEBAIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5Ojp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQogdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdl
YlByb2Nlc3NQcm94eSwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsK
ICAgICBpZiAobV9wcm9jZXNzZXMuYWRkKCZ3ZWJQcm9jZXNzUHJveHkpLmlzTmV3RW50cnkpCi0g
ICAgICAgIHdlYlByb2Nlc3NQcm94eS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgICAgIHdlYlByb2Nlc3NQcm94eS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSwgKnRoaXMpOwogCiAgICAgQVNTRVJUKHBh
cmFtZXRlcnMudXNlckNvbnRlbnRXb3JsZHMuaXNFbXB0eSgpKTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIHdvcmxkIDogbV91c2VyQ29udGVudFdvcmxkcykKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVQcm9jZXNzKFdlYlByb2Nlc3NQ
cm94eSYgd2ViUHJvY2Vzc1BybwogICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5jb250YWlucygmd2Vi
UHJvY2Vzc1Byb3h5KSk7CiAKICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmUoJndlYlByb2Nlc3NQcm94
eSk7Ci0gICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCkpOworICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdv
cmxkJiB3b3JsZCkKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZAog
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91c2VyQ29udGVudFdvcmxkcy5hZGQoJndvcmxkKTsKICAg
ICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNvbnRlbnRXb3JsZHMoeyBz
dGQ6Om1ha2VfcGFpcih3b3JsZC5pZGVudGlmaWVyKCksIHdvcmxkLm5hbWUoKSkgfSksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNvbnRlbnRXb3JsZHMoeyBzdGQ6Om1h
a2VfcGFpcih3b3JsZC5pZGVudGlmaWVyKCksIHdvcmxkLm5hbWUoKSkgfSksIGlkZW50aWZpZXIo
KSk7CiAgICAgfQogfQogCkBAIC0xNTAsNyArMTUwLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoQVBJOjpVc2VyQ29udGVu
dFcKIHsKICAgICBpZiAoc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVzc2FnZSh3
b3JsZCwgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpKSB7CiAgICAgICAgIGZvciAoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRz
KHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlm
aWVyKCkpOwogICAgIH0KIH0KIApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEhhc2hDb3VudGVk
U2V0PFJlCiAgICAgfQogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3By
b2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1Jl
bW92ZSksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBJbmplY3RV
c2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJT
Y3JpcHQmIHVzZXJTY3JpcHQsIEkKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmFwcGVu
ZCgmdXNlclNjcmlwdCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRzKHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwg
d29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC51c2VyU2NyaXB0KCkgfSB9LCBpbW1lZGlh
dGVseSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNl
clNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNl
clNjcmlwdCgpIH0gfSwgaW1tZWRpYXRlbHkpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNj
cmlwdCYgdXNlclNjcmlwdCkKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNj
cmlwdAogICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC51
c2VyQ29udGVudFdvcmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNl
clNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
VXNlclNjcmlwdCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSks
IGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLnJlbW92ZUFs
bCgmdXNlclNjcmlwdCk7CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNj
cmlwdAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNj
cmlwdHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHsg
d29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
QWxsVXNlclNjcmlwdHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAK
ICAgICB1bnNpZ25lZCB1c2VyU2NyaXB0c1JlbW92ZWQgPSBtX3VzZXJTY3JpcHRzLT5yZW1vdmVB
bGxPZlR5cGVNYXRjaGluZzxBUEk6OlVzZXJTY3JpcHQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU2Ny
aXB0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclNjcmlwdC0+dXNlckNvbnRlbnRXb3JsZCgpID09
ICZ3b3JsZDsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAgICAgICAgIHdvcmxkSWRlbnRpZmllcnMu
dW5jaGVja2VkQXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigpKTsKIAogICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxs
VXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsK
IAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAtMjMwLDcgKzIz
MCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTdHlsZVNo
ZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVs
ZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU3R5bGVTaGVldCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IHsgdXNl
clN0eWxlU2hlZXQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVT
aGVldC51c2VyU3R5bGVTaGVldCgpIH0gfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpB
ZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSwgd29ybGQt
PmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQudXNlclN0eWxlU2hlZXQoKSB9IH0pLCBpZGVu
dGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKQEAg
LTIzOCw3ICsyMzgsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1cwogICAgIFJlZjxBUEk6OlVz
ZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQudXNlckNvbnRlbnRXb3JsZCgp
OwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC5p
ZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclN0eWxl
U2hlZXQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpKSwg
aWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLnJlbW92
ZUFsbCgmdXNlclN0eWxlU2hlZXQpOwogCkBAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5
bGVTaGVldCYgdXMKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZv
ciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNl
clN0eWxlU2hlZXRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0p
LCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgdXNlclN0eWxlU2hlZXRzUmVtb3ZlZCA9
IG1fdXNlclN0eWxlU2hlZXRzLT5yZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6OlVzZXJTdHls
ZVNoZWV0PihbJl0oY29uc3QgYXV0byYgdXNlclN0eWxlU2hlZXQpIHsKICAgICAgICAgcmV0dXJu
ICZ1c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZDsKQEAgLTI2OSw3
ICsyNjksNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMoKQogICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVu
ZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0
cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKIAogICAg
IG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTI5MCw3ICsyOTAs
NyBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZQogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJz
LmFkZChoYW5kbGVyLmlkZW50aWZpZXIoKSwgJmhhbmRsZXIpOwogCiAgICAgZm9yIChXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhh
bmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgaGFu
ZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcnMoeyB7IGhhbmRsZXIuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRp
ZmllcigpLCBoYW5kbGVyLm5hbWUoKSB9IH0pLCBpZGVudGlmaWVyKCkpOwogICAgIAogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtMzAwLDcgKzMwMCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5n
CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYmVnaW4oKSwgZW5k
ID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0gbmFtZSAmJiAmaXQtPnZhbHVlLT51c2VyQ29u
dGVudFdvcmxkKCkgPT0gJndvcmxkKSB7CiAgICAgICAgICAgICBmb3IgKFdlYlByb2Nlc3NQcm94
eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBp
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIod29ybGQuaWRlbnRpZmllcigpLCBpdC0+dmFsdWUtPmlkZW50aWZpZXIoKSksIGlk
ZW50aWZpZXIoKSk7CiAKICAgICAgICAgICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92
ZShpdCk7CiAKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZwogdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5k
bGVycyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlm
aWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1bnNpZ25lZCBudW1iZXJSZW1vdmVkID0g
MDsKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmVJZihbJl0oYXV0byYgZW50cnkp
IHsKQEAgLTMyNyw3ICszMjcsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbgogICAgIHJlbW92
ZVVzZXJDb250ZW50V29ybGRVc2VzKHdvcmxkLCBudW1iZXJSZW1vdmVkKTsKIH0KIAotdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRf
dCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMzUxLDcgKzM1MSw3IEBAIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZENvbnRlbnRSdWxlTGlzdChBUEk6OkNvbnRlbnRS
dWxlTGlzdCYgY29uCiAgICAgYXV0byBwYWlyID0gc3RkOjptYWtlX3BhaXIoY29udGVudFJ1bGVM
aXN0Lm5hbWUoKSwgY29udGVudFJ1bGVMaXN0LmNvbXBpbGVkUnVsZUxpc3QoKS5kYXRhKCkpOwog
CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1bGVM
aXN0cyh7IHBhaXIgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50UnVs
ZUxpc3RzKHsgcGFpciB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIGZvciAoYXV0byogcHJvY2Vz
cyA6IG1fbmV0d29ya1Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMgeyBpZGVu
dGlmaWVyKCksIHsgcGFpciB9IH0sIDApOwpAQCAtMzYyLDcgKzM2Miw3IEBAIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgbV9jb250ZW50UnVsZUxpc3RzLnJlbW92ZShuYW1lKTsKIAogICAgIGZv
ciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdChu
YW1lKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdChu
YW1lKSwgaWRlbnRpZmllcigpKTsKIAogICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fbmV0d29y
a1Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdCB7IGlkZW50aWZpZXIoKSwg
bmFtZSB9LCAwKTsKQEAgLTM3Myw3ICszNzMsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCkKICAgICBtX2NvbnRlbnRSdWxl
TGlzdHMuY2xlYXIoKTsKIAogICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQot
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigpKTsKIAogICAgIGZvciAo
YXV0byogcHJvY2VzcyA6IG1fbmV0d29ya1Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OlJlbW92ZUFsbENvbnRl
bnRSdWxlTGlzdHMgeyBpZGVudGlmaWVyKCkgfSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaAppbmRleCA2MjMzMDExMTZlZC4uMGVkMzZhNTljYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTEwLDcgKzExMSw3
IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0X3QgcGFn
ZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgRnJhbWVJbmZvRGF0YSYs
IHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwog
CiAgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYp
OwogICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoQVBJOjpVc2VyQ29udGVudFdv
cmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4MTcxNDM1MWZjZS4u
MjVhNGUyOTEyNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCw1ICsyNCw1IEBACiAgKi8KIAogbWVzc2FnZXMgLT4gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgewotRGlkUG9zdE1lc3NhZ2UodWludDY0X3QgcGFn
ZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG1lc3NhZ2VIYW5kbGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5l
Y3Rpb24KK0RpZFBvc3RNZXNzYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdl
SGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2FudHNDb25uZWN0aW9uCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggMWYyNjAyOTFjYzcuLmJk
MzdiYTBjOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMTks
NyArMTE5LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
Y2FwdHVyZURldmljZXNDaGFuZ2VkKCkKICAgICAgICAgaWYgKG1fZ3JhbnRlZFJlcXVlc3RzLmlz
RW1wdHkoKSAmJiAhKm9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
YXB0dXJlRGV2aWNlc0NoYW5nZWQoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpKTsKICAgICB9
OwogCiAgICAgYXV0byBvcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1f
cGFnZS5tYWluRnJhbWUoKS0+dXJsKCkpOwpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRlbnlSZXF1ZXN0KHVpbnQ2NF90IHVz
ZXJNZWRpYUlELCBVCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCB1c2VyTWVkaWFJRCwg
IiwgcmVhc29uOiAiLCByZWFzb24pOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLSAgICBt
X3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dh
c0RlbmllZCh1c2VyTWVkaWFJRCwgdG9XZWJDb3JlKHJlYXNvbiksIGludmFsaWRDb25zdHJhaW50
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VXNlck1lZGlhQWNjZXNzV2FzRGVuaWVkKHVzZXJNZWRpYUlELCB0b1dlYkNvcmUocmVhc29uKSwg
aW52YWxpZENvbnN0cmFpbnQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHJlYXNvbik7CiAg
ICAgVU5VU0VEX1BBUkFNKGludmFsaWRDb25zdHJhaW50KTsKQEAgLTI5NiwxMSArMjk2LDExIEBA
IGJvb2wgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmdyYW50QWNjZXNz
KGNvbnN0IFVzZXJNZWRpYVBlcm1pc3NpCiAgICAgfQogCiAgICAgKyttX2hhc1BlbmRpbmdDYXB0
dXJlOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQgeyByZXF1ZXN0
LnVzZXJNZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9EZXZpY2UoKSwgcmVxdWVzdC52aWRlb0Rldmlj
ZSgpLCByZXF1ZXN0LmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCgpIH0sIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CisgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCB7IHJlcXVlc3QudXNl
ck1lZGlhSUQoKSwgcmVxdWVzdC5hdWRpb0RldmljZSgpLCByZXF1ZXN0LnZpZGVvRGV2aWNlKCks
IHJlcXVlc3QuZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KCkgfSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgLS1tX2hhc1BlbmRpbmdDYXB0dXJlOwotICAgIH0sIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgfSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAjZW5kaWYKQEAgLTYwOCw3
ICs2MDgsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpl
bnVtZXJhdGVNZWRpYURldmljZXNGb3JGcmFtZSh1aW50NgogCiAgICAgICAgICAgICBib29sIHJl
dmVhbElkc0FuZExhYmVscyA9IG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MgfHwgd2FzR3JhbnRl
ZFZpZGVvT3JBdWRpb0FjY2VzcyhmcmFtZUlELCB1c2VyTWVkaWFEb2N1bWVudE9yaWdpbi5nZXQo
KSwgdG9wTGV2ZWxEb2N1bWVudE9yaWdpbi5nZXQoKSk7CiAKLSAgICAgICAgICAgIG1fcGFnZS5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVNZWRpYURldmljZUVu
dW1lcmF0aW9uIHsgdXNlck1lZGlhSUQsIGNvbXB1dGVGaWx0ZXJlZERldmljZUxpc3QocmV2ZWFs
SWRzQW5kTGFiZWxzLCBkZXZpY2VJREhhc2hTYWx0KSwgZGV2aWNlSURIYXNoU2FsdCwgb3JpZ2lu
SGFzUGVyc2lzdGVudEFjY2VzcyB9LCBtX3BhZ2UucGFnZUlEKCkpOworICAgICAgICAgICAgbV9w
YWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJh
dGlvbiB7IHVzZXJNZWRpYUlELCBjb21wdXRlRmlsdGVyZWREZXZpY2VMaXN0KHJldmVhbElkc0Fu
ZExhYmVscywgZGV2aWNlSURIYXNoU2FsdCksIGRldmljZUlESGFzaFNhbHQsIG9yaWdpbkhhc1Bl
cnNpc3RlbnRBY2Nlc3MgfSk7CiAgICAgICAgIH0pOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCmluZGV4IDI0ODE4MmQ4
MDkyLi4xZTkxYWJiNmVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC02NiwxMCArNjYsMTAgQEAgc3RhdGljIGNvbnN0IGZs
b2F0IG1pbmltdW1TY3JvbGxFdmVudFJhdGlvRm9yU3dpcGUgPSAwLjU7CiBzdGF0aWMgY29uc3Qg
ZmxvYXQgc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uID0g
MC41OwogI2VuZGlmCiAKLXN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkKK3N0YXRpYyBIYXNo
TWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmlld0dlc3R1cmVD
b250cm9sbGVyc0ZvckFsbFBhZ2VzKCkKIHsKICAgICAvLyBUaGUga2V5IGluIHRoaXMgbWFwIGlz
IHRoZSBhc3NvY2lhdGVkIHBhZ2UgSUQuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hN
YXA8dWludDY0X3QsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+PiB2aWV3R2VzdHVyZUNvbnRyb2xs
ZXJzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBW
aWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKICAgICByZXR1
cm4gdmlld0dlc3R1cmVDb250cm9sbGVycy5nZXQoKTsKIH0KIApAQCAtMTE2LDcgKzExNiw3IEBA
IHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb25uZWN0VG9Qcm9jZXNzKCkKICAgICBtX2lz
Q29ubmVjdGVkVG9Qcm9jZXNzID0gdHJ1ZTsKIH0KIAotVmlld0dlc3R1cmVDb250cm9sbGVyKiBW
aWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JHZXN0dXJlKHVpbnQ2NF90IHBhZ2VJ
RCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJlSUQgZ2VzdHVyZUlEKQorVmlld0dlc3R1
cmVDb250cm9sbGVyKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JHZXN0dXJl
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJlSUQg
Z2VzdHVyZUlEKQogewogICAgIGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID0gdmlld0dlc3R1
cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZmluZChwYWdlSUQpOwogICAgIGlmIChnZXN0dXJl
Q29udHJvbGxlckl0ZXIgPT0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZW5k
KCkpCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmZvcmNl
UmVwYWludElmTmVlZGVkKCkKIAogICAgIG1faGFzT3V0c3RhbmRpbmdSZXBhaW50UmVxdWVzdCA9
IHRydWU7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsK
KyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwogICAgIEdlc3R1cmVJ
RCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgbV93ZWJQYWdlUHJveHkuZm9y
Y2VSZXBhaW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtwYWdlSUQsIGdlc3R1cmVJRF0gKENhbGxi
YWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VzdHVyZUNvbnRyb2xs
ZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQsIGdlc3R1cmVJRCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDQzMWMyNzY2
ZDA4Li5jMTY3MGQzYTk0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmll
d0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dl
c3R1cmVDb250cm9sbGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMTc1LDcgKzE3Niw3IEBAIHByaXZh
dGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHN0
YXRpYyBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JHZXN0dXJlKHVpbnQ2NF90
IHBhZ2VJRCwgR2VzdHVyZUlEKTsKKyAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBj
b250cm9sbGVyRm9yR2VzdHVyZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgR2VzdHVyZUlEKTsK
IAogICAgIHN0YXRpYyBHZXN0dXJlSUQgdGFrZU5leHRHZXN0dXJlSUQoKTsKICAgICB2b2lkIHdp
bGxCZWdpbkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKaW5kZXggZjJlN2I5MzQwNTcuLjk5MWRjMmZjZmY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgVmlzaXRlZExpbmtTdG9yZTo6d2ViUHJvY2Vzc0RpZENsb3NlQ29u
bmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBJUEM6OkNvbm5lCiAgICAgLy8gRklYTUU6IEltcGxl
bWVudC4KIH0KIAotdm9pZCBWaXNpdGVkTGlua1N0b3JlOjphZGRWaXNpdGVkTGlua0hhc2hGcm9t
UGFnZSh1aW50NjRfdCBwYWdlSUQsIFNoYXJlZFN0cmluZ0hhc2ggbGlua0hhc2gpCit2b2lkIFZp
c2l0ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgU2hhcmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkKIHsKICAgICBpZiAoYXV0byogd2Vi
UGFnZVByb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCkpIHsKICAgICAgICAg
aWYgKCF3ZWJQYWdlUHJveHktPmFkZHNWaXNpdGVkTGlua3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaAppbmRleCAwNmYyMGJhOTFjYi4uMDJiNDliYWM1NWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmgKQEAgLTY3LDcg
KzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVTaGFyZWRNZW1vcnkoKSBm
aW5hbDsKICAgICB2b2lkIGRpZFVwZGF0ZVNoYXJlZFN0cmluZ0hhc2hlcyhjb25zdCBWZWN0b3I8
V2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaD4mIGFkZGVkSGFzaGVzLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6U2hhcmVkU3RyaW5nSGFzaD4mIHJlbW92ZWRIYXNoZXMpIGZpbmFsOwogCi0gICAgdm9p
ZCBhZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlNo
YXJlZFN0cmluZ0hhc2gpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gpOwogCiAgICAg
dm9pZCBzZW5kU3RvcmVIYW5kbGVUb1Byb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmlu
CmluZGV4IGU3ODYyZTM2NWIwLi4yZTY2YzQyODA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCkBAIC0yMSw1ICsyMSw1
IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFZpc2l0ZWRMaW5rU3RvcmUgewotICAg
IEFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgbGlu
a0hhc2gpCisgICAgQWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCBsaW5rSGFzaCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAKaW5kZXggODdiMGFmYzIwYzIuLjBkYmUw
YWZiNDMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFu
ZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFBy
b3h5LmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFdlYkVkaXRDb21tYW5kUHJveHk6OnVuYXBw
bHkoKQogICAgIGlmICghbV9wYWdlIHx8ICFtX3BhZ2UtPmhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVuYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJRCksIG1fcGFnZS0+cGFnZUlEKCks
IElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVuYXBwbHlFZGl0Q29t
bWFuZChtX2NvbW1hbmRJRCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1hbmQo
KnRoaXMsIFVuZG9PclJlZG86OlJlZG8pOwogfQogCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgV2Vi
RWRpdENvbW1hbmRQcm94eTo6cmVhcHBseSgpCiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcGFnZS0+
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVhcHBseUVkaXRDb21tYW5kKG1fY29tbWFu
ZElEKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VF
dmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UmVhcHBseUVkaXRDb21tYW5kKG1fY29tbWFuZElEKSwgSVBDOjpTZW5kT3B0aW9u
OjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogICAgIG1fcGFn
ZS0+cmVnaXN0ZXJFZGl0Q29tbWFuZCgqdGhpcywgVW5kb09yUmVkbzo6VW5kbyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKaW5kZXggNWM4NTFiNzI3NTUu
LmIwMWIzMDUwNTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNw
cApAQCAtODMsNyArODMsNyBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmxvYWRVUkwoY29uc3QgVVJM
JiB1cmwpCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRVUkxJbkZyYW1lKHVybCwgbV9m
cmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkVVJMSW5GcmFtZSh1cmwsIG1fZnJhbWVJRCkpOwogfQogCiB2b2lkIFdlYkZy
YW1lUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUsIGNvbnN0IFVSTCYg
YmFzZVVSTCkKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVQKICAgICBp
ZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGFJbkZyYW1lKGRhdGEsIE1JTUVUeXBlLCBlbmNv
ZGluZ05hbWUsIGJhc2VVUkwsIG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZERhdGFJbkZyYW1lKGRhdGEsIE1JTUVU
eXBlLCBlbmNvZGluZ05hbWUsIGJhc2VVUkwsIG1fZnJhbWVJRCkpOwogfQogCiB2b2lkIFdlYkZy
YW1lUHJveHk6OnN0b3BMb2FkaW5nKCkgY29uc3QKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFdl
YkZyYW1lUHJveHk6OnN0b3BMb2FkaW5nKCkgY29uc3QKICAgICBpZiAoIW1fcGFnZS0+aGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcExvYWRpbmdGcmFtZShtX2ZyYW1lSUQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BM
b2FkaW5nRnJhbWUobV9mcmFtZUlEKSk7CiB9CiAgICAgCiBib29sIFdlYkZyYW1lUHJveHk6OmNh
blByb3ZpZGVTb3VyY2UoKSBjb25zdApAQCAtMjYyLDcgKzI2Miw3IEBAIHZvaWQgV2ViRnJhbWVQ
cm94eTo6Y29sbGFwc2VTZWxlY3Rpb24oKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb2xs
YXBzZVNlbGVjdGlvbkluRnJhbWUobV9mcmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb2xsYXBzZVNlbGVjdGlvbkluRnJhbWUo
bV9mcmFtZUlEKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAppbmRleCA4ZTkzYjFkYzJkMC4uZWM2
OThlMTYwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3Jl
ZW5NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxT
Y3JlZW5NYW5hZ2VyUHJveHkuY3BwCkBAIC01NiwxMyArNTYsMTMgQEAgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eTo6fldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkoKQogdm9pZCBXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5Ojp3aWxsRW50ZXJGdWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVs
bHNjcmVlbkNsaWVudCgpLndpbGxFbnRlckZ1bGxzY3JlZW4oJm1fcGFnZSk7Ci0gICAgbV9wYWdl
LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEVudGVy
RnVsbFNjcmVlbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEVudGVyRnVsbFNjcmVlbigpKTsKIH0KIAogdm9p
ZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxTY3JlZW4oKQogewogICAg
IG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50KCkuZGlkRW50ZXJGdWxsc2NyZWVuKCZtX3BhZ2UpOwot
ICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6
OkRpZEVudGVyRnVsbFNjcmVlbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlkRW50ZXJGdWxsU2NyZWVuKCkpOwog
CiAgICAgaWYgKG1fcGFnZS5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSkgewogICAgICAgICBp
ZiAoV2ViQXV0b21hdGlvblNlc3Npb24qIGF1dG9tYXRpb25TZXNzaW9uID0gbV9wYWdlLnByb2Nl
c3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCkBAIC03MywxMyArNzMsMTMg
QEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxTY3JlZW4oKQog
dm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Ojp3aWxsRXhpdEZ1bGxTY3JlZW4oKQogewog
ICAgIG1fcGFnZS5mdWxsc2NyZWVuQ2xpZW50KCkud2lsbEV4aXRGdWxsc2NyZWVuKCZtX3BhZ2Up
OwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXI6OldpbGxFeGl0RnVsbFNjcmVlbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5z
ZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6V2lsbEV4aXRGdWxsU2NyZWVuKCkp
OwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsU2NyZWVu
KCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLmRpZEV4aXRGdWxsc2NyZWVuKCZt
X3BhZ2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXI6OkRpZEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbFNjcmVl
bigpKTsKICAgICAKICAgICBpZiAobV9wYWdlLmlzQ29udHJvbGxlZEJ5QXV0b21hdGlvbigpKSB7
CiAgICAgICAgIGlmIChXZWJBdXRvbWF0aW9uU2Vzc2lvbiogYXV0b21hdGlvblNlc3Npb24gPSBt
X3BhZ2UucHJvY2VzcygpLnByb2Nlc3NQb29sKCkuYXV0b21hdGlvblNlc3Npb24oKSkKQEAgLTg5
LDEyICs4OSwxMiBAQCB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxs
U2NyZWVuKCkKIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzZXRBbmltYXRpbmdG
dWxsU2NyZWVuKGJvb2wgYW5pbWF0aW5nKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYW5p
bWF0aW5nKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2Vi
RnVsbFNjcmVlbk1hbmFnZXI6OlNldEFuaW1hdGluZ0Z1bGxTY3JlZW4oYW5pbWF0aW5nKSk7CiB9
CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEV4aXRGdWxsU2NyZWVu
KCkKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5N
YW5hZ2VyOjpSZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlJlcXVlc3RFeGl0RnVs
bFNjcmVlbigpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0
c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMDgsMjcgKzEwOCwyNyBAQCB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnN1cHBvcnRzRnVsbFNjcmVlbihib29sIHdpdGhLZXlib2Fy
ZCwgQ29tcGxldGlvbgogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNhdmVTY3Jv
bGxQb3NpdGlvbigpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJG
dWxsU2NyZWVuTWFuYWdlcjo6U2F2ZVNjcm9sbFBvc2l0aW9uKCksIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTYXZlU2Ny
b2xsUG9zaXRpb24oKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6cmVz
dG9yZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSwgbV9wYWdl
LnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXI6OlJlc3RvcmVTY3JvbGxQb3NpdGlvbigpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpzZXRGdWxsc2NyZWVuSW5zZXRzKGNvbnN0IFdlYkNvcmU6OkZsb2F0Qm94RXh0
ZW50JiBpbnNldHMpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJG
dWxsU2NyZWVuTWFuYWdlcjo6U2V0RnVsbHNjcmVlbkluc2V0cyhpbnNldHMpLCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6
U2V0RnVsbHNjcmVlbkluc2V0cyhpbnNldHMpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFu
YWdlclByb3h5OjpzZXRGdWxsc2NyZWVuQXV0b0hpZGVEdXJhdGlvbihTZWNvbmRzIGR1cmF0aW9u
KQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1h
bmFnZXI6OlNldEZ1bGxzY3JlZW5BdXRvSGlkZUR1cmF0aW9uKGR1cmF0aW9uKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6
OlNldEZ1bGxzY3JlZW5BdXRvSGlkZUR1cmF0aW9uKGR1cmF0aW9uKSk7CiB9CiAKIHZvaWQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbkNvbnRyb2xzSGlkZGVuKGJvb2wg
aGlkZGVuKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNj
cmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihoaWRkZW4pLCBtX3BhZ2Uu
cGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdl
cjo6U2V0RnVsbHNjcmVlbkNvbnRyb2xzSGlkZGVuKGhpZGRlbikpOwogfQogCiB2b2lkIFdlYkZ1
bGxTY3JlZW5NYW5hZ2VyUHJveHk6OmNsb3NlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCAxMmJiMjYxZDA3Yy4uZmU5MGNjYzg5YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTEw
MSw3ICsxMDEsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZW5kTWVzc2FnZVRvRnJvbnRl
bmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpLCBtX2lu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpTZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSkpOwogfQog
CiAvLyBQdWJsaWMgQVBJcwpAQCAtMTI3LDcgKzEyNyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmNvbm5lY3QoKQogICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCiAgICAgbV9pbnNwZWN0
ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9ySW50ZXJydXB0RGlz
cGF0Y2hlcjo6Tm90aWZ5TmVlZERlYnVnZ2VyQnJlYWsoKSwgMCk7Ci0gICAgbV9pbnNwZWN0ZWRQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93KCksIG1faW5z
cGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTaG93KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpz
aG93KCkKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjbG9zZSgp
CiAgICAgaWYgKCFtX2luc3BlY3RlZFBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5z
cGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6Q2xvc2Uo
KSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkNsb3NlKCkpOwogCiAgICAgY2xvc2VGcm9udGVuZFBh
Z2VBbmRXaW5kb3coKTsKIH0KQEAgLTE5OSw3ICsxOTksNyBAQCB2b2lkIFdlYkluc3BlY3RvclBy
b3h5Ojp1cGRhdGVGb3JOZXdQYWdlUHJvY2VzcyhXZWJQYWdlUHJveHkqIGluc3BlY3RlZFBhZ2Up
CiAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2luc3BlY3Rl
ZFBhZ2UtPnBhZ2VJRCgpLCAqdGhpcyk7CiAKICAgICBpZiAobV9pbnNwZWN0b3JQYWdlKQotICAg
ICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3JVSTo6VXBkYXRlQ29ubmVjdGlvbigpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6VXBk
YXRlQ29ubmVjdGlvbigpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0RnJvbnRl
bmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTIw
Nyw3ICsyMDcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXRGcm9udGVuZENvbm5lY3Rp
b24oSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaQogICAgIGlmICghbV9pbnNwZWN0
ZWRQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEZyb250ZW5kQ29ubmVjdGlvbihjb25u
ZWN0aW9uSWRlbnRpZmllciksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5z
cGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRGcm9udGVuZENvbm5l
Y3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6c2hvd0NvbnNvbGUoKQpAQCAtMjE3LDcgKzIxNyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnNob3dDb25zb2xlKCkKIAogICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCi0gICAgbV9p
bnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93
Q29uc29sZSgpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSk7CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMoKQpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dSZXNvdXJjZXMoKQogCiAgICAgY3JlYXRlRnJv
bnRlbmRQYWdlKCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OlNob3dSZXNvdXJjZXMoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlNob3dSZXNvdXJjZXMoKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dUaW1l
bGluZXMoKQpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dU
aW1lbGluZXMoKQogCiAgICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAKLSAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dUaW1lbGlu
ZXMoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dUaW1lbGluZXMoKSk7CiB9CiAKIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6OnNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5
KiBmcmFtZSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93
TWFpblJlc291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCiAKICAgICBjcmVhdGVG
cm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCkpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd01haW5SZXNvdXJjZUZvckZyYW1lKGZy
YW1lLT5mcmFtZUlEKCkpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YXR0YWNoQm90
dG9tKCkKQEAgLTI3OCwxOSArMjc4LDE5IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFj
aChBdHRhY2htZW50U2lkZSBzaWRlKQogICAgIGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5z
cGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQodHJ1ZSk7
CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNo
ZWQodHJ1ZSkpOwogCiAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7CiAgICAgY2FzZSBB
dHRhY2htZW50U2lkZTo6Qm90dG9tOgotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCkpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJpZ2h0OgotICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdo
dCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpKTsKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpMZWZ0OgotICAgICAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0
YWNoZWRMZWZ0KCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZExlZnQoKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMzA3LDggKzMwNyw4IEBAIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmRldGFjaCgpCiAgICAgaWYgKG1faXNWaXNpYmxlKQogICAgICAgICBpbnNw
ZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5zZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZChmYWxzZSk7
CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OlNldEF0dGFjaGVkKGZhbHNlKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7Ci0g
ICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OkRldGFjaGVkKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSkp
OworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRl
dGFjaGVkKCkpOwogCiAgICAgcGxhdGZvcm1EZXRhY2goKTsKIH0KQEAgLTM0MSw5ICszNDEsOSBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp0b2dnbGVQYWdlUHJvZmlsaW5nKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKG1faXNQcm9maWxpbmdQYWdlKQotICAgICAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BQYWdlUHJv
ZmlsaW5nKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3Rl
ZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcFBhZ2VQcm9maWxpbmcoKSk7
CiAgICAgZWxzZQotICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0UGFnZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlN0YXJ0UGFnZVByb2ZpbGluZygpKTsKIAogICAgIC8vIEZJWE1FOiBoYXZlIHRo
ZSBXZWJQcm9jZXNzIG5vdGlmeSB1cyBvbiBzdGF0ZSBjaGFuZ2VzLgogICAgIG1faXNQcm9maWxp
bmdQYWdlID0gIW1faXNQcm9maWxpbmdQYWdlOwpAQCAtMzU2LDEwICszNTYsMTAgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlRWxlbWVudFNlbGVjdGlvbigpCiAKICAgICBpZiAobV9l
bGVtZW50U2VsZWN0aW9uQWN0aXZlKSB7CiAgICAgICAgIG1faWdub3JlRWxlbWVudFNlbGVjdGlv
bkNoYW5nZSA9IHRydWU7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcEVsZW1lbnRTZWxlY3Rpb24oKSwgbV9pbnNwZWN0
ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yOjpTdG9wRWxlbWVudFNlbGVjdGlvbigpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBjb25uZWN0KCk7Ci0gICAgICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRFbGVtZW50U2VsZWN0aW9uKCksIG1faW5z
cGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6U3RhcnRFbGVtZW50U2VsZWN0aW9uKCkpOwogICAgIH0KIH0K
IApAQCAtNDEyLDcgKzQxMiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW5Mb2NhbElu
c3BlY3RvckZyb250ZW5kKGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzCiAgICAgaWYgKCFt
X2luc3BlY3RvclBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25uZWN0
aW9uKG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0LCBpbnNwZWN0aW9uTGV2
ZWwoKSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkVzdGFibGlzaENvbm5lY3Rpb24obV9pbnNw
ZWN0ZWRQYWdlLT5wYWdlSUQoKSwgbV91bmRlclRlc3QsIGluc3BlY3Rpb25MZXZlbCgpKSk7CiAK
ICAgICBBU1NFUlQoIW1faXNBY3RpdmVGcm9udGVuZCk7CiAgICAgbV9pc0FjdGl2ZUZyb250ZW5k
ID0gdHJ1ZTsKQEAgLTQyMywyNiArNDIzLDI2IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9w
ZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGJvb2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzCiAg
ICAgICAgIG1faXNBdHRhY2hlZCA9IHNob3VsZE9wZW5BdHRhY2hlZCgpOwogICAgICAgICBtX2F0
dGFjaG1lbnRTaWRlID0gc3RhdGljX2Nhc3Q8QXR0YWNobWVudFNpZGU+KGluc3BlY3RvclBhZ2VQ
cmVmZXJlbmNlcygpLmluc3BlY3RvckF0dGFjaG1lbnRTaWRlKCkpOwogCi0gICAgICAgIG1faW5z
cGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0
YWNoZWQobV9pc0F0dGFjaGVkKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgICAg
IG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hl
ZChtX2lzQXR0YWNoZWQpKTsKIAogICAgICAgICBpZiAobV9pc0F0dGFjaGVkKSB7CiAgICAgICAg
ICAgICBzd2l0Y2ggKG1fYXR0YWNobWVudFNpZGUpIHsKICAgICAgICAgICAgIGNhc2UgQXR0YWNo
bWVudFNpZGU6OkJvdHRvbToKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSwgbV9p
bnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRCb3R0b20oKSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OlJp
Z2h0OgotICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCksIG1faW5zcGVjdG9yUGFnZS0+
cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkxlZnQ6Ci0gICAgICAgICAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAg
ICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJ
OjpBdHRhY2hlZExlZnQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCksIG1faW5zcGVjdG9yUGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6RGV0YWNoZWQoKSk7CiAKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldERvY2tpbmdVbmF2
YWlsYWJsZSghbV9jYW5BdHRhY2gpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAg
ICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9j
a2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0dGFjaCkpOwogICAgIH0KIAogICAgIG1faW5zcGVjdG9y
UGFnZS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCBtX3VuZGVyVGVzdCA/IFdlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JUZXN0UGFnZVVSTCgpIDogV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
clBhZ2VVUkwoKSkpOwpAQCAtNDU4LDcgKzQ1OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6
Om9wZW4oKQogCiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gaXNPcGVuaW5nKG1faXNPcGVuaW5nLCB0
cnVlKTsKICAgICBtX2lzVmlzaWJsZSA9IHRydWU7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlz
aWJsZSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSkp
OwogCiAgICAgaWYgKG1faXNBdHRhY2hlZCkKICAgICAgICAgcGxhdGZvcm1BdHRhY2goKTsKQEAg
LTQ4NSw3ICs0ODUsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpjbG9zZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiAKICAgICB1bnRyYWNrSW5zcGVjdG9yUGFnZShtX2luc3BlY3RvclBhZ2Up
OwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSksIG1faW5zcGVjdG9yUGFnZS0+cGFn
ZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
VUk6OlNldElzVmlzaWJsZShtX2lzVmlzaWJsZSkpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+cHJv
Y2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CiAKICAg
ICBpZiAobV9pc0FjdGl2ZUZyb250ZW5kKSB7CkBAIC01NDksNyArNTQ5LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6YXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sIGF2YWlsYWJsZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faW5zcGVjdG9yUGFnZSAmJiAhbV91bmRlclRl
c3QpCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNw
ZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9jYW5BdHRhY2gp
KTsKIAogICAgIHBsYXRmb3JtQXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChtX2NhbkF0dGFjaCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA2NTZjOGRj
YzU5Yy4uZGY3NGM1NjRjOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMzgxLDEyICszODEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvck1vc3RWaXNp
YmxlV2ViUGFnZUlmQW55KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2UKICAgICBj
b21wbGV0aW9uSGFuZGxlcihzZWxlY3RlZFBhZ2UpOwogfQogCi1SZWY8V2ViUGFnZVByb3h5PiBX
ZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYgY29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRl
KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0
aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xpZW50
LCBwcm9jZXNzLCBwYWdlSUQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24pCitXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKICAgICA6
IG1fcGFnZUNsaWVudChtYWtlV2Vha1B0cihwYWdlQ2xpZW50KSkKICAgICAsIG1fY29uZmlndXJh
dGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1h
a2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpKQpAQCAtNDM1LDcgKzQzNSw3IEBA
IFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFz
aENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJl
Y2VudENyYXNoQ291bnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
Y29uc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwog
CiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmRyYXdzQmFja2dyb3VuZCgpKQogICAgICAgICBt
X2JhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CkBAIC00ODksNyAr
NDg5LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVu
dCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFn
ZVByb3h5KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVj
dG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkZXN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgQVNT
RVJUKG1fcHJvY2Vzcy0+d2ViUGFnZShtX3BhZ2VJRCkgIT0gdGhpcyk7CiAjaWYgIUFTU0VSVF9E
SVNBQkxFRApAQCAtNjEzLDcgKzYxMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVu
dChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpVSUNsaWVudD4mJiB1aUNsaWVudCkKICAgICBtX3VpQ2xp
ZW50ID0gV1RGTW92ZSh1aUNsaWVudCk7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkK
LSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwobV91aUNsaWVudC0+Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmly
bVBhbmVsKCkpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dENhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChtX3VpQ2xpZW50LT5jYW5SdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoKSkpOwogCiAgICAgc2V0Q2FuUnVuTW9kYWwobV91aUNsaWVudC0+
Y2FuUnVuTW9kYWwoKSk7CiAgICAgc2V0TmVlZHNGb250QXR0cmlidXRlcyhtX3VpQ2xpZW50LT5u
ZWVkc0ZvbnRBdHRyaWJ1dGVzKCkpOwpAQCAtNjMwLDcgKzYzMCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGlu
Z0NsaWVudD4mCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUljb25Mb2Fk
aW5nQ2xpZW50KGhhc0NsaWVudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGllbnQpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEZpbmRDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6RmluZENsaWVudD4m
JiBmaW5kQ2xpZW50KQpAQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVu
Y2hQcm9jZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKICAg
ICBBU1NFUlQoIW1faXNDbG9zZWQpOwogICAgIEFTU0VSVCghaGFzUnVubmluZ1Byb2Nlc3MoKSk7
CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
YXVuY2hQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9wcm9j
ZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFT
dG9yZTo6WWVzKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKQEAgLTc2
Myw3ICs3NjMsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3Nz
aWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTog
U3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBzdGQ6Om1ha2Vf
dW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICpt
YWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKTsKIAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkg
JSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWks
IGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLCBzdXNwZW5kZWRQYWdlLT5s
b2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0g
PyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKKyAgICBMT0coUHJvY2Vzc1N3
YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2Ug
JXMgZm9yIHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdl
SUQoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlEKCkubG9n
U3RyaW5nKCkgOiAwKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQgZm9yY2VkIGEgc3dhcCB0aGVu
IGl0IG1heSBub3QgYmUgd2ViLWNvbXBhdGlibGUgdG8ga2VlcCB0aGUgcHJldmlvdXMgcGFnZSBi
ZWNhdXNlIG90aGVyIHdpbmRvd3MgbWF5IGhhdmUgYW4gb3BlbmVyIGxpbmsgdG8gaXQuIFdlIHRo
dXMgY2xvc2UgaXQgYXMgc29vbiBhcyB3ZQogICAgIC8vIGNhbiBkbyBzbyB3aXRob3V0IGZsYXNo
aW5nLgpAQCAtNzgxLDcgKzc4MSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVu
dFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiB2b2lkIFdl
YlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nl
c3MsIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRyYXdpbmdBcmVhLCBSZWZQ
dHI8V2ViRnJhbWVQcm94eT4mJiBtYWluRnJhbWUpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2Vk
KTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzd2FwVG9XZWJQcm9jZXNz
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJzd2FwVG9XZWJQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAg
bV9wcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKTsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBt
X3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKTsKQEAgLTg3MywxMCArODczLDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2Fk
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwog
CiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVu
Y2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtODg1LDE0
ICs4ODUsMTQgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQ
cm9jZXNzRm9yUmVsb2FkKCkKICAgICBsYXVuY2hQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluKTsK
IAogICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDog
bm8gY3VycmVudCBpdGVtIHRvIHJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IG5v
IGN1cnJlbnQgaXRlbSB0byByZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1f
bmF2aWdhdGlvblN0YXRlLT5jcmVhdGVSZWxvYWROYXZpZ2F0aW9uKCk7CiAKICAgICAvLyBXZSBh
bGxvdyBzdGFsZSBjb250ZW50IHdoZW4gcmVsb2FkaW5nIGEgV2ViUHJvY2VzcyB0aGF0J3MgYmVl
biBraWxsZWQgb3IgY3Jhc2hlZC4KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG1fYmFj
a0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5k
ZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51
bGxvcHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tG
b3J3YXJkSXRlbShuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKSwgbV9iYWNrRm9yd2FyZExpc3Qt
PmN1cnJlbnRJdGVtKCktPml0ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0Zvcndh
cmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCkpOwogICAg
IG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4g
bmF2aWdhdGlvbjsKQEAgLTkwMCwxMCArOTAwLDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAKIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHBh
Z2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiBwYWdlIGlzIGNsb3NlZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC05MTUsNyArOTE1LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5OjpsYXVuY2hQcm9jZXNzV2l0aEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogICAg
IGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRlLT5jcmVhdGVCYWNrRm9yd2FyZE5h
dmlnYXRpb24oaXRlbSwgbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCksIEZyYW1lTG9h
ZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklE
KCksIGl0ZW0uaXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlv
bi0+bmF2aWdhdGlvbklEKCksIGl0ZW0uaXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRC
YWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0
KSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAg
IHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtOTU2LDcgKzk1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpjbG9zZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwogCkBAIC0xMDA5LDcg
KzEwMDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLnJlbW92ZUFsbFN1c3BlbmRlZFBhZ2VzRm9yUGFnZSgqdGhpcyk7CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpKTsKICAgICBtX3Byb2Nlc3MtPnJl
bW92ZVdlYlBhZ2UoKnRoaXMsIFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZ
ZXMpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwogICAgIG1fcHJvY2Vz
cy0+cHJvY2Vzc1Bvb2woKS5zdXBwbGVtZW50PFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eT4o
KS0+Y2xlYXJOb3RpZmljYXRpb25zKHRoaXMpOwpAQCAtMTAzMSwxNCArMTAzMSwxNCBAQCBib29s
IFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAidHJ5Q2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAK
ICAgICAvLyBDbG9zZSB3aXRob3V0IGRlbGF5IGlmIHRoZSBwcm9jZXNzIGFsbG93cyBpdC4gT3Vy
IGdvYWwgaXMgdG8gdGVybWluYXRlCiAgICAgLy8gdGhlIHByb2Nlc3MsIHNvIHdlIGNoZWNrIGEg
cGVyLXByb2Nlc3Mgc3RhdHVzIGJpdC4KICAgICBpZiAobV9wcm9jZXNzLT5pc1N1ZGRlblRlcm1p
bmF0aW9uRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VHJ5Q2xvc2UoKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlRyeUNsb3NlKCkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTA3Nyw3ICsx
MDc3LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAgICBpZiAobV9pc0Nsb3NlZCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkUmVxdWVzdDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nl
c3MoUmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0LnVybCgpIH0pOwpAQCAtMTA5MSw3ICsxMDkx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQp
OwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3RXaXRo
TmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2Fj
dGlvbigpOwogCkBAIC0xMTIwLDEwICsxMTIwLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3Qg
U3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJM
U3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6
IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTExMzIsNyArMTEzMiw3IEBAIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJM
U3RyaW5nLCBjb25zCiAKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmlu
Zyk7CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTExNDIsNyArMTE0Miw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3Ry
aW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAgICAgZWxzZSB7CiAgICAgICAgIHJlc291cmNlRGly
ZWN0b3J5VVJMID0gVVJMKFVSTCgpLCByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAg
ICAgIGlmICghcmVzb3VyY2VEaXJlY3RvcnlVUkwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHJlc291cmNlIFVS
TCBpcyBub3QgbG9jYWw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHJlc291cmNlIFVSTCBpcyBub3QgbG9j
YWw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQogICAgIH0KQEAgLTExNjQsNyArMTE2NCw3IEBAIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJM
U3RyaW5nLCBjb25zCiAgICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVy
cyk7CiAKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIHJl
c291cmNlRGlyZWN0b3J5VVJMKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWRSZXF1ZXN0KGxvYWRQYXJhbWV0ZXJzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkxvYWRSZXF1ZXN0KGxvYWRQYXJhbWV0ZXJzKSk7CiAgICAgbV9wcm9j
ZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0
aW9uOwpAQCAtMTE3MiwxMCArMTE3MiwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRE
YXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6IHBh
Z2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTEx
ODksNyArMTE4OSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9h
ZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
cHJvY2VzcywgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBTaG91bGRU
cmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFX
aXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBBU1NFUlQo
IW1faXNDbG9zZWQpOwogCkBAIC0xMjE1LDEzICsxMjE1LDEzIEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcywKIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFVS
TCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5h
dGVIVE1MOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
IAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBoYW5kbGlu
ZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0dGVtcHQgdG8KICAgICAvLyBz
dGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3aWxsIHByZXZlbnQg
dGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCiAgICAgLy8gaGFuZGxlZCBwcm9wZXJseS4K
ICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lzTG9hZGluZ0FsdGVybmF0ZUhUTUxTdHJpbmdGb3JG
YWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNsb3NlZCAob3Igb3RoZXIpOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhlcik6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNTIs
MTYgKzEyNTIsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1MKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFMKIAogICAgIG1fcHJvY2Vzcy0+
YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgYmFzZVVSTCk7CiAgICAgbV9wcm9jZXNz
LT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCB1bnJlYWNoYWJsZVVSTCk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkQWx0ZXJuYXRlSFRNTChsb2Fk
UGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2Fk
QWx0ZXJuYXRlSFRNTChsb2FkUGFyYW1ldGVycykpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJj
aGl2ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZl
RGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwog
CiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJB
cmNoaXZlRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyNzksMTYgKzEyNzksMTYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRh
LCBBUEk6Ok9iamVjdCogdXMKICAgICBsb2FkUGFyYW1ldGVycy51c2VyRGF0YSA9IFVzZXJEYXRh
KHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhKS5nZXQoKSk7CiAg
ICAgYWRkUGxhdGZvcm1Mb2FkUGFyYW1ldGVycyhsb2FkUGFyYW1ldGVycyk7CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJhbWV0ZXJzKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhKGxvYWRQYXJh
bWV0ZXJzKSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENs
aWNrKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBJbnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQ
b2ludCBzY3JlZW5Qb2ludCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtX
aXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBp
ZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTEyOTgsMjAgKzEyOTgsMjAgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRlVG9QREZMaW5r
V2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2VzcyhSZWdpc3RyYWJsZURvbWFp
biB7IFVSTChVUkwoKSwgdXJsU3RyaW5nKSB9KTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6TmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3Ry
aW5nLCBkb2N1bWVudFBvaW50LCBzY3JlZW5Qb2ludCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpOYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayh1cmxT
dHJpbmcsIGRvY3VtZW50UG9pbnQsIHNjcmVlblBvaW50KSk7CiAgICAgbV9wcm9jZXNzLT5yZXNw
b25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BM
b2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9wTG9h
ZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAic3RvcExvYWRpbmc6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMg
bm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2Ug
aXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9w
TG9hZGluZygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcExv
YWRpbmcoKSk7CiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlKSB7CiAgICAgICAgIG1fcHJvdmlz
aW9uYWxQYWdlLT5jYW5jZWwoKTsKICAgICAgICAgbV9wcm92aXNpb25hbFBhZ2UgPSBudWxscHRy
OwpAQCAtMTMyMSw3ICsxMzIxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKCkK
IAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0
PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJyZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFu
ZGxlOwogCkBAIC0xMzQ2LDcgKzEzNDYsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcAogICAg
IGlmIChvcHRpb25zLmNvbnRhaW5zKFdlYkNvcmU6OlJlbG9hZE9wdGlvbjo6RGlzYWJsZUNvbnRl
bnRCbG9ja2VycykpCiAgICAgICAgIG5hdmlnYXRpb24tPnNldFVzZXJDb250ZW50RXh0ZW5zaW9u
c0VuYWJsZWQoZmFsc2UpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZWxvYWQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZWxvYWQobmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG9wdGlvbnMudG9SYXcoKSwg
c2FuZGJveEV4dGVuc2lvbkhhbmRsZSkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NU
aW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTEzOTgsNyArMTM5
OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3
YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiBpdGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJk
SXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBMT0coTG9hZGluZywgIldl
YlBhZ2VQcm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywg
aXRlbS51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKQEAgLTE0MTIsNyArMTQxMiw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQ
cm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAgICAgaWYg
KCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlzSW5TYW1lRG9jdW1lbnQo
aXRlbSkpCiAgICAgICAgIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlQmFj
a0ZvcndhcmROYXZpZ2F0aW9uKGl0ZW0sIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgp
LCBmcmFtZUxvYWRUeXBlKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCkgOiAwLCBpdGVtLml0ZW1JRCgpLCBmcmFtZUxvYWRUeXBlLCBTaG91bGRUcmVhdEFzQ29u
dGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uID8gbmF2aWdhdGlv
bi0+bmF2aWdhdGlvbklEKCkgOiAwLCBpdGVtLml0ZW1JRCgpLCBmcmFtZUxvYWRUeXBlLCBTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpKTsKICAgICBtX3Byb2Nl
c3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRp
b247CkBAIC0xNDIwLDE0ICsxNDIwLDE0IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojp0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5
UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFs
aWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlSZXN0b3JlU2Nyb2xsUG9zaXRp
b24oKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeVJlc3RvcmVT
Y3JvbGxQb3NpdGlvbigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZUJhY2tG
b3J3YXJkTGlzdChXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBhZGRlZCwgVmVjdG9yPFJlZjxXZWJC
YWNrRm9yd2FyZExpc3RJdGVtPj4mJiByZW1vdmVkKQpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oYm9vbCBjb250cm9sbGVk
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb250cm9sbGVkQnlBdXRvbWF0
aW9uKGNvbnRyb2xsZWQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihjb250cm9sbGVkKSk7CiAgICAgbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLnNlbmRUb05ldHdvcmtpbmdQcm9jZXNzKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6U2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihtX3dlYnNpdGVEYXRhU3Rv
cmUtPnNlc3Npb25JRCgpLCBtX2NvbnRyb2xsZWRCeUF1dG9tYXRpb24pKTsKIH0KIApAQCAtMTUx
NCw3ICsxNTE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEluZGljYXRpbmcoYm9vbCBpbmRp
Y2F0aW5nKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbmRpY2F0aW5nKGlu
ZGljYXRpbmcpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SW5k
aWNhdGluZyhpbmRpY2F0aW5nKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjphbGxvd3NSZW1v
dGVJbnNwZWN0aW9uKCkgY29uc3QKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjbGVhckluc3BlY3RvclRhcmdldHMoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRl
SW5zcGVjdG9yVGFyZ2V0cygpCiB7Ci0gICAgU3RyaW5nIHBhZ2VUYXJnZXRJZCA9IG1ha2VTdHJp
bmcoInBhZ2UtIiwgbV9wYWdlSUQpOworICAgIFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBtYWtlU3Ry
aW5nKCJwYWdlLSIsIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgIG1faW5zcGVjdG9yQ29udHJv
bGxlci0+Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0KIApAQCAtMTU2MSw3ICsxNTYxLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEJhY2tncm91bmRDb2xvcihjb25zdCBPcHRpb25hbDxDb2xvcj4mIGNv
bG9yKQogCiAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKICAgICBpZiAoaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRDb2xvcihjb2xvcikpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRlbnRJbnNldCkKQEAgLTE1Nzcs
OSArMTU3Nyw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUb3BDb250ZW50SW5zZXQoZmxvYXQg
Y29udGVudEluc2V0KQogICAgIE1hY2hTZW5kUmlnaHQgZmVuY2UgPSBtX2RyYXdpbmdBcmVhLT5j
cmVhdGVGZW5jZSgpOwogCiAgICAgYXV0byBmZW5jZUF0dGFjaG1lbnQgPSBJUEM6OkF0dGFjaG1l
bnQoZmVuY2UubGVha1NlbmRSaWdodCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXRGZW5j
ZWQoY29udGVudEluc2V0LCBmZW5jZUF0dGFjaG1lbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VG9wQ29udGVudEluc2V0RmVuY2VkKGNvbnRlbnRJbnNldCwg
ZmVuY2VBdHRhY2htZW50KSk7CiAjZWxzZQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0VG9wQ29udGVudEluc2V0KGNvbnRlbnRJbnNldCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUb3BDb250ZW50SW5zZXQoY29udGVudEluc2V0
KSk7CiAjZW5kaWYKIH0KIApAQCAtMTU5MSw3ICsxNTkxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFVuZGVybGF5Q29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fdW5kZXJsYXlDb2xv
ciA9IGNvbG9yOwogCiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VW5kZXJsYXlDb2xvcihjb2xvciksIG1f
cGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VW5kZXJsYXlDb2xv
cihjb2xvcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld1dpbGxTdGFydExpdmVSZXNp
emUoKQpAQCAtMTYwMCwxNCArMTYwMCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld1dpbGxT
dGFydExpdmVSZXNpemUoKQogICAgICAgICByZXR1cm47CiAKICAgICBjbG9zZU92ZXJsYXllZFZp
ZXdzKCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWaWV3V2lsbFN0
YXJ0TGl2ZVJlc2l6ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Vmlld1dpbGxTdGFydExpdmVSZXNpemUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3
V2lsbEVuZExpdmVSZXNpemUoKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmll
d1dpbGxFbmRMaXZlUmVzaXplKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpWaWV3V2lsbEVuZExpdmVSZXNpemUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFJlZ2lvbiYgcmVnaW9uKQpAQCAtMTcwMSw3ICsxNzAx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdEaWRFbnRlcldpbmRvdygpCiAgICAgTGF5ZXJI
b3N0aW5nTW9kZSBsYXllckhvc3RpbmdNb2RlID0gcGFnZUNsaWVudCgpLnZpZXdMYXllckhvc3Rp
bmdNb2RlKCk7CiAgICAgaWYgKG1fbGF5ZXJIb3N0aW5nTW9kZSAhPSBsYXllckhvc3RpbmdNb2Rl
KSB7CiAgICAgICAgIG1fbGF5ZXJIb3N0aW5nTW9kZSA9IGxheWVySG9zdGluZ01vZGU7Ci0gICAg
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9k
ZShsYXllckhvc3RpbmdNb2RlKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVySG9zdGluZ01vZGUpKTsKICAgICB9CiB9
CiAKQEAgLTE3NTAsNyArMTc1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaXNwYXRjaEFjdGl2
aXR5U3RhdGVDaGFuZ2UoKQogICAgIGF1dG8gYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID0gbV9hY3Rp
dml0eVN0YXRlQ2hhbmdlV2FudHNTeW5jaHJvbm91c1JlcGx5ID8gdGFrZU5leHRBY3Rpdml0eVN0
YXRlQ2hhbmdlSUQoKSA6IHN0YXRpY19jYXN0PEFjdGl2aXR5U3RhdGVDaGFuZ2VJRD4oQWN0aXZp
dHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyk7CiAKICAgICBpZiAoY2hhbmdlZCB8fCBhY3Rpdml0
eVN0YXRlQ2hhbmdlSUQgIT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCAhbV9u
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcy5pc0VtcHR5KCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWN0aXZpdHlTdGF0ZShtX2FjdGl2aXR5
U3RhdGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgbV9uZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNh
bGxiYWNrcyksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
QWN0aXZpdHlTdGF0ZShtX2FjdGl2aXR5U3RhdGUsIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgbV9u
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUNhbGxiYWNrcykpOwogCiAgICAgbV9uZXh0QWN0aXZpdHlT
dGF0ZUNoYW5nZUNhbGxiYWNrcy5jbGVhcigpOwogCkBAIC0xODUzLDcgKzE4NTMsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bGF5ZXJIb3N0aW5nTW9kZURpZENoYW5nZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIG1fbGF5ZXJIb3N0aW5nTW9kZSA9IGxheWVySG9zdGluZ01vZGU7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRMYXllckhvc3RpbmdNb2RlKGxheWVy
SG9zdGluZ01vZGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3RpbmdNb2RlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQg
YWN0aXZpdHlTdGF0ZUNoYW5nZUlEKQpAQCAtMTg5NSwyMSArMTg5NSwyMSBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJkRXZl
bnRWYWxpZCwgY29ucwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0SW5pdGlhbEZvY3VzKGZvcndhcmQsIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBr
ZXlib2FyZEV2ZW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldEluaXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwg
a2V5Ym9hcmRFdmVudCwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xl
YXJTZWxlY3Rpb24oKQogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJTZWxl
Y3Rpb24oKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFyU2Vs
ZWN0aW9uKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZVNlbGVjdGlvbkluRm9j
dXNlZEVkaXRhYmxlRWxlbWVudCgpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFibGVFbGVtZW50KCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2VsZWN0aW9uSW5Gb2N1c2VkRWRpdGFi
bGVFbGVtZW50KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNv
bnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5n
JiwgYm9vbCwgaW50MzJfdCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlv
bikKQEAgLTE5MjAsNyArMTkyMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWxpZGF0ZUNvbW1h
bmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lkCiAgICAgfQog
CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4o
KSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpWYWxpZGF0ZUNvbW1h
bmQoY29tbWFuZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbmNyZWFzZUxpc3RMZXZlbCgpCkBAIC0xOTI4LDcgKzE5
MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5jcmVhc2VMaXN0TGV2ZWwoKQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbmNyZWFzZUxpc3RMZXZlbCgpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5jcmVhc2VMaXN0TGV2ZWwoKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNyZWFzZUxpc3RMZXZlbCgpCkBAIC0xOTM2LDcgKzE5MzYsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjcmVhc2VMaXN0TGV2ZWwoKQogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEZWNyZWFzZUxpc3RMZXZlbCgpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGVjcmVhc2VMaXN0TGV2ZWwoKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpjaGFuZ2VMaXN0VHlwZSgpCkBAIC0xOTQ0LDcgKzE5NDQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2hhbmdlTGlzdFR5cGUoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDaGFuZ2VMaXN0VHlwZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Q2hhbmdlTGlzdFR5cGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYXNl
V3JpdGluZ0RpcmVjdGlvbihXcml0aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKQEAgLTE5NTIsNyAr
MTk1Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihXcml0
aW5nRGlyZWN0aW9uIGRpcmVjdGlvbikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oZGlyZWN0aW9uKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhc2VXcml0aW5nRGlyZWN0aW9uKGRpcmVjdGlvbikpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlRm9udEF0dHJpYnV0ZXNBZnRlckVkaXRvclN0
YXRlQ2hhbmdlKCkKQEAgLTE5NzYsNyArMTk3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRO
ZWVkc0ZvbnRBdHRyaWJ1dGVzKGJvb2wgbmVlZHNGb250QXR0cmlidXRlcykKICAgICBtX25lZWRz
Rm9udEF0dHJpYnV0ZXMgPSBuZWVkc0ZvbnRBdHRyaWJ1dGVzOwogCiAgICAgaWYgKGhhc1J1bm5p
bmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0TmVlZHNGb250QXR0cmlidXRlcyhuZWVkc0ZvbnRBdHRyaWJ1dGVzKSwgbV9wYWdlSUQpOwor
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXROZWVkc0ZvbnRBdHRyaWJ1dGVzKG5l
ZWRzRm9udEF0dHJpYnV0ZXMpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6Om1haW50YWluc0lu
YWN0aXZlU2VsZWN0aW9uKCkgY29uc3QKQEAgLTE5OTksNyArMTk5OSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVw
ZGF0ZSgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdEFsbCgpCkBAIC0yMDA3LDcg
KzIwMDcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0QWxsKCkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0QWxsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZWxlY3RBbGwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleGVj
dXRlRWRpdENvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSwgY29uc3QgU3RyaW5nJiBh
cmd1bWVudCwgV1RGOjpGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCkBAIC0yMDE4LDcgKzIwMTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhl
Y3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYg
YQogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhl
Y3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbW1hbmROYW1lLCBhcmd1bWVudCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRp
dENvbW1hbmRXaXRoQ2FsbGJhY2soY29tbWFuZE5hbWUsIGFyZ3VtZW50LCBjYWxsYmFja0lEKSk7
CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0
cmluZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQpCkBAIC0yMDMxLDcgKzIw
MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYQogICAgIGlmIChjb21tYW5kTmFtZSA9PSBp
Z25vcmVTcGVsbGluZ0NvbW1hbmROYW1lKQogICAgICAgICArK21fcGVuZGluZ0xlYXJuT3JJZ25v
cmVXb3JkTWVzc2FnZUNvdW50OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpFeGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZE5hbWUsIGFyZ3VtZW50KSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZChjb21tYW5k
TmFtZSwgYXJndW1lbnQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0
cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWJDb3JlOjpGb250
QXR0cmlidXRlcyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAtMjA0Miw3
ICsyMDQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RGb250QXR0cmlidXRlc0F0U2Vs
ZWN0aW9uU3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBXZWIKICAgICB9CiAKICAgICBhdXRvIGNh
bGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0
YXJ0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVxdWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXR0cmlidXRlc0NhbGxiYWNrKGNvbnN0IFdlYkNvcmU6
OkZvbnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0y
MDYzLDcgKzIwNjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RWRpdGFibGUoYm9vbCBlZGl0
YWJsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RWRpdGFibGUoZWRpdGFi
bGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RWRpdGFibGUo
ZWRpdGFibGUpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNZWRpYVN0cmVhbUNh
cHR1cmVNdXRlZChib29sIG11dGVkKQpAQCAtMjEyOCw5ICsyMTI4LDkgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihEcmFnQ29udHJvbGxlckFjdGlvbiBh
Y3Rpb24sIERyYWcKIAogICAgIEFTU0VSVChkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7CiAgICAg
V2ViU2VsZWN0aW9uRGF0YSBzZWxlY3Rpb24oKmRyYWdEYXRhLnBsYXRmb3JtRGF0YSgpKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxl
ckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLmdsb2Jh
bFBvc2l0aW9uKCksIGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBzZWxl
Y3Rpb24sIGRyYWdEYXRhLmZsYWdzKCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEuY2xp
ZW50UG9zaXRpb24oKSwgZHJhZ0RhdGEuZ2xvYmFsUG9zaXRpb24oKSwgZHJhZ0RhdGEuZHJhZ2dp
bmdTb3VyY2VPcGVyYXRpb25NYXNrKCksIHNlbGVjdGlvbiwgZHJhZ0RhdGEuZmxhZ3MoKSkpOwog
I2Vsc2UKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFn
Q29udHJvbGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLCBzYW5kYm94RXh0ZW5zaW9uSGFuZGxl
LCBzYW5kYm94RXh0ZW5zaW9uc0ZvclVwbG9hZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0
YSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpKTsK
ICNlbmRpZgogfQogCkBAIC0yMTYwLDcgKzIxNjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJh
Z0VuZGVkKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
bwogewogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0VuZGVkKGNsaWVudFBvc2l0
aW9uLCBnbG9iYWxQb3NpdGlvbiwgb3BlcmF0aW9uKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRyYWdFbmRlZChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24s
IG9wZXJhdGlvbikpOwogICAgIHNldERyYWdDYXJldFJlY3QoeyB9KTsKIH0KIApAQCAtMjE3Miwx
MyArMjE3MiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURyYWdPcGVyYXRpb24o
Ym9vbCBoYW5kbGVkKQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0RHJhZygpCiB7CiAgICAg
aWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkU3RhcnREcmFnKCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkU3RhcnREcmFnKCkpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRyYWdDYW5jZWxsZWQoKQogewogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAg
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdDYW5jZWxsZWQoKSwg
bV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnQ2FuY2VsbGVk
KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kRHJhZ2dpbmcoKQpAQCAtMjI3Nyw3
ICsyMjc3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NOZXh0UXVldWVkTW91c2VFdmVu
dCgpCiAgICAgfQogCiAgICAgTE9HKE1vdXNlSGFuZGxpbmcsICJVSVByb2Nlc3M6IHNlbnQgbW91
c2UgZXZlbnQgJXMgKHF1ZXVlIHNpemUgJXp1KSIsIHdlYk1vdXNlRXZlbnRUeXBlU3RyaW5nKGV2
ZW50VHlwZSksIG1fbW91c2VFdmVudFF1ZXVlLnNpemUoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok1vdXNlRXZlbnQoZXZlbnQpKTsKIH0KIAogI2lmIE1FUkdF
X1dIRUVMX0VWRU5UUwpAQCAtMjQzNyw3ICsyNDM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omhh
bmRsZUtleWJvYXJkRXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAK
ICAgICBpZiAobV9rZXlFdmVudFF1ZXVlLnNpemUoKSA9PSAxKSB7IC8vIE90aGVyd2lzZSwgc2Vu
dCBmcm9tIERpZFJlY2VpdmVFdmVudCBtZXNzYWdlIGhhbmRsZXIuCiAgICAgICAgIExPRyhLZXlI
YW5kbGluZywgIiBVSSBwcm9jZXNzOiBzZW50IGtleUV2ZW50IGZyb20gaGFuZGxlS2V5Ym9hcmRF
dmVudCIpOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2
ZW50KGV2ZW50KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpL
ZXlFdmVudChldmVudCkpOwogICAgIH0KIH0KIApAQCAtMjY0Myw3ICsyNjQzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnRTeW5jaHJvbm91c2x5KE5hdGl2ZVdlYlRvdWNo
RXZlbnQmIGV2ZW50KQogCiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3Rh
cnQoKTsKICAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKLSAgICBib29sIHJlcGx5UmVjZWl2ZWQg
PSBtX3Byb2Nlc3MtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYyhl
dmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYzo6UmVwbHkoaGFuZGxlZCks
IG1fcGFnZUlELCAxX3MpOworICAgIGJvb2wgcmVwbHlSZWNlaXZlZCA9IHNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUb3VjaEV2ZW50U3luYyhldmVudCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpU
b3VjaEV2ZW50U3luYzo6UmVwbHkoaGFuZGxlZCksIDFfcyk7CiAgICAgLy8gSWYgdGhlIHN5bmMg
cmVxdWVzdCBoYXMgdGltZWQgb3V0LCB3ZSBzaG91bGQgY29uc2lkZXIgdGhlIGV2ZW50IGhhbmRs
ZWQuIFRoZSBXZWIgUHJvY2VzcyBpcyB0b28gYnVzeSB0byBhbnN3ZXIgYW55IHF1ZXN0aW9ucywg
c28gdGhlIGRlZmF1bHQgYWN0aW9uIGlzIGFsc28gbGlrZWx5IHRvIGhhdmUgaXNzdWVzLgogICAg
IGlmICghcmVwbHlSZWNlaXZlZCkKICAgICAgICAgaGFuZGxlZCA9IHRydWU7CkBAIC0yNjg3LDcg
KzI2ODcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBOYXRp
dmVXZWJUb3VjaEV2ZW50JiBldmVudCkKICAgICBpZiAoIW1faXNQYWdlU3VzcGVuZGVkKSB7CiAg
ICAgICAgIG1fdG91Y2hFdmVudFF1ZXVlLmFwcGVuZChldmVudCk7CiAgICAgICAgIG1fcHJvY2Vz
cy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCksIG1fcGFnZUlEKTsKKyAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudChldmVudCkpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmIChtX3RvdWNoRXZlbnRRdWV1ZS5pc0VtcHR5KCkpIHsKICAgICAgICAg
ICAgIGJvb2wgaXNFdmVudEhhbmRsZWQgPSBmYWxzZTsKQEAgLTI3MDgsMTIgKzI3MDgsMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hF
dmVudCYgZXZlbnQpCiAjaWYgRU5BQkxFKFBPSU5URVJfRVZFTlRTKQogdm9pZCBXZWJQYWdlUHJv
eHk6OmNhbmNlbFBvaW50ZXIoV2ViQ29yZTo6UG9pbnRlcklEIHBvaW50ZXJJZCwgY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGRvY3VtZW50UG9pbnQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxQb2ludGVyKHBvaW50ZXJJZCwgZG9jdW1lbnRQb2ludCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxQb2ludGVyKHBv
aW50ZXJJZCwgZG9jdW1lbnRQb2ludCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dG91Y2hX
aXRoSWRlbnRpZmllcldhc1JlbW92ZWQoV2ViQ29yZTo6UG9pbnRlcklEIHBvaW50ZXJJZCkKIHsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoV2l0aElkZW50aWZp
ZXJXYXNSZW1vdmVkKHBvaW50ZXJJZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUb3VjaFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChwb2ludGVySWQpKTsKIH0KICNl
bmRpZgogCkBAIC0yNzIyLDcgKzI3MjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2Nyb2xsQnko
U2Nyb2xsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2xsR3JhbnVsYXJpdHkgZ3JhbnVsYQogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY3JvbGxCeShkaXJlY3Rpb24sIGdyYW51bGFy
aXR5KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjcm9sbEJ5KGRp
cmVjdGlvbiwgZ3JhbnVsYXJpdHkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNlbnRlclNl
bGVjdGlvbkluVmlzaWJsZUFyZWEoKQpAQCAtMjczMCw3ICsyNzMwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEoKQogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVh
KCkpOwogfQogCiBjbGFzcyBXZWJQYWdlUHJveHk6OlBvbGljeURlY2lzaW9uU2VuZGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8UG9saWN5RGVjaXNpb25TZW5kZXI+IHsKQEAgLTI4NzMsNyArMjg3Myw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlv
biBhY3Rpb24sIEFQSTo6TmF2aWdhdGlvbioKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92
aXNpb25hbFBhZ2UodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1
aW50MzJfdCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNl
cnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJD
b3JlOjpIYXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdl
OiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCku
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImNvbW1pdFByb3Zpc2lvbmFsUGFnZTogcHJldmlvdXNQSUQgPSAlaSwgbmV3
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFtZUlE
SW5QcmV2aW91c1Byb2Nlc3MgPSBtX21haW5GcmFtZSA/IG1ha2VPcHRpb25hbChtX21haW5GcmFt
ZS0+ZnJhbWVJRCgpKSA6IFdURjo6bnVsbG9wdDsKIApAQCAtMjg5Niw3ICsyODk2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogICAgIC8vIFRoZXJlIGlzIG5vIHdheSB3ZSdsbCBiZSBh
YmxlIHRvIHJldHVybiB0byB0aGUgcGFnZSBpbiB0aGUgcHJldmlvdXMgcGFnZSBzbyBjbG9zZSBp
dC4KICAgICBpZiAoIWRpZFN1c3BlbmRQcmV2aW91c1BhZ2UpCi0gICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgcGFnZUlEKCkpOworICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpKTsKIAogICAgIHN3YXBUb1dlYlByb2Nlc3MobV9w
cm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnRha2VEcmF3aW5n
QXJlYSgpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+bWFpbkZyYW1lKCkpOwogCkBAIC0yOTEzLDcgKzI5
MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29u
dGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwg
c3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlUHJveHks
IFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRC
eUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQ
YWdlID0gJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBuZXdQ
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQ
cm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIG5ld1Byb2Nlc3NQSUQg
PSAlaSwgaGFzU3VzcGVuZGVkUGFnZSA9ICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5h
dmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRp
b24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKIAogICAgIGlm
IChtX3Byb3Zpc2lvbmFsUGFnZSkgewpAQCAtMjk4OCw3ICsyOTg4LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldFVzZXJBZ2VudChTdHJpbmcmJiB1c2VyQWdlbnQpCiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFVzZXJBZ2VudChtX3VzZXJBZ2VudCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VyQWdlbnQobV91c2VyQWdlbnQpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChjb25z
dCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSkKQEAgLTMwMjUsNyArMzAyNSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKICAgICBt
X2lzUGFnZVN1c3BlbmRlZCA9IGZhbHNlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWN0aXZlRE9NT2JqZWN0c0Fu
ZEFuaW1hdGlvbnMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMoKQpAQCAtMzAzNSw3ICszMDM1LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAKICAgICBtX2lz
UGFnZVN1c3BlbmRlZCA9IHRydWU7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRB
bmltYXRpb25zKCkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c3VwcG9ydHNUZXh0RW5jb2Rp
bmcoKSBjb25zdApAQCAtMzA1Miw3ICszMDUyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEN1
c3RvbVRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiBlbmNvZGluZ05hbWUpCiAKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2Rp
bmdOYW1lKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEN1c3Rv
bVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmdOYW1lKSk7CiB9CiAKIFNlc3Npb25TdGF0ZSBXZWJQ
YWdlUHJveHk6OnNlc3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mKT4mJiBmaWx0ZXIpIGNvbnN0CkBAIC0zMDc0LDcgKzMwNzQsNyBAQCBTZXNzaW9u
U3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxib29sIChXZWJC
YWNrRm9yd2FyZExpc3RJdAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUsIGJvb2wg
bmF2aWdhdGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdG9y
ZUZyb21TZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9zZXNzaW9uUmVzdG9yYXRpb25SZW5kZXJUcmVlU2l6
ZSA9IDA7CiAgICAgbV9oaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCA9IGZhbHNlOwpAQCAtMzA4
Myw3ICszMDgzLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZXN0
b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2kKIAogICAgIGlmIChoYXNCYWNr
Rm9yd2FyZExpc3QpIHsKICAgICAgICAgbV9iYWNrRm9yd2FyZExpc3QtPnJlc3RvcmVGcm9tU3Rh
dGUoV1RGTW92ZShzZXNzaW9uU3RhdGUuYmFja0ZvcndhcmRMaXN0U3RhdGUpKTsKLSAgICAgICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0Zv
cndhcmRMaXN0LT5pdGVtU3RhdGVzKCkpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlc3RvcmVTZXNzaW9uKG1fYmFja0ZvcndhcmRMaXN0LT5pdGVtU3RhdGVz
KCkpKTsKIAogICAgICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5z
YWN0aW9uKCk7CiAgICAgICAgIG1fcGFnZUxvYWRTdGF0ZS5zZXRDYW5Hb0JhY2sodHJhbnNhY3Rp
b24sIG1fYmFja0ZvcndhcmRMaXN0LT5iYWNrSXRlbSgpKTsKQEAgLTMxMzEsNyArMzEzMSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRUZXh0Wm9vbUZhY3Rvcihkb3VibGUgem9vbUZhY3RvcikK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dFpvb21GYWN0b3IobV90ZXh0
Wm9vbUZhY3RvciksIG1fcGFnZUlEKTsgCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
VGV4dFpvb21GYWN0b3IobV90ZXh0Wm9vbUZhY3RvcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCkBAIC0zMTQ2LDcgKzMxNDYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZVpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0
b3IpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2Vab29tRmFjdG9yKG1f
cGFnZVpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFBhZ2Vab29tRmFjdG9yKG1fcGFnZVpvb21GYWN0b3IpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBk
b3VibGUgdGV4dFpvb21GYWN0b3IpCkBAIC0zMTYyLDcgKzMxNjIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhkb3VibGUgcGFnZVpvb21GYWN0b3IsIGRv
dWJsZSB0ZXh0WgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlQW5kVGV4
dFpvb21GYWN0b3JzKG1fcGFnZVpvb21GYWN0b3IsIG1fdGV4dFpvb21GYWN0b3IpLCBtX3BhZ2VJ
RCk7IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VBbmRUZXh0Wm9vbUZhY3Rv
cnMobV9wYWdlWm9vbUZhY3RvciwgbV90ZXh0Wm9vbUZhY3RvcikpOwogfQogCiBkb3VibGUgV2Vi
UGFnZVByb3h5OjpwYWdlWm9vbUZhY3RvcigpIGNvbnN0CkBAIC0zMTkyLDcgKzMxOTIsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVQYWdlKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQm
IG9yaWdpbikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlKHNjYWxl
LCBvcmlnaW4pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQ
YWdlKHNjYWxlLCBvcmlnaW4pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFnZUlu
Vmlld0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIGNlbnRlckluVmll
d0Nvb3JkaW5hdGVzKQpAQCAtMzIwNCw3ICszMjA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNj
YWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKGRvdWJsZSBzY2FsZSwgY29uc3QgSW50UG9pbnQmIGNl
bnQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVQYWdlSW5WaWV3Q29vcmRp
bmF0ZXMoc2NhbGUsIGNlbnRlckluVmlld0Nvb3JkaW5hdGVzKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKHNjYWxlLCBj
ZW50ZXJJblZpZXdDb29yZGluYXRlcykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVW
aWV3KGRvdWJsZSBzY2FsZSkKQEAgLTMyMTYsNyArMzIxNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzY2FsZVZpZXcoZG91YmxlIHNjYWxlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTY2FsZVZpZXcoc2NhbGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2NhbGVWaWV3KHNjYWxlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbnRyaW5z
aWNEZXZpY2VTY2FsZUZhY3RvcihmbG9hdCBzY2FsZUZhY3RvcikKQEAgLTMyMzUsNyArMzIzNSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aW5kb3dTY3JlZW5EaWRDaGFuZ2UoUGxhdGZvcm1EaXNw
bGF5SUQgZGlzcGxheUlEKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dT
Y3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OldpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpKTsKIH0KIAogZmxvYXQg
V2ViUGFnZVByb3h5OjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CkBAIC0zMjc0LDcgKzMyNzQs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXNzaWJpbGl0eVNldHRpbmdzRGlk
Q2hhbmdlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2Nlc3Np
YmlsaXR5U2V0dGluZ3NEaWRDaGFuZ2UoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRV
c2VGaXhlZExheW91dChib29sIGZpeGVkKQpAQCAtMzI5MSw3ICszMjkxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFVzZUZpeGVkTGF5b3V0KGJvb2wgZml4ZWQpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZUZpeGVkTGF5b3V0KGZpeGVkKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSkKQEAgLTMzMDQsNyArMzMwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaXhlZExheW91
dFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NI
b3Jpem9udGFsU2Nyb2xsZXIpCkBAIC0zMzE3LDcgKzMzMTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYm9vbCBhbHdheXNTaG93c0hvcml6
b250YWxTYwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c0hv
cml6b250YWxTY3JvbGxlcihhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c0hvcml6b250YWxT
Y3JvbGxlcihhbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcikpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NW
ZXJ0aWNhbFNjcm9sbGVyKQpAQCAtMzMzMCw3ICszMzMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzVmVydGljYWxT
Y3JvbGwKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NWZXJ0
aWNhbFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlciksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIo
YWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojps
aXN0ZW5Gb3JMYXlvdXRNaWxlc3RvbmVzKE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3Rv
bmU+IG1pbGVzdG9uZXMpCkBAIC0zMzQzLDcgKzMzNDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0
b25lPgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMaXN0ZW5Gb3JMYXlvdXRNaWxl
c3RvbmVzKG1pbGVzdG9uZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoYm9vbCBzdXBwcmVzc0Fu
aW1hdGlvbnMpCkBAIC0zMzU2LDcgKzMzNTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3Vw
cHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMo
c3VwcHJlc3NBbmltYXRpb25zKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhzdXBwcmVzc0FuaW1hdGlvbnMpKTsK
IH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnJ1YmJlckJhbmRzQXRMZWZ0KCkgY29uc3QKQEAgLTM0
MDgsNyArMzQwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRFbmFibGVWZXJ0aWNhbFJ1YmJl
ckJhbmRpbmcoYm9vbCBlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpCiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhlbmFibGVWZXJ0
aWNhbFJ1YmJlckJhbmRpbmcpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGVuYWJsZVZlcnRpY2FsUnViYmVyQmFu
ZGluZykpOwogfQogICAgIAogYm9vbCBXZWJQYWdlUHJveHk6OnZlcnRpY2FsUnViYmVyQmFuZGlu
Z0lzRW5hYmxlZCgpIGNvbnN0CkBAIC0zNDI1LDcgKzM0MjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoYm9vbCBlbmFibGVIb3Jpem9udGFs
UnViYmVyQgogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVIb3Jpem9u
dGFsUnViYmVyQmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZyksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVIb3Jpem9udGFsUnViYmVy
QmFuZGluZyhlbmFibGVIb3Jpem9udGFsUnViYmVyQmFuZGluZykpOwogfQogICAgIAogYm9vbCBX
ZWJQYWdlUHJveHk6Omhvcml6b250YWxSdWJiZXJCYW5kaW5nSXNFbmFibGVkKCkgY29uc3QKQEAg
LTM0NDIsNyArMzQ0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kRXh0ZW5k
c0JleW9uZFBhZ2UoYm9vbCBiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhCiAKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShiYWNrZ3Jv
dW5kRXh0ZW5kc0JleW9uZFBhZ2UpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJhY2tncm91bmRFeHRlbmRzQmV5
b25kUGFnZSkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6YmFja2dyb3VuZEV4dGVuZHNCZXlv
bmRQYWdlKCkgY29uc3QKQEAgLTM0NTksNyArMzQ1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRQYWdpbmF0aW9uTW9kZShXZWJDb3JlOjpQYWdpbmF0aW9uOjpNb2RlIG1vZGUpCiAKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRpb25Nb2RlKG1vZGUpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbk1vZGUobW9kZSkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1u
cyhib29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKQEAgLTM0NzEsNyArMzQ3MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJvb2wgYmVoYXZlc0xp
a2VDb2x1bW5zKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9u
QmVoYXZlc0xpa2VDb2x1bW5zKGJlaGF2ZXNMaWtlQ29sdW1ucyksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uQmVoYXZlc0xpa2VDb2x1bW5zKGJl
aGF2ZXNMaWtlQ29sdW1ucykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxlbmd0
aChkb3VibGUgcGFnZUxlbmd0aCkKQEAgLTM0ODMsNyArMzQ4Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRQYWdlTGVuZ3RoKGRvdWJsZSBwYWdlTGVuZ3RoKQogCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRQYWdlTGVuZ3RoKHBhZ2VMZW5ndGgpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMoZG91YmxlIGdhcCkKQEAgLTM0
OTUsNyArMzQ5NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRHYXBCZXR3ZWVuUGFnZXMoZG91
YmxlIGdhcCkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0R2FwQmV0d2VlblBh
Z2VzKGdhcCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRHYXBC
ZXR3ZWVuUGFnZXMoZ2FwKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9u
TGluZUdyaWRFbmFibGVkKGJvb2wgbGluZUdyaWRFbmFibGVkKQpAQCAtMzUwNyw3ICszNTA3LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbCBs
aW5lR3JpZEVuYWJsZWQpCiAgICAgCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQ
YWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxpbmVHcmlkRW5hYmxlZCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGxp
bmVHcmlkRW5hYmxlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGFnZVNjYWxlRmFjdG9y
RGlkQ2hhbmdlKGRvdWJsZSBzY2FsZUZhY3RvcikKQEAgLTM1MzIsMjcgKzM1MzIsMjcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBG
aW5kT3B0aW9ucyBvcHRpb25zLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9w
dGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogewotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlv
bnMsIG1heE1hdGNoQ291bnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCkK
IHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEltYWdlRm9yRmlu
ZE1hdGNoKG1hdGNoSW5kZXgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0SW1hZ2VGb3JGaW5kTWF0Y2gobWF0Y2hJbmRleCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2VsZWN0RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCkKIHsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEZpbmRNYXRjaChtYXRjaEluZGV4KSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEZpbmRNYXRjaCht
YXRjaEluZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlRmluZFVJKCkKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVGaW5kVUkoKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCkBAIC0zNTYwLDcg
KzM1NjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLAogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENv
dW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvdW50U3RyaW5n
TWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rvcjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMs
IGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnRUZXh0LCBib29sIHNlbGVjdGlvbk9ubHksIEZ1bmN0
aW9uPHZvaWQodWludDY0X3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrKQpAQCAt
MzU3MSw3ICszNTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VNYXRjaGVzKFZlY3Rv
cjx1aW50MzJfdD4mJiBtYXRjaEluZGljZXMsIGNvbnN0IFN0cmluZyYKICAgICB9CiAKICAgICBh
dXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZNb3ZlKG1hdGNo
SW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlTWF0Y2hlcyhXVEZN
b3ZlKG1hdGNoSW5kaWNlcyksIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSwgY2FsbGJh
Y2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5l
Y2Vzc2FyeSgpCkBAIC0zNTk2LDE0ICszNTk2LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
CiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUs
IHdvcmxkTmFtZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzY3JpcHQsIGZvcmNl
VXNlckdlc3R1cmUsIHdvcmxkTmFtZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEluRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgYm9vbCBoYWRFeGNlcHRpb24sIGNvbnN0IEV4Y2VwdGlv
bkRldGFpbHMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIEFTU0VSVChtYWluRnJhbWUoKS0+ZnJhbWVJRCgpICE9IGZyYW1lSUQpOwogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluRnJhbWUoZnJh
bWVJRCwgc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbkZyYW1lKGZyYW1lSUQs
IHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpGdW5jdGlv
bjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQpAQCAtMzYxNCw3ICszNjE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRl
clRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QKICAg
ICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRS
ZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2Vu
dGF0aW9uKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZv
ckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0
cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNjI2
LDcgKzM2MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U291cmNlRm9yRnJhbWUoV2ViRnJh
bWVQcm94eSogZnJhbWUsIFdURjo6RnVuY3Rpb248dm9pZCAoYwogICAgIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3By
b2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9h
ZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFt
ZUlEKCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0U291cmNlRm9yRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCkBAIC0zNjM4LDcgKzM2MzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0Q29udGVudHNB
c1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYQogICAgIAog
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNTdHJp
bmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09B
KQpAQCAtMzY0OSw3ICszNjQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNB
dHRyaWJ1dGVkU3RyaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgQXQKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNBdHRyaWJ1dGVkU3RyaW5n
KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmlu
ZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApAQCAtMzY2Miw3
ICszNjYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldEJ5dGVjb2RlUHJvZmlsZShXVEY6OkZ1
bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWMKICAgICAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWRE
ZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2ZpbGUoY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRCeXRlY29kZVByb2Zp
bGUoY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9m
aWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNjc0LDcgKzM2NzQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChXVEY6OkZ1bmN0aW9uPHZv
aWQgKGNvbnN0IFN0cmluZyYsCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2Fs
bGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0U2FtcGxpbmdQcm9maWxlck91dHB1dChjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQo
Y2FsbGJhY2tJRCkpOwogfQogCiAjaWYgRU5BQkxFKE1IVE1MKQpAQCAtMzY4Niw3ICszNjg2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNNSFRNTERhdGEoRnVuY3Rpb248dm9p
ZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXMKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldENvbnRlbnRzQXNNSFRNTERhdGEoY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhU
TUxEYXRhKGNhbGxiYWNrSUQpKTsKIH0KICNlbmRpZgogCkBAIC0zNjk4LDcgKzM2OTgsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uT3JDb250ZW50c0FzU3RyaW5nKFdURjo6RnVu
Y3Rpb248dm9pZCAoY29uc3QgU3RyaQogICAgIH0KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVj
dGlvbk9yQ29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0
YSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0zNzA5LDcg
KzM3MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0
YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYgogICAgIH0KICAgICAKICAgICBhdXRv
IGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwg
bV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGlvbkFzV2ViQXJjaGl2
ZURhdGEoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZy
YW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQpAQCAtMzcyMCw3ICszNzIwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldE1haW5SZXNvdXJjZURhdGFPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlv
bjx2b2kKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1haW5SZXNv
dXJjZURhdGFPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgQVBJOjpVUkwqIHJlc291cmNlVVJMLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzczMSw3ICszNzMx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlc291cmNlRGF0YUZyb21GcmFtZShXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgQVBJOjpVUkwqIHJlc28KICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxs
YmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoZnJh
bWUtPmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFJlc291cmNlRGF0YUZyb21GcmFt
ZShmcmFtZS0+ZnJhbWVJRCgpLCByZXNvdXJjZVVSTC0+c3RyaW5nKCksIGNhbGxiYWNrSUQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCBGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzc0Miw3ICszNzQyLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBGdW5jdGlv
bjx2b2lkIChBUEkKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFj
a0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFdlYkFyY2hp
dmVPZkZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQdHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQpA
QCAtMzc3Niw3ICszNzc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvcmNlUmVwYWludChSZWZQ
dHI8Vm9pZENhbGxiYWNrPiYmIGNhbGxiYWNrKQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoZGlkRm9yY2VSZXBhaW50Q2FsbGJhY2spLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fZHJhd2luZ0Fy
ZWEtPndhaXRGb3JCYWNraW5nU3RvcmVVcGRhdGVPbk5leHRQYWludCgpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rm9yY2VSZXBhaW50KGNhbGxiYWNrSUQpLCBtX3Bh
Z2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxsYmFj
a0lEKSk7CiB9CiAKIHN0YXRpYyBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBwcmludGluZ1Nl
bmRPcHRpb25zKGJvb2wgaXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pCkBAIC0zODAyLDcg
KzM4MDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogICAg
IC8vIGV2ZW4gaWYgbm90aGluZyBjaGFuZ2VkIGluIFVJIHByb2Nlc3MsIHNvIHRoYXQgb3ZlcnJp
ZGVzIGdldCByZW1vdmVkLgogCiAgICAgLy8gUHJlZmVyZW5jZXMgbmVlZCB0byBiZSB1cGRhdGVk
IGR1cmluZyBzeW5jaHJvbm91cyBwcmludGluZyB0byBtYWtlICJwcmludCBiYWNrZ3JvdW5kcyIg
cHJlZmVyZW5jZSB3b3JrIHdoZW4gdG9nZ2xlZCBmcm9tIGEgcHJpbnQgZGlhbG9nIGNoZWNrYm94
LgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UHJlZmVyZW5jZXNEaWRD
aGFuZ2UocHJlZmVyZW5jZXNTdG9yZSgpKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMo
bV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3RvcmUoKSksIHByaW50aW5n
U2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCkBAIC0z
OTMyLDggKzM5MzIsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmCiAgICAgaWYgKGZyYW1lLT5p
c01haW5GcmFtZSgpICYmIG5hdmlnYXRpb25JRCkKICAgICAgICAgbmF2aWdhdGlvbiA9IG5hdmln
YXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKIAotICAgIExPRyhMb2FkaW5n
LCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklE
ICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX3BhZ2VJRCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJh
bWVJRCk7CisgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJv
Y2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUi
IFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1fcGFnZUlELnRv
VUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQsIG5hdmlnYXRp
b25JRCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAg
ICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAg
LTM5ODUsNyArMzk4NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlk
UmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJ
RCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlE
LCBuYXZpZ2F0aW9uSUQsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGly
ZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQp
OwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApA
QCAtNDAxNCw3ICs0MDE0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjwKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIHVybCwgZG91YmxlIGRlbGF5LCBXZWJDb3JlOjpMb2NrQmFja0Zv
cndhcmRMaXN0KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIndpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQwMjcsNyArNDAy
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
YW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JG
cmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRp
cmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC00MDc0LDggKzQwNzQsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNl
Y3VyaQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yLCBXaWxsQ29udGludWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBX
ZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELCBwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQ
YWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZSB0byBwcm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELnRvVUludDY0
KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5k
YXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCBlcnJvci5k
b21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xp
ZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MTQxLDkgKzQxNDEs
OSBAQCBzdGF0aWMgYm9vbCBpc05vblVuaXF1ZU5hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb24o
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhIHJlcQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29t
bWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRl
ciwgdWludDMyX3Qgb3BhcXVlRnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0
aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKIHsKLSAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJv
eHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJ
dTY0LCBtX3BhZ2VJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBMT0coTG9hZGluZywgIihMb2FkaW5n
KSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmln
YXRpb24gJSIgUFJJdTY0LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOwogICAg
IExPRyhCYWNrRm9yd2FyZCwgIihCYWNrL0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0LCBiYWNr
L2ZvcndhcmQgbGlzdCBpcyBub3c6JXMiLCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2luZ1N0cmlu
ZygpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2Fk
Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZv
ckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC00MjU0LDcgKzQyNTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29t
bWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRh
dGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQyNzgsNyArNDI3OCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hM
b2FkRm9yRnJhbWUgLSBXZWJQYWdlUHJveHkgJXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0
ICIgZGlkRmluaXNoTG9hZCIsIHRoaXMsIG5hdmlnYXRpb25JRCk7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFn
ZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDMyMyw3ICs0
MzIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJh
bWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJy
b3IuZXJyb3JDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRp
ZEZhaWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCBlcnJvci5k
b21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xp
ZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MzY1LDcgKzQzNjUs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCB1aW50MzJfdCBvcGFxdWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJM
JiYgdXJsLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCks
IGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVu
dCgpKTsKIApAQCAtNDUzNSw3ICs0NTM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2Fm
ZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJMJiwgYm9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW4KICNl
bmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKKyAgICBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJ
bmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAgICAgZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVm
KCksIGZyYW1lSUQsIFdURk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5h
dmlnYXRpb25JRCwgV1RGTW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCkBAIC00NTQzLDcgKzQ1
NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcgogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwKLSAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
RGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwK
ICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CkBA
IC00NTU5LDcgKzQ1NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
Ci0gICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJ
bmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYg
c2VuZGVyKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uIC0gT3JpZ2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdldCBVUkwg
JXMiLCBvcmlnaW5hbFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVz
dC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQ2OTksNyArNDY5OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzCiAgICAgICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGlu
Z0ZyYW1lID09ICZmcmFtZSkKICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0
aW9uRnJhbWVJbmZvLmNvcHlSZWYoKTsKICAgICAgICAgZWxzZSBpZiAoIWZyb21BUEkpCi0gICAg
ICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKG9y
aWdpbmF0aW5nUGFnZUlEKSA6IG51bGxwdHIpOworICAgICAgICAgICAgc291cmNlRnJhbWVJbmZv
ID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdp
bmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVs
bHB0cik7CiAKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwcm9jZXNzLT51
c2VySW5pdGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tl
bklkZW50aWZpZXIpOwogICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3Vs
ZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KQEAgLTQ3NzIs
NyArNDc3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3Qg
V2ViRnJhbWVQcm94eSYgZnJhbWUsIGNvbnN0IFVSTCYgcGFnCiAjZW5kaWYKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZy
YW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAg
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0Rh
dGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAg
LTQ3OTAsNyArNDc5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzCiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJ
bmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAg
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTQ4MjEsNyArNDgyMSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpCiAgICAgICAgIEFTU0VSVF9VTlVTRUQoc2FmZUJyb3dz
aW5nV2FybmluZywgIXNhZmVCcm93c2luZ1dhcm5pbmcpOwogCiAgICAgICAgIGF1dG8gc2VuZGVy
ID0gUG9saWN5RGVjaXNpb25TZW5kZXI6OmNyZWF0ZShpZGVudGlmaWVyLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGZyYW1lSUQsIGxpc3RlbmVySURdIChh
dXRvLi4uIGFyZ3MpIHsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFyZ3Mu
Li4pLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWVJRCwgbGlzdGVuZXJJRCwgYXJncy4uLikpOwogICAg
ICAgICB9KTsKIAogICAgICAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKHBvbGljeUFjdGlvbiwg
bnVsbHB0ciwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKHNlbmRlcikpOwpAQCAtNDkwNyw3ICs0OTA3
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnMKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vz
cywgc291cmNlRnJhbWUpOwogCiAgICAgbV9mb3JtQ2xpZW50LT53aWxsU3VibWl0Rm9ybSgqdGhp
cywgKmZyYW1lLCAqc291cmNlRnJhbWUsIHRleHRGaWVsZFZhbHVlcywgbV9wcm9jZXNzLT50cmFu
c2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgZnJhbWVJRCwgbGlzdGVuZXJJRF0oKSB7Ci0g
ICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGludWVXaWxsU3Vi
bWl0Rm9ybShmcmFtZUlELCBsaXN0ZW5lcklEKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb250aW51ZVdpbGxTdWJtaXRGb3JtKGZyYW1lSUQsIGxpc3RlbmVy
SUQpKTsKICAgICB9KTsKIH0KIApAQCAtNDkyMyw3ICs0OTIzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRh
U3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25E
YXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgV2ViTmF2aWdh
dGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFy
ZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50
KCkpOwogCkBAIC00OTQzLDcgKzQ5NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9y
bUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGly
ZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlE
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtQ2xpZW50
UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC00OTcwLDcgKzQ5NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBj
b25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxT
dHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1l
SUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNl
cnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQo
KSk7CiAKQEAgLTUwMTgsMTQgKzUwMTgsMTQgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJf
QURESVRJT05TXzYKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFn
ZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0
dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVk
UmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZy
YW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5k
b3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9w
cm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwotICAg
IGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdp
bmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlE
KSk7CisgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IG1fcHJvY2Vz
cy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CiAgICAgYXV0byBtYWlu
RnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwoKSA6IFVSTCgpOwogICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChS
ZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFuZXdQ
YWdlKSB7Ci0gICAgICAgICAgICByZXBseSgwLCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAg
cmVwbHkoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTUzNzQsNyArNTM3NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5P
cGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd1NoYXJlU2hlZXQoY29uc3QgU2hhcmVEYXRhV2l0aFBh
cnNlZFVSTCYgc2hhcmVEYXRhLCBTaGFyZVNoZWV0Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewog
ICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyID0gW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2tJRF0gKGJvb2wgYWNj
ZXNzKSB7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29t
cGxldGVTaGFyZVNoZWV0KGFjY2VzcywgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ29tcGxldGVTaGFyZVNoZWV0KGFjY2VzcywgY2Fs
bGJhY2tJRCkpOwogICAgIH07CiAgICAgCiAgICAgcGFnZUNsaWVudCgpLnNob3dTaGFyZVNoZWV0
KHNoYXJlRGF0YSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpAQCAtNTQwNiw3ICs1NDA2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1lZGlhVm9sdW1lKGZsb2F0IHZvbHVtZSkKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1lKHZvbHVtZSks
IG1fcGFnZUlEKTsgICAgCisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWVkaWFWb2x1
bWUodm9sdW1lKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNdXRlZChXZWJDb3JlOjpN
ZWRpYVByb2R1Y2VyOjpNdXRlZFN0YXRlRmxhZ3Mgc3RhdGUpCkBAIC01NDIyLDcgKzU0MjIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0
ZWRTdGF0ZUZsYWdzIHN0YXRlKQogICAgICAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2lu
Z2xldG9uKCkubXV0ZUNhcHR1cmVNZWRpYVN0cmVhbXNFeGNlcHRJbigqdGhpcyk7CiAjZW5kaWYK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TXV0ZWQoc3RhdGUp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TXV0ZWQoc3RhdGUp
KTsKICAgICBhY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgQWN0aXZpdHlTdGF0ZTo6SXNBdWRpYmxl
LCBBY3Rpdml0eVN0YXRlOjpJc0NhcHR1cmluZ01lZGlhIH0pOwogfQogCkBAIC01NDQ0LDcgKzU0
NDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcE1lZGlhQ2FwdHVyZSgpCiAgICAgICAgIHJl
dHVybjsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0dXJlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTWVkaWFDYXB0dXJlKCkpOwogI2VuZGlmCiB9CiAKQEAg
LTU0NTMsNyArNTQ1Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wQWxsTWVkaWFQbGF5YmFj
aygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BBbGxNZWRpYVBsYXliYWNr
KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wQWxsTWVkaWFQ
bGF5YmFjaygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN1c3BlbmRBbGxNZWRpYVBsYXli
YWNrKCkKQEAgLTU0NjEsNyArNTQ2MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWxs
TWVkaWFQbGF5YmFjaygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRB
bGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJl
c3VtZUFsbE1lZGlhUGxheWJhY2soKQpAQCAtNTQ2OSw3ICs1NDY5LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJlc3VtZUFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkpOwogfQogCiAjaWYgRU5B
QkxFKE1FRElBX1NFU1NJT04pCkBAIC01NDc4LDcgKzU0NzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6aGFuZGxlTWVkaWFFdmVudChNZWRpYUV2ZW50VHlwZSBldmVudFR5cGUpCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVNZWRpYUV2ZW50KGV2ZW50VHlwZSksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVNZWRpYUV2ZW50KGV2
ZW50VHlwZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vm9sdW1lT2ZNZWRpYUVsZW1l
bnQoZG91YmxlIHZvbHVtZSwgdWludDY0X3QgZWxlbWVudElEKQpAQCAtNTQ4Niw3ICs1NDg2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1
bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1lLCBlbGVtZW50SUQpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vm9sdW1lT2ZNZWRpYUVsZW1lbnQodm9sdW1l
LCBlbGVtZW50SUQpKTsKIH0KICNlbmRpZgogCkBAIC01NTAwLDcgKzU1MDAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0TWF5U3RhcnRNZWRpYVdoZW5JbldpbmRvdyhib29sIG1heVN0YXJ0TWVk
aWEpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWF5U3RhcnRNZWRpYVdoZW5J
bldpbmRvdyhtYXlTdGFydE1lZGlhKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cobWF5U3RhcnRNZWRpYSkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlRG93bmxvYWRSZXF1ZXN0KERvd25sb2FkUHJveHkm
IGRvd25sb2FkKQpAQCAtNTU0Nyw3ICs1NTQ3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENo
b29zZUNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlQ29sb3IoY29sb3IpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlQ29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yUGlja2VyKCkKQEAgLTU1NTYsNyArNTU1Niw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRFbmRDb2xvclBpY2tlcigpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZEVuZENvbG9yUGlja2VyKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRDb2xvclBpY2tlcigpKTsKIH0KICNlbmRpZgogCkBAIC01
NTkwLDcgKzU1OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2xvc2VTdWdnZXN0aW9ucygp
CiAgICAgICAgIHJldHVybjsKIAogICAgIG1fZGF0YUxpc3RTdWdnZXN0aW9uc0Ryb3Bkb3duID0g
bnVsbHB0cjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENsb3Nl
U3VnZ2VzdGlvbnMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZENsb3NlU3VnZ2VzdGlvbnMoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTZWxlY3RP
cHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKQEAgLTU1OTgsNyArNTU5OCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTZWxlY3RPcHRpb24oY29uc3QgU3RyaW5nJiBzZWxlY3Rl
ZE9wdGlvbikKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0RGF0YUxp
c3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkU2VsZWN0RGF0YUxpc3RPcHRpb24oc2VsZWN0ZWRPcHRpb24pKTsKIH0KIAog
I2VuZGlmCkBAIC01NjUxLDcgKzU2NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QWxsb3dz
TWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJvb2wgYWxsb3dzKQogICAgICAgICByZXR1cm47
CiAgICAgbV9hbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2sgPSBhbGxvd3M7CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsbG93c01lZGlhRG9jdW1l
bnRJbmxpbmVQbGF5YmFjayhhbGxvd3MpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGFsbG93cykpOwog
fQogI2VuZGlmCiAKQEAgLTU4MzQsMTcgKzU4MzQsMTcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2Vi
UGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fcGFnZUlEOworICAgIHJldHVybiBtX3BhZ2VJRC50b1VJbnQ2NCgpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5
KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShu
ZXdTZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRl
eCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dEZyb21JdGVtRm9yUG9wdXBNZW51
KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBpbmRleCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRGb3JBY3RpdmVQb3B1cE1lbnUoaW5kZXgpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEZvckFjdGl2ZVBv
cHVwTWVudShpbmRleCkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6aXNQcm9jZXNzaW5nS2V5
Ym9hcmRFdmVudHMoKSBjb25zdApAQCAtNTg3OSwxMyArNTg3OSwxMyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5h
bWUsIEFQSTo6TwogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5LCBtYWtlIHN1cmUg
d2UgbGF1bmNoIHRoZSBpbml0aWFsIHByb2Nlc3MgaWYgdGhlIGNsaWVudCBhc2tzIHRvIHBvc3Qg
YSBtZXNzYWdlIHRvIGl0cyBpbmplY3RlZCBidW5kbGUgYmVmb3JlIGRvaW5nIGEgbG9hZC4KICAg
ICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CiAKLSAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlTmFt
ZSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJv
ZHkpLmdldCgpKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQb3N0
SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0YShwcm9jZXNzKCkudHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkuZ2V0KCkpKSk7CiB9CiAKICNpZiBQ
TEFURk9STShHVEspCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZmFpbGVkVG9TaG93UG9wdXBNZW51KCkK
IHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZhaWxlZFRvU2hvd1Bv
cHVwTWVudSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmFpbGVk
VG9TaG93UG9wdXBNZW51KCkpOwogfQogI2VuZGlmCiAKQEAgLTU5NTIsNyArNTk1Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzaG93Q29udGV4dE1lbnUoQ29udGV4dE1lbnVDb250ZXh0RGF0YSYm
IGNvbnRleHRNZW51Q29udGV4dERhCiAgICAgbV9hY3RpdmVDb250ZXh0TWVudS0+c2hvdygpOwog
CiAgICAgLy8gTm8gbWF0dGVyIHRoZSByZXN1bHQgb2YgaW50ZXJuYWxTaG93Q29udGV4dE1lbnUs
IGFsd2F5cyBub3RpZnkgdGhlIFdlYlByb2Nlc3MgdGhhdCB0aGUgbWVudSBpcyBoaWRkZW4gc28g
aXQgc3RhcnRzIGhhbmRsaW5nIG1vdXNlIGV2ZW50cyBhZ2Fpbi4KLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbnRleHRNZW51SGlkZGVuKCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUhpZGRlbigpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKGNvbnN0IFdlYkNvbnRleHRN
ZW51SXRlbURhdGEmIGl0ZW0pCkBAIC02MDMwLDEyICs2MDMwLDEyIEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRh
JiBpdGVtKQogICAgIGlmIChpdGVtLmFjdGlvbigpID09IENvbnRleHRNZW51SXRlbVRhZ0xlYXJu
U3BlbGxpbmcgfHwgaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdJZ25vcmVTcGVs
bGluZykKICAgICAgICAgKyttX3BlbmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudDsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkU2VsZWN0SXRlbUZy
b21BY3RpdmVDb250ZXh0TWVudShpdGVtKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoaXRlbSkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQ29udGV4dE1lbnVLZXlFdmVudCgpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUZvcktleUV2ZW50
KCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUZv
cktleUV2ZW50KCkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQogCkBAIC02
MDUxLDEwICs2MDUxLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VGaWxlc0Zvck9w
ZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNvbihjb25zdCBWZWN0CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBmaWxlVVJMcy5zaXplKCk7ICsraSkKICAgICAgICAgU2FuZGJveEV4dGVu
c2lvbjo6Y3JlYXRlSGFuZGxlKGZpbGVVUkxzW2ldLCBTYW5kYm94RXh0ZW5zaW9uOjpUeXBlOjpS
ZWFkT25seSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZXNbaV0pOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVs
KHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4dGVu
c2lvbkhhbmRsZXMpKTsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbFdpdGhEaXNwbGF5U3RyaW5nQW5kSWNv
bihmaWxlVVJMcywgZGlzcGxheVN0cmluZywgaWNvbkRhdGEgPyBpY29uRGF0YS0+ZGF0YVJlZmVy
ZW5jZSgpIDogSVBDOjpEYXRhUmVmZXJlbmNlKCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmlu
Z0FuZEljb24oZmlsZVVSTHMsIGRpc3BsYXlTdHJpbmcsIGljb25EYXRhID8gaWNvbkRhdGEtPmRh
dGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0YVJlZmVyZW5jZSgpKSk7CiAKICAgICBtX29wZW5QYW5l
bFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lciA9IG51bGxwdHI7CkBAIC02MDc5LDEwICs2MDc5LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZVVS
THMpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4dGVuc2lv
bkhhbmRsZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5k
U2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcykpOwog
I2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29z
ZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGZpbGVVUkxzKSk7CiAKICAg
ICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9vcGVuUGFu
ZWxSZXN1bHRMaXN0ZW5lciA9IG51bGxwdHI7CkBAIC02MDkzLDcgKzYwOTMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RGlkQ2FuY2VsRm9yT3BlblBhbmVsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxGb3JPcGVuUGFuZWwoKSk7CiAgICAgCiAgICAg
bV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwogICAgIG1fb3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAtNjEwMSw3ICs2MTAxLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENhbmNlbEZvck9wZW5QYW5lbCgpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojph
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkdmFuY2VUb05leHRNaXNzcGVs
bGluZyhzdGFydEJlZm9yZVNlbGVjdGlvbiksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24p
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0
cmluZyYgd29yZCkKQEAgLTYxMDksNyArNjEwOSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFu
Z2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCiAgICAgaWYgKHdvcmQuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNoYW5nZVNwZWxsaW5nVG9Xb3JkKHdvcmQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlU3BlbGxpbmdUb1dvcmQod29yZCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWY8V2ViRWRpdENvbW1hbmRQcm94
eT4mJiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVkbykKQEAgLTYxMjgsNyArNjEy
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVFZGl0Q29tbWFuZChXZWJFZGl0Q29tbWFu
ZFByb3h5JiBjb21tYW5kKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1v
dmVFZGl0Q29tbWFuZChjb21tYW5kLmNvbW1hbmRJRCgpKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlbW92ZUVkaXRDb21tYW5kKGNvbW1hbmQuY29tbWFuZElE
KCkpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmNhblVuZG8oKQpAQCAtNjIxNywxMiArNjIx
NywxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcodWludDY0
X3QgcmVxdWVzdElELCBjb25zdCBUZXh0Q2hlY2tpbgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVmVjdG9yPFdlYkNv
cmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZEZpbmlzaENoZWNraW5nVGV4dChyZXF1ZXN0SUQsIHJlc3Vs
dCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRGaW5pc2hDaGVj
a2luZ1RleHQocmVxdWVzdElELCByZXN1bHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENhbmNlbENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpCiB7Ci0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxDaGVja2luZ1RleHQocmVxdWVzdElE
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbENoZWNr
aW5nVGV4dChyZXF1ZXN0SUQpKTsKIH0KIC8vIE90aGVyCiAKQEAgLTYzNTEsNyArNjM1MSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlRXZlbnQodWludDMyX3Qgb3BhcXVlVHlwZSwg
Ym9vbCBoYW5kbGVkKQogICAgICAgICBib29sIGNhblByb2Nlc3NNb3JlS2V5RXZlbnRzID0gIW1f
a2V5RXZlbnRRdWV1ZS5pc0VtcHR5KCk7CiAgICAgICAgIGlmIChjYW5Qcm9jZXNzTW9yZUtleUV2
ZW50cykgewogICAgICAgICAgICAgTE9HKEtleUhhbmRsaW5nLCAiIFVJIHByb2Nlc3M6IHNlbnQg
a2V5RXZlbnQgZnJvbSBkaWRSZWNlaXZlRXZlbnQiKTsKLSAgICAgICAgICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCkp
LCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVu
dChtX2tleUV2ZW50UXVldWUuZmlyc3QoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhl
IGNhbGwgdG8gZG9uZVdpdGhLZXlFdmVudCBtYXkgY2xvc2UgdGhpcyBXZWJQYWdlLgpAQCAtNjcx
NSw3ICs2NzE1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lU2V0TGFyZ2VzdEZyYW1lQ2hh
bmdlZCh1aW50NjRfdCBmcmFtZUlEKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJl
Y29tZVVucmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
LCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9u
c2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjcyNyw3ICs2NzI3LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNz
RGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzIzMyw3ICs3
MjMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkQ2xlYXIoKQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Z2FtZXBhZEFjdGl2aXR5KGNvbnN0IFZlY3RvcjxHYW1lcGFkRGF0YT4mIGdh
bWVwYWREYXRhcywgYm9vbCBzaG91bGRNYWtlR2FtZXBhZHNWaXNpYmxlKQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2aXR5KGdhbWVwYWREYXRh
cywgc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHYW1lcGFkQWN0aXZpdHkoZ2FtZXBhZERhdGFzLCBzaG91bGRNYWtlR2Ft
ZXBhZHNWaXNpYmxlKSk7CiB9CiAKICNlbmRpZgpAQCAtNzUzOSw3ICs3NTM5LDcgQEAgYm9vbCBX
ZWJQYWdlUHJveHk6OndpbGxIYW5kbGVIb3Jpem9udGFsU2Nyb2xsRXZlbnRzKCkgY29uc3QKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVdlYnNpdGVQb2xpY2llcyhXZWJzaXRlUG9saWNpZXNE
YXRhJiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNpdGVQb2xpY2llcyksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVXZWJzaXRlUG9saWNpZXMod2Vi
c2l0ZVBvbGljaWVzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkaW5n
RGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCkBAIC03NTQ5LDcg
Kzc1NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0
b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
YmFja0ZvcndhcmRSZW1vdmVkSXRlbShjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBp
dGVtSUQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1v
dmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbShpdGVtSUQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFsKGJvb2wgY2FuUnVuTW9kYWwpCkBAIC03NTYyLDcg
Kzc1NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwoYm9vbCBjYW5SdW5N
b2RhbCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwobV9j
YW5SdW5Nb2RhbCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRD
YW5SdW5Nb2RhbChtX2NhblJ1bk1vZGFsKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpjYW5S
dW5Nb2RhbCgpCkBAIC03NTc2LDcgKzc1NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5Q
cmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZgog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QmVnaW5QcmludGluZyhmcmFtZS0+ZnJh
bWVJRCgpLCBwcmludEluZm8pLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVy
Zm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
QmVnaW5QcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8pLCBwcmludGluZ1NlbmRP
cHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmVuZFByaW50aW5nKCkKQEAgLTc1ODUsNyArNzU4NSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjplbmRQcmludGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faXNJblByaW50
aW5nTW9kZSA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RW5kUHJpbnRpbmcoKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1p
bmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVuZFBy
aW50aW5nKCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJh
dGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmco
V2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBSZWY8Q29t
cHV0ZWRQYWdlc0NhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtNzU5OCw3ICs3NTk4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZy
YW1lLCBjb25zdCBQcmludEluZm8KICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAg
bV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50
SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJm
b3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
b21wdXRlUGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxi
YWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRp
b24pKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzYxMSw3ICs3NjExLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9JbWFnZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEkKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFj
ay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvSW1hZ2Uo
ZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBpbWFnZVNpemUsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3Bl
cmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1JlY3RUb0ltYWdlKGZy
YW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgcmVjdCwgaW1hZ2VTaXplLCBjYWxsYmFja0lEKSwg
cHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBj
b3VudCwgUmVmPERhdGFDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTc2MjMsNyArNzYyMyw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwg
Y29uc3QgUHJpbnRJbmZvJiBwcmludEluCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gY2Fs
bGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
aykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzVG9Q
REYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIGNhbGxiYWNrSUQp
LCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3Bl
cmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJh
bWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdCwgY291bnQsIGNhbGxiYWNrSUQpLCBwcmlu
dGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KICNl
bGlmIFBMQVRGT1JNKEdUSykKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNGb3JQcmludGlu
ZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFJlZjxQ
cmludEZpbmlzaGVkQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC03NjM2LDcgKzc2MzYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJh
bWUsIGNvbnN0IFByaW50SW5mbyYgcAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5j
YWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKICAg
ICBtX2lzSW5QcmludGluZ01vZGUgPSB0cnVlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6RHJhd1BhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJ
bmZvLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZv
cm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRy
YXdQYWdlc0ZvclByaW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJ
RCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikp
OwogfQogI2VuZGlmCiAKQEAgLTc2ODEsNyArNzY4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRWaWV3TGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiB2aWV3TGF5b3V0U2l6ZSkKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld0xheW91dFNpemUodmlld0xheW91dFNpemUp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld0xheW91dFNp
emUodmlld0xheW91dFNpemUpKTsKICAgICBtX2RyYXdpbmdBcmVhLT52aWV3TGF5b3V0U2l6ZURp
ZENoYW5nZSgpOwogCiAjaWYgVVNFKEFQUEtJVCkKQEAgLTc3MDAsNyArNzcwMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGJvb2wg
c2hvdWxkRXhwYW5kKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRvU2l6
aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KHNob3VsZEV4cGFuZCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3
SGVpZ2h0KHNob3VsZEV4cGFuZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3Bv
cnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUpCkBA
IC03NzEzLDcgKzc3MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld3BvcnRTaXplRm9y
Q1NTVmlld3BvcnRVbml0cyhjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpegogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHZp
ZXdwb3J0U2l6ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRW
aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKHZpZXdwb3J0U2l6ZSkpOwogfQogCiAjaWYg
VVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQpAQCAtNzc4NCw3ICs3Nzg0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY29yZEF1dG9jb3JyZWN0aW9uUmVzcG9uc2UoaW50MzJfdCByZXNw
b25zZSwgY29uc3QgU3RyaW5nJgogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUFsdGVybmF0aXZl
VGV4dFVJUmVzdWx0KGNvbnN0IFN0cmluZyYgcmVzdWx0KQogewogICAgIGlmICghaXNDbG9zZWQo
KSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRl
cm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkhhbmRsZUFsdGVybmF0aXZlVGV4dFVJUmVzdWx0KHJlc3VsdCkpOwog
fQogCiAjaWYgVVNFKERJQ1RBVElPTl9BTFRFUk5BVElWRVMpCkBAIC03ODI1LDcgKzc4MjUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBW
ZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rp
b25FbmQsIHJlcGxhY2VtZW50UmFuZ2VTdGFydCwgcmVwbGFjZW1lbnRSYW5nZUVuZCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1
bmRlcmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCByZXBsYWNlbWVudFJhbmdl
U3RhcnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNv
bmZpcm1Db21wb3NpdGlvbihjb25zdCBTdHJpbmcmIGNvbXBvc2l0aW9uU3RyaW5nLCBpbnQ2NF90
IHNlbGVjdGlvblN0YXJ0LCBpbnQ2NF90IHNlbGVjdGlvbkxlbmd0aCkKQEAgLTc4MzMsNyArNzgz
Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5n
JiBjb21wb3NpdGlvblN0cmluZywgaW50NjRfdCBzCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uKGNvbXBvc2l0aW9uU3RyaW5nLCBzZWxlY3Rpb25TdGFy
dCwgc2VsZWN0aW9uTGVuZ3RoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywgc2VsZWN0aW9uU3RhcnQs
IHNlbGVjdGlvbkxlbmd0aCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FuY2VsQ29tcG9z
aXRpb24oKQpAQCAtNzg0MSw3ICs3ODQxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENv
bXBvc2l0aW9uKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYW5jZWxDb21wb3Np
dGlvbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQ29t
cG9zaXRpb24oKSk7CiB9CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKQogCkBAIC03ODU4LDcgKzc4
NTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKFNjcm9s
bFBpbm5pbmdCZWhhdmlvciBwaW5uaW5nKQogICAgIG1fc2Nyb2xsUGlubmluZ0JlaGF2aW9yID0g
cGlubmluZzsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihwaW5u
aW5nKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3Jv
bGxQaW5uaW5nQmVoYXZpb3IocGlubmluZykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJhck92ZXJsYXlT
dHlsZT4gc2Nyb2xsYmFyU3R5bGUpCkBAIC03ODc2LDcgKzc4NzYsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0T3ZlcmxheVNjcm9sbGJhclN0eWxlKE9wdGlvbmFsPFdlYkNvcmU6OlNjcm9sbGJh
ck92ZXJsYXlTdAogICAgICAgICBzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2UgPSBzdGF0aWNfY2Fz
dDxTY3JvbGxiYXJPdmVybGF5U3R5bGU+KHNjcm9sbGJhclN0eWxlLnZhbHVlKCkpOwogCiAgICAg
aWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0U2Nyb2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9yTWVz
c2FnZSksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Ny
b2xsYmFyT3ZlcmxheVN0eWxlKHNjcm9sbGJhclN0eWxlRm9yTWVzc2FnZSkpOwogfQogCiAjaWYg
RU5BQkxFKFdFQl9DUllQVE8pCkBAIC03OTIxLDcgKzc5MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRl
eCwgY29ucwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29udGVu
dFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRNSU1FVHlwZVdpdGhDdXN0b21Db250ZW50UHJvdmlkZXIo
bWltZVR5cGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkTUlN
RVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKG1pbWVUeXBlKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpjaGFuZ2VGb250QXR0cmlidXRlcyhXZWJDb3JlOjpGb250QXR0cmlidXRlQ2hh
bmdlcyYmIGNoYW5nZXMpCkBAIC03OTI5LDcgKzc5MjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFu
Z2VzKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1dGVz
KFdURk1vdmUoY2hhbmdlcykpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q2hhbmdlRm9udEF0dHJpYnV0ZXMoV1RGTW92ZShjaGFuZ2VzKSkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCkBA
IC03OTM3LDcgKzc5MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udChXZWJDb3Jl
OjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q2hhbmdlRm9udChXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2VzKSkpOwogfQogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCkBAIC03OTQ1LDcgKzc5NDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hh
bmdlRm9udChXZWJDb3JlOjpGb250Q2hhbmdlcyYmIGNoYW5nZXMpCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAoaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKLSAgICAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFRleHRBc3luYyh0ZXh0KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRUZXh0QXN5bmModGV4dCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0
VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNl
bWVudFJhbmdlLCBJbnNlcnRUZXh0T3B0aW9ucyYmIG9wdGlvbnMpCkBAIC03OTUzLDcgKzc5NTMs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6Okluc2VydFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlv
bnMpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRB
c3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBXVEZNb3ZlKG9wdGlvbnMpKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpoYXNNYXJrZWRUZXh0KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY2FsbGJhY2spCkBAIC03OTYyLDcgKzc5NjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQog
ICAgICAgICBjYWxsYmFjayhmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9w
cm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV9wYWdlSUQpOworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SGFzTWFya2VkVGV4dCgpLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFz
eW5jKFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzk3Myw3ICs3OTczLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdldE1hcmtlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFu
Z2UsIENhbGxiYWMKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R2V0TWFya2VkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0ZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rp
b248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKQpAQCAtNzk4NCw3ICs3OTg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVj
dGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGIKICAg
ICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0
ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0U2VsZWN0ZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9pbnQsIFdURjo6RnVuY3Rpb248dm9pZCAodWludDY0X3QsIENhbGxiYWNrQmFz
ZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC03OTk1LDcgKzc5OTUsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKGNvbnN0IFdlYkNvcmU6
OkludFBvaW50JiBwb2ludCwgVwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpDaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMocG9pbnQsIGNhbGxiYWNr
SUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5k
ZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpmaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYg
cmFuZ2UsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0
IEVkaXRpbmdSYW5nZSYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CkBAIC04MDA2LDcgKzgwMDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVAogICAgIH0KIAog
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFy
YWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2Us
IGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uQXN5
bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXRpb25VbmRlcmxpbmU+
JiB1bmRlcmxpbmVzLCBjb25zdCBFZGl0aW5nUmFuZ2UmIHNlbGVjdGlvblJhbmdlLCBjb25zdCBF
ZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UpCkBAIC04MDE3LDcgKzgwMTcsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFZlY3RvcjxDb21wb3NpdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uQXN5bmModGV4dCwgdW5k
ZXJsaW5lcywgc2VsZWN0aW9uUmFuZ2UsIHJlcGxhY2VtZW50UmFuZ2UpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9zaXRpb25Bc3luYyh0ZXh0LCB1bmRl
cmxpbmVzLCBzZWxlY3Rpb25SYW5nZSwgcmVwbGFjZW1lbnRSYW5nZSkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9uQXN5bmMoKQpAQCAtODAyNSw3ICs4MDI1LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb25Bc3luYygpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uQXN5bmMo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQZXJmb3JtYW5jZURhdGFDb2xs
ZWN0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpCkBAIC04MDUwLDcgKzgwNTAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dGFrZVNuYXBzaG90KEludFJlY3QgcmVjdCwgSW50U2l6ZSBiaXRtYXBTaXpl
LCBTbmFwc2hvdE9wdGlvbgogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6VGFrZVNuYXBzaG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxi
YWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFrZVNuYXBz
aG90KHJlY3QsIGJpdG1hcFNpemUsIG9wdGlvbnMsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6Om5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4oKQpAQCAtODIwOCw3ICs4MjA4
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBY3RpdmVOb3dQbGF5aW5nU2Vzc2lvbklu
Zm8oUmVmPE5vd1BsYXlpbmdJbmZvQ2FsbGJhY2sKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxs
YmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
KSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBY3Rp
dmVOb3dQbGF5aW5nU2Vzc2lvbkluZm8oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKGNh
bGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Om5vd1BsYXlpbmdJbmZvQ2FsbGJh
Y2soYm9vbCBoYXNBY3RpdmVTZXNzaW9uLCBib29sIHJlZ2lzdGVyZWRBc05vd1BsYXlpbmdBcHBs
aWNhdGlvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxh
cHNlZFRpbWUsIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKQEAgLTgyNTEsMjIgKzgyNTEsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUF1dG9w
bGF5RXZlbnQoV2ViQ29yZTo6QXV0b3BsYXlFdmVudCBldmVudCwgT3B0aW9uU2V0PEEKICNpZiBQ
TEFURk9STShNQUMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhp
dFRlc3RBdExvY2F0aW9uKEZsb2F0UG9pbnQgcG9pbnQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0TG9jYXRp
b24ocG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9y
bUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKHBvaW50KSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRVcGRhdGUoKQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRVcGRh
dGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwo
KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0
aW9uRGlkQ2FuY2VsKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJ
bW1lZGlhdGVBY3Rpb25EaWRDYW5jZWwoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbW1l
ZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpJbW1lZGlhdGVBY3Rpb25EaWRDb21wbGV0ZSgpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUoKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdChj
b25zdCBXZWJIaXRUZXN0UmVzdWx0RGF0YSYgcmVzdWx0LCBib29sIGNvbnRlbnRQcmV2ZW50c0Rl
ZmF1bHQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTgyODEsNyArODI4MSw3IEBAIE5T
T2JqZWN0ICpXZWJQYWdlUHJveHk6OmltbWVkaWF0ZUFjdGlvbkFuaW1hdGlvbkNvbnRyb2xsZXJG
b3JIaXRUZXN0UmVzdWx0KFJlZlB0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZShXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQgYWNjZXB0ZWRDYW5kaWRhdGUp
CiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBY2NlcHRl
ZENhbmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0ZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpIYW5kbGVBY2NlcHRlZENhbmRpZGF0ZShhY2NlcHRlZENhbmRpZGF0ZSkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkSGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoKQpA
QCAtODI5OSwxNyArODI5OSwxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlU3lzdGVtQXBw
ZWFyYW5jZShib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFVzZVN5c3RlbUFwcGVhcmFuY2UodXNlU3lzdGVtQXBwZWFyYW5jZSksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VTeXN0ZW1BcHBlYXJh
bmNlKHVzZVN5c3RlbUFwcGVhcmFuY2UpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGludCBoZWlnaHQpCiB7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRIZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0
aW5nKGhlaWdodCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRI
ZWFkZXJCYW5uZXJIZWlnaHRGb3JUZXN0aW5nKGhlaWdodCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhpbnQgaGVpZ2h0KQogewotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Rm9vdGVyQmFubmVySGVpZ2h0
Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0Rm9vdGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpKTsKIH0KIAogI2VuZGlm
CkBAIC04MzM1LDcgKzgzMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW1hZ2VPck1lZGlhRG9j
dW1lbnRTaXplQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdTaQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKGJvb2wgc2hv
dWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKHNo
b3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMoc2hv
dWxkRGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVBdXRvRmlsbEJ1dHRvbkNsaWNrKGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAg
LTgzODQsNyArODM4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQbGF5YmFja1RhcmdldCh1
aW50NjRfdCBjb250ZXh0SWQsIFJlZjxNZWRpYVBsYXliYWNrVGFyZ2V0CiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlBsYXliYWNrVGFyZ2V0U2VsZWN0ZWQoY29udGV4dElkLCB0YXJn
ZXQtPnRhcmdldENvbnRleHQoKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNvbnRleHRJZCwgdGFyZ2V0LT50YXJnZXRDb250
ZXh0KCkpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZh
aWxhYmxlRGlkQ2hhbmdlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBhdmFpbGFibGUpCkBAIC04
MzkyLDcgKzgzOTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZXh0ZXJuYWxPdXRwdXREZXZpY2VB
dmFpbGFibGVEaWRDaGFuZ2UodWludDY0X3QgY29udGV4dElkLCBibwogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShjb250
ZXh0SWQsIGF2YWlsYWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eURpZENoYW5nZShjb250ZXh0SWQsIGF2YWlsYWJs
ZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJn
ZXQodWludDY0X3QgY29udGV4dElkLCBib29sIHNob3VsZFBsYXkpCkBAIC04NDAwLDcgKzg0MDAs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQodWlu
dDY0X3QgY29udGV4dElkLCBib29sIHNob3VsZAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRTaG91bGRQbGF5VG9QbGF5YmFja1RhcmdldChjb250ZXh0SWQsIHNob3VsZFBsYXkp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkUGxheVRv
UGxheWJhY2tUYXJnZXQoY29udGV4dElkLCBzaG91bGRQbGF5KSk7CiB9CiAjZW5kaWYKIApAQCAt
ODQyNiw3ICs4NDI2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyV2hlZWxFdmVudFRlc3RU
cmlnZ2VyKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFyV2hlZWxF
dmVudFRlc3RUcmlnZ2VyKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmNhbGxBZnRlck5leHRQcmVzZW50YXRpb25VcGRhdGUoV1RGOjpGdW5jdGlvbjx2b2lkIChDYWxs
YmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKQEAgLTg0NDksNyArODQ0OSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KGJvb2wgc2hvdWxk
U2NhbGVWaWV3VG9GaXREb2N1CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNo
b3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQoc2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRTY2FsZVZp
ZXdUb0ZpdERvY3VtZW50KHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCkBAIC04NDY5LDcgKzg0
NjksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0TG9hZERlY2lzaW9uRm9ySWNvbihjb25zdCBX
ZWJDb3JlOjpMaW5rSWNvbiYgaWNvbiwgQ2FsbGJhYwogICAgICAgICBib29sIGRlY2lzaW9uID0g
KGJvb2wpY2FsbGJhY2tGdW5jdGlvbjsKICAgICAgICAgYXV0byBuZXdDYWxsYmFja0lkZW50aWZp
ZXIgPSBkZWNpc2lvbiA/IE9wdGlvbmFsQ2FsbGJhY2tJRChtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKSkgOiBPcHRpb25hbENhbGxiYWNrSUQoKTsKIAotICAgICAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvckljb24oZGVj
aXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZpZXIpLCBtX3BhZ2VJRCk7
CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEdldExvYWREZWNpc2lvbkZvcklj
b24oZGVjaXNpb24sIGxvYWRJZGVudGlmaWVyLCBuZXdDYWxsYmFja0lkZW50aWZpZXIpKTsKICAg
ICB9KTsKIH0KIApAQCAtODQ4OCw3ICs4NDg4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFJl
c291cmNlQ2FjaGluZ0Rpc2FibGVkKGJvb2wgZGlzYWJsZWQpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFJlc291cmNlQ2FjaGluZ0Rpc2FibGVkKGRpc2FibGVkKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFJlc291cmNlQ2FjaGluZ0Rpc2Fi
bGVkKGRpc2FibGVkKSk7CiB9CiAKIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24gV2ViUGFnZVByb3h5Ojp1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkKQEAgLTg1MDEs
NyArODUwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXRECiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24oc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24o
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpoaWRlVmFsaWRhdGlvbk1lc3NhZ2UoKQpAQCAtODU0OCwx
NCArODU0OCwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQWxsb3dQb2ludGVyTG9jaygpCiAg
ICAgQ0dEaXNwbGF5SGlkZUN1cnNvcihDR01haW5EaXNwbGF5SUQoKSk7CiAgICAgQ0dBc3NvY2lh
dGVNb3VzZUFuZE1vdXNlQ3Vyc29yUG9zaXRpb24oZmFsc2UpOwogI2VuZGlmCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZEFjcXVpcmVQb2ludGVyTG9j
aygpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZW55UG9pbnRlckxvY2soKQog
ewogICAgIEFTU0VSVChtX2lzUG9pbnRlckxvY2tQZW5kaW5nICYmICFtX2lzUG9pbnRlckxvY2tl
ZCk7CiAgICAgbV9pc1BvaW50ZXJMb2NrUGVuZGluZyA9IGZhbHNlOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxv
Y2soKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVubG9jaygpCkBA
IC04NTY2LDEyICs4NTY2LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0UG9pbnRlclVu
bG9jaygpCiAgICAgICAgIENHRGlzcGxheVNob3dDdXJzb3IoQ0dNYWluRGlzcGxheUlEKCkpOwog
I2VuZGlmCiAgICAgICAgIG1fdWlDbGllbnQtPmRpZExvc2VQb2ludGVyTG9jayh0aGlzKTsKLSAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRMb3NlUG9pbnRlckxv
Y2soKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRMb3Nl
UG9pbnRlckxvY2soKSk7CiAgICAgfQogCiAgICAgaWYgKG1faXNQb2ludGVyTG9ja1BlbmRpbmcp
IHsKICAgICAgICAgbV91aUNsaWVudC0+ZGlkTG9zZVBvaW50ZXJMb2NrKHRoaXMpOwotICAgICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVy
TG9jaygpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5v
dEFjcXVpcmVQb2ludGVyTG9jaygpKTsKICAgICB9CiAKICAgICBtX2lzUG9pbnRlckxvY2tlZCA9
IGZhbHNlOwpAQCAtODU5Miw3ICs4NTkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFVSTFNj
aGVtZUhhbmRsZXJGb3JTY2hlbWUoUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+JiYgaGFuZGwKICAg
ICBhdXRvIGlkZW50aWZpZXJSZXN1bHQgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVy
LmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGhhbmRsZXIpKTsKICAgICBBU1NFUlRfVU5VU0VEKGlk
ZW50aWZpZXJSZXN1bHQsIGlkZW50aWZpZXJSZXN1bHQuaXNOZXdFbnRyeSk7CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFuZGxlcihp
ZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVUkxTY2hlbWVIYW5kbGVyKGlkZW50aWZp
ZXIsIGNhbm9uaWNhbGl6ZWRTY2hlbWUudmFsdWUoKSkpOwogfQogCiBXZWJVUkxTY2hlbWVIYW5k
bGVyKiBXZWJQYWdlUHJveHk6OnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUoY29uc3QgU3RyaW5n
JiBzY2hlbWUpCkBAIC04NjUxLDcgKzg2NTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZWZmZWN0
aXZlQXBwZWFyYW5jZURpZENoYW5nZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UodXNlRGFya0FwcGVhcmFuY2UoKSwgdXNlSW5h
Y3RpdmVBcHBlYXJhbmNlKCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RWZmZWN0aXZlQXBwZWFyYW5jZURpZENoYW5nZSh1c2VEYXJrQXBwZWFyYW5jZSgpLCB1c2VJ
bmFjdGl2ZUFwcGVhcmFuY2UoKSkpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC04Njkw
LDcgKzg2OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0QXR0YWNobWVudChSZWY8QVBJ
OjpBdHRhY2htZW50PiYmIGF0dGFjaG1lbnQsIEZ1bmN0aW9uPAogCiAgICAgYXV0byBhdHRhY2ht
ZW50SWRlbnRpZmllciA9IGF0dGFjaG1lbnQtPmlkZW50aWZpZXIoKTsKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGF0dGFjaG1lbnRJZGVudGlmaWVy
LCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC0+ZmlsZU5hbWUo
KSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRBdHRhY2htZW50KGF0dGFjaG1lbnRJZGVu
dGlmaWVyLCBhdHRhY2htZW50LT5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC0+Zmls
ZU5hbWUoKSwgYXR0YWNobWVudC0+Y29udGVudFR5cGUoKSwgY2FsbGJhY2tJRCkpOwogICAgIG1f
YXR0YWNobWVudElkZW50aWZpZXJUb0F0dGFjaG1lbnRNYXAuc2V0KGF0dGFjaG1lbnRJZGVudGlm
aWVyLCBXVEZNb3ZlKGF0dGFjaG1lbnQpKTsKIH0KIApAQCAtODcwNiw3ICs4NzA2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUF0dGFjaG1lbnRBdHRyaWJ1dGVzKGNvbnN0IEFQSTo6QXR0
YWNobWVudCYgYXR0YWNobWVudCwKICAgICAgICAgZGF0YVJlZmVyZW5jZSA9IHsgKmRhdGEgfTsK
IAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNr
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUF0dGFjaG1lbnRBdHRy
aWJ1dGVzKGF0dGFjaG1lbnQuaWRlbnRpZmllcigpLCBhdHRhY2htZW50LmZpbGVTaXplRm9yRGlz
cGxheSgpLCBhdHRhY2htZW50LmNvbnRlbnRUeXBlKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUoKSwg
V1RGTW92ZShkYXRhUmVmZXJlbmNlKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50
LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVu
dC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVy
ZW5jZSksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXR0
YWNobWVudElkZW50aWZpZXJGcm9tRGF0YShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgY29udGVudFR5cGUsIGNvbnN0IFN0cmluZyYgcHJlZmVycmVkRmlsZU5hbWUsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKQEAgLTg4NjYsNyArODg2Niw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRBcHBsaWNhdGlvbk1hbmlmZXN0KEZ1bmN0aW9uPHZvaWQoY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFj
a0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lE
KSk7CiB9CiAjZW5kaWYKIApAQCAtODkzMCw3ICs4OTMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcG9ydFBhZ2VMb2FkUmVzdWx0KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0RGVmZXJzTG9hZGluZ0ZvclRlc3RpbmcoYm9vbCBkZWZlcnNMb2Fk
aW5nKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RGVmZXJz
TG9hZGluZyhkZWZlcnNMb2FkaW5nKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZykpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Z2V0SXNWaWV3VmlzaWJsZShib29sJiByZXN1bHQpCkBAIC04OTQyLDcgKzg5NDIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUoKQogewog
I2lmIFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKFdFQlBST0NFU1NfV0lORE9XU0VSVkVSX0JMT0NL
SU5HKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGF1dG8gbW9kaWZpZXJzID0gUGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpjdXJyZW50U3RhdGVPZk1vZGlmaWVyS2V5cygpOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQ3VycmVudE1vZGlmaWVyU3RhdGUo
bW9kaWZpZXJzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0
ZUN1cnJlbnRNb2RpZmllclN0YXRlKG1vZGlmaWVycykpOwogI2VuZGlmCiB9CiAKQEAgLTg5ODQs
MTkgKzg5ODQsMTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxBY3F1aXJlVW5pdmVyc2FsRmls
ZVJlYWRTYW5kYm94RXh0ZW5zaW9uKFdlYlByb2Nlc3NQcm94eSYKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoZG91YmxlIGFscGhhLCBkb3VibGUg
YmV0YSwgZG91YmxlIGdhbW1hKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2ltdWxhdGVEZXZpY2VPcmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2ltdWxhdGVEZXZpY2VP
cmllbnRhdGlvbkNoYW5nZShhbHBoYSwgYmV0YSwgZ2FtbWEpKTsKIH0KIAogI2lmIEVOQUJMRShE
QVRBX0RFVEVDVElPTikKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRldGVjdERhdGFJbkFsbEZyYW1l
cyhXZWJDb3JlOjpEYXRhRGV0ZWN0b3JUeXBlcyB0eXBlcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6RGV0ZWN0RGF0YUluQWxsRnJhbWVzKHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0eXBl
cykpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6RGV0ZWN0RGF0YUluQWxsRnJhbWVzKHN0YXRp
Y19jYXN0PHVpbnQ2NF90Pih0eXBlcykpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcygpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3MoKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiAjZW5kaWYKQEAgLTkxNDYsNyArOTE0Niw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp0ZXh0SW5wdXRDb250ZXh0c0luUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QgcmVj
dCwgQ29tcGxldGlvbkhhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3Mt
PmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXh0
SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1f
cGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlRleHRJ
bnB1dENvbnRleHRzSW5SZWN0KHJlY3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElu
cHV0Q29udGV4dCYgY29udGV4dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKQEAgLTkxNTYsNyArOTE1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpm
b2N1c1RleHRJbnB1dENvbnRleHQoY29uc3QgVGV4dElucHV0Q29udGV4dCYgY29udGV4dCwgQ29t
cGxlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24o
KS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c1RleHRJbnB1dENv
bnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpGb2N1c1RleHRJbnB1dENv
bnRleHQoY29udGV4dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogTG9nZ2Vy
JiBXZWJQYWdlUHJveHk6OmxvZ2dlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDZjNWFkNjI1ZDEyLi42OGI1YTI2NzZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJv
eHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgogI2luY2x1ZGUgIldlYlVuZG9TdGVwSUQuaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXNE
YXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CkBAIC04Miw2ICs4Myw3
IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVBsYXliYWNrVGFyZ2V0Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9k
dWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5o
PgpAQCAtMzgyLDE0ICszODQsMTQgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6UGFnZT4KICNlbmRpZgogICAgICwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFdlYlBhZ2VQcm94eT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2
NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOworICAgIHN0YXRpYyBS
ZWY8V2ViUGFnZVByb3h5PiBjcmVhdGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAg
ICAgdmlydHVhbCB+V2ViUGFnZVByb3h5KCk7CiAKICAgICBzdGF0aWMgdm9pZCBmb3JNb3N0Vmlz
aWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJQYWdlUHJveHkqKT4mJik7CiAK
ICAgICBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3Q7
CiAKLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIApAQCAtMTUwMiw3
ICsxNTA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRh
dGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFT
dG9yZSYsIHVpbnQ2NF90IGZyYW1lSUQpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxV
UkxGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50
NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCi0gICAgICAgIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLAorICAgICAgICB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0Rh
dGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCiAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmlu
ZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
Jik7CkBAIC0xNTExLDcgKzE1MTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkUmVxdWVzdFdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlv
biYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJu
YWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6
bnVsbG9wdCk7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4mJik7CiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAg
IEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBG
cmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVj
dFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNF
KFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1
bWVudEluTWFpbkZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmlu
ZyYgZmlsZU5hbWUpOwpAQCAtMTU0OSw5ICsxNTUxLDkgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJ
TUlaRVJfQURESVRJT05TXzEKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwg
dWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2Fn
ZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVp
bnQ2NF90KT4mJik7Ci0KKyAgICAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uPiYmKTsKKyAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQ
cm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZvaWQgbm90aWZ5
UHJvY2Vzc1Bvb2xUb1ByZXdhcm0oKTsKQEAgLTE2MjcsMTMgKzE2MjksMTMgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAK
ICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZy
YW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFt
ZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
LAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwK
KyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklE
KTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90
IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRf
dCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRh
JiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYsCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE2NTUs
NyArMTY1Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpOwog
CiAgICAgLy8gVUkgY2xpZW50Ci0gICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5m
b0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsK
KyAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBs
eSYmKTsKICAgICB2b2lkIHNob3dQYWdlKCk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29u
c3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpE
ZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcm
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJl
cGx5JiYpOwpAQCAtMjMyNyw3ICsyMzI5LDcgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJf
QURESVRJT05TXzIKICAgICBSZWZQdHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4gbV92YWxp
ZGF0aW9uQnViYmxlOwogI2VuZGlmCiAKLSAgICBjb25zdCB1aW50NjRfdCBtX3BhZ2VJRDsKKyAg
ICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogICAgIGJvb2wgbV9p
c1BhZ2VTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hZGRzVmlzaXRlZExpbmtzIHsg
dHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDZmY2VjZGM2YjY1Li5iMWU3OTkyMjNiZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBA
QAogCiBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgICMgVUkgbWVzc2FnZXMKLSAgICBD
cmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0
dXJlcywgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlv
bkRhdGEpIC0+ICh1aW50NjRfdCBuZXdQYWdlSUQsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycz4gbmV3UGFnZVBhcmFtZXRlcnMpIFN5bmNocm9ub3VzCisgICAgQ3Jl
YXRlTmV3UGFnZShzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6Oldp
bmRvd0ZlYXR1cmVzIHdpbmRvd0ZlYXR1cmVzLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBuZXdQYWdlSUQsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycz4gbmV3UGFnZVBhcmFtZXRlcnMpIFN5bmNocm9ub3VzCiAgICAgU2hvd1BhZ2UoKQog
ICAgIENsb3NlUGFnZShib29sIHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKQogICAgIFJ1bkphdmFT
Y3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFN0cmluZyBtZXNzYWdlKSAtPiAoKSBTeW5jaHJv
bm91cwpAQCAtMTA0LDggKzEwNCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAg
ICAjIFBvbGljeSBtZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90
IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0
eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
c3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlN
RVR5cGUsIFN0cmluZyBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2Vi
S2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
cG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2Us
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBp
c01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25B
Y3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRh
dGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFj
dGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxv
YWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNp
ZXMpIFN5bmNocm9ub3VzCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJh
bWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJh
bWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlz
dGVuZXJJRCkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRf
dCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+
IChXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3Qg
bmV3TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8
V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5bmNocm9ub3Vz
CiAgICAgRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0
cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVt
ZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3Is
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcAppbmRleCBjODAyM2RlNDE2
MS4uZjQ5NzE1MWQ3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXZWJQ
cm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6YWRkV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQ
cm94eSwgV2ViUHJvY2UKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvY2Vzcy5pc1ByZXdhcm1lZCgp
KTsKIAogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQoJnByb2Nlc3MpLmlzTmV3RW50cnkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2
ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHBy
b2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6
OmFkZFdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nl
c3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkp
OwogICAgICAgICB3ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHByb2Nlc3MsICpwcm9jZXNz
LmNvbm5lY3Rpb24oKSk7CiAgICAgfQogCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViUHJvY2Vz
c0xpZmV0aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJv
eHksIFdlYlByCiAgICAgd2ViUGFnZURpZENsb3NlQ29ubmVjdGlvbih3ZWJQYWdlUHJveHksICpw
cm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAKICAgICBpZiAobV9wcm9jZXNzZXMucmVtb3ZlKCZwcm9j
ZXNzKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlm
ZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFn
ZUlEKCkpOworICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlm
ZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFn
ZUlEKCkudG9VSW50NjQoKSk7CiAgICAgICAgIHdlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24o
cHJvY2VzcywgKnByb2Nlc3MuY29ubmVjdGlvbigpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMGUxMzlmMzBkOWMuLjBiOGIzNDVl
ZjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0x
Mjk2LDkgKzEyOTYsOSBAQCBib29sIFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNl
cnZpY2VXb3JrZXJzKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmUmIHN0bwogfQogI2VuZGlmCiAKLXZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRf
dCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vz
c2lvblRvUGFnZUlEc01hcC5hZGQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PHVpbnQ2
NF90PigpKS5pdGVyYXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CisgICAgYXV0byByZXN1bHQgPSBt
X3Nlc3Npb25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDxQ
YWdlSWRlbnRpZmllcj4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOwogICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICBhdXRvIHNlc3Npb25J
RCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdl
SUQsIFdlYnNpdGVEYXRhCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5k
VXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYg
ZGF0YVN0b3JlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFT
dG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkK
IHsKICAgICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKICAgICBhdXRv
IGl0ZXJhdG9yID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmZpbmQoc2Vzc2lvbklEKTsKQEAgLTIy
MTEsNyArMjIxMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlaW5zdGF0ZU5ldHdvcmtQcm9j
ZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYKIH0KIAogI2lmIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKLVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQb29s
OjpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNv
bnN0CitTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdv
cmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAog
ewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIGZvciAoYXV0byogc2Vy
dmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsK
QEAgLTI1MTksNyArMjUxOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyQ3VycmVudE1v
ZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkpOwogfQog
Ci12b2lkIFdlYlByb2Nlc3NQb29sOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNv
cmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3Qg
cGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNU
SUNTKQogICAgIGlmICghbV9uZXR3b3JrUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCmluZGV4IDE2NTU0NWIxYTJmLi4xN2UzZTgwMmJjNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xNDgsNiArMTQ4LDE4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVm
ZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQpOworICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQg
YWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2
ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOworICAgIH0K
KyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJ
ZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgeworICAgICAgICByZW1vdmVNZXNzYWdl
UmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsK
KyAgICB9CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKTsKICAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKQEAgLTE5
Myw4ICsyMDUsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQ
YWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAKLSAgICB2
b2lkIHBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNp
dGVEYXRhU3RvcmUmKTsKLSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUodWlu
dDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlQmVnaW5Vc2lu
Z1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3Rv
cmUmKTsKKyAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICBib29sIGhhc1BhZ2VzVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKSBjb25zdDsKIAogICAgIGNvbnN0IFN0
cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9u
LT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQpAQCAtMzY1LDcgKzM3Nyw3IEBAIHB1YmxpYzoKIAog
I2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRl
eHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKLSAgICBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBh
Z2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKSBjb25zdDsKICAgICBjb25zdCBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkg
Y29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRB
bGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9h
bGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBi
b29sIGFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0
dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CkBAIC00OTMs
NyArNTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZERpc3BsYXlDb25maWd1cmF0aW9uQ2hh
bmdlZE1lc3NhZ2VGb3JUZXN0aW5nKCk7CiAgICAgdm9pZCBjbGVhckN1cnJlbnRNb2RpZmllclN0
YXRlRm9yVGVzdGluZygpOwogCi0gICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExp
bmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgZnJvbURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvRG9t
YWluLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAjaWYgUExBVEZPUk0oR1RLKSB8
fCBQTEFURk9STShXUEUpCiAgICAgdm9pZCBzZXRTYW5kYm94RW5hYmxlZChib29sIGVuYWJsZWQp
IHsgbV9zYW5kYm94RW5hYmxlZCA9IGVuYWJsZWQ7IH07CkBAIC03NTgsNyArNzcwLDcgQEAgcHJp
dmF0ZToKICAgICB9OwogICAgIFBhdGhzIG1fcmVzb2x2ZWRQYXRoczsKIAotICAgIEhhc2hNYXA8
UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7
CisgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQcm9j
ZXNzUG9vbD4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzVGVybWluYXRpb25UaW1lcjsKIAogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCA4MjAzNDY1Y2IyOC4uNjc4MzFlMjA3ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTEwLDEwICsxMTAsOSBAQCBX
ZWJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoUHJv
Y2Vzc0lkZW50aWZpZXIgaWRlbnRpZgogICAgIHJldHVybiBhbGxQcm9jZXNzZXMoKS5nZXQoaWRl
bnRpZmllcik7CiB9CiAKLXVpbnQ2NF90IFdlYlByb2Nlc3NQcm94eTo6Z2VuZXJhdGVQYWdlSUQo
KQorUGFnZUlkZW50aWZpZXIgV2ViUHJvY2Vzc1Byb3h5OjpnZW5lcmF0ZVBhZ2VJRCgpCiB7Ci0g
ICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVBhZ2VJRDsKLSAgICByZXR1cm4gKyt1bmlxdWVQYWdl
SUQ7CisgICAgcmV0dXJuIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwogfQogCiBzdGF0aWMg
V2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAmIGdsb2JhbFBhZ2VNYXAoKQpAQCAtMzMw
LDcgKzMyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigpCiAgICAgbV9wcm9j
ZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3ModGhpcyk7CiB9CiAKLVdlYlBhZ2VQcm94eSogV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eSogV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1
cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQpAQCAtMzYzLDcgKzM2Miw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVk
KEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAKIFJlZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94
eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJhdGlvbikKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQg
PSBnZW5lcmF0ZVBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsK
ICAgICBSZWY8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFn
ZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAg
ICAgYWRkRXhpc3RpbmdXZWJQYWdlKHdlYlBhZ2UuZ2V0KCksIEJlZ2luc1VzaW5nRGF0YVN0b3Jl
OjpZZXMpOwpAQCAtNDE1LDEwICs0MTQsMTAgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92
ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRzVXNpbmdEYXRhU3RvcmUgZW4KICAg
ICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVk
TGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRf
dCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIo
VmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQogewogICAgIGF1dG8mIHVzZXJzID0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbnN1
cmUoJnZpc2l0ZWRMaW5rU3RvcmUsIFtdIHsKLSAgICAgICAgcmV0dXJuIEhhc2hTZXQ8dWludDY0
X3Q+IHsgfTsKKyAgICAgICAgcmV0dXJuIEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+IHsgfTsKICAg
ICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIXVzZXJzLmNvbnRhaW5zKHBhZ2VJ
RCkpOwpAQCAtNDI4LDcgKzQyNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVk
TGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlCiAgICAgICAg
IHZpc2l0ZWRMaW5rU3RvcmUuYWRkUHJvY2VzcygqdGhpcyk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpyZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNp
dGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVt
b3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9y
ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8gaXQgPSBtX3Zpc2l0ZWRMaW5r
U3RvcmVzV2l0aFVzZXJzLmZpbmQoJnZpc2l0ZWRMaW5rU3RvcmUpOwogICAgIGlmIChpdCA9PSBt
X3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmVuZCgpKQpAQCAtNTQxLDcgKzU0MCw3IEBAIGJv
b2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVkKCkKIH0KICNlbmRp
ZgogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKHVpbnQ2
NF90IHBhZ2VJRCkgY29uc3QKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBh
Z2VXaXRoSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIGZvciAoYXV0byog
cHJvdmlzaW9uYWxQYWdlIDogbV9wcm92aXNpb25hbFBhZ2VzKSB7CiAgICAgICAgIGlmIChwcm92
aXNpb25hbFBhZ2UtPnBhZ2UoKS5wYWdlSUQoKSA9PSBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDlhNmNiZjFmNDYwLi5hZDNmMDM4ZGQ2NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01l
c3NhZ2VQb3J0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkU3RyaW5n
SGFzaC5oPgpAQCAtOTcsNyArOTgsNyBAQCBlbnVtIGNsYXNzIEFsbG93UHJvY2Vzc0NhY2hpbmcg
eyBObywgWWVzIH07CiBjbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8V2ViUHJvY2Vzc1Byb3h5PiwgcHVibGljIENhbk1ha2VXZWFrUHRy
PFdlYlByb2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJs
aWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJhbWVQcm94eT4+
IFdlYkZyYW1lUHJveHlNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdl
UHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJQYWdlUHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPj4gVXNl
ckluaXRpYXRlZEFjdGlvbk1hcDsKIAogICAgIGVudW0gY2xhc3MgSXNQcmV3YXJtZWQgewpAQCAt
MTI4LDcgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vi
c2l0ZURhdGFTdG9yZSYpOwogCiAgICAgc3RhdGljIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0Zv
cklkZW50aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHN0YXRpYyBXZWJQ
YWdlUHJveHkqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgV2ViUGFnZVBy
b3h5KiB3ZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBSZWY8V2ViUGFnZVBy
b3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlv
bj4mJik7CiAKICAgICBlbnVtIGNsYXNzIEJlZ2luc1VzaW5nRGF0YVN0b3JlIDogYm9vbCB7IE5v
LCBZZXMgfTsKQEAgLTE0OSwxMCArMTUwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9v
bCBpc1NlcnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
IHZvaWQgZGlkQ3JlYXRlV2ViUGFnZUluUHJvY2Vzcyh1aW50NjRfdCBwYWdlSUQpOworICAgIHZv
aWQgZGlkQ3JlYXRlV2ViUGFnZUluUHJvY2VzcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAK
LSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50
NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRl
ZExpbmtTdG9yZSYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0
b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAg
IHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgYWRkV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmLCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJik7CiAgICAgdm9pZCBkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmKTsKQEAgLTMxMSw3ICszMTIsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB3ZWJQYWdlTWVkaWFTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJv
eHkmKTsKIAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VJRCgp
OworICAgIHN0YXRpYyBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBnZW5lcmF0ZVBhZ2VJRCgpOwog
ICAgIFdlYlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJ
c1ByZXdhcm1lZCk7CiAKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKQEAgLTM1NCw3ICsz
NTUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQ
cm9wYWdhdGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpOwogI2VuZGlmCiAKLSAgICBib29sIGhh
c1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIGJvb2wg
aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBjb25zdDsK
ICAgICBib29sIGlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0mKSBjb25zdDsKIAogICAgIC8vIFBsdWdpbnMKQEAgLTQ0Nyw3ICs0NDgsNyBAQCBw
cml2YXRlOgogICAgIEhhc2hTZXQ8UHJvdmlzaW9uYWxQYWdlUHJveHkqPiBtX3Byb3Zpc2lvbmFs
UGFnZXM7CiAgICAgVXNlckluaXRpYXRlZEFjdGlvbk1hcCBtX3VzZXJJbml0aWF0ZWRBY3Rpb25N
YXA7CiAKLSAgICBIYXNoTWFwPFZpc2l0ZWRMaW5rU3RvcmUqLCBIYXNoU2V0PHVpbnQ2NF90Lyog
cGFnZUlEICovPj4gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2VyczsKKyAgICBIYXNoTWFwPFZp
c2l0ZWRMaW5rU3RvcmUqLCBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gbV92aXNp
dGVkTGlua1N0b3Jlc1dpdGhVc2VyczsKICAgICBIYXNoU2V0PFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzOwogCiAgICAgaW50
IG1fbnVtYmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJsZWQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4IGUzNTUzMTll
YTRjLi43ZDU3NWE0MDRiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lSGFuZGxlci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhh
bmRsZXI6OnRhc2tDb21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYgdGFzaykKICAgICBwbGF0Zm9y
bVRhc2tDb21wbGV0ZWQodGFzayk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6cmVt
b3ZlVGFza0Zyb21QYWdlTWFwKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQordm9p
ZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBhZ2VNYXAoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fdGFz
a3NCeVBhZ2VJZGVudGlmaWVyLmZpbmQocGFnZUlEKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0g
bV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IDg5OTc2YzYxZjgzLi5iN2FmMDc1OTc1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApAQCAt
NjYsMTMgKzY2LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RvcFRh
c2soV2ViUGFnZVByb3h5JiwgV2ViVVJMU2NoZW1lVGFzayYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcGxhdGZvcm1UYXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAKLSAgICB2
b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJ
RCk7CisgICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IHRhc2tJRCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9yVGFz
a0lkZW50aWZpZXIodWludDY0X3QpIGNvbnN0OwogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVy
OwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVtZVRhc2s+PiBtX3Rhc2tz
OwotICAgIEhhc2hNYXA8dWludDY0X3QsIEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Rhc2tzQnlQYWdl
SWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBIYXNoU2V0
PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CiAgICAgCiAgICAgU3luY0xvYWRD
b21wbGV0aW9uSGFuZGxlciBtX3N5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggMTlhNmJiODRjM2Mu
LjliN2FkNWUyMzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcApAQCAtNzAsNyArNzAsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFBlcmZv
cm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9ucwogICAgICAg
ICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCiAgICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRQ
ZXJmb3JtUmVkaXJlY3Rpb24obV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRl
bnRpZmllciwgcmVzcG9uc2UsIHJlcXVlc3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKG1f
dXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlLCBy
ZXF1ZXN0KSk7CiAKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KQEAgLTkzLDcg
KzkzLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIC0+IEUKICAgICBpZiAoaXNTeW5jKCkpCiAgICAg
ICAgIG1fc3luY1Jlc3BvbnNlID0gcmVzcG9uc2U7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlUmVzcG9uc2UobV91cmxTY2hl
bWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgcmVzcG9uc2UpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlk
UmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50
aWZpZXIsIHJlc3BvbnNlKSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAK
QEAgLTExOCw3ICsxMTgsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKSAtPiBFeGNlcHRpb25UeQogICAgICAgICByZXR1
cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhh
bmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJl
Y2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIs
IHsgYnVmZmVyIH0pKTsKICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6Tm9uZTsKIH0KIApAQCAt
MTQzLDcgKzE0Myw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgbV9zeW5jRGF0
YSA9IG51bGxwdHI7CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlm
aWVyKCksIG1faWRlbnRpZmllciwgZXJyb3IpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVI
YW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgZXJyb3IpKTsKICAgICBtX3VybFNj
aGVtZUhhbmRsZXItPnRhc2tDb21wbGV0ZWQoKnRoaXMpOwogCiAgICAgcmV0dXJuIEV4Y2VwdGlv
blR5cGU6Ok5vbmU7CkBAIC0xNjksNCArMTY5LDE0IEBAIHZvaWQgV2ViVVJMU2NoZW1lVGFzazo6
c3RvcCgpCiAgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFpbGVkQ3VzdG9t
UHJvdG9jb2xTeW5jTG9hZChtX3JlcXVlc3QpLCB7IH0pOwogfQogCitJUEM6OkNvbm5lY3Rpb24q
IFdlYlVSTFNjaGVtZVRhc2s6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9wcm9jZXNzLT5jb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IFdlYlVSTFNj
aGVtZVRhc2s6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2su
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBiODcy
MDczYmQyNy4uN2YxNGI5ODYwNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZVRhc2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVUYXNrLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVzcG9uc2UuaD4KQEAgLTUxLDEzICs1MiwxMyBAQCBjbGFzcyBXZWJQYWdlUHJveHk7CiAKIHVz
aW5nIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik+OwogCi1jbGFzcyBXZWJVUkxTY2hlbWVU
YXNrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4sIHB1YmxpYyBJbnN0YW5j
ZUNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4geworY2xhc3MgV2ViVVJMU2NoZW1lVGFzayA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+LCBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlciwgcHVibGljIEluc3RhbmNlQ291bnRlZDxXZWJVUkxTY2hlbWVUYXNrPiB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoV2ViVVJMU2NoZW1lVGFzayk7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFJlZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBh
Z2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAg
dWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAg
IHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KKyAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJ
ZGVudGlmaWVyOyB9CiAgICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzKCkgY29uc3QgeyByZXR1
cm4gbV9wcm9jZXNzLmdldCgpOyB9CiAKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBtX3JlcXVlc3Q7IH0KQEAgLTgwLDYgKzgxLDEw
IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVt
ZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBpZGVu
dGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9uSGFu
ZGxlciYmKTsKKyAgICAKKyAgICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICBJUEM6OkNvbm5l
Y3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0
X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIAogICAgIGJvb2wg
aXNTeW5jKCkgY29uc3QgeyByZXR1cm4gISFtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsgfQogCkBA
IC04Nyw3ICs5Miw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CiAgICAg
UmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOwogICAgIHVpbnQ2NF90IG1faWRlbnRp
ZmllcjsKLSAgICB1aW50NjRfdCBtX3BhZ2VJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
IG1fcmVxdWVzdDsKICAgICBib29sIG1fc3RvcHBlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3Jl
c3BvbnNlU2VudCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDBiZjUxMTJhOWU0Li4w
YThiMGMxMTIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE1NzYsNyArMTU3Niw3IEBAIHZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQo
Ym9vbCB2YWx1ZSwgQ29tcGxlCiAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVOZXR3b3JrUHJv
Y2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKG1fc2Vzc2lvbklE
LCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBjYWxsYmFja0FnZ3Jl
Z2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCi12b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFs
bFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21h
aW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3ZWJQYWdlID0gV2ViUHJv
Y2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKaW5kZXggNjQyZTMzMDlkMDcuLjgyMmMzZmM3NjM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlT3JpZW50
YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Np
b25JRC5oPgpAQCAtMTM1LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OwogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbG9n
VXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
Ci0gICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CisgICAg
dm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAg
ICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJM
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVy
ZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0IFVS
TCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHlNYWMubW0KaW5kZXggNzYwYTFkMDA5ZGUuLjAxNzk5NWE1MTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3RvclBy
b3h5TWFjLm1tCkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHIKICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBbY29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxV
UkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVM
TF07CiAKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10p
LCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFi
c29sdXRlU3RyaW5nXSkpOwogICAgIH07CiAKICAgICBpZiAoIWZvcmNlU2F2ZURpYWxvZykgewpA
QCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3Jt
QXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTCiAgICAgW2hhbmRsZSBj
bG9zZUZpbGVdOwogCiAgICAgV2ViUGFnZVByb3h5KiBpbnNwZWN0b3JQYWdlID0gd2ViVmlldygp
LT5fcGFnZS5nZXQoKTsKLSAgICBpbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3Ry
aW5nXSksIGluc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBpbnNwZWN0b3JQYWdlLT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJz
b2x1dGVTdHJpbmddKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtU2V0U2hlZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhUHJveHkubW0KaW5kZXggZjcwZjFhNGFjNGQuLmFlNmM5MGZhZDM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5p
bWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMTIxLDggKzEyMSw3IEBAIHZvaWQgVGlsZWRD
b3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eTo6ZGlkVXBkYXRlR2VvbWV0cnkoKQogCiB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rp
dml0eVN0YXRlKEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCkKIHsKLSAgICBTZWNvbmRzIGFjdGl2aXR5
U3RhdGVVcGRhdGVUaW1lb3V0ID0gU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcygyNTApOwotICAg
IHByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGU+KG1fd2ViUGFnZVBy
b3h5LnBhZ2VJRCgpLCBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCwgSVBDOjpXYWl0Rm9yT3B0
aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOworICAgIHByb2Nlc3Mo
KS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFVwZGF0ZUFjdGl2aXR5U3RhdGU+KG1fd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpLCAyNTBfbXMsIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01l
c3NhZ2VBcnJpdmVzKTsKIH0KIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5Ojp3aWxsU2VuZFVwZGF0ZUdlb21ldHJ5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCmluZGV4IDUwMjQxZDhi
ZjYyLi5mNTNmYjIxZTNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFj
L1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmhhbmRsZU1hZ25pZmljYXRpb25HZXN0dXJlRXZlbnQo
TlNFdmVudCAqZXZlbnQsIEZsb2EKIAogICAgICAgICAvLyBGSVhNRTogV2UgZHJvcCB0aGUgZmly
c3QgZnJhbWUgb2YgdGhlIGdlc3R1cmUgb24gdGhlIGZsb29yLCBiZWNhdXNlIHdlIGRvbid0IGhh
dmUgdGhlIHZpc2libGUgY29udGVudCBib3VuZHMgeWV0LgogICAgICAgICBtX21hZ25pZmljYXRp
b24gPSBtX3dlYlBhZ2VQcm94eS5wYWdlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKCksIG1fd2ViUGFnZVBy
b3h5LnBhZ2VJRCgpKTsKKyAgICAgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmll
d0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlv
bkdlc3R1cmUoKSk7CiAgICAgICAgIG1fbGFzdE1hZ25pZmljYXRpb25HZXN0dXJlV2FzU21hcnRN
YWduaWZpY2F0aW9uID0gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuOwpAQCAtMTk2LDcgKzE5Niw3
IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmljYXRpb25H
ZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQogICAgIGlmIChtX2FjdGl2ZUdlc3R1cmVUeXBlICE9
IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV93ZWJQYWdl
UHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSwg
bV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVzc2Fn
ZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0
TWFnbmlmaWNhdGlvbkdlc3R1cmUob3JpZ2luKSk7CiB9CiAKIHN0YXRpYyBmbG9hdCBtYXhpbXVt
UmVjdGFuZ2xlQ29tcG9uZW50RGVsdGEoRmxvYXRSZWN0IGEsIEZsb2F0UmVjdCBiKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIubW0KaW5kZXggMjE1MTY2MmQzNDcuLjhhZjM0YWM0YzYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRy
b2xsZXIubW0KQEAgLTE5Myw3ICsxOTMsNyBAQCAtICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29n
bml6ZXJXaWxsQmVnaW5BbmltYXRpb246KE5TSW1tZWRpYXRlQWN0aW9uR2VzdHVyZVJlYwogICAg
IC8vIEZJWE1FOiBDb25uZWN0aW9uIGNhbiBiZSBudWxsIGlmIHRoZSBwcm9jZXNzIGlzIGNsb3Nl
ZDsgd2Ugc2hvdWxkIGNsZWFuIHVwIGJldHRlciBpbiB0aGF0IGNhc2UuCiAgICAgaWYgKF9zdGF0
ZSA9PSBXZWJLaXQ6OkltbWVkaWF0ZUFjdGlvblN0YXRlOjpQZW5kaW5nKSB7CiAgICAgICAgIGlm
IChhdXRvKiBjb25uZWN0aW9uID0gX3BhZ2UtPnByb2Nlc3MoKS5jb25uZWN0aW9uKCkpIHsKLSAg
ICAgICAgICAgIGJvb2wgcmVjZWl2ZWRSZXBseSA9IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlh
dGVBY3Rpb25IaXRUZXN0PihfcGFnZS0+cGFnZUlEKCksIFNlY29uZHM6OmZyb21NaWxsaXNlY29u
ZHMoNTAwKSk7CisgICAgICAgICAgICBib29sIHJlY2VpdmVkUmVwbHkgPSBjb25uZWN0aW9uLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQ
ZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdD4oX3BhZ2UtPnBhZ2VJRCgpLCA1MDBfbXMpOwog
ICAgICAgICAgICAgaWYgKCFyZWNlaXZlZFJlcGx5KQogICAgICAgICAgICAgICAgIF9zdGF0ZSA9
IFdlYktpdDo6SW1tZWRpYXRlQWN0aW9uU3RhdGU6OlRpbWVkT3V0OwogICAgICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0K
aW5kZXggMDA3ZDg3ZGZjZDguLmY0YWI5MWU4OWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC00NzcsNyArNDc3LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TYXZlKGNvbnN0IFN0cmluZyYgc3Vn
Z2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGMKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBb
Y29udGVudENvcHkgd3JpdGVUb1VSTDphY3R1YWxVUkwgYXRvbWljYWxseTpZRVMgZW5jb2Rpbmc6
TlNVVEY4U3RyaW5nRW5jb2RpbmcgZXJyb3I6TlVMTF07CiAKLSAgICAgICAgbV9pbnNwZWN0b3JQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2Fj
dHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlk
U2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSkpOwogICAgIH07CiAKICAgICBpZiAoIWZv
cmNlU2F2ZURpYWxvZykgewpAQCAtNTIyLDcgKzUyMiw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnBsYXRmb3JtQXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJp
bmcmCiAgICAgW2hhbmRsZSB3cml0ZURhdGE6W2NvbnRlbnQgZGF0YVVzaW5nRW5jb2Rpbmc6TlNV
VEY4U3RyaW5nRW5jb2RpbmddXTsKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKLSAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlk
QXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JV
STo6RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OndpbmRvd0ZyYW1lRGlkQ2hhbmdlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4IDg3YzY4YjMzNDg1Li40NTVk
MmQ1ZDQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQ
cm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5
TWFjLm1tCkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd0FuZFZp
ZXdGcmFtZXNDaGFuZ2VkKGNvbnN0IEZsb2F0UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3cKICAgICAv
LyBJbiBjYXNlIHRoZSBVSSBjbGllbnQgb3ZlcnJpZGVzIGdldFdpbmRvd0ZyYW1lKCksIHdlIGNh
bGwgaXQgaGVyZSB0byBtYWtlIHN1cmUgd2Ugc2VuZCB0aGUgYXBwcm9wcmlhdGUgd2luZG93IGZy
YW1lLgogICAgIG1fdWlDbGllbnQtPndpbmRvd0ZyYW1lKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nl
c3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzXSAoRmxvYXRSZWN0IHdpbmRvd0ZyYW1lSW5TY3JlZW5D
b29yZGluYXRlcykgewogICAgICAgICBGbG9hdFJlY3Qgd2luZG93RnJhbWVJblVuZmxpcHBlZFNj
cmVlbkNvb3JkaW5hdGVzID0gcGFnZUNsaWVudCgpLmNvbnZlcnRUb1VzZXJTcGFjZSh3aW5kb3dG
cmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMpOwotICAgICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6V2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQod2luZG93RnJhbWVJblNjcmVl
bkNvb3JkaW5hdGVzLCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMsIHZp
ZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXMp
LCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd0FuZFZp
ZXdGcmFtZXNDaGFuZ2VkKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcywgd2luZG93RnJh
bWVJblVuZmxpcHBlZFNjcmVlbkNvb3JkaW5hdGVzLCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5h
dGVzLCBhY2Nlc3NpYmlsaXR5Vmlld0Nvb3JkaW5hdGVzKSk7CiAgICAgfSk7CiB9CiAKQEAgLTE4
MCw3ICsxODAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxl
KGJvb2wgaXNTY3JvbGxhYmxlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1h
aW5GcmFtZUlzU2Nyb2xsYWJsZShpc1Njcm9sbGFibGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xsYWJsZSkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMoY29uc3Qg
U3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZ2UmIHJlcGxhY2VtZW50UmFuZ2UsIGNvbnN0
IFZlY3RvcjxUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2U+JiBkaWN0YXRpb25BbHRlcm5hdGl2ZXNX
aXRoUmFuZ2UsIGJvb2wgcmVnaXN0ZXJVbmRvR3JvdXApCkBAIC0yMDUsNyArMjA1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvbnN0IFN0cmluZyYgdGV4
dCwgY29uc3QgRWRpdGluZ1JhbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREaWN0YXRlZFRleHRBc3luYyh0ZXh0
LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25BbHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dy
b3VwKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERpY3Rh
dGVkVGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRpY3RhdGlvbkFsdGVybmF0aXZl
cywgcmVnaXN0ZXJVbmRvR3JvdXApKTsKICNlbHNlCiAgICAgSW5zZXJ0VGV4dE9wdGlvbnMgb3B0
aW9uczsKICAgICBvcHRpb25zLnJlZ2lzdGVyVW5kb0dyb3VwID0gcmVnaXN0ZXJVbmRvR3JvdXA7
CkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdWJzdHJp
bmdGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKGNvbnN0IEVkaXRpbmdSYW5nZSYKIAogICAgIGF1dG8g
Y2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogCi0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JD
aGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjphdHRy
aWJ1dGVkU3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VDYWxsYmFjayhjb25zdCBBdHRyaWJ1dGVkU3Ry
aW5nJiBzdHJpbmcsIGNvbnN0IEVkaXRpbmdSYW5nZSYgYWN0dWFsUmFuZ2UsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0
U2VsZWN0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgZG91YmxlLCBibwog
ICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkpOwogICAgIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb250
QXRTZWxlY3Rpb24oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpGb250QXRTZWxlY3Rpb24oY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Zm9udEF0U2VsZWN0aW9uQ2FsbGJhY2soY29uc3QgU3RyaW5nJiBmb250TmFtZSwgZG91
YmxlIGZvbnRTaXplLCBib29sIHNlbGVjdGlvbkhhc011bHRpcGxlRm9udHMsIENhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKQEAgLTI3MSw3ICsyNzEsNyBAQCBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCkKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIAog
ICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nlc3MoKS5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
LCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVw
bHkodmFsdWUpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCksIE1lc3NhZ2Vz
OjpXZWJQYWdlOjpHZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSks
IG1lc3NhZ2VUaW1lb3V0KTsKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI4Miw4ICsyODIs
OCBAQCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiBXZWJQYWdlUHJveHk6OmRhdGFTZWxl
Y3Rpb25Gb3JQYXN0ZWJvYXJkKGNvbnN0IFN0cgogICAgIFNoYXJlZE1lbW9yeTo6SGFuZGxlIGhh
bmRsZTsKICAgICB1aW50NjRfdCBzaXplID0gMDsKICAgICBjb25zdCBTZWNvbmRzIG1lc3NhZ2VU
aW1lb3V0KDIwKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgbV9wYWdl
SUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0
RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQocGFzdGVib2FyZFR5cGUpLAorICAgICAgICBNZXNz
YWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRs
ZSwgc2l6ZSksIG1lc3NhZ2VUaW1lb3V0KTsKICAgICBpZiAoaGFuZGxlLmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1v
cnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChoYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOwpAQCAtMjk3LDE0ICsyOTcsMTQgQEAgYm9vbCBXZWJQYWdlUHJveHk6
OnJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
KQogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBjb25zdCBTZWNvbmRzIG1lc3NhZ2VU
aW1lb3V0KDIwKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
YWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlE
LCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRT
ZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChwYXN0ZWJvYXJkTmFtZSksIE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQ6OlJlcGx5KHJlc3VsdCksIG1lc3NhZ2VUaW1l
b3V0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJP
TFMpCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0
YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHlwZXMsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNl
bGVjdGlvbldpdGhQYXN0ZWJvYXJkRGF0YSh0eXBlcywgZGF0YSksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRh
KHR5cGVzLCBkYXRhKSk7CiB9CiAjZW5kaWYKIApAQCAtMzM0LDIyICszMzQsMjIgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4odWludDY0X3QgcGx1Z2lu
Q29tcGxleFRleHRJbnB1dEkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Vu
ZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbihwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmll
ciwgdGV4dElucHV0KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
bmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4ocGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZp
ZXIsIHRleHRJbnB1dCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBwZXJjYXNlV29yZCgp
CiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwcGVyY2FzZVdvcmQo
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwcGVyY2FzZVdvcmQo
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb3dlcmNhc2VXb3JkKCkKIHsKLSAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG93ZXJjYXNlV29yZCgpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG93ZXJjYXNlV29yZCgpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmNhcGl0YWxpemVXb3JkKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2FwaXRhbGl6ZVdvcmQoKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkNhcGl0YWxpemVXb3JkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgaXNTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQpCkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0
SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sIGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKQogCiAg
ICAgVGV4dENoZWNrZXI6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChpc1NtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZCk7CiAgICAgbV9pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCA9IGlzU21h
cnRJbnNlcnREZWxldGVFbmFibGVkOwotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U21hcnRJbnNl
cnREZWxldGVFbmFibGVkKGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtRGljdGlvbmFyeUxvb2t1cChjb25zdCBEaWN0aW9uYXJ5
UG9wdXBJbmZvJiBkaWN0aW9uYXJ5UG9wdXBJbmZvKQpAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0
ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGVsZW1lbnRUb2tlbiwgd2luZG93VG9rZW4p
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVnaXN0ZXJVSVByb2Nl
c3NBY2Nlc3NpYmlsaXR5VG9rZW5zKGVsZW1lbnRUb2tlbiwgd2luZG93VG9rZW4pKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0NoYW5nZWQodWludDY0
X3QgcGx1Z2luQ29tcGxleFRleHRJbnB1dElkZW50aWZpZXIsIGJvb2wgcGx1Z2luSGFzRm9jdXNB
bmRXaW5kb3dIYXNGb2N1cykKQEAgLTQyNCw3ICs0MjQsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6
c2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0ZvckV2ZW50KGNvbnN0IFdlYktpdDo6V2ViTW91c2VF
dmVudAogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBjb25zdCBTZWNvbmRzIG1lc3Nh
Z2VUaW1lb3V0KDMpOwotICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6
U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6
OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQs
IG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxk
RGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50KGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6OlNob3Vs
ZERlbGF5V2luZG93T3JkZXJpbmdFdmVudDo6UmVwbHkocmVzdWx0KSwgbWVzc2FnZVRpbWVvdXQp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzNSw3ICs0MzUsNyBAQCBib29sIFdlYlBh
Z2VQcm94eTo6YWNjZXB0c0ZpcnN0TW91c2UoaW50IGV2ZW50TnVtYmVyLCBjb25zdCBXZWJLaXQ6
OldlYk1vdXNlRXZlbgogCiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBjb25zdCBTZWNv
bmRzIG1lc3NhZ2VUaW1lb3V0KDMpOwotICAgIHByb2Nlc3MoKS5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91c2UoZXZlbnROdW1iZXIsIGV2ZW50KSwgTWVzc2FnZXM6
OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlOjpSZXBseShyZXN1bHQpLCBtX3BhZ2VJRCwgbWVz
c2FnZVRpbWVvdXQpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmly
c3RNb3VzZShldmVudE51bWJlciwgZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0c0Zp
cnN0TW91c2U6OlJlcGx5KHJlc3VsdCksIG1lc3NhZ2VUaW1lb3V0KTsKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IGZmNDQ5MzQxZDllLi41N2YzZmUx
NzNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBJUEM6OkNv
bm5lY3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24o
KSBjb25zdAogCiB1aW50NjRfdCBXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgpOwor
ICAgIHJldHVybiBtX3dlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAogdm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgU3RyaW5nJiB2YWxpZGF0
aW9uVVJMU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRleCBiMWNi
Yzk2M2IwZS4uNDU0Y2E2YmM4NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3Bw
CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRD
bGVhcldpbmRvd09iamVjdEZvckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkKICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNh
bGxiYWNrSUQsIGVycm9yTWVzc2FnZSwgZXJyb3JUeXBlKSwgMCk7CiB9CiAKLXZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8
U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwg
aW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0
b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVu
dCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJQ
YWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAg
IGlmICghcGFnZSkgewpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgZnJhbWVJRCwK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0
RnVuY3Rpb24oY2FsbGJhY2tJRCwgcmVzdWx0LCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZy
YW1lV2l0aE9yZGluYWwoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1
aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4s
IHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkg
ewpAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVz
b2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBjaGlsZEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVI
YW5kbGUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5v
ZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1
aW50NjRfdCBwYWdlSUQsCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBmcmFt
ZUZyb21FbGVtZW50LT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNDI2LDcgKzQyNiw3IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFt
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxs
b3B0LCBjaGlsZEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpy
ZXNvbHZlUGFyZW50RnJhbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNDUyLDcgKzQ1
Miw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1l
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
OjpudWxsb3B0LCBwYXJlbnRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5Ojpmb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Zm9jdXNGcmFtZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2Up
CkBAIC01MjcsNyArNTI3LDcgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udmVydFBv
aW50RnJvbUZyYW1lQ2xpZW50VG9Sb290VmlldyhXZWJDb3JlOjpGcmFtZVYKICAgICByZXR1cm4g
Y2xpZW50UG9pbnQ7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0
ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
bm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVt
IGNvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
PiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29t
cHV0ZUVsZW1lbnRMYXlvdXQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGlu
YXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+
LCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpA
QCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0
ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0LCByZXN1bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdD
ZW50ZXJQb2ludCwgaXNPYnNjdXJlZCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2Up
IHsKQEAgLTcwMyw3ICs3MDMsNyBAQCBzdGF0aWMgV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJl
Y3RGb3JTY3JlZW5zaG90KFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6OkVsZW1lbgogICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNo
b3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwg
Ym9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVu
c2hvdChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFu
ZGxlOwogCkBAIC03NTEsNyArNzUxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJ
RCwgaGFuZGxlLCB7IH0pLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSog
cGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAo
IXBhZ2UpIHsKQEAgLTc3Niw3ICs3NzYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYQogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgZm91bmRDb29raWVzKTsKIH0KIAotdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkZWxldGVDb29raWUodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6ZGVsZXRlQ29va2llKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFn
ZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBp
ZiAoIXBhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAppbmRleCA2Mjk1NDFkMjBi
YS4uMTE2NzY0NTI3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZVN5
c3RlbS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsMTcgKzYxLDE3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IG1l
c3NhZ2VzCi0gICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJp
bmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQg
Y2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHJlc29sdmVD
aGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1
aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4s
IHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxl
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFu
ZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4m
Jik7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCByZXNvbHZlUGFy
ZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBmb2N1
c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCk7Ci0gICAgdm9pZCBjb21w
dXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0
ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50
UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJik7Ci0gICAgdm9pZCBz
ZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+
JiYpOwotICAgIHZvaWQgdGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBi
b29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldENv
b2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4p
PiYmKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4pPiYmKTsKKyAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0
aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJh
Y2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Cisg
ICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCByZXNvbHZl
Q2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVDaGls
ZEZyYW1lV2l0aE5hbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBmb2N1c0ZyYW1lKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlEKTsKKyAgICB2b2lkIGNvbXB1
dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGlu
YXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNv
cmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYpOworICAg
IHZvaWQgc2VsZWN0T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPik+JiYpOworICAgIHZvaWQgdGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJik7CisgICAgdm9pZCBkZWxldGVDb29r
aWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29r
aWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKIAog
ICAgIFN0cmluZyBtX3Nlc3Npb25JZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCBhYTEyMTllMmVmMS4uZDcyZjg5ZDI2MzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgpAQCAt
MjEsMjEgKzIxLDIxIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkgewotICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5n
PiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNh
bGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBFdmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVj
dHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpCiAKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCkgLT4gKE9wdGlvbmFs
PFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYwotICAgIFJlc29sdmVD
aGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50
NjRfdCBmcmFtZUlEKSBBc3luYwotICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbmFtZSkgLT4gKE9wdGlvbmFsPFN0
cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYwotICAgIFJlc29sdmVQYXJl
bnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxT
dHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hp
bGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JU
eXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE5v
ZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50
NjRfdCBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbmFtZSkg
LT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYwor
ICAgIFJlc29sdmVQYXJlbnRGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3Qg
ZnJhbWVJRCkgQXN5bmMKIAotICAgIEZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlEKQorICAgIEZvY3VzRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlEKQogCi0gICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJ
bnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNv
b3JkaW5hdGVTeXN0ZW0pIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6
SW50UmVjdCByZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9p
bnQsIGJvb2wgaXNPYnNjdXJlZCkgQXN5bmMKKyAgICBDb21wdXRlRWxlbWVudExheW91dChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGVudW06dWludDhfdCBXZWJLaXQ6
OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgLT4gKE9wdGlvbmFsPFN0cmluZz4g
ZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBv
aW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCBpc09ic2N1cmVkKSBBc3luYwogCi0gICAgU2Vs
ZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBub2RlSGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFzeW5jCisgICAg
U2VsZWN0T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUpIEFzeW5jCiAKLSAgICBUYWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVk
ZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgVGFrZVNj
cmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNs
aXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgR2V0Q29va2llc0ZvckZy
YW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3JUeXBlLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBBc3luYwotICAg
IERlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBj
b29raWVOYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFzeW5jCisgICAgR2V0
Q29va2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzKSBBc3luYworICAgIERlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lKSAtPiAo
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFzeW5jCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
LmNwcAppbmRleCBhZTM4ODNkODZiNi4uYWY4OWQ3ODgxNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9
PSBNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlm
IChhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSkpCisgICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmll
clR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCiAgICAgICAgICAgICB3ZWJQYWdlLT5k
aWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMDRhZTBlNDVkNWUuLjI3OGI2MDE4NDc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UK
ICAgICBhdXRvJiBmcmFtZUxvYWRlckNsaWVudCA9IHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpOwogCiAgICAgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVy
cyB0cmFja2luZ1BhcmFtZXRlcnM7Ci0gICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCA9IGZy
YW1lTG9hZGVyQ2xpZW50LnBhZ2VJRCgpLnZhbHVlT3IoMCk7CisgICAgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50
aWZpZXIgeyB9KTsKICAgICB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCA9IGZyYW1lTG9hZGVy
Q2xpZW50LmZyYW1lSUQoKS52YWx1ZU9yKDApOwogICAgIHRyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEID0gaWRlbnRpZmllcjsKICAgICBhdXRvIHNlc3Npb25JRCA9IGZyYW1lTG9hZGVyQ2xp
ZW50LnNlc3Npb25JRCgpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJl
c291CiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcmVtZW1iZXIgdGhlIFJlc291cmNlTG9hZGVyIGlu
IG91ciByZWNvcmRzIGJ1dCBub3Qgc2NoZWR1bGUgaXQgaW4gdGhlIE5ldHdvcmtQcm9jZXNzLgog
ICAgIGlmIChyZXNvdXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5zY2hlZHVsZUFyY2hpdmVM
b2FkKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkpKSB7CiAgICAgICAg
IExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNv
dXJjZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9h
ZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFyY2hpdmUgcmVzb3VyY2UgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlm
aWVyKTsKICAgICAgICAgbV93ZWJSZXNvdXJjZUxvYWRlcnMuc2V0KGlkZW50aWZpZXIsIFdlYlJl
c291cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTc1LDE0ICsxNzUsMTQgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRl
ciwgQ2FjaGVkUmVzb3UKIAogICAgIGlmIChyZXNvdXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigp
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFJlc291cmNlKHJlc291cmNlTG9hZGVy
LCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwo
KSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgbG9hZGVkIGZyb20g
YXBwbGljYXRpb24gY2FjaGUuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIs
ICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hl
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAi
c2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZSAo
ZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIGlkZW50aWZpZXIpOwogICAgICAgICBtX3dlYlJlc291cmNlTG9hZGVycy5zZXQoaWRlbnRp
ZmllciwgV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQ
YXJhbWV0ZXJzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAocmVzb3VyY2VM
b2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNEYXRhKCkpIHsKICAgICAgICAgTE9HKE5l
dHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEuIiwgcmVzb3VyY2VMb2FkZXIu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBh
cyBkYXRhIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgYXMgZGF0YSAoZnJhbWUgPSAl
cCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOwogICAgICAgICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVz
b3UKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hl
ZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVy
bCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZS4iLCByZXNvdXJj
ZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
aGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRy
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
aGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9V
SW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAg
ICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
KFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAvLyBodHRw
czovL2Jsb2dzLmdub21lLm9yZy9hbGV4bC8yMDEyLzAxLzI2L3Jlc291cmNlcy1pbi1nbGliLwog
ICAgIGlmIChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJcygicmVzb3Vy
Y2UiKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFz
IGEgR1Jlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2No
ZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgR1Jlc291cmNlIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgR1Jlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAg
ICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTIxMSwxMSArMjExLDExIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAg
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5oYW5kbGVGZXRjaChyZXNvdXJj
ZUxvYWRlciwgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBbdGhpcywgdHJhY2tpbmdQYXJhbWV0ZXJzLCBpZGVudGlmaWVyLCBzZXNzaW9uSUQsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpLCByZXNvdXJjZUxvYWRlciA9IG1h
a2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBm
ZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNl
cnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRj
aCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+
ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJlc291cmNlTG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtl
cnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9h
ZDogdW5hYmxlIHRvIHNjaGVkdWxlIFVSTCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZl
dGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2No
ZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChm
cmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcmVzb3VyY2VM
b2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVyKV0gewogICAgICAgICAgICAgICAgIGF1dG8g
ZXJyb3IgPSBpbnRlcm5hbEVycm9yKHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkpOwog
ICAgICAgICAgICAgICAgIGVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2Vs
bGF0aW9uKTsKQEAgLTIyNywxMyArMjI3LDEzIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAg
ICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS50
cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyKSkKICAgICAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2NoZWR1bGVM
b2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLmdldCgpLCByZXNvdXJjZUxvYWRl
ci0+cmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJz
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRy
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMg
KGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAjZWxzZQogICAgIGlmICghdHJ5TG9hZGluZ1Vz
aW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlcikpCiAgICAgICAgIHNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKICAg
ICBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJz
Y2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6
IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICNlbmRp
ZgogfQogCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKICAgICBp
ZiAobG9hZFBhcmFtZXRlcnMub3B0aW9ucy5tb2RlICE9IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2
aWdhdGUpIHsKICAgICAgICAgQVNTRVJUKGxvYWRQYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbik7CiAg
ICAgICAgIGlmICghbG9hZFBhcmFtZXRlcnMuc291cmNlT3JpZ2luKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBubyBzb3VyY2VPcmlnaW4gKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2Fk
UGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hl
ZHVsZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVz
b3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMu
aWRlbnRpZmllcik7CiAgICAgICAgICAgICBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKHJl
c291cmNlTG9hZGVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzQ2LDkg
KzM0Niw5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3Jr
UHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAKICAgICBBU1NFUlQoKGxvYWRQYXJh
bWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFy
YW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6
OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNj
aGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAl
ZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGlu
dD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53
ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hl
ZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNl
TG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgp
LnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9h
ZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChm
cmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3Jp
dHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hl
ZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3Jp
dHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19j
YXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9h
ZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0
byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBo
YWQgY3Jhc2hlZC4KICAgICAgICAgLy8gVGhpcyBsb2FkIHdpbGwgbmV2ZXIgc3VjY2VlZCBzbyB3
ZSB3aWxsIHNjaGVkdWxlIGl0IHRvIGZhaWwgYXN5bmNocm9ub3VzbHkuCiAgICAgICAgIHNjaGVk
dWxlSW50ZXJuYWxseUZhaWxlZExvYWQocmVzb3VyY2VMb2FkZXIpOwpAQCAtNTA3LDE5ICs1MDcs
MTkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShG
cmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3
ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDog
bnVsbHB0cjsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFn
ZSgpIDogbnVsbHB0cjsKIAotICAgIGF1dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBh
Z2VJRCgpIDogMDsKKyAgICBhdXRvIHBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQo
KSA6IFBhZ2VJZGVudGlmaWVyIHsgfTsKICAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdl
YkZyYW1lLT5mcmFtZUlEKCkgOiAwOwogICAgIGF1dG8gc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdl
YlBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsK
IAogICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWVMb2FkZXIuZnJhbWUoKS5kb2N1bWVudCgpOwog
ICAgIGlmICghZG9jdW1lbnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBubyBkb2N1bWVudCAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVs
dSkiLCBwYWdlSUQsIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHk6IG5vIGRvY3VtZW50IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlE
LCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICAgICAgZXJyb3IgPSBpbnRlcm5hbEVycm9y
KHJlcXVlc3QudXJsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF1dG8g
c3luY0xvYWRSZXN1bHQgPSB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFu
ZGxlcihmcmFtZUxvYWRlciwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcmVxdWVzdCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgY2FsbGluZyB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVz
aW5nVVJMU2NoZW1lSGFuZGxlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSwgZXJyb3IgPSAlZCkiLCBwYWdlSUQsIGZyYW1lSUQs
IHJlc291cmNlTG9hZElkZW50aWZpZXIsIHN5bmNMb2FkUmVzdWx0LT5lcnJvci5lcnJvckNvZGUo
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9h
ZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIGNhbGxpbmcgdHJ5TG9hZGluZ1N5bmNocm9u
b3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUsIGVycm9yID0gJWQpIiwgcGFnZUlELnRv
VUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHN5bmNMb2FkUmVzdWx0
LT5lcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAgIGVycm9yID0gV1RGTW92ZShzeW5jTG9hZFJl
c3VsdC0+ZXJyb3IpOwogICAgICAgICByZXNwb25zZSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQt
PnJlc3BvbnNlKTsKICAgICAgICAgZGF0YSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQtPmRhdGEp
OwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgSGFuZ0Rl
dGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKIAogICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UGVyZm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFyYW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKSwgMCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgc2Vu
ZGluZyBzeW5jaHJvbm91cyBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQs
IGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZh
aWxlZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIs
IHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAg
ICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB3ZWJQYWdlID8gd2ViUGFnZS0+Y29yZVBhZ2UoKSA6IG51
bGxwdHIpCiAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0Rp
YWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxF
cnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnN5bmNocm9ub3VzTWVz
c2FnZUZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICAgICAgcmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJh
bWVMb2FkZXIsIHVuc2kKICAgICB9CiB9CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnBhZ2VM
b2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKIHsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBh
Z2VMb2FkQ29tcGxldGVkKHdlYlBhZ2VJRCksIDApOwogfQpAQCAtNjQ4LDEwICs2NDgsMTAgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiBmcmFtZUxv
YWRlciwgY29uc3QgVVJMJiB1cmwsIFMKIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0
IHsgdXJsIH07Ci0gICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+
cGFnZUlEKCkgOiAwOwotICAgIHBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lID8gd2Vi
RnJhbWUtPmZyYW1lSUQoKSA6IDA7CisgICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdl
LT5wYWdlSUQoKTsKKyAgICBwYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJ
RCgpOwogICAgIHBhcmFtZXRlcnMucGFyZW50UElEID0gcHJlc2VudGluZ0FwcGxpY2F0aW9uUElE
KCk7Ci0gICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lv
bklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgIHBhcmFtZXRl
cnMuc2Vzc2lvbklEID0gd2ViUGFnZS0+c2Vzc2lvbklEKCk7CiAgICAgcGFyYW1ldGVycy5zdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIHBhcmFt
ZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVzOwogICAgIHBh
cmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBzaG91bGRQZXJmb3Jt
U2VjdXJpdHlDaGVja3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDRhZjU5OTQxZTM0Li5hYzUyNDk2NmE4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGxvYWRS
ZXNvdXJjZShXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9u
cyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlN1YnJlc291cmNlTG9h
ZGVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdl
YkNvcmU6OkZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDbGllbnRDcmVkZW50
aWFsUG9saWN5LCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBjb25zdCBXZWJDb3JlOjpI
VFRQSGVhZGVyTWFwJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgcGFnZUxvYWRD
b21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSBmaW5hbDsKKyAgICB2b2lkIHBhZ2VMb2FkQ29t
cGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgcmVtb3Zl
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggYmY4OGZkYTMwMDcuLjg4YmQ1M2JmMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC04OCwxNiArODgs
MTYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHByb3Bvc2VkUmVxdWVzdCwgUmVzb3UKICAgICBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2Vzcykg
V2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCB0byAnJXMnIiwgcHJvcG9zZWRSZXF1
ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNl
bmRSZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1l
dGVycy5yZXNvdXJjZUlEKTsKIAogICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCht
X2NvcmVMb2FkZXIuZ2V0KCksIHByb3Bvc2VkUmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5n
IGVhcmx5IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxz
ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBl
YXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QgcmV0dXJuZWQgZmFsc2Ug
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX2NvcmVMb2FkZXItPndpbGxT
ZW5kUmVxdWVzdChXVEZNb3ZlKHByb3Bvc2VkUmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0oUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCkgewogICAgICAgICBpZiAoIW1fY29yZUxvYWRlciB8fCAhbV9jb3JlTG9h
ZGVyLT5pZGVudGlmaWVyKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
IndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG5vIGNvcmVsb2FkZXIgb3Ig
aWRlbnRpZmllciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVl
c3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9hZGVyIG9yIGlkZW50aWZpZXIgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJ
RCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTEzLDEyICsxMTMsMTIg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEodWludDY0X3QgYnl0ZXNTZW50
LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVMKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgYm9vbCBuZWVk
c0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKIHsKICAgICBMT0coTmV0d29yaywg
IihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlIGZvciAn
JXMnLiBTdGF0dXMgJWQuIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5k
YXRhKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc3RhdHVzID0gJWQpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCByZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIHN0YXR1cyA9ICVkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1l
dGVycy5yZXNvdXJjZUlELCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKIAogICAgIFJlZjxX
ZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAobV9jb3Jl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9h
ZEZhbGxiYWNrRm9yUmVzcG9uc2UobV9jb3JlTG9hZGVyLmdldCgpLCByZXNwb25zZSkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29u
dGludWluZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMgYWxyZWFkeSBjYWNoZWQgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5n
IGxvYWQgYmVjYXVzZSB0aGUgY29udGVudCBpcyBhbHJlYWR5IGNhY2hlZCAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgYm9vCiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyICYmIG1fY29yZUxvYWRlci0+aWRl
bnRpZmllcigpKQogICAgICAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKSk7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3Bv
bnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2Ugbm8gY29yZUxvYWRlciBvciBubyBJRCAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBu
b3QgY29udGludWluZyBsb2FkIGJlY2F1c2Ugbm8gY29yZUxvYWRlciBvciBubyBJRCAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsK
ICAgICAgICAgfTsKICAgICB9CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGlu
dDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jl
c3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBkYXRhIHVudGlsIHdlJ3Zl
IHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVk
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVEYXRhOiBTdGFy
dGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5yZXNvdXJjZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2
ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgfQogICAgIG1fbnVtQnl0
ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIApAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYg
ZGF0YSwgaW50NjRfdCBlCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJj
ZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCiB7CiAg
ICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlz
aFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0
aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hSZXNv
dXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQsIG1fbnVtQnl0ZXNSZWNlaXZlZCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkRmluaXNoUmVzb3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGgg
PSAlemQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIG1f
bnVtQnl0ZXNSZWNlaXZlZCk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vz
c2luZ05ldHdvcmtSZXNwb25zZSwgIkxvYWQgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGZpbmlzaCBi
ZWZvcmUgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogICAgIG1fY29yZUxvYWRlci0+
ZGlkRmluaXNoTG9hZGluZyhuZXR3b3JrTG9hZE1ldHJpY3MpOwpAQCAtMTY3LDcgKzE2Nyw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3
b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWls
UmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIExPRyhOZXR3
b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2Fk
IGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkp
OwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxSZXNvdXJjZUxvYWQ6IChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsUmVzb3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTG9hZCBz
aG91bGQgbm90IGJlIGFibGUgdG8gZmluaXNoIGJlZm9yZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJl
c3BvbnNlIik7CiAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpCiB7CiAgICAg
TE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQmxv
Y2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEJs
b2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgbV9jb3JlTG9hZGVyLT5k
aWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiB9CkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgp
CiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09y
Q29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVy
OjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVu
aWVkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRh
KCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVP
cHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5
RGVuaWVkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5yZXNvdXJjZUlEKTsKIAogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+c3Rv
cExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZCht
X2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwogfQpAQCAtMTk2LDEzICsxOTYs
MTMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlv
bnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6SGFuZGxlJiBoYW5kbGUp
CiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzb3VyY2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzb3VyY2U6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gaGFuZGxlLnRyeVdyYXBJ
blNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJlc291cmNlIHNlbnQgZnJv
bSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3Jl
YXRlIFNoYXJlZEJ1ZmZlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgaWYgKGF1dG8qIGZyYW1lID0gbV9jb3Jl
TG9hZGVyLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5w
YWdlKCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQoKS5s
b2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVy
bmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpjcmVhdGVTaGFy
ZWRCdWZmZXJGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApp
bmRleCA3ZmQ3ODMyMjMzYS4uNTg2NTQzNzE4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMjgsNiArMjgsNyBA
QAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAj
aW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CiAKQEAgLTUwLDcgKzUxLDcgQEAgdHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGljOgog
ICAgIHN0cnVjdCBUcmFja2luZ1BhcmFtZXRlcnMgewotICAgICAgICB1aW50NjRfdCBwYWdlSUQg
eyAwIH07CisgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAg
dWludDY0X3QgZnJhbWVJRCB7IDAgfTsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBy
ZXNvdXJjZUlEIHsgMCB9OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3Bw
CmluZGV4IDIwZTRkNWM1YWRiLi5mYTA3ODIzZmYzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlci5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCBib29sIFdlYk5vdGlmaWNhdGlvbk1hbmFn
ZXI6OnNob3coTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiAgICAg
YXV0byBpdCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90aWZpY2F0aW9uLT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3Rvcjx1aW50NjRfdD4oKSkuaXRlcmF0b3I7CiAgICAg
aXQtPnZhbHVlLmFwcGVuZChub3RpZmljYXRpb25JRCk7CiAKLSAgICBtX3Byb2Nlc3MucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Tm90
aWZpY2F0aW9uKG5vdGlmaWNhdGlvbi0+dGl0bGUoKSwgbm90aWZpY2F0aW9uLT5ib2R5KCksIG5v
dGlmaWNhdGlvbi0+aWNvbigpLnN0cmluZygpLCBub3RpZmljYXRpb24tPnRhZygpLCBub3RpZmlj
YXRpb24tPmxhbmcoKSwgbm90aWZpY2F0aW9uLT5kaXIoKSwgbm90aWZpY2F0aW9uLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5vdGlmaWNh
dGlvbklEKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNh
dGlvbi0+Ym9keSgpLCBub3RpZmljYXRpb24tPmljb24oKS5zdHJpbmcoKSwgbm90aWZpY2F0aW9u
LT50YWcoKSwgbm90aWZpY2F0aW9uLT5sYW5nKCksIG5vdGlmaWNhdGlvbi0+ZGlyKCksIG5vdGlm
aWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0
cmluZygpLCBub3RpZmljYXRpb25JRCkpOwogICAgIHJldHVybiB0cnVlOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFdlYk5v
dGlmaWNhdGlvbk1hbmFnZXI6OmNhbmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwgV2Vi
UGFnZSogcGFnZSkKICAgICBpZiAoIW5vdGlmaWNhdGlvbklEKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Q2FuY2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgcGFn
ZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q2Fu
Y2VsTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShub3RpZmljYXRpb24pOwogICAgIFVOVVNFRF9QQVJBTShwYWdlKTsKQEAgLTE4NCw3ICsxODQs
NyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJD
b3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogICAgICAgICByZXR1cm47CiAKICAgICBWZWN0
b3I8dWludDY0X3Q+JiBub3RpZmljYXRpb25JRHMgPSBpdC0+dmFsdWU7Ci0gICAgbV9wcm9jZXNz
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Q2xlYXJOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbklEcyksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNsZWFyTm90aWZpY2F0aW9ucyhu
b3RpZmljYXRpb25JRHMpKTsKICAgICBzaXplX3QgY291bnQgPSBub3RpZmljYXRpb25JRHMuc2l6
ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewogICAgICAgICBS
ZWZQdHI8Tm90aWZpY2F0aW9uPiBub3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbklETWFwLnRh
a2Uobm90aWZpY2F0aW9uSURzW2ldKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCB2b2lkIFdlYk5vdGlm
aWNhdGlvbk1hbmFnZXI6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKiBub3Rp
ZmljYXRpb24sCiAKICAgICBtX25vdGlmaWNhdGlvbklETWFwLnJlbW92ZShub3RpZmljYXRpb25J
RCk7CiAgICAgcmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRleHRNYXAobm90aWZpY2F0aW9uSUQs
IG5vdGlmaWNhdGlvbik7Ci0gICAgbV9wcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRGVzdHJveU5vdGlmaWNhdGlvbihub3Rp
ZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZERlc3Ryb3lOb3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5VU0VEX1BBUkFNKHBh
Z2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDM0YjVhNjQzZjAz
Li5hZGM0NzY2NTJlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAt
NzMsNyArNzMsNyBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBzeW5jV29ya2VyVGVybWluYXRpb25U
aW1lb3V0IHsgMTAwX21zIH07IC8vIE9ubHkgdXNlZCBieSBsYQogCiBjbGFzcyBTZXJ2aWNlV29y
a2VyRnJhbWVMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgRW1wdHlGcmFtZUxvYWRlckNsaWVu
dCB7CiBwdWJsaWM6Ci0gICAgU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50KFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQpCisgICAgU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50KFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQpCiAgICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAg
ICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkK
QEAgLTk1LDE4ICs5NSwxOCBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlh
bFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBmaW5hbCB7IHJldHVybiB0
cnVlOyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3Nlc3Npb25JRDsgfQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mcmFt
ZUlEOyB9CiAgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBmaW5hbCB7IHJldHVybiBt
X3VzZXJBZ2VudDsgfQogCiAgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIG1fY29u
bmVjdGlvbjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLSAgICB1aW50NjRfdCBt
X3BhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAg
ICB1aW50NjRfdCBtX2ZyYW1lSUQgeyAwIH07CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwogfTsK
IAotV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUdy
b3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUp
CitXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBwYWdlR3Jv
dXBJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBz
dG9yZSkKICAgICA6IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0
aW9uKSkKICAgICAsIG1fcGFnZUdyb3VwSUQocGFnZUdyb3VwSUQpCiAgICAgLCBtX3BhZ2VJRChw
YWdlSUQpCkBAIC0yMjYsMTIgKzIyNiwxMiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2Vydgogewog
ICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNp
bmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmll
cik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpIHsKLSAgICAgICAgbV9jb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNo
VGFzazo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
ICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkRmV0Y2gocmVxdWVzdCwgb3B0
aW9ucywgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zY3JpcHRVUkwoKSwgcmVmZXJyZXIpKSB7
Ci0gICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmgKaW5kZXggNmNlODNkMWQwOWUuLmZiYjYzMGU0ZTE5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IFdlYlByZWZlcmVu
Y2VzU3RvcmU7CiAKIGNsYXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5l
Y3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIFdlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VH
cm91cElELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYpOwogICAgIH5XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBk
aWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsK
QEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1f
Y29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsK
LSAgICB1aW50NjRfdCBtX3BhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBtX3BhZ2VJRDsKICAgICB1aW50NjRfdCBtX3ByZXZpb3VzU2VydmljZVdvcmtlcklEIHsgMCB9
OwogCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBt
X3N0b3JhZ2VCbG9ja2luZ1BvbGljeSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdl
QmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsU3RvcmFnZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50LmNwcAppbmRleCA4YWViYWZmOTYyMi4uMjY0NGM5YzFkMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNv
bnN0IFdlYkNvcmU6OlJlc291CiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJl
dHVybjsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9mZXRjaElk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3Bv
bnNlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIAogICAgIGNsZWFudXAoKTsKIH0KQEAgLTY4LDcg
KzY4LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAobV9uZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKICAgICAgICAgbV93YWl0aW5nRm9yQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlID0gdHJ1ZTsKIAotICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsg
cmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9m
ZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25z
ZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlk
UmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCkBAIC04NCw3ICs4NCw3IEBA
IHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJl
Y2VpdmVEYXRhIHsgeyBidWZmZXIgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLT5zaXpl
KCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7
IGJ1ZmZlciB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRj
aElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYgZm9ybURhdGEpCkBA
IC0xMDEsNyArMTAxLDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICAvLyBGb3Igbm93
IGFuZCBmb3IgdGhlIGNhc2Ugb2YgYmxvYnMsIHdlIHJlYWQgaXQgdGhlcmUgYW5kIHNlbmQgdGhl
IGRhdGEgdGhyb3VnaCBJUEMuCiAgICAgVVJMIGJsb2JVUkwgPSBmb3JtRGF0YS0+YXNCbG9iVVJM
KCk7CiAgICAgaWYgKGJsb2JVUkwuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRm9ybURhdGEg
eyBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsgV1RGTW92ZShmb3JtRGF0YSkgfSB9LCBtX2ZldGNo
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRm9ybURhdGEgeyBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHsgV1RGTW92ZShmb3JtRGF0YSkgfSB9LCBtX2ZldGNoSWRlbnRpZmll
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZQogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OkRpZFJlY2VpdmVEYXRhIHsgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihk
YXRhKSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9
LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6ZGlkRmluaXNoQmxvYkxvYWRpbmcoKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkRmFpbCB7IGVycm9yIH0s
IG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkRmFpbCB7IGVycm9yIH0sIG1fZmV0
Y2hJZGVudGlmaWVyKTsKIAogICAgIGNsZWFudXAoKTsKIH0KQEAgLTE2NCw3ICsxNjQsNyBAQCB2
b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaCgpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZpbmlzaCB7IH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6RGlkRmluaXNoIHsgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogCiAgICAgY2xlYW51
cCgpOwogfQpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6ZGlkTm90SGFuZGxlKCkKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OkRpZE5vdEhhbmRsZSB7IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIAogICAgIGNsZWFudXAo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggNDkzM2NhNGMzYTAu
LjJiMjg4NjRhOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtODIs
MTQgKzgyLDE0IEBAIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoVXNlckNvbnRlbnRDCiBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcihVc2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKQogewogICAgIEFTU0VSVCh1
c2VyQ29udGVudENvbnRyb2xsZXJzKCkuY29udGFpbnMobV9pZGVudGlmaWVyKSk7CiAKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKIAogICAgIHVzZXJDb250ZW50Q29udHJvbGxlcnMo
KS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KQEAgLTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgog
ICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBh
Z2UtPnBhZ2VJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBtX2lkZW50aWZpZXIsIElQQzo6RGF0YVJl
ZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29udHJvbGxlci0+aWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRl
bnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVy
LT5pZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI+IG1fY29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNDk2Mjk2ZjZk
ODguLjM0M2U4MzVhZDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTc4LDcgKzE3OCw3
IEBAIEZsb2F0UmVjdCBXZWJDaHJvbWVDbGllbnQ6OndpbmRvd1JlY3QoKQogCiAgICAgRmxvYXRS
ZWN0IG5ld1dpbmRvd0ZyYW1lOwogCi0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpHZXRXaW5kb3dGcmFtZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFt
ZTo6UmVwbHkobmV3V2luZG93RnJhbWUpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9w
YWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lKCksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpSZXBseShuZXdXaW5kb3dGcmFt
ZSkpKQogICAgICAgICByZXR1cm4gRmxvYXRSZWN0KCk7CiAKICAgICByZXR1cm4gbmV3V2luZG93
RnJhbWU7CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWRG
cmFtZUNoYW5nZWQoRnJhbWUqIGZyYW1lKQogewogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IGZy
YW1lID8gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKSA6IG51bGxwdHI7CiAKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZvY3VzZWRGcmFtZUNoYW5nZWQod2ViRnJhbWUgPyB3ZWJG
cmFtZS0+ZnJhbWVJRCgpIDogMCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9jdXNlZEZyYW1lQ2hhbmdlZCh3ZWJGcmFtZSA/IHdl
YkZyYW1lLT5mcmFtZUlEKCkgOiAwKSk7CiB9CiAKIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2luZG93RmVhdHVyZXMmIHdpbmRvd0ZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQpAQCAtMjg4LDE5ICsyODgsMjAgQEAgUGFnZSogV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1
ZXN0JiByZXF1ZXMKIAogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29y
ZUZyYW1lKGZyYW1lKTsKIAotICAgIHVpbnQ2NF90IG5ld1BhZ2VJRCA9IDA7CisgICAgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRDsKICAgICBPcHRpb25hbDxXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOwotICAgIGlmICghd2ViUHJvY2Vzcy5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVO
ZXdQYWdlKHdlYkZyYW1lLT5pbmZvKCksIHdlYkZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpLCByZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLCB3aW5kb3dGZWF0dXJlcywgbmF2aWdhdGlvbkFjdGlvbkRh
dGEpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpSZXBseShuZXdQYWdl
SUQsIHBhcmFtZXRlcnMpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJhbWUtPmluZm8o
KSwgd2ViRnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCks
IHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkNyZWF0ZU5ld1BhZ2U6OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVycykpKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghbmV3UGFnZUlEKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKwogICAgIEFTU0VSVChwYXJhbWV0ZXJzKTsKICAgICBpZiAocGFyYW1ldGVy
cy0+c2Vzc2lvbklEID09IG1fcGFnZS5zZXNzaW9uSUQoKSkKICAgICAgICAgcGFyYW1ldGVycy0+
b2xkUGFnZUlEID0gbV9wYWdlLnBhZ2VJRCgpOwogCi0gICAgd2ViUHJvY2Vzcy5jcmVhdGVXZWJQ
YWdlKG5ld1BhZ2VJRCwgV1RGTW92ZSgqcGFyYW1ldGVycykpOwotICAgIHJldHVybiB3ZWJQcm9j
ZXNzLndlYlBhZ2UobmV3UGFnZUlEKS0+Y29yZVBhZ2UoKTsKKyAgICB3ZWJQcm9jZXNzLmNyZWF0
ZVdlYlBhZ2UoKm5ld1BhZ2VJRCwgV1RGTW92ZSgqcGFyYW1ldGVycykpOworICAgIHJldHVybiB3
ZWJQcm9jZXNzLndlYlBhZ2UoKm5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7CiB9CiAKIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzaG93KCkKQEAgLTMzNSw3ICszMzYsNyBAQCBib29sIFdlYkNocm9tZUNs
aWVudDo6dG9vbGJhcnNWaXNpYmxlKCkKICAgICAgICAgcmV0dXJuIHRvb2xiYXJzVmlzaWJpbGl0
eSA9PSBBUEk6OkluamVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxp
dHk6OlZpc2libGU7CiAgICAgCiAgICAgYm9vbCB0b29sYmFyc0FyZVZpc2libGUgPSB0cnVlOwot
ICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxl
KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6UmVwbHko
dG9vbGJhcnNBcmVWaXNpYmxlKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGUoKSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpSZXBseSh0b29s
YmFyc0FyZVZpc2libGUpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gdG9v
bGJhcnNBcmVWaXNpYmxlOwpAQCAtMzUzLDcgKzM1NCw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50
OjpzdGF0dXNiYXJWaXNpYmxlKCkKICAgICAgICAgcmV0dXJuIHN0YXR1c2JhclZpc2liaWxpdHkg
PT0gQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50OjpVSUVsZW1lbnRWaXNpYmlsaXR5
OjpWaXNpYmxlOwogCiAgICAgYm9vbCBzdGF0dXNCYXJJc1Zpc2libGUgPSB0cnVlOwotICAgIGlm
ICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxlKCksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6UmVwbHkoc3RhdHVz
QmFySXNWaXNpYmxlKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS5zZW5kU3lu
YyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGUoKSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxlOjpSZXBseShzdGF0dXNCYXJJ
c1Zpc2libGUpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gc3RhdHVzQmFy
SXNWaXNpYmxlOwpAQCAtMzgyLDcgKzM4Myw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50OjptZW51
YmFyVmlzaWJsZSgpCiAgICAgICAgIHJldHVybiBtZW51YmFyVmlzaWJpbGl0eSA9PSBBUEk6Oklu
amVjdGVkQnVuZGxlOjpQYWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxpdHk6OlZpc2libGU7
CiAgICAgCiAgICAgYm9vbCBtZW51QmFySXNWaXNpYmxlID0gdHJ1ZTsKLSAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGUoKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6UmVwbHkobWVudUJhcklzVmlzaWJsZSks
IG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpHZXRNZW51QmFySXNWaXNpYmxlOjpSZXBseShtZW51QmFySXNWaXNpYmxlKSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIG1lbnVCYXJJc1Zpc2libGU7CkBAIC0xMTg2LDcg
KzExODcsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZENvbnRlbnRNZWRpYUVsZW1l
bnREaWRDaGFuZ2UodWludDY0X3QgZWxlbWVudElEKQogYm9vbCBXZWJDaHJvbWVDbGllbnQ6Ondy
YXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYg
d3JhcHBlZEtleSkgY29uc3QKIHsKICAgICBib29sIHN1Y2NlZWRlZDsKLSAgICBpZiAoIVdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OldyYXBDcnlwdG9LZXkoa2V5KSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6V3JhcENyeXB0b0tleTo6UmVwbHkoc3VjY2VlZGVkLCB3cmFwcGVkS2V5KSwgbV9w
YWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpXcmFwQ3J5cHRvS2V5KGtleSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldyYXBD
cnlwdG9LZXk6OlJlcGx5KHN1Y2NlZWRlZCwgd3JhcHBlZEtleSkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIHN1Y2NlZWRlZDsKIH0KQEAgLTExOTQsNyArMTE5NSw3IEBAIGJv
b2wgV2ViQ2hyb21lQ2xpZW50Ojp3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5LCBWZWN0b3I8dWludDhfdD4mCiBib29sIFdlYkNocm9tZUNsaWVudDo6dW53cmFwQ3J5cHRv
S2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPHVpbnQ4X3Q+JiBr
ZXkpIGNvbnN0CiB7CiAgICAgYm9vbCBzdWNjZWVkZWQ7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpVbndyYXBDcnlwdG9LZXkod3JhcHBlZEtleSksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlVud3JhcENyeXB0b0tleTo6UmVwbHkoc3VjY2VlZGVkLCBrZXkpLCBtX3BhZ2Uu
cGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlVud3JhcENyeXB0b0tleSh3cmFwcGVkS2V5KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
VW53cmFwQ3J5cHRvS2V5OjpSZXBseShzdWNjZWVkZWQsIGtleSkpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgcmV0dXJuIHN1Y2NlZWRlZDsKIH0KQEAgLTEyMDQsNyArMTIwNSw3IEBAIGJv
b2wgV2ViQ2hyb21lQ2xpZW50Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB3cmFwcGVkS2V5LCBWZWN0b3I8CiBTdHJpbmcgV2ViQ2hyb21lQ2xpZW50OjpzaWduZWRQdWJs
aWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQga2V5U2l6ZUluZGV4LCBjb25zdCBTdHJp
bmcmIGNoYWxsZW5nZVN0cmluZywgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgU3RyaW5n
IHJlc3VsdDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNpZ25lZFB1Ymxp
Y0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZywgdXJs
KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nOjpSZXBseShyZXN1bHQpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5n
ZVN0cmluZyhrZXlTaXplSW5kZXgsIGNoYWxsZW5nZVN0cmluZywgdXJsKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nOjpSZXBseShyZXN1
bHQpKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KQEAgLTEzMTcsMTIgKzEzMTgsMTIgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZEludmFs
aWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpo
YXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lz
dHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIG1fcGFnZS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4p
LCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0
cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
bV9wYWdlLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZN
b3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGRkM2IyMjU0MzVkLi4yOTFjNWVkZGM4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQuaApAQCAtMzY5LDggKzM2OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwotICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpIGZpbmFsOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
dG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpIGZpbmFsOwog
I2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29sb3JDaG9vc2Vy
LmNwcAppbmRleCBkNTM1ZTVjNTVjNi4uY2I0MDI0MTcwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIu
Y3BwCkBAIC00Miw3ICs0Miw3IEBAIFdlYkNvbG9yQ2hvb3Nlcjo6V2ViQ29sb3JDaG9vc2VyKFdl
YlBhZ2UqIHBhZ2UsIENvbG9yQ2hvb3NlckNsaWVudCogY2xpZW50LCBjb25zCiAgICAgLCBtX3Bh
Z2UocGFnZSkKIHsKICAgICBtX3BhZ2UtPnNldEFjdGl2ZUNvbG9yQ2hvb3Nlcih0aGlzKTsKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihpbml0aWFsQ29sb3IsIGNs
aWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSwgY2xpZW50LT5zdWdnZXN0ZWRD
b2xvcnMoKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTaG93Q29sb3JQaWNrZXIoaW5pdGlhbENvbG9yLCBjbGllbnQtPmVsZW1l
bnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCksIGNsaWVudC0+c3VnZ2VzdGVkQ29sb3JzKCkpKTsK
IH0KIAogV2ViQ29sb3JDaG9vc2VyOjp+V2ViQ29sb3JDaG9vc2VyKCkKQEAgLTc0LDcgKzc0LDcg
QEAgdm9pZCBXZWJDb2xvckNob29zZXI6OnJlYXR0YWNoQ29sb3JDaG9vc2VyKGNvbnN0IENvbG9y
JiBjb2xvcikKICAgICBtX3BhZ2UtPnNldEFjdGl2ZUNvbG9yQ2hvb3Nlcih0aGlzKTsKIAogICAg
IEFTU0VSVChtX2NvbG9yQ2hvb3NlckNsaWVudCk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTaG93Q29sb3JQaWNrZXIoY29sb3IsIG1fY29sb3JDaG9vc2VyQ2xpZW50LT5lbGVtZW50UmVj
dFJlbGF0aXZlVG9Sb290VmlldygpLCBtX2NvbG9yQ2hvb3NlckNsaWVudC0+c3VnZ2VzdGVkQ29s
b3JzKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2hvd0NvbG9yUGlja2VyKGNvbG9yLCBtX2NvbG9yQ2hvb3NlckNsaWVudC0+
ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSwgbV9jb2xvckNob29zZXJDbGllbnQtPnN1
Z2dlc3RlZENvbG9ycygpKSk7CiB9CiAKIHZvaWQgV2ViQ29sb3JDaG9vc2VyOjpzZXRTZWxlY3Rl
ZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBXZWJDb2xv
ckNob29zZXI6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIGlmICht
X3BhZ2UtPmFjdGl2ZUNvbG9yQ2hvb3NlcigpICE9IHRoaXMpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2V0Q29sb3JQaWNrZXJDb2xvcihjb2xvciksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTZXRDb2xvclBpY2tlckNvbG9yKGNvbG9yKSk7CiB9CiAKIHZvaWQgV2ViQ29sb3JDaG9vc2Vy
OjplbmRDaG9vc2VyKCkKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBXZWJDb2xvckNob29zZXI6OmVu
ZENob29zZXIoKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkVuZENvbG9yUGlja2VyKCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbmRDb2xvclBpY2tlcigp
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1
Z2dlc3Rpb25QaWNrZXIuY3BwCmluZGV4IGQwMjVkZmFjZmEyLi5kMzZhMTU0Y2ZlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0
U3VnZ2VzdGlvblBpY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjp+V2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlj
a2VyKCkgeyB9CiAKIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpoYW5kbGVLZXlk
b3duV2l0aElkZW50aWZpZXIoY29uc3QgV1RGOjpTdHJpbmcmIGtleSkKIHsKLSAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkhhbmRsZUtleWRvd25JbkRhdGFMaXN0KGtleSksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVL
ZXlkb3duSW5EYXRhTGlzdChrZXkpKTsKIH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI6OmRpZFNlbGVjdE9wdGlvbihjb25zdCBXVEY6OlN0cmluZyYgc2VsZWN0ZWRPcHRpb24p
CkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaWRD
bG9zZVN1Z2dlc3Rpb25zKCkKIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmNs
b3NlKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVuZERhdGFMaXN0U3VnZ2VzdGlv
bnMoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkVuZERhdGFMaXN0U3VnZ2VzdGlvbnMoKSk7CiB9CiAKIHZvaWQgV2ViRGF0YUxp
c3RTdWdnZXN0aW9uUGlja2VyOjpkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBlKERhdGFMaXN0U3Vn
Z2VzdGlvbkFjdGl2YXRpb25UeXBlIHR5cGUpCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgV2ViRGF0
YUxpc3RTdWdnZXN0aW9uUGlja2VyOjpkaXNwbGF5V2l0aEFjdGl2YXRpb25UeXBlKERhdGFMaXN0
U3VnZ2VzdGlvbkFjCiAgICAgbV9wYWdlLT5zZXRBY3RpdmVEYXRhTGlzdFN1Z2dlc3Rpb25QaWNr
ZXIodGhpcyk7CiAKICAgICBEYXRhTGlzdFN1Z2dlc3Rpb25JbmZvcm1hdGlvbiBpbmZvID0geyB0
eXBlLCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPnN1Z2dlc3Rpb25zKCksIG1fZGF0YUxp
c3RTdWdnZXN0aW9uc0NsaWVudC0+ZWxlbWVudFJlY3RJblJvb3RWaWV3Q29vcmRpbmF0ZXMoKSB9
OwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0RhdGFMaXN0U3VnZ2VzdGlvbnMoaW5m
byksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpTaG93RGF0YUxpc3RTdWdnZXN0aW9ucyhpbmZvKSk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBmNDI4ZmQyMzk3ZS4uNzA1MjAy
NWI5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBX
ZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyVW5kb1N0ZXAoVW5kb1N0ZXAmIHN0ZXApCiAgICAgYXV0
byBzdGVwSUQgPSB3ZWJTdGVwLT5zdGVwSUQoKTsKIAogICAgIG1fcGFnZS0+YWRkV2ViVW5kb1N0
ZXAoc3RlcElELCBXVEZNb3ZlKHdlYlN0ZXApKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oc3RlcElELCBzdGVwLmxh
YmVsKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2Fn
ZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHN0ZXBJRCwgc3RlcC5s
YWJlbCgpKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdG
b3JTeW5jUmVwbHkpOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3Rl
cChVbmRvU3RlcCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1MjljMDQ2
NzAzMC4uM2RjZDdlMmVjMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAt
MTEyLDcgKzExMiw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp+V2ViRnJhbWVMb2FkZXJDbGll
bnQoKQogewogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBh
Z2VJRCgpIGNvbnN0CitPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+cGFnZSgp
KQogICAgICAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpLT5wYWdlSUQoKTsKQEAgLTU0MSw3ICs1
NDEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZQogICAgIGlmICghd2ViUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZDogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCks
IG1fZnJhbWUtPmZyYW1lSUQoKSk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZDogKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+
cGFnZUlEKCkudG9VSW50NjQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAgIFJlZlB0cjxB
UEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9M
T0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExv
YWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMs
IHdlYlBhZ2UtPnBhZ2VJRCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOworICAgIFJFTEVBU0VfTE9H
KE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2Fk
OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3
ZWJQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOwogCiAgICAg
UmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIApAQCAtOTAxLDcgKzkwMSw5IEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihjb25zdCBOYXZpZ2F0CiAgICAgaWYgKHJlcXVlc3Rlci5mcmFtZUlEKCkgJiYgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUocmVxdWVzdGVyLmZyYW1lSUQoKSkpCiAgICAgICAg
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID0gcmVxdWVzdGVyLmZyYW1lSUQoKTsK
IAotICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlEID0gcmVxdWVzdGVyLnBhZ2VJRCgpICYm
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJRCgpKSA/IHJl
cXVlc3Rlci5wYWdlSUQoKSA6IDA7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdp
bmF0aW5nUGFnZUlEOworICAgIGlmIChyZXF1ZXN0ZXIucGFnZUlEKCkgJiYgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShyZXF1ZXN0ZXIucGFnZUlEKCkpKQorICAgICAgICBvcmlnaW5h
dGluZ1BhZ2VJRCA9IHJlcXVlc3Rlci5wYWdlSUQoKTsKIAogICAgIE5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmln
YXRpb25UeXBlID0gYWN0aW9uLT5uYXZpZ2F0aW9uVHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAppbmRleCBmNzNhYjhjYTczZi4uYzhmYjJhZjIxMjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBwbHlU
b0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llc0RhdGEmJik7CiAKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkg
Y29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKaW5kZXggZDE2ZmU4NTc3ODQuLjIwOGJiODhh
M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUG9wdXBNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUG9wdXBNZW51LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV2ViUG9wdXBN
ZW51OjpzaG93KGNvbnN0IEludFJlY3QmIHJlY3QsIEZyYW1lVmlldyogdmlldywgaW50IGluZGV4
KQogICAgIFBsYXRmb3JtUG9wdXBNZW51RGF0YSBwbGF0Zm9ybURhdGE7CiAgICAgc2V0VXBQbGF0
Zm9ybURhdGEocGFnZUNvb3JkaW5hdGVzLCBwbGF0Zm9ybURhdGEpOwogCi0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpTaG93UG9wdXBNZW51KHBhZ2VDb29yZGluYXRlcywgc3RhdGljX2Nhc3Q8
dWludDY0X3Q+KG1fcG9wdXBDbGllbnQtPm1lbnVTdHlsZSgpLnRleHREaXJlY3Rpb24oKSksIGl0
ZW1zLCBpbmRleCwgcGxhdGZvcm1EYXRhKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1lbnUocGFnZUNvb3JkaW5h
dGVzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9wb3B1cENsaWVudC0+bWVudVN0eWxlKCkudGV4
dERpcmVjdGlvbigpKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEpKTsKIH0KIAogdm9pZCBX
ZWJQb3B1cE1lbnU6OmhpZGUoKQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgV2ViUG9wdXBNZW51
OjpoaWRlKCkKICAgICBpZiAoIW1fcGFnZSB8fCAhbV9wb3B1cENsaWVudCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIaWRlUG9wdXBNZW51KCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpI
aWRlUG9wdXBNZW51KCkpOwogICAgIG1fcGFnZS0+c2V0QWN0aXZlUG9wdXBNZW51KG51bGxwdHIp
OwogICAgIG1fcG9wdXBDbGllbnQtPnBvcHVwRGlkSGlkZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNoUG9w
dXBNZW51LmNwcAppbmRleCAzM2Q0NzU2ZWRhMi4uYzBlOGMxOTE0NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFy
Y2hQb3B1cE1lbnUuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51
OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBWZWN0
CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlNhdmVSZWNlbnRTZWFyY2hlcyhuYW1lLCBzZWFyY2hJdGVtcyksIHBhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNhdmVSZWNlbnRT
ZWFyY2hlcyhuYW1lLCBzZWFyY2hJdGVtcykpOwogfQogCiB2b2lkIFdlYlNlYXJjaFBvcHVwTWVu
dTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVmVjdG9yPFJl
Y2VudFNlYXJjaD4mIHJlc3VsdEl0ZW1zKQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdlYlNlYXJj
aFBvcHVwTWVudTo6bG9hZFJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
VmVjdG9yPFJlYwogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6TG9hZFJlY2VudFNlYXJjaGVzKG5hbWUpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNoZXM6OlJlcGx5KHJlc3VsdEl0ZW1zKSwgcGFn
ZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkxvYWRSZWNlbnRTZWFyY2hlcyhuYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9hZFJl
Y2VudFNlYXJjaGVzOjpSZXBseShyZXN1bHRJdGVtcykpOwogfQogCiBib29sIFdlYlNlYXJjaFBv
cHVwTWVudTo6ZW5hYmxlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5o
CmluZGV4IGY5OTg2ZTQxY2EyLi5jZjdjYmY0ZjllNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogICAgIGNvbnN0
IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKLSAgICBjb25zdCB1
aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3Bh
Z2VJRDsKICAgICBRdWlja0xvb2tEb2N1bWVudERhdGEgbV9kYXRhOwogfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCmluZGV4IDI3NmI4
MGJmMjhmLi44ZDY5Yjg1NGI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtNjgsNyArNjgsNyBAQCBEcmF3aW5nQXJlYTo6RHJh
d2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIERyYXdpbmdBcmVhSWRlbnRpZmllciBpZGVu
dGlmaWVyLAogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3dlYlBhZ2Uo
d2ViUGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRp
Zmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIH0KIAogRHJhd2luZ0FyZWE6On5EcmF3aW5nQXJl
YSgpCkBAIC05NCw3ICs5NCwxNyBAQCB2b2lkIERyYXdpbmdBcmVhOjpyZW1vdmVNZXNzYWdlUmVj
ZWl2ZXJJZk5lZWRlZCgpCiAgICAgaWYgKG1faGFzUmVtb3ZlZE1lc3NhZ2VSZWNlaXZlcikKICAg
ICAgICAgcmV0dXJuOwogICAgIG1faGFzUmVtb3ZlZE1lc3NhZ2VSZWNlaXZlciA9IHRydWU7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZp
ZXIpOworfQorCitJUEM6OkNvbm5lY3Rpb24qIERyYXdpbmdBcmVhOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCk7Cit9CisKK3VpbnQ2NF90IERyYXdpbmdBcmVhOjptZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmluZGV4IDgwNjlhMTU4ZWUyLi5l
Yzk1MzdkNzBmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RHJhd2luZ0FyZWEuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbmZvLmgi
CiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29udGV4dC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZl
ci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9h
dFJlY3QuaD4KQEAgLTY1LDcgKzY2LDcgQEAgY2xhc3MgTGF5ZXJUcmVlSG9zdDsKIHN0cnVjdCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAK
LWNsYXNzIERyYXdpbmdBcmVhIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNz
IERyYXdpbmdBcmVhIDogcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcm90ZWN0ZWQgSVBD
OjpNZXNzYWdlU2VuZGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShEcmF3aW5nQXJlYSk7CiAKQEAgLTE1MywxMSArMTU0LDYgQEAgcHVi
bGljOgogcHJvdGVjdGVkOgogICAgIERyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZSwgRHJhd2lu
Z0FyZWFJZGVudGlmaWVyLCBXZWJQYWdlJik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBi
b29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3dlYlBh
Z2Uuc2VuZChtZXNzYWdlLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgeyB9KTsKLSAgICB9Ci0K
ICAgICBEcmF3aW5nQXJlYVR5cGUgbV90eXBlOwogICAgIERyYXdpbmdBcmVhSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAgICAgV2ViUGFnZSYgbV93ZWJQYWdlOwpAQCAtMTcwLDYgKzE2NiwxMCBA
QCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKKyAgICAKKyAg
ICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CisgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCiAg
ICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBwdXJlIHZpcnR1YWwuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA2
OTE4MzBiNTkzYy4uNDlhMmMzYmIzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uKQogICAgIGNvbm5lY3Rpb24tPmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUu
Z2V0KCksIHRoaXMpOwogfQogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGJvb2wgY2FuUnVi
YmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJC
YW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQordm9pZCBFdmVudERpc3BhdGNo
ZXI6OndoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50
JiB3aGVlbEV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFu
ZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJv
dHRvbSkKIHsKICNpZiBQTEFURk9STShDT0NPQSkgfHwgRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
ICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgcGxhdGZvcm1XaGVlbEV2ZW50ID0gcGxhdGZvcm0od2hl
ZWxFdmVudCk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVs
RXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW4KIH0K
IAogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
Z2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZl
bnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXN0dXJlRXZlbnQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYgZ2VzdHVy
ZUV2ZW50KQogewogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBwYWdlSUQsIGdlc3R1cmVFdmVudF0oKSBtdXRhYmxlIHsKICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hHZXN0dXJlRXZlbnQocGFnZUlELCBnZXN0dXJlRXZl
bnQpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXRRdWV1ZWRU
b3VjaEV2ZW50c0ZvclBhZ2UoY29uc3QgV2ViUGFnZSYgd2ViUGFnZSwgVG91Y2hFCiAgICAgZGVz
dGluYXRpb25RdWV1ZSA9IG1fdG91Y2hFdmVudHMudGFrZSh3ZWJQYWdlLnBhZ2VJRCgpKTsKIH0K
IAotdm9pZCBFdmVudERpc3BhdGNoZXI6OnRvdWNoRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6dG91Y2hFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViVG91
Y2hFdmVudCYgdG91Y2hFdmVudCkKIHsKICAgICBib29sIHVwZGF0ZUxpc3RXYXNFbXB0eTsKICAg
ICB7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoVG91
Y2hFdmVudHMoKQogfQogI2VuZGlmCiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdo
ZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50
KQordm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudChQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVl
bEV2ZW50JiB3CiB9CiAKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotdm9pZCBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hHZXN0dXJlRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoR2VzdHVy
ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW4KICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpzZW5kRGlk
UmVjZWl2ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmIGV2ZW50LCBib29s
IGRpZEhhbmRsZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRSZWNlaXZlRXZl
bnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJFdmVudCYgZXZlbnQsIGJvb2wgZGlk
SGFuZGxlRXZlbnQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZl
bnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGV2ZW50LnR5cGUoKSksIGRpZEhhbmRsZUV2ZW50KSwg
cGFnZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZl
bnREaXNwYXRjaGVyLmgKaW5kZXggMWQ0Nzc4NzdlYWEuLmUxYmJiZDQ3OTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAogI2luY2x1ZGUgIldlYkV2
ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2hlZWxFdmVudERlbHRhRmlsdGVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC03NywzOCArNzgsMzggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZvaWQgd2hlZWxFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmLCBib29sIGNhblJ1YmJlckJhbmRBdExl
ZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBi
b29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSk7CisgICAgdm9pZCB3aGVlbEV2ZW50KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRv
cCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZF
TlRTKQotICAgIHZvaWQgdG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlRvdWNo
RXZlbnQmKTsKKyAgICB2b2lkIHRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVO
VFMpCi0gICAgdm9pZCBnZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0
dXJlRXZlbnQmKTsKKyAgICB2b2lkIGdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAogCiAgICAgLy8gVGhpcyBpcyBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50KHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYpOworICAgIHZvaWQgZGlzcGF0Y2hX
aGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50Jik7
CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBkaXNwYXRjaFRvdWNoRXZl
bnRzKCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQg
ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZl
bnQmKTsKKyAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKLSAgICB2b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlkSGFuZGxlRXZlbnQpOworICAgIHZvaWQgc2VuZERp
ZFJlY2VpdmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViRXZlbnQmLCBi
b29sIGRpZEhhbmRsZUV2ZW50KTsKICNlbmRpZgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1
ZTsKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgTG9jayBtX3Njcm9sbGluZ1Ry
ZWVzTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVk
U2Nyb2xsaW5nVHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZT4+IG1f
c2Nyb2xsaW5nVHJlZXM7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2hl
ZWxFdmVudERlbHRhRmlsdGVyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YUZpbHRlcjsKICNpZiBF
TkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBMb2NrIG1fdG91Y2hFdmVudHNMb2NrOwotICAg
IEhhc2hNYXA8dWludDY0X3QsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBUb3VjaEV2ZW50UXVldWU+IG1fdG91Y2hF
dmVudHM7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgppbmRleCA1ZTE1NDNj
OThjYy4uYWY5MDRiNDUxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KQEAgLTIxLDExICsy
MSwxMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBFdmVudERpc3BhdGNoZXIgewot
ICAgIFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZl
bnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwg
Ym9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQorICAg
IFdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYldo
ZWVsRXZlbnQgZXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJC
YW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0
Qm90dG9tKQogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgIFRvdWNoRXZlbnQodWlu
dDY0X3QgcGFnZUlELCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCisgICAgVG91Y2hFdmVu
dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6V2ViVG91Y2hFdmVudCBl
dmVudCkKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi0gICAgR2VzdHVy
ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQgZXZlbnQpCisg
ICAgR2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpX
ZWJHZXN0dXJlRXZlbnQgZXZlbnQpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBiNzUyYzFjNTRkNC4uYjI5
MWRmMGI3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KQEAgLTc1LDcgKzc1LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFcK
ICAgICAvLyBGSVhNRTogV2hpbGUgdXNpbmcgdGhlIGhpZ2ggZW5kIG9mIHRoZSByYW5nZSBvZiBE
aXNwbGF5SURzIG1ha2VzIGEgY29sbGlzaW9uIHdpdGggcmVhbCwgbm9uLVJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhCiAgICAgLy8gRGlzcGxheUlEcyBsZXNzIGxpa2VseSwgaXQgaXMgbm90IGVu
dGlyZWx5IHNhZmUgdG8gaGF2ZSBhIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIGFuZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYQogICAgIC8vIGNvZWV4aXN0IGluIHRoZSBzYW1lIHBy
b2Nlc3MuCi0gICAgd2ViUGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2Uoc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpIC0gd2ViUGFnZS5wYWdlSUQoKSk7CisgICAgd2ViUGFnZS53
aW5kb3dTY3JlZW5EaWRDaGFuZ2Uoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgp
IC0gd2ViUGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIH0KIAogUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSgpCkBAIC00MzQsNyArNDM0LDcg
QEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIFJl
ZlB0cjxCYWNraW5nU3RvcmVGbHVzaGVyPiBiYWNraW5nU3RvcmVGbHVzaGVyID0gQmFja2luZ1N0
b3JlRmx1c2hlcjo6Y3JlYXRlKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCksIFdURk1vdmUoY29tbWl0RW5jb2RlciksIFdURk1vdmUoY29udGV4dHNUb0Zs
dXNoKSk7CiAgICAgbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1c2hlciA9IGJhY2tpbmdTdG9yZUZs
dXNoZXI7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2UucGFnZUlEKCk7CisgICAg
YXV0byBwYWdlSUQgPSBtX3dlYlBhZ2UucGFnZUlEKCk7CiAgICAgZGlzcGF0Y2hfYXN5bmMobV9j
b21taXRRdWV1ZSwgW2JhY2tpbmdTdG9yZUZsdXNoZXIgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZUZs
dXNoZXIpLCBwYWdlSURdIHsKICAgICAgICAgYmFja2luZ1N0b3JlRmx1c2hlci0+Zmx1c2goKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlV2Vi
SW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3Rl
V2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IDA1NDQwNDU2ZjQxLi5jOTQwZTBjZDA0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlV2ViSW5zcGVjdG9y
VUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZVdlYklu
c3BlY3RvclVJLmNwcApAQCAtNzksNyArNzksNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJ
OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclVJOjpzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNlbmRNZXNz
YWdlVG9CYWNrZW5kKG1lc3NhZ2UpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQo
bWVzc2FnZSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjp3aW5kb3dPYmplY3RD
bGVhcmVkKCkKQEAgLTEwMiwxMiArMTAyLDEyIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6
OmZyb250ZW5kTG9hZGVkKCkKIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6Y2hhbmdlU2hl
ZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eTo6U2V0U2hlZXRSZWN0KHJlY3QpLCBtX3BhZ2UucGFnZUlEKCkpOworICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2V0U2hlZXRS
ZWN0KHJlY3QpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c3RhcnRXaW5kb3dE
cmFnKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5k
b3dEcmFnKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpTdGFydFdpbmRvd0RyYWcoKSk7CiB9CiAKIHZvaWQgUmVt
b3RlV2ViSW5zcGVjdG9yVUk6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KQpAQCAtMTI0
LDM0ICsxMjQsMzQgQEAgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiBSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6dXNlckludGVyZmFjZUxheW91dEQKIAogdm9pZCBSZW1vdGVXZWJJ
bnNwZWN0b3JVSTo6YnJpbmdUb0Zyb250KCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSk7
CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKIHsKICAgICBt
X3BhZ2UuY29yZVBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEluc3BlY3RvckZyb250
ZW5kQ2xpZW50KG51bGxwdHIpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OkZyb250ZW5kRGlkQ2xvc2UoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkZyb250ZW5kRGlkQ2xvc2UoKSk7
CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnJlb3BlbigpCiB7Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlJlb3BlbigpLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6UmVvcGVu
KCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpvcGVuSW5OZXdUYWIoY29uc3Qg
U3RyaW5nJiB1cmwpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Ok9w
ZW5Jbk5ld1RhYih1cmwpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6T3BlbkluTmV3VGFiKHVybCkpOwogfQogCiB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZUFz
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTYXZlKGZpbGVuYW1l
LCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyksIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTYXZl
KGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcykpOwogfQogCiB2
b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjphcHBlbmQoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwg
Y29uc3QgU3RyaW5nJiBjb250ZW50KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpLCBtX3BhZ2UucGFnZUlEKCkpOworICAg
IG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZp
bGVuYW1lLCBjb250ZW50KSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6Omluc3Bl
Y3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCkBAIC0xNjEsNyArMTYxLDcg
QEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBT
dHJpbmcmIHVybFN0cmluZykKIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2hvd0NlcnRp
ZmljYXRlKGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTaG93Q2VydGlmaWNhdGUoY2VydGlmaWNh
dGVJbmZvKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVt
b3RlV2ViSW5zcGVjdG9yUHJveHk6OlNob3dDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZUluZm8pKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKaW5kZXgg
MjExZDYwMWVmMGIuLmZjZWUwZGZkZmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCkBAIC01
NSw3ICs1NSw3IEBAIHN0YXRpYyBJRFRvSGlzdG9yeUl0ZW1NYXAmIGlkVG9IaXN0b3J5SXRlbU1h
cCgpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotdm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6
YWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRl
bUlELCBSZWY8SGlzdG9yeUl0ZW0+JiYgaXRlbSwgdWludDY0X3QgcGFnZUlELCBPdmVyd3JpdGVF
eGlzdGluZ0l0ZW0gb3ZlcndyaXRlRXhpc3RpbmdJdGVtKQordm9pZCBXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6YWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYgaXRlbUlELCBSZWY8SGlzdG9yeUl0ZW0+JiYgaXRlbSwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0gb3ZlcndyaXRlRXhpc3RpbmdJdGVtKQogewogICAg
IC8vIFRoaXMgaXRlbS9pdGVtSUQgcGFpciBzaG91bGQgbm90IGFscmVhZHkgZXhpc3QgaW4gb3Vy
IG1hcC4KICAgICBBU1NFUlRfVU5VU0VEKG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSwgb3ZlcndyaXRl
RXhpc3RpbmdJdGVtID09IE92ZXJ3cml0ZUV4aXN0aW5nSXRlbTo6WWVzIHx8ICFpZFRvSGlzdG9y
eUl0ZW1NYXAoKS5jb250YWlucyhpdGVtSUQpKTsKQEAgLTExNiw3ICsxMTYsNyBAQCBSZWZQdHI8
SGlzdG9yeUl0ZW0+IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjppdGVtQXRJbmRleChpbnQgaXRl
bUluZGV4KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIE9wdGlvbmFsPEJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXI+IGl0ZW1JRDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaXRlbUluZGV4KSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleDo6UmVwbHkoaXRlbUlEKSwgbV9wYWdlLT5w
YWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkJhY2tGb3J3YXJkSXRlbUF0SW5kZXgoaXRlbUluZGV4KSwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleDo6UmVwbHkoaXRlbUlEKSkpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgaWYgKCFpdGVtSUQpCkBAIC0xMzEsNyArMTMxLDcgQEAgdW5z
aWduZWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmJhY2tMaXN0Q291bnQoKSBjb25zdAogICAg
ICAgICByZXR1cm4gMDsKIAogICAgIHVuc2lnbmVkIGJhY2tMaXN0Q291bnQgPSAwOwotICAgIGlm
ICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNrTGlzdENvdW50KCks
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudDo6UmVwbHko
YmFja0xpc3RDb3VudCksIG1fcGFnZS0+cGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoKSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRCYWNrTGlzdENvdW50OjpSZXBseShi
YWNrTGlzdENvdW50KSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIGJhY2tMaXN0
Q291bnQ7CkBAIC0xNDMsNyArMTQzLDcgQEAgdW5zaWduZWQgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmZvcndhcmRMaXN0Q291bnQoKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIHVu
c2lnbmVkIGZvcndhcmRMaXN0Q291bnQgPSAwOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50KCksIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExpc3RDb3VudDo6UmVwbHkoZm9yd2FyZExpc3RDb3Vu
dCksIG1fcGFnZS0+cGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQoKSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50OjpSZXBseShmb3J3YXJk
TGlzdENvdW50KSkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIGZvcndhcmRMaXN0
Q291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAppbmRleCBmM2IxYzhhZjU0OC4uZDFiYWFkYjkxYzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICBZZXMsCiAgICAg
ICAgIE5vCiAgICAgfTsKLSAgICB2b2lkIGFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IFdlYkNv
cmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+
JiYsIHVpbnQ2NF90IHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKKyAgICB2b2lkIGFk
ZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZp
ZXImLCBSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0pOwogCiAgICAgdm9pZCBjbGVhcigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAppbmRleCAx
NjBlZGVmZDU5ZC4uMmQ5ZDA4NWUzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcApAQCAtNDksNyArNDksNyBAQCBXZWJDb29raWVK
YXI6OldlYkNvb2tpZUphcigpCiBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6
OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAg
ICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5j
bGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGll
bnQoKS5wYWdlSUQoKTsKQEAgLTY2LDcgKzY2LDcgQEAgU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29v
a2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAog
dm9pZCBXZWJDb29raWVKYXI6OnNldENvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsK
KyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFt
ZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIo
KS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5j
bGllbnQoKS5wYWdlSUQoKTsKQEAgLTgzLDcgKzgzLDcgQEAgYm9vbCBXZWJDb29raWVKYXI6OmNv
b2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVD
b29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3QKK3N0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2Vi
Q29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Np
b25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFdlYkNvcmU6Oklu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFN0
cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQgPSBmYWxz
ZTsKQEAgLTk1LDcgKzk1LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29v
a2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWEKIGJvb2wgV2ViQ29v
a2llSmFyOjpnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwg
Y29uc3QgVVJMJiB1cmwsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiByYXdDb29raWVzKSBjb25z
dAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBp
ZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBm
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFt
ZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCmluZGV4IDk3ZGQ3NmY2NjRjLi41NTliZDBlNTBi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2ll
SmFyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBjb29raWVzKFdlYkNvcmU6
OkRvY3VtZW50JiwgY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRDb29raWVz
KFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpIGZpbmFsOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1l
bnQmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVD
b29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6
U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZp
bmFsOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdCBmaW5hbDsK
ICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBV
UkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSBmaW5hbDsKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggODkwYzVlNTZhYzAuLjRhZjQ5NWE1MWI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBA
IC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTGlzdGVuZXJJRCgpCiBS
ZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShXZWJQYWdlKiBw
YWdlLCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKQogewogICAgIGF1dG8gZnJhbWUgPSBjcmVh
dGUoc3RkOjp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PihzdGF0aWNfY2FzdDxXZWJG
cmFtZUxvYWRlckNsaWVudCo+KCZjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSkpOwotICAg
IHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZyYW1lKGZy
YW1lLT5mcmFtZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVNYWluRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwog
CiAgICAgZnJhbWUtPm1fY29yZUZyYW1lID0gY29yZUZyYW1lOwogICAgIGZyYW1lLT5tX2NvcmVG
cmFtZS0+dHJlZSgpLnNldE5hbWUoU3RyaW5nKCkpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIFJlZjxX
ZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2Us
IFdlYkNvcmU6OkZyYW1lKiBjCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFt
ZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgSFRNTEZyYW1lT3duZXJF
bGVtZW50KiBvd25lckVsZW1lbnQpCiB7CiAgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6Om1h
a2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBw
YWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBhdXRvIGNvcmVGcmFt
ZSA9IEZyYW1lOjpjcmVhdGUocGFnZS0+Y29yZVBhZ2UoKSwgb3duZXJFbGVtZW50LCBmcmFtZS0+
bV9mcmFtZUxvYWRlckNsaWVudC5nZXQoKSk7CiAgICAgZnJhbWUtPm1fY29yZUZyYW1lID0gY29y
ZUZyYW1lLnB0cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5jcHAKaW5kZXggZDc3ZTYzNzBjMTEuLmJkYjkyZjc0ZGE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKQEAgLTcy
LDcgKzcyLDcgQEAgV2ViSW5zcGVjdG9yOjp+V2ViSW5zcGVjdG9yKCkKIAogdm9pZCBXZWJJbnNw
ZWN0b3I6Om9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGJvb2wgdW5kZXJUZXN0KQogewotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpPcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChj
YW5BdHRhY2hXaW5kb3coKSwgdW5kZXJUZXN0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6T3BlbkxvY2FsSW5zcGVjdG9y
RnJvbnRlbmQoY2FuQXR0YWNoV2luZG93KCksIHVuZGVyVGVzdCkpOwogfQogCiB2b2lkIFdlYklu
c3BlY3Rvcjo6c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29u
bmVjdGlvbklkZW50aWZpZXIpCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6
OnNldEZyb250ZW5kQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgZW5jb2RlZENvbm5lY3Rpb25J
ZGVudGkKIAogdm9pZCBXZWJJbnNwZWN0b3I6OmNsb3NlRnJvbnRlbmRDb25uZWN0aW9uKCkKIHsK
LSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlkQ2xvc2UoKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6RGlk
Q2xvc2UoKSk7CiAKICAgICAvLyBJZiB3ZSB0cmllZCB0byBjbG9zZSB0aGUgZnJvbnRlbmQgYmVm
b3JlIGl0IHdhcyBjcmVhdGVkLCB0aGVuIG5vIGNvbm5lY3Rpb24gZXhpc3RzIHlldC4KICAgICBp
ZiAobV9mcm9udGVuZENvbm5lY3Rpb24pIHsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFdlYklu
c3BlY3Rvcjo6Y2xvc2VGcm9udGVuZENvbm5lY3Rpb24oKQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6
YnJpbmdUb0Zyb250KCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdU
b0Zyb250KCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0
b3I6OndoZW5Gcm9udGVuZENvbm5lY3Rpb25Fc3RhYmxpc2hlZChGdW5jdGlvbjx2b2lkKCk+JiYg
Y2FsbGJhY2spCkBAIC0yODEsNyArMjgxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnN0b3BFbGVt
ZW50U2VsZWN0aW9uKCkKIAogdm9pZCBXZWJJbnNwZWN0b3I6OmVsZW1lbnRTZWxlY3Rpb25DaGFu
Z2VkKGJvb2wgYWN0aXZlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpFbGVt
ZW50U2VsZWN0aW9uQ2hhbmdlZChhY3RpdmUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpFbGVtZW50U2VsZWN0aW9uQ2hh
bmdlZChhY3RpdmUpKTsKIH0KIAogYm9vbCBXZWJJbnNwZWN0b3I6OmNhbkF0dGFjaFdpbmRvdygp
CkBAIC0zMTUsNyArMzE1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3I6OnVwZGF0ZURvY2tpbmdBdmFp
bGFiaWxpdHkoKQogCiAgICAgbV9wcmV2aW91c0NhbkF0dGFjaCA9IGNhbkF0dGFjaFdpbmRvdzsK
IAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpBdHRhY2hBdmFpbGFiaWxpdHlDaGFu
Z2VkKGNhbkF0dGFjaFdpbmRvdyksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQo
Y2FuQXR0YWNoV2luZG93KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4
IGM5NjUyZTk0YWY4Li5iY2ZmOGUyYTg5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcApAQCAtNTgsNyArNTgsNyBAQCBXZWJJ
bnNwZWN0b3JVSTo6V2ViSW5zcGVjdG9yVUkoV2ViUGFnZSYgcGFnZSkKICNlbmRpZgogfQogCi12
b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKHVpbnQ2NF90IGluc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVs
KQordm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbihQYWdlSWRlbnRpZmll
ciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3Bl
Y3Rpb25MZXZlbCkKIHsKICAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gaW5zcGVjdGVk
UGFnZUlkZW50aWZpZXI7CiAgICAgbV9mcm9udGVuZEFQSURpc3BhdGNoZXIucmVzZXQoKTsKQEAg
LTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdygpCiAgICAg
aWYgKG1fZnJvbnRlbmRIb3N0KQogICAgICAgICBtX2Zyb250ZW5kSG9zdC0+ZGlzY29ubmVjdENs
aWVudCgpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IDA7CisgICAgbV9pbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllciA9IHsgfTsKICAgICBtX3VuZGVyVGVzdCA9IGZhbHNlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUku
aAppbmRleCA4MzgxYmYxY2VkZS4uOTQyNGJmZTFmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKQEAg
LTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVy
ZW5jZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2Vi
SW5zcGVjdG9yVUkgbWVzc2FnZXMKLSAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24odWludDY0
X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNw
ZWN0aW9uTGV2ZWwpOworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2ln
bmVkIGluc3BlY3Rpb25MZXZlbCk7CiAgICAgdm9pZCB1cGRhdGVDb25uZWN0aW9uKCk7CiAKICAg
ICB2b2lkIHNob3dDb25zb2xlKCk7CkBAIC0xMzMsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICAv
LyBjb3JlUGFnZSgpLCBzaW5jZSB3ZSBtYXkgbmVlZCBpdCBhZnRlciB0aGUgZnJvbnRlbmQncyBw
YWdlIGhhcyBzdGFydGVkIGRlc3RydWN0aW9uLgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXIqIG1fZnJvbnRlbmRDb250cm9sbGVyIHsgbnVsbHB0ciB9OwogCi0gICAgdWludDY0X3Qg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIGJvb2wgbV91bmRlclRlc3QgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9kb2NraW5nVW5hdmFpbGFibGUgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9pc1Zpc2libGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgppbmRleCBkZWEw
ZmU1ODRkNC4uNDMxOTBhYTgzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsy
MSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJIHsKLSAg
ICBFc3RhYmxpc2hDb25uZWN0aW9uKHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBi
b29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQorICAgIEVzdGFibGlzaENv
bm5lY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIs
IGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiAgICAgVXBkYXRlQ29u
bmVjdGlvbigpCiAKICAgICBBdHRhY2hlZEJvdHRvbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDNiYWFmZDE4NTRjLi4yMDg3ZjIxNGFkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM2
MCw3ICszNjAsNyBAQCBwcml2YXRlOgogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpS
ZWZDb3VudGVkTGVha0NvdW50ZXIsIHdlYlBhZ2VDb3VudGVyLCAoIldlYlBhZ2UiKSk7CiAKLVJl
ZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK1JlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUo
SWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQogewogICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJ
RCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogCkBAIC0zNzAsNyArMzcwLDcgQEAgUmVmPFdlYlBh
Z2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWUKICAgICByZXR1cm4gcGFnZTsKIH0KIAotV2ViUGFnZTo6V2ViUGFnZSh1
aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQor
V2ViUGFnZTo6V2ViUGFnZShJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX3ZpZXdT
aXplKHBhcmFtZXRlcnMudmlld1NpemUpCiAgICAgLCBtX2Fsd2F5c1Nob3dzSG9yaXpvbnRhbFNj
cm9sbGVyIHsgcGFyYW1ldGVycy5hbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciB9CkBAIC04
MzEsNyArODMxLDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYWdlOjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFnZUlEKCk7CisgICAgcmV0dXJuIHBhZ2VJ
RCgpLnRvVUludDY0KCk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTE2NDgs
NyArMTY0OCw3IEBAIHZvaWQgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkCiAgICAgaWYgKCFpdGVtKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBMT0coTG9hZGluZywgIkluIFdlYlByb2Nlc3MgcGlkICVpLCBX
ZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFjay9mb3J3YXJkIFVSTCAlcyIs
IGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9wYWdlSUQsIGl0ZW0tPnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOworICAgIExPRyhMb2FkaW5nLCAiSW4gV2ViUHJvY2VzcyBwaWQgJWksIFdl
YlBhZ2UgJSIgUFJJdTY0ICIgaXMgbmF2aWdhdGluZyB0byBiYWNrL2ZvcndhcmQgVVJMICVzIiwg
Z2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBpdGVtLT51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEFTU0VSVCghbV9wZW5kaW5nTmF2aWdhdGlv
bklEKTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CkBAIC0yMDc2
LDcgKzIwNzYsNyBAQCBib29sIFdlYlBhZ2U6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQogICAgIGlmICghdmlldyB8fCB2aWV3LT5maXhlZExheW91dFNpemUoKSA9PSBz
aXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJs
ZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIHNldEZpeGVkTGF5
b3V0U2l6ZSAiIDw8IHNpemUpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0
cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBzZXRGaXhlZExh
eW91dFNpemUgIiA8PCBzaXplKTsKICAgICB2aWV3LT5zZXRGaXhlZExheW91dFNpemUoc2l6ZSk7
CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpeGVkTGF5b3V0U2l6ZURpZENo
YW5nZShzaXplKSk7CkBAIC0yNTA0LDcgKzI1MDQsNyBAQCBjb25zdCBXZWJFdmVudCogV2ViUGFn
ZTo6Y3VycmVudEV2ZW50KCkKIHZvaWQgV2ViUGFnZTo6ZnJlZXplTGF5ZXJUcmVlKExheWVyVHJl
ZUZyZWV6ZVJlYXNvbiByZWFzb24pCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICIlcCAtIFdlYlBhZ2UgKFBhZ2VJRD0lbGx1KSAtIEFkZGluZyBhIHJlYXNvbiAlZCB0byBm
cmVlemUgbGF5ZXIgdHJlZTsgY3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMs
IG1fcGFnZUlELCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVl
emVSZWFzb25zLnRvUmF3KCkpOworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRv
UmF3KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy5hZGQocmVhc29uKTsKICAgICB1
cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBAIC0yNTEyLDcgKzI1
MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFz
b24gcmVhc29uKQogdm9pZCBXZWJQYWdlOjp1bmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVl
emVSZWFzb24gcmVhc29uKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAi
JXAgLSBXZWJQYWdlIChQYWdlSUQ9JWxsdSkgLSBSZW1vdmluZyBhIHJlYXNvbiAlZCB0byBmcmVl
emUgbGF5ZXIgdHJlZTsgY3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMsIG1f
cGFnZUlELCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVS
ZWFzb25zLnRvUmF3KCkpOworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3
KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy5yZW1vdmUocmVhc29uKTsKICAgICB1
cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBAIC0zMTY4LDcgKzMx
NjgsNyBAQCB2b2lkIFdlYlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogCiB2b2lkIFdlYlBh
Z2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2
aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNv
bnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpCiB7Ci0gICAgTE9HX1dJVEhfU1RS
RUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IHBhZ2VJRCgpIDw8ICIg
c2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOworICAgIExPR19XSVRIX1NU
UkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBwYWdlSUQoKS50b1VJ
bnQ2NCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOwogCiAg
ICAgYXV0byBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKICAgICBt
X2FjdGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRlOwpAQCAtMzE3Niw3ICszMTc2LDcgQEAgdm9p
ZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFn
PiBhY3Rpdml0eVN0YXRlLCBBY3QKICAgICBpZiAoY2hhbmdlZCkKICAgICAgICAgdXBkYXRlVGhy
b3R0bGVTdGF0ZSgpOwogCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BhZ2UsICJzZXRBY3Rp
dml0eVN0YXRlIGNhbGxlZCBvbiAlIiBQUkl1NjQgIiBidXQgV2ViQ29yZSBwYWdlIHdhcyBudWxs
IiwgcGFnZUlEKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wYWdlLCAic2V0QWN0aXZp
dHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJdTY0ICIgYnV0IFdlYkNvcmUgcGFnZSB3YXMgbnVsbCIs
IHBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIGlmIChtX3BhZ2UpIHsKICAgICAgICAgU2V0Rm9y
U2NvcGU8T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+PiBjdXJyZW50bHlDaGFuZ2luZ0Fj
dGl2aXR5U3RhdGUgeyBtX2xhc3RBY3Rpdml0eVN0YXRlQ2hhbmdlcywgY2hhbmdlZCB9OwogICAg
ICAgICBtX3BhZ2UtPnNldEFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZSk7CkBAIC00MzM5LDcg
KzQzMzksNyBAQCB2b2lkIFdlYlBhZ2U6Om1haW5GcmFtZURpZExheW91dCgpCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVW
aWV3KCkpIHsKICAgICAgICAgSW50U2l6ZSBuZXdDb250ZW50U2l6ZSA9IGZyYW1lVmlldy0+Y29u
dGVudHNTaXplKCk7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVh
bSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlEIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRp
bmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVudFNpemUpOworICAgICAgICBMT0dfV0lU
SF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50
b1VJbnQ2NCgpIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRv
ICIgPDwgbmV3Q29udGVudFNpemUpOwogICAgICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRp
b24uc2V0Q29udGVudHNTaXplKG5ld0NvbnRlbnRTaXplKSkKICAgICAgICAgICAgIHZpZXdwb3J0
Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKICAgICB9CkBAIC01NzQyLDcgKzU3NDIsNyBAQCB2b2lk
IFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgIAogICAgIGJvb2wg
dmlld3BvcnRDaGFuZ2VkID0gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJl
Y3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIGRpZENvbW1pdExvYWQg
c2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBjb3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNT
aXplKCkpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2Vi
UGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBkaWRDb21taXRMb2FkIHNldHRpbmcg
Y29udGVudCBzaXplIHRvICIgPDwgY29yZUZyYW1lLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsK
ICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNTaXplKGNvcmVGcmFt
ZS0+dmlldygpLT5jb250ZW50c1NpemUoKSkpCiAgICAgICAgIHZpZXdwb3J0Q2hhbmdlZCA9IHRy
dWU7CiAKQEAgLTYwNTYsNyArNjA1Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2VuZEVkaXRvclN0YXRl
VXBkYXRlKCkKICAgICAvLyBJZiB0aGF0IGlzIHRoZSBjYXNlLCBqdXN0IHNlbmQgd2hhdCB3ZSBo
YXZlIChpLmUuIGRvbid0IGluY2x1ZGUgcG9zdC1sYXlvdXQgZGF0YSkgYW5kIHdhaXQgdW50aWwg
dGhlCiAgICAgLy8gbmV4dCBsYXllciB0cmVlIGNvbW1pdCB0byBjb21wdXRlIGFuZCBzZW5kIHRo
ZSBjb21wbGV0ZSBFZGl0b3JTdGF0ZSBvdmVyLgogICAgIGF1dG8gc3RhdGUgPSBlZGl0b3JTdGF0
ZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2Vk
KHN0YXRlKSwgcGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRp
dG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSk7CiAKICAgICBpZiAoc3RhdGUuaXNNaXNzaW5nUG9zdExh
eW91dERhdGEpCiAgICAgICAgIHNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCk7CkBAIC02
MjM3LDcgKzYyMzcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIAogdm9pZCBXZWJQYWdlOjpw
b3N0TWVzc2FnZUlnbm9yaW5nRnVsbHlTeW5jaHJvbm91c01vZGUoY29uc3QgU3RyaW5nJiBtZXNz
YWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogewotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkp
KSwgcGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5jaHJvbm91c01vZGUp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdl
TmFtZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1Rv
SGFuZGxlcyhtZXNzYWdlQm9keSkpKSwgSVBDOjpTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNo
cm9ub3VzTW9kZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cG9zdFN5bmNocm9ub3VzTWVzc2FnZUZv
clRlc3RpbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VC
b2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDg2OGFlOTJmMmZiLi42MWU2NDkyOGY5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjQsNiAr
NjQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW50U2l6ZUhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3ZlcmxheS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUG9pbnRl
cklELmg+CkBAIC0yNzMsNyArMjc0LDkgQEAgdXNpbmcgV0tFdmVudE1vZGlmaWVycyA9IHVpbnQz
Ml90OwogCiBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHVibGlj
IElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2U+IHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlBhZ2U+IGNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgdXNpbmcgSWRlbnRpZmllciA9IFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyOworICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRlKElkZW50
aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisKICAgICB2aXJ0dWFsIH5XZWJQ
YWdlKCk7CiAKICAgICB2b2lkIHJlaW5pdGlhbGl6ZVdlYlBhZ2UoV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYmKTsKQEAgLTI4Myw3ICsyODYsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlBh
Z2UqIGZyb21Db3JlUGFnZShXZWJDb3JlOjpQYWdlKik7CiAKICAgICBXZWJDb3JlOjpQYWdlKiBj
b3JlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQotICAgIHVpbnQ2NF90IHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgSWRlbnRpZmllciBwYWdlSUQo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+c2Vzc2lvbklEKCk7IH0KICAgICBib29sIHVzZXNF
cGhlbWVyYWxTZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT51c2VzRXBoZW1lcmFsU2Vz
c2lvbigpOyB9CiAKQEAgLTExNjYsNyArMTE2OSw3IEBAIHB1YmxpYzoKICAgICBib29sIHNlbmRT
eW5jV2l0aERlbGF5ZWRSZXBseShUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBs
eSkKICAgICB7CiAgICAgICAgIGNhbmNlbEdlc3R1cmVzQmxvY2tlZE9uU3luY2hyb25vdXNSZXBs
aWVzKCk7Ci0gICAgICAgIHJldHVybiBzZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3Zl
KHJlcGx5KSwgbV9wYWdlSUQsIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRp
b246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKKyAgICAgICAgcmV0dXJuIHNl
bmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBTZWNvbmRzOjppbmZpbml0
eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVu
ZCk7CiAgICAgfQogCiAgICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0
RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKQEAgLTExOTks
NyArMTIwMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZXJJc0ludGVyYWN0aW5nKGJvb2wg
dXNlcklzSW50ZXJhY3RpbmcpIHsgbV91c2VySXNJbnRlcmFjdGluZyA9IHVzZXJJc0ludGVyYWN0
aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgV2ViUGFnZShJZGVudGlmaWVyLCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAK
QEAgLTE1ODUsNyArMTU4OCw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZU1vY2tBY2Nl
c3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKTsKIAotICAgIHVpbnQ2NF90IG1f
cGFnZUlEOworICAgIElkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwogICAgIFJlZlB0cjxXZWJGcmFtZT4gbV9tYWluRnJhbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VJbnNwZWN0b3JUYXJnZXQuY3BwCmluZGV4IGQ5NmE3ZDdkZGE5Li5iNzc5OWI0ZmJiOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3Rv
clRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZUluc3BlY3RvclRhcmdldC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV2ViUGFnZUluc3BlY3RvclRh
cmdldDo6V2ViUGFnZUluc3BlY3RvclRhcmdldChXZWJQYWdlJiBwYWdlKQogCiBTdHJpbmcgV2Vi
UGFnZUluc3BlY3RvclRhcmdldDo6aWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1h
a2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gbWFrZVN0cmlu
ZygicGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZUluc3BlY3RvclRhcmdldDo6Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCYgY2hh
bm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKaW5kZXgg
MzAxYjEzOWUxZDIuLjZiN2VjNWIxNmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2Vi
UGFnZU9iamVjdEJhc2UuaApAQCAtMjYsMTMgKzI2LDE1IEBACiAjaWZuZGVmIFdLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlX2gKICNkZWZpbmUgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2VfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiB9CiAKIEBpbnRlcmZhY2UgV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2UgOiBOU09iamVjdCB7CiAgICAgV2ViS2l0OjpXZWJQYWdl
KiBtX3BhZ2U7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9wYWdlSUQ7CiAgICAgaWQgbV9wYXJlbnQ7CiAgICAgYm9vbCBtX2hhc01haW5GcmFt
ZVBsdWdpbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5t
bQppbmRleCAzZDNmMzU1NTNlNi4uNjE2NWEwMWZlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFz
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTE0OCw3ICsxNDgsNyBAQCAtICh2b2lkKXNl
dFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSopcGFnZQogICAgICAgICBhdXRvKiBmcmFtZSA9IHBh
Z2UtPm1haW5GcmFtZSgpOwogICAgICAgICBtX2hhc01haW5GcmFtZVBsdWdpbiA9IGZyYW1lICYm
IGZyYW1lLT5kb2N1bWVudCgpID8gZnJhbWUtPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQo
KSA6IGZhbHNlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fcGFnZUlEID0gMDsKKyAgICAgICAg
bV9wYWdlSUQgPSB7IH07CiAgICAgICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gZmFsc2U7CiAg
ICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQppbmRleCBhMDdjYTQ1ZDMzNy4uYjZhZTg0MzI3YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBAIC0yNjYs
OCArMjY2LDggQEAgYm9vbCBXZWJQYWdlOjpleGVjdXRlS2V5cHJlc3NDb21tYW5kc0ludGVybmFs
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpLZXlwcmVzc0NvbW0KICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGJvb2wgY29tbWFuZFdhc0hhbmRs
ZWRCeVVJUHJvY2VzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbW1hbmRzW2ldLmNvbW1h
bmROYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhl
Y3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3I6OlJlcGx5KGNvbW1hbmRXYXNIYW5kbGVkQnlVSVBy
b2Nlc3MpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICAgICAgc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29tbWFuZHNbaV0uY29t
bWFuZE5hbWUpLAorICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
eGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcjo6UmVwbHkoY29tbWFuZFdhc0hhbmRsZWRCeVVJ
UHJvY2VzcykpOwogICAgICAgICAgICAgICAgIGV2ZW50V2FzSGFuZGxlZCB8PSBjb21tYW5kV2Fz
SGFuZGxlZEJ5VUlQcm9jZXNzOwogICAgICAgICAgICAgfQogICAgICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNWNlNjljY2Y4MzMuLjYxNzRiMGEzYmIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yMjEsNyArMjIx
LDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShz
dGF0aXN0aWNzKSksIDApOwogICAgIH0pOwogCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhbdGhpc10g
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKSB7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhbdGhp
c10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKSB7CiAgICAgICAgIGVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihzZXNzaW9uSUQsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBv
cGVuZXJEb21haW4pLCAwKTsKICAgICB9KTsKICNlbmRpZgpAQCAtNjY3LDE2ICs2NjcsMTYgQEAg
V2ViUGFnZSogV2ViUHJvY2Vzczo6Zm9jdXNlZFdlYlBhZ2UoKSBjb25zdAogICAgIHJldHVybiAw
OwogfQogICAgIAotV2ViUGFnZSogV2ViUHJvY2Vzczo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQp
IGNvbnN0CitXZWJQYWdlKiBXZWJQcm9jZXNzOjp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlTWFwLmdldChwYWdlSUQpOwogfQogCi12b2lk
IFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFn
ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzKQogewogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBmb3IgcGFnZSBleGlz
dGVuY2UgaGVyZSBzaW5jZSBkdXJpbmcgYSB3aW5kb3cub3BlbigpIChvciB0YXJnZXRlZAogICAg
IC8vIGxpbmspIHRoZSBXZWJQYWdlIGdldHMgY3JlYXRlZCBib3RoIGluIHRoZSBzeW5jaHJvbm91
cyBoYW5kbGVyIGFuZCB0aHJvdWdoIHRoZSBub3JtYWwgd2F5LiAKLSAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8V2ViUGFnZT4+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChw
YWdlSUQsIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQs
IG51bGxwdHIpOwogICAgIGF1dG8gb2xkUGFnZUlEID0gcGFyYW1ldGVycy5vbGRQYWdlSUQgPyBw
YXJhbWV0ZXJzLm9sZFBhZ2VJRC52YWx1ZSgpIDogcGFnZUlEOwogICAgIGlmIChyZXN1bHQuaXNO
ZXdFbnRyeSkgewogICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwpAQCAt
NjkzLDcgKzY5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhCiAgICAgQVNTRVJUKHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nl
c3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5jb250YWlucyhwYWdlSUQpKTsKIApA
QCAtMTQ1MCw3ICsxNDUwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3Rh
dGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbikKIAogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6
cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0X3QsIE9wdGlvblNldDxXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZp
dHlTdGF0ZURpZENoYW5nZShQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpCiB7CiAgICAgaWYgKGNoYW5nZWQgJiBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAgIHVwZGF0ZUNQVU1vbml0b3JTdGF0ZShD
UFVNb25pdG9yVXBkYXRlUmVhc29uOjpWaXNpYmlsaXR5SGFzQ2hhbmdlZCk7CkBAIC0xNjI0LDEz
ICsxNjI0LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2VuZFByZXdhcm1JbmZvcm1hdGlvbihjb25z
dCBVUkwmIHVybCkKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24ocmVnaXN0cmFi
bGVEb21haW4sIFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5nOjpjb2xsZWN0UHJld2FybUluZm9ybWF0
aW9uKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwYWdlRGlkRW50ZXJXaW5kb3codWlu
dDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlRGlkRW50ZXJXaW5kb3coUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fcGFnZXNJbldpbmRvd3MuYWRkKHBhZ2VJRCk7CiAg
ICAgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lci5zdG9wKCk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzczo6cGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlBy
b2Nlc3M6OnBhZ2VXaWxsTGVhdmVXaW5kb3coUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAg
IG1fcGFnZXNJbldpbmRvd3MucmVtb3ZlKHBhZ2VJRCk7CiAKQEAgLTE2NzMsNyArMTY3Myw3IEBA
IHZvaWQgV2ViUHJvY2Vzczo6ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVu
YWJsZSkKICAgICBpZiAoZW5hYmxlKQogICAgICAgICBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwogCi0gICAgVmVjdG9yPHVpbnQ2NF90PiBwYWdl
SURzOworICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4gcGFnZUlEczsKICAgICBmb3IgKGF1dG8m
IHBhZ2UgOiBtX3BhZ2VNYXApIHsKICAgICAgICAgaWYgKHBhZ2UudmFsdWUpCiAgICAgICAgICAg
ICBwYWdlSURzLmFwcGVuZChwYWdlLmtleSk7CkBAIC0xODUzLDcgKzE4NTMsNyBAQCBMaWJXZWJS
VENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25J
RCBpbml0aWFsU2Vzc2lvbklEKQordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6
U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7CiAgICAgLy8gV2UgYXJlIGluIHRoZSBTZXJ2
aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVz
IG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MKICAgICAvLyBieSBjYWxsaW5n
IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0
byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA1MjVkZjE4M2YyMi4uMTg1N2NlYTBlZDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApAQCAtMzksNiArMzksNyBAQAog
I2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJXZWJT
UUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlIDxXZWJD
b3JlL1NjcmVlblByb3BlcnRpZXMuaD4KQEAgLTE0NSw5ICsxNDYsOSBAQCBwdWJsaWM6CiAKICAg
ICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNvbm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNv
bnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQoKTsgfQogCi0gICAgV2ViUGFnZSogd2Vi
UGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OwotICAgIHZvaWQgY3JlYXRlV2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7Ci0gICAgdm9pZCByZW1v
dmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYlBhZ2Uq
IHdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQgY3JlYXRl
V2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmKTsKKyAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKICAgICBXZWJQYWdlKiBmb2N1c2VkV2ViUGFnZSgpIGNvbnN0OwogCiAg
ICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9pbmpl
Y3RlZEJ1bmRsZS5nZXQoKTsgfQpAQCAtMTk5LDggKzIwMCw4IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsK
IAotICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgdm9p
ZCBwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBwYWdlRGlk
RW50ZXJXaW5kb3coV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcGFnZVdpbGxM
ZWF2ZVdpbmRvdyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIG5vblZpc2li
bGVQcm9jZXNzQ2xlYW51cFRpbWVyRmlyZWQoKTsKIApAQCAtMjE5LDcgKzIyMCw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlUGFnZXMoKTsKICAgICB2b2lkIGdldEFjdGl2ZVBh
Z2VzT3JpZ2luc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmKT4mJik7Ci0gICAgdm9pZCBwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZSh1aW50NjRfdCBw
YWdlSUQsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsK
KyAgICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCk7CiAK
ICAgICB2b2lkIHNldEhpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdJbmNyZWFzZUxpbWl0KGlu
dCBtaWxsaXNlY29uZHMpOwogCkBAIC0zNTksNyArMzYwLDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29u
dGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7
CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJT
ZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogI2VuZGlmCiAKQEAgLTQ2MCw3ICs0NjEsNyBAQCBwcml2
YXRlOgogCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0
aW9uOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBt
X3BhZ2VNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5
Pj4gbV9wYWdlR3JvdXBNYXA7CiAgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlPiBtX2luamVjdGVk
QnVuZGxlOwogCkBAIC01MTQsNyArNTE1LDcgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9wcm9j
ZXNzSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCi0gICAgSGFzaFNldDx1aW50NjRfdD4gbV9wYWdl
c0luV2luZG93czsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX3BhZ2Vz
SW5XaW5kb3dzOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVw
VGltZXI7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U+IG1f
YXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGIzOWIzOGMxODNjLi41N2EyNjU2MzQ1ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAg
LTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgU2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoc3RydWN0IFdlYktpdDo6V2ViUHJvY2Vz
c0RhdGFTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlIGEgbmV3IHBh
Z2UuCi0gICAgQ3JlYXRlV2ViUGFnZSh1aW50NjRfdCBuZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6
OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykKKyAgICBD
cmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG5ld1BhZ2VJRCwgc3RydWN0IFdl
YktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYWdlQ3JlYXRpb25QYXJhbWV0ZXJzKQog
CiAgICAgUHJld2FybUdsb2JhbGx5KCk7CiAgICAgUHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlv
bihzdHJ1Y3QgV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uIHByZXdhcm1JbmZvcm1hdGlvbikK
QEAgLTExMSw3ICsxMTEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJ
RCwgdWludDY0X3QgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0
b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQorICAgIEVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJl
bmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQogICAgIFJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAw
YmQ5MGFmOTE4Ny4uMGU5NDI5NjA0OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTMxMSw3ICszMTEsNyBA
QCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0
X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgYwogCiAgICAgLy8gTmFtZXNwYWNlIElEcyBmb3Igc2Vz
c2lvbiBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2UgSURzCiAg
ICAgLy8gc28gd2UgY2FuIGdldCB0aGUgcmlnaHQgcGFnZSBoZXJlLgotICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fc3RvcmFnZU5hbWVzcGFj
ZUlEKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
UGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KG1fc3RvcmFnZU5h
bWVzcGFjZUlEKSk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFw
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5o
CmluZGV4IDI5YmE3ZDhhOGEzLi5lY2FmNjY1MTlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggYjM5MDgxZTZlM2MuLjgw
OTYyMzQyNDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC00MCwxMiArNDAsMTIgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxTdG9y
YWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykK
K1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVk
IHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNw
YWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllciwgbnVsbHB0ciwgcXVvdGFJ
bkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwo
U3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIudG9VSW50NjQoKSwgbnVsbHB0ciwgcXVv
dGFJbkJ5dGVzKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBp
ZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUlt
cGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UoUGFnZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQog
ewogICAgIHJldHVybiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShpZGVudGlmaWVyLCBx
dW90YUluQnl0ZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKaW5kZXggNjc1N2UzYjgxODguLjFi
ZmVjNDhiODlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKQEAgLTM5LDggKzM5LDggQEAgY2xhc3Mg
V2ViUGFnZTsKIAogY2xhc3MgU3RvcmFnZU5hbWVzcGFjZUltcGwgOiBwdWJsaWMgV2ViQ29yZTo6
U3RvcmFnZU5hbWVzcGFjZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNw
YWNlSW1wbD4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmll
ciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRl
bnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3JhZ2VO
YW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICBzdGF0aWMgUmVmPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAgICAgc3RhdGlj
IFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVp
bnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcyk7CiAgICAgc3RhdGljIFJl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTmFtZXNw
YWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiB0b3BMZXZl
bE9yaWdpbiwgdWludDY0X3QgcXVvdGFJbkJ5dGVzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCBm
YzY1OTg2MzI1Mi4uNzY1ZWZmNDA0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC0yNzksNyArMjc5
LDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW0KICAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1f
Y29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKIAogICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01h
bmFnZXJEaWRDaGFuZ2UoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6U2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRChtX2Nv
bnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyV2l0aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
cigpCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVh
clBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJ
ZCA9IDA7CiAKICAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNs
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxh
eWJhY2tDb250cm9sc01hbmFnZXIoKSk7CiB9CiAKIHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OmNvbnRleHRJZEZvck1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
JiBtZWRpYUVsZW1lbnQpCkBAIC0zMTgsMjcgKzMxOCwyNyBAQCBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50UGxheWJhY2tDb250cm9sc0Vs
ZW1lbgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRl
eHRJZCwgZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRl
eHRJZCwgZHVyYXRpb24pKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJy
ZW50VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRv
dWJsZSBhbmNob3JUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50
VGltZSwgYW5jaG9yVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQo
Y29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmJ1ZmZlcmVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBk
b3VibGUgYnVmZmVyZWRUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpCdWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVm
ZmVyZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkJ1ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4
dElkLCBidWZmZXJlZFRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpw
bGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBwbGF5
YmFja1N0YXJ0ZWRUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQs
IHBsYXliYWNrU3RhcnRlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTdGFydGVk
VGltZUNoYW5nZWQoY29udGV4dElkLCBwbGF5YmFja1N0YXJ0ZWRUaW1lKSk7CiB9CiAKIHZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBi
b29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0
SWQsIGlzUGxheWluZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJhdGVDaGFu
Z2VkKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpKTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1v
ZGlmaWVkVGltZSwgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCkKQEAgLTM0OSwzNyArMzQ5LDM3
IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVp
bnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViCiAgICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFu
Z2VzLnJhbmdlcygpLmVuZChpKS50b0RvdWJsZSgpOwogICAgICAgICByYW5nZXNWZWN0b3IuYXBw
ZW5kKHsgc3RhcnQsIGVuZCB9KTsKICAgICB9Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChj
b250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVw
ZGF0ZUludGVydmFsKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hh
bmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwg
bGl2ZVVwZGF0ZUludGVydmFsKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUp
CiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpDYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpKTsK
IH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rp
b25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChj
b250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRf
dCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMs
IHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnND
aGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlv
bnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpl
eHRlcm5hbFBsYXliYWNrQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwg
UGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5
cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVy
dGllc0NoYW5nZWQoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFy
Z2V0VHlwZSksIGxvY2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJu
YWxQbGF5YmFja1Byb3BlcnRpZXNDaGFuZ2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSk7CiB9CiAKIHZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVk
aWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBz
ZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJs
ZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qg
c2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRl
eHRJZCwgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxl
Y3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5k
ZXggNWQ2MTEwYjc5MDkuLjcwNjYzOTc3Mzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjkwLDcg
KzI5MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3Jl
ZW5Gb3JWaWRlb0VsZW1lbnQoSFRNTFZpZGVvRWxlbWVuCiAgICAgICAgIGludGVyZmFjZS0+bGF5
ZXJIb3N0aW5nQ29udGV4dCgpLT5zZXRSb290TGF5ZXIodmlkZW9MYXllcik7CiAgICAgfQogCi0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNl
dHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29u
dGV4dCgpLT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSwg
c3RhbmRieSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4
dElkLCBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZpZGVv
UmVjdCwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5N
b2RlKCksIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpKTsKIH0KIAogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdl
YkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCkKQEAgLTMwOCw3ICszMDgsNyBA
QCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRl
b0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZAogICAgICAgICByZXR1cm47CiAKICAgICBpbnRlcmZh
Y2Uuc2V0SXNBbmltYXRpbmcodHJ1ZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCwgaW5saW5l
VmlkZW9GcmFtZSh2aWRlb0VsZW1lbnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2Ny
ZWVuKGNvbnRleHRJZCwgaW5saW5lVmlkZW9GcmFtZSh2aWRlb0VsZW1lbnQpKSk7CiB9CiAKIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhv
dXRBbmltYXRpb24oV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFyZ2V0TW9k
ZSkKQEAgLTMyNCw3ICszMjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRW
aWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OgogCiAgICAgaW50
ZXJmYWNlLnNldFRhcmdldElzRnVsbHNjcmVlbihmYWxzZSk7CiAKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW5XaXRo
b3V0QW5pbWF0aW9uVG9Nb2RlKGNvbnRleHRJZCwgdGFyZ2V0TW9kZSksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4dElkLCB0YXJn
ZXRNb2RlKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2aWRlb0VsZW1lbnQpOwogICAgIFVO
VVNFRF9QQVJBTSh0YXJnZXRNb2RlKTsKQEAgLTMzNiwxMyArMzM2LDEzIEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRp
b24oV2ViQ29yZTo6CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Omhhc1ZpZGVvQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pCiB7CiAgICAgaWYgKG1fcGFnZSkK
LSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldEhhc1ZpZGVvKGNvbnRleHRJZCwgaGFzVmlkZW8pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldEhhc1ZpZGVvKGNvbnRleHRJZCwgaGFzVmlkZW8pKTsKIH0KIAogdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7CiAgICAgaWYgKG1fcGFnZSkK
LSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldFZpZGVvRGltZW5zaW9ucyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucyksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGNvbnRleHRJZCwgdmlkZW9EaW1l
bnNpb25zKSk7CiB9CiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eToKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OnJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCkKIAogICAg
IGF1dG8mIG1vZGVsID0gZW5zdXJlTW9kZWwoY29udGV4dElkKTsKICAgICBJbnRSZWN0IGlubGlu
ZVJlY3QgPSBpbmxpbmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSk7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldElubGlu
ZVJlY3QoY29udGV4dElkLCBpbmxpbmVSZWN0LCBpbmxpbmVSZWN0ICE9IEludFJlY3QoMCwgMCwg
MCwgMCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SW5saW5lUmVjdChjb250ZXh0SWQsIGlubGlu
ZVJlY3QsIGlubGluZVJlY3QgIT0gSW50UmVjdCgwLCAwLCAwLCAwKSkpOwogfQogCiB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBj
b250ZXh0SWQpCkBAIC0zNzgsNyArMzc4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogICAgIG1vZGVs
LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRM
YXllcihjb250ZXh0SWQsIHRydWUpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCB0cnVlKSk7CiAg
ICAgICAgIH0pOwogICAgIH0pOwogfQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElk
KQogICAgICAgICAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywg
Y29udGV4dElkXSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3Bh
Z2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElk
LCBmYWxzZSksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgZmFsc2UpKTsKICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTQxMyw3ICs0
MTMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhp
cy0+bV9wYWdlKQotICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElk
KSk7CiAgICAgfSk7CiAjZWxzZQogICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2Ut
PmxheWVySG9zdGluZ0NvbnRleHQoKS0+cm9vdExheWVyKCk7CkBAIC00MjEsNyArNDIxLDcgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3Qg
Y29udGV4dElkKQogICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVy
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkg
bXV0YWJsZSB7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4
dElkXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAg
ICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICAgICAg
fSk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OndpbGxFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCB2aWRlb0VsZW1lbnQgPSBXVEZNb3ZlKHZpZGVvRWxlbWVudCks
IGNvbnRleHRJZF0gewogICAgICAgICB2aWRlb0VsZW1lbnQtPndpbGxFeGl0RnVsbHNjcmVlbigp
OwogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5t
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1
bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlz
KSwgY29udGV4dElkLCBpbnRlcmZhY2VdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1f
cGFnZSkKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQp
LCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKICNlbHNlCiAgICAgbW9k
ZWwtPndhaXRGb3JQcmVwYXJlZEZvcklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
UHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdICgpIG11dGFibGUgewpAQCAt
NDk4LDcgKzQ5OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxz
Y3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJm
YWNlLT5zZXRMYXllckhvc3RpbmdDb250ZXh0KG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElk
KSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC01NTUsNyArNTU1LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9Jbmxp
bmUodWludDY0X3QgY29udGV4dElkLCBib28KIAogICAgIGlmICghaXNQYWdlVmlzaWJsZSkKICAg
ICAgICAgbW9kZWwudmlkZW9FbGVtZW50KCktPnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGZh
bHNlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6UHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5saW5lVmlk
ZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50KCkpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBh
cmVkVG9SZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1v
ZGVsLnZpZGVvRWxlbWVudCgpKSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OnJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RSb3V0ZVNoYXJpbmdQ
b2xpY3lBbmRDb250ZXh0VUlEOjpBc3luY1JlcGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCAyZTE5MGIwMzVm
Ny4uYjljZTc5ZDI3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1dlYlByb2Nlc3NDb2NvYS5tbQpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBOU1VSTCAqb3Jp
Z2luKFdlYlBhZ2UmIHBhZ2UpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBS
ZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPj4mIHBhZ2VNYXApCitzdGF0aWMgUmV0YWlu
UHRyPE5TQXJyYXk8TlNTdHJpbmcgKj4+IGFjdGl2ZVBhZ2VzT3JpZ2lucyhjb25zdCBIYXNoTWFw
PFBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+JiBwYWdlTWFwKQogewogICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlT3JpZ2lucyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5jcHAKaW5kZXggOTg3MmMzMWJhNTguLjc5NjAyNGM4Y2U0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRT
Y2hlZHVsZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGUK
ICAgICBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShmcmFtZUxvYWRl
ci5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRpYWxzID09IEZl
dGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
RG9Ob3RVc2UgOiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBlcnJvciwgcmVzcG9uc2Us
IGRhdGEpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21w
bGV0ZWQodWludDY0X3QgLyp3ZWJQYWdlSUQqLykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgKaW5kZXggNTViMzY5NzUzMDYuLjVmNjJmNzc3YWE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVk
dWxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBs
b2FkUmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9w
dGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJj
ZUxvYWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShXZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdl
YkNvcmU6OkZldGNoT3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3Rvcjxj
aGFyPiYpIGZpbmFsOwotICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFn
ZUlEKSBmaW5hbDsKKyAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
KikgZmluYWw7CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlTG9h
ZGVyJiwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxMzg1NTgz
YWYyOS4uYjE0MDNkMDU2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNjMsNyAr
NjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBmaW5hbDsK
ICAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBmaW5hbDsgLy8gbWFpbmx5IGZvciBhc3NlcnRp
b25zCiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwog
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAgICAgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0KaW5kZXggN2Y4NjlmMWRkY2IuLjdlYmEzYTk4YWEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQpAQCAtMjA5LDcgKzIwOSw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJG
cmFtZUxvYWRlckNsaWVudChXZWJGcmFtZSAqd2ViRnJhbWUpCiB7CiB9CiAKLU9wdGlvbmFsPHVp
bnQ2NF90PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370600</attachid>
            <date>2019-05-24 16:06:20 -0700</date>
            <delta_ts>2019-05-24 16:28:27 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>198206_PageIdentifier_wip.patch</filename>
            <type>text/plain</type>
            <size>642106</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwNy4uYjNiY2FkZDlkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjIsNiArMTIz
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVu
dGlmaWVyPFQ+PiB7CiAgICAgdHlwZWRlZiBPYmplY3RJZGVudGlmaWVySGFzaDxUPiBIYXNoOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VD4mIGlkZW50aWZpZXIpCit7CisgICAg
dHMgPDwgaWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IGMyYzdjMjI0OWUzLi40NDgyZDVkNDc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC03NzksNiArNzc5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAogICAgIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
aAogICAgIHBhZ2UvUGFnZUdyb3VwLmgKKyAgICBwYWdlL1BhZ2VJZGVudGlmaWVyLmgKICAgICBw
YWdlL1BhZ2VPdmVybGF5LmgKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCiAgICAg
cGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU2YTFmNWYxZDcxLi5iNmE4Zjg5YWI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTIxNyw2ICsxMjE3LDcgQEAKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3
Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0
Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2QjY1MEREMjI5NjI2
MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4QTIwN0Q2MzI4
MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBBN0QyREQgLyogQWJz
dHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NzIwN0Q2MzQw
MDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAwQTdEMkREIC8qIEds
b2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzU5OSw2ICs3NjAwLDcgQEAKIAkJNDY4MzQ0REQxRURERkE1RjAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUxRURERkE1RjAwQjc3
OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCNjUwREIy
Mjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3Rl
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4RDIwN0Q2MzJBMDBB
N0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDE5Nyw2ICsyMDE5OSw3IEBACiAJCQkJOTMwMkIwQkUwRDc5RjgyQzAwQzdFRTgzIC8q
IFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuY3BwICovLAogCQkJCTdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLywKKwkJCQk0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRDVDOUNGQjE5QzdCNTJFMDBCM0M1QzEgLyog
UGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdl
T3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3Zlcmxh
eUNvbnRyb2xsZXIuY3BwICovLApAQCAtMjk4NzEsNiArMjk4NzQsNyBAQAogCQkJCUJDMzA1QzdB
MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTg1QjFFQjBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MT0xpc3RFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFN0U5QjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MT3B0R3Jv
dXBFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3RTk5MEExQTgzRTMw
MDdGQjhDNSAvKiBKU0hUTUxPcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhB
MjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA3NjkxMmNh
ZWI4YS4uMGU3ZDU0MjA1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQodWludDY0X3Qg
cGFnZUlELCBBWE9iamVjdENhY2hlJiBjYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29s
YXRlZFRyZWU6OmluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
QVhPYmplY3RDYWNoZSYgY2FjaGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGF1dG8gdHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0
eVRyZWUoKTsKQEAgLTg3LDcgKzg3LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6dHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogICAgIHJldHVybiB0
cmVlSURDYWNoZSgpLmdldCh0cmVlSUQpOwogfQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNv
bGF0ZWRUcmVlOjpjcmVhdGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIApA
QCAtOTcsNyArOTcsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gbmV3VHJlZTsKIH0K
IAotUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCh1
aW50NjRfdCBwYWdlSUQpCitSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0
cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihzX2NhY2hlTG9jayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGMwNzVkNWIwMTY3
Li42ZWVjMjY0NTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYSXNv
bGF0ZWRUcmVlTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00Myw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BWElzb2xhdGVk
VHJlZSgpOwogCi0gICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBh
Z2VJRCh1aW50NjRfdCBwYWdlSUQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QVhJ
c29sYXRlZFRyZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhP
YmplY3RDYWNoZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRl
ZFRyZWU+IHRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPEFY
SXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRy
ZWVGb3JJRChQYWdlSWRlbnRpZmllciwgQVhPYmplY3RDYWNoZSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IHRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+
IHRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBWElzb2xhdGVkVHJlZU5vZGU+IHJvb3ROb2RlKCk7CkBAIC03MCw3ICs3MSw3IEBAIHByaXZh
dGU6CiAgICAgQVhJc29sYXRlZFRyZWUoKTsKIAogICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0
ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlSURDYWNoZSgpOwotICAgIHN0YXRp
YyBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgp
OworICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+
PiYgdHJlZVBhZ2VDYWNoZSgpOwogCiAgICAgLy8gT25seSBhY2Nlc3Mgb24gQVggdGhyZWFkIHJl
cXVlc3RpbmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+
PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlNzBh
OWY3ZmU1NS4uZDM1NDE2NzNlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzc2Niw3
ICs3NzY2LDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2VyKCkKICAgICByZXR1cm4gKm1fbG9n
Z2VyOwogfQogICAgIAotT3B0aW9uYWw8dWludDY0X3Q+IERvY3VtZW50OjpwYWdlSUQoKSBjb25z
dAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggYzA3NjU1NjUwNmEuLmEyNDgxZGY4YTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNp
bmNsdWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmll
ci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVu
dC5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBA
IC02MzUsNyArNjM2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2Fj
aGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQVhPYmplY3RDYWNoZSgp
OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0OworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdDsKICAgICAvLyB0byBnZXQgdmlzdWFsbHkg
b3JkZXJlZCBoZWJyZXcgYW5kIGFyYWJpYyBwYWdlcyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFs
bHlPcmRlcmVkKCk7CiAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbGx5T3JkZXJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBi
MWJlZDhmMDMyZi4uMzNlMjc4NjM4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29r
aWVzID0gc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CiAKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtMTEwLDcgKzExMCw3IEBAIENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoY29u
c3QgRG9jCiB2b2lkIENvb2tpZUphcjo6c2V0Q29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29raWVz
RW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3Rk
OjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
IHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3Rv
cmFnZVNlc3Npb24oKSkgewogICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQg
PSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHUKIFN0cmluZyBDb29raWVK
YXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAg
ICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAg
ICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdQogYm9vbCBDb29raWVKYXI6OmdldFJh
d0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIGNvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkp
IHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7
CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCAwZGIwN2M2ZDEyZS4uMjgxZjg0YzQ5MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzKERvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogCiAgICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8
U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OworICAg
IHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggNGYwYmI4NmRkZDUuLjFmN2EyOWM0YjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBG
cmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJy
aWRlIHsgfQogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBt
YWlubHkgZm9yIGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZWMzOTEyN2ExYWQuLjA3NDg3NjExOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmUuaCIKICNpbmNsdWRl
ICJMaW5rSWNvbi5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgpAQCAtMTI2LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBtYWtl
UmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0
ZWd5LmgKaW5kZXggOGE4MjM4MWYwMTguLjQ1ZmViNjM1ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCIKQEAgLTU3LDcg
KzU4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UoRnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJl
c291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRlciYsIGJvb2wpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA3NzQ1
MDAxZTc4YS4uZjI2YTlhYWYyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmF2aWdh
dGlvbkFjdGlvbjo6UmVxdWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogbV91cmwgeyBVUkwgeyBkb2N1bWVudC51cmwoKSB9IH0KICAgICAsIG1fb3JpZ2lu
IHsgbWFrZVJlZlB0cihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX3BhZ2VJ
REFuZEZyYW1lSURQYWlyIHsgZG9jdW1lbnQuZnJhbWUoKSA/IHN0ZDo6bWFrZV9wYWlyKGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpLnZhbHVlT3IoMCksIGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKDApKSA6IHN0
ZDo6bWFrZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9wYWdlSURB
bmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVu
dC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlm
aWVyIHsgfSksIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52
YWx1ZU9yKDApKSA6IHN0ZDo6bWFrZV9wYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4oeyB9
LCAwKSB9CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmlu
ZGV4IDFhNDRmOTFkMzY4Li5lZDdkMDljZjI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRl
ICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtNjMsMTQgKzY0LDE0IEBAIHB1YmxpYzoKICAg
ICBOYXZpZ2F0aW9uQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24mJik7CiAgICAgTmF2aWdhdGlvbkFj
dGlvbiYgb3BlcmF0b3I9KE5hdmlnYXRpb25BY3Rpb24mJik7CiAKLSAgICB1c2luZyBQYWdlSURB
bmRGcmFtZUlEUGFpciA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKiBwYWdlSUQgKi8sIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+OworICAgIHVzaW5nIFBhZ2VJREFuZEZyYW1lSURQYWlyID0gc3RkOjpw
YWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBmcmFtZUlEICovPjsKICAgICBjbGFzcyBS
ZXF1ZXN0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVxdWVzdGVyKGNvbnN0IERvY3VtZW50
Jik7CiAKICAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiAqbV9vcmlnaW47IH0KLSAgICAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5maXJzdDsgfQorICAgICAgICBQYWdlSWRlbnRpZmll
ciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZyYW1lSURQYWlyLmZpcnN0OyB9
CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZy
YW1lSURQYWlyLnNlY29uZDsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFVSTCBtX3VybDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDE0
YmMyZjNiZWVmLi5mZmFkYTFjNDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lk
KFZlY3RvCiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9u
Q2FsbGJhY2spOwogfQogCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVCghbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2sp
OwogICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MK
IH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1l
bnQpCit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlE
LCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVu
ZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBv
cGVuZXJVcmwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKaW5kZXggYzQ2NjFiMDQ3NjAuLmRlMWM5NGE3MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgorI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTczLDcgKzc0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0
IFVSTCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBkYXRlZENh
bGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
Jik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0
aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJTb2NrZXRM
b2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxU
aW1lKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dTdWJyZXNvdXJjZUxvYWRp
bmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiYmKTsKQEAgLTk0LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3Vt
ZW50KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKICNlbmRpZgogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25N
YXA7CiAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
IG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1aW50NjRfdCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CisgICAg
RnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQ
YWdlSWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3Rp
ZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlm
aWNhdGlvbkNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjM1Mzkw
YzhjM2EuLjUyYjJlOTRiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQ4
Niw4ICs0ODYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMgKi8pID0gMDsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQq
LywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8q
c3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8s
IHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5v
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21h
aW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYm
IC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVy
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd246Ok5vKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKaW5kZXgg
MTU2YzljZDIwNWQuLjBkN2IzZGJmNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFs
RnJhbWVJZGVudGlmaWVyLmgKQEAgLTI1LDEzICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRnJhbWUgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1
ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgogc3RydWN0IEdsb2JhbEZyYW1lSWRl
bnRpZmllciB7Ci0gICAgdWludDY0X3QgcGFnZUlEOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RDsKICAgICB1aW50NjRfdCBmcmFtZUlEOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIEdsb2Jh
bEZyYW1lSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxG
cmFtZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50aWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDRkNWY4ZDI5NzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBhZ2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBQYWdlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDExNTkw
NTBjZDMyLi40ZTZiNmFjZTMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb29raWVKYXIuaCIKKyNp
bmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zOCw3ICsz
OSw3IEBAIHN0cnVjdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSB7CiAgICAgU2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbzsKICAgICBVUkwgdXJsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcyB7IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObyB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNzEsOCAr
NzIsMTEgQEAgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5OjpkZWNvZGUoRGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mcmFtZUlEKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdl
SUQpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gcGFnZUlEOworICAg
IGRlY29kZXIgPj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJlc3VsdC5wYWdlSUQgPSBXVEZNb3ZlKCpwYWdlSUQpOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluY2x1ZGVTZWN1cmVDb29raWVzKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CmluZGV4IDNiMThlNjJmZTM5Li42M2RmMDU4OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAt
NjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0K
ICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29v
a2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlEKSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3Jh
bnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7
CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7
CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAg
ICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChw
YWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vz
cy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAg
IGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1lSUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdl
U3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwog
ICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21h
aW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhm
cm9tRG9tYWluKSkKICAgICAgICAgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJl
dmFsZW50UmVzb3VyY2UuYWRkKHBhZ2VJRCwgdG9Eb21haW4pOwpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZygpCiAgICAgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9u
VGVzdE1vZGUgPSB0cnVlOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHksIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0CitPcHRpb25hbDxTZWNvbmRz
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdl
SUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2Uu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDAzMDIwMGRmOWM0Li4zZjM5YzhhY2Q4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRp
YWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdp
c3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNp
ZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9t
YWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4g
bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1aW50
NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFzaDx1
aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0
X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVsdEhh
c2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmlnYXRl
ZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dp
dGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRp
b25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5kZXggNjdkZjc2NGQyYzQuLjMzMGFhNjA4
NjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtMTg5LDcg
KzE4OSw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZEaWN0aW9uYXJ5UmVm
IGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQogICAgIHJldHVybiBwYXJzZWRDb29raWVzOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMjI1LDcg
KzIyNSw3IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zU2VjdXJlQ29va2llcyhDRkFycmF5UmVmIGNv
b2tpZXMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJh
bWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yNDAsNyArMjQwLDcgQEAgc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBjb29raWVTdHJpbmcsIGRpZEFjY2Vz
c1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNF
bmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VB
Y2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQ
Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0K
IAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDYzNzQwMzUyYzRhLi41NTdlOTc3
YjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0yOTQsNyAr
Mjk0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkg
KnVuZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1cm4gZmlsdGVyZWRDb29r
aWVzOwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkKK3N0YXRpYyBOU0FycmF5ICpjb29r
aWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
aWYgKHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwg
cGFnZUlEKSkKQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVS
TChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZgogfQog
CiBlbnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1
ZGVIVFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JT
ZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHks
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQogewogICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpKTsKIApAQCAtMzYzLDEyICszNjMsMTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENv
b2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENv
b2tpZVN0b3JhZ2VEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
c0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhp
cywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJ
bmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJl
dHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2ll
cyk7CiB9CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KICAgICBy
ZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0
eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBo
ZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRl
SFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi12
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYg
Y29va2llU3RyKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIApAQCAtNDQzLDcgKzQ0Myw3IEBA
IGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9v
bCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNs
ZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4
IDJjMTE1NjhmY2U1Li5kNjBkNzBhODM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtNTksNyArNTksNyBA
QCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3RyaW5nKCk7
CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3Zv
aWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAg
ICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC03
NCw3ICs3NCw3IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9u
c2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzCiAgICAgY29va2llSmFyREIuc2V0
Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdv
cmspOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJ
RCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBj
b25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZy
YW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMTEzLDcgKzExMyw3IEBAIGJv
b2wgQ29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCku
aXNFbmFibGVkKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KSBjb25zdAorYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5NGM4NmFmZThm
Li42ODcyYjBhYzliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAt
ODAsNyArODAsNyBAQCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVE
YXRhYmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29va2llRGF0YWJhc2U7CiB9CiAKLXZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdAogewogICAgIGNvb2tpZVN0b3JhZ2UoKS5zZXRDb29raWVzRnJvbURPTSgqdGhpcywgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgdmFsdWUpOwogfQpA
QCAtOTAsNyArOTAsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0VuYWJs
ZWQoKSBjb25zdAogICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2llc0VuYWJsZWQoKnRo
aXMpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29r
aWVTdG9yYWdlKCkuY29va2llc0ZvckRPTSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpAQCAtMTU0
LDcgKzE1NCw3IEBAIFZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29v
a2llcyhjb25zdCBVUkwmKQogICAgIHJldHVybiB7IH07CiB9CiAKLWJvb2wgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAog
ewogICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuZ2V0UmF3Q29va2llcygqdGhpcywgZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmF3Q29va2llcyk7CiB9
CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29v
a2llU3RvcmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0byB1c2UuCiB9
CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykg
Y29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAKaW5kZXggMWY3NTg3N2E4MmIuLmY2NjQxZWZlYjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdv
cmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKGNvbnN0IEdTTGlzdCogY29va2llcywgY29uc3Qg
Z2NoYXIqIG5hbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC00NDQsNyArNDQ0LDcgQEAgVmVjdG9yPENvb2tpZT4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsKQogICAgIHJl
dHVybiBjb29raWVzOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZUlEKTsKQEAgLTUxNCw3ICs1MTQsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZQogICAgIHJldHVybiB7IFN0cmluZzo6ZnJvbVVURjgoY29va2llSGVhZGVyLmdldCgpKSwgZGlk
QWNjZXNzU2VjdXJlQ29va2llcyB9OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQ
YXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTIyLDcgKzUyMiw3IEBAIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRP
TShjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlz
LCB1cmwsIGZhbHNlLCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAor
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDg3OWMwYjE5ZTk2Li5iNjg5YzNlMjVh
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpCiAgICAgbV9kYXRhYmFzZS5y
dW5WYWN1dW1Db21tYW5kKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZy
YW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxG
cmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKQEAgLTc0Myw3ICs3NDMsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWlu
JgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBU
b3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIFBhZ2VJRCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBU
b3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVz
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIApAQCAtNzk1LDcgKzc5NSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYKICAgICB9KTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9wZW5lclBhZ2VJRCBvcGVuZXJQYWdlSUQsIE9wZW5l
ckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmll
ciBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NF
UlQoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5lckRvbWFpbik7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihEb21haW4KICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgV1RGOjpudWxs
b3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIFtdKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBz
dWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJv
bXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21w
dFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigp
KTsKIApAQCAtODI4LDcgKzgyOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1CiAgICAgZ3Jh
bnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUo
dG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYg
c3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFs
PEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNT
aG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5k
ZXggYmFiMmI3YWVhYjcuLmJmYzIzMzk2ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlmTmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5j
U3RvcmFnZUltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBh
Z2VJRCwgT3BlbmVyRG9tYWluJiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAg
IHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxl
RG9tYWluPiYpIG92ZXJyaWRlOwogCkBAIC05MSw5ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgY2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYm
LCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+
JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZy
YW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lk
IGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBG
cmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlv
bihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3Qg
TmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21h
aW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQ
cmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCByZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21h
aW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21haW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBT
dGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2YWxlbnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVk
IG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOwogICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50
KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0gICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwg
UGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2
b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1l
RG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQ
cmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmNwcAppbmRleCAwZWU3Zjk2Mzg5NC4uYTVmMjYyNGU0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCkBAIC0yMDAsNyArMjAwLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnN5bmNTdG9yYWdlSW1t
ZWRpYXRlbHkoKQogICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdlLT5zY2hlZHVsZU9yV3JpdGVN
ZW1vcnlTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OkZvcmNl
SW1tZWRpYXRlV3JpdGU6Olllcyk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxG
cmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZy
YW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBz
CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BG
cmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BG
cmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
IApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1CiAgICAgfSk7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbklu
TmVlZE9mU3RvcmFnZUFjY2VzcywgT3BlbmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9t
YWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVu
ZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5lckRvbWFpbik7CiAgICAgQVNTRVJUKCFS
dW5Mb29wOjppc01haW4oKSk7CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9t
YWluSW4KICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKGRvbWFpbkluTmVl
ZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWluKSwgV1RGOjpudWxsb3B0LCBv
cGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8sIFtdKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
OjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9w
RnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0y
OTksNyArMjk5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omdy
YW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkYKICAgICBncmFudFN0b3JhZ2VB
Y2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURv
bWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZy
YW1lSUQsIFBhZ2VJRCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRX
YXNTaG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0
aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggNDRlZmJmNGRlYzEuLjQ1
ZjdlMWI3NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHN5bmNTdG9yYWdl
SWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgT3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJikg
b3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3BlbmVy
RG9tYWluJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBncmFuZGZhdGhlckRhdGFGb3JEb21haW5z
KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jikgb3ZlcnJpZGU7CiAKQEAgLTk3LDkg
Kzk3LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnko
KSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJG
cmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYm
LCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0
YXR1cyk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1l
RG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCBoYXNTdG9y
YWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBP
cHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1
cyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9t
YWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgYm9vbCBpc1Jl
ZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAgICB2b2lkIGxvZ1VzZXJJbnRl
cmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwpAQCAtMTIzLDcgKzEyMyw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZW1lbnRSZWNvcmRzRGVsZXRlZENvdW50Rm9yRG9t
YWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHNl
dFByZXZhbGVudFJlc291cmNlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBSZXNvdXJjZUxvYWRQ
cmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCByZWN1cnNpdmVseUdldEFsbERvbWFpbnNUaGF0SGF2
ZVJlZGlyZWN0ZWRUb1RoaXNEb21haW4oY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIEhh
c2hTZXQ8UmVkaXJlY3RlZFRvRG9tYWluPiYsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2Fs
bHMpIGNvbnN0OwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBncmFudFN0
b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBP
cHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwogICAgIHZvaWQgbWFya0FzUHJldmFsZW50SWZI
YXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQoUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIGJv
b2wgaXNQcmV2YWxlbnREdWVUb0RlYnVnTW9kZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAg
ICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2YWxlbnRSZXNvdXJjZXNGb3JE
ZWJ1Z01vZGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAppbmRleCAwYjU3NzViYmI3Ny4uZDc3OThiMjVkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHVz
aW5nIE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAg
dXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlE
ID0gdWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogICAgIAogICAgIHZp
cnR1YWwgflJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwpAQCAtMTEwLDcgKzEwOCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJE
b21haW4mJikgPSAwOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0
ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc0RlYnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Rl
YnVnTW9kZUVuYWJsZWQ7IH07CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVn
TW9kZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBG
cmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRv
cEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZyYW1l
TmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01h
aW5GcmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3Qg
VG9wRnJhbWVEb21haW4mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCmluZGV4IDg3MWIxOWQyZjA3Li42MjI0MzBjZDhlNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKQEAgLTI3NSw3ICsy
NzUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcgogICAgIH0pOwogfQogCi12b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIEFTU0VSVChzdWJGcmFtZURvbWFpbiAhPSB0b3BGcmFtZURvbWFpbik7CiAg
ICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTI5OCwxMiArMjk4LDEyIEBAIHZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzCiAgICAgfSk7CiB9CiAKLWJvb2wgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKQorYm9vbCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgcmV0dXJuIG1fbmV0d29ya1Nlc3Npb24gPyBtX25ldHdvcmtTZXNzaW9uLT5u
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5oYXNTdG9yYWdlQWNjZXNzKHJlc291cmNlRG9tYWluLCBm
aXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpIDogZmFsc2U7CiB9CiAKLXZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
SGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNh
bGxiYWNrKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxIYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJj
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBSCiAg
ICAgY2FsbGJhY2soZmFsc2UpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmIChzdWJGcmFtZURvbWFpbiA9PSB0b3BGcmFtZURvbWFpbikg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6WWVz
LCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgUmVnaXN0cmFibGVEb21haQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3Ry
YWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVy
UGFnZUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFJl
Z2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRp
ZmllciBvcGVuZXJQYWdlSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM3NSw3ICszNzUsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihSZWdpc3RyYWJsZQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1No
b3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcG9zdFRhc2soW3RoaXMsIHN1YkZyYW1lRG9t
YWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRvcEZyYW1lRG9tYWluID0gdG9w
RnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hv
d24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYKICAgICB9
KTsKIH0KIAotU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291
cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK1N0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgYm9vbCBpc1N0b3JhZ2VHcmFudGVkID0g
ZmFsc2U7CiAKQEAgLTQwOSw3ICs0MDksNyBAQCBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdAogICAg
IHJldHVybiBpc1N0b3JhZ2VHcmFudGVkID8gU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcyA6
IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObzsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxs
R3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDg3NTlkNjAxNjZhLi43OWNmMjQ2MDFj
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApAQCAt
MzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTdG9yYWdl
QWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFUeXBlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVE
b21haW4uaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvUnVuTG9vcC5oPgpAQCAtODIsOCArODMsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdh
dGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAg
ICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1
c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRf
dDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDsKICAgICB1c2lu
ZyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd247CkBAIC0xMDQsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRy
eShib29sKTsKIAotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQYWdlSUQsIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CisgICAgdm9pZCBncmFu
dFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogCiAgICAgdm9pZCBhcHBsaWNhdGlv
bldpbGxUZXJtaW5hdGUoKTsKIApAQCAtMTE4LDExICsxMTcsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JSZWdpc3Ry
YWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIEhhc2hNYXA8UmVnaXN0cmFi
bGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYp
PiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICBTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4m
LCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQpOworICAg
IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFt
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwot
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7Ci0gICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJ
RCk7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24pPiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4m
LCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgYm9vbCBo
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRQ
cmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTY2
LDExICsxNjUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JE
ZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogCiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJik7Ci0gICAg
dm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOworICAgIHZvaWQg
Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYp
OwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgY2FsbFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb0Jsb2NrQ29va2ll
c0ZvckhhbmRsZXIoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxsUmVtb3ZlRG9tYWluc0hhbmRsZXIoY29u
c3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwotICAgIHZvaWQgY2FsbEhhc1N0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7CisgICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAg
dm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOwogCkBAIC0xODIsNyArMTgxLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNp
Z25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNv
dXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzU3ViZnJhbWVVbmRlclRvcEZy
YW1lT3JpZ2lucykgY29uc3Q7CiAKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRh
dGVkKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIHVp
bnQ2NF90IG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpOworICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKTsKIAogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nl
c3Npb24mLCBjb25zdCBTdHJpbmcmLCBTaG91bGRJbmNsdWRlTG9jYWxob3N0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVj
a2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0
Q2hlY2tlci5oCmluZGV4IDJjOTcxODM2YWRhLi40ZDNkMTY5ZjZhZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hl
Y2tlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHJlZmVycmVy
OwogICAgICAgICBTdHJpbmcgdXNlckFnZW50OwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQ7Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEOwogICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAg
ICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAzZDcxZjhmNmIxYi4uOTJjOGI3
YWU0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC00NDIsNyArNDQyLDcgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlTG9hZElkZW50aWZpZXIo
UmVzb3VyY2VMb2FkSWRlbnRpZmllcgogICAgIEFTU0VSVCghbV9uZXR3b3JrUmVzb3VyY2VMb2Fk
ZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlkZW50
aWZpZXIgd2ViUGFnZUlEKQogewogICAgIHN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0Zv
clBhZ2Uod2ViUGFnZUlEKTsKIH0KQEAgLTUxMiw3ICs1MTIsNyBAQCB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFM
OjpTZXNzaQogICAgIGxvYWRlci0+Y29udmVydFRvRG93bmxvYWQoZG93bmxvYWRJRCwgcmVxdWVz
dCwgcmVzcG9uc2UpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpj
b29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3Nl
ZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNz
aW9uID0gc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBh
dXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29raWVzRm9yRE9NKGZpcnN0UGFy
dHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29r
aWVzKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29ucwogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9
CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9N
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNv
b2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldENvb2tp
ZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBhdXRvJiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24gPSBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpOwogICAg
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXRDb29raWVzRnJvbURPTShmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVTdHJpbmcpOwpAQCAtNTQyLDEz
ICs1NDIsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0Vu
YWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb20KICAgICBjb21wbGV0aW9uSGFuZGxl
cihzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmNvb2tpZXNFbmFi
bGVkKCkpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8gcmVzdWx0
ID0gc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5jb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJ
RCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIo
V1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4gcmVzdWx0OwogICAgIHN0b3JhZ2VTZXNzaW9uKG5ldHdvcmtQcm9jZXNzKCksIHNl
c3Npb25JRCkuZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJh
bWVJRCwgcGFnZUlELCByZXN1bHQpOwpAQCAtNjM4LDEzICs2MzgsMTMgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlE
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5l
dHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKICAgICAgICAgc3RvcmFn
ZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShmcmFtZUlELCBwYWdlSUQpOwog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhclBhZ2VTcGVjaWZp
Y0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
dWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xl
YXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoYXV0byogc3Rv
cmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkp
CiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5jbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKHBhZ2VJRCk7CkBAIC02OTcsNyArNjk3LDcgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVj
dG9yPFdlYkNvcmUKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJv
Y2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJl
c291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlz
dGljcygpKSB7CkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGMKICAg
ICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFu
dGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9t
cHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duIHByb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0
byBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdv
cmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsKQEAgLTcyMSw3ICs3MjEsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bjo6Tm8pOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBv
cGVuZXJEb21haW4pCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0
U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJ
ZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVu
ZXJEb21haW4pCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBuZXR3b3JrUHJvY2Vz
cygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHJlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGlj
cygpKQpAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiAgICAgU2VjdXJpdHlQb2xpY3k6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogfQogCi1PcHRpb25hbDxOZXR3b3JrQWN0aXZp
dHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRUcmFja2luZ1Jl
c291cmNlTG9hZCh1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3Vy
Y2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCkKK09wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBib29sIGlzTWFpblJlc291cmNl
LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQogewogICAgIGlmIChzZXNzaW9uSUQu
aXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTgxNCw3ICs4
MTQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxsTmV0d29y
a0FjdGl2aXR5VHJhY2tpbmcoKQogICAgIG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcnMuY2xlYXIo
KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdv
cmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZSh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBmb3IgKGF1dG8mIGFjdGl2aXR5VHJh
Y2tlciA6IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcnMpIHsKICAgICAgICAgaWYgKGFjdGl2aXR5
VHJhY2tlci5wYWdlSUQgPT0gcGFnZUlEKQpAQCAtODI2LDcgKzgyNiw3IEBAIHZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0Zv
clBhZ2UodWludDY0CiAgICAgfSk7CiB9CiAKLXNpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkodWludDY0X3QgcGFnZUlEKQorc2l6ZV90
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kUm9vdE5ldHdvcmtBY3Rpdml0eShQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIG1fbmV0d29ya0FjdGl2aXR5VHJh
Y2tlcnMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVtKSB7CiAgICAgICAgIHJldHVy
biBpdGVtLmlzUm9vdEFjdGl2aXR5ICYmIGl0ZW0ucGFnZUlEID09IHBhZ2VJRDsKQEAgLTkwMywx
NyArOTAzLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyQ29u
bmVjdGlvbkhhc1VwbG9hZHMoKQogICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpDbGVhcldlYlByb2Nl
c3NIYXNVcGxvYWRzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAwKTsKIH0KIAotdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG9sZFBhZ2VJRCkKIHsKICAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQYWdlV2FzQWRkZWQo
bV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCwgb2xkUGFnZUlEKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX25ldHdvcmtQcm9jZXNzLT53
ZWJQYWdlV2FzUmVtb3ZlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNlc3Npb25JRCwgcGFnZUlEKTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgcGFnZXMpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQcm9j
ZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0
b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlcykKIHsKICAgICBtX25ldHdvcmtQcm9jZXNzLT53ZWJQ
cm9jZXNzU2Vzc2lvbkNoYW5nZWQobV9jb25uZWN0aW9uLmdldCgpLCBuZXdTZXNzaW9uSUQsIHBh
Z2VzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBjYmM3YmJmZThmNS4uMDZkNTc5
Njg4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmgiCiAjaW5jbHVkZSAiV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtMb2FkSW5mb3JtYXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtMTMzLDcgKzEzNCw3IEBAIHB1
YmxpYzoKICAgICAgICAgbV9uZXR3b3JrTG9hZEluZm9ybWF0aW9uQnlJRC5yZW1vdmUoaWRlbnRp
Zmllcik7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gc3Rh
cnRUcmFja2luZ1Jlc291cmNlTG9hZCh1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9u
SUQmKTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5n
UmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZXNvdXJjZUxvYWRJZGVudGlm
aWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklE
Jik7CiAgICAgdm9pZCBzdG9wVHJhY2tpbmdSZXNvdXJjZUxvYWQoUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciByZXNvdXJjZUlELCBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpDb21wbGV0aW9uQ29kZSk7
CiAKICAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBibG9iUmVnaXN0cnkoKTsKQEAgLTE0
NCw5ICsxNDUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb25uZWN0aW9uSGFzVXBsb2Fkcygp
OwogICAgIHZvaWQgY2xlYXJDb25uZWN0aW9uSGFzVXBsb2FkcygpOwogCi0gICAgdm9pZCB3ZWJQ
YWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xk
UGFnZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklELCB1aW50
NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vz
c2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZXMpOworICAg
IHZvaWQgd2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKTsKKyAgICB2b2lkIHdlYlBh
Z2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+JiBwYWdlcyk7CiAKIHBy
aXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoTmV0d29ya1Byb2Nlc3Mm
LCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwpAQCAtMTcwLDE2ICsxNzEsMTYgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHByZWNvbm5lY3RUbyh1aW50NjRfdCBwcmVjb25uZWN0aW9uSWRlbnRp
ZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIHJlbW92
ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIpOwotICAgIHZvaWQgcGFnZUxv
YWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKTsKKyAgICB2b2lkIHBhZ2VMb2FkQ29tcGxl
dGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGNyb3NzT3JpZ2luUmVkaXJl
Y3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlZGlyZWN0VVJM
KTsKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFt
ZSA9IHsgfSk7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQoUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9h
ZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJik7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7
Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkKT4mJik7
CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRl
U2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5n
LCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAgIHZvaWQgZ2V0UmF3Q29va2ll
cyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiYmKT4mJik7CisgICAgdm9pZCBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJl
Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29s
IHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIAogICAgIHZvaWQg
cmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKQEAgLTIx
OCwxNyArMjE5LDE3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
biYgY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIGNs
ZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJh
bWUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyKTsKKyAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZv
aWQgbG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYpOwogICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAgICAgdm9pZCBsb2dTdWJy
ZXNvdXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgV2Fs
bFRpbWUgbGFzdFNlZW4pOwogICAgIHZvaWQgbG9nU3VicmVzb3VyY2VSZWRpcmVjdChQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbik7CiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik7
Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYm
KTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9u
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
b3BlbmVyRG9tYWluKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWlu
KTsKICNlbmRpZgogCiAgICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29s
LCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucyk7CkBAIC0yMzksMjkgKzI0MCwyOSBAQCBwcml2YXRlOgogICAgICAgICBSZXNvdXJj
ZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoKSA9IGRlZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0
d29ya0FjdGl2aXR5VHJhY2tlcihjb25zdCBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIm
KSA9IGRlZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihSZXNv
dXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXImJikgPSBkZWZhdWx0OwotICAgICAgICBSZXNvdXJj
ZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIodWludDY0X3QgcGFnZUlEKQorICAgICAgICBSZXNvdXJj
ZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAgLCBpc1Jvb3RBY3Rp
dml0eSB7IHRydWUgfQogICAgICAgICAgICAgLCBuZXR3b3JrQWN0aXZpdHkgeyBOZXR3b3JrQWN0
aXZpdHlUcmFja2VyOjpMYWJlbDo6TG9hZFBhZ2UgfQogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIodWludDY0X3QgcGFnZUlELCBS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29y
a0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNl
TG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCkKICAgICAgICAgICAgIDogcGFnZUlEIHsgcGFnZUlE
IH0KICAgICAgICAgICAgICwgcmVzb3VyY2VJRCB7IHJlc291cmNlSUQgfQogICAgICAgICAgICAg
LCBuZXR3b3JrQWN0aXZpdHkgeyBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpMYWJlbDo6TG9hZFJl
c291cmNlIH0KICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAgICAgdWludDY0X3QgcGFnZUlE
IHsgMCB9OworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAg
IFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCB7IDAgfTsKICAgICAgICAgYm9vbCBp
c1Jvb3RBY3Rpdml0eSB7IGZhbHNlIH07CiAgICAgICAgIE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIg
bmV0d29ya0FjdGl2aXR5OwogICAgIH07CiAKICAgICB2b2lkIHN0b3BBbGxOZXR3b3JrQWN0aXZp
dHlUcmFja2luZygpOwotICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9y
UGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHNpemVfdCBmaW5kUm9vdE5ldHdvcmtBY3Rpdml0
eSh1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNr
aW5nRm9yUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc2l6ZV90IGZpbmRSb290
TmV0d29ya0FjdGl2aXR5KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBzaXplX3QgZmlu
ZE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlE
KTsKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZjdjOTdlZWJiMjEuLjgzM2U3NGZjZjYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDE4ICsy
NiwxOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lS
ZWNlaXZlciB7CiAgICAgUGVyZm9ybVN5bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNv
dXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGVycm9yLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBW
ZWN0b3I8Y2hhcj4gZGF0YSkgU3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCiAgICAgUmVt
b3ZlTG9hZElkZW50aWZpZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKLSAgICBQ
YWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpCisgICAgUGFnZUxvYWRDb21wbGV0
ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIFByZWZldGNoRE5TKFN0
cmluZyBob3N0bmFtZSkKICAgICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklk
ZW50aWZpZXIsIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFt
ZXRlcnMpOwogCiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNl
TG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tp
ZXMpIFN5bmNocm9ub3VzCi0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJv
b2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+
IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNo
cm9ub3VzCisgICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBV
UkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8s
IFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNF
bmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hy
b25vdXMKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNh
bWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlk
QWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
IGNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJv
b2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+
IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNo
cm9ub3VzCisgICAgR2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBm
aXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJM
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBT
eW5jaHJvbm91cwogICAgIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVS
TCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwg
dXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5z
aW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCkBAIC01NiwxNiArNTYsMTYgQEAgbWVzc2Fn
ZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAg
IEVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQp
OwotICAgIENsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFJlbW92ZVN0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CisgICAgQ2xlYXJQYWdlU3BlY2lm
aWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9u
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9t
YWluKQogICAgIExvZ1dlYlNvY2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJy
ZXNvdXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZy
YW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZVJlZGlyZWN0
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291
cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAgICAg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+IHN0YXRpc3RpY3MpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWlu
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwot
ICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQp
IC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRl
ZCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRX
YXNTaG93bikgQXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3Jh
Z2VBY2Nlc3MpIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYworICAgIFJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gb3BlbmVyRG9tYWluKQogI2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShTdHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3Ry
aW5nIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBA
IC04Nyw3ICs4Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQogCi0gICAgV2ViUGFnZVdhc0Fk
ZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBv
bGRQYWdlSUQpCi0gICAgV2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCBwYWdlSUQpCi0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vz
c2lvbklEIG5ld1Nlc3Npb25JRCwgVmVjdG9yPHVpbnQ2NF90PiBwYWdlcykKKyAgICBXZWJQYWdl
V2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKKyAgICBXZWJQYWdl
V2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCkKKyAgICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQg
bmV3U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwCmluZGV4IGQxNGIxZGU5ZDkxLi40MDk3MTRkNjY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcApAQCAtNDgsNyArNDgs
NyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lT3JpZ2luKGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIHJldHVybiB1cmwucHJvdG9jb2xJc0RhdGEo
KSB8fCB1cmwucHJvdG9jb2xJc0Jsb2IoKSB8fCAhb3JpZ2luIHx8IG9yaWdpbi0+Y2FuUmVxdWVz
dCh1cmwpOwogfQogCi1OZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3
b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBI
VFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJlZmxpZ2h0
UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQsIGJv
b2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlwZSByZXF1ZXN0
TG9hZFR5cGUpCitOZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3Jr
UHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9ucyYmIG9wdGlvbnMsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywgVVJMJiYgdXJsLCBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVmbGlnaHRQb2xpY3kgcHJlZmxp
Z2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQs
IGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzLCBMb2FkVHlwZSByZXF1
ZXN0TG9hZFR5cGUpCiAgICAgOiBtX29wdGlvbnMoV1RGTW92ZShvcHRpb25zKSkKICAgICAsIG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fbmV0d29ya1Byb2Nlc3MobmV0d29ya1Byb2Nl
c3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
Q2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNr
ZXIuaAppbmRleCAzMWQxMWMzYThhZS4uNTdkZjFkYTQ2ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaApAQCAtNTQsNyArNTQsNyBA
QCBjbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TmV0d29y
a0xvYWRDaGVja2VyPiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFzcyBMb2FkVHlwZSA6IGJvb2wg
eyBNYWluRnJhbWUsIE90aGVyIH07CiAKLSAgICBOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1By
b2Nlc3MmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYmLCBVUkwm
JiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3JlOjpQcmVmbGlnaHRQ
b2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRlRW5hYmxlZCA9IGZh
bHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlLCBM
b2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOworICAgIE5ldHdvcmtM
b2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6
OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFdl
YkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9v
bCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBzaG91bGRDYXB0dXJlRXh0cmFO
ZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlID0gTG9h
ZFR5cGU6Ok90aGVyKTsKICAgICB+TmV0d29ya0xvYWRDaGVja2VyKCk7CiAKICAgICBzdHJ1Y3Qg
UmVkaXJlY3Rpb25UcmlwbGV0IHsKQEAgLTEyNSw3ICsxMjUsNyBAQCBwcml2YXRlOgogICAgIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IG1fc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7
CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAgUmVmPE5ldHdvcmtQcm9jZXNz
PiBtX25ldHdvcmtQcm9jZXNzOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKICAgICBX
ZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fb3JpZ2luYWxSZXF1ZXN0SGVhZGVyczsgLy8gTmVlZGVk
IGZvciBDT1JTIGNoZWNrcy4KICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fZmlyc3RSZXF1
ZXN0SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JTIGNoZWNrcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCmluZGV4IDg5NjM5
OWQxMzMyLi44OTczMGNmOWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNs
dWRlICJOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0
YUZpbGVSZWZlcmVuY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTM4
LDcgKzM5LDcgQEAgZW51bSBjbGFzcyBQcmVjb25uZWN0T25seSB7IE5vLCBZZXMgfTsKIAogY2xh
c3MgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAgICB1aW50NjRfdCB3ZWJQYWdl
SUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEOwogICAgIHVp
bnQ2NF90IHdlYkZyYW1lSUQgeyAwIH07CiAgICAgV1RGOjpQcm9jZXNzSUQgcGFyZW50UElEIHsg
MCB9OwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBBTDo6U2Vzc2lvbklEOjplbXB0
eVNlc3Npb25JRCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IGE1ZDZmNWNmY2M3Li5hYzRkMzJiZjJkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTExNTUsNyAr
MTE1NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2VzCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVp
bnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdl
U2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBuZXR3b3JrU3RvcmFnZVNlc3Npb24tPmNvbW1p
dHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oZnJvbURvbWFpbiwgdG9Eb21haW4s
IHBhZ2VJRCk7CkBAIC0xOTU0LDcgKzE5NTQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRB
bGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29sIGFsbG93cywgQ29tcGxldAog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0Rp
YWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQor
dm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2UoUGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRp
b24sIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9n
Z2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAg
ICByZXR1cm47CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dE
aWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzcwog
ICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3Jp
cHRpb24sIFNob3VsZFNhbXBsZTo6Tm8pLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBEaWFnbm9zdGljTG9n
Z2luZ1Jlc3VsdFR5cGUgcmVzdWx0LCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUgcmVzdWx0LCBTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNob3Vs
ZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk3
MCw3ICsxOTcwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3QKICAgICBwYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dEaWFn
bm9zdGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFnZUlELCBtZXNzYWdlLCBkZXNjcmlwdGlvbiwg
cmVzdWx0LCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUs
IHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJ
ZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywg
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5n
Q2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJl
dHVybjsKQEAgLTI2MTksNyArMjYxOSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlbW92ZUtl
cHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2FkZXIpCiAgICAgICAgIHNlc3Np
b24tPnJlbW92ZUtlcHRBbGl2ZUxvYWQobG9hZGVyKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
czo6d2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJRCkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBQ
YWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7CiAgICAgaWYgKCFwYWdlSUQgfHwgIW9sZFBhZ2VJ
RCkgewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQgcGFnZSB3aXRoIGludmFsaWQgaWQi
KTsKQEAgLTI2NDQsNyArMjY0NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNB
ZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklECiAgICAgICAg
IHN0b3JhZ2VNYW5hZ2VyLmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uob2xkUGFnZUlELCBw
YWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0
X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIXBhZ2VJRCkgewogICAgICAgICBMT0dfRVJST1Io
IkNhbm5vdCByZW1vdmUgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsKQEAgLTI2NzQsNyArMjY3NCw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoSVBDOjpD
b25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCktPnN0
b3JhZ2VNYW5hZ2VyKCkucHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihjb25uZWN0aW9uKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JiBwYWdlSURzKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vz
c1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9u
SUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlSURzKQog
ewogICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpOwogICAgIEFT
U0VSVChtX3Nlc3Npb25CeUNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbklEKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggN2FjYjNm
OTY3NWMuLmViZjNiN2ZlNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRj
aElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktleURhdGEuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0lEQlNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXJ2aWNlV29ya2VySWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vydmlj
ZVdvcmtlclR5cGVzLmg+CkBAIC0xMzYsOCArMTM3LDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5h
dmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcg
RG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47
CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0g
ICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWlu
dDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogCiAgICAgTmV0d29ya1Byb2Nl
c3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmKTsKQEAgLTE5MCw5
ICsxODksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsKIAogICAgIC8vIERpYWdub3N0
aWMgbWVzc2FnZXMgbG9nZ2luZy4KLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2
NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01l
c3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ1Jl
c3VsdFR5cGUsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWdu
aWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFn
bm9zdGljTWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwor
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPENG
RGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdDsKQEAgLTI1OCw3ICsy
NTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3RlZFRvRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFRvcEZyYW1l
VW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklELCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7
Ci0gICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtE
ZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRD
cm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYKQEAgLTI3MSwxMCArMjcwLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24o
UEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0
b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRl
ZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0
aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCB3ZWJQYWdl
V2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCB3ZWJQYWdlV2Fz
UmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgd2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJUEM6OkNvbm5l
Y3Rpb24mKTsKLSAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rp
b24mLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpOworICAgIHZvaWQg
d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+Jik7CiAgICAgdm9pZCBnZXRM
b2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Ok9yaWdpbkRldGFpbHM+
JiYpPiYmKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpp
bmRleCBkOWZlZTA3OGZlNy4uZjVlZjUzMDEzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTMxLDcg
KzEzMSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAg
ICBTZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gcmVkaXJlY3RlZFRvRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHJlZGlyZWN0ZWRGcm9tRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q2FjaGVNYXhB
Z2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAo
KSBBc3luYwotICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlE
KSAtPiAoKSBBc3luYworICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRp
b24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBm
cm9tRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlEKSAtPiAoKSBBc3luYwogICAgIFNldENyb3NzU2l0ZUxvYWRX
aXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBB
c3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25s
eUNvb2tpZXMpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDU4
YWFjYjk5M2RiLi4zM2NkYzRkMTdkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAg
LTEwNyw4ICsxMDcsMTEgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmMKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViUGFnZUlEKSkKKyAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gd2ViUGFnZUlEOworICAgIGRlY29kZXIgPj4gd2ViUGFnZUlEOworICAg
IGlmICghd2ViUGFnZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmVzdWx0LndlYlBh
Z2VJRCA9ICp3ZWJQYWdlSUQ7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC53ZWJG
cmFtZUlEKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGZlMjY1MzZm
MjFjLi4yMGQwYTc1ZTg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTc0LDE4ICsxNzQsMTggQEAgdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICAgICAgbV9uZXR3b3JrTG9hZENo
ZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFsUmVxdWVzdCgpIH0sIHRoaXMs
IFt0aGlzXSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAgV1RGOjpzd2l0Y2hPbihyZXN1
bHQsCiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJjZUVycm9yJiBlcnJvcikgewotICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogZXJyb3IgY2hl
Y2tpbmcgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkLCBwYXJlbnRQSUQgPSAlZCwgZXJyb3IuZG9tYWluID0gJXtwdWJsaWN9cywgZXJyb3IuY29k
ZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+
aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21haW4oKS51
dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBlcnJvciBjaGVja2luZyAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVk
LCBlcnJvci5kb21haW4gPSAle3B1YmxpY31zLCBlcnJvci5jb2RlID0gJWQpIiwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJh
bWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hy
b25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRh
dGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIWVycm9y
LmlzQ2FuY2VsbGF0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLT5kaWRGYWls
TG9hZGluZyhlcnJvcik7CiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICBbdGhp
c10gKE5ldHdvcmtMb2FkQ2hlY2tlcjo6UmVkaXJlY3Rpb25UcmlwbGV0JiB0cmlwbGV0KSB7CiAg
ICAgICAgICAgICAgICAgICAgIHRoaXMtPm1faXNXYWl0aW5nQ29udGludWVXaWxsU2VuZFJlcXVl
c3RGb3JDYWNoZWRSZWRpcmVjdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMtPndp
bGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZSh0cmlwbGV0LnJlcXVlc3QpLCBXVEZNb3Zl
KHRyaXBsZXQucmVkaXJlY3RSZXF1ZXN0KSwgV1RGTW92ZSh0cmlwbGV0LnJlZGlyZWN0UmVzcG9u
c2UpKTsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6
IHN5bnRoZXRpYyByZWRpcmVjdCBzZW50IGJlY2F1c2UgcmVxdWVzdCBVUkwgd2FzIG1vZGlmaWVk
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwg
cGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgp
LCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogc3ludGhldGljIHJl
ZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVSTCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwg
dGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKICAgICAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLT5jYW5Vc2VDYWNoZShyZXF1ZXN0
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3Rh
cnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNv
dXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBt
X3BhcmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQ
SUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3Vy
Y2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnJldHJpZXZlQ2FjaGVFbnRyeShyZXF1ZXN0KTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQpA
QCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCgpCiAg
ICAgfQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhhdCBjb2RlIHBhdGggb25jZSBtX25ldHdvcmtM
b2FkQ2hlY2tlciBpcyB1c2VkIGZvciBhbGwgbmV0d29yayBsb2Fkcy4KICAgICBpZiAoY2FuVXNl
Q2FjaGUob3JpZ2luYWxSZXF1ZXN0KCkpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNN
YWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSwgbV9wYXJh
bWV0ZXJzLnBhcmVudFBJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3Vy
Y2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpLCBtX3Bh
cmFtZXRlcnMucGFyZW50UElEKTsKICAgICAgICAgcmV0cmlldmVDYWNoZUVudHJ5KG9yaWdpbmFs
UmVxdWVzdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIyNywxMyArMjI3LDEzIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICBsb2FkZXItPmxvZ1Nsb3dDYWNoZVJldHJp
ZXZlSWZOZWVkZWQoaW5mbyk7CiAKICAgICAgICAgaWYgKCFlbnRyeSkgewotICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBub3Qg
aW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91
cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91
cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVF
bnRyeTogUmVzb3VyY2Ugbm90IGluIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNl
ID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUlu
dDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwg
aXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+
c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgICAgICBpZiAoZW50cnktPmhhc1JlYWNoZWRQcmV2YWxlbnRSZXNvdXJjZUFn
ZUNhcCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNh
Y2hlRW50cnk6IFJlc291cmNlIGhhcyByZWFjaGVkIHByZXZhbGVudCByZXNvdXJjZSBhZ2UgY2Fw
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCki
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJh
bWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7Cisg
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJl
c291cmNlIGhhcyByZWFjaGVkIHByZXZhbGVudCByZXNvdXJjZSBhZ2UgY2FwIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAg
ICAgICAgICAgIG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlkYXRpb24gPSBXVEZNb3ZlKGVu
dHJ5KTsKICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXZhbGlkYXRpb25SZXF1ZXN0ID0g
b3JpZ2luYWxSZXF1ZXN0KCk7CiAgICAgICAgICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQo
V1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgRmlyc3RMb2FkOjpZZXMpOwpAQCAtMjQxLDIx
ICsyNDEsMjEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRy
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIH0KICNlbmRpZgogICAg
ICAgICBpZiAoZW50cnktPnJlZGlyZWN0UmVxdWVzdCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IEhhbmRsaW5nIHJlZGlyZWN0IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IEhhbmRs
aW5nIHJlZGlyZWN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hy
b25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1l
dGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2Uo
KSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+ZGlzcGF0Y2hXaWxsU2Vu
ZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUoZW50cnkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAobG9hZGVyLT5tX3Bh
cmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gJiYgIWVudHJ5LT5yZXNwb25zZSgpLmNlcnRp
ZmljYXRlSW5mbygpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRy
aWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIGRvZXMgbm90IGhhdmUgcmVxdWlyZWQgY2VydGlmaWNh
dGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsK
KyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0
ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAg
ICAgICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXF1ZXN0KSwgRmlyc3RM
b2FkOjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChl
bnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkgfHwgcmVxdWVzdC5jYWNoZVBvbGljeSgpID09IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZWZyZXNoQW55Q2FjaGVEYXRhKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFZh
bGlkYXRpbmcgY2FjaGUgZW50cnkgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwg
aXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwg
aXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJl
dHJpZXZlQ2FjaGVFbnRyeTogVmFsaWRhdGluZyBjYWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAgICAgICAg
ICAgICBsb2FkZXItPnZhbGlkYXRlQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmV0cmlldmVDYWNoZUVudHJ5OiBSZXRyaWV2ZWQgcmVzb3VyY2UgZnJvbSBjYWNoZSAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJldHJpZXZlZCByZXNv
dXJjZSBmcm9tIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3lu
Y2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3Vy
Y2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgbG9hZGVyLT5kaWRSZXRyaWV2ZUNhY2hl
RW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAgIH0pOwogfQpAQCAtMjYzLDcgKzI2Myw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0KQogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0
d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2FkIGxvYWQpCiB7CiAg
ICAgaWYgKGxvYWQgPT0gRmlyc3RMb2FkOjpZZXMpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2Ug
PSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3Vy
Y2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
c3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNT
eW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogCiAgICAgICAgIGNvbnN1bWVTYW5kYm94RXh0ZW5z
aW9ucygpOwogCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmlyc3RMb2EKICAg
ICB9CiAgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikgewogICAgICAgICBXVEZMb2dBbHdheXMoIkF0
dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiAoaWQ9JSIgUFJJ
dTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgcGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vzc2lv
bklEKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydE5ldHdv
cmtMb2FkOiBBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xvYWQgd2l0aCBhIHNlc3Npb24g
dGhhdCBkb2VzIG5vdCBleGlzdCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzZXNzaW9uSUQ9JSIgUFJJdTY0ICIp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFy
YW1ldGVycy5pZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0
dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMg
bm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgcGFyYW1ldGVycy5zZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwog
ICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkubG9nRGlhZ25vc3RpY01lc3Nh
Z2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlz
OjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW52
YWxpZFNlc3Npb25JREtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICAgICAg
ZGlkRmFpbExvYWRpbmcoaW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKSk7CiAgICAgICAgIHJl
dHVybjsKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3Rh
cnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgIHBh
cmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CiAgICAgbV9uZXR3b3JrTG9hZCA9
IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAmbV9jb25uZWN0aW9uLT5ibG9i
UmVnaXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdvcmtTZXNzaW9uKTsKIAotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIs
IGRlc2NyaXB0aW9uID0gJXtwdWJsaWN9cykiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xv
YWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1
YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX25ldHdvcmtMb2FkLT5kZXNj
cmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRl
cjo6Y2xlYW51cChMb2FkUmVzdWx0IHJlc3VsdCkKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cChMb2FkUmVzdWx0IHJlc3VsdCkKIAogdm9pZCBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnZlcnRUb0Rvd25sb2FkKERvd25sb2FkSUQgZG93bmxv
YWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKLSAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiQ29udmVydGluZyBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIgJXAgdG8gZG93bmxvYWQgJSIgUFJJdTY0ICIgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCB0aGlzLCBkb3dubG9hZElELmRvd25sb2FkSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsK
KyAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiQ29udmVydGluZyBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIgJXAgdG8gZG93bmxvYWQgJSIgUFJJdTY0ICIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCBkb3du
bG9hZElELmRvd25sb2FkSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgIAog
ICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgcmVzb3VyY2UgY2FtZSBmcm9tIHRoZSBkaXNr
IGNhY2hlLgogICAgIGlmICghbV9uZXR3b3JrTG9hZCkgewpAQCAtMzQwLDcgKzM0MCw3IEBAIHZv
aWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImFib3J0OiBDYW5jZWxpbmcg
cmVzb3VyY2UgbG9hZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsCi0gICAgICAgIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7
CisgICAgICAgIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKIAogICAgIGlmIChtX3BhcmFt
ZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUgJiYgbV9yZXNwb25zZS5pc051bGwoKSAmJiAhbV9pc0tl
cHRBbGl2ZSkgewogICAgICAgICBtX2lzS2VwdEFsaXZlID0gdHJ1ZTsKQEAgLTM4NCwxMiArMzg0
LDEyIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9y
WEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIHhGCiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0
aW9uc0NvbmZsaWN0OiB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAiTXVsdGlwbGUg
J1gtRnJhbWUtT3B0aW9ucycgaGVhZGVycyB3aXRoIGNvbmZsaWN0aW5nIHZhbHVlcyAoJyIgKyB4
RnJhbWVPcHRpb25zICsgIicpIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5zdHJp
bmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInLiBGYWxsaW5nIGJhY2sgdG8gJ0RFTlkn
LiI7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsg
bV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdl
IHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGNh
c2UgWEZyYW1lT3B0aW9uc0ludmFsaWQ6IHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9
ICJJbnZhbGlkICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlciBlbmNvdW50ZXJlZCB3aGVuIGxvYWRp
bmcgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJzogJyIgKyB4
RnJhbWVPcHRpb25zICsgIicgaXMgbm90IGEgcmVjb2duaXplZCBkaXJlY3RpdmUuIFRoZSBoZWFk
ZXIgd2lsbCBiZSBpZ25vcmVkLiI7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkg
fSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KICAgICB9CkBAIC00MTYsNyArNDE2LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1l
T3B0aW8KICAgICAgICAgU3RyaW5nIHhGcmFtZU9wdGlvbnMgPSBtX3Jlc3BvbnNlLmh0dHBIZWFk
ZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6WEZyYW1lT3B0aW9ucyk7CiAgICAgICAgIGlmICgheEZy
YW1lT3B0aW9ucy5pc051bGwoKSAmJiBzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9u
cyh4RnJhbWVPcHRpb25zLCByZXNwb25zZS51cmwoKSkpIHsKICAgICAgICAgICAgIFN0cmluZyBl
cnJvck1lc3NhZ2UgPSAiUmVmdXNlZCB0byBkaXNwbGF5ICciICsgcmVzcG9uc2UudXJsKCkuc3Ry
aW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQg
c2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICciICsgeEZyYW1lT3B0aW9ucyArICInLiI7Ci0gICAg
ICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25zb2xlTWVzc2FnZSB7IG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0sIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkQ29uc29sZU1l
c3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlkZW50aWZpZXIoKSB9LCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgIH0KICAgICB9CkBAIC00MjUsNyArNDI1LDcgQEAgYm9vbCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFtZUFuY2VzdG9yc09yWEZyYW1l
T3B0aW8KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaHR0cFN0YXR1c0NvZGUgPSAlZCwg
bGVuZ3RoID0gJSIgUFJJZDY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCByZWNlaXZlZFJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIiwgaHR0cFN0YXR1c0NvZGUgPSAlZCwgbGVuZ3RoID0gJSIgUFJJZDY0ICIpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSwgcmVjZWl2ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7CiAKICAgICBt
X3Jlc3BvbnNlID0gV1RGTW92ZShyZWNlaXZlZFJlc3BvbnNlKTsKIApAQCAtNTA1LDcgKzUwNSw3
IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3Vy
Y2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcG9ydGVk
RW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpCi0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVj
ZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2Vpdmlu
ZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAg
IG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXItPnNpemUoKTsKIAogICAgIEFTU0VSVCghbV9j
YWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIsIGludCByZXAKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJpY3MpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
bGVuZ3RoID0gJXpkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9udW1CeXRlc1JlY2VpdmVkKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBsZW5ndGggPSAlemQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNS
ZWNlaXZlZCk7CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
KCkpCiAgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xvYWRJbmZvcm1hdGlvbk1ldHJp
Y3MoaWRlbnRpZmllcigpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwpAQCAtNTY5LDcgKzU2OSw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGYWlsTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRGYWlsTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNUaW1lb3V0
ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGlzQWNjZXNzQ29udHJvbCA9ICVkLCBlcnJDb2Rl
ID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5j
ZWxsYXRpb24oKSwgZXJyb3IuaXNBY2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgpKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsTG9hZGluZzogKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGlzQWNjZXNzQ29udHJvbCA9
ICVkLCBlcnJDb2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGVycm9yLmlz
VGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJvci5pc0FjY2Vzc0NvbnRyb2wo
KSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZU5ldHdvcmtMb2Fk
SW5mb3JtYXRpb24oaWRlbnRpZmllcigpKTsKQEAgLTczMSw3ICs3MzEsNyBAQCB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
JiYgbmV3UmVxdWVzdAogICAgICAgICB9CiAgICAgfQogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiY29udGludWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0
ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVdpbGxTZW5kUmVx
dWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAKICAg
ICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0gaXNBbGxvd2VkVG9Bc2tVc2Vy
Rm9yQ3JlZGVudGlhbHM7CiAKQEAgLTk4OCw2ICs5ODgsMTEgQEAgc3RhdGljIFN0cmluZyBlc2Nh
cGVJREZvckpTT04oY29uc3QgT3B0aW9uYWw8dWludDY0X3Q+JiB2YWx1ZSkKICAgICByZXR1cm4g
dmFsdWUgPyBTdHJpbmc6Om51bWJlcih2YWx1ZS52YWx1ZSgpKSA6IFN0cmluZygiTm9uZSJfcyk7
CiB9OwogCitzdGF0aWMgU3RyaW5nIGVzY2FwZUlERm9ySlNPTihjb25zdCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4mIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZSA/IFN0cmluZzo6bnVtYmVy
KHZhbHVlLT50b1VJbnQ2NCgpKSA6IFN0cmluZygiTm9uZSJfcyk7Cit9OworCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogewogICAgIEFT
U0VSVChzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sIHNlc3Npb25JRCgp
KSk7CkBAIC05OTgsNyArMTAwMyw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbigpIGNvbnN0CiAgICAgbG9nQ29va2llSW5mb3JtYXRpb24obV9jb25u
ZWN0aW9uLCAiTmV0d29ya1Jlc291cmNlTG9hZGVyIiwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2
b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9yaWdpbmFsUmVxdWVzdCgpLmZp
cnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKG9yaWdpbmFsUmVxdWVz
dCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFsUmVxdWVzdCgpLmh0dHBSZWZl
cnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBpZGVudGlmaWVyKCkpOwogfQogCi1zdGF0aWMg
dm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dl
ZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5m
b3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0
IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50
aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25J
RCgpKSk7CiAKQEAgLTEwMjUsNyArMTAzMCw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29r
aWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvCiAj
dW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotc3RhdGljIHZvaWQgbG9nQ29va2llSW5m
b3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRl
SW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJu
YWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlk
ZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxkTG9n
Q29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Np
b25JRCgpKSk7CiAKQEAgLTEwODYsNyArMTA5MSw3IEBAIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rp
CiAjdW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotdm9pZCBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
JiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmpl
Y3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBp
ZGVudGlmaWVyKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0
aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJp
bmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAg
IEFTU0VSVChzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25uZWN0aW9uLCBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5kZXggYThhMzAwNWMxNDIuLmE4
ZjZkMzE1Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTg0LDcgKzg0LDcgQEAgcHVibGljOgogICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5zZXNzaW9u
SUQ7IH0KICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRDsgfQotICAgIHVpbnQ2NF90IHBh
Z2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KKyAgICBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMu
d2ViUGFnZUlEOyB9CiAKICAgICBzdHJ1Y3QgU3luY2hyb25vdXNMb2FkRGF0YTsKIApAQCAtMTEw
LDcgKzExMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRpYyBib29sIHNob3VsZExvZ0Nv
b2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgUEFM
OjpTZXNzaW9uSUQmKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZv
aWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZp
ZXIpOworICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2Vk
T2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVy
KTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNhYmxlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3NDYXB0
dXJlKCkgeyBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcyA9IGZhbHNlOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
U2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKaW5kZXggOTdlMGIyNDQw
NzguLjU1M2NiYWQxOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2su
Y3BwCkBAIC00NSw0MCArNDUsNDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RmV0Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9pZGVudGlm
aWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29s
IG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZl
UmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3Nh
Z2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVj
ZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEg
eyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3Ro
IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiBmb3JtRGF0YSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9p
ZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1E
YXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIHsKICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRl
bnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNo
OjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogewogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRj
aDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVu
dGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IGVycm9yIH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkTm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0
Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFu
ZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
Tm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApp
bmRleCBkMzJjZDQ2Mzg5ZS4uOTFmZGM3MTU5NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5l
Y3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2Vy
dmkKICAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS5hY3RpdmVXb3JrZXJGcm9tUmVnaXN0cmF0
aW9uSUQoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZpZXIpOwogICAgIGlmICghd29y
a2VyKSB7CiAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIC0+IERpZE5vdEhhbmRsZSBi
ZWNhdXNlIG5vIGFjdGl2ZSB3b3JrZXIiLCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRj
aElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGF1dG8gc2VydmljZVdv
cmtlcklkZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKTsKQEAgLTE3MCwxMyArMTcwLDEz
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAKICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CiAg
ICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSB3
b3JrZXIgZGlkIG5vdCBiZWNvbWUgYWN0aXZhdGVkIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdT
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsg
fSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAgbV9jb250ZW50Q29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RI
YW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKICAgICAgICAgYXV0byogd29ya2VyID0gc2VydmVyKCkud29ya2VyQnlJRChzZXJ2aWNl
V29ya2VySWRlbnRpZmllcik7CiAgICAgICAgIGlmICghd29ya2VyKSB7Ci0gICAgICAgICAgICBt
X2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAg
ICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgc2VydmkKICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxXZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLnN0YXJ0RmV0Y2gobV9zZXNzaW9u
SUQsIG1fY29udGVudENvbm5lY3Rpb24uZ2V0KCksIHRoaXMtPmlkZW50aWZpZXIoKSwgZmV0Y2hJ
ZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVxdWVzdCwgb3B0aW9ucywgZm9y
bURhdGEsIHJlZmVycmVyKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
U1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0
Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2UgZmFpbGVkIHRvIHJ1
biBzZXJ2aWNlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUg
eyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9KTsKICAgICB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0
b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMDAzOTQ1MDUzZjUuLjBiZWQ2OTc2OTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlTWFuYWdlci5jcHAKQEAgLTQ5NCw3ICs0OTQsNyBAQCBTdG9yYWdlTWFuYWdlcjo6flN0
b3JhZ2VNYW5hZ2VyKCkKIHsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZShQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcykKIHsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSUQsIHF1b3RhSW5CeXRlc10oKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5zKHN0
b3JhZ2VOYW1lc3BhY2VJRCkpCkBAIC01MDQsNyArNTA0LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdl
cjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFj
ZUlELAogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKQordm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIHN0
b3JhZ2VOYW1lc3BhY2VJRCkKIHsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSURdIHsKICAgICAgICAg
QVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRhaW5zKHN0b3JhZ2VOYW1lc3Bh
Y2VJRCkpOwpAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCiAgICAg
fSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5l
Y3Rpb24mIGFsbG93ZWRDb25uZWN0aW9uKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dl
ZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihQYWdlSWRlbnRpZmllciBzdG9yYWdl
TmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlvbiYgYWxsb3dlZENvbm5lY3Rpb24pCiB7CiAgICAg
YXV0byBhbGxvd2VkQ29ubmVjdGlvbklEID0gYWxsb3dlZENvbm5lY3Rpb24udW5pcXVlSUQoKTsK
ICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCBhbGxvd2VkQ29ubmVjdGlvbklELCBzdG9yYWdlTmFtZXNwYWNlSURdKCkgbXV0YWJsZSB7
CkBAIC01MjMsNyArNTIzLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dlZFNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbih1aW50NjRfdCBzdG9yYWcKICAgICB9KTsKIH0K
IAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlQ29ubmVjdGlvbih1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlv
biYgYWxsb3dlZENvbm5lY3Rpb24pCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2Vk
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VO
YW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKIHsKICAgICBh
dXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVjdGlvbi51bmlxdWVJRCgpOwog
ICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3BhY2VJRF0oKSBtdXRhYmxlIHsK
QEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0bwogICAgIH0pOwogfQog
Ci12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKQor
dm9pZCBTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlSWRl
bnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFBhZ2VJZGVudGlmaWVyIG5ld1N0b3JhZ2VOYW1l
c3BhY2VJRCkKIHsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSUQsIG5ld1N0b3JhZ2VOYW1lc3BhY2VJ
RF0gewogICAgICAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSogc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQoc3RvcmFnZU5hbWVzcGFjZUlE
KTsKQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpwcm9jZXNzRGlkQ2xv
c2VDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKICAgICAgICAgZm9yIChh
dXRvJiBwYWlyIDogY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBhaXJzVG9SZW1vdmUpCiAgICAg
ICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1vdmUocGFpcik7CiAKLSAgICAg
ICAgVmVjdG9yPHVpbnQ2NF90PiBzZXNzaW9uU3RvcmFnZU5hbWVTcGFjZUlEc1RvUmVtb3ZlOwor
ICAgICAgICBWZWN0b3I8UGFnZUlkZW50aWZpZXI+IHNlc3Npb25TdG9yYWdlTmFtZVNwYWNlSURz
VG9SZW1vdmU7CiAgICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgOiBt
X3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcykgewogICAgICAgICAgICAgaWYgKHNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlLnZhbHVlLT5hbGxvd2VkQ29ubmVjdGlvbnMoKS5jb250YWlucyhjb25uZWN0
aW9uSUQpKQogICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5y
ZW1vdmVBbGxvd2VkQ29ubmVjdGlvbihjb25uZWN0aW9uSUQpOwpAQCAtNzc5LDcgKzc3OSw3IEBA
IHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU1hcChJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAKIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNl
c3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qgc3Rv
cmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIFNlY3VyaXR5T3JpZ2luRGF0
YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSkKIHsKLSAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9u
LnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZUlELCBzZWN1cml0eU9y
aWdpbkRhdGEgPSBzZWN1cml0eU9yaWdpbkRhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7
CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJRCgpLCBzdG9yYWdlTWFwSUQs
IHN0b3JhZ2VOYW1lc3BhY2VJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVy
VHlwZT4oc3RvcmFnZU5hbWVzcGFjZUlEKSwgc2VjdXJpdHlPcmlnaW5EYXRhID0gc2VjdXJpdHlP
cmlnaW5EYXRhLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9pc0Vw
aGVtZXJhbCkgewogICAgICAgICAgICAgbV9lcGhlbWVyYWxTdG9yYWdlLmFkZChzZWN1cml0eU9y
aWdpbkRhdGEsIFdlYkNvcmU6OlN0b3JhZ2VNYXA6OmNyZWF0ZShsb2NhbFN0b3JhZ2VEYXRhYmFz
ZVF1b3RhSW5CeXRlcykpOwogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaAppbmRl
eCBhODg4MzMyZWZjZi4uNWU2NWU1MDM4ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTUwLDExICs1MSwx
MSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFuYWdlcj4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB+U3RvcmFnZU1hbmFnZXIoKTsK
IAotICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFn
ZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotICAgIHZvaWQgZGVzdHJveVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCk7Ci0gICAg
dm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVB
bGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9pZCBjbG9uZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgbmV3U3Rv
cmFnZU5hbWVzcGFjZUlEKTsKKyAgICB2b2lkIGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgdW5zaWduZWQgcXVv
dGFJbkJ5dGVzKTsKKyAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIHZvaWQgYWRkQWxs
b3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlvbiYpOworICAgIHZvaWQgcmVt
b3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlvbiYpOworICAgIHZv
aWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBz
dG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG5ld1N0b3JhZ2VOYW1l
c3BhY2VJRCk7CiAKICAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oSVBDOjpDb25u
ZWN0aW9uJik7CiAgICAgdm9pZCB3YWl0VW50aWxXcml0ZXNGaW5pc2hlZCgpOwpAQCAtMTA3LDcg
KzEwOCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8dWludDY0X3QsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4sIFJlZlB0cjxUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1l
c3BhY2U+PiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZXM7CiAKICAgICBjbGFzcyBT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8U2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKIAogICAgIEhhc2hNYXA8c3RkOjpw
YWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90PiwgUmVmUHRyPFN0b3JhZ2VB
cmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGM3ZjM4NmIzZDdjLi44
YmJjMTY5Nzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hl
RW50cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiU2hh
cmVhYmxlUmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgpAQCAtODQsNyArODUs
NyBAQCBlbnVtIGNsYXNzIFVzZURlY2lzaW9uIHsKICAgICBOb0R1ZVRvRXhwaXJlZFJlZGlyZWN0
CiB9OwogCi11c2luZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPHVpbnQ2NF90IC8qd2ViUGFn
ZUlEKi8sIHVpbnQ2NF90IC8qd2ViRnJhbWVJRCovPjsKK3VzaW5nIEdsb2JhbEZyYW1lSUQgPSBz
dGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IC8qd2ViRnJhbWVJRCov
PjsKIAogY2xhc3MgQ2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZT4gewogcHVibGljOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
RGF0YVRhc2tDb2NvYS5oCmluZGV4IDk2NWM2ZmE2NjRiLi4yZGQwZTdkNDZiYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwog
Y2xhc3MgTmV0d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBwdWJsaWMgTmV0d29ya0RhdGFUYXNr
IHsKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9u
LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdlYkNv
cmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJD
b3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpD
b250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwg
Ym9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0
T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2
aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5
VHJhY2tlcikKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdvcmtT
ZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwg
Ym9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0NvY29hKHNlc3Npb24sIGNsaWVudCwg
cmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxk
Q29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29ubmVjdE9ubHksIGRhdGFUYXNr
SXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKSk7CiAgICAg
fQpAQCAtNzAsMTIgKzcwLDEyIEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcygpIHsgcmV0dXJuIG1fbmV0d29ya0xvYWRNZXRyaWNz
OyB9CiAKICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUlEOyB9
OwotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9OworICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZh
dGU6Ci0gICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0
YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVk
aXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPik7CisgICAgTmV0d29ya0RhdGFU
YXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNv
bnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xp
Y3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29u
bmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFs
PE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKIAogICAgIGJvb2wgdHJ5UGFzc3dvcmRCYXNlZEF1
dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFwcGx5U25pZmZpbmdQb2xpY2ll
c0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0cm9uZyBOU1VSTFJlcXVlc3Qq
JiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxkQ29udGVudEVuY29kaW5nU25p
ZmYpOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOU1VSTFNlc3Np
b25EYXRhVGFzaz4gbV90YXNrOwogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyBtX25l
dHdvcmtMb2FkTWV0cmljczsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQ7Ci0gICAgdWludDY0X3Qg
bV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGJvb2wgbV9oYXNCZWVuU2V0VG9V
c2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCmlu
ZGV4IDM1ZTQ0M2I5ZWU5Li4yOGEwNWU4MGRiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCkBAIC0x
NjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFza1dpdGhGaXJzdFBhcnR5Rm9yU2Ft
ZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0YXMKICNlbmRpZgogfQogCi1OZXR3
b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mIHNl
c3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdv
cmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tD
bGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0V2l0
aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxz
UG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZm
LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9y
TWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0
d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNzaW9uLCBjbGll
bnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lzRm9yTWFpbkZy
YW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwgbV9wYWdlSUQo
cGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtEYXRhVGFza0NvY29hOjpOZXR3b3Jr
RGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0RhdGFUCiAgICAg
aWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
ICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmss
ICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlE
ID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogQmxvY2tpbmcgY29va2llcyBm
b3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNr
IHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5n
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2llSW5mb3JtYXRp
b246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IEJsb2NraW5n
IGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCAo
dW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAgICAgIExPRyhOZXR3b3JrU2Vzc2lv
biwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRp
Zmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CiAjZW5kaWYK
QEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9y
bUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAgIGJvb2wgc2hv
dWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBXZWJDb3JlOjpT
dG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29va2llbGVzcyB8fCBt
X3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNob3VsZEJsb2NrQ29va2llcyhyZXF1
ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICBS
RUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0g
TmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29r
aWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVs
dTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQsIG1fZnJh
bWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIChzaG91bGRCbG9j
a0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1ZXN0LnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0g
JWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJl
Y3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgbV9mcmFtZUlELCAodW5zaWdu
ZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29va2llcyA/ICJC
bG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgJXMgY29va2ll
cyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIChzaG91bGRC
bG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1ZXN0LnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBAIC0zNzksNyArMzc5LDcgQEAgdm9p
ZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24oV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3VsZEJsb2NrQ29va2llcykgewogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dD
b29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNP
bkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9
ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IE5vdCBwYXJ0aXRpb25pbmcgY29v
a2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQsIG1fZnJhbWVJRCwgKHVu
c2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6Ondp
bGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0g
JWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogTm90IHBhcnRpdGlvbmluZyBjb29r
aWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBtX2Zy
YW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICAgICAgTE9HKE5ldHdvcmtT
ZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMgZm9yIHJlZGlyZWN0IFVSTCAl
cyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
aW5kZXggYzRmYjAwYjA4M2MuLjA4MzQ4ZDJjOTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9J
UEMvQ29ubmVjdGlvbi5oCkBAIC0xODYsNiArMTg2LDE4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRXaXRoUmVwbHkoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIEZ1bmN0aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlv
bjx2b2lkKE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUgVDo6UmVwbHk+OjpU
eXBlPik+JiYgcmVwbHlIYW5kbGVyKTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNl
bmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRp
b25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseSh1aW50NjRf
dCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9u
PiB3YWl0Rm9yT3B0aW9ucyA9IHsgfSk7CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVT4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8
VT4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VD4oV1RGTW92ZShtZXNzYWdlKSwgZGVzdGlu
YXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQorICAgIAorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJ
bW1lZGlhdGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGlt
ZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+KGRlc3Rp
bmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAgIH0KIAog
ICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8
U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHko
dWludDY0X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIEZ1bmN0aW9uRGlz
cGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxE
ZWNvZGVyPik+JiYgcmVwbHlIYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01l
c3NhZ2VTZW5kZXIuaAppbmRleCBkNWY5ODFlNDUzNC4uM2Q2ZjM0Mjg5MmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAgLTM0LDkgKzM0LDkgQEAgY2xh
c3MgTWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TWVzc2FnZVNlbmRlcigp
OwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2Up
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9w
dGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBzZW5kKG1lc3NhZ2UsIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCksIHsgfSk7Cisg
ICAgICAgIHJldHVybiBzZW5kKG1lc3NhZ2UsIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCks
IHNlbmRPcHRpb25zKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBib29sIHNl
bmQoY29uc3QgVSYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNl
bmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQpAQCAtNDgsNiArNDgsMTIgQEAgcHVibGljOgog
ICAgICAgICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNl
bmRPcHRpb25zKTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVSwgdHlwZW5h
bWUgVD4KKyAgICBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxU
PiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0p
CisgICAgeworICAgICAgICByZXR1cm4gc2VuZDxVPihtZXNzYWdlLCBkZXN0aW5hdGlvbklELnRv
VUludDY0KCksIHNlbmRPcHRpb25zKTsKKyAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgogICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVw
bHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5k
U3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQpAQCAtNjUsOCArNzEsOCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kU3luYyhX
VEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGluYXRpb25JRCwgdGltZW91dCwg
c2VuZFN5bmNPcHRpb25zKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBl
bmFtZS4uLiBBcmdzPgotICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+CisgICAgdm9pZCBzZW5kV2l0aEFzeW5j
UmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlcikKICAgICB7CiAgICAgICAg
IG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkK
aW5kZXggNTI1MTQ5MDJhYmIuLjViOTc1MzAzMDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIwNSw2ICsyMDUsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJh
dGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogICAgICAgICAnU3RyaW5nJywKICAgICAgICAg
J1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpGZXRjaElk
ZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50aWZpZXInLAogICAgICAgICAn
V2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAgICAgJ1dlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
JywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcAppbmRleCBhNmEwMDk5NTUwMC4uZTYw
NWE0NTk0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAK
QEAgLTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBhZ2VIYW5kbGU+
IFBhZ2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhhbmRsZT4gUGFn
ZUhhbmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsKIH0KIAotUmVm
PFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVpbnQ2NF90IHBh
Z2VJRCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29udmVydGluZyhX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6UGFnZUhhbmRs
ZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VIYW5kbGU6OlBh
Z2VIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlzQXV0b2NvbnZl
cnRpbmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2NvbnZlcnRpbmco
aXNBdXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBhZ2VIYW5kbGU6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFnZUhhbmRsZTo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsK
LSAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQor
ICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgZGVjb2Rl
ciA+PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQXV0
b2NvbnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBpc0F1
dG9jb252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNyZWF0ZShwYWdl
SUQpOworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRvY29udmVydGlu
ZygqcGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFmYmRjMzEuLjZh
MWNmYjY5ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhh
bmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKQEAg
LTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQVBJUGFnZUhhbmRsZV9oCiAKICNpbmNsdWRlICJBUElP
YmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTM4LDIwICszOSwyMCBAQCBuYW1lc3Bh
Y2UgQVBJIHsKIAogY2xhc3MgUGFnZUhhbmRsZSA6IHB1YmxpYyBPYmplY3RJbXBsPE9iamVjdDo6
VHlwZTo6UGFnZUhhbmRsZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4g
Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgc3RhdGljIFJlZjxQYWdlSGFuZGxlPiBjcmVh
dGVBdXRvY29udmVydGluZyh1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBSZWY8UGFnZUhh
bmRsZT4gY3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzdGF0aWMgUmVmPFBh
Z2VIYW5kbGU+IGNyZWF0ZUF1dG9jb252ZXJ0aW5nKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
ICAgICB2aXJ0dWFsIH5QYWdlSGFuZGxlKCk7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgYm9vbCBpc0F1dG9jb252ZXJ0aW5n
KCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dG9jb252ZXJ0aW5nOyB9CiAKICAgICB2b2lkIGVuY29k
ZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpEZWNv
ZGVyJiwgUmVmUHRyPE9iamVjdD4mKTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBQYWdlSGFu
ZGxlKHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBpc0F1dG9jb252ZXJ0aW5nKTsKKyAgICBQYWdlSGFu
ZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBib29sIGlzQXV0b2NvbnZlcnRpbmcpOwogCi0g
ICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9wYWdlSUQ7CiAgICAgY29uc3QgYm9vbCBtX2lzQXV0b2NvbnZlcnRpbmc7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0
UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1vdGVPYmplY3RS
ZWdpc3RyeS5oCmluZGV4IDg2ZjgwNDE3MDlhLi40MDQwODE3ODAwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmgKQEAg
LTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUg
IlByb2Nlc3NUaHJvdHRsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtPYmpDUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTczLDcgKzc0LDcgQEAgcHJpdmF0ZToKICAg
ICBGdW5jdGlvbjx2b2lkKCk+IG1fbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeTsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBQcm9jZXNzVGhyb3R0bGVyOjpCYWNrZ3JvdW5kQWN0aXZpdHlU
b2tlbj4gbV9wZW5kaW5nUmVwbGllczsKICAgICBib29sIG1faXNSZWdpc3RlcmVkQXNNZXNzYWdl
UmVjZWl2ZXIgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fbWVzc2FnZVJlY2VpdmVySUQgeyAw
IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9tZXNzYWdlUmVjZWl2ZXJJRDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCmluZGV4IDU4Y2IxZGQy
YjVlLi43ZTk3ZjE3NmMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgsNyArMjgsNyBAQAog
CiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAotLSAoaWQpX2luaXRX
aXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBhZ2VJRDooV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0gKGlkKV9pbml0V2l0
aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFzaAogewotICAgIHJl
dHVybiBfcGFnZUlEOworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7CiB9CiAKIC0gKEJP
T0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJPT0wpaXNFcXVhbDoo
aWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIHsK
LSAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdlSUQiXTsKKyAgICBb
Y29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpAInBhZ2VJRCJdOwog
fQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAgLTYxLDcgKzYxLDcg
QEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcGFnZUlEID0gW2Nv
ZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJRCA9IG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2NvZGVyIGRlY29kZUlu
dDY0Rm9yS2V5OkAicGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250
ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYS4uNDNlNDFlMjRjZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhh
bmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJv
d3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaApAQCAtMjQsMTEgKzI0LDEyIEBACiAgKi8KIAog
I2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KIAogQGludGVyZmFjZSBXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSAoKQog
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlciA9IF9wYWdlSUQpIHVpbnQ2
NF90IHBhZ2VJRDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9wYWdl
SUQpIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKIAotLSAoaWQpX2luaXRXaXRoUGFn
ZUlEOih1aW50NjRfdClwYWdlSUQ7CistIChpZClfaW5pdFdpdGhQYWdlSUQ6KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKXBhZ2VJRDsKIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4
IGViOGEwYjY2MTdhLi5kNGUxYzI1MDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAt
NjYsNyArNjYsNyBAQCBJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuICptX2Rlc3RpbmF0aW9uSUQ7CisgICAgcmV0dXJuIG1fZGVzdGluYXRpb25JRC0+
dG9VSW50NjQoKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6Y2FuTWFr
ZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgcmVwbHkpCkBAIC04NCw3
ICs4NCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om9wZW5QYXltZW50U2V0
dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpCiAgICAgcGxhdGZvcm1PcGVuUGF5bWVu
dFNldHVwKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpzaG93UGF5
bWVudFVJKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4m
IGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6c2hv
d1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byYg
Y29vcmRpbmF0b3IgPSBhY3RpdmVQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpKQogICAgICAgICBj
b29yZGluYXRvci0+ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
CmluZGV4IGQyMzdlYWIzZGFiLi42ZTRhODVjZjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
Y2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFudElk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1cChj
b25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5OYW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHNob3dQYXltZW50
VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
b3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0
cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzaG93UGF5bWVudFVJKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklELCBjb25z
dCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlu
a0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY29tcGxl
dGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lv
biYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAgICB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5n
Q29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBDbGllbnQmIG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2Rlc3RpbmF0
aW9uSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fZGVzdGluYXRp
b25JRDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90aGlu
ZydzIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggZGQzMTMxMjdiZjQuLjFkZTRjZGRjZTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbgpAQCAtMzAsNyArMzAsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSB7CiAgICAgQ2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoU3RyaW5n
IG1lcmNoYW50SWRlbnRpZmllciwgU3RyaW5nIGRvbWFpbk5hbWUsIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkgLT4gKGJvb2wgY2FuTWFrZVBheW1lbnRzKSBBc3luYwogICAgIE9wZW5QYXltZW50
U2V0dXAoU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllciwgU3RyaW5nIGRvbWFpbk5hbWUpIC0+IChi
b29sIHJlc3VsdCkgQXN5bmMKIAotICAgIFNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRp
b25JRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcgb3JpZ2luYXRpbmdVUkxTdHJp
bmcsIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+IChib29sIHJlc3VsdCkgU3lu
Y2hyb25vdXMKKyAgICBTaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJM
U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQp
IFN5bmNocm9ub3VzCiAgICAgQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oV2ViQ29yZTo6UGF5
bWVudE1lcmNoYW50U2Vzc2lvbiBwYXltZW50TWVyY2hhbnRTZXNzaW9uKQogICAgIENvbXBsZXRl
U2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RV
cGRhdGU+IHVwZGF0ZSkKICAgICBDb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihPcHRp
b25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+IHVwZGF0ZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuY3BwCmluZGV4IDZlYjMzNWYwN2QzLi45ZGViNzZmZjEzMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHVpbnQ2NF90IEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6YWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdlJiYgY2hhbGxlbmdl
CiAgICAgcmV0dXJuIGNoYWxsZW5nZUlEOwogfQogCi1ib29sIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6c2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBjaGFs
bGVuZ2VJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgY29uc3QK
K2Jvb2wgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZShQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBjb25zdAogewogICAgIGlmICghY2FuQ29hbGVzY2VD
aGFsbGVuZ2UoY2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTA4LDcgKzEw
OCw3IEBAIFZlY3Rvcjx1aW50NjRfdD4gQXV0aGVudGljYXRpb25NYW5hZ2VyOjpjb2FsZXNjZUNo
YWxsZW5nZXNNYXRjaGluZyh1aW50NjRfdCBjaGFsCiAgICAgcmV0dXJuIGNoYWxsZW5nZXNUb0Nv
YWxlc2NlOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50
aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocGFnZUlEKTsKICAgICBBU1NF
UlQoZnJhbWVJRCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFn
ZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHUK
IAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5nZUNv
bXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgdWludDY0X3QgZHVt
bXlQYWdlSUQgPSAwOworICAgIFBhZ2VJZGVudGlmaWVyIGR1bW15UGFnZUlEOwogICAgIHVpbnQ2
NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoeyBkdW1teVBhZ2VJ
RCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpIH0p
OwogICAgIAogICAgIC8vIENvYWxlc2NlIGNoYWxsZW5nZXMgaW4gdGhlIHNhbWUgcHJvdGVjdGlv
biBzcGFjZSBhbmQgaW4gdGhlIHNhbWUgcGFnZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKaW5kZXgg
N2ZlMzk5ZTBiN2UuLjg2ZTc0NGMxMDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2MSw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQ
Qzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2b2lkIGNv
bXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQsIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwmJik7CkBA
IC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hhbGxlbmdl
IHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNo
YWxsZW5nZTsKICAgICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxldGlvbkhh
bmRsZXI7CiAgICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwog
CiAgICAgdWludDY0X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdlJiYpOwot
ICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBj
b25zdDsKKyAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gY29hbGVzY2VDaGFs
bGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0NzVkYzIuLjE5MjUzZTJiYWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCkBAIC02Miw2ICs2Miwx
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAg
ICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpNZXNz
YWdlUmVjZWl2ZXImKTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lk
IGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2Vp
dmVyJiByZWNlaXZlcikKKyAgICB7CisgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdl
UmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKKyAgICB9
CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0
SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAgIHsKKyAgICAgICAgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7
CisgICAgfQogCiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Npb25FbmFibGVkKGJvb2wpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgKaW5kZXggNGY3NWZkODA2ZjYu
LjU0ZDQyNzdiODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRD
b250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCkBA
IC0yOSwxMyArMjksMTQgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50SWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KIAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBUZXh0SW5wdXRDb250ZXh0IHsKICAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgYm91bmRpbmdSZWN0OwogCi0gICAgdWludDY0X3Qgd2ViUGFnZUlkZW50
aWZpZXI7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlkZW50aWZpZXI7CiAg
ICAgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50SWRlbnRpZmllcjsKICAgICBX
ZWJDb3JlOjpFbGVtZW50SWRlbnRpZmllciBlbGVtZW50SWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAppbmRleCA5ZGJiMzZh
NDU1My4uZDkwMGExNjczM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVt
PiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
JiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitSZWY8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRlKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkJhY2tGb3J3YXJkTGlz
dEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBwYWdlSUQpKTsKIH0KIAot
V2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2NF90IHBhZ2VJ
RCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZNb3ZlKGJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2xhc3RQcm9jZXNzSWRl
bnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVyKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4IDg3MmVmMTgw
OTVkLi5iYTM0NDgwY2Q1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDYsNyArNDcsNyBAQCBjbGFzcyBT
dXNwZW5kZWRQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0gOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCYWNrRm9yd2FyZExpc3RJdGVt
PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVh
dGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3Rh
dGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5XZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKCk7CiAKICAgICBzdGF0aWMgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSog
aXRlbUZvcklEKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImKTsKQEAg
LTU0LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYgaXRlbUlEKCkgY29uc3QgeyByZXR1cm4gbV9pdGVtU3RhdGUuaWRlbnRp
ZmllcjsgfQogICAgIGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYgaXRlbVN0YXRlKCkg
eyByZXR1cm4gbV9pdGVtU3RhdGU7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICAgICBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciBsYXN0UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2xhc3RQcm9jZXNzSWRl
bnRpZmllcjsgfQogICAgIHZvaWQgc2V0TGFzdFByb2Nlc3NJZGVudGlmaWVyKGNvbnN0IFdlYkNv
cmU6OlByb2Nlc3NJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IG1fbGFzdFByb2Nlc3NJZGVudGlm
aWVyID0gaWRlbnRpZmllcjsgfQpAQCAtODEsMTIgKzgyLDEyIEBAIHB1YmxpYzoKICNlbmRpZgog
CiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0Zvcndh
cmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgZXhwbGljaXQgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZW1vdmVTdXNwZW5kZWRQYWdlRnJvbVByb2Nlc3NQ
b29sKCk7CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUgbV9pdGVtU3RhdGU7Ci0gICAg
dWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7
CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7
CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3VzcGVuZGVkUGFnZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CmluZGV4IGU5ZGE2MGFlZWJlLi42OTk0ODI1ZDA4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAg
dm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdXNlckFnZW50OwogICAgIGVuY29kZXIgPDwgaXRl
bVN0YXRlczsKICAgICBlbmNvZGVyIDw8IHNlc3Npb25JRDsKLSAgICBlbmNvZGVyIDw8IHVzZXJD
b250ZW50Q29udHJvbGxlcklELnRvVUludDY0KCk7CisgICAgZW5jb2RlciA8PCB1c2VyQ29udGVu
dENvbnRyb2xsZXJJRDsKICAgICBlbmNvZGVyIDw8IHZpc2l0ZWRMaW5rVGFibGVJRDsKICAgICBl
bmNvZGVyIDw8IHdlYnNpdGVEYXRhU3RvcmVJRDsKICAgICBlbmNvZGVyIDw8IGNhblJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbDsKQEAgLTE5MywxMSArMTkzLDExIEBAIE9wdGlvbmFsPFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnNlc3Npb25JRCkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4g
dXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBPcHRpb25hbDxVc2VyQ29udGVu
dENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwog
ICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKICAgICBpZiAo
IXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7Ci0gICAgcGFyYW1ldGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJRCA9IG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNlckNv
bnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CisgICAgcGFyYW1ldGVycy51c2VyQ29udGVudENv
bnRyb2xsZXJJRCA9ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogCiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpc2l0ZWRMaW5rVGFibGVJRCkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0zOTIsNyArMzkyLDcgQEAgT3B0aW9uYWw8V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQ
Qzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBwYXJhbWV0ZXJzLmJh
Y2tncm91bmRDb2xvciA9IFdURk1vdmUoKmJhY2tncm91bmRDb2xvcik7CiAKLSAgICBPcHRpb25h
bDxPcHRpb25hbDx1aW50NjRfdD4+IG9sZFBhZ2VJRDsKKyAgICBPcHRpb25hbDxPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4+IG9sZFBhZ2VJRDsKICAgICBkZWNvZGVyID4+IG9sZFBhZ2VJRDsKICAg
ICBpZiAoIW9sZFBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBjMmJl
ODQxNDZiMy4uOTAxMjdiYzMxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGJhY2tncm91bmRD
b2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7CisgICAgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3VwRGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAppbmRleCA5
NjM5ZDAxNWMyZi4uNGQxY2NlYTY1NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VHcm91cERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VH
cm91cERhdGEuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHZvaWQgV2ViUGFnZUdyb3VwRGF0YTo6ZW5j
b2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyIDw8IGlkZW50
aWZpZXI7CiAgICAgZW5jb2RlciA8PCBwYWdlR3JvdXBJRDsKLSAgICBlbmNvZGVyIDw8IHVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXIudG9VSW50NjQoKTsKKyAgICBlbmNvZGVyIDw8IHVz
ZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiB9CiAKIE9wdGlvbmFsPFdlYlBhZ2VHcm91
cERhdGE+IFdlYlBhZ2VHcm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBA
IC00OSwxMiArNDksMTIgQEAgT3B0aW9uYWw8V2ViUGFnZUdyb3VwRGF0YT4gV2ViUGFnZUdyb3Vw
RGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAgICBpZiAoIXBhZ2VHcm91cElE
KQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAotICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIE9wdGlvbmFsPFVzZXJD
b250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAg
IGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKICAgICAKLSAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdU
Rk1vdmUoKnBhZ2VHcm91cElEKSwgbWFrZU9iamVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllclR5cGU+KCp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKSB9
fTsKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnBhZ2VHcm91
cElEKSwgKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgfX07CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNP
YmplY3RHcmFwaC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgu
bW0KaW5kZXggYzY1NDg0ZjU1MTIuLmZlNjZkZTY1OTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KQEAgLTI5OCwxMSArMjk4LDEyIEBAIGJvb2wgT2Jq
Q09iamVjdEdyYXBoOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8aWQ+
JiByZXN1bHQpCiAgICAgfQogCiAgICAgY2FzZSBPYmpDVHlwZTo6V0tCcm93c2luZ0NvbnRleHRI
YW5kbGU6IHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOwotICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHBhZ2VJRCkpCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQ7CisgICAgICAgIGRlY29kZXIgPj4gcGFnZUlEOworICAgICAgICBpZiAoIXBhZ2VJ
RCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXN1bHQgPSBhZG9wdE5T
KFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDpwYWdlSURd
KTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFs
bG9jXSBfaW5pdFdpdGhQYWdlSUQ6KnBhZ2VJRF0pOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCmluZGV4IGVkODYzNTgyMDFi
Li41OTcwMWExMzQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQoV0tQ
YWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVudEJhc2UqCiAgICAgICAgIG1p
bGVzdG9uZXMuYWRkKFdlYkNvcmU6OkRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dCk7CiAK
ICAgICBpZiAobWlsZXN0b25lcykKLSAgICAgICAgd2ViUGFnZVByb3h5LT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVz
KSwgd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7CisgICAgICAgIHdlYlBhZ2VQcm94eS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSk7
CiAKICAgICB3ZWJQYWdlUHJveHktPnNldExvYWRlckNsaWVudChXVEZNb3ZlKGxvYWRlckNsaWVu
dCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAxMDc1NzgxYWYyYy4uMmY5Y2ZlOTQy
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiBTdHJpbmcgQXV0b21hdGlvbkNvbW1hbmRFcnJvcjo6dG9Qcm90b2NvbFN0cmlu
ZygpCiB7CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2Fp
dEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEKICAgICB9
CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2
aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tz
V2l0aFRpbWVvdXQoSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCiB7CiAgICAgSW5zcGVjdG9yOjpF
cnJvclN0cmluZyB0aW1lb3V0RXJyb3IgPSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJST1JfTkFN
RShUaW1lb3V0KTsKICAgICBmb3IgKGF1dG8gaWQgOiBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2Vi
QXV0b21hdGlvblNlc3Npb24uaAppbmRleCA2NWViM2U0NmU1Yi4uZjM5YzA2MWI1NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRt
YXAuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCIKICNpbmNsdWRlICJX
ZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0yMjUsNyArMjI2LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdlKFdlYlBhZ2VQcm94eSYsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3ksIFNlY29uZHMs
IFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+JiYpOwogICAg
IHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5Jiwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25k
cywgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4mJik7Ci0g
ICAgdm9pZCByZXNwb25kVG9QZW5kaW5nUGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91
dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6
Q2FsbGJhY2tCYXNlPj4mKTsKKyAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlv
bkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJl
ZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOwogICAg
IHZvaWQgcmVzcG9uZFRvUGVuZGluZ0ZyYW1lTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0
KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpD
YWxsYmFja0Jhc2U+PiYpOwogICAgIHZvaWQgbG9hZFRpbWVyRmlyZWQoKTsKIApAQCAtMjgwLDIy
ICsyODEsMjIgQEAgcHJpdmF0ZToKICAgICBSZWY8SW5zcGVjdG9yOjpBdXRvbWF0aW9uQmFja2Vu
ZERpc3BhdGNoZXI+IG1fZG9tYWluRGlzcGF0Y2hlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yOjpBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPiBtX2RvbWFpbk5vdGlmaWVyOwog
Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYlBhZ2VIYW5kbGVNYXA7Ci0gICAg
SGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdlYlBhZ2VNYXA7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3RyaW5nPiBtX3dlYlBhZ2VIYW5kbGVNYXA7Cisg
ICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBtX2hhbmRsZVdlYlBh
Z2VNYXA7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fd2ViRnJhbWVIYW5kbGVN
YXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdlYkZyYW1lTWFwOwog
Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29u
dGV4dENhbGxiYWNrc1BlclBhZ2U7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0VhZ2VyTmF2
aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
cjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250
ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9w
ZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwog
ICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVy
OjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRl
eHRDYWxsYmFja3NQZXJGcmFtZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZp
Z2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJGcmFtZTsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
Pj4gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6
Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZTsKICNpZiBF
TkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPHVpbnQ2
NF90LCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1f
cGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFj
a3NQZXJQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9NT1VTRV9JTlRFUkFDVElP
TlMpCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0
aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQ
ZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZv
aWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nTW91c2VFdmVu
dHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsKICNlbmRpZgogCiAgICAgdWludDY0X3QgbV9uZXh0
RXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tJRCB7IDEgfTsKQEAgLTMxOSw3ICszMjAsNyBAQCBw
cml2YXRlOgogICAgIC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlciBBUElzIHRha2UgYSBzZXQg
b2YgaW5wdXQgc291cmNlcy4gV2UgYWxzbyBpbnRlcm4gdGhlc2UKICAgICAvLyBzbyB0aGF0IHBy
ZXZpb3VzIGlucHV0IHNvdXJjZSBzdGF0ZSBpcyB1c2VkIGFzIGluaXRpYWwgc3RhdGUgZm9yIGxh
dGVyIGNvbW1hbmRzLgogICAgIEhhc2hTZXQ8UmVmPFNpbXVsYXRlZElucHV0U291cmNlPj4gbV9p
bnB1dFNvdXJjZXM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERp
c3BhdGNoZXJzQnlQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9J
TlRFUkFDVElPTlMpCiAgICAgLy8gS2VlcCB0cmFjayBvZiBjdXJyZW50bHkgYWN0aXZlIG1vZGlm
aWVycyBhY3Jvc3MgbXVsdGlwbGUga2V5c3Ryb2tlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5kZXggOTg5M2QzOThiNTcuLjRjNmIzZDQy
MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuaApAQCAtNTEsNiArNTEsMTIgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0
PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQ
Qzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmKTsKKyAgICAKKyAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2Jq
ZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9u
PiBzZW5kT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIHJldHVybiBzZW5kKFdURk1vdmUo
bWVzc2FnZSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgc2VuZE9wdGlvbnMpOworICAgIH0K
IAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNvbnN0CiAgICAgewpAQCAtNjcs
NiArNzMsMTggQEAgcHVibGljOgogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZl
cmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6
Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVj
ZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNl
aXZlcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZl
ck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAg
IHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCkpOworICAgIH0KIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICBM
YXVuY2hpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXggZjA1ZDc5YzBkMDEuLjY3MDY1
OTc2ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC01MjcsOTQgKzUyNyw5NCBAQCB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJ
RFJlc3BvbnNlKHVpbnQ2NF90IGNvbgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
UGxheShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
UGF1c2UoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRleHRJZCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY3J1YmJpbmcodWludDY0X3Qg
Y29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNj
cnViYmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElk
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwg
ZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xlcmFuY2VCZWZvcmUsIGRvdWJsZSB0b2xlcmFuY2VBZnRl
cikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFm
dGVyKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJZCwgdGltZSwgdG9sZXJhbmNl
QmVmb3JlLCB0b2xlcmFuY2VBZnRlcikpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkZhc3RTZWVr
KGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1l
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5n
Rm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5nRm9yd2FyZChjb250ZXh0SWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRleHRJZCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVu
ZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElk
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RBdWRpb01l
ZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdEF1ZGlvTWVk
aWFPcHRpb24oY29udGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwg
dWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBpY3R1cmVJ
blBpY3R1cmUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoY29udGV4dElkKSk7CiB9
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVNdXRlZCh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11
dGVkKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
c2V0TXV0ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIG11dGVkKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElk
LCBtdXRlZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElkLCBtdXRlZCkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0Vm9sdW1lKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0SWQsIHZvbHVtZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4odWludDY0X3Qg
Y29udGV4dElkLCBib29sIHZhbHVlKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0UGxheWluZ09uU2Vj
b25kU2NyZWVuKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRQbGF5aW5n
T25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVtZW50SUQoKQogewogICAgIGlm
IChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVx
dWVzdChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkhhbmRs
ZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7
CiB9CiAKIFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkubW0KaW5kZXggNmJhNDc5ZTA2MGEuLmM4ZDY1YzM2MmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5Lm1tCkBAIC02MjAsNDMgKzYyMCw0MyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIAogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50
NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJl
cXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhKSk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5saW5lUmVjdChjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0KGNvbnRleHRJZCkpOwog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFZpZGVvQ29udGVu
dExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0
SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvQ29udGVu
dExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVudExheWVyKGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkKSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1cEZ1bGxzY3JlZW4o
dWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVs
bHNjcmVlbihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsc2NyZWVu
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7
CiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRp
ZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNj
cmVlbihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwogfQog
CkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRp
ZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBbQ0FUcmFuc2FjdGlv
biBmbHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmll
d107CiAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0cik7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRDbGVhbnVwRnVsbHNjcmVl
bihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJ
ZCkpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQoY29udGV4
dElkKTsKQEAgLTY4OCwyNSArNjg4LDI1IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlCiAgICAg
ICAgIG1hY2hfcG9ydF9uYW1lX3QgZmVuY2VQb3J0ID0gZmVuY2VTZW5kUmlnaHQubGVha1NlbmRS
aWdodCgpOwogI2VuZGlmCiAKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoY29udGV4dElkLCBmcmFt
ZSwgSVBDOjpBdHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVuY2VkKGNvbnRleHRJZCwgZnJh
bWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSkp
OwogICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVv
TGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oY29udGV4dElk
LCAodW5zaWduZWQpZ3Jhdml0eSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckdyYXZpdHlF
bnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBt
b2RlKQogewogICAgIG1fcGFnZS0+dWlDbGllbnQoKS5oYXNWaWRlb0luUGljdHVyZUluUGljdHVy
ZURpZENoYW5nZShtX3BhZ2UsIG1vZGUgJiBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2Rl
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2RlKSk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTWF5UmV0
dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKQogewogICAgIGJvb2wgaXNWaWV3VmlzaWJs
ZSA9IG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRl
eHRJZCwgaXNWaWV3VmlzaWJsZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRv
SW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXgg
ZjkxNDY4MTFjNTUuLmZjM2VmYmUyNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjAyLDcgKzIwMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0TG9jYXRpb24oY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVy
Zm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50KSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwQXRMb2NhdGlvbihw
b2ludCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9ybURpY3Rpb25hcnlMb29rdXBP
ZkN1cnJlbnRTZWxlY3Rpb24oKQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpCiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50
U2VsZWN0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJm
b3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigpKTsKIH0KICAgICAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZKQpAQCAtMjY2LDE3ICsyNjYsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlc3VtZVNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlJikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNwZWFraW5nRXJyb3JPY2N1cnJlZChXZWJDb3Jl
OjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCiB7Ci0gICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNwZWFraW5nRXJyb3JPY2N1cnJlZCgpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3BlYWtpbmdFcnJvck9jY3VycmVkKCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Ym91bmRhcnlFdmVudE9jY3VycmVkKFdlYkNvcmU6OlBs
YXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiwgV2ViQ29yZTo6U3BlZWNoQm91bmRhcnkg
c3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkKIHsKLSAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Qm91bmRhcnlFdmVudE9jY3VycmVkKHNwZWVjaEJvdW5kYXJ5
ID09IFdlYkNvcmU6OlNwZWVjaEJvdW5kYXJ5OjpTcGVlY2hXb3JkQm91bmRhcnksIGNoYXJJbmRl
eCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCb3VuZGFyeUV2ZW50
T2NjdXJyZWQoc3BlZWNoQm91bmRhcnkgPT0gV2ViQ29yZTo6U3BlZWNoQm91bmRhcnk6OlNwZWVj
aFdvcmRCb3VuZGFyeSwgY2hhckluZGV4KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2b2lj
ZXNEaWRDaGFuZ2UoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpW
b2ljZXNEaWRDaGFuZ2UoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlZvaWNlc0RpZENoYW5nZSgpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoU1BFRUNIX1NZTlRIRVNJ
UykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRl
eCAyYWE3NDhmMDA0Zi4uMDhhM2QzMDhkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xOTk3LDEzICsxOTk3LDEzIEBAIGZsb2F0IFdlYlZp
ZXdJbXBsOjppbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHZvaWQgV2ViVmll
d0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0
ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIsIHRoaXMsIG1fcGFn
ZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93
RGlkT3JkZXJPblNjcmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1w
bCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAl
bGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJ
bnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lz
QWN0aXZlIH0pOwogfQogCkBAIC0yMDcxLDcgKzIwNzEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp3
aW5kb3dEaWRDaGFuZ2VMYXllckhvc3RpbmcoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dE
aWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJW
aWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSIsIHRo
aXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0lt
cGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUiLCB0aGlzLCBt
X3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURp
ZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCkBAIC0yMjM0
LDE5ICsyMjM0LDE5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRDaGFuZ2VCYWNraW5nUHJv
cGVydGllcygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRIaWRlKCkKIHsKLSAgICBMT0co
QWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRIaWRlIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkSGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCku
dG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdE
aWRVbmhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBh
Z2UgJWxsdSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZFVuaGlk
ZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9
CiAKIHZvaWQgV2ViVmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlkQ2hhbmdlKCkKIHsKLSAgICBMT0co
QWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNwYWNlRGlk
Q2hhbmdlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUs
ICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSBhY3RpdmVTcGFjZURpZENoYW5nZSIsIHRoaXMs
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggYjViNGUwYWQy
MjEuLmVjZjVkYTBhOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3
aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIERyYXdpbmdBcmVhUHJveHk6OkRyYXdpbmdB
cmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByCiAg
ICAgLCBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMs
ICZEcmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCkKICNl
bmRpZgogewotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5n
QXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
LCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdp
bmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7
CiB9CiAKIERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBwcm9j
ZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAKIGJvb2wgRHJhd2luZ0Fy
ZWFQcm94eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBzY3Jv
bGxEZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggY2E3
Njg3ZjZiNTIuLmI5MzAxMjg1OTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZQogICAgICAg
ICByZXR1cm47CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9u
RGVjaXNpb24oZ2VvbG9jYXRpb25JRCwgYWxsb3dlZCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1p
c3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBhbGxvd2VkKSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShhbGxvd2VkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmluZGV4IDYyYjA3MjlmOGE1Li4wZjQxMDIwZWE3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3RvclRhcmdldFByb3h5LmNw
cApAQCAtNTAsMTkgKzUwLDE5IEBAIEluc3BlY3RvclRhcmdldFByb3h5OjpJbnNwZWN0b3JUYXJn
ZXRQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdGFyCiB2b2lkIEluc3Bl
Y3RvclRhcmdldFByb3h5Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBjaGFu
bmVsKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9w
YWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25uZWN0SW5zcGVjdG9yKGlk
ZW50aWZpZXIoKSwgY2hhbm5lbC5jb25uZWN0aW9uVHlwZSgpKSwgbV9wYWdlLnBhZ2VJRCgpKTsK
KyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbm5lY3RJbnNwZWN0b3Io
aWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkpKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCYp
CiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3BhZ2Uu
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRl
bnRpZmllcigpKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OnNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9wYWdlLmhhc1J1bm5pbmdQcm9jZXNzKCkp
Ci0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZE1l
c3NhZ2VUb1RhcmdldEJhY2tlbmQoaWRlbnRpZmllcigpLCBtZXNzYWdlKSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbmRNZXNzYWdl
VG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM0NDNiMzg1ZmFjLi4yZDk5NjZlM2M4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0
dGEKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdl
YkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3Qg
Y2hhbGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0
X3QgY2hhbGxlbmdlSUQpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChh
dXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbV9wcm9jZXNzUG9vbC5zZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChwYWdlSUQpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5j
aGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGlj
TWVzc2FnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBs
ZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uo
cGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1c2UgYnkg
dGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkgYmUgZ29u
ZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC0zODIsNyArMzgyLDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWUKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZSht
ZXNzYWdlLCBkZXNjcmlwdGlvbiwgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQz
Ml90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5
IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdv
bmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzkzLDcgKzM5Myw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhSZXN1bHQobWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgc2hvdWxkU2FtcGxlKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUg
dmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJv
eHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNr
IGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFn
ZSBtYXkgYmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC03MzYs
NyArNzM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRHcmFuZGZhdGhlcmVkKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXMKICAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRHcmFuZGZhdGhlcmVkKHNlc3Npb25JRCwg
cmVzb3VyY2VEb21haW4sIGlzR3JhbmRmYXRoZXJlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbmZpcm0odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25m
aXJtKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojpub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
RmluaXNoZWQodW5zaWduZWQKICAgICBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0
aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUobWVzc2FnZUJvZHkp
LnB0cigpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb21taXR0ZWRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbW1pdHRlZENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMjBhNzk5OGM0ZGMu
LjJiZWM2OGZkODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCArODEsNiBAQCBwdWJsaWM6CiAgICAg
dXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAg
ICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdl
SUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBleHBs
aWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBAIC0xMzEsNyArMTI5
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYpOwot
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJRCwgRnJhbWVJRCwgY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJt
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRp
c3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGlt
ZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGJvb2wg
ZGVidWdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9u
SUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFp
biYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5h
dmlnYXRlZFRvRG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYs
IGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5n
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
ZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdl
IGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZv
aWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRl
RGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJ
RCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1
ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwor
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGxvZ1Rl
c3RpbmdFdmVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVudCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGYuLjIyZmZmZDE5ODgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAt
PiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50
aWZpZXIpCiAKLSAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQorICAgIERpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWlu
dDY0X3QgY2hhbGxlbmdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQogICAgIERp
ZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC0zNSw5ICszNSw5IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCiAKICAgICAj
IERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZwotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAgTG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmlu
ZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1
aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJs
ZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6
U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dEaWFnbm9zdGljTWVzc2FnZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3Jp
cHRpb24sIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAg
IExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3Vs
dCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAgTG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2ln
bmVkIHNpZ25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCiAgICAgTG9nR2xvYmFsRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoU3Ry
aW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBz
aWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxk
U2FtcGxlKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTQ2LDcg
KzQ2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7
CiAgICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCkKICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5p
c2hlZCgpCiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVk
KHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVu
dFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW5zKQotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1
YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikg
LT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNj
ZXNzQ29uZmlybShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNj
ZXNzKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJs
ZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJz
aXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRj
aE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+
IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5z
V2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVO
VF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBmODc2MWIxZjNmNC4uM2YyODczMmFiNWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNy
CiB7CiAgICAgYXV0byByZXF1ZXN0ID0gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q6OmNy
ZWF0ZShbdGhpcywgbm90aWZpY2F0aW9uSUQsIHBhZ2UgPSBtYWtlUmVmKG1fcGFnZSldKGJvb2wg
YWxsb3dlZCkgewogICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0cy50YWtlKG5vdGlmaWNhdGlvbklE
KTsKLSAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJl
Y2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93
ZWQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90aWZpY2F0aW9u
SUQsIGFsbG93ZWQpKTsKICAgICB9KTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQobm90aWZp
Y2F0aW9uSUQsIHJlcXVlc3QucHRyKCkpOwogICAgIHJldHVybiByZXF1ZXN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZhZTFmM2ZjYTg4Li4yYWFmZjFl
YzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTcs
NyArOTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdl
UHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAgIHVpbnQ2NF90IGdsb2Jh
bE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwogICAgIGF1
dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGlj
b25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklE
KTsKLSAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIg
PSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsK
KyAgICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBh
aXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklE
KTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQs
IG5vdGlmaWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRp
b25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRp
b24uY29weVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0
aW9uLmdldCgpKTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwK
ICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90LCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikK
K3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
LCBQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikK
IHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29s
IHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBh
Z2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVp
bnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5k
Tm90aWZpY2F0aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdl
Tm90aWZpY2F0aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBw
YWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250
YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEzICsxNDEsMTMgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNs
ZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50
NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZp
bHRlckZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBh
Z2VJRCgpOworICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CiAKICAg
ICBWZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAgICBnbG9iYWxOb3Rp
ZmljYXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUo
KSk7CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKSwgZW5kID0g
bV9ub3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgdWludDY0
X3Qgd2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAgYXV0byB3ZWJQYWdlSUQgPSBp
dC0+a2V5LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+
a2V5LnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VO
b3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFs
Tm90CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7Cisg
ICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3
ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3
ZWJQYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0
X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkp
CiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFs
dWUuZmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2Vi
UGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7
CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNS4uMTE1NzgxZTQzMzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50Lmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vz
c1Bvb2wqKTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9u
KSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgdWludDY0X3Qg
ZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmlj
YXRpb25JRHMpOworICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9u
KShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRp
b25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9y
PHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgY2xlYXJO
b3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VO
b3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKIAogICAgIC8vIFdl
YkNvbnRleHRTdXBwbGVtZW50CkBAIC04OCw5ICs4OSw5IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICAv
LyBQYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90
aWZpY2F0aW9uIElECi0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpwYWlyPHVpbnQ2NF90LCB1
aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOworICAgIEhhc2hNYXA8dWludDY0X3Qs
IHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+PiBtX2dsb2JhbE5v
dGlmaWNhdGlvbk1hcDsKICAgICAvLyBLZXkgcGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQg
YW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsgdmFsdWUgcGFpciBjb21wcmlz
ZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlmaWNhdGlvbiBvYmplY3QKLSAg
ICBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0
X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hN
YXA8c3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4sIHN0ZDo6cGFp
cjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA0NWExZjBmNWI1Yy4uNTczZWNjYzA5ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5j
cHAKQEAgLTQ3LDYgKzQ3LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwg
Zm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlzLCAjI19f
VkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNoYW5uZWws
IGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihtX3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFByb3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhp
cywgIyNfX1ZBX0FSR1NfXykKIApAQCAtNjEsMTYgKzYzLDE2IEBAIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9j
ZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZv
cmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdl
SUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdl
OiAlcCIsIG1fcGFnZS5wYWdlSUQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdldCgp
KTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlBy
b3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAl
IiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIHBhZ2VJRCgpLnRvVUludDY0KCksIG5hdmln
YXRpb25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKLSAgICBtX3Byb2Nlc3MtPmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZUlE
KCksICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lvbmFsUGFnZVByb3h5KCp0aGlz
KTsKIAogICAgIGlmIChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
OjpTdGF0ZTo6UnVubmluZykKICAgICAgICAgbV9wYWdlLndlYlByb2Nlc3NMaWZldGltZVRyYWNr
ZXIoKS53ZWJQYWdlRW50ZXJpbmdXZWJQcm9jZXNzKG1fcHJvY2Vzcyk7CiAKICAgICBpZiAoJm1f
cHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZtX3BhZ2Uud2Vic2l0ZURhdGFTdG9yZSgp
KQotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUJlZ2luVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKG1fcGFnZS5wYWdlSUQoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkp
OworICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUJlZ2luVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKHBhZ2VJRCgpLCBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKSk7CiAKICAg
ICAvLyBJZiB3ZSBhcmUgcmVhdHRhY2hpbmcgdG8gYSBTdXNwZW5kZWRQYWdlLCB0aGVuIHRoZSBX
ZWJQcm9jZXNzJyBXZWJQYWdlIGFscmVhZHkgZXhpc3RzIGFuZAogICAgIC8vIFdlYlBhZ2VQcm94
eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKCkgd2lsbCBub3QgYmUgY2FsbGVkIHRvIGluaXRpYWxpemUg
bV9tYWluRnJhbWUuIEluIHN1Y2gKQEAgLTk3LDE3ICs5OSwyMiBAQCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KCkKICAgICAgICAgbV9wYWdlLndlYlByb2Nlc3NM
aWZldGltZVRyYWNrZXIoKS53ZWJQYWdlTGVhdmluZ1dlYlByb2Nlc3MobV9wcm9jZXNzKTsKIAog
ICAgIGlmICgmbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkgIT0gJm1fcGFnZS53ZWJzaXRl
RGF0YVN0b3JlKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5wYWdlRW5kVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5wYWdlSUQoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0
YVN0b3JlKCkpOworICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFnZUVuZFVzaW5n
V2Vic2l0ZURhdGFTdG9yZShwYWdlSUQoKSwgbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkp
OwogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKG1fcGFnZS52aXNp
dGVkTGlua1N0b3JlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBwYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
bG9zZSgpLCBwYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5yZW1vdmVWaXNpdGVkTGlua1N0b3Jl
VXNlcihtX3BhZ2UudmlzaXRlZExpbmtTdG9yZSgpLCBwYWdlSUQoKSk7CiAKICAgICBSdW5Mb29w
OjptYWluKCkuZGlzcGF0Y2goW3Byb2Nlc3MgPSBtX3Byb2Nlc3MuY29weVJlZigpXSB7CiAgICAg
ICAgIHByb2Nlc3MtPm1heWJlU2h1dERvd24oKTsKICAgICB9KTsKIH0KIAorUGFnZUlkZW50aWZp
ZXIgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnBhZ2VJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cGFnZS5wYWdlSUQoKTsKK30KKwogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Y29ubmVjdGlv
bldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHsKICAgICBBU1NFUlRfVU5V
U0VEKGNvbm5lY3Rpb24sICZjb25uZWN0aW9uID09IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpKTsK
QEAgLTExNyw3ICsxMjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpjb25uZWN0aW9u
V2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogCiB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRUZXJtaW5hdGU6IHBhZ2VJRCA9
ICUiIFBSSXU2NCwgcGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLnByb3Zpc2lvbmFs
UHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogfQogCkBAIC0xMzIsNyArMTM5LDcgQEAgdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6Y2FuY2VsKCkKICAgICBpZiAobV9wcm92aXNpb25hbExvYWRVUkwu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KFByb2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZSBmb3IgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2VsOiBTaW11
bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIEFTU0VSVChtX21haW5GcmFtZSk7CiAg
ICAgYXV0byBlcnJvciA9IFdlYktpdDo6Y2FuY2VsbGVkRXJyb3IobV9yZXF1ZXN0KTsKICAgICBl
cnJvci5zZXRUeXBlKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7
CkBAIC0xNDUsMjAgKzE1MiwyMCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojppbml0aWFs
aXplV2ViUGFnZSgpCiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBtX3BhZ2UuY3JlYXRpb25QYXJh
bWV0ZXJzKG1fcHJvY2VzcywgKm1fZHJhd2luZ0FyZWEpOwogICAgIHBhcmFtZXRlcnMuaXNQcm9j
ZXNzU3dhcCA9IHRydWU7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpDcmVhdGVXZWJQYWdlKG1fcGFnZS5wYWdlSUQoKSwgcGFyYW1ldGVycyksIDApOwotICAgIG1f
cHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIobV9wYWdlLnZpc2l0ZWRMaW5rU3RvcmUo
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkNyZWF0ZVdlYlBhZ2UocGFnZUlEKCksIHBhcmFtZXRlcnMpLCAwKTsKKyAgICBtX3By
b2Nlc3MtPmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKG1fcGFnZS52aXNpdGVkTGlua1N0b3JlKCks
IHBhZ2VJRCgpKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcs
ICJsb2FkRGF0YTogcGFnZUlEID0gJSIgUFJJdTY0LCBwYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAog
ICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVm
KCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRh
dGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdl
YnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVx
dWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZUlEID0gJSIgUFJJdTY0LCBwYWdlSUQoKS50
b1VJbnQ2NCgpKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCBj
b250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwgb3Zl
cndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHdlIG5lZWQg
dG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVudGlmaWVyIGFzIHdl
IHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQgaXRlbSB0byBoYXBw
ZW4gaW4gdGhlCkBAIC0xNzEsNyArMTc4LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6
bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKIAog
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZUlEID0gJSIg
UFJJdTY0LCBwYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1f
cGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0
ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGl0ZW0u
c3VzcGVuZGVkUGFnZSgpKSB7CkBAIC0xODAsOCArMTg3LDggQEAgdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IFdlYkIKICAgICAgICAgfQogICAgICAgICByZXR1cm4gJml0ZW0gIT0gdGFyZ2V0SXRlbTsKICAg
ICB9KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUJhY2tG
b3J3YXJkTGlzdEZvclJlYXR0YWNoKFdURk1vdmUoaXRlbVN0YXRlcykpLCBtX3BhZ2UucGFnZUlE
KCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3
YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdh
dGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0Nv
bnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSksIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVCYWNr
Rm9yd2FyZExpc3RGb3JSZWF0dGFjaChXVEZNb3ZlKGl0ZW1TdGF0ZXMpKSwgcGFnZUlEKCkpOwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRl
bShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVtLml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5i
YWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVp
bmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSksIHBhZ2VJRCgpKTsKICAgICBt
X3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCkBAIC0xOTYsNyAr
MjAzLDcgQEAgaW5saW5lIGJvb2wgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgT3B0aW9uYWwKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCks
IGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
ZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCwgcGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAgICAgQVNTRVJUKCFtX21haW5G
cmFtZSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZShtX3BhZ2Us
IGZyYW1lSUQpOwpAQCAtMjM0LDcgKzI0MSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWluCiAg
ICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlE
KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQ
Ukl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAg
QVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFs
TG9hZFVSTCA9IHVybDsKIApAQCAtMjU0LDcgKzI2MSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1f
cGFnZS5wYWdlSUQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2
aWdhdGlvbklEID0gJSIgUFJJdTY0LCBwYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBuYXZp
Z2F0aW9uSUQpOwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwog
ICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogCkBAIC0yNzAsOSArMjc3LDkgQEAgdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmkKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2
aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwg
bV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAl
IiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAg
ICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB7IH07Ci0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZUlEKCkp
OwogCiAgICAgbV93YXNDb21taXR0ZWQgPSB0cnVlOwogICAgIG1fcGFnZS5jb21taXRQcm92aXNp
b25hbFBhZ2UoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlwZSwgZnJhbWVIYXNDdXN0b21D
b250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmljYXRlSW5mbywgY29udGFpbnNQ
bHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCB1c2VyRGF0YSk7IC8vIFdp
bGwgZGVsZXRlIHx0aGlzfC4KQEAgLTI5NSw3ICszMDIsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbgogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
RGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCiAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogewog
ICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQpAQCAtMzQxLDcg
KzM0OCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW0o
Y29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZy
YW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlm
aWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwK
ICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBs
eSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5o
CmluZGV4IDY0NTZjMWY5MTZkLi5lMTRiYTg4OWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgorI2luY2x1ZGUgIk1lc3NhZ2VT
ZW5kZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKQEAgLTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgIH5Qcm92aXNpb25hbFBhZ2VQcm94eSgp
OwogCiAgICAgV2ViUGFnZVByb3h5JiBwYWdlKCkgeyByZXR1cm4gbV9wYWdlOyB9CisgICAgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3Q7CiAgICAgV2ViRnJhbWVQcm94eSog
bWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWUuZ2V0KCk7IH0KICAgICBXZWJQ
cm9jZXNzUHJveHkmIHByb2Nlc3MoKSB7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KICAgICBQ
cm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQo
KSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQ7IH0KQEAgLTk0
LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpIGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCi0gICAgICAgIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Um
JiByZXF1ZXN0Qm9keSwKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTEwLDcgKzExMiw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7
CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJk
SXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0Rh
dGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRh
JiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0sp
CiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHku
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCAwNTU5Yzk4NzRiZC4uNWIwMmRkYjI0ODkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0x
MTUsNyArMTE1LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcKICAgICBJT1N1cmZhY2VQb29s
OjpzaGFyZWRQb29sKCkuc2V0UG9vbFNpemUoMCk7CiAjZW5kaWYKIAotICAgIHByb2Nlc3MuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7
CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAq
dGhpcyk7CiAKICAgICBpZiAobV93ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS50aWxlZFNjcm9s
bGluZ0luZGljYXRvclZpc2libGUoKSkKICAgICAgICAgaW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9y
KCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcKIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
KCkKIHsKICAgICBtX2NhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93
bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgIHByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIHByb2Nlc3MoKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKIAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgW21fZGlzcGxheUxpbmtIYW5kbGVyIGludmFsaWRhdGVdOwpAQCAtNDYz
LDcgKzQ2Myw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZv
ckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0CiAgICAgfSgpOwogCiAgICAgYXV0
byBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAgICB3aGlsZSAocHJvY2Vzcygp
LmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExheWVyVHJlZT4obV9pZGVudGlm
aWVyLnRvVUludDY0KCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0IC0gKE1vbm90b25pY1Rp
bWU6Om5vdygpIC0gc3RhcnRUaW1lKSwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0
aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKSB7CisgICAgd2hpbGUgKHByb2Nlc3MoKS5jb25uZWN0
aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU+KG1faWRlbnRpZmllciwgYWN0
aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRp
bWUpLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJy
aXZlcykpIHsKICAgICAgICAgaWYgKGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9PSBBY3Rpdml0eVN0
YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8IGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCA8PSBtX2FjdGl2
aXR5U3RhdGVDaGFuZ2VJRCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXgg
NjY3OWQ0NWJkOTkuLjA4NmFlYjA3OTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQoY29uc3QgU3RyaW5nJiBkZWJ1Z2dhYmxlVHlw
ZSwgY29uc3QgU3RyaW5nJiBiCiAgICAgbV9kZWJ1Z2dhYmxlVHlwZSA9IGRlYnVnZ2FibGVUeXBl
OwogICAgIG1fYmFja2VuZENvbW1hbmRzVVJMID0gYmFja2VuZENvbW1hbmRzVVJMOwogCi0gICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVj
dG9yVUk6OkluaXRpYWxpemUoZGVidWdnYWJsZVR5cGUsIGJhY2tlbmRDb21tYW5kc1VSTCksIG1f
aW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNz
YWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkluaXRpYWxpemUoZGVidWdnYWJsZVR5cGUsIGJh
Y2tlbmRDb21tYW5kc1VSTCkpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+bG9hZFJlcXVlc3QoVVJM
KFVSTCgpLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpKSk7CiB9CiAKQEAg
LTgxLDcgKzgxLDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6c2hvdygpCiAKIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNz
YWdlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6ZnJvbnRlbmRE
aWRDbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDVhMTRmYmU0ZGNkLi5iMmY3NzI5ZmQzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Ojp1
cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUKICAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6VXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmIGNoYWxs
ZW5nZSkKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
UmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYgY2hhbGxlbmdlKQogewogICAgIFVO
VVNFRF9QQVJBTShwYWdlSUQpOwogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAppbmRl
eCA5MzI0NWYwZGM3Ni4uZTkzNjVhZmFjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTQxLDE0ICs0MSwxNCBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29u
c3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7CiAKICAg
ICB2b2lkIHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBPcHRpb25hbDxQQUw6OlNl
c3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbigpIHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KLSAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0K
KyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZpY2VXb3JrZXJQYWdlSUQ7IH0KIAogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNz
UHJveHkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
LCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBt
X3JlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVpbnQ2NF90IG1fc2VydmljZVdvcmtlclBhZ2VJRCB7
IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDEzNDZmY2MwNWM1Li5hZGY1YmJhOGNjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCkBA
IC04OSwxMCArODksMTAgQEAgU3VzcGVuZGVkUGFnZVByb3h5OjpTdXNwZW5kZWRQYWdlUHJveHko
V2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYKICNlbmRpZgogewogICAg
IG1fcHJvY2Vzcy0+aW5jcmVtZW50U3VzcGVuZGVkUGFnZUNvdW50KCk7Ci0gICAgbV9wcm9jZXNz
LT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAgICBtX3Byb2Nlc3MtPmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIHBhZ2VJRCgpLCAqdGhpcyk7CiAKICAgICBtX3N1c3BlbnNpb25UaW1lb3V0VGltZXIuc3Rh
cnRPbmVTaG90KHN1c3BlbnNpb25UaW1lb3V0KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3BhZ2UucGFnZUlEKCkpOworICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SXNTdXNwZW5kZWQodHJ1ZSks
IHBhZ2VJRCgpKTsKIH0KIAogU3VzcGVuZGVkUGFnZVByb3h5Ojp+U3VzcGVuZGVkUGFnZVByb3h5
KCkKQEAgLTExMyw3ICsxMTMsNyBAQCBTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdl
UHJveHkoKQogICAgIGNsb3NlKCk7CiAKICAgICBpZiAobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3Vz
cGVuc2lvblN0YXRlOjpTdXNwZW5kaW5nKQotICAgICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZS5wYWdlSUQoKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZUlE
KCkpOwogCiAgICAgLy8gV2UgY2FsbCBtYXliZVNodXREb3duKCkgYXN5bmNocm9ub3VzbHkgc2lu
Y2UgdGhlIFN1c3BlbmRlZFBhZ2UgaXMgY3VycmVudGx5IGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUg
V2ViUHJvY2Vzc1Bvb2wKICAgICAvLyBhbmQgd2Ugd2FudCB0byBhdm9pZCByZS1lbnRlcmluZyBX
ZWJQcm9jZXNzUG9vbCBtZXRob2RzLgpAQCAtMTIyLDYgKzEyMiwxMSBAQCBTdXNwZW5kZWRQYWdl
UHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQogICAgIH0pOwogfQogCitQYWdlSWRlbnRpZmll
ciBTdXNwZW5kZWRQYWdlUHJveHk6OnBhZ2VJRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFn
ZS5wYWdlSUQoKTsKK30KKwogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OndhaXRVbnRpbFJlYWR5
VG9VbnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdXNwZW5kZWRQYWdlUHJveHkqKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9yZWFkeVRvVW5zdXNwZW5kSGFuZGxl
cikKQEAgLTE0Nyw3ICsxNTIsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6dW5zdXNwZW5k
KCkKICAgICBBU1NFUlQobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpTdXNw
ZW5kZWQpOwogCiAgICAgbV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNwZW5zaW9uU3RhdGU6OlJlc3Vt
ZWQ7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRl
ZChmYWxzZSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChmYWxzZSksIHBhZ2VJRCgpKTsKIH0KIAogdm9pZCBT
dXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkKQEAgLTE1OSw3ICsxNjQsNyBAQCB2b2lkIFN1c3Bl
bmRlZFBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N3YXBwaW5n
LCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkiLCB0aGlzKTsKICAgICBtX2lzQ2xv
c2VkID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3Nl
KCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDbG9zZSgpLCBwYWdlSUQoKSk7CiB9CiAKIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5Ojpw
YWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkKQEAgLTIwMyw3ICsyMDgsNyBA
QCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1JlcXVlc3RUb1N1c3BlbmQoU3Vz
cGVuc2lvblN0YXRlIG5ld1N1c3BlbnNpbwogICAgIG1fc3VzcGVuc2lvblRva2VuID0gbnVsbHB0
cjsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkp
OworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZUlEKCkpOwogCiAgICAgaWYgKG1fc3Vz
cGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6RmFpbGVkVG9TdXNwZW5kKQogICAgICAg
ICBjbG9zZVdpdGhvdXRGbGFzaGluZygpOwpAQCAtMjQ2LDcgKzI1MSw3IEBAIHZvaWQgU3VzcGVu
ZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwKIAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3Ry
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgp
LCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zdXNwZW5z
aW9uU3RhdGUpLCAnKScpOworICAgIHJldHVybiBkZWJ1Z1N0cmluZygiKDB4IiwgaGV4KHJlaW50
ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSksICIgcGFnZSBJRCAiLCBwYWdlSUQoKS50b1VJ
bnQ2NCgpLCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9z
dXNwZW5zaW9uU3RhdGUpLCAnKScpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggMGRhZDA1NGIyNzIuLjY4ZDYzODFiZTI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCisj
aW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIK
ICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVBy
b3h5TWVzc2FnZXMuaCIKQEAgLTQ2LDYgKzQ3LDcgQEAgcHVibGljOgogICAgIH5TdXNwZW5kZWRQ
YWdlUHJveHkoKTsKIAogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZTsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0OwogICAg
IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIHsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQog
ICAgIHVpbnQ2NF90IG1haW5GcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWVJRDsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggOTcxMWIy
MzM3MjEuLmFkNzgxZjZmODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojp+
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQogewogICAgIHdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3hpZXMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKICAgICBmb3IgKGF1dG8qIHBy
b2Nlc3MgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBwcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogICAgICAgICBwcm9j
ZXNzLT5kaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMpOwogICAg
IH0KICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtODUsNyArODUsNyBAQCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KCkKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiB7CiAgICAgaWYgKG1fcHJvY2Vzc2VzLmFkZCgmd2ViUHJvY2Vzc1Byb3h5KS5p
c05ld0VudHJ5KQotICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSwgKnRoaXMpOworICAgICAgICB3ZWJQcm9jZXNz
UHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCksICp0aGlzKTsKIAog
ICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7CiAgICAg
Zm9yIChjb25zdCBhdXRvJiB3b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMpCkBAIC0xMTUsNyAr
MTE1LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2Vz
cyhXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm8KICAgICBBU1NFUlQobV9wcm9jZXNzZXMu
Y29udGFpbnMoJndlYlByb2Nlc3NQcm94eSkpOwogCiAgICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZ3
ZWJQcm9jZXNzUHJveHkpOwotICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2
ZXJOYW1lKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6
VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJD
b250ZW50V29ybGQKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXNlckNvbnRlbnRXb3JsZHMuYWRk
KCZ3b3JsZCk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGZvciAo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250
ZW50V29ybGRzKHsgc3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1l
KCkpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29y
bGRzKHsgc3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0p
LCBpZGVudGlmaWVyKCkpOwogICAgIH0KIH0KIApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQ
STo6VXNlckNvbnRlbnRXCiB7CiAgICAgaWYgKHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdv
cmxkc01lc3NhZ2Uod29ybGQsIG51bWJlck9mVXNlc1RvUmVtb3ZlKSkgewogICAgICAgICBmb3Ig
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2Vy
Q29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIo
KSB9KSwgaWRlbnRpZmllcigpKTsKICAgICB9CiB9CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNl
cyhIYXNoQ291bnRlZFNldDxSZQogICAgIH0KIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBw
cm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9S
ZW1vdmUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3Js
ZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNj
cmlwdCwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5IGltbWVkaWF0ZWx5KQpAQCAtMTc1LDcg
KzE3NSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3Jp
cHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBJCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxl
bWVudHMoKS5hcHBlbmQoJnVzZXJTY3JpcHQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5p
ZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgp
IH0gfSwgaW1tZWRpYXRlbHkpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNj
cmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1
c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgaWRlbnRpZmllcigpKTsK
IH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlw
dChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJT
Y3JpcHQmIHVzZXJTY3JpcHQKICAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9
IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVu
dGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZVVzZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC5p
ZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVu
dHMoKS5yZW1vdmVBbGwoJnVzZXJTY3JpcHQpOwogCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJT
Y3JpcHQmIHVzZXJTY3JpcHQKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAg
Zm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxV
c2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVu
dGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgdXNlclNjcmlwdHNSZW1vdmVkID0gbV91c2VyU2Ny
aXB0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU2NyaXB0PihbJl0oY29uc3Qg
YXV0byYgdXNlclNjcmlwdCkgewogICAgICAgICByZXR1cm4gJnVzZXJTY3JpcHQtPnVzZXJDb250
ZW50V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogICAgICAgICB3b3Js
ZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZp
ZXIoKSk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlk
ZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAK
QEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyUwogICAgIG1fdXNlclN0
eWxlU2hlZXRzLT5lbGVtZW50cygpLmFwcGVuZCgmdXNlclN0eWxlU2hlZXQpOwogCiAgICAgZm9y
IChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU3R5bGVT
aGVldHMoeyB7IHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIo
KSwgdXNlclN0eWxlU2hlZXQudXNlclN0eWxlU2hlZXQoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlm
aWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0
KCkgfSB9KSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0
eWxlU2hlZXQpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXMKICAg
ICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTdHlsZVNoZWV0LnVzZXJD
b250ZW50V29ybGQoKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9w
cm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6UmVtb3ZlVXNlclN0eWxlU2hlZXQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNl
clN0eWxlU2hlZXQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJl
bW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0Lmlk
ZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxl
bWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTdHlsZVNoZWV0KTsKIApAQCAtMjQ4LDcgKzI0OCw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0
KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3Js
ZCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQot
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlk
ZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIHVzZXJTdHlsZVNo
ZWV0c1JlbW92ZWQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8
QVBJOjpVc2VyU3R5bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTdHlsZVNoZWV0KSB7CiAg
ICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29y
bGQ7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKICAgICAgICAgd29ybGRJZGVudGlmaWVycy51
bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIua2V5LT5pZGVudGlmaWVyKCkpOwogCiAgICAg
Zm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZp
ZXIoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCkBA
IC0yOTAsNyArMjkwLDcgQEAgYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRk
VXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2UKICAgICBtX3NjcmlwdE1l
c3NhZ2VIYW5kbGVycy5hZGQoaGFuZGxlci5pZGVudGlmaWVyKCksICZoYW5kbGVyKTsKIAogICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNj
cmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVu
dGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwg
d29ybGQtPmlkZW50aWZpZXIoKSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpKTsK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1l
KGNvbnN0IFN0cmluZwogICAgIGZvciAoYXV0byBpdCA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJz
LmJlZ2luKCksIGVuZCA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+bmFtZSgpID09IG5hbWUgJiYgJml0LT52
YWx1ZS0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZCkgewogICAgICAgICAgICAgZm9yIChX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0LT52YWx1ZS0+aWRl
bnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICAgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVu
dGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgICAgICAgICBtX3NjcmlwdE1lc3NhZ2VI
YW5kbGVycy5yZW1vdmUoaXQpOwogCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25z
dCBTdHJpbmcKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVz
ZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBm
b3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVz
ZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsg
d29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgbnVt
YmVyUmVtb3ZlZCA9IDA7CiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMucmVtb3ZlSWYoWyZd
KGF1dG8mIGVudHJ5KSB7CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OlVzZXJDb250
ZW4KICAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7
CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBGcmFt
ZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZv
RGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhUmVmZXJlbmNlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQ
cm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTM1MSw3ICszNTEsNyBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3Qo
QVBJOjpDb250ZW50UnVsZUxpc3QmIGNvbgogICAgIGF1dG8gcGFpciA9IHN0ZDo6bWFrZV9wYWly
KGNvbnRlbnRSdWxlTGlzdC5uYW1lKCksIGNvbnRlbnRSdWxlTGlzdC5jb21waWxlZFJ1bGVMaXN0
KCkuZGF0YSgpKTsKIAogICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAg
ICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFk
ZENvbnRlbnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7Cisg
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
QWRkQ29udGVudFJ1bGVMaXN0cyh7IHBhaXIgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBmb3Ig
KGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpBZGRDb250ZW50UnVs
ZUxpc3RzIHsgaWRlbnRpZmllcigpLCB7IHBhaXIgfSB9LCAwKTsKQEAgLTM2Miw3ICszNjIsNyBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVDb250ZW50UnVsZUxp
c3QoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIG1fY29udGVudFJ1bGVMaXN0cy5yZW1vdmUobmFt
ZSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250
ZW50UnVsZUxpc3QobmFtZSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250
ZW50UnVsZUxpc3QobmFtZSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nl
c3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QgeyBp
ZGVudGlmaWVyKCksIG5hbWUgfSwgMCk7CkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpCiAgICAg
bV9jb250ZW50UnVsZUxpc3RzLmNsZWFyKCk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50aWZpZXIoKSk7
CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCiAgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpS
ZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpIH0sIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggNjIzMzAxMTE2ZWQuLjBlZDM2YTU5Y2Mz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTExMCw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VI
YW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZGlkUG9zdE1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IEZy
YW1lSW5mb0RhdGEmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKTsKIAogICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJD
b250ZW50V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6
VXNlckNvbnRlbnRXb3JsZCYsIHVuc2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
ODE3MTQzNTFmY2UuLjI1YTRlMjkxMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSArMjQsNSBAQAogICovCiAKIG1l
c3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IHsKLURpZFBvc3RNZXNzYWdl
KHVpbnQ2NF90IHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9E
YXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2Fn
ZSkgV2FudHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRz
Q29ubmVjdGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1l
ZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDFm
MjYwMjkxY2M3Li5iZDM3YmEwYzk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHk6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpCiAgICAgICAgIGlmIChtX2dyYW50
ZWRSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgISpvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q2FwdHVyZURldmljZXNDaGFuZ2VkKCksIG1fcGFnZS5wYWdlSUQoKSk7Cisg
ICAgICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXB0dXJlRGV2aWNlc0NoYW5n
ZWQoKSk7CiAgICAgfTsKIAogICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShtX3BhZ2UubWFpbkZyYW1lKCktPnVybCgpKTsKQEAgLTE4Miw3ICsxODIsNyBA
QCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkZW55UmVxdWVz
dCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgVQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwg
dXNlck1lZGlhSUQsICIsIHJlYXNvbjogIiwgcmVhc29uKTsKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2Vy
TWVkaWFBY2Nlc3NXYXNEZW5pZWQodXNlck1lZGlhSUQsIHRvV2ViQ29yZShyZWFzb24pLCBpbnZh
bGlkQ29uc3RyYWludCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0RlbmllZCh1c2VyTWVkaWFJRCwgdG9XZWJD
b3JlKHJlYXNvbiksIGludmFsaWRDb25zdHJhaW50KSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJB
TShyZWFzb24pOwogICAgIFVOVVNFRF9QQVJBTShpbnZhbGlkQ29uc3RyYWludCk7CkBAIC0yOTYs
MTEgKzI5NiwxMSBAQCBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
OjpncmFudEFjY2Vzcyhjb25zdCBVc2VyTWVkaWFQZXJtaXNzaQogICAgIH0KIAogICAgICsrbV9o
YXNQZW5kaW5nQ2FwdHVyZTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFu
dGVkIHsgcmVxdWVzdC51c2VyTWVkaWFJRCgpLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCksIHJlcXVl
c3QudmlkZW9EZXZpY2UoKSwgcmVxdWVzdC5kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoKSB9LCBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0geworICAgIG1fcGFnZS5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQg
eyByZXF1ZXN0LnVzZXJNZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9EZXZpY2UoKSwgcmVxdWVzdC52
aWRlb0RldmljZSgpLCByZXF1ZXN0LmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCgpIH0sIFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC0tbV9oYXNQZW5kaW5nQ2FwdHVyZTsKLSAg
ICB9LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIH0pOwogICAgIHJldHVybiB0cnVlOwogfQogI2Vu
ZGlmCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJhbWUodWludDYKIAogICAgICAg
ICAgICAgYm9vbCByZXZlYWxJZHNBbmRMYWJlbHMgPSBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNz
IHx8IHdhc0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nlc3MoZnJhbWVJRCwgdXNlck1lZGlhRG9jdW1l
bnRPcmlnaW4uZ2V0KCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4uZ2V0KCkpOwogCi0gICAgICAg
ICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRl
TWVkaWFEZXZpY2VFbnVtZXJhdGlvbiB7IHVzZXJNZWRpYUlELCBjb21wdXRlRmlsdGVyZWREZXZp
Y2VMaXN0KHJldmVhbElkc0FuZExhYmVscywgZGV2aWNlSURIYXNoU2FsdCksIGRldmljZUlESGFz
aFNhbHQsIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MgfSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICAgICAgICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDb21wbGV0ZU1lZGlh
RGV2aWNlRW51bWVyYXRpb24geyB1c2VyTWVkaWFJRCwgY29tcHV0ZUZpbHRlcmVkRGV2aWNlTGlz
dChyZXZlYWxJZHNBbmRMYWJlbHMsIGRldmljZUlESGFzaFNhbHQpLCBkZXZpY2VJREhhc2hTYWx0
LCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIH0pOwogICAgICAgICB9KTsKICAgICB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcApp
bmRleCAyNDgxODJkODA5Mi4uMWU5MWFiYjZlZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcApAQCAtNjYsMTAgKzY2LDEwIEBAIHN0
YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtU2Nyb2xsRXZlbnRSYXRpb0ZvclN3aXBlID0gMC41Owog
c3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlU25hcHNob3RSZW1vdmFsUmVuZGVyVHJlZVNpemVUYXJn
ZXRGcmFjdGlvbiA9IDAuNTsKICNlbmRpZgogCi1zdGF0aWMgSGFzaE1hcDx1aW50NjRfdCwgVmll
d0dlc3R1cmVDb250cm9sbGVyKj4mIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygp
CitzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4m
IHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpCiB7CiAgICAgLy8gVGhlIGtleSBp
biB0aGlzIG1hcCBpcyB0aGUgYXNzb2NpYXRlZCBwYWdlIElELgotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoTWFwPHVpbnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dl
c3R1cmVDb250cm9sbGVyczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxQYWdl
SWRlbnRpZmllciwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJlQ29udHJvbGxl
cnM7CiAgICAgcmV0dXJuIHZpZXdHZXN0dXJlQ29udHJvbGxlcnMuZ2V0KCk7CiB9CiAKQEAgLTEx
Niw3ICsxMTYsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29ubmVjdFRvUHJvY2Vz
cygpCiAgICAgbV9pc0Nvbm5lY3RlZFRvUHJvY2VzcyA9IHRydWU7CiB9CiAKLVZpZXdHZXN0dXJl
Q29udHJvbGxlciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZSh1
aW50NjRfdCBwYWdlSUQsIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6R2VzdHVyZUlEIGdlc3R1cmVJ
RCkKK1ZpZXdHZXN0dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250cm9s
bGVyRm9yR2VzdHVyZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6R2VzdHVyZUlEIGdlc3R1cmVJRCkKIHsKICAgICBhdXRvIGdlc3R1cmVDb250cm9sbGVySXRl
ciA9IHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpLmZpbmQocGFnZUlEKTsKICAg
ICBpZiAoZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID09IHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JB
bGxQYWdlcygpLmVuZCgpKQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250
cm9sbGVyOjpmb3JjZVJlcGFpbnRJZk5lZWRlZCgpCiAKICAgICBtX2hhc091dHN0YW5kaW5nUmVw
YWludFJlcXVlc3QgPSB0cnVlOwogCi0gICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsK
ICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50R2VzdHVyZUlEOwogICAgIG1fd2Vi
UGFnZVByb3h5LmZvcmNlUmVwYWludChWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbcGFnZUlELCBnZXN0
dXJlSURdIChDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGlmIChhdXRvIGdl
c3R1cmVDb250cm9sbGVyID0gY29udHJvbGxlckZvckdlc3R1cmUocGFnZUlELCBnZXN0dXJlSUQp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApp
bmRleCA0MzFjMjc2NmQwOC4uYzE2NzBkM2E5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9y
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTE3NSw3ICsx
NzYsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJp
ZGU7CiAKLSAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyRm9yR2Vz
dHVyZSh1aW50NjRfdCBwYWdlSUQsIEdlc3R1cmVJRCk7CisgICAgc3RhdGljIFZpZXdHZXN0dXJl
Q29udHJvbGxlciogY29udHJvbGxlckZvckdlc3R1cmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IEdlc3R1cmVJRCk7CiAKICAgICBzdGF0aWMgR2VzdHVyZUlEIHRha2VOZXh0R2VzdHVyZUlEKCk7
CiAgICAgdm9pZCB3aWxsQmVnaW5HZXN0dXJlKFZpZXdHZXN0dXJlVHlwZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCmluZGV4IGYyZTdiOTM0MDU3Li45
OTFkYzJmY2ZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9y
ZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OndlYlByb2Nl
c3NEaWRDbG9zZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZQogICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQuCiB9CiAKLXZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRl
ZExpbmtIYXNoRnJvbVBhZ2UodWludDY0X3QgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNoIGxpbmtI
YXNoKQordm9pZCBWaXNpdGVkTGlua1N0b3JlOjphZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFNoYXJlZFN0cmluZ0hhc2ggbGlua0hhc2gpCiB7CiAgICAg
aWYgKGF1dG8qIHdlYlBhZ2VQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQp
KSB7CiAgICAgICAgIGlmICghd2ViUGFnZVByb3h5LT5hZGRzVmlzaXRlZExpbmtzKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggMDZmMjBiYTkxY2Iu
LjAyYjQ5YmFjNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVk
TGlua1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9y
ZS5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRJbnZhbGlkYXRlU2hh
cmVkTWVtb3J5KCkgZmluYWw7CiAgICAgdm9pZCBkaWRVcGRhdGVTaGFyZWRTdHJpbmdIYXNoZXMo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2g+JiBhZGRlZEhhc2hlcywgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2g+JiByZW1vdmVkSGFzaGVzKSBmaW5h
bDsKIAotICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UodWludDY0X3QgcGFnZUlE
LCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoKTsKKyAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFz
aEZyb21QYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdI
YXNoKTsKIAogICAgIHZvaWQgc2VuZFN0b3JlSGFuZGxlVG9Qcm9jZXNzKFdlYlByb2Nlc3NQcm94
eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0
b3JlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9y
ZS5tZXNzYWdlcy5pbgppbmRleCBlNzg2MmUzNjViMC4uMmU2NmM0MjgwOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbgpA
QCAtMjEsNSArMjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBWaXNpdGVkTGlu
a1N0b3JlIHsKLSAgICBBZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGxpbmtIYXNoKQorICAgIEFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgbGlua0hhc2gpCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCmluZGV4IDg3YjBh
ZmMyMGMyLi4wZGJlMGFmYjQzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViRWRpdENvbW1hbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RWRpdENvbW1hbmRQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBXZWJFZGl0Q29tbWFu
ZFByb3h5Ojp1bmFwcGx5KCkKICAgICBpZiAoIW1fcGFnZSB8fCAhbV9wYWdlLT5oYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVbmFwcGx5RWRpdENvbW1hbmQobV9jb21tYW5kSUQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpV
bmFwcGx5RWRpdENvbW1hbmQobV9jb21tYW5kSUQpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNo
TWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAgICAgbV9wYWdlLT5yZWdpc3Rl
ckVkaXRDb21tYW5kKCp0aGlzLCBVbmRvT3JSZWRvOjpSZWRvKTsKIH0KIApAQCAtNjQsNyArNjQs
NyBAQCB2b2lkIFdlYkVkaXRDb21tYW5kUHJveHk6OnJlYXBwbHkoKQogICAgIGlmICghbV9wYWdl
IHx8ICFtX3BhZ2UtPmhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29t
bWFuZChtX2NvbW1hbmRJRCksIG1fcGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlz
cGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJRCksIElQ
Qzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5
KTsKICAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1hbmQoKnRoaXMsIFVuZG9PclJlZG86OlVu
ZG8pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGcmFtZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCmluZGV4
IDVjODUxYjcyNzU1Li5iMDFiMzA1MDUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2Fk
VVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIGlmICghbV9wYWdlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkVVJMSW5G
cmFtZSh1cmwsIG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTEluRnJhbWUodXJsLCBtX2ZyYW1lSUQpKTsKIH0K
IAogdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1l
LCBjb25zdCBVUkwmIGJhc2VVUkwpCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgV2ViRnJhbWVQcm94
eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcm
IE1JTUVUCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhSW5GcmFtZShkYXRhLCBN
SU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWREYXRhSW5GcmFt
ZShkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1lSUQpKTsKIH0K
IAogdm9pZCBXZWJGcmFtZVByb3h5OjpzdG9wTG9hZGluZygpIGNvbnN0CkBAIC0xMDMsNyArMTAz
LDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpzdG9wTG9hZGluZygpIGNvbnN0CiAgICAgaWYgKCFt
X3BhZ2UtPmhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nRnJhbWUobV9m
cmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCkpOwogfQogICAgIAogYm9vbCBXZWJG
cmFtZVByb3h5OjpjYW5Qcm92aWRlU291cmNlKCkgY29uc3QKQEAgLTI2Miw3ICsyNjIsNyBAQCB2
b2lkIFdlYkZyYW1lUHJveHk6OmNvbGxhcHNlU2VsZWN0aW9uKCkKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Q29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKG1fZnJhbWVJRCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29sbGFwc2VTZWxl
Y3Rpb25JbkZyYW1lKG1fZnJhbWVJRCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggOGU5
M2IxZGMyZDAuLmVjNjk4ZTE2MGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcApAQCAtNTYsMTMgKzU2LDEzIEBAIFdl
YkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6On5XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5KCkKIHZv
aWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEVudGVyRnVsbFNjcmVlbigpCiB7CiAg
ICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS53aWxsRW50ZXJGdWxsc2NyZWVuKCZtX3BhZ2Up
OwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFn
ZXI6OldpbGxFbnRlckZ1bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFbnRlckZ1bGxTY3JlZW4o
KSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsU2Ny
ZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLmRpZEVudGVyRnVsbHNjcmVl
bigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVs
bFNjcmVlbigpKTsKIAogICAgIGlmIChtX3BhZ2UuaXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKCkp
IHsKICAgICAgICAgaWYgKFdlYkF1dG9tYXRpb25TZXNzaW9uKiBhdXRvbWF0aW9uU2Vzc2lvbiA9
IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRvbWF0aW9uU2Vzc2lvbigpKQpAQCAt
NzMsMTMgKzczLDEzIEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJG
dWxsU2NyZWVuKCkKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxs
U2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgpLndpbGxFeGl0RnVsbHNj
cmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFeGl0
RnVsbFNjcmVlbigpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpkaWRF
eGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS5kaWRFeGl0
RnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbFNjcmVlbigpLCBtX3BhZ2UucGFnZUlE
KCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6RGlk
RXhpdEZ1bGxTY3JlZW4oKSk7CiAgICAgCiAgICAgaWYgKG1fcGFnZS5pc0NvbnRyb2xsZWRCeUF1
dG9tYXRpb24oKSkgewogICAgICAgICBpZiAoV2ViQXV0b21hdGlvblNlc3Npb24qIGF1dG9tYXRp
b25TZXNzaW9uID0gbV9wYWdlLnByb2Nlc3MoKS5wcm9jZXNzUG9vbCgpLmF1dG9tYXRpb25TZXNz
aW9uKCkpCkBAIC04OSwxMiArODksMTIgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
OjpkaWRFeGl0RnVsbFNjcmVlbigpCiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6
c2V0QW5pbWF0aW5nRnVsbFNjcmVlbihib29sIGFuaW1hdGluZykKIHsKLSAgICBtX3BhZ2UucHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRBbmltYXRpbmdG
dWxsU2NyZWVuKGFuaW1hdGluZyksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRBbmltYXRpbmdGdWxsU2NyZWVuKGFu
aW1hdGluZykpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RF
eGl0RnVsbFNjcmVlbigpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2NyZWVuKCksIG1fcGFnZS5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpS
ZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6c3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtleWJvYXJkLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTA4LDI3ICsxMDgsMjcg
QEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzdXBwb3J0c0Z1bGxTY3JlZW4oYm9v
bCB3aXRoS2V5Ym9hcmQsIENvbXBsZXRpb24KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclBy
b3h5OjpzYXZlU2Nyb2xsUG9zaXRpb24oKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNhdmVTY3JvbGxQb3NpdGlvbigpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFu
YWdlcjo6U2F2ZVNjcm9sbFBvc2l0aW9uKCkpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHk6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVzdG9yZVNjcm9sbFBvc2l0
aW9uKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSk7CiB9CiAKIHZvaWQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbkluc2V0cyhjb25zdCBXZWJDb3Jl
OjpGbG9hdEJveEV4dGVudCYgaW5zZXRzKQogewotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5JbnNldHMoaW5zZXRz
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNj
cmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5JbnNldHMoaW5zZXRzKSk7CiB9CiAKIHZvaWQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbkF1dG9IaWRlRHVyYXRpb24oU2Vj
b25kcyBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQXV0b0hpZGVEdXJhdGlvbihkdXJhdGlv
biksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxT
Y3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQXV0b0hpZGVEdXJhdGlvbihkdXJhdGlvbikpOwog
fQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNldEZ1bGxzY3JlZW5Db250cm9s
c0hpZGRlbihib29sIGhpZGRlbikKIHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQ29udHJvbHNIaWRkZW4oaGlk
ZGVuKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVs
bFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihoaWRkZW4pKTsKIH0K
IAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjbG9zZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggMTJiYjI2MWQwN2MuLmZl
OTBjY2M4OWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0
b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJv
eHkuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBpZiAoIW1faW5zcGVj
dG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNzYWdlVG9Gcm9udGVuZCht
ZXNzYWdlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0b3JQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1l
c3NhZ2UpKTsKIH0KIAogLy8gUHVibGljIEFQSXMKQEAgLTEyNyw3ICsxMjcsNyBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5Ojpjb25uZWN0KCkKICAgICBjcmVhdGVGcm9udGVuZFBhZ2UoKTsKIAog
ICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
ckludGVycnVwdERpc3BhdGNoZXI6Ok5vdGlmeU5lZWREZWJ1Z2dlckJyZWFrKCksIDApOwotICAg
IG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6
U2hvdygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvdygpKTsKIH0KIAogdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2hvdygpCkBAIC0xNjEsNyArMTYxLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQ
cm94eTo6Y2xvc2UoKQogICAgIGlmICghbV9pbnNwZWN0ZWRQYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OkNsb3NlKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpDbG9zZSgpKTsKIAogICAgIGNs
b3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCk7CiB9CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6dXBkYXRlRm9yTmV3UGFnZVByb2Nlc3MoV2ViUGFnZVByb3h5KiBp
bnNwZWN0ZWRQYWdlKQogICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwogCiAgICAgaWYgKG1faW5zcGVj
dG9yUGFnZSkKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OlVwZGF0ZUNvbm5lY3Rpb24oKSwgbV9pbnNwZWN0b3JQYWdlLT5w
YWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6OlVwZGF0ZUNvbm5lY3Rpb24oKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50
aWZpZXIpCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0RnJv
bnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmkKICAgICBp
ZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0ZWRQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRGcm9udGVuZENv
bm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0
RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFdl
Ykluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgpCiAKICAgICBjcmVhdGVGcm9udGVuZFBhZ2Uo
KTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dDb25zb2xl
KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93UmVzb3VyY2VzKCkKQEAgLTIy
Nyw3ICsyMjcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93UmVzb3VyY2VzKCkKIAog
ICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCksIG1faW5zcGVj
dGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6
V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclBy
b3h5OjpzaG93VGltZWxpbmVzKCkKQEAgLTIzNyw3ICsyMzcsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjpzaG93VGltZWxpbmVzKCkKIAogICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCi0g
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTaG93VGltZWxpbmVzKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5z
cGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93VGltZWxpbmVzKCkp
OwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFpblJlc291cmNlRm9yRnJhbWUo
V2ViRnJhbWVQcm94eSogZnJhbWUpCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lKQog
CiAgICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFt
ZShmcmFtZS0+ZnJhbWVJRCgpKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9p
bnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dNYWluUmVzb3Vy
Y2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJv
eHk6OmF0dGFjaEJvdHRvbSgpCkBAIC0yNzgsMTkgKzI3OCwxOSBAQCB2b2lkIFdlYkluc3BlY3Rv
clByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKICAgICBpZiAobV9pc1Zpc2libGUp
CiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNldEluc3BlY3RvclN0YXJ0c0F0
dGFjaGVkKHRydWUpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwgbV9pbnNwZWN0ZWRQYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNldEF0dGFjaGVkKHRydWUpKTsKIAogICAgIHN3aXRjaCAobV9hdHRhY2htZW50U2lkZSkg
ewogICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKLSAgICAgICAgbV9pbnNwZWN0b3JQ
YWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90
dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZEJvdHRvbSgpKTsKICAg
ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKLSAgICAgICAg
bV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6
OkF0dGFjaGVkUmlnaHQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1f
aW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmln
aHQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBdHRhY2htZW50U2lkZTo6TGVmdDoK
LSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0
YWNoZWRMZWZ0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTMwNyw4ICszMDcsOCBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogICAgIGlmIChtX2lzVmlzaWJsZSkK
ICAgICAgICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0SW5zcGVjdG9yU3RhcnRzQXR0
YWNoZWQoZmFsc2UpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSksIG1faW5zcGVjdGVkUGFnZS0+
cGFnZUlEKCkpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpEZXRhY2hlZCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0
YWNoZWQoZmFsc2UpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpEZXRhY2hlZCgpKTsKIAogICAgIHBsYXRmb3JtRGV0YWNoKCk7CiB9CkBAIC0z
NDEsOSArMzQxLDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dG9nZ2xlUGFnZVByb2ZpbGlu
ZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2lzUHJvZmlsaW5nUGFnZSkKLSAgICAg
ICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAg
ICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BQYWdl
UHJvZmlsaW5nKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydFBhZ2VQcm9maWxpbmcoKSwgbV9p
bnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydFBhZ2VQcm9maWxpbmcoKSk7CiAKICAgICAvLyBG
SVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24gc3RhdGUgY2hhbmdlcy4KICAg
ICBtX2lzUHJvZmlsaW5nUGFnZSA9ICFtX2lzUHJvZmlsaW5nUGFnZTsKQEAgLTM1NiwxMCArMzU2
LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZUVsZW1lbnRTZWxlY3Rpb24oKQog
CiAgICAgaWYgKG1fZWxlbWVudFNlbGVjdGlvbkFjdGl2ZSkgewogICAgICAgICBtX2lnbm9yZUVs
ZW1lbnRTZWxlY3Rpb25DaGFuZ2UgPSB0cnVlOwotICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0b3BFbGVtZW50U2VsZWN0aW9u
KCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcEVsZW1lbnRTZWxlY3Rpb24oKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgY29ubmVjdCgpOwotICAgICAgICBtX2luc3BlY3RlZFBhZ2Ut
PnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0RWxlbWVudFNlbGVj
dGlvbigpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0RWxlbWVudFNlbGVjdGlvbigp
KTsKICAgICB9CiB9CiAKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRl
cwogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6RXN0
YWJsaXNoQ29ubmVjdGlvbihtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpLCBtX3VuZGVyVGVzdCwg
aW5zcGVjdGlvbkxldmVsKCkpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2lu
c3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpFc3RhYmxpc2hDb25u
ZWN0aW9uKG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5kZXJUZXN0LCBpbnNwZWN0aW9u
TGV2ZWwoKSkpOwogCiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlRnJvbnRlbmQpOwogICAgIG1faXNB
Y3RpdmVGcm9udGVuZCA9IHRydWU7CkBAIC00MjMsMjYgKzQyMywyNiBAQCB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwgYm9v
bCB1bmRlclRlcwogICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91bGRPcGVuQXR0YWNoZWQoKTsK
ICAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0PEF0dGFjaG1lbnRTaWRlPihp
bnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRhY2htZW50U2lkZSgpKTsKIAot
ICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
cjo6U2V0QXR0YWNoZWQobV9pc0F0dGFjaGVkKSk7CiAKICAgICAgICAgaWYgKG1faXNBdHRhY2hl
ZCkgewogICAgICAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRTaWRlKSB7CiAgICAgICAgICAg
ICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206Ci0gICAgICAgICAgICAgICAgbV9pbnNwZWN0
b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVk
Qm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1f
aW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkQm90
dG9tKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEF0dGFj
aG1lbnRTaWRlOjpSaWdodDoKLSAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRSaWdodCgpLCBtX2lu
c3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBtX2luc3BlY3RvclBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZFJpZ2h0KCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpMZWZ0
OgotICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZExlZnQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRMZWZ0KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1faW5zcGVjdG9yUGFn
ZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hlZCgpLCBt
X2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVkKCkpOwogCi0gICAgICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpT
ZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OlNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9jYW5BdHRhY2gpKTsKICAgICB9CiAKICAg
ICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwoKSwgbV91bmRlclRlc3QgPyBX
ZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yVGVzdFBhZ2VVUkwoKSA6IFdlYkluc3BlY3RvclBy
b3h5OjppbnNwZWN0b3JQYWdlVVJMKCkpKTsKQEAgLTQ1OCw3ICs0NTgsNyBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpvcGVuKCkKIAogICAgIFNldEZvclNjb3BlPGJvb2w+IGlzT3BlbmluZyht
X2lzT3BlbmluZywgdHJ1ZSk7CiAgICAgbV9pc1Zpc2libGUgPSB0cnVlOwotICAgIG1faW5zcGVj
dG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRJc1Zp
c2libGUobV9pc1Zpc2libGUpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2lu
c3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRJc1Zpc2libGUo
bV9pc1Zpc2libGUpKTsKIAogICAgIGlmIChtX2lzQXR0YWNoZWQpCiAgICAgICAgIHBsYXRmb3Jt
QXR0YWNoKCk7CkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y2xv
c2VGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogCiAgICAgdW50cmFja0luc3BlY3RvclBhZ2UobV9p
bnNwZWN0b3JQYWdlKTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRJc1Zpc2libGUobV9pc1Zpc2libGUpLCBtX2luc3Bl
Y3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpTZXRJc1Zpc2libGUobV9pc1Zpc2libGUpKTsKICAgICBtX2luc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOwogCiAgICAgaWYgKG1faXNBY3RpdmVGcm9udGVuZCkgewpAQCAtNTQ5LDcgKzU0OSw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoYm9v
bCBhdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2luc3BlY3RvclBhZ2Ug
JiYgIW1fdW5kZXJUZXN0KQotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1VuYXZhaWxhYmxlKCFtX2NhbkF0
dGFjaCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUo
IW1fY2FuQXR0YWNoKSk7CiAKICAgICBwbGF0Zm9ybUF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQo
bV9jYW5BdHRhY2gpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
aW5kZXggNjU2YzhkY2M1OWMuLmRmNzRjNTY0Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4MSwxMiArMzgxLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojpmb3JNb3N0VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc2VsZWN0ZWRQYWdlKTsKIH0KIAotUmVmPFdl
YlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwg
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdl
UHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYgY29uZmlndXJhdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQYWdlUHJv
eHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7
CiB9CiAKLVdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQs
IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdl
Q29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJv
eHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3Vy
YXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQobWFrZVdlYWtQdHIocGFnZUNsaWVudCkpCiAgICAg
LCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKICAgICAsIG1fbmF2aWdh
dGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKSkKQEAgLTQz
NSw3ICs0MzUsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdl
Q2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogI2VuZGlmCiAgICAgLCBtX3Jl
c2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQ
cm94eTo6cmVzZXRSZWNlbnRDcmFzaENvdW50KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb25zdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKIAogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5kcmF3c0JhY2tncm91bmQo
KSkKICAgICAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQp
OwpAQCAtNDg5LDcgKzQ4OSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGll
bnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAKIFdlYlBhZ2VQ
cm94eTo6fldlYlBhZ2VQcm94eSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MtPndlYlBhZ2UobV9wYWdlSUQpICE9IHRoaXMpOwog
I2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTYxMyw3ICs2MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlDbGllbnQ+JiYgdWlDbGllbnQp
CiAgICAgbV91aUNsaWVudCA9IFdURk1vdmUodWlDbGllbnQpOwogCiAgICAgaWYgKGhhc1J1bm5p
bmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0Q2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlDbGllbnQtPmNhblJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbCgpKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRDYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwobV91aUNsaWVudC0+
Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkpKTsKIAogICAgIHNldENhblJ1bk1vZGFs
KG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkpOwogICAgIHNldE5lZWRzRm9udEF0dHJpYnV0ZXMo
bV91aUNsaWVudC0+bmVlZHNGb250QXR0cmlidXRlcygpKTsKQEAgLTYzMCw3ICs2MzAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SWNvbkxvYWRpbmdDbGllbnQ+JgogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGllbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoaGFzQ2xpZW50KSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6
OkZpbmRDbGllbnQ+JiYgZmluZENsaWVudCkKQEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFi
bGVEb21haW4pCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBBU1NFUlQoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1
bmNoUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
IAogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpF
bmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3Bh
Z2VJRCk7CkBAIC03NjMsNyArNzYzLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJy
ZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFn
ZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgYXV0byBzdXNwZW5kZWRQYWdl
ID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3Mu
Y29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAKLSAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAi
V2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHBy
b2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKSwgc3Vz
cGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CisgICAg
TE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1
c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMi
IFBSSXU2NCwgcGFnZUlEKCkudG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmlu
ZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0t
Pml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CiAKICAgICAvLyBJZiB0aGUgY2xpZW50IGZvcmNl
ZCBhIHN3YXAgdGhlbiBpdCBtYXkgbm90IGJlIHdlYi1jb21wYXRpYmxlIHRvIGtlZXAgdGhlIHBy
ZXZpb3VzIHBhZ2UgYmVjYXVzZSBvdGhlciB3aW5kb3dzIG1heSBoYXZlIGFuIG9wZW5lciBsaW5r
IHRvIGl0LiBXZSB0aHVzIGNsb3NlIGl0IGFzIHNvb24gYXMgd2UKICAgICAvLyBjYW4gZG8gc28g
d2l0aG91dCBmbGFzaGluZy4KQEAgLTc4MSw3ICs3ODEsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6
c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24s
IE9wdAogdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiBwcm9jZXNzLCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3
aW5nQXJlYSwgUmVmUHRyPFdlYkZyYW1lUHJveHk+JiYgbWFpbkZyYW1lKQogewogICAgIEFTU0VS
VCghbV9pc0Nsb3NlZCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3dh
cFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAic3dhcFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIG1fcHJvY2VzcyA9IFdURk1vdmUocHJvY2Vzcyk7CiAgICAgbV93ZWJzaXRl
RGF0YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CkBAIC04NzMsMTAgKzg3
MywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAK
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJl
bG9hZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJv
Y2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2UgaXMgY2xv
c2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAg
ICAKQEAgLTg4NSwxNCArODg1LDE0IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQ
cm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAgICAgbGF1bmNoUHJvY2VzcyhyZWdpc3Ry
YWJsZURvbWFpbik7CiAKICAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nl
c3NGb3JSZWxvYWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQp
OworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNz
Rm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBhdXRvIG5h
dmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlUmVsb2FkTmF2aWdhdGlvbigpOwog
CiAgICAgLy8gV2UgYWxsb3cgc3RhbGUgY29udGVudCB3aGVuIHJlbG9hZGluZyBhIFdlYlByb2Nl
c3MgdGhhdCdzIGJlZW4ga2lsbGVkIG9yIGNyYXNoZWQuCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRp
b25JRCgpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKS0+aXRlbUlEKCksIEZyYW1l
TG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
OjpObywgV1RGOjpudWxsb3B0KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCksIG1fYmFj
a0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwgRnJhbWVMb2FkVHlwZTo6SW5k
ZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6Ok5vLCBXVEY6Om51
bGxvcHQpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwog
CiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC05MDAsMTAgKzkwMCwxMCBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogCiBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NXaXRoSXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJ
dGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQp
IHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vz
c1dpdGhJdGVtOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogcGFn
ZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtOTE1LDcgKzkxNSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmln
YXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJk
TGlzdEl0CiAKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRl
QmFja0ZvcndhcmROYXZpZ2F0aW9uKGl0ZW0sIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQpOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24t
Pm5hdmlnYXRpb25JRCgpLCBpdGVtLml0ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFj
a0ZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJ
dGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBpdGVtLml0ZW1JRCgpLCBGcmFtZUxvYWRU
eXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6Tm8s
IFdURjo6bnVsbG9wdCkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0
YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY2xvc2U6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsK
IApAQCAtMTAwOSw3ICsxMDA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKIAogICAg
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNwZW5kZWRQYWdlc0ZvclBhZ2Uo
KnRoaXMpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CiAgICAg
bV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2lu
Z0RhdGFTdG9yZTo6WWVzKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsK
ICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVudDxXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9ucyh0aGlzKTsKQEAgLTEwMzEsMTQgKzEw
MzEsMTQgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnRyeUNsb3NlKCkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAidHJ5Q2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeUNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOwogCiAgICAgLy8gQ2xvc2Ugd2l0aG91dCBkZWxheSBpZiB0aGUgcHJvY2VzcyBh
bGxvd3MgaXQuIE91ciBnb2FsIGlzIHRvIHRlcm1pbmF0ZQogICAgIC8vIHRoZSBwcm9jZXNzLCBz
byB3ZSBjaGVjayBhIHBlci1wcm9jZXNzIHN0YXR1cyBiaXQuCiAgICAgaWYgKG1fcHJvY2Vzcy0+
aXNTdWRkZW5UZXJtaW5hdGlvbkVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRyeUNsb3NlKCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9zZSgpKTsKICAgICBtX3Byb2Nl
c3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogICAgIHJldHVybiBmYWxzZTsKIH0K
QEAgLTEwNzcsNyArMTA3Nyw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94
eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKG1f
aXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC51cmwoKSB9KTsKQEAg
LTEwOTEsNyArMTA5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZp
Z2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAgQVNTRVJU
KCFtX2lzQ2xvc2VkKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2Fk
U3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMTEyMCwxMCArMTEyMCwxMCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2NlcwogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6Omxv
YWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJj
ZURpcmVjdG9yeVVSTFN0cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTMyLDcgKzExMzIsNyBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiAgICAgVVJMIGZpbGVVUkwgPSBVUkwoVVJMKCks
IGZpbGVVUkxTdHJpbmcpOwogICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5v
dCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTQy
LDcgKzExNDIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGVsc2UgewogICAgICAg
ICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxT
dHJpbmcpOwogICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkp
IHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxl
OiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBV
UkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTY0LDcgKzExNjQsNyBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMo
bG9hZFBhcmFtZXRlcnMpOwogCiAgICAgbV9wcm9jZXNzLT5hc3N1bWVSZWFkQWNjZXNzVG9CYXNl
VVJMKCp0aGlzLCByZXNvdXJjZURpcmVjdG9yeVVSTCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1ldGVycykp
OwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICBy
ZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTExNzIsMTAgKzExNzIsMTAgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJp
bmcsIGNvbnMKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0
YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWREYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlm
IChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC0xMTg5LDcgKzExODksNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5n
TG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2aWdh
dGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwog
CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTIxNSwxMyArMTIxNSwxMyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRN
TChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVuY29k
aW5nLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkQWx0ZXJuYXRlSFRNTDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSk7CiAKICAgICAvLyBXaGVuIHRoZSBVSVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nl
c3Mgb2YgaGFuZGxpbmcgYSBmYWlsaW5nIHByb3Zpc2lvbmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0
IHRvCiAgICAgLy8gc3RhcnQgYSBzZWNvbmQgYWx0ZXJuYXRpdmUgSFRNTCBsb2FkIGFzIHRoaXMg
d2lsbCBwcmV2ZW50IHRoZSBwYWdlIGxvYWQgc3RhdGUgZnJvbSBiZWluZwogICAgIC8vIGhhbmRs
ZWQgcHJvcGVybHkuCiAgICAgaWYgKG1faXNDbG9zZWQgfHwgbV9pc0xvYWRpbmdBbHRlcm5hdGVI
VE1MU3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCkgewotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQg
KG9yIG90aGVyKTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNsb3NlZCAob3Igb3Ro
ZXIpOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMjUyLDE2ICsxMjUyLDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJu
YXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTCiAKICAg
ICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwoKnRoaXMsIGJhc2VVUkwpOwog
ICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVSTCgqdGhpcywgdW5yZWFjaGFi
bGVVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFsdGVy
bmF0ZUhUTUwobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUwobG9hZFBhcmFtZXRlcnMpKTsKICAgICBtX3Byb2Nl
c3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBjbG9zZWQ6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjc5LDE2ICsxMjc5
LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiB3
ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAgICAgbG9hZFBhcmFtZXRlcnMudXNlckRh
dGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0
YSkuZ2V0KCkpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMp
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2Fk
UGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2Fk
RGF0YShsb2FkUGFyYW1ldGVycykpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1l
cigpLnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1l
bnRQb2ludCwgSW50UG9pbnQgc2NyZWVuUG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmln
YXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2Ug
aXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2Ug
aXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMjk4LDIwICsxMjk4LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZp
Z2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVn
aXN0cmFibGVEb21haW4geyBVUkwoVVJMKCksIHVybFN0cmluZykgfSk7CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrKHVybFN0cmluZywgZG9jdW1lbnRQb2ludCwgc2NyZWVuUG9pbnQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxh
dGVkQ2xpY2sodXJsU3RyaW5nLCBkb2N1bWVudFBvaW50LCBzY3JlZW5Qb2ludCkpOwogICAgIG1f
cHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzdG9wTG9hZGluZygpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAic3RvcExvYWRpbmc6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENs
aWNrOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U3RvcExvYWRpbmcoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlN0b3BMb2FkaW5nKCkpOwogICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkgewogICAg
ICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+Y2FuY2VsKCk7CiAgICAgICAgIG1fcHJvdmlzaW9uYWxQ
YWdlID0gbnVsbHB0cjsKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
dG9wTG9hZGluZygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVs
b2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiB7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZWxvYWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJv
eEV4dGVuc2lvbkhhbmRsZTsKIApAQCAtMTM0Niw3ICsxMzQ2LDcgQEAgUmVmUHRyPEFQSTo6TmF2
aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9w
dGlvbj4gb3AKICAgICBpZiAob3B0aW9ucy5jb250YWlucyhXZWJDb3JlOjpSZWxvYWRPcHRpb246
OkRpc2FibGVDb250ZW50QmxvY2tlcnMpKQogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRVc2VyQ29u
dGVudEV4dGVuc2lvbnNFbmFibGVkKGZhbHNlKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBvcHRpb25z
LnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBvcHRp
b25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsKICAgICBtX3Byb2Nlc3MtPnJl
c3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBA
IC0xMzk4LDcgKzEzOTgsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0Zv
cndhcmRMaXN0SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBmcmFtZUxvYWRUeXBlKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImdv
VG9CYWNrRm9yd2FyZEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgTE9H
KExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgZ29Ub0JhY2tGb3J3YXJkSXRlbSB0byBpdGVtIFVS
TCAlcyIsIHRoaXMsIGl0ZW0udXJsKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCkBAIC0xNDEyLDcgKzE0MTIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbQogICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCktPml0ZW1Jc0lu
U2FtZURvY3VtZW50KGl0ZW0pKQogICAgICAgICBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3Rh
dGUtPmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbihpdGVtLCBtX2JhY2tGb3J3YXJkTGlzdC0+
Y3VycmVudEl0ZW0oKSwgZnJhbWVMb2FkVHlwZSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbiA/IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS5pdGVtSUQoKSwgZnJhbWVMb2FkVHlwZSwgU2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlv
biA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS5pdGVtSUQoKSwgZnJhbWVM
b2FkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSk7
CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCkuc3RhcnQoKTsKIAogICAgIHJl
dHVybiBuYXZpZ2F0aW9uOwpAQCAtMTQyMCwxNCArMTQyMCwxNCBAQCBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRM
aXN0SXRlbQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xs
UG9zaXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHBh
Z2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5v
dCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VHJ5UmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYWRkZWQsIFZl
Y3RvcjxSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4+JiYgcmVtb3ZlZCkKQEAgLTE0ODksNyAr
MTQ4OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb250cm9sbGVkQnlBdXRvbWF0aW9uKGJv
b2wgY29udHJvbGxlZCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29udHJv
bGxlZEJ5QXV0b21hdGlvbihjb250cm9sbGVkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24oY29udHJvbGxlZCkpOwogICAg
IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zZW5kVG9OZXR3b3JraW5nUHJvY2VzcyhNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24obV93
ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgbV9jb250cm9sbGVkQnlBdXRvbWF0aW9uKSk7
CiB9CiAKQEAgLTE1MTQsNyArMTUxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJbmRpY2F0
aW5nKGJvb2wgaW5kaWNhdGluZykKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
SW5kaWNhdGluZyhpbmRpY2F0aW5nKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldEluZGljYXRpbmcoaW5kaWNhdGluZykpOwogfQogCiBib29sIFdlYlBhZ2VQcm94
eTo6YWxsb3dzUmVtb3RlSW5zcGVjdGlvbigpIGNvbnN0CkBAIC0xNTUwLDcgKzE1NTAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJJbnNwZWN0b3JUYXJnZXRzKCkKIAogdm9pZCBXZWJQYWdl
UHJveHk6OmNyZWF0ZUluc3BlY3RvclRhcmdldHMoKQogewotICAgIFN0cmluZyBwYWdlVGFyZ2V0
SWQgPSBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZUlEKTsKKyAgICBTdHJpbmcgcGFnZVRhcmdl
dElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBtX2lu
c3BlY3RvckNvbnRyb2xsZXItPmNyZWF0ZUluc3BlY3RvclRhcmdldChwYWdlVGFyZ2V0SWQsIElu
c3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZTo6UGFnZSk7CiB9CiAKQEAgLTE1NjEsNyArMTU2
MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5kQ29sb3IoY29uc3QgT3B0aW9u
YWw8Q29sb3I+JiBjb2xvcikKIAogICAgIG1fYmFja2dyb3VuZENvbG9yID0gY29sb3I7CiAgICAg
aWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSwgbV9wYWdlSUQpOworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNldChmbG9hdCBjb250ZW50SW5z
ZXQpCkBAIC0xNTc3LDkgKzE1NzcsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VG9wQ29udGVu
dEluc2V0KGZsb2F0IGNvbnRlbnRJbnNldCkKICAgICBNYWNoU2VuZFJpZ2h0IGZlbmNlID0gbV9k
cmF3aW5nQXJlYS0+Y3JlYXRlRmVuY2UoKTsKIAogICAgIGF1dG8gZmVuY2VBdHRhY2htZW50ID0g
SVBDOjpBdHRhY2htZW50KGZlbmNlLmxlYWtTZW5kUmlnaHQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZF
X1NFTkQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VG9wQ29u
dGVudEluc2V0RmVuY2VkKGNvbnRlbnRJbnNldCwgZmVuY2VBdHRhY2htZW50KSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldEZlbmNlZChj
b250ZW50SW5zZXQsIGZlbmNlQXR0YWNobWVudCkpOwogI2Vsc2UKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNldChjb250ZW50SW5zZXQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VG9wQ29udGVudEluc2V0
KGNvbnRlbnRJbnNldCkpOwogI2VuZGlmCiB9CiAKQEAgLTE1OTEsNyArMTU5MSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRVbmRlcmxheUNvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICBt
X3VuZGVybGF5Q29sb3IgPSBjb2xvcjsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVuZGVybGF5Q29s
b3IoY29sb3IpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFVuZGVybGF5Q29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxs
U3RhcnRMaXZlUmVzaXplKCkKQEAgLTE2MDAsMTQgKzE2MDAsMTQgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2xv
c2VPdmVybGF5ZWRWaWV3cygpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Vmlld1dpbGxTdGFydExpdmVSZXNpemUoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6dmlld1dpbGxFbmRMaXZlUmVzaXplKCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxFbmRMaXZlUmVzaXplKCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBSZWdpb24mIHJlZ2lvbikKQEAg
LTE3MDEsNyArMTcwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2aWV3RGlkRW50ZXJXaW5kb3co
KQogICAgIExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9kZSA9IHBhZ2VDbGllbnQoKS52
aWV3TGF5ZXJIb3N0aW5nTW9kZSgpOwogICAgIGlmIChtX2xheWVySG9zdGluZ01vZGUgIT0gbGF5
ZXJIb3N0aW5nTW9kZSkgewogICAgICAgICBtX2xheWVySG9zdGluZ01vZGUgPSBsYXllckhvc3Rp
bmdNb2RlOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExh
eWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSksIG1fcGFnZUlEKTsKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3RpbmdNb2Rl
KSk7CiAgICAgfQogfQogCkBAIC0xNzUwLDcgKzE3NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCkKICAgICBhdXRvIGFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hyb25vdXNSZXBseSA/IHRha2VO
ZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUlEKCkgOiBzdGF0aWNfY2FzdDxBY3Rpdml0eVN0YXRlQ2hh
bmdlSUQ+KEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMpOwogCiAgICAgaWYgKGNoYW5n
ZWQgfHwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEICE9IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hy
b25vdXMgfHwgIW1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuaXNFbXB0eSgpKQot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFjdGl2aXR5U3Rh
dGUobV9hY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIG1fbmV4dEFjdGl2aXR5
U3RhdGVDaGFuZ2VDYWxsYmFja3MpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRl
Q2hhbmdlSUQsIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpKTsKIAogICAgIG1f
bmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuY2xlYXIoKTsKIApAQCAtMTg1Myw3ICsx
ODUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxheWVySG9zdGluZ01vZGVEaWRDaGFuZ2UoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBtX2xheWVySG9zdGluZ01vZGUgPSBsYXllckhvc3RpbmdN
b2RlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0
aW5nTW9kZShsYXllckhvc3RpbmdNb2RlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlT
dGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCkKQEAgLTE4OTUsMjEgKzE4OTUsMjEg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyhib29sIGZvcndhcmQsIGJvb2wg
aXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnMKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluaXRpYWxGb2N1cyhmb3J3YXJkLCBpc0tleWJvYXJk
RXZlbnRWYWxpZCwga2V5Ym9hcmRFdmVudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMoZm9yd2FyZCwgaXNLZXlib2Fy
ZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmNsZWFyU2VsZWN0aW9uKCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNsZWFyU2VsZWN0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDbGVhclNlbGVjdGlvbigpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVT
ZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKQogewogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZVNlbGVjdGlvbklu
Rm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbGlk
YXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFN0cmluZyYsIGJvb2wsIGludDMyX3QsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pCkBAIC0xOTIwLDcgKzE5MjAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIFdURjo6RnVuY3Rpb248
dm9pZAogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29tbWFuZChjb21tYW5kTmFtZSwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5jcmVhc2VMaXN0TGV2ZWwoKQpA
QCAtMTkyOCw3ICsxOTI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmluY3JlYXNlTGlzdExldmVs
KCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5jcmVhc2VMaXN0TGV2ZWwoKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkluY3JlYXNlTGlzdExldmVs
KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjcmVhc2VMaXN0TGV2ZWwoKQpAQCAtMTkz
Niw3ICsxOTM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY3JlYXNlTGlzdExldmVsKCkKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGVjcmVhc2VMaXN0TGV2ZWwoKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRlY3JlYXNlTGlzdExldmVsKCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlTGlzdFR5cGUoKQpAQCAtMTk0NCw3ICsxOTQ0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUxpc3RUeXBlKCkKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlTGlzdFR5cGUoKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUxpc3RUeXBlKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24p
CkBAIC0xOTUyLDcgKzE5NTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QmFzZVdyaXRpbmdE
aXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEJhc2VXcml0aW5nRGlyZWN0aW9uKGRpcmVjdGlvbiksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYXNlV3JpdGluZ0RpcmVjdGlvbihk
aXJlY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUZvbnRBdHRyaWJ1dGVz
QWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpCkBAIC0xOTc2LDcgKzE5NzYsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0TmVlZHNGb250QXR0cmlidXRlcyhib29sIG5lZWRzRm9udEF0dHJpYnV0ZXMp
CiAgICAgbV9uZWVkc0ZvbnRBdHRyaWJ1dGVzID0gbmVlZHNGb250QXR0cmlidXRlczsKIAogICAg
IGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldE5lZWRzRm9udEF0dHJpYnV0ZXMobmVlZHNGb250QXR0cmlidXRlcyks
IG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TmVlZHNGb250
QXR0cmlidXRlcyhuZWVkc0ZvbnRBdHRyaWJ1dGVzKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5
OjptYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbigpIGNvbnN0CkBAIC0xOTk5LDcgKzE5OTksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKQogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0
ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NoZWR1bGVGdWxs
RWRpdG9yU3RhdGVVcGRhdGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZWxlY3RBbGwo
KQpAQCAtMjAwNyw3ICsyMDA3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdEFsbCgpCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEFsbCgpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0QWxsKCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5hbWUsIGNv
bnN0IFN0cmluZyYgYXJndW1lbnQsIFdURjo6RnVuY3Rpb248dm9pZChDYWxsYmFja0Jhc2U6OkVy
cm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMjAxOCw3ICsyMDE4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBj
b25zdCBTdHJpbmcmIGEKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhjb21tYW5kTmFtZSwgYXJn
dW1lbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbW1hbmROYW1lLCBhcmd1bWVudCwg
Y2FsbGJhY2tJRCkpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29t
bWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50KQpA
QCAtMjAzMSw3ICsyMDMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFu
ZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGEKICAgICBpZiAoY29t
bWFuZE5hbWUgPT0gaWdub3JlU3BlbGxpbmdDb21tYW5kTmFtZSkKICAgICAgICAgKyttX3BlbmRp
bmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudDsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lLCBhcmd1bWVu
dCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeGVjdXRlRWRpdENv
bW1hbmQoY29tbWFuZE5hbWUsIGFyZ3VtZW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZ1bmN0aW9uPHZvaWQoY29uc3Qg
V2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
aykKQEAgLTIwNDIsNyArMjA0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Rm9udEF0
dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZ1bmN0aW9uPHZvaWQoY29uc3QgV2ViCiAgICAgfQog
CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2sp
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEZvbnRBdHRyaWJ1dGVz
QXRTZWxlY3Rpb25TdGFydChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRlc0F0U2VsZWN0aW9uU3RhcnQoY2FsbGJh
Y2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0dHJpYnV0ZXNDYWxsYmFjayhj
b25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyYgYXR0cmlidXRlcywgQ2FsbGJhY2tJRCBjYWxs
YmFja0lEKQpAQCAtMjA2Myw3ICsyMDYzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEVkaXRh
YmxlKGJvb2wgZWRpdGFibGUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVk
aXRhYmxlKGVkaXRhYmxlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldEVkaXRhYmxlKGVkaXRhYmxlKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
TWVkaWFTdHJlYW1DYXB0dXJlTXV0ZWQoYm9vbCBtdXRlZCkKQEAgLTIxMjgsOSArMjEyOCw5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oRHJhZ0NvbnRy
b2xsZXJBY3Rpb24gYWN0aW9uLCBEcmFnCiAKICAgICBBU1NFUlQoZHJhZ0RhdGEucGxhdGZvcm1E
YXRhKCkpOwogICAgIFdlYlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9uKCpkcmFnRGF0YS5wbGF0Zm9y
bURhdGEoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3Jt
RHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5jbGllbnRQb3NpdGlvbigpLCBk
cmFnRGF0YS5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS5kcmFnZ2luZ1NvdXJjZU9wZXJhdGlv
bk1hc2soKSwgc2VsZWN0aW9uLCBkcmFnRGF0YS5mbGFncygpKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbihhY3Rpb24s
IGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLmdsb2JhbFBvc2l0aW9uKCksIGRy
YWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBzZWxlY3Rpb24sIGRyYWdEYXRh
LmZsYWdzKCkpKTsKICNlbHNlCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YSwgc2FuZGJveEV4
dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxvYWQpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdDb250cm9sbGVyQWN0aW9uKGFj
dGlvbiwgZHJhZ0RhdGEsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUsIHNhbmRib3hFeHRlbnNpb25z
Rm9yVXBsb2FkKSk7CiAjZW5kaWYKIH0KIApAQCAtMjE2MCw3ICsyMTYwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRyYWdFbmRlZChjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIGNvbnN0
IEludFBvaW50JiBnbG8KIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYWdFbmRl
ZChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIG9wZXJhdGlvbiksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQoY2xpZW50UG9zaXRpb24sIGds
b2JhbFBvc2l0aW9uLCBvcGVyYXRpb24pKTsKICAgICBzZXREcmFnQ2FyZXRSZWN0KHsgfSk7CiB9
CiAKQEAgLTIxNzIsMTMgKzIxNzIsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1E
cmFnT3BlcmF0aW9uKGJvb2wgaGFuZGxlZCkKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydERy
YWcoKQogewogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFN0YXJ0RHJhZygpLCBtX3BhZ2VJRCk7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFN0YXJ0RHJhZygpKTsKIH0KICAgICAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkcmFnQ2FuY2VsbGVkKCkKIHsKICAgICBpZiAoaGFzUnVubmluZ1By
b2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFn
Q2FuY2VsbGVkKCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RHJhZ0NhbmNlbGxlZCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZERyYWdnaW5n
KCkKQEAgLTIyNzcsNyArMjI3Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzTmV4dFF1
ZXVlZE1vdXNlRXZlbnQoKQogICAgIH0KIAogICAgIExPRyhNb3VzZUhhbmRsaW5nLCAiVUlQcm9j
ZXNzOiBzZW50IG1vdXNlIGV2ZW50ICVzIChxdWV1ZSBzaXplICV6dSkiLCB3ZWJNb3VzZUV2ZW50
VHlwZVN0cmluZyhldmVudFR5cGUpLCBtX21vdXNlRXZlbnRRdWV1ZS5zaXplKCkpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VFdmVudChldmVudCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3VzZUV2ZW50KGV2ZW50KSk7CiB9
CiAKICNpZiBNRVJHRV9XSEVFTF9FVkVOVFMKQEAgLTI0MzcsNyArMjQzNyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZl
bnQmIGV2ZW50KQogCiAgICAgaWYgKG1fa2V5RXZlbnRRdWV1ZS5zaXplKCkgPT0gMSkgeyAvLyBP
dGhlcndpc2UsIHNlbnQgZnJvbSBEaWRSZWNlaXZlRXZlbnQgbWVzc2FnZSBoYW5kbGVyLgogICAg
ICAgICBMT0coS2V5SGFuZGxpbmcsICIgVUkgcHJvY2Vzczogc2VudCBrZXlFdmVudCBmcm9tIGhh
bmRsZUtleWJvYXJkRXZlbnQiKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpLZXlFdmVudChldmVudCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6S2V5RXZlbnQoZXZlbnQpKTsKICAgICB9CiB9CiAKQEAgLTI2NDMsNyArMjY0
Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50U3luY2hyb25vdXNseShO
YXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKIAogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5l
c3NUaW1lcigpLnN0YXJ0KCk7CiAgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7Ci0gICAgYm9vbCBy
ZXBseVJlY2VpdmVkID0gbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6VG91
Y2hFdmVudFN5bmMoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmM6OlJl
cGx5KGhhbmRsZWQpLCBtX3BhZ2VJRCwgMV9zKTsKKyAgICBib29sIHJlcGx5UmVjZWl2ZWQgPSBz
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmMoZXZlbnQpLCBNZXNzYWdl
czo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmM6OlJlcGx5KGhhbmRsZWQpLCAxX3MpOwogICAgIC8v
IElmIHRoZSBzeW5jIHJlcXVlc3QgaGFzIHRpbWVkIG91dCwgd2Ugc2hvdWxkIGNvbnNpZGVyIHRo
ZSBldmVudCBoYW5kbGVkLiBUaGUgV2ViIFByb2Nlc3MgaXMgdG9vIGJ1c3kgdG8gYW5zd2VyIGFu
eSBxdWVzdGlvbnMsIHNvIHRoZSBkZWZhdWx0IGFjdGlvbiBpcyBhbHNvIGxpa2VseSB0byBoYXZl
IGlzc3Vlcy4KICAgICBpZiAoIXJlcGx5UmVjZWl2ZWQpCiAgICAgICAgIGhhbmRsZWQgPSB0cnVl
OwpAQCAtMjY4Nyw3ICsyNjg3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVRvdWNoRXZl
bnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAgICAgaWYgKCFtX2lzUGFnZVN1
c3BlbmRlZCkgewogICAgICAgICBtX3RvdWNoRXZlbnRRdWV1ZS5hcHBlbmQoZXZlbnQpOwogICAg
ICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwotICAgICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZlbnQpLCBtX3Bh
Z2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNoRXZlbnQoZXZlbnQp
KTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV90b3VjaEV2ZW50UXVldWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICBib29sIGlzRXZlbnRIYW5kbGVkID0gZmFsc2U7CkBAIC0yNzA4LDEy
ICsyNzA4LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2ZW50KGNvbnN0IE5h
dGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogI2lmIEVOQUJMRShQT0lOVEVSX0VWRU5UUykKIHZv
aWQgV2ViUGFnZVByb3h5OjpjYW5jZWxQb2ludGVyKFdlYkNvcmU6OlBvaW50ZXJJRCBwb2ludGVy
SWQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkb2N1bWVudFBvaW50KQogewotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsUG9pbnRlcihwb2ludGVySWQsIGRv
Y3VtZW50UG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2Fu
Y2VsUG9pbnRlcihwb2ludGVySWQsIGRvY3VtZW50UG9pbnQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnRvdWNoV2l0aElkZW50aWZpZXJXYXNSZW1vdmVkKFdlYkNvcmU6OlBvaW50ZXJJRCBw
b2ludGVySWQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUb3Vj
aFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChwb2ludGVySWQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hXaXRoSWRlbnRpZmllcldhc1JlbW92ZWQocG9pbnRl
cklkKSk7CiB9CiAjZW5kaWYKIApAQCAtMjcyMiw3ICsyNzIyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNjcm9sbEJ5KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5
IGdyYW51bGEKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2Nyb2xsQnkoZGlyZWN0
aW9uLCBncmFudWxhcml0eSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTY3JvbGxCeShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpjZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCkKQEAgLTI3MzAsNyArMjczMCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCkKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgp
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2VudGVyU2VsZWN0aW9u
SW5WaXNpYmxlQXJlYSgpKTsKIH0KIAogY2xhc3MgV2ViUGFnZVByb3h5OjpQb2xpY3lEZWNpc2lv
blNlbmRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFBvbGljeURlY2lzaW9uU2VuZGVyPiB7CkBAIC0y
ODczLDcgKzI4NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRl
bnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwg
T3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNv
bnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBBU1NFUlQobV9wcm92aXNp
b25hbFBhZ2UpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbW1pdFBy
b3Zpc2lvbmFsUGFnZTogcHJldmlvdXNQSUQgPSAlaSwgbmV3UElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Byb3Zpc2lvbmFsUGFn
ZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IHByZXZpb3Vz
UElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWluRnJhbWUgPyBtYWtlT3B0aW9u
YWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7CiAKQEAgLTI4OTYsNyAr
Mjg5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKICAgICAvLyBUaGVyZSBpcyBubyB3
YXkgd2UnbGwgYmUgYWJsZSB0byByZXR1cm4gdG8gdGhlIHBhZ2UgaW4gdGhlIHByZXZpb3VzIHBh
Z2Ugc28gY2xvc2UgaXQuCiAgICAgaWYgKCFkaWRTdXNwZW5kUHJldmlvdXNQYWdlKQotICAgICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsb3NlKCksIHBhZ2VJRCgpKTsK
KyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2UoKSk7CiAKICAgICBzd2FwVG9X
ZWJQcm9jZXNzKG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCksIG1fcHJvdmlzaW9uYWxQYWdl
LT50YWtlRHJhd2luZ0FyZWEoKSwgbV9wcm92aXNpb25hbFBhZ2UtPm1haW5GcmFtZSgpKTsKIApA
QCAtMjkxMyw3ICsyOTEzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFs
UGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24m
IG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVu
ZGVkUGFnZVByb3h5LCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIG5ld1Byb2Nlc3MsIFByb2Nlc3NT
d2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgT3B0aW9u
YWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNz
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIG5ld1Byb2Nlc3NQSUQgPSAlaSwg
aGFzU3VzcGVuZGVkUGFnZSA9ICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCwgbmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdl
UHJveHkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnRpbnVlTmF2
aWdhdGlvbkluTmV3UHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBu
ZXdQcm9jZXNzUElEID0gJWksIGhhc1N1c3BlbmRlZFBhZ2UgPSAlaSIsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgbmV3UHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlUHJveHkpOwogICAgIExPRyhMb2FkaW5nLCAi
Q29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycgaW4gYSBuZXcgd2ViIHByb2Nl
c3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uLmxvZ2dpbmdTdHJpbmco
KSk7CiAKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKQEAgLTI5ODgsNyArMjk4OCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5nJiYgdXNlckFnZW50KQogCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VyQWdlbnQobV91c2VyQWdlbnQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlckFnZW50KG1fdXNl
ckFnZW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUpCkBAIC0zMDI1LDcgKzMwMjUs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKQogCiAgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3VtZUFjdGl2
ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKQEAgLTMwMzUsNyArMzAzNSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KQogCiAgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSB0cnVlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN1c3BlbmRBY3RpdmVE
T01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OnN1cHBv
cnRzVGV4dEVuY29kaW5nKCkgY29uc3QKQEAgLTMwNTIsNyArMzA1Miw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IFN0cmluZyYgZW5jb2RpbmdO
YW1lKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXN0b21UZXh0RW5jb2Rp
bmdOYW1lKGVuY29kaW5nTmFtZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nTmFtZSkpOwogfQogCiBTZXNz
aW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxib29sIChX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiYgZmlsdGVyKSBjb25zdApAQCAtMzA3NCw3ICszMDc0
LDcgQEAgU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVuY3Rp
b248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2lv
blN0YXRlLCBib29sIG5hdmlnYXRlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fc2Vzc2lvblJlc3RvcmF0aW9u
UmVuZGVyVHJlZVNpemUgPSAwOwogICAgIG1faGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQgPSBm
YWxzZTsKQEAgLTMwODMsNyArMzA4Myw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoU2Vzc2lvblN0YXRlIHNlc3NpCiAKICAg
ICBpZiAoaGFzQmFja0ZvcndhcmRMaXN0KSB7CiAgICAgICAgIG1fYmFja0ZvcndhcmRMaXN0LT5y
ZXN0b3JlRnJvbVN0YXRlKFdURk1vdmUoc2Vzc2lvblN0YXRlLmJhY2tGb3J3YXJkTGlzdFN0YXRl
KSk7Ci0gICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vz
c2lvbihtX2JhY2tGb3J3YXJkTGlzdC0+aXRlbVN0YXRlcygpKSwgbV9wYWdlSUQpOworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vzc2lvbihtX2JhY2tGb3J3YXJkTGlz
dC0+aXRlbVN0YXRlcygpKSk7CiAKICAgICAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxv
YWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuc2V0Q2FuR29C
YWNrKHRyYW5zYWN0aW9uLCBtX2JhY2tGb3J3YXJkTGlzdC0+YmFja0l0ZW0oKSk7CkBAIC0zMTMx
LDcgKzMxMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4dFpvb21GYWN0b3IoZG91Ymxl
IHpvb21GYWN0b3IpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRab29t
RmFjdG9yKG1fdGV4dFpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAorICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFRleHRab29tRmFjdG9yKG1fdGV4dFpvb21GYWN0b3IpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFBhZ2Vab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQpAQCAt
MzE0Niw3ICszMTQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2Vab29tRmFjdG9yKGRv
dWJsZSB6b29tRmFjdG9yKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdl
Wm9vbUZhY3RvcihtX3BhZ2Vab29tRmFjdG9yKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRQYWdlWm9vbUZhY3RvcihtX3BhZ2Vab29tRmFjdG9yKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKGRvdWJsZSBwYWdl
Wm9vbUZhY3RvciwgZG91YmxlIHRleHRab29tRmFjdG9yKQpAQCAtMzE2Miw3ICszMTYyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoZG91YmxlIHBhZ2Va
b29tRmFjdG9yLCBkb3VibGUgdGV4dFoKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhtX3BhZ2Vab29tRmFjdG9yLCBtX3RleHRab29tRmFj
dG9yKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlQW5k
VGV4dFpvb21GYWN0b3JzKG1fcGFnZVpvb21GYWN0b3IsIG1fdGV4dFpvb21GYWN0b3IpKTsKIH0K
IAogZG91YmxlIFdlYlBhZ2VQcm94eTo6cGFnZVpvb21GYWN0b3IoKSBjb25zdApAQCAtMzE5Miw3
ICszMTkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFnZShkb3VibGUgc2NhbGUsIGNv
bnN0IEludFBvaW50JiBvcmlnaW4pCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNj
YWxlUGFnZShzY2FsZSwgb3JpZ2luKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNjYWxlUGFnZShzY2FsZSwgb3JpZ2luKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzY2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhkb3VibGUgc2NhbGUsIGNvbnN0IEludFBvaW50
JiBjZW50ZXJJblZpZXdDb29yZGluYXRlcykKQEAgLTMyMDQsNyArMzIwNCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpzY2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhkb3VibGUgc2NhbGUsIGNvbnN0
IEludFBvaW50JiBjZW50CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFn
ZUluVmlld0Nvb3JkaW5hdGVzKHNjYWxlLCBjZW50ZXJJblZpZXdDb29yZGluYXRlcyksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2FsZVBhZ2VJblZpZXdDb29yZGlu
YXRlcyhzY2FsZSwgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OnNjYWxlVmlldyhkb3VibGUgc2NhbGUpCkBAIC0zMjE2LDcgKzMyMTYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6c2NhbGVWaWV3KGRvdWJsZSBzY2FsZSkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2NhbGVWaWV3KHNjYWxlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNjYWxlVmlldyhzY2FsZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVGYWN0b3IpCkBAIC0z
MjM1LDcgKzMyMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93U2NyZWVuRGlkQ2hhbmdl
KFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6V2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dTY3JlZW5EaWRDaGFuZ2UoZGlzcGxheUlEKSk7
CiB9CiAKIGZsb2F0IFdlYlBhZ2VQcm94eTo6ZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdApAQCAt
MzI3NCw3ICszMjc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFjY2Vzc2liaWxpdHlTZXR0aW5n
c0RpZENoYW5nZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2Vzc2liaWxp
dHlTZXR0aW5nc0RpZENoYW5nZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBmaXhlZCkKQEAgLTMyOTEsNyArMzI5MSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VGaXhlZExheW91dChib29sIGZpeGVkKQogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VGaXhlZExheW91dChmaXhlZCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VGaXhlZExheW91dChm
aXhlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0
IEludFNpemUmIHNpemUpCkBAIC0zMzA0LDcgKzMzMDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldEZpeGVkTGF5b3V0U2l6ZShzaXplKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZpeGVkTGF5b3V0U2l6ZShzaXplKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlcihib29s
IGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKQpAQCAtMzMxNyw3ICszMzE3LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKGJvb2wgYWx3
YXlzU2hvd3NIb3Jpem9udGFsU2MKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xs
ZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hv
d3NIb3Jpem9udGFsU2Nyb2xsZXIoYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihib29s
IGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcikKQEAgLTMzMzAsNyArMzMzMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIoYm9vbCBhbHdheXNT
aG93c1ZlcnRpY2FsU2Nyb2xsCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFs
d2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihhbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsZXIpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NWZXJ0
aWNhbFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcikpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhPcHRpb25TZXQ8V2ViQ29yZTo6
TGF5b3V0TWlsZXN0b25lPiBtaWxlc3RvbmVzKQpAQCAtMzM0Myw3ICszMzQzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMoT3B0aW9uU2V0PFdlYkNvcmU6
OkxheW91dE1pbGVzdG9uZT4KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVu
Rm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMobWlsZXN0b25lcykpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKGJv
b2wgc3VwcHJlc3NBbmltYXRpb25zKQpAQCAtMzM1Niw3ICszMzU2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhib29sIHN1cHByZXNzQW5pbWF0
aW9ucykKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U3VwcHJlc3NTY3JvbGxi
YXJBbmltYXRpb25zKHN1cHByZXNzQW5pbWF0aW9ucyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Njcm9sbGJhckFuaW1hdGlvbnMoc3VwcHJlc3NB
bmltYXRpb25zKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpydWJiZXJCYW5kc0F0TGVmdCgp
IGNvbnN0CkBAIC0zNDA4LDcgKzM0MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RW5hYmxl
VmVydGljYWxSdWJiZXJCYW5kaW5nKGJvb2wgZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaQogCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRp
bmcoZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZVZlcnRpY2FsUnViYmVyQmFuZGluZyhlbmFibGVWZXJ0
aWNhbFJ1YmJlckJhbmRpbmcpKTsKIH0KICAgICAKIGJvb2wgV2ViUGFnZVByb3h5Ojp2ZXJ0aWNh
bFJ1YmJlckJhbmRpbmdJc0VuYWJsZWQoKSBjb25zdApAQCAtMzQyNSw3ICszNDI1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldEVuYWJsZUhvcml6b250YWxSdWJiZXJCYW5kaW5nKGJvb2wgZW5h
YmxlSG9yaXpvbnRhbFJ1YmJlckIKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRp
bmcpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0RW5hYmxlSG9y
aXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcpKTsKIH0K
ICAgICAKIGJvb2wgV2ViUGFnZVByb3h5Ojpob3Jpem9udGFsUnViYmVyQmFuZGluZ0lzRW5hYmxl
ZCgpIGNvbnN0CkBAIC0zNDQyLDcgKzM0NDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QmFj
a2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJvb2wgYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYQog
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYWNrZ3JvdW5kRXh0ZW5kc0JleW9u
ZFBhZ2UoYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZShiYWNrZ3Jv
dW5kRXh0ZW5kc0JleW9uZFBhZ2UpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6OmJhY2tncm91
bmRFeHRlbmRzQmV5b25kUGFnZSgpIGNvbnN0CkBAIC0zNDU5LDcgKzM0NTksNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbk1vZGUoV2ViQ29yZTo6UGFnaW5hdGlvbjo6TW9kZSBt
b2RlKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdpbmF0aW9uTW9kZSht
b2RlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2luYXRp
b25Nb2RlKG1vZGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2luYXRpb25CZWhh
dmVzTGlrZUNvbHVtbnMoYm9vbCBiZWhhdmVzTGlrZUNvbHVtbnMpCkBAIC0zNDcxLDcgKzM0NzEs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhi
b29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkJlaGF2ZXNM
aWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldFBhZ2VMZW5ndGgoZG91YmxlIHBhZ2VMZW5ndGgpCkBAIC0zNDgzLDcgKzM0ODMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxlbmd0aChkb3VibGUgcGFnZUxlbmd0aCkKIAogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUxlbmd0aChwYWdlTGVuZ3RoKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFBhZ2VMZW5ndGgocGFnZUxl
bmd0aCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0R2FwQmV0d2VlblBhZ2VzKGRvdWJs
ZSBnYXApCkBAIC0zNDk1LDcgKzM0OTUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0R2FwQmV0
d2VlblBhZ2VzKGRvdWJsZSBnYXApCiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dEdhcEJldHdlZW5QYWdlcyhnYXApLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0R2FwQmV0d2VlblBhZ2VzKGdhcCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChib29sIGxpbmVHcmlkRW5hYmxlZCkKQEAgLTM1
MDcsNyArMzUwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdpbmF0aW9uTGluZUdyaWRF
bmFibGVkKGJvb2wgbGluZUdyaWRFbmFibGVkKQogICAgIAogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJsZWQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkxpbmVH
cmlkRW5hYmxlZChsaW5lR3JpZEVuYWJsZWQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnBh
Z2VTY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgc2NhbGVGYWN0b3IpCkBAIC0zNTMyLDI3ICsz
NTMyLDI3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJp
bmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZ01hdGNo
ZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9ucywgbWF4
TWF0Y2hDb3VudCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZyhjb25zdCBT
dHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmco
c3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90
IG1hdGNoSW5kZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRJbWFnZUZvckZpbmRNYXRjaChtYXRjaEluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldEltYWdlRm9yRmluZE1hdGNoKG1hdGNoSW5kZXgpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdEZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpCiB7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RGaW5kTWF0Y2go
bWF0Y2hJbmRleCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxl
Y3RGaW5kTWF0Y2gobWF0Y2hJbmRleCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZUZp
bmRVSSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIaWRlRmlu
ZFVJKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIaWRlRmluZFVJ
KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50
KQpAQCAtMzU2MCw3ICszNTYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNvdW50U3RyaW5nTWF0
Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q291bnRTdHJpbmdNYXRjaGVzKHN0cmluZywgb3B0aW9u
cywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+JiYg
bWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50VGV4dCwgYm9vbCBzZWxlY3Rp
b25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFjaykKQEAgLTM1NzEsNyArMzU3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNl
TWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmCiAg
ICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZU1hdGNoZXMo
V1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlvbk9ubHksIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFj
ZU1hdGNoZXMoV1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlv
bk9ubHksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaEluaXRp
YWxQcm9jZXNzSWZOZWNlc3NhcnkoKQpAQCAtMzU5NiwxNCArMzU5NiwxNCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoY29uc3QgU3RyaW5n
JiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3Jj
ZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQo
c2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdURjo6RnVuY3Rp
b248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wgaGFkRXhjZXB0aW9uLCBj
b25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICAgICBBU1NFUlQobWFpbkZyYW1lKCktPmZyYW1lSUQoKSAhPSBmcmFtZUlE
KTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3Jp
cHRJbkZyYW1lKGZyYW1lSUQsIHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSdW5KYXZhU2NyaXB0SW5G
cmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUsIGNhbGxiYWNrSUQpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
KFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM2MTQsNyArMzYxNCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihXVEY6OkZ1bmN0aW9uPHZv
aWQgKGNvbnN0CiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tz
LnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZW5kZXJUcmVlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQpAQCAtMzYyNiw3ICszNjI2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZv
ckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGMKICAgICAK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTb3VyY2VGb3JGcmFt
ZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIGNhbGxi
YWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcoV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQpAQCAtMzYzOCw3ICszNjM4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldENvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBD
YWxsYmEKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lEcy5hZGQo
Y2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRD
b250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFja0lEKSk7CiB9CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKQEAgLTM2NDksNyArMzY0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IEF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24o
KS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzQXR0
cmlidXRlZFN0cmluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc0F0
dHJpYnV0ZWRTdHJpbmcoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogI2VuZGlm
CiAKQEAgLTM2NjIsNyArMzY2Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRCeXRlY29kZVBy
b2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFjCiAgICAgCiAg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7
CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxl
KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzY3NCw3ICsz
Njc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLAogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwogICAgIG1fbG9hZERlcGVu
ZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoY2FsbGJhY2tJ
RCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTYW1wbGluZ1By
b2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpKTsKIH0KIAogI2lmIEVOQUJMRShNSFRNTCkKQEAgLTM2
ODYsNyArMzY4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzTUhUTUxEYXRh
KEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFzCiAgICAgfQogCiAgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzTUhUTUxEYXRh
KGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0
Q29udGVudHNBc01IVE1MRGF0YShjYWxsYmFja0lEKSk7CiB9CiAjZW5kaWYKIApAQCAtMzY5OCw3
ICszNjk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbk9yQ29udGVudHNBc1N0
cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmkKICAgICB9CiAgICAgCiAgICAgYXV0
byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRz
QXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJRCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShGdW5jdGlvbjx2
b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQpAQCAtMzcwOSw3ICszNzA5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGlvbkFz
V2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGIKICAgICB9CiAg
ICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rp
b25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShjYWxsYmFja0lEKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJG
cmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM3MjAsNyArMzcyMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgRnVuY3Rpb248dm9pCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0YU9mRnJhbWUoZnJhbWUtPmZyYW1l
SUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lE
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2Vi
RnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvdXJjZVVSTCwgRnVuY3Rpb248dm9pZCAo
QVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAg
LTM3MzEsNyArMzczMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJjZURhdGFGcm9t
RnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvCiAgICAgfQogICAgIAog
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVzb3VyY2VEYXRh
RnJvbUZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIHJlc291cmNlVVJMLT5zdHJpbmcoKSwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgcmVzb3VyY2VVUkwtPnN0cmluZygpLCBj
YWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFt
ZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM3NDIsNyArMzc0Miw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBm
cmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9mRnJhbWUoZnJhbWUtPmZyYW1l
SUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4m
JiBjYWxsYmFjaykKQEAgLTM3NzYsNyArMzc3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3Jj
ZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZvcmNlUmVwYWludENhbGxiYWNr
KSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAg
ICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBkYXRlT25OZXh0UGFpbnQoKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvcmNlUmVwYWludChjYWxs
YmFja0lEKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGb3JjZVJl
cGFpbnQoY2FsbGJhY2tJRCkpOwogfQogCiBzdGF0aWMgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlv
bj4gcHJpbnRpbmdTZW5kT3B0aW9ucyhib29sIGlzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9u
KQpAQCAtMzgwMiw3ICszODAyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWZlcmVuY2VzRGlk
Q2hhbmdlKCkKICAgICAvLyBldmVuIGlmIG5vdGhpbmcgY2hhbmdlZCBpbiBVSSBwcm9jZXNzLCBz
byB0aGF0IG92ZXJyaWRlcyBnZXQgcmVtb3ZlZC4KIAogICAgIC8vIFByZWZlcmVuY2VzIG5lZWQg
dG8gYmUgdXBkYXRlZCBkdXJpbmcgc3luY2hyb25vdXMgcHJpbnRpbmcgdG8gbWFrZSAicHJpbnQg
YmFja2dyb3VuZHMiIHByZWZlcmVuY2Ugd29yayB3aGVuIHRvZ2dsZWQgZnJvbSBhIHByaW50IGRp
YWxvZyBjaGVja2JveC4KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBy
ZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3RvcmUoKSksIG1fcGFnZUlELCBwcmludGlu
Z1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5nZShwcmVmZXJlbmNlc1N0b3Jl
KCkpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24p
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSh1aW50NjRfdCBm
cmFtZUlEKQpAQCAtMzkzMiw4ICszOTMyLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJgogICAg
IGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5hdmln
YXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiAKLSAg
ICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBpZCAl
aSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIs
IG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgdXJsLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQsIGZyYW1lSUQpOworICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBS
SXU2NCAiIGluIHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUg
dG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMi
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcmFt
ZUlELCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZy
YW1lSUQpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2Fj
dGlvbigpOwogCkBAIC0zOTg1LDcgKzM5ODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZgog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQ
YWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJs
ICVzIiwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VD
bGllbnQoKSk7CiAKQEAgLTQwMTQsNyArNDAxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSwgV2ViQ29y
ZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7
CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBA
IC00MDI3LDcgKzQwMjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRS
ZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cgogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENhbmNlbENsaWVu
dFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ2Fu
Y2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3Rv
ciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDA3NCw4ICs0MDc0LDggQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTZWN1cmkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdp
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGlu
dWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgTE9HKExvYWRpbmcs
ICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdlYiBwcm9jZXNzIHBpZCAl
aSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlzaW9uYWxVUkwgJXMiLCBt
X3BhZ2VJRCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRm
OCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFp
bFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlELCBlcnJvci5kb21haW4o
KS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgTE9HKExvYWRpbmcsICIo
TG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdlYiBwcm9jZXNzIHBpZCAlaSBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlzaW9uYWxVUkwgJXMiLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25h
bFVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3Ms
ICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVk
IiwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJh
bWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwog
CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAt
NDE0MSw5ICs0MTQxLDkgQEAgc3RhdGljIGJvb2wgaXNOb25VbmlxdWVOYXZpZ2F0aW9uV2l0aExp
bmtEZWNvcmF0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSByZXEKIAogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21D
b250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNv
cmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2lu
RG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgTE9HKExvYWRpbmcsICIoTG9hZGlu
ZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZp
Z2F0aW9uICUiIFBSSXU2NCwgbV9wYWdlSUQsIG5hdmlnYXRpb25JRCk7CisgICAgTE9HKExvYWRp
bmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JG
cmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9wYWdlSUQudG9VSW50NjQoKSwgbmF2aWdh
dGlvbklEKTsKICAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBBZnRlciBsb2Fk
IGNvbW1pdCwgYmFjay9mb3J3YXJkIGxpc3QgaXMgbm93OiVzIiwgbV9iYWNrRm9yd2FyZExpc3Qt
PmxvZ2dpbmdTdHJpbmcoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
ZGlkQ29tbWl0TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRp
ZENvbW1pdExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90
ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI1NCw3ICs0MjU0LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xp
ZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00Mjc4LDcgKzQyNzgs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlz
aExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94
eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lIC0gV2ViUGFnZVByb3h5ICVwIHdpdGggbmF2aWdhdGlv
bklEICUiIFBSSXU2NCAiIGRpZEZpbmlzaExvYWQiLCB0aGlzLCBuYXZpZ2F0aW9uSUQpOwotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlE
KTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAK
QEAgLTQzMjMsNyArNDMyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9y
RnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRG
YWlsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0Zjgo
KS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJh
bWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwog
CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAt
NDM2NSw3ICs0MzY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2aWdh
dGlvblR5cGUsIFVSTCYmIHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25G
b3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlE
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ1MzUsNyArNDUzNSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIGJvb2wsIFdlYkZyYW1lUG9s
aWN5TGlzdGVuCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELAotICAgIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisg
ICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZv
RGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJl
Y3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklE
KQogewogICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3By
b2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBp
ZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLApA
QCAtNDU0Myw3ICs0NTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3IKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sCi0gICAgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5m
b0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0
ZW5lcklEKQogewpAQCAtNDU1OSw3ICs0NTU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3gK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELAotICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKKyAgICBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYg
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
ZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lz
aW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiAtIE9yaWdpbmFsIFVSTCAlcywgY3VycmVu
dCB0YXJnZXQgVVJMICVzIiwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC00Njk5LDcg
KzQ2OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICBpZiAoIWZyb21BUEkg
JiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCiAgICAgICAgICAgICBzb3VyY2VGcmFtZUlu
Zm8gPSBkZXN0aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7CiAgICAgICAgIGVsc2UgaWYgKCFm
cm9tQVBJKQotICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNy
ZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vz
cy0+d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyKTsKKyAgICAgICAgICAgIHNv
dXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5n
UGFnZUlEKSA6IG51bGxwdHIpOwogCiAgICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5
ID0gcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVz
ZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlu
a3MgPSAhbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uCkBAIC00NzcyLDcgKzQ3NzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9nRnJhbWVOYXZp
Z2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZwogI2VuZGlm
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRl
bnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCiB7CkBAIC00NzkwLDcgKzQ3OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpcwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlE
LCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CkBAIC00ODIx
LDcgKzQ4MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93
QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaQogICAgICAgICBBU1NFUlRfVU5V
U0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdXYXJuaW5nKTsKIAogICAgICAg
ICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpjcmVhdGUoaWRlbnRpZmllciwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBmcmFtZUlELCBs
aXN0ZW5lcklEXSAoYXV0by4uLiBhcmdzKSB7Ci0gICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZUlELCBsaXN0
ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lSUQsIGxpc3RlbmVySUQsIGFy
Z3MuLi4pKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihw
b2xpY3lBY3Rpb24sIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgV1RGTW92ZShzZW5kZXIpKTsKQEAg
LTQ5MDcsNyArNDkwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsU3VibWl0Rm9ybSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25zCiAgICAgTUVTU0FHRV9D
SEVDSyhtX3Byb2Nlc3MsIHNvdXJjZUZyYW1lKTsKIAogICAgIG1fZm9ybUNsaWVudC0+d2lsbFN1
Ym1pdEZvcm0oKnRoaXMsICpmcmFtZSwgKnNvdXJjZUZyYW1lLCB0ZXh0RmllbGRWYWx1ZXMsIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGZyYW1lSUQsIGxpc3Rl
bmVySURdKCkgewotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNv
bnRpbnVlV2lsbFN1Ym1pdEZvcm0oZnJhbWVJRCwgbGlzdGVuZXJJRCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGludWVXaWxsU3VibWl0Rm9ybShmcmFt
ZUlELCBsaXN0ZW5lcklEKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ5MjMsNyArNDkyMyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJO
YXZpZ2F0aW9uRGF0YVN0b3JlJiBzCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdp
dGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNv
bnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCB1aW50NjRfdCBmcmFtZUlEKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhU2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0
b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDk0Myw3ICs0OTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmlu
ZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBm
cmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZv
cm1DbGllbnRSZWRpcmVjdFNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3Rv
ciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDk3MCw3ICs0OTcwLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJj
ZVVSTFN0cmluZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJS
ZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1
aW50NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rv
cihwYWdlQ2xpZW50KCkpOwogCkBAIC01MDE4LDE0ICs1MDE4LDE0IEBAIFdFQlBBR0VQUk9YWV9M
T0FET1BUSU1JWkVSX0FERElUSU9OU182CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6
OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgV2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3
UGFnZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3
UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwgV2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3Jl
YXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyht
X3Byb2Nlc3MsIG1fcHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZy
YW1lSUQpKTsKLSAgICBhdXRvIG9yaWdpbmF0aW5nRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86
OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG1fcHJvY2Vzcy0+d2ViUGFnZShvcmln
aW5hdGluZ1BhZ2VJRCkpOworICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZy
YW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdl
SUQgPyBtX3Byb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6IG51bGxwdHIpOwog
ICAgIGF1dG8gbWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUgPyBtX21haW5GcmFtZS0+dXJsKCkg
OiBVUkwoKTsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1ZXN0LCByZXBseSA9IFdURk1v
dmUocmVwbHkpXSAoUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgbXV0YWJsZSB7CiAgICAg
ICAgIGlmICghbmV3UGFnZSkgewotICAgICAgICAgICAgcmVwbHkoMCwgV1RGOjpudWxsb3B0KTsK
KyAgICAgICAgICAgIHJlcGx5KFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01Mzc0LDcgKzUzNzQsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3Jp
Z2luRGF0YSYgZnJhbQogdm9pZCBXZWJQYWdlUHJveHk6OnNob3dTaGFyZVNoZWV0KGNvbnN0IFNo
YXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNoYXJlRGF0YSwgU2hhcmVTaGVldENhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKIHsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiBjb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxiYWNr
SURdIChib29sIGFjY2VzcykgewotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENvbXBsZXRlU2hhcmVTaGVldChhY2Nlc3MsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlU2hhcmVTaGVl
dChhY2Nlc3MsIGNhbGxiYWNrSUQpKTsKICAgICB9OwogICAgIAogICAgIHBhZ2VDbGllbnQoKS5z
aG93U2hhcmVTaGVldChzaGFyZURhdGEsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKQEAg
LTU0MDYsNyArNTQwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNZWRpYVZvbHVtZShmbG9h
dCB2b2x1bWUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNZWRpYVZv
bHVtZSh2b2x1bWUpLCBtX3BhZ2VJRCk7ICAgIAorICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldE1lZGlhVm9sdW1lKHZvbHVtZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TXV0
ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZsYWdzIHN0YXRlKQpAQCAtNTQy
Miw3ICs1NDIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE11dGVkKFdlYkNvcmU6Ok1lZGlh
UHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBzdGF0ZSkKICAgICAgICAgVXNlck1lZGlhUHJvY2Vz
c01hbmFnZXI6OnNpbmdsZXRvbigpLm11dGVDYXB0dXJlTWVkaWFTdHJlYW1zRXhjZXB0SW4oKnRo
aXMpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dE11dGVkKHN0YXRlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dE11dGVkKHN0YXRlKSk7CiAgICAgYWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IEFjdGl2aXR5U3Rh
dGU6OklzQXVkaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJpbmdNZWRpYSB9KTsKIH0KIApA
QCAtNTQ0NCw3ICs1NDQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BNZWRpYUNhcHR1cmUo
KQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcE1lZGlhQ2FwdHVyZSgpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcE1lZGlhQ2FwdHVyZSgpKTsKICNl
bmRpZgogfQogCkBAIC01NDUzLDcgKzU0NTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcEFs
bE1lZGlhUGxheWJhY2soKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wQWxs
TWVkaWFQbGF5YmFjaygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U3RvcEFsbE1lZGlhUGxheWJhY2soKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5k
QWxsTWVkaWFQbGF5YmFjaygpCkBAIC01NDYxLDcgKzU0NjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkKQEAgLTU0NjksNyArNTQ2OSw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWxsTWVkaWFQbGF5YmFjaygpKTsK
IH0KIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpAQCAtNTQ3OCw3ICs1NDc4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmhhbmRsZU1lZGlhRXZlbnQoTWVkaWFFdmVudFR5cGUgZXZlbnRUeXBl
KQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlTWVkaWFFdmVudChl
dmVudFR5cGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxl
TWVkaWFFdmVudChldmVudFR5cGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFZvbHVt
ZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1bWUsIHVpbnQ2NF90IGVsZW1lbnRJRCkKQEAgLTU0
ODYsNyArNTQ4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRWb2x1bWVPZk1lZGlhRWxlbWVu
dChkb3VibGUgdm9sdW1lLCB1aW50NjRfdCBlbGVtZW50SUQpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFZvbHVtZU9mTWVkaWFFbGVtZW50KHZvbHVtZSwgZWxlbWVudElEKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZvbHVtZU9mTWVkaWFF
bGVtZW50KHZvbHVtZSwgZWxlbWVudElEKSk7CiB9CiAjZW5kaWYKIApAQCAtNTUwMCw3ICs1NTAw
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3coYm9v
bCBtYXlTdGFydE1lZGlhKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1heVN0
YXJ0TWVkaWFXaGVuSW5XaW5kb3cobWF5U3RhcnRNZWRpYSksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYXlTdGFydE1lZGlhV2hlbkluV2luZG93KG1heVN0YXJ0
TWVkaWEpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZURvd25sb2FkUmVxdWVzdChE
b3dubG9hZFByb3h5JiBkb3dubG9hZCkKQEAgLTU1NDcsNyArNTU0Nyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUNvbG9yKGNvbG9yKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUNvbG9yKGNvbG9yKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmRDb2xvclBpY2tlcigpCkBAIC01NTU2LDcg
KzU1NTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kQ29sb3JQaWNrZXIoKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRDb2xvclBpY2tlcigpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29sb3JQaWNrZXIoKSk7CiB9CiAj
ZW5kaWYKIApAQCAtNTU5MCw3ICs1NTkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENsb3Nl
U3VnZ2VzdGlvbnMoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2RhdGFMaXN0U3VnZ2VzdGlv
bnNEcm9wZG93biA9IG51bGxwdHI7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRDbG9zZVN1Z2dlc3Rpb25zKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRDbG9zZVN1Z2dlc3Rpb25zKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCkBAIC01NTk4
LDcgKzU1OTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0
cmluZyYgc2VsZWN0ZWRPcHRpb24pCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0aW9uKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0
aW9uKSk7CiB9CiAKICNlbmRpZgpAQCAtNTY1MSw3ICs1NjUxLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFjayhib29sIGFsbG93cykKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fYWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrID0g
YWxsb3dzOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRBbGxv
d3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYWxsb3dzKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFj
ayhhbGxvd3MpKTsKIH0KICNlbmRpZgogCkBAIC01ODM0LDE3ICs1ODM0LDE3IEBAIElQQzo6Q29u
bmVjdGlvbiogV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAK
IHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dAogewotICAgIHJldHVybiBtX3BhZ2VJRDsKKyAgICByZXR1cm4gbV9wYWdlSUQudG9VSW50NjQo
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudShXZWJQ
b3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3Rp
dmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRleCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KG5l
d1NlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRGcm9tSXRl
bUZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgaW5kZXgpCiB7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0Rm9yQWN0aXZlUG9wdXBN
ZW51KGluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRl
eHRGb3JBY3RpdmVQb3B1cE1lbnUoaW5kZXgpKTsKIH0KIAogYm9vbCBXZWJQYWdlUHJveHk6Omlz
UHJvY2Vzc2luZ0tleWJvYXJkRXZlbnRzKCkgY29uc3QKQEAgLTU4NzksMTMgKzU4NzksMTMgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok8KICAgICAvLyBGb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0
eSwgbWFrZSBzdXJlIHdlIGxhdW5jaCB0aGUgaW5pdGlhbCBwcm9jZXNzIGlmIHRoZSBjbGllbnQg
YXNrcyB0byBwb3N0IGEgbWVzc2FnZSB0byBpdHMgaW5qZWN0ZWQgYnVuZGxlIGJlZm9yZSBkb2lu
ZyBhIGxvYWQuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpOwogCi0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvc3RJbmplY3RlZEJ1bmRsZU1lc3Nh
Z2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5k
bGVzKG1lc3NhZ2VCb2R5KS5nZXQoKSkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEo
cHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpLmdldCgpKSkp
OwogfQogCiAjaWYgUExBVEZPUk0oR1RLKQogdm9pZCBXZWJQYWdlUHJveHk6OmZhaWxlZFRvU2hv
d1BvcHVwTWVudSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpG
YWlsZWRUb1Nob3dQb3B1cE1lbnUoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkZhaWxlZFRvU2hvd1BvcHVwTWVudSgpKTsKIH0KICNlbmRpZgogCkBAIC01OTUyLDcg
KzU5NTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRleHRNZW51KENvbnRleHRNZW51
Q29udGV4dERhdGEmJiBjb250ZXh0TWVudUNvbnRleHREYQogICAgIG1fYWN0aXZlQ29udGV4dE1l
bnUtPnNob3coKTsKIAogICAgIC8vIE5vIG1hdHRlciB0aGUgcmVzdWx0IG9mIGludGVybmFsU2hv
d0NvbnRleHRNZW51LCBhbHdheXMgbm90aWZ5IHRoZSBXZWJQcm9jZXNzIHRoYXQgdGhlIG1lbnUg
aXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBtb3VzZSBldmVudHMgYWdhaW4uCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250ZXh0TWVudUhpZGRlbigpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4dE1lbnVIaWRkZW4o
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChjb25z
dCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpAQCAtNjAzMCwxMiArNjAzMCwxMiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoY29uc3QgV2ViQ29udGV4
dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICBpZiAoaXRlbS5hY3Rpb24oKSA9PSBDb250ZXh0TWVu
dUl0ZW1UYWdMZWFyblNwZWxsaW5nIHx8IGl0ZW0uYWN0aW9uKCkgPT0gQ29udGV4dE1lbnVJdGVt
VGFnSWdub3JlU3BlbGxpbmcpCiAgICAgICAgICsrbV9wZW5kaW5nTGVhcm5Pcklnbm9yZVdvcmRN
ZXNzYWdlQ291bnQ7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoaXRlbSksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51
KGl0ZW0pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZUNvbnRleHRNZW51S2V5RXZl
bnQoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4dE1l
bnVGb3JLZXlFdmVudCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q29udGV4dE1lbnVGb3JLZXlFdmVudCgpKTsKIH0KICNlbmRpZiAvLyBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKIApAQCAtNjA1MSwxMCArNjA1MSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oY29uc3QgVmVjdAog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVVSTHMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlVVJMc1tpXSwgU2FuZGJveEV4dGVu
c2lvbjo6VHlwZTo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25IYW5kbGVzW2ldKTsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0ZW5kU2FuZGJveEZvckZpbGVz
RnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVs
KHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSk7CiAjZW5kaWYKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxh
eVN0cmluZ0FuZEljb24oZmlsZVVSTHMsIGRpc3BsYXlTdHJpbmcsIGljb25EYXRhID8gaWNvbkRh
dGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0YVJlZmVyZW5jZSgpKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsV2l0
aERpc3BsYXlTdHJpbmdBbmRJY29uKGZpbGVVUkxzLCBkaXNwbGF5U3RyaW5nLCBpY29uRGF0YSA/
IGljb25EYXRhLT5kYXRhUmVmZXJlbmNlKCkgOiBJUEM6OkRhdGFSZWZlcmVuY2UoKSkpOwogCiAg
ICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwogICAgIG1fb3BlblBh
bmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAtNjA3OSwxMCArNjA3OSwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVVUkxzKQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmlsZXNGcm9tT3BlblBhbmVsKHNh
bmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFuZWwoc2FuZGJveEV4dGVuc2lv
bkhhbmRsZXMpKTsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJMcyksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxl
VVJMcykpOwogCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0ZSgpOwog
ICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAtNjA5Myw3ICs2MDkz
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9wZW5QYW5lbCgpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbEZvck9wZW5QYW5lbCgpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2FuY2VsRm9yT3BlblBhbmVsKCkp
OwogICAgIAogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXItPmludmFsaWRhdGUoKTsKICAg
ICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsKQEAgLTYxMDEsNyArNjEwMSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxl
Y3Rpb24pCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZHZhbmNl
VG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24pLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKHN0YXJ0QmVm
b3JlU2VsZWN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFuZ2VTcGVsbGluZ1Rv
V29yZChjb25zdCBTdHJpbmcmIHdvcmQpCkBAIC02MTA5LDcgKzYxMDksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKQogICAgIGlm
ICh3b3JkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VTcGVsbGluZ1RvV29yZCh3b3JkKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZVNwZWxsaW5nVG9Xb3JkKHdvcmQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVk
aXRDb21tYW5kUHJveHk+JiYgY29tbWFuZFByb3h5LCBVbmRvT3JSZWRvIHVuZG9PclJlZG8pCkBA
IC02MTI4LDcgKzYxMjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlRWRpdENvbW1hbmQo
V2ViRWRpdENvbW1hbmRQcm94eSYgY29tbWFuZCkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVtb3ZlRWRpdENvbW1hbmQoY29tbWFuZC5jb21tYW5kSUQoKSksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVFZGl0Q29tbWFuZChjb21t
YW5kLmNvbW1hbmRJRCgpKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5OjpjYW5VbmRvKCkKQEAg
LTYyMTcsMTIgKzYyMTcsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVGV4dENoZWNraW4KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHQpCiB7Ci0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRGaW5pc2hDaGVja2luZ1RleHQocmVx
dWVzdElELCByZXN1bHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkRmluaXNoQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCwgcmVzdWx0KSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRDYW5jZWxDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElEKQogewot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2FuY2VsQ2hlY2tpbmdU
ZXh0KHJlcXVlc3RJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpE
aWRDYW5jZWxDaGVja2luZ1RleHQocmVxdWVzdElEKSk7CiB9CiAvLyBPdGhlcgogCkBAIC02MzUx
LDcgKzYzNTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVpbnQzMl90
IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCkKICAgICAgICAgYm9vbCBjYW5Qcm9jZXNzTW9yZUtl
eUV2ZW50cyA9ICFtX2tleUV2ZW50UXVldWUuaXNFbXB0eSgpOwogICAgICAgICBpZiAoY2FuUHJv
Y2Vzc01vcmVLZXlFdmVudHMpIHsKICAgICAgICAgICAgIExPRyhLZXlIYW5kbGluZywgIiBVSSBw
cm9jZXNzOiBzZW50IGtleUV2ZW50IGZyb20gZGlkUmVjZWl2ZUV2ZW50Iik7Ci0gICAgICAgICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OktleUV2ZW50KG1fa2V5RXZlbnRR
dWV1ZS5maXJzdCgpKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCkpKTsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIFRoZSBjYWxsIHRvIGRvbmVXaXRoS2V5RXZlbnQgbWF5IGNsb3NlIHRoaXMgV2Vi
UGFnZS4KQEAgLTY3MTUsNyArNjcxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZVNldExh
cmdlc3RGcmFtZUNoYW5nZWQodWludDY0X3QgZnJhbWVJRCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRC
ZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY3MjcsNyArNjcy
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkK
IAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9u
c2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTcyMzMsNyArNzIzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiYWNrRm9yd2FyZENsZWFy
KCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmdhbWVwYWRBY3Rpdml0eShjb25zdCBWZWN0b3I8R2Ft
ZXBhZERhdGE+JiBnYW1lcGFkRGF0YXMsIGJvb2wgc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSkK
IHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdhbWVwYWRBY3Rpdml0
eShnYW1lcGFkRGF0YXMsIHNob3VsZE1ha2VHYW1lcGFkc1Zpc2libGUpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2aXR5KGdhbWVwYWREYXRhcywg
c2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSkpOwogfQogCiAjZW5kaWYKQEAgLTc1MzksNyArNzUz
OSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp3aWxsSGFuZGxlSG9yaXpvbnRhbFNjcm9sbEV2ZW50
cygpIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVXZWJzaXRlUG9saWNpZXMoV2Vi
c2l0ZVBvbGljaWVzRGF0YSYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVdlYnNpdGVQb2xpY2llcyh3ZWJzaXRlUG9saWNp
ZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlV2Vic2l0
ZVBvbGljaWVzKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNl
KQpAQCAtNzU0OSw3ICs3NTQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRp
bmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0cmluZyYgc3UKIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oY29uc3QgQmFja0ZvcndhcmRJdGVt
SWRlbnRpZmllciYgaXRlbUlEKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0oaXRlbUlEKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5SdW5Nb2RhbChib29sIGNhblJ1bk1vZGFs
KQpAQCAtNzU2Miw3ICs3NTYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENhblJ1bk1vZGFs
KGJvb2wgY2FuUnVuTW9kYWwpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENh
blJ1bk1vZGFsKG1fY2FuUnVuTW9kYWwpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwobV9jYW5SdW5Nb2RhbCkpOwogfQogCiBib29sIFdlYlBh
Z2VQcm94eTo6Y2FuUnVuTW9kYWwoKQpAQCAtNzU3Niw3ICs3NTc2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmJlZ2luUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5m
byYgcHJpbnRJbmYKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0g
dHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2luUHJpbnRp
bmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9w
dGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkJlZ2luUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvKSwg
cHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjplbmRQcmludGluZygpCkBAIC03NTg1LDcgKzc1ODUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZW5kUHJpbnRpbmcoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX2lzSW5QcmludGluZ01vZGUgPSBmYWxzZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkVuZFByaW50aW5nKCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25z
KG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpFbmRQcmludGluZygpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5n
RE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHByaW50
SW5mbywgUmVmPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTc1OTgsNyAr
NzU5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFnZXNGb3JQcmludGluZyhXZWJG
cmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvCiAgICAgYXV0byBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFjaykpOwogICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJh
bWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgcHJpbnRpbmdTZW5kT3B0
aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJp
bnRJbmZvLCBjYWxsYmFja0lEKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RP
TVByaW50T3BlcmF0aW9uKSk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTc2MTEsNyAr
NzYxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvSW1hZ2UoV2ViRnJhbWVQcm94
eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJCiAgICAgCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFjaykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJh
d1JlY3RUb0ltYWdlKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgcmVjdCwgaW1hZ2VTaXpl
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1p
bmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdS
ZWN0VG9JbWFnZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIHJlY3QsIGltYWdlU2l6ZSwg
Y2FsbGJhY2tJRCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2ViRnJh
bWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJz
dCwgdWludDMyX3QgY291bnQsIFJlZjxEYXRhQ2FsbGJhY2s+JiYgY2FsbGJhY2spCkBAIC03NjIz
LDcgKzc2MjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQ
cm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogICAgIAogICAgIGF1dG8gY2Fs
bGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAgbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2spKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgZmlyc3QsIGNvdW50
LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1p
bmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQ
YWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBjYWxs
YmFja0lEKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0
aW9uKSk7CiB9CiAjZWxpZiBQTEFURk9STShHVEspCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1Bh
Z2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJp
bnRJbmZvLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmIGNhbGxiYWNrKQpAQCAtNzYzNiw3
ICs3NjM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc0ZvclByaW50aW5nKFdlYkZy
YW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICAgICBhdXRvIGNhbGxiYWNrSUQg
PSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNh
bGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc0ZvclByaW50aW5nKGZyYW1lLT5mcmFt
ZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRp
b25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEcmF3UGFnZXNGb3JQcmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludElu
Zm8sIGNhbGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJp
bnRPcGVyYXRpb24pKTsKIH0KICNlbmRpZgogCkBAIC03NjgxLDcgKzc2ODEsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0Vmlld0xheW91dFNpemUoY29uc3QgSW50U2l6ZSYgdmlld0xheW91dFNp
emUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZpZXdMYXlvdXRTaXplKHZp
ZXdMYXlvdXRTaXplKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplKSk7CiAgICAgbV9kcmF3aW5nQXJlYS0+dmll
d0xheW91dFNpemVEaWRDaGFuZ2UoKTsKIAogI2lmIFVTRShBUFBLSVQpCkBAIC03NzAwLDcgKzc3
MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmll
d0hlaWdodChib29sIHNob3VsZEV4cGFuZCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0QXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChzaG91bGRFeHBhbmQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QXV0b1NpemluZ1Nob3Vs
ZEV4cGFuZFRvVmlld0hlaWdodChzaG91bGRFeHBhbmQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgSW50U2l6ZSYgdmll
d3BvcnRTaXplKQpAQCAtNzcxMyw3ICs3NzEzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFZp
ZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXoK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRTaXplRm9yQ1NTVmll
d3BvcnRVbml0cyh2aWV3cG9ydFNpemUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyh2aWV3cG9ydFNpemUp
KTsKIH0KIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKQEAgLTc3ODQsNyAr
Nzc4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNvcmRBdXRvY29ycmVjdGlvblJlc3BvbnNl
KGludDMyX3QgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYKIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5k
bGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICBp
ZiAoIWlzQ2xvc2VkKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0KSwgbV9wYWdlSUQpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3Vs
dChyZXN1bHQpKTsKIH0KIAogI2lmIFVTRShESUNUQVRJT05fQUxURVJOQVRJVkVTKQpAQCAtNzgy
NSw3ICs3ODI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0
cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4KICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb25T
dGFydCwgc2VsZWN0aW9uRW5kLCByZXBsYWNlbWVudFJhbmdlU3RhcnQsIHJlcGxhY2VtZW50UmFu
Z2VFbmQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q29tcG9z
aXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCwgcmVw
bGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5kKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiBjb21wb3NpdGlvblN0
cmluZywgaW50NjRfdCBzZWxlY3Rpb25TdGFydCwgaW50NjRfdCBzZWxlY3Rpb25MZW5ndGgpCkBA
IC03ODMzLDcgKzc4MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29uZmlybUNvbXBvc2l0aW9u
KGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGludDY0X3QgcwogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbihjb21wb3NpdGlvblN0cmluZywg
c2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb24oY29tcG9zaXRpb25TdHJpbmcsIHNl
bGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25MZW5ndGgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmNhbmNlbENvbXBvc2l0aW9uKCkKQEAgLTc4NDEsNyArNzg0MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjYW5jZWxDb21wb3NpdGlvbigpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q2FuY2VsQ29tcG9zaXRpb24oKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkNhbmNlbENvbXBvc2l0aW9uKCkpOwogfQogI2VuZGlmIC8vIFBMQVRGT1JNKEdUSykKIApA
QCAtNzg1OCw3ICs3ODU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNjcm9sbFBpbm5pbmdC
ZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKICAgICBtX3Njcm9sbFBpbm5p
bmdCZWhhdmlvciA9IHBpbm5pbmc7CiAKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTY3JvbGxQaW5uaW5n
QmVoYXZpb3IocGlubmluZyksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHBpbm5pbmcpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3Jv
bGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0eWxlKQpAQCAtNzg3Niw3ICs3ODc2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShPcHRpb25hbDxXZWJD
b3JlOjpTY3JvbGxiYXJPdmVybGF5U3QKICAgICAgICAgc2Nyb2xsYmFyU3R5bGVGb3JNZXNzYWdl
ID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPihzY3JvbGxiYXJTdHlsZS52YWx1
ZSgpKTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3JvbGxi
YXJTdHlsZUZvck1lc3NhZ2UpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2Up
KTsKIH0KIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpAQCAtNzkyMSw3ICs3OTIxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25l
ZCBrZXlTaXplSW5kZXgsIGNvbnMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmFkZE1JTUVUeXBlV2l0
aEN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkTUlNRVR5cGVXaXRoQ3VzdG9tQ29u
dGVudFByb3ZpZGVyKG1pbWVUeXBlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihtaW1lVHlwZSkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJpYnV0ZXMoV2ViQ29yZTo6Rm9u
dEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQpAQCAtNzkyOSw3ICs3OTI5LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNvcmU6OkZvbnRBdHRyaWJ1dGVD
aGFuZ2VzJiYgY2hhbmdlcykKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VG
b250QXR0cmlidXRlcyhXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdURk1vdmUoY2hhbmdlcykpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMm
JiBjaGFuZ2VzKQpAQCAtNzkzNyw3ICs3OTM3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5n
ZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2VzKSksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250KFdURk1vdmUoY2hhbmdlcykpKTsK
IH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzk0NSw3ICs3OTQ1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQpCiB7CiAgICAg
aWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEFzeW5jKHRleHQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdS
YW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgSW5zZXJ0VGV4dE9wdGlvbnMmJiBvcHRpb25zKQpAQCAt
Nzk1Myw3ICs3OTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRBc3luYyhjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGEKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwg
V1RGTW92ZShvcHRpb25zKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpJbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25z
KSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFzTWFya2VkVGV4dChDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQpAQCAtNzk2Miw3ICs3OTYyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6Omhhc01hcmtlZFRleHQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjYWxsYmFjaykKICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6Okhhc01hcmtlZFRleHQoKSwgV1RGTW92ZShjYWxsYmFjayksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okhhc01hcmtl
ZFRleHQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0
TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJh
Y2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTc5NzMsNyArNzk3Myw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5jKFdURjo6RnVuY3Rpb248dm9p
ZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFjCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMoY2FsbGJhY2tJRCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYXJrZWRSYW5nZUFzeW5jKGNh
bGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVjdGVkUmFuZ2VBc3lu
YyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTc5ODQsNyArNzk4NCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlvbjx2b2lkIChFZGl0aW5nUmFu
Z2UsIENhbGxiCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdldFNlbGVjdGVkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRleEZvclBvaW50QXN5bmMoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKHVpbnQ2NF90
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtNzk5NSw3ICs3
OTk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICB9CiAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5kZXhGb3JQb2ludEFzeW5jKHBv
aW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhwb2ludCwgY2FsbGJhY2tJRCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBF
ZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQpAQCAtODAwNiw3ICs4MDA2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRpdGluZ1JhbmdlJiByYW5nZSwg
V1QKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Rmly
c3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJlY3RGb3JDaGFyYWN0ZXJSYW5n
ZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRD
b21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgVmVjdG9yPENvbXBvc2l0
aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGluZ1JhbmdlJiBzZWxlY3Rpb25S
YW5nZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJhbmdlKQpAQCAtODAxNyw3ICs4
MDE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXQKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbkFz
eW5jKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblJhbmdlLCByZXBsYWNlbWVudFJhbmdlKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbXBvc2l0aW9uQXN5
bmModGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uUmFuZ2UsIHJlcGxhY2VtZW50UmFuZ2UpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkKQEAgLTgw
MjUsNyArODAyNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb25Bc3lu
YygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29uZmlybUNvbXBvc2l0aW9uQXN5
bmMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21w
b3NpdGlvbkFzeW5jKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2Nyb2xsUGVyZm9y
bWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVkKQpAQCAtODA1MCw3ICs4MDUw
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJbnRSZWN0IHJlY3QsIEludFNp
emUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb24KICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNr
SUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNz
LT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXplLCBv
cHRpb25zLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCBjYWxsYmFja0lEKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKCkKQEAg
LTgyMDgsNyArODIwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QWN0aXZlTm93UGxh
eWluZ1Nlc3Npb25JbmZvKFJlZjxOb3dQbGF5aW5nSW5mb0NhbGxiYWNrCiAgICAgYXV0byBjYWxs
YmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFjaykpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEFjdGl2ZU5vd1BsYXlpbmdT
ZXNzaW9uSW5mbyhjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpub3dQbGF5
aW5nSW5mb0NhbGxiYWNrKGJvb2wgaGFzQWN0aXZlU2Vzc2lvbiwgYm9vbCByZWdpc3RlcmVkQXNO
b3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGRvdWJsZSBkdXJhdGlv
biwgZG91YmxlIGVsYXBzZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJZGVudGlmaWVyLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCkBAIC04MjUxLDIyICs4MjUxLDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpoYW5kbGVBdXRvcGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5RXZlbnQgZXZlbnQsIE9wdGlv
blNldDxBCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBXZWJQYWdlUHJveHk6OnBlcmZvcm1JbW1l
ZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihGbG9hdFBvaW50IHBvaW50KQogewotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhp
dFRlc3RBdExvY2F0aW9uKHBvaW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihwb2ludCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCkKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0ZUFjdGlvbkRpZFVw
ZGF0ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRl
QWN0aW9uRGlkVXBkYXRlKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0
aW9uRGlkQ2FuY2VsKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkltbWVkaWF0ZUFjdGlvbkRpZENhbmNlbCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCkpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUoKQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUoKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0ZUFjdGlvbkRpZENv
bXBsZXRlKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUltbWVkaWF0ZUFj
dGlvbkhpdFRlc3QoY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEmIHJlc3VsdCwgYm9vbCBjb250
ZW50UHJldmVudHNEZWZhdWx0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC04MjgxLDcg
KzgyODEsNyBAQCBOU09iamVjdCAqV2ViUGFnZVByb3h5OjppbW1lZGlhdGVBY3Rpb25BbmltYXRp
b25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChSZWZQdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoV2ViQ29yZTo6VGV4dENoZWNraW5nUmVzdWx0IGFjY2Vw
dGVkQ2FuZGlkYXRlKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
SGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoYWNjZXB0ZWRDYW5kaWRhdGUpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoYWNjZXB0
ZWRDYW5kaWRhdGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEhhbmRsZUFjY2VwdGVk
Q2FuZGlkYXRlKCkKQEAgLTgyOTksMTcgKzgyOTksMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFVzZVN5c3RlbUFwcGVhcmFuY2UoYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlKQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VTeXN0ZW1BcHBlYXJhbmNlKHVzZVN5c3RlbUFw
cGVhcmFuY2UpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNl
U3lzdGVtQXBwZWFyYW5jZSh1c2VTeXN0ZW1BcHBlYXJhbmNlKSk7CiB9CiAgICAgCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhpbnQgaGVpZ2h0KQog
ewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SGVhZGVyQmFubmVy
SGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaW50IGhl
aWdodCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvb3Rl
ckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSk7
CiB9CiAKICNlbmRpZgpAQCAtODMzNSw3ICs4MzM1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omlt
YWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgbmV3
U2kKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2
ZW50cyhib29sIHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cykKIHsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZERpc3BhdGNoRmFrZU1vdXNl
TW92ZUV2ZW50cyhzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudHMpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkRGlzcGF0Y2hGYWtlTW91c2VN
b3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cykpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6aGFuZGxlQXV0b0ZpbGxCdXR0b25DbGljayhjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCkBAIC04Mzg0LDcgKzgzODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGxh
eWJhY2tUYXJnZXQodWludDY0X3QgY29udGV4dElkLCBSZWY8TWVkaWFQbGF5YmFja1RhcmdldAog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFja1RhcmdldFNlbGVjdGVkKGNv
bnRleHRJZCwgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3RlZChjb250ZXh0SWQsIHRhcmdl
dC0+dGFyZ2V0Q29udGV4dCgpKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpleHRlcm5hbE91
dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgYXZh
aWxhYmxlKQpAQCAtODM5Miw3ICs4MzkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4dGVybmFs
T3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKHVpbnQ2NF90IGNvbnRleHRJZCwgYm8KICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlE
aWRDaGFuZ2UoY29udGV4dElkLCBhdmFpbGFibGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoY29udGV4
dElkLCBhdmFpbGFibGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZFBsYXlU
b1BsYXliYWNrVGFyZ2V0KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBzaG91bGRQbGF5KQpAQCAt
ODQwMCw3ICs4NDAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZFBsYXlUb1BsYXli
YWNrVGFyZ2V0KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBzaG91bGQKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkUGxheVRvUGxheWJhY2tUYXJnZXQoY29udGV4dElk
LCBzaG91bGRQbGF5KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwgc2hvdWxkUGxheSkpOwogfQog
I2VuZGlmCiAKQEAgLTg0MjYsNyArODQyNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhcldo
ZWVsRXZlbnRUZXN0VHJpZ2dlcigpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdnZXIoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9uVXBkYXRlKFdURjo6RnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2spCkBAIC04NDQ5LDcgKzg0
NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVu
dChib29sIHNob3VsZFNjYWxlVmlld1RvRml0RG9jdQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50KHNob3VsZFNjYWxlVmlld1Rv
Rml0RG9jdW1lbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChzaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKQpA
QCAtODQ2OSw3ICs4NDY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldExvYWREZWNpc2lvbkZv
ckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENhbGxiYWMKICAgICAgICAgYm9v
bCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247CiAgICAgICAgIGF1dG8gbmV3Q2Fs
bGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25hbENhbGxiYWNrSUQobV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkpIDogT3B0aW9uYWxDYWxsYmFja0lEKCk7CiAKLSAg
ICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNp
b25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJZGVudGlmaWVy
KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRHZXRMb2Fk
RGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3Q2FsbGJhY2tJZGVu
dGlmaWVyKSk7CiAgICAgfSk7CiB9CiAKQEAgLTg0ODgsNyArODQ4OCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChib29sIGRpc2FibGVkKQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChkaXNh
YmxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRSZXNvdXJj
ZUNhY2hpbmdEaXNhYmxlZChkaXNhYmxlZCkpOwogfQogCiBXZWJDb3JlOjpVc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uIFdlYlBhZ2VQcm94eTo6dXNlckludGVyZmFjZUxheW91dERpcmVjdGlv
bigpCkBAIC04NTAxLDcgKzg1MDEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbihXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RAogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9u
KHN0YXRpY19jYXN0PHVpbnQzMl90Pih1c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih1c2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlkZVZhbGlkYXRpb25NZXNzYWdl
KCkKQEAgLTg1NDgsMTQgKzg1NDgsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEFsbG93UG9p
bnRlckxvY2soKQogICAgIENHRGlzcGxheUhpZGVDdXJzb3IoQ0dNYWluRGlzcGxheUlEKCkpOwog
ICAgIENHQXNzb2NpYXRlTW91c2VBbmRNb3VzZUN1cnNvclBvc2l0aW9uKGZhbHNlKTsKICNlbmRp
ZgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQWNxdWlyZVBvaW50
ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRBY3F1
aXJlUG9pbnRlckxvY2soKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVueVBv
aW50ZXJMb2NrKCkKIHsKICAgICBBU1NFUlQobV9pc1BvaW50ZXJMb2NrUGVuZGluZyAmJiAhbV9p
c1BvaW50ZXJMb2NrZWQpOwogICAgIG1faXNQb2ludGVyTG9ja1BlbmRpbmcgPSBmYWxzZTsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZE5vdEFjcXVpcmVQb2ludGVy
TG9jaygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTm90QWNx
dWlyZVBvaW50ZXJMb2NrKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdFBvaW50
ZXJVbmxvY2soKQpAQCAtODU2NiwxMiArODU2NiwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdFBvaW50ZXJVbmxvY2soKQogICAgICAgICBDR0Rpc3BsYXlTaG93Q3Vyc29yKENHTWFpbkRp
c3BsYXlJRCgpKTsKICNlbmRpZgogICAgICAgICBtX3VpQ2xpZW50LT5kaWRMb3NlUG9pbnRlckxv
Y2sodGhpcyk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlk
TG9zZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCkpOwogICAgIH0KIAogICAgIGlmIChtX2lzUG9pbnRl
ckxvY2tQZW5kaW5nKSB7CiAgICAgICAgIG1fdWlDbGllbnQtPmRpZExvc2VQb2ludGVyTG9jayh0
aGlzKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RB
Y3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSk7CiAgICAgfQogCiAgICAgbV9pc1Bv
aW50ZXJMb2NrZWQgPSBmYWxzZTsKQEAgLTg1OTIsNyArODU5Miw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVy
PiYmIGhhbmRsCiAgICAgYXV0byBpZGVudGlmaWVyUmVzdWx0ID0gbV91cmxTY2hlbWVIYW5kbGVy
c0J5SWRlbnRpZmllci5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShoYW5kbGVyKSk7CiAgICAgQVNT
RVJUX1VOVVNFRChpZGVudGlmaWVyUmVzdWx0LCBpZGVudGlmaWVyUmVzdWx0LmlzTmV3RW50cnkp
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVSTFNj
aGVtZUhhbmRsZXIoaWRlbnRpZmllciwgY2Fub25pY2FsaXplZFNjaGVtZS52YWx1ZSgpKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lzdGVyVVJMU2NoZW1lSGFu
ZGxlcihpZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZhbHVlKCkpKTsKIH0KIAogV2Vi
VVJMU2NoZW1lSGFuZGxlciogV2ViUGFnZVByb3h5Ojp1cmxTY2hlbWVIYW5kbGVyRm9yU2NoZW1l
KGNvbnN0IFN0cmluZyYgc2NoZW1lKQpAQCAtODY1MSw3ICs4NjUxLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UoKQogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpFZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hhbmdlKHVzZURhcmtBcHBlYXJh
bmNlKCksIHVzZUluYWN0aXZlQXBwZWFyYW5jZSgpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UodXNlRGFya0FwcGVh
cmFuY2UoKSwgdXNlSW5hY3RpdmVBcHBlYXJhbmNlKCkpKTsKIH0KIAogI2lmIFBMQVRGT1JNKENP
Q09BKQpAQCAtODY5MCw3ICs4NjkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydEF0dGFj
aG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBhdHRhY2htZW50LCBGdW5jdGlvbjwKIAogICAg
IGF1dG8gYXR0YWNobWVudElkZW50aWZpZXIgPSBhdHRhY2htZW50LT5pZGVudGlmaWVyKCk7CiAg
ICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBt
X3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChhdHRhY2ht
ZW50SWRlbnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1l
bnQtPmZpbGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRlbnRUeXBlKCksIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0QXR0YWNobWVudChh
dHRhY2htZW50SWRlbnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0
dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRlbnRUeXBlKCksIGNhbGxiYWNr
SUQpKTsKICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRhY2htZW50TWFwLnNldChhdHRh
Y2htZW50SWRlbnRpZmllciwgV1RGTW92ZShhdHRhY2htZW50KSk7CiB9CiAKQEAgLTg3MDYsNyAr
ODcwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhj
b25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAgICAgIGRhdGFSZWZlcmVuY2Ug
PSB7ICpkYXRhIH07CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVB
dHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZpZXIoKSwgYXR0YWNobWVudC5m
aWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50VHlwZSgpLCBhdHRhY2htZW50
LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlQXR0YWNobWVudEF0dHJpYnV0
ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQuZmlsZVNpemVGb3JEaXNwbGF5
KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVudC5maWxlTmFtZSgpLCBXVEZN
b3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEoY29uc3QgU3RyaW5nJiBpZGVu
dGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25zdCBTdHJpbmcmIHByZWZlcnJl
ZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCkBAIC04ODY2LDcgKzg4
NjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRpb25NYW5pZmVzdChGdW5jdGlv
bjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OgogCiAgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50
U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25NYW5pZmVzdChjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEFwcGxpY2F0aW9uTWFuaWZl
c3QoY2FsbGJhY2tJRCkpOwogfQogI2VuZGlmCiAKQEAgLTg5MzAsNyArODkzMCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXBvcnRQYWdlTG9hZFJlc3VsdChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldERlZmVyc0xvYWRpbmdGb3JUZXN0aW5nKGJv
b2wgZGVmZXJzTG9hZGluZykKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZyksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXREZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OmdldElzVmlld1Zpc2libGUoYm9vbCYgcmVzdWx0KQpAQCAt
ODk0Miw3ICs4OTQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZUN1cnJlbnRNb2RpZmll
clN0YXRlKCkKIHsKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShXRUJQUk9DRVNTX1dJTkRP
V1NFUlZFUl9CTE9DS0lORykgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBhdXRvIG1vZGlm
aWVycyA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Y3VycmVudFN0YXRlT2ZNb2RpZmllcktleXMo
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZUN1cnJlbnRN
b2RpZmllclN0YXRlKG1vZGlmaWVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVcGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZShtb2RpZmllcnMpKTsKICNlbmRpZgog
fQogCkBAIC04OTg0LDE5ICs4OTg0LDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsQWNxdWly
ZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbihXZWJQcm9jZXNzUHJveHkmCiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpzaW11bGF0ZURldmljZU9yaWVudGF0aW9uQ2hhbmdlKGRvdWJsZSBh
bHBoYSwgZG91YmxlIGJldGEsIGRvdWJsZSBnYW1tYSkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoYWxwaGEs
IGJldGEsIGdhbW1hKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNp
bXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoYWxwaGEsIGJldGEsIGdhbW1hKSk7CiB9CiAK
ICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZXRlY3RE
YXRhSW5BbGxGcmFtZXMoV2ViQ29yZTo6RGF0YURldGVjdG9yVHlwZXMgdHlwZXMsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgRGF0YURldGVjdGlvblJlc3VsdCYpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRldGVjdERhdGFJbkFsbEZyYW1lcyhzdGF0aWNfY2FzdDx1
aW50NjRfdD4odHlwZXMpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRldGVjdERhdGFJbkFs
bEZyYW1lcyhzdGF0aWNfY2FzdDx1aW50NjRfdD4odHlwZXMpKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlRGF0YURldGVjdGVkTGlu
a3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBEYXRhRGV0ZWN0aW9uUmVzdWx0Jik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlRGF0YURldGVjdGVkTGlua3Mo
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlEKTsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZURhdGFEZXRlY3RlZExpbmtzKCksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogI2VuZGlmCkBAIC05MTQ2LDcgKzkxNDYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGV4dElucHV0Q29udGV4dHNJblJlY3QoV2ViQ29yZTo6
RmxvYXRSZWN0IHJlY3QsIENvbXBsZXRpb25IYQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6VGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0
KGNvbnN0IFRleHRJbnB1dENvbnRleHQmIGNvbnRleHQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05MTU2LDcgKzkxNTYsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJbnB1dENvbnRleHQm
IGNvbnRleHQsIENvbXBsZQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNz
LT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6Rm9j
dXNUZXh0SW5wdXRDb250ZXh0KGNvbnRleHQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6Rm9j
dXNUZXh0SW5wdXRDb250ZXh0KGNvbnRleHQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIExvZ2dlciYgV2ViUGFnZVByb3h5Ojpsb2dnZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCA2YzVhZDYyNWQxMi4uNjhiNWEyNjc2YjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02Niw2ICs2Niw3IEBACiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJVbmRvU3RlcElELmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZVBvbGljaWVzRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgpA
QCAtODIsNiArODMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0U2l6ZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhUHJvZHVjZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UuaD4KQEAgLTM4MiwxNCArMzg0LDE0IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAjZW5kaWYK
ICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYWdlUHJveHk+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNz
UHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsK
KyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBXZWJQcm9j
ZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPEFQSTo6UGFnZUNvbmZpZ3Vy
YXRpb24+JiYpOwogICAgIHZpcnR1YWwgfldlYlBhZ2VQcm94eSgpOwogCiAgICAgc3RhdGljIHZv
aWQgZm9yTW9zdFZpc2libGVXZWJQYWdlSWZBbnkoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViUGFnZVBy
b3h5Kik+JiYpOwogCiAgICAgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJh
dGlvbigpIGNvbnN0OwogCi0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VJRDsgfQogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7
CiAKQEAgLTE1MDIsNyArMTUwNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5hdmlnYXRlV2l0
aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYk5h
dmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENoYW5n
ZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQ
cm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAotICAg
ICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1l
SW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwKKyAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
LCBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLAogICAgICAgICBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCiAgICAg
ICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBl
LCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBj
b25zdCBVc2VyRGF0YSYpOwpAQCAtMTUxMSw3ICsxNTEzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBB
UEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3Jl
OjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1J
ZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUmJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01h
aW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5
JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkRm9y
UXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYm
LCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKQEAgLTE1NDksOSArMTU1MSw5IEBAIFdFQlBBR0VQ
Uk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU18xCiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBj
dXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVu
dERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotCisgICAgCiBwcml2YXRlOgotICAgIFdlYlBhZ2VQ
cm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8
QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
LCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKICAg
ICB2b2lkIG5vdGlmeVByb2Nlc3NQb29sVG9QcmV3YXJtKCk7CkBAIC0xNjI3LDEzICsxNjI5LDEz
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZp
Z2F0aW9uSUQpOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
LAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwK
KyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25T
ZW5kZXI+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0
X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0Rh
dGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRh
JiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
CiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBj
b25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmLAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
Jik7CkBAIC0xNjU1LDcgKzE2NTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlz
dG9yeVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRf
dCBmcmFtZUlEKTsKIAogICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShj
b25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxh
eWVkUmVwbHkmJik7CisgICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEm
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdl
OjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzaG93UGFnZSgpOwogICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFT
Y3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZp
cm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwg
Y29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZp
cm06OkRlbGF5ZWRSZXBseSYmKTsKQEAgLTIzMjcsNyArMjMyOSw3IEBAIFdFQlBBR0VQUk9YWV9M
T0FET1BUSU1JWkVSX0FERElUSU9OU18yCiAgICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRpb25C
dWJibGU+IG1fdmFsaWRhdGlvbkJ1YmJsZTsKICNlbmRpZgogCi0gICAgY29uc3QgdWludDY0X3Qg
bV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAK
ICAgICBib29sIG1faXNQYWdlU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zp
c2l0ZWRMaW5rcyB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2ZmNlY2RjNmI2NS4uYjFlNzk5MjIzYmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIyLDcgKzIyLDcgQEAKIAogbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIFVJIG1l
c3NhZ2VzCi0gICAgQ3JlYXRlTmV3UGFnZShzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVy
ZXMgd2luZG93RmVhdHVyZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5h
dmlnYXRpb25BY3Rpb25EYXRhKSAtPiAodWludDY0X3QgbmV3UGFnZUlELCBPcHRpb25hbDxXZWJL
aXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IG5ld1BhZ2VQYXJhbWV0ZXJzKSBTeW5jaHJv
bm91cworICAgIENyZWF0ZU5ld1BhZ2Uoc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVj
dCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcywgc3RydWN0IFdlYktpdDo6
TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEpIC0+IChPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlELCBPcHRpb25hbDxXZWJLaXQ6OldlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM+IG5ld1BhZ2VQYXJhbWV0ZXJzKSBTeW5jaHJvbm91cwogICAg
IFNob3dQYWdlKCkKICAgICBDbG9zZVBhZ2UoYm9vbCBzdG9wUmVzcG9uc2l2ZW5lc3NUaW1lcikK
ICAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBTdHJpbmcgbWVzc2FnZSkg
LT4gKCkgU3luY2hyb25vdXMKQEAgLTEwNCw4ICsxMDQsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdl
UHJveHkgewogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMKICAgICBEZWNpZGVQb2xpY3lGb3JSZXNw
b25zZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRp
cmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5l
cklEKQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZy
YW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFj
dGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3du
bG9hZElEIGRvd25sb2FkSUQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4g
d2Vic2l0ZVBvbGljaWVzKSBTeW5jaHJvbm91cworICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRp
ZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0
IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVj
dCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEs
IHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
blN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKSAtPiAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNr
SWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2Fk
SUQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVz
KSBTeW5jaHJvbm91cwogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRf
dCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50
aWZpZXIsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFt
ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBV
bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKaW5k
ZXggYzgwMjNkZTQxNjEuLmY0OTcxNTFkNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwCkBAIC00Nyw3ICs0Nyw3
IEBAIHZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2UoV2ViUGFnZVBy
b3h5JiB3ZWJQYWdlUHJveHksIFdlYlByb2NlCiAgICAgUkVMRUFTRV9BU1NFUlQoIXByb2Nlc3Mu
aXNQcmV3YXJtZWQoKSk7CiAKICAgICBpZiAobV9wcm9jZXNzZXMuYWRkKCZwcm9jZXNzKS5pc05l
d0VudHJ5KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICIlcCAtIFdlYlByb2Nlc3NM
aWZldGltZU9ic2VydmVyOjphZGRXZWJQYWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCB0aGlzLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQcm94eS5wYWdl
SUQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICIlcCAtIFdlYlByb2Nlc3NMaWZl
dGltZU9ic2VydmVyOjphZGRXZWJQYWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCB0aGlzLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQcm94eS5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKICAgICAgICAgd2ViUHJvY2Vzc1dpbGxPcGVuQ29ubmVjdGlvbihwcm9j
ZXNzLCAqcHJvY2Vzcy5jb25uZWN0aW9uKCkpOwogICAgIH0KIApAQCAtNjMsNyArNjMsNyBAQCB2
b2lkIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94
eSYgd2ViUGFnZVByb3h5LCBXZWJQcgogICAgIHdlYlBhZ2VEaWRDbG9zZUNvbm5lY3Rpb24od2Vi
UGFnZVByb3h5LCAqcHJvY2Vzcy5jb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fcHJvY2Vzc2Vz
LnJlbW92ZSgmcHJvY2VzcykpIHsKLSAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0g
V2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2Vi
UGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0g
V2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2Vi
UGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgICAgICB3ZWJQcm9jZXNzRGlkQ2xv
c2VDb25uZWN0aW9uKHByb2Nlc3MsICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDBlMTM5ZjMw
ZDljLi4wYjhiMzQ1ZWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
b29sLmNwcApAQCAtMTI5Niw5ICsxMjk2LDkgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5SGF2
ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBXZWJzaXRlRGF0YVN0b3JlJiBzdG8KIH0K
ICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRh
U3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lk
IFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7Ci0gICAgYXV0byBy
ZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwg
SGFzaFNldDx1aW50NjRfdD4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOworICAgIGF1
dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmFkZChkYXRhU3RvcmUuc2Vzc2lvbklE
KCksIEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlE
KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAg
YXV0byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CkBAIC0xMzE2LDcgKzEzMTYs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUo
dWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNz
UG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNp
dGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2lu
Z1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklE
KCk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Np
b25JRCk7CkBAIC0yMjExLDcgKzIyMTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3Rh
dGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmCiB9CiAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBX
ZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0
X3QgcGFnZUlEKSBjb25zdAorU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Bv
b2w6OnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBm
b3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2Vz
LnZhbHVlcygpKSB7CkBAIC0yNTE5LDcgKzI1MTksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpj
bGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpCiAgICAgc2VuZFRvQWxsUHJvY2Vz
c2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVz
dGluZygpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9h
ZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21h
aW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNvbW1pdHRlZENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAxNjU1NDViMWEyZi4uMTdlM2U4MDJi
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTQ4LDYg
KzE0OCwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwg
SVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKICAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6
TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB7CisgICAgICAgIGFkZE1lc3NhZ2VSZWNl
aXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlY2Vp
dmVyKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBy
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVy
TmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAgIHsKKyAgICAgICAg
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQu
dG9VSW50NjQoKSk7CisgICAgfQogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+Jik7CkBAIC0xOTMsOCArMjA1LDggQEAgcHVibGljOgogCiAgICAgUmVmPFdlYlBhZ2VQcm94
eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYpOwogCi0gICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3Qg
cGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0gICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRl
RGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHZvaWQg
cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBX
ZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3Jl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAgICAgYm9vbCBo
YXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJikgY29uc3Q7CiAK
ICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCk7IH0KQEAgLTM2NSw3ICszNzcsNyBA
QCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxp
c2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQ
cm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lv
bklEPik7Ci0gICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogc2VydmljZVdvcmtlclByb2Nl
c3NQcm94eUZyb21QYWdlSUQodWludDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29y
a2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQog
ICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wg
YWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxs
b3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIo
KSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtl
cjsgfQpAQCAtNDkzLDcgKzUwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmREaXNwbGF5Q29u
ZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpOwogICAgIHZvaWQgY2xlYXJDdXJy
ZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoKTsKIAotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIGNvbW1pdHRlZENy
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYgdG9Eb21haW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogI2lmIFBM
QVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQgc2V0U2FuZGJveEVuYWJsZWQo
Ym9vbCBlbmFibGVkKSB7IG1fc2FuZGJveEVuYWJsZWQgPSBlbmFibGVkOyB9OwpAQCAtNzU4LDcg
Kzc3MCw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXRocyBtX3Jlc29sdmVkUGF0aHM7CiAK
LSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV9zZXNzaW9u
VG9QYWdlSURzTWFwOworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7CiAgICAgUnVuTG9vcDo6
VGltZXI8V2ViUHJvY2Vzc1Bvb2w+IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0aW9u
VGltZXI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggODIwMzQ2NWNiMjguLjY3ODMxZTIwNzgwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTExMCwx
MCArMTEwLDkgQEAgV2ViUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJ
ZGVudGlmaWVyKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWYKICAgICByZXR1cm4gYWxsUHJvY2Vz
c2VzKCkuZ2V0KGlkZW50aWZpZXIpOwogfQogCi11aW50NjRfdCBXZWJQcm9jZXNzUHJveHk6Omdl
bmVyYXRlUGFnZUlEKCkKK1BhZ2VJZGVudGlmaWVyIFdlYlByb2Nlc3NQcm94eTo6Z2VuZXJhdGVQ
YWdlSUQoKQogewotICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVQYWdlSUQ7Ci0gICAgcmV0dXJu
ICsrdW5pcXVlUGFnZUlEOworICAgIHJldHVybiBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsK
IH0KIAogc3RhdGljIFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwJiBnbG9iYWxQYWdl
TWFwKCkKQEAgLTMzMCw3ICszMjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2h1dERvd24o
KQogICAgIG1fcHJvY2Vzc1Bvb2wtPmRpc2Nvbm5lY3RQcm9jZXNzKHRoaXMpOwogfQogCi1XZWJQ
YWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCitXZWJQ
YWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQp
CiB7CiAgICAgcmV0dXJuIGdsb2JhbFBhZ2VNYXAoKS5nZXQocGFnZUlEKTsKIH0KQEAgLTM2Myw3
ICszNjIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxl
bWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCogbWVzc2FnZQogCiBSZWY8V2ViUGFnZVByb3h5PiBX
ZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgdWlu
dDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IGdlbmVy
YXRlUGFnZUlEKCk7CiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94
eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdURk1vdmUocGFnZUNvbmZpZ3Vy
YXRpb24pKTsKIAogICAgIGFkZEV4aXN0aW5nV2ViUGFnZSh3ZWJQYWdlLmdldCgpLCBCZWdpbnNV
c2luZ0RhdGFTdG9yZTo6WWVzKTsKQEAgLTQxNSwxMCArNDE0LDEwIEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgRW5kc1VzaW5nRGF0
YVN0b3JlIGVuCiAgICAgbWF5YmVTaHV0RG93bigpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94
eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtT
dG9yZSwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRM
aW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvJiB1c2VycyA9IG1fdmlzaXRlZExpbmtTdG9yZXNX
aXRoVXNlcnMuZW5zdXJlKCZ2aXNpdGVkTGlua1N0b3JlLCBbXSB7Ci0gICAgICAgIHJldHVybiBI
YXNoU2V0PHVpbnQ2NF90PiB7IH07CisgICAgICAgIHJldHVybiBIYXNoU2V0PFBhZ2VJZGVudGlm
aWVyPiB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJUKCF1c2Vycy5j
b250YWlucyhwYWdlSUQpKTsKQEAgLTQyOCw3ICs0MjcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtT
dG9yZQogICAgICAgICB2aXNpdGVkTGlua1N0b3JlLmFkZFByb2Nlc3MoKnRoaXMpOwogfQogCi12
b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExp
bmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9j
ZXNzUHJveHk6OnJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZp
c2l0ZWRMaW5rU3RvcmUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvIGl0ID0g
bV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5maW5kKCZ2aXNpdGVkTGlua1N0b3JlKTsKICAg
ICBpZiAoaXQgPT0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbmQoKSkKQEAgLTU0MSw3
ICs1NDAsNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxl
ZCgpCiB9CiAjZW5kaWYKIAotYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFn
ZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29sIFdlYlByb2Nlc3NQcm94eTo6aGFz
UHJvdmlzaW9uYWxQYWdlV2l0aElEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAg
ICBmb3IgKGF1dG8qIHByb3Zpc2lvbmFsUGFnZSA6IG1fcHJvdmlzaW9uYWxQYWdlcykgewogICAg
ICAgICBpZiAocHJvdmlzaW9uYWxQYWdlLT5wYWdlKCkucGFnZUlEKCkgPT0gcGFnZUlEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA5YTZjYmYxZjQ2MC4u
YWQzZjAzOGRkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZFN0cmluZ0hhc2guaD4KQEAgLTk3LDcgKzk4LDcgQEAgZW51bSBjbGFzcyBBbGxvd1By
b2Nlc3NDYWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGlj
IEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVu
dCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJD
bGllbnQgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdl
YkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOworICAgIHR5cGVkZWYgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFw
OwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFQSTo6VXNlckluaXRpYXRl
ZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKICAgICBlbnVtIGNsYXNzIElzUHJl
d2FybWVkIHsKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJzaXRl
RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIHN0YXRpYyBXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKLSAg
ICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3Rh
dGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAg
UmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZW51bSBjbGFzcyBCZWdpbnNVc2luZ0RhdGFTdG9y
ZSA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0xNDksMTAgKzE1MCwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3ModWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3MoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlu
a1N0b3JlJiwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgYWRk
VmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5r
U3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFkZFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5JiwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CkBAIC0z
MTEsNyArMzEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ViUGFnZU1lZGlhU3RhdGVEaWRDaGFu
Z2UoV2ViUGFnZVByb3h5Jik7CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgdWludDY0X3QgZ2Vu
ZXJhdGVQYWdlSUQoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZ2VuZXJh
dGVQYWdlSUQoKTsKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRl
RGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQpOwogCiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
CkBAIC0zNTQsNyArMzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZUNvbnRleHRG
b3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKICNlbmRpZgog
Ci0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWludDY0X3QgcGFnZUlEKSBjb25z
dDsKKyAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0ZUJhY2tGb3J3YXJkSXRlbShX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7CiAKICAgICAvLyBQbHVnaW5zCkBAIC00NDcs
NyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFByb3Zpc2lvbmFsUGFnZVByb3h5Kj4g
bV9wcm92aXNpb25hbFBhZ2VzOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25NYXAgbV91c2VySW5p
dGlhdGVkQWN0aW9uTWFwOwogCi0gICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNl
dDx1aW50NjRfdC8qIHBhZ2VJRCAqLz4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7Cisg
ICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAgICAgSGFzaFNldDxXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGll
czsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcApp
bmRleCBlMzU1MzE5ZWE0Yy4uN2Q1NzVhNDA0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBX
ZWJVUkxTY2hlbWVIYW5kbGVyOjp0YXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smIHRhc2sp
CiAgICAgcGxhdGZvcm1UYXNrQ29tcGxldGVkKHRhc2spOwogfQogCi12b2lkIFdlYlVSTFNjaGVt
ZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IHRhc2tJRCkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6cmVtb3ZlVGFza0Zyb21QYWdlTWFw
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQogewogICAgIGF1dG8gaXRl
cmF0b3IgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5maW5kKHBhZ2VJRCk7CiAgICAgQVNTRVJU
KGl0ZXJhdG9yICE9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCA4OTk3NmM2MWY4My4u
YjdhZjA3NTk3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVI
YW5kbGVyLmgKQEAgLTY2LDEzICs2NiwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtVGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJikg
PSAwOwogCi0gICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCB0YXNrSUQpOworICAgIHZvaWQgcmVtb3ZlVGFza0Zyb21QYWdlTWFwKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSUQpOwogICAgIFdlYlByb2Nlc3NQcm94eSog
cHJvY2Vzc0ZvclRhc2tJZGVudGlmaWVyKHVpbnQ2NF90KSBjb25zdDsKIAogICAgIHVpbnQ2NF90
IG1faWRlbnRpZmllcjsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxXZWJVUkxTY2hlbWVU
YXNrPj4gbV90YXNrczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBIYXNoU2V0PHVpbnQ2NF90Pj4g
bV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgSGFzaFNldDx1aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyOwogICAgIAog
ICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jTG9hZENvbXBsZXRpb25IYW5kbGVy
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4
IDE5YTZiYjg0YzNjLi45YjdhZDVlMjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVU
YXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJl
c3BvbnMKICAgICAgICAgbV9zeW5jUmVzcG9uc2UgPSByZXNwb25zZTsKIAogICAgIG1fcmVxdWVz
dCA9IHJlcXVlc3Q7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxT
Y2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRp
ZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlLCByZXF1ZXN0KSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFBlcmZvcm1S
ZWRpcmVjdGlvbihtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVy
LCByZXNwb25zZSwgcmVxdWVzdCkpOwogCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7
CiB9CkBAIC05Myw3ICs5Myw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgaWYgKGlz
U3luYygpKQogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3Bv
bnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3Bv
bnNlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJM
U2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZp
ZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSkpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBl
OjpOb25lOwogfQogCkBAIC0xMTgsNyArMTE4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpk
aWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCi0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEo
bV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgeyBidWZmZXIg
fSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNj
aGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwg
bV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5v
bmU7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENv
bXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAg
ICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFu
ZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRl
KG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSk7
CiAgICAgbV91cmxTY2hlbWVIYW5kbGVyLT50YXNrQ29tcGxldGVkKCp0aGlzKTsKIAogICAgIHJl
dHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwpAQCAtMTY5LDQgKzE2OSwxNCBAQCB2b2lkIFdlYlVS
TFNjaGVtZVRhc2s6OnN0b3AoKQogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcih7IH0s
IGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9KTsKIH0KIAorSVBD
OjpDb25uZWN0aW9uKiBXZWJVUkxTY2hlbWVUYXNrOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpOworfQorCit1aW50
NjRfdCBXZWJVUkxTY2hlbWVUYXNrOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNr
LmgKaW5kZXggYjg3MjA3M2JkMjcuLjdmMTRiOTg2MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25j
ZQogCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC01MSwxMyArNTIsMTMgQEAgY2xhc3MgV2ViUGFn
ZVByb3h5OwogCiB1c2luZyBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPjsKIAotY2xhc3Mg
V2ViVVJMU2NoZW1lVGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+LCBw
dWJsaWMgSW5zdGFuY2VDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+IHsKK2NsYXNzIFdlYlVSTFNj
aGVtZVRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVUYXNrPiwgcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJbnN0YW5jZUNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFz
az4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlVSTFNjaGVtZVRhc2spOwogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFzaz4gY3JlYXRlKFdlYlVSTFNjaGVtZUhh
bmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBpZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxl
ciYmKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50
aWZpZXI7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZGVu
dGlmaWVyOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzcygp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQogCiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CkBA
IC04MCw2ICs4MSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViVVJMU2NoZW1lVGFz
ayhXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5Jiwg
dWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2Fk
Q29tcGxldGlvbkhhbmRsZXImJik7CisgICAgCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCisg
ICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFs
OworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7
CiAKICAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuICEhbV9zeW5jQ29tcGxldGlvbkhh
bmRsZXI7IH0KIApAQCAtODcsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSog
bV9wYWdlOwogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50
NjRfdCBtX2lkZW50aWZpZXI7Ci0gICAgdWludDY0X3QgbV9wYWdlSWRlbnRpZmllcjsKKyAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9yZXNwb25zZVNlbnQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAw
YmY1MTEyYTllNC4uMGE4YjBjMTEyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNTc2LDcgKzE1
NzYsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRy
eVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUsIENvbXBsZQogICAgICAgICBwcm9jZXNzUG9vbC0+ZW5z
dXJlTmV0d29ya1Byb2Nlc3MoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Y2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2Vi
UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghd2ViUGFn
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCmluZGV4IDY0MmUzMzA5ZDA3Li44MjJjM2ZjNzYzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1
ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTEzNSw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsK
ICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModWludDY0
X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlu
cyk+JiYpOworICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21h
aW5zKT4mJik7CiAgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1ByZXZhbGVudFJlc291
cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZv
aWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRG
cm9tLCBjb25zdCBVUkwmIGhvc3RSZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdH
ZXN0dXJlQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMDgzZDZmYWYxNTIuLmNlZmRlNjFjNDliIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9s
bGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJJT1MubW0KQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJv
bGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlv
bgogICAgICAgICBpZiAoZmluaXNoKQogICAgICAgICAgICAgbV93ZWJQYWdlUHJveHlGb3JCYWNr
Rm9yd2FyZExpc3RGb3JDdXJyZW50U3dpcGUtPm5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZCh0cmFu
c2l0aW9uQ29tcGxldGVkLCAqdGFyZ2V0SXRlbSk7CiAgICAgfV07Ci0gICAgdWludDY0X3QgcGFn
ZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBh
Z2VQcm94eS5wYWdlSUQoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50R2Vz
dHVyZUlEOwogICAgIFttX3N3aXBlVHJhbnNpdGlvbkNvbnRleHQgX3NldENvbXBsZXRpb25IYW5k
bGVyOltwYWdlSUQsIGdlc3R1cmVJRCwgdGFyZ2V0SXRlbV0gKF9VSVZpZXdDb250cm9sbGVyVHJh
bnNpdGlvbkNvbnRleHQgKmNvbnRleHQsIEJPT0wgZGlkQ29tcGxldGUpIHsKICAgICAgICAgaWYg
KGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQsIGdl
c3R1cmVJRCkpCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6
OmVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLAogICAg
ICAgICBtX3dlYlBhZ2VQcm94eS5kaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICB9CiAK
LSAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBhdXRv
IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJl
SUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgbV9sb2FkQ2FsbGJhY2sgPSBbdGhpcywgcGFn
ZUlELCBnZXN0dXJlSURdIHsKICAgICAgICAgYXV0byBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVBy
b3h5LnByb3Zpc2lvbmFsRHJhd2luZ0FyZWEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCA3NjBh
MWQwMDlkZS4uMDE3OTk1YTUxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTE2NCw3ICsxNjQs
NyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKIAotICAgICAgICBtX2luc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlk
U2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSk7CiAgICAgfTsK
IAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRVUkwsIGNvbnN0IFMKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKICAgICBXZWJQYWdl
UHJveHkqIGluc3BlY3RvclBhZ2UgPSB3ZWJWaWV3KCktPl9wYWdlLmdldCgpOwotICAgIGluc3Bl
Y3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6
RGlkQXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgaW5zcGVjdG9yUGFnZS0+cGFn
ZUlEKCkpOworICAgIGluc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3Bl
Y3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pKTsKIH0KIAogdm9p
ZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgRmxv
YXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCBmNzBm
MWE0YWM0ZC4uYWU2YzkwZmFkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1t
CkBAIC0xMjEsOCArMTIxLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVBy
b3h5OjpkaWRVcGRhdGVHZW9tZXRyeSgpCiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUNo
YW5nZUlEKQogewotICAgIFNlY29uZHMgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgPSBTZWNv
bmRzOjpmcm9tTWlsbGlzZWNvbmRzKDI1MCk7Ci0gICAgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+
d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZT4obV93ZWJQYWdlUHJveHkucGFnZUlEKCksIGFjdGl2aXR5U3Rh
dGVVcGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5
bmNNZXNzYWdlQXJyaXZlcyk7CisgICAgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFu
ZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0
aXZpdHlTdGF0ZT4obV93ZWJQYWdlUHJveHkucGFnZUlEKCksIDI1MF9tcywgSVBDOjpXYWl0Rm9y
T3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCiB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndpbGxTZW5kVXBkYXRlR2VvbWV0
cnkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJl
Q29udHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVy
ZUNvbnRyb2xsZXJNYWMubW0KaW5kZXggNTAyNDFkOGJmNjIuLmY1M2ZiMjFlM2VlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXJNYWMubW0KQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
aGFuZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2ZW50ICpldmVudCwgRmxvYQogCiAg
ICAgICAgIC8vIEZJWE1FOiBXZSBkcm9wIHRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBv
biB0aGUgZmxvb3IsIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJv
dW5kcyB5ZXQuCiAgICAgICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VT
Y2FsZUZhY3RvcigpOwotICAgICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFn
bmlmaWNhdGlvbkdlc3R1cmUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgICAgICBt
X3dlYlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
OjpDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpKTsKICAgICAgICAgbV9s
YXN0TWFnbmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24gPSBmYWxzZTsKIAog
ICAgICAgICByZXR1cm47CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4p
CiAgICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpOb25lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21h
cnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7
CisgICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmln
aW4pKTsKIH0KIAogc3RhdGljIGZsb2F0IG1heGltdW1SZWN0YW5nbGVDb21wb25lbnREZWx0YShG
bG9hdFJlY3QgYSwgRmxvYXRSZWN0IGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCAyMTUxNjYy
ZDM0Ny4uOGFmMzRhYzRjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMTkzLDcgKzE5Myw3
IEBAIC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcldpbGxCZWdpbkFuaW1hdGlvbjoo
TlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjCiAgICAgLy8gRklYTUU6IENvbm5lY3Rpb24gY2Fu
IGJlIG51bGwgaWYgdGhlIHByb2Nlc3MgaXMgY2xvc2VkOyB3ZSBzaG91bGQgY2xlYW4gdXAgYmV0
dGVyIGluIHRoYXQgY2FzZS4KICAgICBpZiAoX3N0YXRlID09IFdlYktpdDo6SW1tZWRpYXRlQWN0
aW9uU3RhdGU6OlBlbmRpbmcpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBfcGFn
ZS0+cHJvY2VzcygpLmNvbm5lY3Rpb24oKSkgewotICAgICAgICAgICAgYm9vbCByZWNlaXZlZFJl
cGx5ID0gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3Q+KF9wYWdlLT5w
YWdlSUQoKSwgU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyg1MDApKTsKKyAgICAgICAgICAgIGJv
b2wgcmVjZWl2ZWRSZXBseSA9IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0
ZWx5PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRU
ZXN0PihfcGFnZS0+cGFnZUlEKCksIDUwMF9tcyk7CiAgICAgICAgICAgICBpZiAoIXJlY2VpdmVk
UmVwbHkpCiAgICAgICAgICAgICAgICAgX3N0YXRlID0gV2ViS2l0OjpJbW1lZGlhdGVBY3Rpb25T
dGF0ZTo6VGltZWRPdXQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCAwMDdkODdkZmNkOC4uZjRhYjkx
ZTg5YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0
b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVj
dG9yUHJveHlNYWMubW0KQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYg
YwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFj
dHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJv
cjpOVUxMXTsKIAotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSks
IG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVT
dHJpbmddKSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC01MjIs
NyArNTIyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3Qg
U3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICBbaGFuZGxlIHdyaXRlRGF0
YTpbY29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAg
IFtoYW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0
ZVN0cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBh
YnNvbHV0ZVN0cmluZ10pKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJh
bWVEaWRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJv
eHlNYWMubW0KaW5kZXggODdjNjhiMzM0ODUuLjQ1NWQyZDVkNDAyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE3MSw3ICsxNzEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgRmxv
YXRSZWN0JiB2aWV3RnJhbWVJbldpbmRvdwogICAgIC8vIEluIGNhc2UgdGhlIFVJIGNsaWVudCBv
dmVycmlkZXMgZ2V0V2luZG93RnJhbWUoKSwgd2UgY2FsbCBpdCBoZXJlIHRvIG1ha2Ugc3VyZSB3
ZSBzZW5kIHRoZSBhcHByb3ByaWF0ZSB3aW5kb3cgZnJhbWUuCiAgICAgbV91aUNsaWVudC0+d2lu
ZG93RnJhbWUoKnRoaXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHZp
ZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXNd
IChGbG9hdFJlY3Qgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKSB7CiAgICAgICAgIEZs
b2F0UmVjdCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMgPSBwYWdlQ2xp
ZW50KCkuY29udmVydFRvVXNlclNwYWNlKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcyk7
Ci0gICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dBbmRWaWV3
RnJhbWVzQ2hhbmdlZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIHdpbmRvd0ZyYW1l
SW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRl
cywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcyksIG1fcGFnZUlEKTsKKyAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6V2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQod2luZG93RnJh
bWVJblNjcmVlbkNvb3JkaW5hdGVzLCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRp
bmF0ZXMsIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29v
cmRpbmF0ZXMpKTsKICAgICB9KTsKIH0KIApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCiAgICAg
aWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Ny
b2xsYWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYWlu
RnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRp
bmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSwgYm9vbCByZWdpc3RlclVu
ZG9Hcm91cCkKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGlj
dGF0ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6Okluc2VydERpY3RhdGVkVGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRpY3Rh
dGlvbkFsdGVybmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXApLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmModGV4dCwgcmVwbGFj
ZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCkpOwog
I2Vsc2UKICAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMucmVnaXN0
ZXJVbmRvR3JvdXAgPSByZWdpc3RlclVuZG9Hcm91cDsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMo
Y29uc3QgRWRpdGluZ1JhbmdlJgogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2Us
IGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXR0
cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJS
YW5nZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGlu
Z1JhbmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMjQ5LDcgKzI0
OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb24oV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgCi0gICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNlbGVjdGlvbihjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNlbGVjdGlvbihj
YWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb25DYWxs
YmFjayhjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0
aW9uSGFzTXVsdGlwbGVGb250cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMjcxLDcgKzI3
MSw3IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQo
KQogICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgCiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdl
VGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpH
ZXRTdHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRT
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIG1fcGFnZUlELCBtZXNz
YWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1Nl
bGVjdGlvbkZvclBhc3RlYm9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJl
dHVybiB2YWx1ZTsKIH0KIApAQCAtMjgyLDggKzI4Miw4IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFy
ZWRCdWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3Qg
U3RyCiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHVpbnQ2NF90IHNpemUg
PSAwOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nlc3Mo
KS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9h
cmQocGFzdGVib2FyZFR5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJv
YXJkOjpSZXBseShoYW5kbGUsIHNpemUpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAg
IHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2Fy
ZChwYXN0ZWJvYXJkVHlwZSksCisgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2Vs
ZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgbWVzc2FnZVRpbWVvdXQp
OwogICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6
bWFwKGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CkBAIC0yOTcs
MTQgKzI5NywxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJv
YXJkKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKICAgICBib29sIHJlc3VsdCA9IGZh
bHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nlc3Mo
KS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJk
KHBhc3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFz
dGVib2FyZDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBz
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVi
b2FyZDo6UmVwbHkocmVzdWx0KSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0
eXBlcywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRh
KHR5cGVzLCBkYXRhKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
cGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEpKTsKIH0KICNlbmRp
ZgogCkBAIC0zMzQsMjIgKzMzNCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZENvbXBsZXhU
ZXh0SW5wdXRUb1BsdWdpbih1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2lu
KHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB0ZXh0SW5wdXQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdp
bihwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgdGV4dElucHV0KSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojp1cHBlcmNhc2VXb3JkKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VXBwZXJjYXNlV29yZCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VXBwZXJjYXNlV29yZCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6Omxvd2VyY2FzZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb3dlcmNhc2VXb3JkKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb3dlcmNhc2VXb3JkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FwaXRhbGl6
ZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBpdGFs
aXplV29yZCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwaXRh
bGl6ZVdvcmQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0
ZUVuYWJsZWQoYm9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkKQEAgLTM1OSw3ICszNTks
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wg
aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQpCiAKICAgICBUZXh0Q2hlY2tlcjo6c2V0U21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKTsKICAgICBtX2lz
U21hcnRJbnNlcnREZWxldGVFbmFibGVkID0gaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7Ci0g
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRl
RW5hYmxlZChpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFydElu
c2VydERlbGV0ZUVuYWJsZWQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1E
aWN0aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1
cEluZm8pCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyVUlQ
cm9jZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlU
b2tlbnMoZWxlbWVudFRva2VuLCB3aW5kb3dUb2tlbiksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoZWxl
bWVudFRva2VuLCB3aW5kb3dUb2tlbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGx1Z2lu
Rm9jdXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0
SWRlbnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hhc0ZvY3VzKQpAQCAtNDI0
LDcgKzQyNCw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGREZWxheVdpbmRvd09yZGVyaW5n
Rm9yRXZlbnQoY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50CiAKICAgICBib29sIHJlc3VsdCA9
IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7Ci0gICAgcHJvY2Vz
cygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5n
RXZlbnQoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmlu
Z0V2ZW50OjpSZXBseShyZXN1bHQpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQo
ZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50
OjpSZXBseShyZXN1bHQpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IApAQCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphY2NlcHRzRmlyc3RNb3Vz
ZShpbnQgZXZlbnROdW1iZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVuCiAKICAgICBib29s
IHJlc3VsdCA9IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7Ci0g
ICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3Vz
ZShldmVudE51bWJlciwgZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91
c2U6OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVyLCBldmVu
dCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZTo6UmVwbHkocmVzdWx0KSwg
bWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
ci5jcHAKaW5kZXggZmY0NDkzNDFkOWUuLjU3ZjNmZTE3M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
LmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENvb3Jk
aW5hdG9yOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBh
eW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewot
ICAgIHJldHVybiBtX3dlYlBhZ2UucGFnZUlEKCk7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdl
SUQoKS50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRh
dGVNZXJjaGFudChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGIxY2JjOTYzYjBlLi40NTRjYTZiYzg0NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUo
V2ViRnJhbWUmIGZyYW1lKQogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgZXJyb3JNZXNzYWdlLCBl
cnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBl
eHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50
NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0
ZUphdmFTY3JpcHRGdW5jdGlvbihQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9v
bCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1
aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zMTIsNyAr
MzEyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRFdmFsdWF0ZUphdmFT
Y3JpcHRGdW5jdGlvbih1aW50NjRfdCBmcmFtZUlELAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRp
b25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxsYmFja0lELCByZXN1
bHQsIGVycm9yVHlwZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFs
KHVpbnQ2NF90IHBhZ2VJRCwgdWkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQs
IGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5v
ZGVIYW5kbGUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
PiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2Ug
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdl
KSB7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpy
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwKICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZyYW1lRnJvbUVsZW1lbnQtPmZyYW1lSUQoKSk7
CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVX
aXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJl
c29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBh
Z2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAg
aWYgKCFwYWdlKSB7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDYK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQo
KSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZy
YW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7
CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHBhcmVudEZyYW1lLT5m
cmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJh
bWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5Ojpmb2N1c0ZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0
aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjb252ZXJ0UG9pbnRGcm9tRnJhbWVDbGllbnRUb1Jvb3RW
aWV3KFdlYkNvcmU6OkZyYW1lVgogICAgIHJldHVybiBjbGllbnRQb2ludDsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbElu
dG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRp
b25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dChQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29s
IHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3Rl
bSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRS
ZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHJl
c3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBpc09ic2N1cmVkKTsK
IH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRs
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzAzLDcgKzcwMyw3IEBAIHN0
YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoV2ViUGFnZSYg
cGFnZSwgV2ViQ29yZTo6RWxlbWVuCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVk
ZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1Zp
ZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsK
ICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAKQEAgLTc1MSw3ICs3NTEsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNz
aW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIHsgfSksIDApOwogfQog
Ci12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFtZSh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzc2LDcgKzc3Niw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpu
dWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkZWxl
dGVDb29raWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
Y29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eS5oCmluZGV4IDYyOTU0MWQyMGJhLi4xMTY3NjQ1Mjc3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlICJDb29yZGluYXRlU3lzdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC02MCwxNyArNjEsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVk
IGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgbWVzc2FnZXMKLSAgICB2b2lkIGV2YWx1YXRl
SmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVj
dHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lk
IHJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHJlc29sdmVDaGls
ZEZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
dHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWlu
dDY0X3QpPiYmKTsKLSAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
PiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIGZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xs
SW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJ
bnRQb2ludD4sIGJvb2wpPiYmKTsKLSAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7Ci0gICAgdm9pZCB0YWtlU2NyZWVu
c2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29v
a2llKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOworICAgIHZvaWQg
ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3Vt
ZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tU
aW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1l
V2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
dWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
bm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50
NjRfdCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAg
dm9pZCByZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0
X3QpPiYmKTsKKyAgICB2b2lkIGZvY3VzRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVp
bnQ2NF90IGZyYW1lSUQpOworICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29s
IHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2Vi
Q29yZTo6SW50UG9pbnQ+LCBib29sKT4mJik7CisgICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhh
bmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAg
dm9pZCB0YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJh
bWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9v
bCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29r
aWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4pPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOwogCiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkZW50
aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IGFhMTIxOWUyZWYxLi5kNzJmODlkMjYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSwyMSArMjEsMjEgQEAKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSB7Ci0gICAgRXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3Rz
SW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBj
YWxsYmFja0lEKQorICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGZ1bmN0aW9uLCBWZWN0
b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVu
dCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFJlc29s
dmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50MzJfdCBvcmRpbmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2
NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAo
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAg
UmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90
IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRf
dCBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRp
bmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFz
eW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAo
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAg
UmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZVBhcmVudEZyYW1lKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYwogCi0gICAgRm9j
dXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCisgICAgRm9jdXNGcmFt
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCiAKLSAg
ICBDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGVudW06dWlu
dDhfdCBXZWJLaXQ6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgLT4gKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIE9wdGlvbmFsPFdl
YkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCBpc09ic2N1cmVkKSBBc3lu
YworICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1Zp
ZXdJZk5lZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGlu
YXRlU3lzdGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJl
Y3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBi
b29sIGlzT2JzY3VyZWQpIEFzeW5jCiAKLSAgICBTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBTZWxlY3RPcHRpb25FbGVtZW50KFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKIAotICAgIFRha2VT
Y3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBUYWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29s
IHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiAKLSAgICBHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+IGNvb2tpZXMpIEFzeW5jCi0gICAgRGVsZXRlQ29va2llKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChPcHRpb25hbDxT
dHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBHZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3Ry
aW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIEFzeW5jCisg
ICAgRGVsZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGFlMzg4M2Q4NmI2Li5h
Zjg5ZDc4ODE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAg
ICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1h
a2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlv
bklEKCkpKSkKICAgICAgICAgICAgIHdlYlBhZ2UtPmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApp
bmRleCAwNGFlMGU0NWQ1ZS4uMjc4YjYwMTg0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTE1Nyw3ICsx
NTcsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIGF1dG8mIGZyYW1lTG9hZGVyQ2xp
ZW50ID0gcmVzb3VyY2VMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCk7CiAKICAgICBXZWJS
ZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzIHRyYWNraW5nUGFyYW1ldGVyczsKLSAg
ICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCku
dmFsdWVPcigwKTsKKyAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJD
bGllbnQucGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pOwogICAgIHRyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlEID0gZnJhbWVMb2FkZXJDbGllbnQuZnJhbWVJRCgpLnZhbHVlT3Io
MCk7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQgPSBpZGVudGlmaWVyOwogICAg
IGF1dG8gc2Vzc2lvbklEID0gZnJhbWVMb2FkZXJDbGllbnQuc2Vzc2lvbklEKCk7CkBAIC0xNjcs
NyArMTY3LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNl
TG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAvLyB0aGVuIHdlIHNob3Vs
ZCByZW1lbWJlciB0aGUgUmVzb3VyY2VMb2FkZXIgaW4gb3VyIHJlY29yZHMgYnV0IG5vdCBzY2hl
ZHVsZSBpdCBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLmRv
Y3VtZW50TG9hZGVyKCktPnNjaGVkdWxlQXJjaGl2ZUxvYWQocmVzb3VyY2VMb2FkZXIsIHJlc291
cmNlTG9hZGVyLnJlcXVlc3QoKSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAi
KFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdp
bGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFz
IGFuIGFyY2hpdmUgcmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJj
ZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMg
YW4gYXJjaGl2ZSByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNl
TG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICBtX3dlYlJlc291
cmNlTG9hZGVycy5zZXQoaWRlbnRpZmllciwgV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNv
dXJjZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0ZXJzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0xNzUsMTQgKzE3NSwxNCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxv
YWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogCiAgICAgaWYg
KHJlc291cmNlTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCku
bWF5YmVMb2FkUmVzb3VyY2UocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3Qo
KSwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICBMT0coTmV0d29y
a1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZCwgdXJsICclcycgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZS4iLCByZXNv
dXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwg
YmUgbG9hZGVkIGZyb20gYXBwbGljYXRpb24gY2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJl
IGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJ
bnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAg
IG1fd2ViUmVzb3VyY2VMb2FkZXJzLnNldChpZGVudGlmaWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6
Y3JlYXRlKHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmIChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJv
dG9jb2xJc0RhdGEoKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJv
Y2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBs
b2FkZWQgYXMgZGF0YS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNj
aGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEgKGZyYW1lID0gJXAsIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3
aWxsIGJlIGxvYWRlZCBhcyBkYXRhIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3Vy
Y2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9j
YWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5MCw3
ICsxOTAsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VM
b2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgIGlmIChpc1F1aWNrTG9va1ByZXZpZXdVUkwocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVy
bCgpKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFz
IGEgUXVpY2tMb29rIHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJl
c291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJl
c291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRl
cnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNl
TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNl
TG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIC8vIGh0dHBzOi8vYmxvZ3MuZ25vbWUub3JnL2FsZXhs
LzIwMTIvMDEvMjYvcmVzb3VyY2VzLWluLWdsaWIvCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLnJl
cXVlc3QoKS51cmwoKS5wcm90b2NvbElzKCJyZXNvdXJjZSIpKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVM
b2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UuIiwgcmVzb3VyY2VM
b2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhh
bmRsZWQgYXMgYSBHUmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJj
ZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMg
YSBHUmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5m
cmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVz
b3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjExLDExICsyMTEsMTEg
QEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiBy
ZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6
OnNpbmdsZXRvbigpLmhhbmRsZUZldGNoKHJlc291cmNlTG9hZGVyLCBzZXNzaW9uSUQsIHNob3Vs
ZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFt
ZXRlcnMsIGlkZW50aWZpZXIsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGlt
ZShyZXNvdXJjZSksIHJlc291cmNlTG9hZGVyID0gbWFrZVJlZihyZXNvdXJjZUxvYWRlcildIChT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdCByZXN1bHQpIG11dGFibGUgewogICAgICAg
ICBpZiAocmVzdWx0ICE9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRs
ZWQpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBX
ZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxl
ZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSIsIHJlc291cmNl
TG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDog
VVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2gg
YWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZy
YW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVz
b3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0
aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlm
aWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzb3Vy
Y2VMb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNN
b2RlOjpPbmx5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJl
c291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2NoZWR1bGUgVVJM
IHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0
KCksICJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNl
V29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJ
bnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VM
b2FkZXIpXSB7CiAgICAgICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJyb3IocmVz
b3VyY2VMb2FkZXItPnJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgZXJyb3Iuc2V0
VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwpAQCAtMjI3LDEzICsyMjcs
MTMgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVy
JiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhh
bmRsZXIocmVzb3VyY2VMb2FkZXIpKQogICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVz
b3VyY2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFy
YW1ldGVycywgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6
IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwg
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDog
VVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICB9
KTsKICNlbHNlCiAgICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291
cmNlTG9hZGVyKSkKICAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291
cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywg
c2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhp
bXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOwogICAgIGVsc2UKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5k
bGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNl
TG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBo
YW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1l
KCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogI2VuZGlmCiB9CiAKQEAgLTMyNSw3ICszMjUsNyBA
QCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3Mo
UmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGlmIChsb2FkUGFyYW1ldGVycy5vcHRpb25z
Lm1vZGUgIT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkgewogICAgICAgICBBU1NFUlQo
bG9hZFBhcmFtZXRlcnMuc291cmNlT3JpZ2luKTsKICAgICAgICAgaWYgKCFsb2FkUGFyYW1ldGVy
cy5zb3VyY2VPcmlnaW4pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAoZnJhbWUg
PSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1l
KCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkp
LCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxv
YWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogbm8gc291cmNlT3JpZ2lu
IChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2Fk
ZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJp
b3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1l
dGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICAgICAgICAg
IHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNDYsOSArMzQ2LDkgQEAgdm9pZCBXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiBy
ZXNvdXJjZUwKIAogICAgIEFTU0VSVCgobG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQ
YXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQ
b2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVu
dGlhbHMpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNj
aGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQ
cm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3Vy
Y2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0
KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVp
bmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0
eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nh
c3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0
ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2Fk
UGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQo
bG9hZFBhcmFtZXRlcnMpLCAwKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVz
b3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+
KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2Vi
UGFnZUlELCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlm
aWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ciwgInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5l
dHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
cmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsK
ICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRo
IHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgogICAgICAgICAvLyBU
aGlzIGxvYWQgd2lsbCBuZXZlciBzdWNjZWVkIHNvIHdlIHdpbGwgc2NoZWR1bGUgaXQgdG8gZmFp
bCBhc3luY2hyb25vdXNseS4KICAgICAgICAgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChy
ZXNvdXJjZUxvYWRlcik7CkBAIC01MDcsMTkgKzUwNywxOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwg
dW5zaQogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2Vi
RnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwogICAgIFdlYlBhZ2UqIHdl
YlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogCi0gICAgYXV0
byBwYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+cGFnZUlEKCkgOiAwOworICAgIGF1dG8gcGFn
ZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogUGFnZUlkZW50aWZpZXIgeyB9Owog
ICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CiAg
ICAgYXV0byBzZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6
OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogCiAgICAgYXV0byogZG9jdW1lbnQgPSBm
cmFtZUxvYWRlci5mcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHk6IG5vIGRvY3VtZW50IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVz
b3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogbm8gZG9jdW1lbnQgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
bHUpIiwgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIp
OwogICAgICAgICBlcnJvciA9IGludGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYXV0byBzeW5jTG9hZFJlc3VsdCA9IHRyeUxvYWRp
bmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyKGZyYW1lTG9hZGVyLCByZXNvdXJj
ZUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0KSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBj
YWxsaW5nIHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1
LCBlcnJvciA9ICVkKSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwg
c3luY0xvYWRSZXN1bHQtPmVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBm
YWlsZWQgY2FsbGluZyB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFuZGxl
ciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICVsdSwgZXJyb3IgPSAlZCkiLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgc3luY0xvYWRSZXN1bHQtPmVycm9yLmVycm9yQ29kZSgpKTsKICAg
ICAgICAgZXJyb3IgPSBXVEZNb3ZlKHN5bmNMb2FkUmVzdWx0LT5lcnJvcik7CiAgICAgICAgIHJl
c3BvbnNlID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+cmVzcG9uc2UpOwogICAgICAgICBkYXRh
ID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+ZGF0YSk7CkBAIC01NTMsNyArNTUzLDcgQEAgdm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRl
ciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVj
dGlvbkRpc2FibGVyOwogCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxv
YWRQYXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQ
ZXJmb3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5ldHdvcmsg
cHJvY2VzcyBtZXNzYWdlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRl
bnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklE
LCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMg
bmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELnRvVUludDY0KCksIGZyYW1l
SUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXV0byogcGFnZSA9IHdl
YlBhZ2UgPyB3ZWJQYWdlLT5jb3JlUGFnZSgpIDogbnVsbHB0cikKICAgICAgICAgICAgIHBhZ2Ut
PmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdu
b3N0aWNMb2dnaW5nS2V5czo6c3luY2hyb25vdXNNZXNzYWdlRmFpbGVkS2V5KCksIFdlYkNvcmU6
OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2Uo
KTsKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgIH0KIH0K
IAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2Vi
UGFnZUlEKQordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlk
ZW50aWZpZXIgd2ViUGFnZUlEKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGFnZUxvYWRDb21wbGV0ZWQod2ViUGFnZUlE
KSwgMCk7CiB9CkBAIC02NDgsMTAgKzY0OCwxMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpw
cmVjb25uZWN0VG8oRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCBjb25zdCBVUkwmIHVybCwgUwog
CiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJh
bWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKLSAgICBwYXJhbWV0ZXJz
LndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7Ci0gICAgcGFyYW1l
dGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKKyAg
ICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOworICAgIHBhcmFtZXRl
cnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgcGFyYW1ldGVycy5wYXJl
bnRQSUQgPSBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKLSAgICBwYXJhbWV0ZXJzLnNlc3Np
b25JRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpk
ZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlLT5z
ZXNzaW9uSUQoKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25s
eSA9IFByZWNvbm5lY3RPbmx5OjpZZXM7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhU
VFBSZXNwb25zZUFjY2VzcyA9IHNob3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgK
aW5kZXggNGFmNTk5NDFlMzQuLmFjNTI0OTY2YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcg
QEAgcHVibGljOgogICAgIAogICAgIHZvaWQgbG9hZFJlc291cmNlKFdlYkNvcmU6OkZyYW1lJiwg
V2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmKSBmaW5hbDsKICAgICB2
b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6RnJhbWVMb2FkZXImLCB1bnNp
Z25lZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYg
ZGF0YSkgZmluYWw7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdl
SUQpIGZpbmFsOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIpIGZpbmFsOwogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIq
KSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2Fk
ZXImLCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjg4ZmRhMzAwNy4uODhiZDUzYmYx
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg4LDE2ICs4OCwxNiBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBS
ZXNvdQogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAg
aWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3Qo
KS5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KG1fY29yZUxvYWRlci5nZXQoKSwgcHJvcG9z
ZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRG
YWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVMb2FkRmFs
bGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIG1fY29yZUxvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocHJvcG9z
ZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7CiAgICAgICAg
IGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5n
IGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBvciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNl
IG5vIGNvcmVsb2FkZXIgb3IgaWRlbnRpZmllciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCkBAIC0xMTMsMTIgKzExMywxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0Jl
Uwogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9u
c2VNZXNzYWdlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9yICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVM
b2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNl
OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJl
c291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc3RhdHVzID0gJWQp
IiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkpOwogCiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCkt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShtX2Nv
cmVMb2FkZXIuZ2V0KCksIHJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSB0aGUg
Y29udGVudCBpcyBhbHJlYWR5IGNhY2hlZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50
IGlzIGFscmVhZHkgY2FjaGVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
MzUsNyArMTM1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICAgICAgICAgIGlmICht
X2NvcmVMb2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAg
ICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQg
YmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVz
ZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICB9OwogICAgIH0KIApAQCAt
MTQ4LDcgKzE0OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mg
c2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIp
OwogCiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcg
ZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2
NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5y
ZXNvdXJjZUlEKTsKICAgICB9CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgp
OwogCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1l
dHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9j
ZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwg
bV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
bGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1C
eXRlc1JlY2VpdmVkKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hSZXNv
dXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90
cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRlc1JlY2VpdmVkKTsKIAogICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTG9h
ZCBzaG91bGQgbm90IGJlIGFibGUgdG8gZmluaXNoIGJlZm9yZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhl
IHJlc3BvbnNlIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKG5ldHdvcmtM
b2FkTWV0cmljcyk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0wK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXIt
PnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZh
aWxSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1By
b2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3VsZCBub3QgYmUgYWJsZSB0byBmaW5p
c2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIApAQCAtMTc5LDcgKzE3
OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNz
KSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBmb3Ig
JyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVz
b3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXItPmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKTsKIH0KQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5p
ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmss
ICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVP
cHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQgZm9yICclcyciLCBtX2NvcmVMb2Fk
ZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBv
bGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291
cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0b3BMb2FkaW5nQWZ0ZXJYRnJh
bWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQ6IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgbV9j
b3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9u
c09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigp
LCByZXNwb25zZSk7CiB9CkBAIC0xOTYsMTMgKzE5NiwxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5
RGVuaQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNo
YXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBMT0coTmV0d29yaywgIihX
ZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMn
IiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBSZWZQdHI8U2hhcmVk
QnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBp
ZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVy
IGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5h
YmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJk
aWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwog
ICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAg
ICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBw
YWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNv
cmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJD
b3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDdmZDc4MzIyMzNhLi41ODY1NDM3
MThlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJj
ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTAsNyArNTEsNyBA
QCB0eXBlZGVmIHVpbnQ2NF90IFJlc291cmNlTG9hZElkZW50aWZpZXI7CiBjbGFzcyBXZWJSZXNv
dXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZGVyPiwgcHVibGlj
IElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFRyYWNraW5nUGFyYW1l
dGVycyB7Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRCB7IDAgfTsKKyAgICAgICAgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAgICAgICB1aW50NjRfdCBmcmFtZUlEIHsgMCB9Owog
ICAgICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQgeyAwIH07CiAgICAgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggMjBlNGQ1YzVhZGIuLmZhMDc4
MjNmZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMTUwLDcgKzE1
MCw3IEBAIGJvb2wgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvdyhOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbiwgV2ViUGFnZSogcGFnZSkKICAgICBhdXRvIGl0ID0gbV9ub3RpZmljYXRpb25D
b250ZXh0TWFwLmFkZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgVmVj
dG9yPHVpbnQ2NF90PigpKS5pdGVyYXRvcjsKICAgICBpdC0+dmFsdWUuYXBwZW5kKG5vdGlmaWNh
dGlvbklEKTsKIAotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT50
aXRsZSgpLCBub3RpZmljYXRpb24tPmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uKCkuc3RyaW5n
KCksIG5vdGlmaWNhdGlvbi0+dGFnKCksIG5vdGlmaWNhdGlvbi0+bGFuZygpLCBub3RpZmljYXRp
b24tPmRpcigpLCBub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJp
dHlPcmlnaW4oKS0+dG9TdHJpbmcoKSwgbm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7
CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Tm90aWZpY2F0aW9u
KG5vdGlmaWNhdGlvbi0+dGl0bGUoKSwgbm90aWZpY2F0aW9uLT5ib2R5KCksIG5vdGlmaWNhdGlv
bi0+aWNvbigpLnN0cmluZygpLCBub3RpZmljYXRpb24tPnRhZygpLCBub3RpZmljYXRpb24tPmxh
bmcoKSwgbm90aWZpY2F0aW9uLT5kaXIoKSwgbm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCksIG5vdGlmaWNhdGlvbklEKSk7
CiAgICAgcmV0dXJuIHRydWU7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24p
OwpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2FuY2Vs
KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBwYWdlKQogICAgIGlmICghbm90
aWZpY2F0aW9uSUQpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBtX3Byb2Nlc3MucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDYW5jZWxO
b3RpZmljYXRpb24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDYW5jZWxOb3RpZmljYXRpb24obm90aWZpY2F0
aW9uSUQpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgVU5V
U0VEX1BBUkFNKHBhZ2UpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqCiAgICAgICAgIHJldHVybjsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlv
bklEcyA9IGl0LT52YWx1ZTsKLSAgICBtX3Byb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVhck5vdGlmaWNhdGlvbnMobm90aWZp
Y2F0aW9uSURzKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6Q2xlYXJOb3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbklEcykpOwogICAgIHNp
emVfdCBjb3VudCA9IG5vdGlmaWNhdGlvbklEcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxOb3RpZmljYXRpb24+IG5vdGlm
aWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25JRHNbaV0pOwpA
QCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6ZGlkRGVzdHJv
eU5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiwKIAogICAgIG1fbm90aWZp
Y2F0aW9uSURNYXAucmVtb3ZlKG5vdGlmaWNhdGlvbklEKTsKICAgICByZW1vdmVOb3RpZmljYXRp
b25Gcm9tQ29udGV4dE1hcChub3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uKTsKLSAgICBtX3By
b2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbklEKSwgcGFnZS0+cGFnZUlE
KCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRGVzdHJveU5v
dGlmaWNhdGlvbihub3RpZmljYXRpb25JRCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obm90
aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5jcHAKaW5kZXggMzRiNWE2NDNmMDMuLmFkYzQ3NjY1MmU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBjb25z
dCBTZWNvbmRzIHN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQgeyAxMDBfbXMgfTsgLy8gT25s
eSB1c2VkIGJ5IGxhCiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudCBmaW5h
bCA6IHB1YmxpYyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBTZXJ2aWNl
V29ya2VyRnJhbWVMb2FkZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKKyAgICBTZXJ2aWNlV29ya2Vy
RnJhbWVMb2FkZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNvbm5lY3Rp
b24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKICAgICAgICAg
OiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCiAgICAgICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtOTUsMTggKzk1LDE4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlcios
IHVuc2lnbmVkIGxvbmcpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlE
OyB9CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZyYW1lSUQ7IH0KICAgICBTdHJpbmcgdXNlckFn
ZW50KGNvbnN0IFVSTCYpIGZpbmFsIHsgcmV0dXJuIG1fdXNlckFnZW50OyB9CiAKICAgICBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwogICAgIFBBTDo6U2Vzc2lv
bklEIG1fc2Vzc2lvbklEOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9OworICAgIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRCB7IDAg
fTsKICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CiB9OwogCi1XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlv
bj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9u
PiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIDogbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9wYWdlR3JvdXBJ
RChwYWdlR3JvdXBJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKQEAgLTIyNiwxMiArMjI2LDEy
IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2
ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2CiB7CiAgICAgYXV0byogc2VydmljZVdvcmtlclRo
cmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRo
cmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBpZiAoIXNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eSkgewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBm
ZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhh
bmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoIWlzVmFsaWRGZXRjaChyZXF1ZXN0LCBvcHRpb25zLCBzZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHktPnNjcmlwdFVSTCgpLCByZWZlcnJlcikpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
Tm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBtX2Nv
bm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCA2Y2U4M2Qx
ZDA5ZS4uZmJiNjMwZTRlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAt
NTEsNyArNTEsNyBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIAogY2xhc3MgV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dDb250ZXh0
TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1Ymxp
YzoKLSAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9u
PiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJik7CisgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAgfldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtOTYsNyArOTYsNyBAQCBwcml2YXRl
OgogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vz
czsKICAgICB1aW50NjRfdCBtX3BhZ2VHcm91cElEOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsg
MCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90
IG1fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQgeyAwIH07CiAKICAgICBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5IHsg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QWxsb3dBbGxT
dG9yYWdlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmluZGV4IDhh
ZWJhZmY5NjIyLi4yNjQ0YzljMWQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3UKIHsKICAg
ICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlZGlyZWN0
UmVzcG9uc2UgeyByZXNwb25zZSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9mZXRjaElkZW50aWZpZXIp
OwogCiAgICAgY2xlYW51cCgpOwogfQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJgogICAgIGlmIChtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
KQogICAgICAgICBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Ug
PSB0cnVlOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVm
ZmVyPiYmIGJ1ZmZlcikKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGJ1ZmZlciB9LCBz
dGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgYnVmZmVyIH0sIHN0YXRpY19jYXN0PGlu
dDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmlu
aXNoKFJlZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlz
aChSZWY8Rm9ybURhdGE+JgogICAgIC8vIEZvciBub3cgYW5kIGZvciB0aGUgY2FzZSBvZiBibG9i
cywgd2UgcmVhZCBpdCB0aGVyZSBhbmQgc2VuZCB0aGUgZGF0YSB0aHJvdWdoIElQQy4KICAgICBV
UkwgYmxvYlVSTCA9IGZvcm1EYXRhLT5hc0Jsb2JVUkwoKTsKICAgICBpZiAoYmxvYlVSTC5pc051
bGwoKSkgewotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IElQQzo6Rm9ybURhdGFSZWZlcmVuY2Ug
eyBXVEZNb3ZlKGZvcm1EYXRhKSB9IH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZNb3Zl
KGZvcm1EYXRhKSB9IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFyKiBkYXRhLCBzaXplCiAgICAgaWYg
KCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0sIHN0YXRpY19jYXN0
PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVj
ZWl2ZURhdGEgeyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXpl
IH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9h
ZGluZygpCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogCiAgICAgY2xl
YW51cCgpOwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNo
VGFza0NsaWVudDo6ZGlkRmluaXNoKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkRmlu
aXNoIHsgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2ggeyB9LCBt
X2ZldGNoSWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC0xNzQsNyArMTc0LDcg
QEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWROb3RIYW5kbGUoKQog
ICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7
IH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgbV9m
ZXRjaElkZW50aWZpZXIpOwogCiAgICAgY2xlYW51cCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyLmNwcAppbmRleCA0OTMzY2E0YzNhMC4uMmIyODg2NGE5YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC04MiwxNCArODIsMTQgQEAgUmVmPFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShV
c2VyQ29udGVudEMKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlm
aWVyLCAqdGhpcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6fldlYlVzZXJDb250
ZW50Q29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKHVzZXJDb250ZW50Q29udHJvbGxlcnMoKS5j
b250YWlucyhtX2lkZW50aWZpZXIpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIp
OwogCiAgICAgdXNlckNvbnRlbnRDb250cm9sbGVycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwog
fQpAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghd2ViUGFnZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlEKCksIHdlYkZyYW1lLT5p
bmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5kYXRhKCkpKSwg
bV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT5w
YWdlSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVu
Y2UodmFsdWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CiAgICAgfQog
CiAgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAppbmRleCA0OTYyOTZmNmQ4OC4uMzQzZTgzNWFkMDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgRmxvYXRSZWN0IFdlYkNocm9tZUNs
aWVudDo6d2luZG93UmVjdCgpCiAKICAgICBGbG9hdFJlY3QgbmV3V2luZG93RnJhbWU7CiAKLSAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lKCksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkdldFdpbmRvd0ZyYW1lOjpSZXBseShuZXdXaW5kb3dGcmFtZSks
IG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0
V2luZG93RnJhbWU6OlJlcGx5KG5ld1dpbmRvd0ZyYW1lKSkpCiAgICAgICAgIHJldHVybiBGbG9h
dFJlY3QoKTsKIAogICAgIHJldHVybiBuZXdXaW5kb3dGcmFtZTsKQEAgLTI2Myw3ICsyNjMsNyBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdlZChGcmFtZSogZnJhbWUp
CiB7CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gZnJhbWUgPyBXZWJGcmFtZTo6ZnJvbUNvcmVG
cmFtZSgqZnJhbWUpIDogbnVsbHB0cjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rm9j
dXNlZEZyYW1lQ2hhbmdlZCh3ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpG
b2N1c2VkRnJhbWVDaGFuZ2VkKHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDApKTsK
IH0KIAogUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBj
b25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2lu
ZG93RmVhdHVyZXMsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24pCkBA
IC0yODgsMTkgKzI4OCwyMCBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhG
cmFtZSYgZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlcwogCiAgICAgV2ViRnJh
bWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogCi0gICAgdWlu
dDY0X3QgbmV3UGFnZUlEID0gMDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbmV3UGFn
ZUlEOwogICAgIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7
Ci0gICAgaWYgKCF3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJhbWUtPmluZm8oKSwg
d2ViRnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHdp
bmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkNyZWF0ZU5ld1BhZ2U6OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVycyksIG1fcGFnZS5w
YWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Q3JlYXRlTmV3UGFnZSh3ZWJGcmFtZS0+aW5mbygpLCB3ZWJGcmFtZS0+cGFnZSgpLT5wYWdl
SUQoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgd2luZG93RmVhdHVyZXMsIG5hdmlnYXRp
b25BY3Rpb25EYXRhKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6UmVw
bHkobmV3UGFnZUlELCBwYXJhbWV0ZXJzKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgaWYgKCFuZXdQYWdlSUQpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgQVNTRVJU
KHBhcmFtZXRlcnMpOwogICAgIGlmIChwYXJhbWV0ZXJzLT5zZXNzaW9uSUQgPT0gbV9wYWdlLnNl
c3Npb25JRCgpKQogICAgICAgICBwYXJhbWV0ZXJzLT5vbGRQYWdlSUQgPSBtX3BhZ2UucGFnZUlE
KCk7CiAKLSAgICB3ZWJQcm9jZXNzLmNyZWF0ZVdlYlBhZ2UobmV3UGFnZUlELCBXVEZNb3ZlKCpw
YXJhbWV0ZXJzKSk7Ci0gICAgcmV0dXJuIHdlYlByb2Nlc3Mud2ViUGFnZShuZXdQYWdlSUQpLT5j
b3JlUGFnZSgpOworICAgIHdlYlByb2Nlc3MuY3JlYXRlV2ViUGFnZSgqbmV3UGFnZUlELCBXVEZN
b3ZlKCpwYXJhbWV0ZXJzKSk7CisgICAgcmV0dXJuIHdlYlByb2Nlc3Mud2ViUGFnZSgqbmV3UGFn
ZUlEKS0+Y29yZVBhZ2UoKTsKIH0KIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3coKQpAQCAt
MzM1LDcgKzMzNiw3IEBAIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojp0b29sYmFyc1Zpc2libGUoKQog
ICAgICAgICByZXR1cm4gdG9vbGJhcnNWaXNpYmlsaXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6
OlBhZ2VVSUNsaWVudDo6VUlFbGVtZW50VmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICAKICAgICBi
b29sIHRvb2xiYXJzQXJlVmlzaWJsZSA9IHRydWU7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2libGUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6R2V0VG9vbGJhcnNBcmVWaXNpYmxlOjpSZXBseSh0b29sYmFyc0FyZVZpc2libGUpLCBtX3Bh
Z2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpH
ZXRUb29sYmFyc0FyZVZpc2libGU6OlJlcGx5KHRvb2xiYXJzQXJlVmlzaWJsZSkpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiB0b29sYmFyc0FyZVZpc2libGU7CkBAIC0zNTMs
NyArMzU0LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnN0YXR1c2JhclZpc2libGUoKQogICAg
ICAgICByZXR1cm4gc3RhdHVzYmFyVmlzaWJpbGl0eSA9PSBBUEk6OkluamVjdGVkQnVuZGxlOjpQ
YWdlVUlDbGllbnQ6OlVJRWxlbWVudFZpc2liaWxpdHk6OlZpc2libGU7CiAKICAgICBib29sIHN0
YXR1c0JhcklzVmlzaWJsZSA9IHRydWU7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0
U3RhdHVzQmFySXNWaXNpYmxlOjpSZXBseShzdGF0dXNCYXJJc1Zpc2libGUpLCBtX3BhZ2UucGFn
ZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkdldFN0YXR1c0JhcklzVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0
dXNCYXJJc1Zpc2libGU6OlJlcGx5KHN0YXR1c0JhcklzVmlzaWJsZSkpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAogICAgIHJldHVybiBzdGF0dXNCYXJJc1Zpc2libGU7CkBAIC0zODIsNyArMzgz
LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6Om1lbnViYXJWaXNpYmxlKCkKICAgICAgICAgcmV0
dXJuIG1lbnViYXJWaXNpYmlsaXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVu
dDo6VUlFbGVtZW50VmlzaWJpbGl0eTo6VmlzaWJsZTsKICAgICAKICAgICBib29sIG1lbnVCYXJJ
c1Zpc2libGUgPSB0cnVlOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0
TWVudUJhcklzVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNW
aXNpYmxlOjpSZXBseShtZW51QmFySXNWaXNpYmxlKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBp
ZiAoIW1fcGFnZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNW
aXNpYmxlKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OlJl
cGx5KG1lbnVCYXJJc1Zpc2libGUpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1
cm4gbWVudUJhcklzVmlzaWJsZTsKQEAgLTExODYsNyArMTE4Nyw3IEBAIHZvaWQgV2ViQ2hyb21l
Q2xpZW50Ojpmb2N1c2VkQ29udGVudE1lZGlhRWxlbWVudERpZENoYW5nZSh1aW50NjRfdCBlbGVt
ZW50SUQpCiBib29sIFdlYkNocm9tZUNsaWVudDo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KSBjb25zdAogewogICAg
IGJvb2wgc3VjY2VlZGVkOwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V3Jh
cENyeXB0b0tleShrZXkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXcmFwQ3J5cHRvS2V5OjpS
ZXBseShzdWNjZWVkZWQsIHdyYXBwZWRLZXkpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICgh
bV9wYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OldyYXBDcnlwdG9LZXkoa2V5
KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6V3JhcENyeXB0b0tleTo6UmVwbHkoc3VjY2VlZGVk
LCB3cmFwcGVkS2V5KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc3VjY2Vl
ZGVkOwogfQpAQCAtMTE5NCw3ICsxMTk1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OndyYXBD
cnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYKIGJv
b2wgV2ViQ2hyb21lQ2xpZW50Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtleSkgY29uc3QKIHsKICAgICBib29sIHN1
Y2NlZWRlZDsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlVud3JhcENyeXB0
b0tleSh3cmFwcGVkS2V5KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5
OjpSZXBseShzdWNjZWVkZWQsIGtleSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3Bh
Z2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5KHdyYXBw
ZWRLZXkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpVbndyYXBDcnlwdG9LZXk6OlJlcGx5KHN1
Y2NlZWRlZCwga2V5KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gc3VjY2Vl
ZGVkOwogfQpAQCAtMTIwNCw3ICsxMjA1LDcgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVud3Jh
cENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3RvcjwKIFN0
cmluZyBXZWJDaHJvbWVDbGllbnQ6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1
bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnN0IFN0cmluZyYgY2hhbGxlbmdlU3RyaW5nLCBjb25z
dCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBTdHJpbmcgcmVzdWx0OwotICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtl
eVNpemVJbmRleCwgY2hhbGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCksIG1fcGFn
ZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNpemVJbmRleCwgY2hh
bGxlbmdlU3RyaW5nLCB1cmwpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmc6OlJlcGx5KHJlc3VsdCkpKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTMxNywxMiArMTMxOCwxMiBA
QCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMo
KQogfQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFi
bGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wYWdlLmhhc1N0b3Jh
Z2VBY2Nlc3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4p
LCBmcmFtZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZy
YW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJs
ZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UucmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFt
ZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5k
ZXggZGQzYjIyNTQzNWQuLjI5MWM1ZWRkYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNjks
OCArMzY5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtl
clJlY3RzKCkgZmluYWw7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1
YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWlu
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJikg
ZmluYWw7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXVEY6
OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFp
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duKT4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ29sb3JDaG9vc2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNob29zZXIuY3BwCmluZGV4IGQ1MzVlNWM1NWM2Li5j
YjQwMjQxNzA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNvbG9yQ2hvb3Nlci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgV2Vi
Q29sb3JDaG9vc2VyOjpXZWJDb2xvckNob29zZXIoV2ViUGFnZSogcGFnZSwgQ29sb3JDaG9vc2Vy
Q2xpZW50KiBjbGllbnQsIGNvbnMKICAgICAsIG1fcGFnZShwYWdlKQogewogICAgIG1fcGFnZS0+
c2V0QWN0aXZlQ29sb3JDaG9vc2VyKHRoaXMpOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
U2hvd0NvbG9yUGlja2VyKGluaXRpYWxDb2xvciwgY2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZl
VG9Sb290VmlldygpLCBjbGllbnQtPnN1Z2dlc3RlZENvbG9ycygpKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBp
Y2tlcihpbml0aWFsQ29sb3IsIGNsaWVudC0+ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXco
KSwgY2xpZW50LT5zdWdnZXN0ZWRDb2xvcnMoKSkpOwogfQogCiBXZWJDb2xvckNob29zZXI6On5X
ZWJDb2xvckNob29zZXIoKQpAQCAtNzQsNyArNzQsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6
cmVhdHRhY2hDb2xvckNob29zZXIoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIG1fcGFnZS0+c2V0
QWN0aXZlQ29sb3JDaG9vc2VyKHRoaXMpOwogCiAgICAgQVNTRVJUKG1fY29sb3JDaG9vc2VyQ2xp
ZW50KTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihjb2xvciwg
bV9jb2xvckNob29zZXJDbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCksIG1f
Y29sb3JDaG9vc2VyQ2xpZW50LT5zdWdnZXN0ZWRDb2xvcnMoKSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29sb3JQaWNr
ZXIoY29sb3IsIG1fY29sb3JDaG9vc2VyQ2xpZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290
VmlldygpLCBtX2NvbG9yQ2hvb3NlckNsaWVudC0+c3VnZ2VzdGVkQ29sb3JzKCkpKTsKIH0KIAog
dm9pZCBXZWJDb2xvckNob29zZXI6OnNldFNlbGVjdGVkQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9y
KQpAQCAtODUsNyArODUsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6c2V0U2VsZWN0ZWRDb2xv
cihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgaWYgKG1fcGFnZS0+YWN0aXZlQ29sb3JDaG9vc2Vy
KCkgIT0gdGhpcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpTZXRDb2xvclBpY2tlckNvbG9yKGNvbG9yKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldENvbG9yUGlja2VyQ29sb3IoY29s
b3IpKTsKIH0KIAogdm9pZCBXZWJDb2xvckNob29zZXI6OmVuZENob29zZXIoKQpAQCAtOTMsNyAr
OTMsNyBAQCB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6ZW5kQ2hvb3NlcigpCiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kQ29s
b3JQaWNrZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkVuZENvbG9yUGlja2VyKCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlci5jcHAKaW5kZXgg
ZDAyNWRmYWNmYTIuLmQzNmExNTRjZmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YUxpc3RTdWdn
ZXN0aW9uUGlja2VyLmNwcApAQCAtNDcsNyArNDcsNyBAQCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25Q
aWNrZXI6On5XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIoKSB7IH0KIAogdm9pZCBXZWJEYXRh
TGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmhhbmRsZUtleWRvd25XaXRoSWRlbnRpZmllcihjb25zdCBX
VEY6OlN0cmluZyYga2V5KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlS2V5
ZG93bkluRGF0YUxpc3Qoa2V5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZUtleWRvd25JbkRhdGFMaXN0KGtleSkpOwog
fQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlkU2VsZWN0T3B0aW9uKGNv
bnN0IFdURjo6U3RyaW5nJiBzZWxlY3RlZE9wdGlvbikKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCBX
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpZENsb3NlU3VnZ2VzdGlvbnMoKQogCiB2b2lk
IFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6Y2xvc2UoKQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdnZXN0aW9ucygpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kRGF0YUxpc3RTdWdn
ZXN0aW9ucygpKTsKIH0KIAogdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRpc3Bs
YXlXaXRoQWN0aXZhdGlvblR5cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWN0aXZhdGlvblR5cGUgdHlw
ZSkKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBXZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXI6OmRp
c3BsYXlXaXRoQWN0aXZhdGlvblR5cGUoRGF0YUxpc3RTdWdnZXN0aW9uQWMKICAgICBtX3BhZ2Ut
PnNldEFjdGl2ZURhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcih0aGlzKTsKIAogICAgIERhdGFMaXN0
U3VnZ2VzdGlvbkluZm9ybWF0aW9uIGluZm8gPSB7IHR5cGUsIG1fZGF0YUxpc3RTdWdnZXN0aW9u
c0NsaWVudC0+c3VnZ2VzdGlvbnMoKSwgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5lbGVt
ZW50UmVjdEluUm9vdFZpZXdDb29yZGluYXRlcygpIH07Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTaG93RGF0YUxpc3RTdWdnZXN0aW9ucyhpbmZvKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dEYXRhTGlzdFN1Z2dl
c3Rpb25zKGluZm8pKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQuY3BwCmluZGV4IGY0MjhmZDIzOTdlLi43MDUyMDI1YjlkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5jcHAKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJV
bmRvU3RlcChVbmRvU3RlcCYgc3RlcCkKICAgICBhdXRvIHN0ZXBJRCA9IHdlYlN0ZXAtPnN0ZXBJ
RCgpOwogCiAgICAgbV9wYWdlLT5hZGRXZWJVbmRvU3RlcChzdGVwSUQsIFdURk1vdmUod2ViU3Rl
cCkpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVk
aXRDb21tYW5kRm9yVW5kbyhzdGVwSUQsIHN0ZXAubGFiZWwoKSksIG1fcGFnZS0+cGFnZUlEKCks
IElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJF
ZGl0Q29tbWFuZEZvclVuZG8oc3RlcElELCBzdGVwLmxhYmVsKCkpLCBJUEM6OlNlbmRPcHRpb246
OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFVuZG9TdGVwJikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDUyOWMwNDY3MDMwLi4zZGNkN2UyZWMxOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6On5XZWJGcmFtZUxvYWRlckNsaWVudCgpCiB7CiB9CiAKLU9wdGlvbmFsPHVp
bnQ2NF90PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAg
ICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVybiBtX2ZyYW1l
LT5wYWdlKCktPnBhZ2VJRCgpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNF
X0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaW9uYWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAg
ICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX2Zy
YW1lLT5mcmFtZUlEKCkpOwogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIApA
QCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgaWYgKCF3ZWJQYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCksIG1fZnJh
bWUtPmZyYW1lSUQoKSk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0
KCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJE
YXRhOwogCkBAIC05MDEsNyArOTAxLDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBp
ZiAocmVxdWVzdGVyLmZyYW1lSUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFt
ZShyZXF1ZXN0ZXIuZnJhbWVJRCgpKSkKICAgICAgICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRh
LmZyYW1lSUQgPSByZXF1ZXN0ZXIuZnJhbWVJRCgpOwogCi0gICAgdWludDY0X3Qgb3JpZ2luYXRp
bmdQYWdlSUQgPSByZXF1ZXN0ZXIucGFnZUlEKCkgJiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViUGFnZShyZXF1ZXN0ZXIucGFnZUlEKCkpID8gcmVxdWVzdGVyLnBhZ2VJRCgpIDogMDsKKyAg
ICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQ7CisgICAgaWYgKHJl
cXVlc3Rlci5wYWdlSUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVl
c3Rlci5wYWdlSUQoKSkpCisgICAgICAgIG9yaWdpbmF0aW5nUGFnZUlEID0gcmVxdWVzdGVyLnBh
Z2VJRCgpOwogCiAgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGE7
CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUgPSBhY3Rpb24tPm5hdmln
YXRpb25UeXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGY3M2FiOGNhNzNm
Li5jOGZiMmFmMjEyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTUxLDcgKzUx
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBv
bGljaWVzRGF0YSYmKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBm
aW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29u
c3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBmaW5hbDsK
ICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51
LmNwcAppbmRleCBkMTZmZTg1Nzc4NC4uMjA4YmI4OGEzYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCkBA
IC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OnNob3coY29uc3QgSW50UmVjdCYg
cmVjdCwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgpCiAgICAgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhIHBsYXRmb3JtRGF0YTsKICAgICBzZXRVcFBsYXRmb3JtRGF0YShwYWdlQ29vcmRpbmF0ZXMs
IHBsYXRmb3JtRGF0YSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dQb3B1cE1l
bnUocGFnZUNvb3JkaW5hdGVzLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9wb3B1cENsaWVudC0+
bWVudVN0eWxlKCkudGV4dERpcmVjdGlvbigpKSwgaXRlbXMsIGluZGV4LCBwbGF0Zm9ybURhdGEp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6U2hvd1BvcHVwTWVudShwYWdlQ29vcmRpbmF0ZXMsIHN0YXRpY19jYXN0PHVpbnQ2NF90
PihtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKS50ZXh0RGlyZWN0aW9uKCkpLCBpdGVtcywgaW5k
ZXgsIHBsYXRmb3JtRGF0YSkpOwogfQogCiB2b2lkIFdlYlBvcHVwTWVudTo6aGlkZSgpCkBAIC0x
MTksNyArMTE5LDcgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OmhpZGUoKQogICAgIGlmICghbV9wYWdl
IHx8ICFtX3BvcHVwQ2xpZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkhpZGVQb3B1cE1lbnUoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhpZGVQb3B1cE1lbnUoKSk7CiAgICAgbV9w
YWdlLT5zZXRBY3RpdmVQb3B1cE1lbnUobnVsbHB0cik7CiAgICAgbV9wb3B1cENsaWVudC0+cG9w
dXBEaWRIaWRlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQb3B1cE1lbnUuY3BwCmluZGV4IDMzZDQ3NTZl
ZGEyLi5jMGU4YzE5MTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlNlYXJjaFBvcHVwTWVudS5jcHAKQEAgLTU2LDcg
KzU2LDcgQEAgdm9pZCBXZWJTZWFyY2hQb3B1cE1lbnU6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFZlY3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2F2ZVJlY2VudFNlYXJjaGVz
KG5hbWUsIHNlYXJjaEl0ZW1zKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6U2F2ZVJlY2VudFNlYXJjaGVzKG5hbWUsIHNlYXJjaEl0ZW1z
KSk7CiB9CiAKIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2VhcmNoZXMoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjZW50U2VhcmNoPiYgcmVzdWx0SXRlbXMp
CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViU2VhcmNoUG9wdXBNZW51Ojpsb2FkUmVjZW50U2Vh
cmNoZXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBWZWN0b3I8UmVjCiAgICAgaWYgKCFwYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2Fk
UmVjZW50U2VhcmNoZXMobmFtZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRSZWNlbnRT
ZWFyY2hlczo6UmVwbHkocmVzdWx0SXRlbXMpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+
c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9hZFJlY2VudFNlYXJjaGVzKG5hbWUp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNoZXM6OlJlcGx5KHJlc3Vs
dEl0ZW1zKSk7CiB9CiAKIGJvb2wgV2ViU2VhcmNoUG9wdXBNZW51OjplbmFibGVkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJl
dmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggZjk5ODZlNDFjYTIuLmNmN2Ni
ZjRmOWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAtNTMs
NyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAg
Y29uc3QgU3RyaW5nIG1fdXRpOwotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNv
bnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIFF1aWNrTG9va0RvY3Vt
ZW50RGF0YSBtX2RhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggMjc2YjgwYmYyOGYuLjhkNjliODU0YjZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBA
IC02OCw3ICs2OCw3IEBAIERyYXdpbmdBcmVhOjpEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUg
dHlwZSwgRHJhd2luZ0FyZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgLCBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsK
KyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMp
OwogfQogCiBEcmF3aW5nQXJlYTo6fkRyYXdpbmdBcmVhKCkKQEAgLTk0LDcgKzk0LDE3IEBAIHZv
aWQgRHJhd2luZ0FyZWE6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcklmTmVlZGVkKCkKICAgICBpZiAo
bV9oYXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9oYXNS
ZW1vdmVkTWVzc2FnZVJlY2VpdmVyID0gdHJ1ZTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7Cit9CisKK0lQQzo6Q29ubmVjdGlv
biogRHJhd2luZ0FyZWE6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKTsK
K30KKwordWludDY0X3QgRHJhd2luZ0FyZWE6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9pZGVudGlmaWVyLnRvVUludDY0KCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Ry
YXdpbmdBcmVhLmgKaW5kZXggODA2OWExNThlZTIuLmVjOTUzN2Q3MGYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJEcmF3aW5nQXJlYUluZm8uaCIKICNpbmNsdWRlICJMYXllclRyZWVDb250
ZXh0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5
U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAtNjUsNyArNjYsNyBA
QCBjbGFzcyBMYXllclRyZWVIb3N0Owogc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM7
CiBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIAotY2xhc3MgRHJhd2luZ0FyZWEgOiBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgeworY2xhc3MgRHJhd2luZ0FyZWEgOiBwdWJsaWMgSVBD
OjpNZXNzYWdlUmVjZWl2ZXIsIHByb3RlY3RlZCBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERyYXdpbmdB
cmVhKTsKIApAQCAtMTUzLDExICsxNTQsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgRHJh
d2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlLCBEcmF3aW5nQXJlYUlkZW50aWZpZXIsIFdlYlBhZ2Um
KTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdl
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fd2ViUGFnZS5zZW5kKG1lc3NhZ2UsIG1faWRlbnRp
Zmllci50b1VJbnQ2NCgpLCB7IH0pOwotICAgIH0KLQogICAgIERyYXdpbmdBcmVhVHlwZSBtX3R5
cGU7CiAgICAgRHJhd2luZ0FyZWFJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBXZWJQYWdl
JiBtX3dlYlBhZ2U7CkBAIC0xNzAsNiArMTY2LDEwIEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpN
ZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIG92ZXJyaWRlOworICAgIAorICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgor
ICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5h
bDsKKyAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFs
OwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxk
IGJlIHB1cmUgdmlydHVhbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDY5MTgzMGI1OTNjLi40OWEyYzNiYjM3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3Bh
dGNoZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjppbml0aWFs
aXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAgICAgY29ubmVjdGlv
bi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKLXZvaWQg
RXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hl
ZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1
YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJC
YW5kQXRCb3R0b20pCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudChQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGJvb2wgY2FuUnVi
YmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJC
YW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQogewogI2lmIFBMQVRGT1JNKENP
Q09BKSB8fCBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIFBsYXRmb3JtV2hlZWxFdmVudCBw
bGF0Zm9ybVdoZWVsRXZlbnQgPSBwbGF0Zm9ybSh3aGVlbEV2ZW50KTsKQEAgLTE0Miw3ICsxNDIs
NyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbgogfQogCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJF
X0VWRU5UUykKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXN0dXJlRXZlbnQodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQordm9pZCBF
dmVudERpc3BhdGNoZXI6Omdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAgICAgUnVuTG9vcDo6
bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2VJRCwg
Z2VzdHVyZUV2ZW50XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRj
aEdlc3R1cmVFdmVudChwYWdlSUQsIGdlc3R1cmVFdmVudCk7CkBAIC0xNjMsNyArMTYzLDcgQEAg
dm9pZCBFdmVudERpc3BhdGNoZXI6OmdldFF1ZXVlZFRvdWNoRXZlbnRzRm9yUGFnZShjb25zdCBX
ZWJQYWdlJiB3ZWJQYWdlLCBUb3VjaEUKICAgICBkZXN0aW5hdGlvblF1ZXVlID0gbV90b3VjaEV2
ZW50cy50YWtlKHdlYlBhZ2UucGFnZUlEKCkpOwogfQogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
dG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYg
dG91Y2hFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50KFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQogewog
ICAgIGJvb2wgdXBkYXRlTGlzdFdhc0VtcHR5OwogICAgIHsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2
b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cygpCiB9CiAjZW5kaWYKIAot
dm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hXaGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxF
dmVudCYgd2hlZWxFdmVudCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBA
IC0yMTksNyArMjE5LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVu
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHcKIH0KIAogI2lmIEVOQUJM
RShNQUNfR0VTVFVSRV9FVkVOVFMpCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0
dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVF
dmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudChQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJHZXN0dXJlRXZlbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KQotdm9pZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRSZWNlaXZlRXZlbnQodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJFdmVudCYgZXZlbnQsIGJvb2wgZGlkSGFuZGxlRXZlbnQpCit2b2lkIEV2
ZW50RGlzcGF0Y2hlcjo6c2VuZERpZFJlY2VpdmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFdlYkV2ZW50JiBldmVudCwgYm9vbCBkaWRIYW5kbGVFdmVudCkKIHsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4o
ZXZlbnQudHlwZSgpKSwgZGlkSGFuZGxlRXZlbnQpLCBwYWdlSUQpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAppbmRleCAxZDQ3
Nzg3N2VhYS4uZTFiYmJkNDc5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
Q29ubmVjdGlvbi5oIgogCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaGVlbEV2ZW50RGVsdGFGaWx0
ZXIuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTc3
LDM4ICs3OCwzOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzCi0gICAgdm9pZCB3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hl
ZWxFdmVudCYsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRS
aWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9t
KTsKKyAgICB2b2lkIHdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdl
YldoZWVsRXZlbnQmLCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFu
ZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJv
dHRvbSk7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAgdm9pZCB0b3VjaEV2ZW50
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViVG91Y2hFdmVudCYpOworICAgIHZvaWQgdG91Y2hF
dmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViVG91Y2hFdmVudCYpOwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLSAgICB2b2lkIGdlc3R1cmVFdmVu
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOworICAgIHZvaWQgZ2Vz
dHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJHZXN0dXJlRXZlbnQm
KTsKICNlbmRpZgogCiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
Ci0gICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJX
aGVlbEV2ZW50Jik7CisgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VW
RU5UUykKICAgICB2b2lkIGRpc3BhdGNoVG91Y2hFdmVudHMoKTsKICNlbmRpZgogI2lmIEVOQUJM
RShNQUNfR0VTVFVSRV9FVkVOVFMpCi0gICAgdm9pZCBkaXNwYXRjaEdlc3R1cmVFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOworICAgIHZvaWQgZGlzcGF0Y2hH
ZXN0dXJlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotICAgIHZvaWQgc2Vu
ZERpZFJlY2VpdmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiwgYm9vbCBk
aWRIYW5kbGVFdmVudCk7CisgICAgdm9pZCBzZW5kRGlkUmVjZWl2ZUV2ZW50KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlkSGFuZGxlRXZlbnQpOwogI2Vu
ZGlmCiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogCiAjaWYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykKICAgICBMb2NrIG1fc2Nyb2xsaW5nVHJlZXNNdXRleDsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxp
bmdUcmVlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2Vi
Q29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxpbmdUcmVlczsKICNlbmRpZgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXaGVlbEV2ZW50RGVsdGFGaWx0ZXI+IG1fcmVj
ZW50V2hlZWxFdmVudERlbHRhRmlsdGVyOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQog
ICAgIExvY2sgbV90b3VjaEV2ZW50c0xvY2s7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgVG91Y2hF
dmVudFF1ZXVlPiBtX3RvdWNoRXZlbnRzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsKICNlbmRpZgogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVy
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNw
YXRjaGVyLm1lc3NhZ2VzLmluCmluZGV4IDVlMTU0M2M5OGNjLi5hZjkwNGI0NTE2YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlz
cGF0Y2hlci5tZXNzYWdlcy5pbgpAQCAtMjEsMTEgKzIxLDExIEBACiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IG1lc3NhZ2VzIC0+IEV2ZW50RGlzcGF0Y2hlciB7Ci0gICAgV2hlZWxFdmVudCh1aW50NjRfdCBw
YWdlSUQsIFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRM
ZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwg
Ym9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCisgICAgV2hlZWxFdmVudChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVudCwgYm9vbCBjYW5S
dWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJl
ckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCiAjaWYgRU5BQkxFKElPU19U
T1VDSF9FVkVOVFMpCi0gICAgVG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2Vi
VG91Y2hFdmVudCBldmVudCkKKyAgICBUb3VjaEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQogI2VuZGlmCiAjaWYgRU5BQkxF
KE1BQ19HRVNUVVJFX0VWRU5UUykKLSAgICBHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBX
ZWJLaXQ6OldlYkdlc3R1cmVFdmVudCBldmVudCkKKyAgICBHZXN0dXJlRXZlbnQoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCBldmVudCkKICNl
bmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tCmluZGV4IGI3NTJjMWM1NGQ0Li5iMjkxZGYwYjdkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNzUsNyAr
NzUsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgVwogICAgIC8vIEZJWE1FOiBXaGlsZSB1c2lu
ZyB0aGUgaGlnaCBlbmQgb2YgdGhlIHJhbmdlIG9mIERpc3BsYXlJRHMgbWFrZXMgYSBjb2xsaXNp
b24gd2l0aCByZWFsLCBub24tUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEKICAgICAvLyBEaXNw
bGF5SURzIGxlc3MgbGlrZWx5LCBpdCBpcyBub3QgZW50aXJlbHkgc2FmZSB0byBoYXZlIGEgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgYW5kIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVh
CiAgICAgLy8gY29lZXhpc3QgaW4gdGhlIHNhbWUgcHJvY2Vzcy4KLSAgICB3ZWJQYWdlLndpbmRv
d1NjcmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSB3
ZWJQYWdlLnBhZ2VJRCgpKTsKKyAgICB3ZWJQYWdlLndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6
Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSB3ZWJQYWdlLnBhZ2VJRCgpLnRvVUlu
dDY0KCkpOwogfQogCiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6flJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhKCkKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgUmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+
IGJhY2tpbmdTdG9yZUZsdXNoZXIgPSBCYWNraW5nU3RvcmVGbHVzaGVyOjpjcmVhdGUoV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgV1RGTW92ZShjb21t
aXRFbmNvZGVyKSwgV1RGTW92ZShjb250ZXh0c1RvRmx1c2gpKTsKICAgICBtX3BlbmRpbmdCYWNr
aW5nU3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3JlRmx1c2hlcjsKIAotICAgIHVpbnQ2NF90IHBh
Z2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZS5w
YWdlSUQoKTsKICAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3Jl
Rmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBhZ2VJRF0gewogICAgICAg
ICBiYWNraW5nU3RvcmVGbHVzaGVyLT5mbHVzaCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXgg
MDU0NDA0NTZmNDEuLmM5NDBlMGNkMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9SZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC03OSw3ICs3
OSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnNlbmRN
ZXNzYWdlVG9CYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2VuZE1lc3NhZ2VUb0JhY2tlbmQobWVzc2FnZSksIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5OjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSk7CiB9CiAKIHZvaWQgUmVt
b3RlV2ViSW5zcGVjdG9yVUk6OndpbmRvd09iamVjdENsZWFyZWQoKQpAQCAtMTAyLDEyICsxMDIs
MTIgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6ZnJvbnRlbmRMb2FkZWQoKQogCiB2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclVJOjpjaGFuZ2VTaGVldFJlY3QoY29uc3QgRmxvYXRSZWN0JiBy
ZWN0KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTZXRTaGVldFJl
Y3QocmVjdCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpTZXRTaGVldFJlY3QocmVjdCkpOwogfQogCiB2b2lkIFJl
bW90ZVdlYkluc3BlY3RvclVJOjpzdGFydFdpbmRvd0RyYWcoKQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpTdGFydFdpbmRvd0RyYWcoKSwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlN0
YXJ0V2luZG93RHJhZygpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6bW92ZVdp
bmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCkBAIC0xMjQsMzQgKzEyNCwzNCBAQCBXZWJDb3JlOjpV
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIFJlbW90ZVdlYkluc3BlY3RvclVJOjp1c2VySW50
ZXJmYWNlTGF5b3V0RAogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpicmluZ1RvRnJvbnQo
KQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQo
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNw
ZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQogewogICAgIG1fcGFnZS5jb3JlUGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCkuc2V0SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQobnVsbHB0cik7CiAKLSAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6RnJvbnRlbmREaWRDbG9zZSgpLCBt
X3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTo6RnJvbnRlbmREaWRDbG9zZSgpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNw
ZWN0b3JVSTo6cmVvcGVuKCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQ
cm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eTo6UmVvcGVuKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpSZW9wZW4oKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2Vi
SW5zcGVjdG9yVUk6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKIHsKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6T3BlbkluTmV3VGFiKHVybCksIG1fcGFnZS5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpPcGVuSW5OZXdUYWIodXJsKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6
OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29s
IGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQs
IGZvcmNlU2F2ZUFzKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2
NEVuY29kZWQsIGZvcmNlU2F2ZUFzKSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6
OmFwcGVuZChjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OkFwcGVuZChmaWxlbmFtZSwg
Y29udGVudCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpBcHBlbmQoZmlsZW5hbWUsIGNvbnRlbnQpKTsKIH0KIAog
dm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6aW5zcGVjdGVkVVJMQ2hhbmdlZChjb25zdCBTdHJp
bmcmIHVybFN0cmluZykKQEAgLTE2MSw3ICsxNjEsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clVJOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQogCiB2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclVJOjpzaG93Q2VydGlmaWNhdGUoY29uc3QgQ2VydGlmaWNhdGVJ
bmZvJiBjZXJ0aWZpY2F0ZUluZm8pCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9y
UHJveHk6OlNob3dDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZUluZm8pLCBtX3BhZ2UucGFnZUlEKCkp
OworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2hv
d0NlcnRpZmljYXRlKGNlcnRpZmljYXRlSW5mbykpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCAyMTFkNjAxZWYwYi4uZmNlZTBkZmRmZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIElEVG9I
aXN0b3J5SXRlbU1hcCYgaWRUb0hpc3RvcnlJdGVtTWFwKCkKICAgICByZXR1cm4gbWFwOwogfQog
Ci12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25z
dCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBp
dGVtLCB1aW50NjRfdCBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlz
dGluZ0l0ZW0pCit2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJv
Y2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5
SXRlbT4mJiBpdGVtLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRl
bSBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0pCiB7CiAgICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWly
IHNob3VsZCBub3QgYWxyZWFkeSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQo
b3ZlcndyaXRlRXhpc3RpbmdJdGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRl
RXhpc3RpbmdJdGVtOjpZZXMgfHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1J
RCkpOwpAQCAtMTE2LDcgKzExNiw3IEBAIFJlZlB0cjxIaXN0b3J5SXRlbT4gV2ViQmFja0Zvcndh
cmRMaXN0UHJveHk6Oml0ZW1BdEluZGV4KGludCBpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgT3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gaXRlbUlE
OwotICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJ
bmRleChpdGVtSW5kZXgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1B
dEluZGV4OjpSZXBseShpdGVtSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFn
ZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRl
eChpdGVtSW5kZXgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdElu
ZGV4OjpSZXBseShpdGVtSUQpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAo
IWl0ZW1JRCkKQEAgLTEzMSw3ICsxMzEsNyBAQCB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3RQ
cm94eTo6YmFja0xpc3RDb3VudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdW5z
aWduZWQgYmFja0xpc3RDb3VudCA9IDA7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpCYWNrRm9yd2FyZEJhY2tMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
QmFja0ZvcndhcmRCYWNrTGlzdENvdW50OjpSZXBseShiYWNrTGlzdENvdW50KSwgbV9wYWdlLT5w
YWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkJhY2tGb3J3YXJkQmFja0xpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpC
YWNrRm9yd2FyZEJhY2tMaXN0Q291bnQ6OlJlcGx5KGJhY2tMaXN0Q291bnQpKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICByZXR1cm4gYmFja0xpc3RDb3VudDsKQEAgLTE0Myw3ICsxNDMsNyBA
QCB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Zm9yd2FyZExpc3RDb3VudCgpIGNv
bnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdW5zaWduZWQgZm9yd2FyZExpc3RDb3VudCA9
IDA7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndh
cmRMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJk
TGlzdENvdW50OjpSZXBseShmb3J3YXJkTGlzdENvdW50KSwgbV9wYWdlLT5wYWdlSUQoKSkpCisg
ICAgaWYgKCFtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3
YXJkRm9yd2FyZExpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2Fy
ZEZvcndhcmRMaXN0Q291bnQ6OlJlcGx5KGZvcndhcmRMaXN0Q291bnQpKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICByZXR1cm4gZm9yd2FyZExpc3RDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5o
CmluZGV4IGYzYjFjOGFmNTQ4Li5kMWJhYWRiOTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0Zv
cndhcmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9OwotICAgIHZvaWQg
YWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgdWludDY0X3QgcGFnZUlELCBPdmVy
d3JpdGVFeGlzdGluZ0l0ZW0pOworICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5
SXRlbT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7
CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDE2MGVkZWZkNTlkLi4yZDlkMDg1ZTNiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKCkKIFN0cmlu
ZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAg
ICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAg
ICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtNjYsNyAr
NjYsNyBAQCBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29v
a2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsK
LSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewog
ICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAg
ICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtODMs
NyArODMsNyBAQCBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29y
ZTo6RG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2ll
SmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYg
c2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgV2Vi
Q29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwpAQCAtOTUsNyArOTUsNyBAQCBzdGQ6
OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUph
cjo6Y29va2llUmVxdWVzdEhlYQogYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50
LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5m
cmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdl
SUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmgKaW5kZXggOTdkZDc2ZjY2NGMuLjU1OWJkMGU1MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nIGNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykgZmluYWw7CiAgICAgYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYpIGNvbnN0IGZpbmFsOwotICAgIHN0
ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmlu
ZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAppbmRleCA4OTBjNWU1NmFjMC4uNGFmNDk1YTUxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMg
dWludDY0X3QgZ2VuZXJhdGVMaXN0ZW5lcklEKCkKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNy
ZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjb3Jl
RnJhbWUpCiB7CiAgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJh
bWVMb2FkZXJDbGllbnQ+KHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oJmNvcmVG
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpKSk7Ci0gICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRDcmVhdGVNYWluRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0
ZU1haW5GcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUg
PSBjb3JlRnJhbWU7CiAgICAgZnJhbWUtPm1fY29yZUZyYW1lLT50cmVlKCkuc2V0TmFtZShTdHJp
bmcoKSk7CkBAIC0xMjEsNyArMTIxLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRl
V2l0aENvcmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMKIFJlZjxX
ZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsK
ICAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVMb2FkZXJD
bGllbnQ+KCkpOwotICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3Jl
YXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5m
cmFtZUlEKCkpKTsKIAogICAgIGF1dG8gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5j
b3JlUGFnZSgpLCBvd25lckVsZW1lbnQsIGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgp
KTsKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUgPSBjb3JlRnJhbWUucHRyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBkNzdl
NjM3MGMxMS4uYmRiOTJmNzRkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcApAQCAtNzIsNyArNzIsNyBAQCBXZWJJbnNwZWN0b3I6
On5XZWJJbnNwZWN0b3IoKQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6b3BlbkxvY2FsSW5zcGVjdG9y
RnJvbnRlbmQoYm9vbCB1bmRlclRlc3QpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJv
eHk6Ok9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRl
c3QpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpPcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChjYW5BdHRhY2hXaW5kb3co
KSwgdW5kZXJUZXN0KSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzZXRGcm9udGVuZENvbm5l
Y3Rpb24oSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTEw
OCw3ICsxMDgsNyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQ
Qzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aQogCiB2b2lkIFdlYkluc3BlY3Rv
cjo6Y2xvc2VGcm9udGVuZENvbm5lY3Rpb24oKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clByb3h5OjpEaWRDbG9zZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpKTsKIAogICAgIC8vIElmIHdl
IHRyaWVkIHRvIGNsb3NlIHRoZSBmcm9udGVuZCBiZWZvcmUgaXQgd2FzIGNyZWF0ZWQsIHRoZW4g
bm8gY29ubmVjdGlvbiBleGlzdHMgeWV0LgogICAgIGlmIChtX2Zyb250ZW5kQ29ubmVjdGlvbikg
ewpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29u
bmVjdGlvbigpCiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQogewotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdU
b0Zyb250KCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6d2hlbkZyb250ZW5kQ29ubmVjdGlv
bkVzdGFibGlzaGVkKEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKQEAgLTI4MSw3ICsyODEs
NyBAQCB2b2lkIFdlYkluc3BlY3Rvcjo6c3RvcEVsZW1lbnRTZWxlY3Rpb24oKQogCiB2b2lkIFdl
Ykluc3BlY3Rvcjo6ZWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYm9vbCBhY3RpdmUpCiB7Ci0gICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkVsZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKGFjdGl2
ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yUHJveHk6OkVsZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKGFjdGl2ZSkpOwogfQogCiBib29s
IFdlYkluc3BlY3Rvcjo6Y2FuQXR0YWNoV2luZG93KCkKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lk
IFdlYkluc3BlY3Rvcjo6dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpCiAKICAgICBtX3ByZXZp
b3VzQ2FuQXR0YWNoID0gY2FuQXR0YWNoV2luZG93OwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yUHJveHk6OkF0dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoY2FuQXR0YWNoV2luZG93KSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQ
cm94eTo6QXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChjYW5BdHRhY2hXaW5kb3cpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggYzk2NTJlOTRhZjguLmJjZmY4ZTJhODk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yVUkuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYkluc3BlY3RvclVJOjpXZWJJbnNwZWN0b3JV
SShXZWJQYWdlJiBwYWdlKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFi
bGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5k
ZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCit2b2lkIFdlYkluc3BlY3RvclVJOjpl
c3RhYmxpc2hDb25uZWN0aW9uKFBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVy
LCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogewogICAgIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBtX2Zy
b250ZW5kQVBJRGlzcGF0Y2hlci5yZXNldCgpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKICAgICBpZiAobV9mcm9udGVuZEhvc3QpCiAgICAg
ICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50KCk7CiAKLSAgICBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0geyB9
OwogICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCmluZGV4IDgzODFiZjFjZWRlLi45NDI0
YmZlMWYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JVSS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKSBvdmVycmlkZSB7IGNsb3NlV2lu
ZG93KCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JVSSBtZXNzYWdlcwotICAg
IHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmll
ciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCk7CisgICAgdm9pZCBl
c3RhYmxpc2hDb25uZWN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKTsKICAg
ICB2b2lkIHVwZGF0ZUNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKQEAg
LTEzMyw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIC8vIGNvcmVQYWdlKCksIHNpbmNlIHdlIG1h
eSBuZWVkIGl0IGFmdGVyIHRoZSBmcm9udGVuZCdzIHBhZ2UgaGFzIHN0YXJ0ZWQgZGVzdHJ1Y3Rp
b24uCiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciogbV9mcm9udGVuZENvbnRyb2xs
ZXIgeyBudWxscHRyIH07CiAKLSAgICB1aW50NjRfdCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
IHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXI7CiAgICAgYm9vbCBtX3VuZGVyVGVzdCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvY2tp
bmdVbmF2YWlsYWJsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzVmlzaWJsZSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLm1lc3NhZ2VzLmluCmluZGV4IGRlYTBmZTU4NGQ0Li40MzE5MGFhODM0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5z
cGVjdG9yVUkubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAog
bWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUkgewotICAgIEVzdGFibGlzaENvbm5lY3Rpb24odWlu
dDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBp
bnNwZWN0aW9uTGV2ZWwpCisgICAgRXN0YWJsaXNoQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVk
IGluc3BlY3Rpb25MZXZlbCkKICAgICBVcGRhdGVDb25uZWN0aW9uKCkKIAogICAgIEF0dGFjaGVk
Qm90dG9tKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggM2JhYWZkMTg1NGMuLjIwODdmMjE0YWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIHByaXZhdGU6CiAK
IERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgd2Vi
UGFnZUNvdW50ZXIsICgiV2ViUGFnZSIpKTsKIAotUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0
ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQorUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZShJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgUmVmPFdlYlBhZ2U+IHBh
Z2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7
CiAKQEAgLTM3MCw3ICszNzAsNyBAQCBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogICAgIHJldHVy
biBwYWdlOwogfQogCi1XZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitXZWJQYWdlOjpXZWJQYWdlKElkZW50aWZp
ZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6
IG1fcGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fdmlld1NpemUocGFyYW1ldGVycy52aWV3U2l6ZSkK
ICAgICAsIG1fYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgeyBwYXJhbWV0ZXJzLmFsd2F5
c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyIH0KQEAgLTgzMSw3ICs4MzEsNyBAQCBJUEM6OkNvbm5l
Y3Rpb24qIFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0
X3QgV2ViUGFnZTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJl
dHVybiBwYWdlSUQoKTsKKyAgICByZXR1cm4gcGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMTY0OCw3ICsxNjQ4LDcgQEAgdm9pZCBXZWJQYWdl
Ojpnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgQmFja0Zv
cndhcmRJdGVtSWQKICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhM
b2FkaW5nLCAiSW4gV2ViUHJvY2VzcyBwaWQgJWksIFdlYlBhZ2UgJSIgUFJJdTY0ICIgaXMgbmF2
aWdhdGluZyB0byBiYWNrL2ZvcndhcmQgVVJMICVzIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCBt
X3BhZ2VJRCwgaXRlbS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExv
YWRpbmcsICJJbiBXZWJQcm9jZXNzIHBpZCAlaSwgV2ViUGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZp
Z2F0aW5nIHRvIGJhY2svZm9yd2FyZCBVUkwgJXMiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIG1f
cGFnZUlELnRvVUludDY0KCksIGl0ZW0tPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpOwogICAgIG1fcGVuZGluZ05hdmln
YXRpb25JRCA9IG5hdmlnYXRpb25JRDsKQEAgLTIwNzYsNyArMjA3Niw3IEBAIGJvb2wgV2ViUGFn
ZTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgaWYgKCF2aWV3
IHx8IHZpZXctPmZpeGVkTGF5b3V0U2l6ZSgpID09IHNpemUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFn
ZSAiIDw8IG1fcGFnZUlEIDw8ICIgc2V0Rml4ZWRMYXlvdXRTaXplICIgPDwgc2l6ZSk7CisgICAg
TE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9w
YWdlSUQudG9VSW50NjQoKSA8PCAiIHNldEZpeGVkTGF5b3V0U2l6ZSAiIDw8IHNpemUpOwogICAg
IHZpZXctPnNldEZpeGVkTGF5b3V0U2l6ZShzaXplKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6Rml4ZWRMYXlvdXRTaXplRGlkQ2hhbmdlKHNpemUpKTsKQEAgLTI1MDQsNyAr
MjUwNCw3IEBAIGNvbnN0IFdlYkV2ZW50KiBXZWJQYWdlOjpjdXJyZW50RXZlbnQoKQogdm9pZCBX
ZWJQYWdlOjpmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uIHJlYXNvbikKIHsK
ICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUGFnZSAoUGFnZUlE
PSVsbHUpIC0gQWRkaW5nIGEgcmVhc29uICVkIHRvIGZyZWV6ZSBsYXllciB0cmVlOyBjdXJyZW50
IHJlYXNvbnMgYXJlICVkIiwKLSAgICAgICAgdGhpcywgbV9wYWdlSUQsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihyZWFzb24pLCBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMudG9SYXcoKSk7CisgICAg
ICAgIHRoaXMsIG1fcGFnZUlELnRvVUludDY0KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFz
b24pLCBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMudG9SYXcoKSk7CiAgICAgbV9sYXllclRyZWVG
cmVlemVSZWFzb25zLmFkZChyZWFzb24pOwogICAgIHVwZGF0ZURyYXdpbmdBcmVhTGF5ZXJUcmVl
RnJlZXplU3RhdGUoKTsKIH0KQEAgLTI1MTIsNyArMjUxMiw3IEBAIHZvaWQgV2ViUGFnZTo6ZnJl
ZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbiByZWFzb24pCiB2b2lkIFdlYlBhZ2U6
OnVuZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbiByZWFzb24pCiB7CiAgICAg
UkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlBhZ2UgKFBhZ2VJRD0lbGx1
KSAtIFJlbW92aW5nIGEgcmVhc29uICVkIHRvIGZyZWV6ZSBsYXllciB0cmVlOyBjdXJyZW50IHJl
YXNvbnMgYXJlICVkIiwKLSAgICAgICAgdGhpcywgbV9wYWdlSUQsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihyZWFzb24pLCBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMudG9SYXcoKSk7CisgICAgICAg
IHRoaXMsIG1fcGFnZUlELnRvVUludDY0KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24p
LCBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMudG9SYXcoKSk7CiAgICAgbV9sYXllclRyZWVGcmVl
emVSZWFzb25zLnJlbW92ZShyZWFzb24pOwogICAgIHVwZGF0ZURyYXdpbmdBcmVhTGF5ZXJUcmVl
RnJlZXplU3RhdGUoKTsKIH0KQEAgLTMxNjgsNyArMzE2OCw3IEBAIHZvaWQgV2ViUGFnZTo6dmlz
aWJpbGl0eURpZENoYW5nZSgpCiAKIHZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRp
b25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZUNo
YW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBj
YWxsYmFja0lEcykKIHsKLSAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFt
IDw8ICJXZWJQYWdlICIgPDwgcGFnZUlEKCkgPDwgIiBzZXRBY3Rpdml0eVN0YXRlIHRvICIgPDwg
YWN0aXZpdHlTdGF0ZSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVh
bSA8PCAiV2ViUGFnZSAiIDw8IHBhZ2VJRCgpLnRvVUludDY0KCkgPDwgIiBzZXRBY3Rpdml0eVN0
YXRlIHRvICIgPDwgYWN0aXZpdHlTdGF0ZSk7CiAKICAgICBhdXRvIGNoYW5nZWQgPSBtX2FjdGl2
aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOwogICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5
U3RhdGU7CkBAIC0zMTc2LDcgKzMxNzYsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3Rh
dGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdAogICAg
IGlmIChjaGFuZ2VkKQogICAgICAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKG1fcGFnZSwgInNldEFjdGl2aXR5U3RhdGUgY2FsbGVkIG9uICUiIFBS
SXU2NCAiIGJ1dCBXZWJDb3JlIHBhZ2Ugd2FzIG51bGwiLCBwYWdlSUQoKSk7CisgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShtX3BhZ2UsICJzZXRBY3Rpdml0eVN0YXRlIGNhbGxlZCBvbiAlIiBQUkl1
NjQgIiBidXQgV2ViQ29yZSBwYWdlIHdhcyBudWxsIiwgcGFnZUlEKCkudG9VSW50NjQoKSk7CiAg
ICAgaWYgKG1fcGFnZSkgewogICAgICAgICBTZXRGb3JTY29wZTxPcHRpb25TZXQ8QWN0aXZpdHlT
dGF0ZTo6RmxhZz4+IGN1cnJlbnRseUNoYW5naW5nQWN0aXZpdHlTdGF0ZSB7IG1fbGFzdEFjdGl2
aXR5U3RhdGVDaGFuZ2VzLCBjaGFuZ2VkIH07CiAgICAgICAgIG1fcGFnZS0+c2V0QWN0aXZpdHlT
dGF0ZShhY3Rpdml0eVN0YXRlKTsKQEAgLTQzMzksNyArNDMzOSw3IEBAIHZvaWQgV2ViUGFnZTo6
bWFpbkZyYW1lRGlkTGF5b3V0KCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChG
cmFtZVZpZXcqIGZyYW1lVmlldyA9IG1haW5GcmFtZVZpZXcoKSkgewogICAgICAgICBJbnRTaXpl
IG5ld0NvbnRlbnRTaXplID0gZnJhbWVWaWV3LT5jb250ZW50c1NpemUoKTsKLSAgICAgICAgTE9H
X1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdl
SUQgPDwgIiBtYWluRnJhbWVEaWRMYXlvdXQgc2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBu
ZXdDb250ZW50U2l6ZSk7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0
cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBtYWluRnJhbWVE
aWRMYXlvdXQgc2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBuZXdDb250ZW50U2l6ZSk7CiAg
ICAgICAgIGlmIChtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRDb250ZW50c1NpemUobmV3Q29u
dGVudFNpemUpKQogICAgICAgICAgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOwog
ICAgIH0KQEAgLTU3NDIsNyArNTc0Miw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChX
ZWJGcmFtZSogZnJhbWUpCiAgICAgCiAgICAgYm9vbCB2aWV3cG9ydENoYW5nZWQgPSBmYWxzZTsK
IAotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAi
IDw8IG1fcGFnZUlEIDw8ICIgZGlkQ29tbWl0TG9hZCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAi
IDw8IGNvcmVGcmFtZS0+dmlldygpLT5jb250ZW50c1NpemUoKSk7CisgICAgTE9HX1dJVEhfU1RS
RUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQudG9VSW50
NjQoKSA8PCAiIGRpZENvbW1pdExvYWQgc2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBjb3Jl
RnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkpOwogICAgIGlmIChtX3ZpZXdwb3J0Q29uZmln
dXJhdGlvbi5zZXRDb250ZW50c1NpemUoY29yZUZyYW1lLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgp
KSkKICAgICAgICAgdmlld3BvcnRDaGFuZ2VkID0gdHJ1ZTsKIApAQCAtNjA1Niw3ICs2MDU2LDcg
QEAgdm9pZCBXZWJQYWdlOjpzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKQogICAgIC8vIElmIHRoYXQg
aXMgdGhlIGNhc2UsIGp1c3Qgc2VuZCB3aGF0IHdlIGhhdmUgKGkuZS4gZG9uJ3QgaW5jbHVkZSBw
b3N0LWxheW91dCBkYXRhKSBhbmQgd2FpdCB1bnRpbCB0aGUKICAgICAvLyBuZXh0IGxheWVyIHRy
ZWUgY29tbWl0IHRvIGNvbXB1dGUgYW5kIHNlbmQgdGhlIGNvbXBsZXRlIEVkaXRvclN0YXRlIG92
ZXIuCiAgICAgYXV0byBzdGF0ZSA9IGVkaXRvclN0YXRlKCk7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQoc3RhdGUpLCBwYWdlSUQoKSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQoc3RhdGUpKTsK
IAogICAgIGlmIChzdGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAgc2NoZWR1
bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKTsKQEAgLTYyMzcsNyArNjIzNyw3IEBAIHZvaWQgV2Vi
UGFnZTo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3Qq
IG1lc3NhZ2VCb2R5KQogCiB2b2lkIFdlYlBhZ2U6OnBvc3RNZXNzYWdlSWdub3JpbmdGdWxseVN5
bmNocm9ub3VzTW9kZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVz
c2FnZUJvZHkpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVNZXNz
YWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KSkpLCBwYWdlSUQoKSwgSVBDOjpTZW5kT3B0
aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpIYW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0YShXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KSkpLCBJ
UEM6OlNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hyb25vdXNNb2RlKTsKIH0KIAogdm9pZCBX
ZWJQYWdlOjpwb3N0U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIG1l
c3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHksIFJlZlB0cjxBUEk6Ok9iamVjdD4m
IHJldHVybkRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
aW5kZXggODY4YWU5MmYyZmIuLjYxZTY0OTI4ZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplSGFzaC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5E
YXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2ludGVySUQuaD4KQEAgLTI3Myw3ICsyNzQsOSBA
QCB1c2luZyBXS0V2ZW50TW9kaWZpZXJzID0gdWludDMyX3Q7CiAKIGNsYXNzIFdlYlBhZ2UgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGFnZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
UGFnZT4gY3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
KTsKKyAgICB1c2luZyBJZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7CisgICAg
c3RhdGljIFJlZjxXZWJQYWdlPiBjcmVhdGUoSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYmKTsKKwogICAgIHZpcnR1YWwgfldlYlBhZ2UoKTsKIAogICAgIHZvaWQgcmVpbml0
aWFsaXplV2ViUGFnZShXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMjgzLDcgKzI4
Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUGFnZSogZnJvbUNvcmVQYWdlKFdlYkNvcmU6
OlBhZ2UqKTsKIAogICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlLmdldCgpOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlSUQ7IH0KKyAgICBJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
LT5zZXNzaW9uSUQoKTsgfQogICAgIGJvb2wgdXNlc0VwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7
IHJldHVybiBtX3BhZ2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7IH0KIApAQCAtMTE2Niw3ICsx
MTY5LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBt
ZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKICAgICAgICAgY2FuY2Vs
R2VzdHVyZXNCbG9ja2VkT25TeW5jaHJvbm91c1JlcGxpZXMoKTsKLSAgICAgICAgcmV0dXJuIHNl
bmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX3BhZ2VJRCwgU2Vjb25k
czo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNz
V2lsbFN1c3BlbmQpOworICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwg
V1RGTW92ZShyZXBseSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246
OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKICAgICB9CiAKICAgICBXZWJDb3Jl
OjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJp
bmcmIG9yaWdpbklkZW50aWZpZXIpOwpAQCAtMTE5OSw3ICsxMjAyLDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0VXNlcklzSW50ZXJhY3RpbmcoYm9vbCB1c2VySXNJbnRlcmFjdGluZykgeyBtX3Vz
ZXJJc0ludGVyYWN0aW5nID0gdXNlcklzSW50ZXJhY3Rpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAg
ICBXZWJQYWdlKElkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKICAg
ICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIApAQCAtMTU4NSw3ICsxNTg4LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50QWZ0ZXJDb21t
aXR0aW5nTG9hZCgpOwogCi0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgSWRlbnRpZmllciBt
X3BhZ2VJRDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAg
ICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5GcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKaW5k
ZXggZDk2YTdkN2RkYTkuLmI3Nzk5YjRmYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcApAQCAt
NDEsNyArNDEsNyBAQCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjpXZWJQYWdlSW5zcGVjdG9yVGFy
Z2V0KFdlYlBhZ2UmIHBhZ2UpCiAKIFN0cmluZyBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjppZGVu
dGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2Uu
cGFnZUlEKCkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZS5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Ojpjb25uZWN0
KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBjaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaAppbmRleCAzMDFiMTM5ZTFkMi4uNmI3ZWM1YjE2ZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC0yNiwx
MyArMjYsMTUgQEAKICNpZm5kZWYgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2VfaAog
I2RlZmluZSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZV9oCiAKKyNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
UGFnZTsKIH0KIAogQGludGVyZmFjZSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZSA6
IE5TT2JqZWN0IHsKICAgICBXZWJLaXQ6OldlYlBhZ2UqIG1fcGFnZTsKLSAgICB1aW50NjRfdCBt
X3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICBpZCBt
X3BhcmVudDsKICAgICBib29sIG1faGFzTWFpbkZyYW1lUGx1Z2luOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RCYXNlLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDNkM2YzNTU1M2U2Li42MTY1
YTAxZmU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5t
bQpAQCAtMTQ4LDcgKzE0OCw3IEBAIC0gKHZvaWQpc2V0V2ViUGFnZTooV2ViS2l0OjpXZWJQYWdl
KilwYWdlCiAgICAgICAgIGF1dG8qIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgICAg
IG1faGFzTWFpbkZyYW1lUGx1Z2luID0gZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCkgPyBmcmFt
ZS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpIDogZmFsc2U7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgbV9wYWdlSUQgPSAwOworICAgICAgICBtX3BhZ2VJRCA9IHsgfTsKICAgICAgICAg
bV9oYXNNYWluRnJhbWVQbHVnaW4gPSBmYWxzZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGEwN2NhNDVk
MzM3Li5iNmFlODQzMjdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTI2Niw4ICsyNjYsOCBAQCBib29sIFdlYlBhZ2U6
OmV4ZWN1dGVLZXlwcmVzc0NvbW1hbmRzSW50ZXJuYWwoY29uc3QgVmVjdG9yPFdlYkNvcmU6Oktl
eXByZXNzQ29tbQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgYm9vbCBjb21tYW5kV2FzSGFuZGxlZEJ5VUlQcm9jZXNzID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29t
bWFuZEJ5U2VsZWN0b3IoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpLAotICAgICAgICAgICAgICAg
ICAgICBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rv
cjo6UmVwbHkoY29tbWFuZFdhc0hhbmRsZWRCeVVJUHJvY2VzcyksIG1fcGFnZUlEKTsKKyAgICAg
ICAgICAgICAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGVjdXRlU2F2ZWRD
b21tYW5kQnlTZWxlY3Rvcihjb21tYW5kc1tpXS5jb21tYW5kTmFtZSksCisgICAgICAgICAgICAg
ICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVj
dG9yOjpSZXBseShjb21tYW5kV2FzSGFuZGxlZEJ5VUlQcm9jZXNzKSk7CiAgICAgICAgICAgICAg
ICAgZXZlbnRXYXNIYW5kbGVkIHw9IGNvbW1hbmRXYXNIYW5kbGVkQnlVSVByb2Nlc3M7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAppbmRleCA1Y2U2OWNjZjgzMy4uNjE3NGIwYTNiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9j
ZXNzKCkKICAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChXVEZNb3ZlKHN0YXRpc3RpY3MpKSwgMCk7CiAgICAgfSk7
CiAKLSAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0UmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFt0aGlzXSAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1
aW50NjRfdCBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21h
aW4pIHsKKyAgICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0UmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFt0aGlzXSAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
LCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBv
cGVuZXJEb21haW4pIHsKICAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCku
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKHNlc3Npb25JRCwgZG9tYWluSW5OZWVk
T2ZTdG9yYWdlQWNjZXNzLCBvcGVuZXJQYWdlSUQsIG9wZW5lckRvbWFpbiksIDApOwogICAgIH0p
OwogI2VuZGlmCkBAIC02NjcsMTYgKzY2NywxNiBAQCBXZWJQYWdlKiBXZWJQcm9jZXNzOjpmb2N1
c2VkV2ViUGFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAgICAgCi1XZWJQYWdlKiBXZWJQ
cm9jZXNzOjp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK1dlYlBhZ2UqIFdlYlByb2Nl
c3M6OndlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIHJldHVybiBt
X3BhZ2VNYXAuZ2V0KHBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFn
ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQordm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgLy8gSXQgaXMg
bmVjZXNzYXJ5IHRvIGNoZWNrIGZvciBwYWdlIGV4aXN0ZW5jZSBoZXJlIHNpbmNlIGR1cmluZyBh
IHdpbmRvdy5vcGVuKCkgKG9yIHRhcmdldGVkCiAgICAgLy8gbGluaykgdGhlIFdlYlBhZ2UgZ2V0
cyBjcmVhdGVkIGJvdGggaW4gdGhlIHN5bmNocm9ub3VzIGhhbmRsZXIgYW5kIHRocm91Z2ggdGhl
IG5vcm1hbCB3YXkuIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPj46OkFk
ZFJlc3VsdCByZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7CisgICAgYXV0
byByZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7CiAgICAgYXV0byBvbGRQ
YWdlSUQgPSBwYXJhbWV0ZXJzLm9sZFBhZ2VJRCA/IHBhcmFtZXRlcnMub2xkUGFnZUlELnZhbHVl
KCkgOiBwYWdlSUQ7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIEFTU0VS
VCghcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CkBAIC02OTMsNyArNjkzLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzOjpjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmEKICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAK
LXZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQo
bV9wYWdlTWFwLmNvbnRhaW5zKHBhZ2VJRCkpOwogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCB2b2lk
IFdlYlByb2Nlc3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29u
KQogCiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5n
ZSh1aW50NjRfdCwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5n
ZWQpCit2b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFBhZ2VJZGVu
dGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCkK
IHsKICAgICBpZiAoY2hhbmdlZCAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkK
ICAgICAgICAgdXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb246OlZp
c2liaWxpdHlIYXNDaGFuZ2VkKTsKQEAgLTE2MjQsMTMgKzE2MjQsMTMgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpzZW5kUHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFVSTCYgdXJsKQogICAgIHBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkQ29s
bGVjdFByZXdhcm1JbmZvcm1hdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UHJvY2Vz
c1dhcm1pbmc6OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSksIDApOwogfQogCi12b2lkIFdl
YlByb2Nlc3M6OnBhZ2VEaWRFbnRlcldpbmRvdyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlBy
b2Nlc3M6OnBhZ2VEaWRFbnRlcldpbmRvdyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAg
bV9wYWdlc0luV2luZG93cy5hZGQocGFnZUlEKTsKICAgICBtX25vblZpc2libGVQcm9jZXNzQ2xl
YW51cFRpbWVyLnN0b3AoKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwYWdlV2lsbExlYXZlV2lu
ZG93KHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGFnZVdpbGxMZWF2ZVdpbmRv
dyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgbV9wYWdlc0luV2luZG93cy5yZW1vdmUo
cGFnZUlEKTsKIApAQCAtMTY3Myw3ICsxNjczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjplbmFibGVQ
cml2YXRlQnJvd3NpbmdGb3JUZXN0aW5nKGJvb2wgZW5hYmxlKQogICAgIGlmIChlbmFibGUpCiAg
ICAgICAgIGVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNz
KCk7CiAKLSAgICBWZWN0b3I8dWludDY0X3Q+IHBhZ2VJRHM7CisgICAgVmVjdG9yPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSURzOwogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcCkgewogICAg
ICAgICBpZiAocGFnZS52YWx1ZSkKICAgICAgICAgICAgIHBhZ2VJRHMuYXBwZW5kKHBhZ2Uua2V5
KTsKQEAgLTE4NTMsNyArMTg1Myw3IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6Omxp
YldlYlJUQ05ldHdvcmsoKQogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBX
ZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3ModWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCit2b2lk
IFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25J
RCkKIHsKICAgICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQgcHJvY2Vz
cyBhbmQgdGhlIGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5l
dHdvcmsgUHJvY2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uLiBTV0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5n
IElQQzo6Q29ubmVjdGlvbiBhcyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CmluZGV4IDUyNWRmMTgzZjIyLi4xODU3Y2VhMGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAj
aWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgpA
QCAtMTQ1LDkgKzE0Niw5IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vz
cyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0
aW9uLmdldCgpOyB9CiAKLSAgICBXZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29u
c3Q7Ci0gICAgdm9pZCBjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQs
IHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV2ViUGFnZSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcikgY29uc3Q7CisgICAgdm9pZCBjcmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHZvaWQgcmVtb3ZlV2Vi
UGFnZShQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIFdlYlBh
Z2UqIGZvY3VzZWRXZWJQYWdlKCkgY29uc3Q7CiAKICAgICBJbmplY3RlZEJ1bmRsZSogaW5qZWN0
ZWRCdW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgpOyB9CkBAIC0x
OTksOCArMjAwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwogCi0gICAgdm9pZCBwYWdlRGlkRW50ZXJX
aW5kb3codWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWlu
dDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyhXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcik7CisgICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyKTsKIAogICAgIHZvaWQgbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXJGaXJl
ZCgpOwogCkBAIC0yMTksNyArMjIwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBY3Rp
dmVQYWdlcygpOwogICAgIHZvaWQgZ2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHBhZ2VB
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2NF90IHBhZ2VJRCwgT3B0aW9uU2V0PFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKIAogICAgIHZvaWQgc2V0SGlkZGVuUGFnZURP
TVRpbWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQoaW50IG1pbGxpc2Vjb25kcyk7CiAKQEAgLTM1
OSw3ICszNjAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJl
ZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6
OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAj
ZW5kaWYKIApAQCAtNDYwLDcgKzQ2MSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViQ29u
bmVjdGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKLSAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+PiBtX3BhZ2VHcm91cE1hcDsKICAgICBS
ZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IG1faW5qZWN0ZWRCdW5kbGU7CiAKQEAgLTUxNCw3ICs1MTUs
NyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3Byb2Nlc3NJc1N1c3BlbmRlZCB7IGZhbHNlIH07
CiAKLSAgICBIYXNoU2V0PHVpbnQ2NF90PiBtX3BhZ2VzSW5XaW5kb3dzOworICAgIEhhc2hTZXQ8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fcGFnZXNJbldpbmRvd3M7CiAgICAgV2ViQ29yZTo6
VGltZXIgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lcjsKIAogICAgIFJlZlB0cjxXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4gbV9hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggYjM5YjM4YzE4M2MuLjU3YTI2NTYzNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdlcyAt
PiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycyhzdHJ1Y3QgV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyBwYXJh
bWV0ZXJzKQogCiAgICAgIyBDcmVhdGUgYSBuZXcgcGFnZS4KLSAgICBDcmVhdGVXZWJQYWdlKHVp
bnQ2NF90IG5ld1BhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyBwYWdlQ3JlYXRpb25QYXJhbWV0ZXJzKQorICAgIENyZWF0ZVdlYlBhZ2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbmV3UGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzIHBhZ2VDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICBQcmV3YXJtR2xvYmFsbHkoKTsK
ICAgICBQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJDb3JlOjpQcmV3YXJt
SW5mb3JtYXRpb24gcHJld2FybUluZm9ybWF0aW9uKQpAQCAtMTExLDcgKzExMSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05l
dHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIHN0cnVj
dCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRp
YWxTZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFBBTDo6U2Vz
c2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiAgICAgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50
cygpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDBiZDkwYWY5MTg3Li4wZTk0Mjk2MDQ5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFy
ZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VBcmVhTWFwLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRp
c3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBj
CiAKICAgICAvLyBOYW1lc3BhY2UgSURzIGZvciBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlcyBh
cmUgZXF1aXZhbGVudCB0byB3ZWIgcGFnZSBJRHMKICAgICAvLyBzbyB3ZSBjYW4gZ2V0IHRoZSBy
aWdodCBwYWdlIGhlcmUuCi0gICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYlBhZ2UobV9zdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIFdlYlBhZ2UqIHdlYlBh
Z2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVy
PFBhZ2VJZGVudGlmaWVyVHlwZT4obV9zdG9yYWdlTmFtZXNwYWNlSUQpKTsKICAgICBpZiAoIXdl
YlBhZ2UpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmgKaW5kZXggMjliYTdkOGE4YTMuLmVjYWY2
NjUxOWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1N0b3JhZ2VBcmVhLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3Bh
Y2VJbXBsLmNwcAppbmRleCBiMzkwODFlNmUzYy4uODA5NjIzNDI0NGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNw
YWNlSW1wbC5jcHAKQEAgLTQwLDEyICs0MCwxMiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdl
TmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRl
bnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFn
ZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNz
aW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRl
bnRpZmllci50b1VJbnQ2NCgpLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVmPFN0
b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFs
TG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3Rh
SW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6
OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlSWRlbnRpZmllciBpZGVu
dGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKGlkZW50aWZpZXIsIHF1b3RhSW5CeXRlcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNl
SW1wbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVz
cGFjZUltcGwuaAppbmRleCA2NzU3ZTNiODE4OC4uMWJmZWM0OGI4OWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFj
ZUltcGwuaApAQCAtMzksOCArMzksOCBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBTdG9yYWdl
TmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMp
OwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVw
aGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdW5z
aWduZWQgcXVvdGFJbkJ5dGVzKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUlu
Qnl0ZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmluZGV4IGZjNjU5ODYzMjUyLi43NjVlZmY0MDRiMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lv
bk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNr
U2Vzc2lvbk1hbmFnZXIubW0KQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbQogICAgIGFkZENsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQp
OwogCiAgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OlNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQobV9j
b250cm9sc01hbmFnZXJDb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKQEAgLTI5MSw3ICsyOTEsNyBAQCB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIo
KQogICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKIAogICAgIG1fcGFnZS0+dmlk
ZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdl
cigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpKTsK
IH0KIAogdWludDY0X3QgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y29udGV4dElkRm9yTWVkaWFF
bGVtZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKQEAgLTMxOCwy
NyArMzE4LDI3IEBAIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OmN1cnJlbnRQbGF5YmFja0NvbnRyb2xzRWxlbWVuCiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6ZHVyYXRpb25DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1
cmF0aW9uKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpEdXJhdGlvbkNoYW5nZWQoY29udGV4dElkLCBkdXJhdGlvbiksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpEdXJhdGlvbkNoYW5nZWQoY29udGV4dElkLCBkdXJhdGlvbikpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRUaW1lQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkN1cnJl
bnRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OkN1cnJlbnRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBh
bmNob3JUaW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YnVmZmVyZWRU
aW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkJ1
ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6QnVmZmVyZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHBsYXliYWNrU3RhcnRlZFRpbWUpCiB7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXli
YWNrU3RhcnRlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgcGxheWJhY2tTdGFydGVkVGltZSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBs
YXliYWNrU3RhcnRlZFRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpy
YXRlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5
YmFja1JhdGUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1Jh
dGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UmF0ZUNoYW5nZWQoY29udGV4dElkLCBpc1BsYXlpbmcs
IHBsYXliYWNrUmF0ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWth
YmxlUmFuZ2VzQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OlRpbWVS
YW5nZXMmIHRpbWVSYW5nZXMsIGRvdWJsZSBsYXN0TW9kaWZpZWRUaW1lLCBkb3VibGUgbGl2ZVVw
ZGF0ZUludGVydmFsKQpAQCAtMzQ5LDM3ICszNDksMzcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBX
ZWIKICAgICAgICAgZG91YmxlIGVuZCA9IHRpbWVSYW5nZXMucmFuZ2VzKCkuZW5kKGkpLnRvRG91
YmxlKCk7CiAgICAgICAgIHJhbmdlc1ZlY3Rvci5hcHBlbmQoeyBzdGFydCwgZW5kIH0pOwogICAg
IH0KLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6U2Vla2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKGNvbnRleHRJZCwgV1RGTW92ZShyYW5nZXNW
ZWN0b3IpLCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWwpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6U2Vla2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKGNvbnRleHRJZCwgV1RGTW92ZShy
YW5nZXNWZWN0b3IpLCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWwpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2FuUGxheUZhc3RSZXZlcnNlQ2hh
bmdlZChjb250ZXh0SWQsIHZhbHVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlGYXN0UmV2
ZXJzZUNoYW5nZWQoY29udGV4dElkLCB2YWx1ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2
NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChj
b250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVk
aW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0
ZWRJbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9y
PE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25z
LCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKHVp
bnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0
ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmlj
ZU5hbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZChjb250ZXh0SWQsIGVu
YWJsZWQsIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNl
TmFtZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5n
ZWQoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSks
IGxvY2FsaXplZERldmljZU5hbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjphdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWlu
dDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChj
b250ZXh0SWQsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNl
bGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxl
TWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0
SWQsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp3
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBi
b29sIGRpc2FibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29h
L1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCA1ZDYxMTBiNzkwOS4uNzA2NjM5Nzcz
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlk
ZW9FbGVtZW4KICAgICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnNldFJv
b3RMYXllcih2aWRlb0xheWVyKTsKICAgICB9CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRl
eHRJZCwgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRleHRJRCgpLCB2aWRl
b1JlY3QsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW50ZXJmYWNlLT5mdWxsc2NyZWVu
TW9kZSgpLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBzdGFuZGJ5KSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0
aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGlj
dHVyZSwgc3RhbmRieSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRW
aWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYg
dmlkZW9FbGVtZW50KQpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlk
CiAgICAgICAgIHJldHVybjsKIAogICAgIGludGVyZmFjZS5zZXRJc0FuaW1hdGluZyh0cnVlKTsK
LSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkLCBpbmxpbmVWaWRlb0ZyYW1lKHZpZGVvRWxlbWVudCkp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkLCBpbmxpbmVWaWRl
b0ZyYW1lKHZpZGVvRWxlbWVudCkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZSB0YXJnZXRNb2RlKQpAQCAtMzI0LDcgKzMyNCw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhv
dXRBbmltYXRpb24oV2ViQ29yZTo6CiAKICAgICBpbnRlcmZhY2Uuc2V0VGFyZ2V0SXNGdWxsc2Ny
ZWVuKGZhbHNlKTsKIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4
dElkLCB0YXJnZXRNb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuV2l0aG91
dEFuaW1hdGlvblRvTW9kZShjb250ZXh0SWQsIHRhcmdldE1vZGUpKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKHZpZGVvRWxlbWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKHRhcmdldE1vZGUpOwpA
QCAtMzM2LDEzICszMzYsMTMgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0Vmlk
ZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjoKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6aGFzVmlkZW9DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCBoYXNWaWRlbykKIHsKICAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW8oY29udGV4dElk
LCBoYXNWaWRlbyksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW8oY29udGV4dElk
LCBoYXNWaWRlbykpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnZpZGVvRGlt
ZW5zaW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBGbG9hdFNpemUmIHZpZGVv
RGltZW5zaW9ucykKIHsKICAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGNv
bnRleHRJZCwgdmlkZW9EaW1lbnNpb25zKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRl
b0RpbWVuc2lvbnMoY29udGV4dElkLCB2aWRlb0RpbWVuc2lvbnMpKTsKIH0KIAogI3ByYWdtYSBt
YXJrIE1lc3NhZ2VzIGZyb20gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OgpAQCAtMzY0LDcg
KzM2NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFVwZGF0ZUlubGlu
ZVJlY3QodWludDY0X3QgY29udGV4dElkKQogCiAgICAgYXV0byYgbW9kZWwgPSBlbnN1cmVNb2Rl
bChjb250ZXh0SWQpOwogICAgIEludFJlY3QgaW5saW5lUmVjdCA9IGlubGluZVZpZGVvRnJhbWUo
Km1vZGVsLnZpZGVvRWxlbWVudCgpKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SW5saW5lUmVjdChjb250ZXh0SWQsIGlubGluZVJl
Y3QsIGlubGluZVJlY3QgIT0gSW50UmVjdCgwLCAwLCAwLCAwKSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpTZXRJbmxpbmVSZWN0KGNvbnRleHRJZCwgaW5saW5lUmVjdCwgaW5saW5lUmVjdCAhPSBJbnRS
ZWN0KDAsIDAsIDAsIDApKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVx
dWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKQEAgLTM3OCw3ICszNzgs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXll
cih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVy
KHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29u
dGV4dElkXSAoKSBtdXRhYmxlIHsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0
aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2Up
Ci0gICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgdHJ1ZSksIHBy
b3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0Nv
bnRlbnRMYXllcihjb250ZXh0SWQsIHRydWUpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBA
IC0zOTQsNyArMzk0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXR1cm5WaWRl
b0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgICAgICAgICBtb2RlbC0+c2V0
VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMg
PSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpT
ZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSwgcHJvdGVjdGVkVGhpcy0+
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50
TGF5ZXIoY29udGV4dElkLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4
dElkXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJG
dWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKICNlbHNlCiAgICAg
Q0FMYXllciogdmlkZW9MYXllciA9IGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5y
b290TGF5ZXIoKTsKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgbW9kZWwtPnNl
dFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAgICAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZN
b3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgIGlmIChw
cm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0
SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJG
dWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgICAgICB9KTsKICAgICB9KTsKICNlbmRpZgpAQCAt
NDQyLDcgKzQ0Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRGdWxs
c2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVv
RWxlbWVudCA9IFdURk1vdmUodmlkZW9FbGVtZW50KSwgY29udGV4dElkXSB7CiAgICAgICAgIHZp
ZGVvRWxlbWVudC0+d2lsbEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb0V4aXRGdWxsc2Ny
ZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAg
ICB9KTsKIH0KIApAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZV0g
ewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+
cGFnZUlEKCkpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRl
eHRJZCkpOwogICAgIH0pOwogI2Vsc2UKICAgICBtb2RlbC0+d2FpdEZvclByZXBhcmVkRm9ySW5s
aW5lVGhlbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50
ZXJmYWNlLCBtb2RlbF0gKCkgbXV0YWJsZSB7CkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRl
eHQobnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
aWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVs
bHNjcmVlbihjb250ZXh0SWQpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKQEAgLTU1NSw3ICs1NTUsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsIGJv
bwogCiAgICAgaWYgKCFpc1BhZ2VWaXNpYmxlKQogICAgICAgICBtb2RlbC52aWRlb0VsZW1lbnQo
KS0+c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoZmFsc2UpOwotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvUmV0dXJuVG9J
bmxpbmUoY29udGV4dElkLCB0cnVlLCBpbmxpbmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1l
bnQoKSkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGNvbnRl
eHRJZCwgdHJ1ZSwgaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50KCkpKSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFJvdXRlU2hhcmluZ1BvbGlj
eUFuZENvbnRleHRVSUQodWludDY0X3QgY29udGV4dElkLCBNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6UmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQ6OkFzeW5j
UmVwbHkmJiByZXBseSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2Vi
UHJvY2Vzc0NvY29hLm1tCmluZGV4IDJlMTkwYjAzNWY3Li5iOWNlNzlkMjc0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01
MzksNyArNTM5LDcgQEAgc3RhdGljIE5TVVJMICpvcmlnaW4oV2ViUGFnZSYgcGFnZSkKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PE5TU3RyaW5n
ICo+PiBhY3RpdmVQYWdlc09yaWdpbnMoY29uc3QgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdl
YlBhZ2U+PiYgcGFnZU1hcCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4g
YWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxX
ZWJQYWdlPj4mIHBhZ2VNYXApCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PE5TU3Ry
aW5nICo+PiBhY3RpdmVPcmlnaW5zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA5ODcyYzMxYmE1OC4u
Nzk2MDI0YzhjZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTExMSw3ICsx
MTEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZQogICAgIFJlc291cmNlSGFuZGxlOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KGZyYW1lTG9hZGVyLm5ldHdvcmtpbmdDb250ZXh0KCksIHJl
cXVlc3QsIG9wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6
T21pdCA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5OjpVc2UsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiB9CiAKLXZvaWQgV2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyOjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCAvKndlYlBhZ2VJ
RCovKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VMb2FkQ29tcGxldGVkKFBh
Z2VJZGVudGlmaWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA1NWIz
Njk3NTMwNi4uNWY2MmY3NzdhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNDYs
NyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRSZXNvdXJjZShXZWJDb3JlOjpGcmFt
ZSYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyPiYmKT4mJikgZmluYWw7CiAg
ICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwg
dW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6
Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29u
c3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JikgZmluYWw7Ci0gICAgdm9pZCBw
YWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpIGZpbmFsOworICAgIHZvaWQgcGFn
ZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgdm9p
ZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERl
ZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDEzODU1ODNhZjI5Li5iMTQwM2QwNTYzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIGZpbmFsOwogICAgIGJvb2wgaGFzV2ViVmlldygpIGNv
bnN0IGZpbmFsOyAvLyBtYWlubHkgZm9yIGFzc2VydGlvbnMKIAotICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQoKSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25z
dCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3Zjg2OWYxZGRjYi4u
N2ViYTNhOThhYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDksNyArMjA5
LDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1l
ICp3ZWJGcmFtZSkKIHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370604</attachid>
            <date>2019-05-24 16:28:27 -0700</date>
            <delta_ts>2019-05-24 18:08:45 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>198206_PageIdentifier_wip.patch</filename>
            <type>text/plain</type>
            <size>650416</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwNy4uYjNiY2FkZDlkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjIsNiArMTIz
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVu
dGlmaWVyPFQ+PiB7CiAgICAgdHlwZWRlZiBPYmplY3RJZGVudGlmaWVySGFzaDxUPiBIYXNoOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VD4mIGlkZW50aWZpZXIpCit7CisgICAg
dHMgPDwgaWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IGMyYzdjMjI0OWUzLi40NDgyZDVkNDc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC03NzksNiArNzc5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAogICAgIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
aAogICAgIHBhZ2UvUGFnZUdyb3VwLmgKKyAgICBwYWdlL1BhZ2VJZGVudGlmaWVyLmgKICAgICBw
YWdlL1BhZ2VPdmVybGF5LmgKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCiAgICAg
cGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU2YTFmNWYxZDcxLi5iNmE4Zjg5YWI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTIxNyw2ICsxMjE3LDcgQEAKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3
Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0
Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2QjY1MEREMjI5NjI2
MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4QTIwN0Q2MzI4
MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBBN0QyREQgLyogQWJz
dHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NzIwN0Q2MzQw
MDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAwQTdEMkREIC8qIEds
b2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzU5OSw2ICs3NjAwLDcgQEAKIAkJNDY4MzQ0REQxRURERkE1RjAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUxRURERkE1RjAwQjc3
OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCNjUwREIy
Mjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3Rl
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4RDIwN0Q2MzJBMDBB
N0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDE5Nyw2ICsyMDE5OSw3IEBACiAJCQkJOTMwMkIwQkUwRDc5RjgyQzAwQzdFRTgzIC8q
IFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuY3BwICovLAogCQkJCTdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLywKKwkJCQk0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRDVDOUNGQjE5QzdCNTJFMDBCM0M1QzEgLyog
UGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdl
T3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3Zlcmxh
eUNvbnRyb2xsZXIuY3BwICovLApAQCAtMjk4NzEsNiArMjk4NzQsNyBAQAogCQkJCUJDMzA1QzdB
MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTg1QjFFQjBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MT0xpc3RFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFN0U5QjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MT3B0R3Jv
dXBFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3RTk5MEExQTgzRTMw
MDdGQjhDNSAvKiBKU0hUTUxPcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhB
MjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA3NjkxMmNh
ZWI4YS4uMGU3ZDU0MjA1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQodWludDY0X3Qg
cGFnZUlELCBBWE9iamVjdENhY2hlJiBjYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29s
YXRlZFRyZWU6OmluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
QVhPYmplY3RDYWNoZSYgY2FjaGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGF1dG8gdHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0
eVRyZWUoKTsKQEAgLTg3LDcgKzg3LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6dHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogICAgIHJldHVybiB0
cmVlSURDYWNoZSgpLmdldCh0cmVlSUQpOwogfQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNv
bGF0ZWRUcmVlOjpjcmVhdGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIApA
QCAtOTcsNyArOTcsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gbmV3VHJlZTsKIH0K
IAotUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCh1
aW50NjRfdCBwYWdlSUQpCitSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0
cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihzX2NhY2hlTG9jayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGMwNzVkNWIwMTY3
Li42ZWVjMjY0NTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYSXNv
bGF0ZWRUcmVlTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00Myw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BWElzb2xhdGVk
VHJlZSgpOwogCi0gICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBh
Z2VJRCh1aW50NjRfdCBwYWdlSUQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QVhJ
c29sYXRlZFRyZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhP
YmplY3RDYWNoZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRl
ZFRyZWU+IHRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPEFY
SXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRy
ZWVGb3JJRChQYWdlSWRlbnRpZmllciwgQVhPYmplY3RDYWNoZSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IHRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+
IHRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBWElzb2xhdGVkVHJlZU5vZGU+IHJvb3ROb2RlKCk7CkBAIC03MCw3ICs3MSw3IEBAIHByaXZh
dGU6CiAgICAgQVhJc29sYXRlZFRyZWUoKTsKIAogICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0
ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlSURDYWNoZSgpOwotICAgIHN0YXRp
YyBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgp
OworICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+
PiYgdHJlZVBhZ2VDYWNoZSgpOwogCiAgICAgLy8gT25seSBhY2Nlc3Mgb24gQVggdGhyZWFkIHJl
cXVlc3RpbmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+
PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlNzBh
OWY3ZmU1NS4uZDM1NDE2NzNlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzc2Niw3
ICs3NzY2LDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2VyKCkKICAgICByZXR1cm4gKm1fbG9n
Z2VyOwogfQogICAgIAotT3B0aW9uYWw8dWludDY0X3Q+IERvY3VtZW50OjpwYWdlSUQoKSBjb25z
dAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggYzA3NjU1NjUwNmEuLmEyNDgxZGY4YTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNp
bmNsdWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmll
ci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVu
dC5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBA
IC02MzUsNyArNjM2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2Fj
aGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQVhPYmplY3RDYWNoZSgp
OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0OworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdDsKICAgICAvLyB0byBnZXQgdmlzdWFsbHkg
b3JkZXJlZCBoZWJyZXcgYW5kIGFyYWJpYyBwYWdlcyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFs
bHlPcmRlcmVkKCk7CiAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbGx5T3JkZXJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBi
MWJlZDhmMDMyZi4uMzNlMjc4NjM4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29r
aWVzID0gc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CiAKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtMTEwLDcgKzExMCw3IEBAIENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoY29u
c3QgRG9jCiB2b2lkIENvb2tpZUphcjo6c2V0Q29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29raWVz
RW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3Rk
OjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
IHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3Rv
cmFnZVNlc3Npb24oKSkgewogICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQg
PSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHUKIFN0cmluZyBDb29raWVK
YXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAg
ICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAg
ICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdQogYm9vbCBDb29raWVKYXI6OmdldFJh
d0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIGNvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkp
IHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7
CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCAwZGIwN2M2ZDEyZS4uMjgxZjg0YzQ5MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzKERvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogCiAgICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8
U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OworICAg
IHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggNGYwYmI4NmRkZDUuLjFmN2EyOWM0YjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBG
cmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJy
aWRlIHsgfQogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBt
YWlubHkgZm9yIGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZWMzOTEyN2ExYWQuLjA3NDg3NjExOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmUuaCIKICNpbmNsdWRl
ICJMaW5rSWNvbi5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgpAQCAtMTI2LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBtYWtl
UmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0
ZWd5LmgKaW5kZXggOGE4MjM4MWYwMTguLjQ1ZmViNjM1ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCIKQEAgLTU3LDcg
KzU4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UoRnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJl
c291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRlciYsIGJvb2wpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA3NzQ1
MDAxZTc4YS4uZjI2YTlhYWYyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmF2aWdh
dGlvbkFjdGlvbjo6UmVxdWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogbV91cmwgeyBVUkwgeyBkb2N1bWVudC51cmwoKSB9IH0KICAgICAsIG1fb3JpZ2lu
IHsgbWFrZVJlZlB0cihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX3BhZ2VJ
REFuZEZyYW1lSURQYWlyIHsgZG9jdW1lbnQuZnJhbWUoKSA/IHN0ZDo6bWFrZV9wYWlyKGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpLnZhbHVlT3IoMCksIGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKDApKSA6IHN0
ZDo6bWFrZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9wYWdlSURB
bmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVu
dC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlm
aWVyIHsgfSksIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52
YWx1ZU9yKDApKSA6IHN0ZDo6bWFrZV9wYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4oeyB9
LCAwKSB9CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmlu
ZGV4IDFhNDRmOTFkMzY4Li5lZDdkMDljZjI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRl
ICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtNjMsMTQgKzY0LDE0IEBAIHB1YmxpYzoKICAg
ICBOYXZpZ2F0aW9uQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24mJik7CiAgICAgTmF2aWdhdGlvbkFj
dGlvbiYgb3BlcmF0b3I9KE5hdmlnYXRpb25BY3Rpb24mJik7CiAKLSAgICB1c2luZyBQYWdlSURB
bmRGcmFtZUlEUGFpciA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKiBwYWdlSUQgKi8sIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+OworICAgIHVzaW5nIFBhZ2VJREFuZEZyYW1lSURQYWlyID0gc3RkOjpw
YWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBmcmFtZUlEICovPjsKICAgICBjbGFzcyBS
ZXF1ZXN0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVxdWVzdGVyKGNvbnN0IERvY3VtZW50
Jik7CiAKICAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiAqbV9vcmlnaW47IH0KLSAgICAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5maXJzdDsgfQorICAgICAgICBQYWdlSWRlbnRpZmll
ciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZyYW1lSURQYWlyLmZpcnN0OyB9
CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZy
YW1lSURQYWlyLnNlY29uZDsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFVSTCBtX3VybDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDE0
YmMyZjNiZWVmLi5mZmFkYTFjNDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lk
KFZlY3RvCiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9u
Q2FsbGJhY2spOwogfQogCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVCghbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2sp
OwogICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MK
IH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1l
bnQpCit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlE
LCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVu
ZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBv
cGVuZXJVcmwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKaW5kZXggYzQ2NjFiMDQ3NjAuLmRlMWM5NGE3MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgorI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTczLDcgKzc0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0
IFVSTCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBkYXRlZENh
bGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
Jik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0
aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJTb2NrZXRM
b2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxU
aW1lKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dTdWJyZXNvdXJjZUxvYWRp
bmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiYmKTsKQEAgLTk0LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3Vt
ZW50KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKICNlbmRpZgogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25N
YXA7CiAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
IG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1aW50NjRfdCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CisgICAg
RnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQ
YWdlSWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3Rp
ZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlm
aWNhdGlvbkNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjM1Mzkw
YzhjM2EuLjUyYjJlOTRiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQ4
Niw4ICs0ODYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMgKi8pID0gMDsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQq
LywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8q
c3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8s
IHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5v
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21h
aW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYm
IC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVy
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd246Ok5vKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKaW5kZXgg
MTU2YzljZDIwNWQuLjBkN2IzZGJmNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFs
RnJhbWVJZGVudGlmaWVyLmgKQEAgLTI1LDEzICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRnJhbWUgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1
ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgogc3RydWN0IEdsb2JhbEZyYW1lSWRl
bnRpZmllciB7Ci0gICAgdWludDY0X3QgcGFnZUlEOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RDsKICAgICB1aW50NjRfdCBmcmFtZUlEOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIEdsb2Jh
bEZyYW1lSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxG
cmFtZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50aWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDRkNWY4ZDI5NzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBhZ2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBQYWdlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDExNTkw
NTBjZDMyLi40ZTZiNmFjZTMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb29raWVKYXIuaCIKKyNp
bmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zOCw3ICsz
OSw3IEBAIHN0cnVjdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSB7CiAgICAgU2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbzsKICAgICBVUkwgdXJsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcyB7IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObyB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNzEsOCAr
NzIsMTEgQEAgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5OjpkZWNvZGUoRGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mcmFtZUlEKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdl
SUQpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gcGFnZUlEOworICAg
IGRlY29kZXIgPj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJlc3VsdC5wYWdlSUQgPSBXVEZNb3ZlKCpwYWdlSUQpOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluY2x1ZGVTZWN1cmVDb29raWVzKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CmluZGV4IDNiMThlNjJmZTM5Li42M2RmMDU4OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAt
NjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0K
ICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29v
a2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlEKSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3Jh
bnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7
CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7
CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAg
ICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChw
YWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vz
cy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAg
IGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1lSUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdl
U3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwog
ICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21h
aW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhm
cm9tRG9tYWluKSkKICAgICAgICAgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJl
dmFsZW50UmVzb3VyY2UuYWRkKHBhZ2VJRCwgdG9Eb21haW4pOwpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZygpCiAgICAgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9u
VGVzdE1vZGUgPSB0cnVlOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHksIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0CitPcHRpb25hbDxTZWNvbmRz
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdl
SUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2Uu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDAzMDIwMGRmOWM0Li4zZjM5YzhhY2Q4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRp
YWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdp
c3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNp
ZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9t
YWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4g
bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1aW50
NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFzaDx1
aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0
X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVsdEhh
c2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmlnYXRl
ZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dp
dGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRp
b25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5kZXggNjdkZjc2NGQyYzQuLjMzMGFhNjA4
NjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtMTg5LDcg
KzE4OSw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZEaWN0aW9uYXJ5UmVm
IGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQogICAgIHJldHVybiBwYXJzZWRDb29raWVzOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMjI1LDcg
KzIyNSw3IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zU2VjdXJlQ29va2llcyhDRkFycmF5UmVmIGNv
b2tpZXMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJh
bWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yNDAsNyArMjQwLDcgQEAgc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBjb29raWVTdHJpbmcsIGRpZEFjY2Vz
c1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNF
bmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VB
Y2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQ
Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0K
IAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDYzNzQwMzUyYzRhLi41NTdlOTc3
YjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0yOTQsNyAr
Mjk0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkg
KnVuZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1cm4gZmlsdGVyZWRDb29r
aWVzOwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkKK3N0YXRpYyBOU0FycmF5ICpjb29r
aWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
aWYgKHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwg
cGFnZUlEKSkKQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVS
TChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZgogfQog
CiBlbnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1
ZGVIVFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JT
ZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHks
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQogewogICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpKTsKIApAQCAtMzYzLDEyICszNjMsMTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENv
b2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENv
b2tpZVN0b3JhZ2VEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
c0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhp
cywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJ
bmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJl
dHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2ll
cyk7CiB9CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KICAgICBy
ZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0
eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBo
ZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRl
SFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi12
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYg
Y29va2llU3RyKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIApAQCAtNDQzLDcgKzQ0Myw3IEBA
IGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9v
bCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNs
ZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4
IDJjMTE1NjhmY2U1Li5kNjBkNzBhODM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtNTksNyArNTksNyBA
QCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3RyaW5nKCk7
CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3Zv
aWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAg
ICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC03
NCw3ICs3NCw3IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9u
c2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzCiAgICAgY29va2llSmFyREIuc2V0
Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdv
cmspOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJ
RCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBj
b25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZy
YW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMTEzLDcgKzExMyw3IEBAIGJv
b2wgQ29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCku
aXNFbmFibGVkKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KSBjb25zdAorYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5NGM4NmFmZThm
Li42ODcyYjBhYzliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAt
ODAsNyArODAsNyBAQCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVE
YXRhYmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29va2llRGF0YWJhc2U7CiB9CiAKLXZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdAogewogICAgIGNvb2tpZVN0b3JhZ2UoKS5zZXRDb29raWVzRnJvbURPTSgqdGhpcywgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgdmFsdWUpOwogfQpA
QCAtOTAsNyArOTAsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0VuYWJs
ZWQoKSBjb25zdAogICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2llc0VuYWJsZWQoKnRo
aXMpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29r
aWVTdG9yYWdlKCkuY29va2llc0ZvckRPTSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpAQCAtMTU0
LDcgKzE1NCw3IEBAIFZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29v
a2llcyhjb25zdCBVUkwmKQogICAgIHJldHVybiB7IH07CiB9CiAKLWJvb2wgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAog
ewogICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuZ2V0UmF3Q29va2llcygqdGhpcywgZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmF3Q29va2llcyk7CiB9
CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29v
a2llU3RvcmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0byB1c2UuCiB9
CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykg
Y29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAKaW5kZXggMWY3NTg3N2E4MmIuLmY2NjQxZWZlYjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdv
cmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKGNvbnN0IEdTTGlzdCogY29va2llcywgY29uc3Qg
Z2NoYXIqIG5hbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC00NDQsNyArNDQ0LDcgQEAgVmVjdG9yPENvb2tpZT4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsKQogICAgIHJl
dHVybiBjb29raWVzOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZUlEKTsKQEAgLTUxNCw3ICs1MTQsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZQogICAgIHJldHVybiB7IFN0cmluZzo6ZnJvbVVURjgoY29va2llSGVhZGVyLmdldCgpKSwgZGlk
QWNjZXNzU2VjdXJlQ29va2llcyB9OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQ
YXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTIyLDcgKzUyMiw3IEBAIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRP
TShjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlz
LCB1cmwsIGZhbHNlLCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAor
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA5NjYxYmM0MzdlOS4uNTQz
OTAyZmY1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgUmVzb3Vy
Y2VSZXF1ZXN0X2gKICNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgogI2luY2x1ZGUg
IlVSTFNvdXAuaCIKIApAQCAtMzgsNyArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwgUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1f
YWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nh
c3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJ
RCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDYsNyArNDYsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgICAg
ICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0
aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwgbV9pbml0aWF0aW5n
UGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01NCw3ICs1Myw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBv
bGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAg
LCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAg
ICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldEhU
VFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTYzLDcgKzYxLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTCgpLCBS
ZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAg
ICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBGbGFn
cyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwgbV9pbml0
aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03MSw3ICs2OCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShV
UkwoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kp
CiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9z
b3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAs
IG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9t
U291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CkBAIC04MCw3ICs3Niw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShzb3Vw
VVJJVG9VUkwoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3QpKSwgUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1f
YWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nh
c3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJ
RCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9tU291cFJlcXVlc3Qoc291cFJl
cXVlc3QpOwogICAgICAgICB9CkBAIC0xMDAsOCArOTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3Mgc291cE1lc3NhZ2VGbGFncygpIGNvbnN0IHsgcmV0
dXJuIG1fc291cEZsYWdzOyB9CiAgICAgICAgIHZvaWQgc2V0U291cE1lc3NhZ2VGbGFncyhTb3Vw
TWVzc2FnZUZsYWdzIHNvdXBGbGFncykgeyBtX3NvdXBGbGFncyA9IHNvdXBGbGFnczsgfQogCi0g
ICAgICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX2luaXRp
YXRpbmdQYWdlSUQ7IH0KLSAgICAgICAgdm9pZCBzZXRJbml0aWF0aW5nUGFnZUlEKHVpbnQ2NF90
IHBhZ2VJRCkgeyBtX2luaXRpYXRpbmdQYWdlSUQgPSBwYWdlSUQ7IH0KKyAgICAgICAgUGFnZUlk
ZW50aWZpZXIgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhdGluZ1Bh
Z2VJRDsgfQorICAgICAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlSUQoUGFnZUlkZW50aWZpZXIg
cGFnZUlEKSB7IG1faW5pdGlhdGluZ1BhZ2VJRCA9IHBhZ2VJRDsgfQogCiAgICAgICAgIEdVbmlx
dWVQdHI8U291cFVSST4gY3JlYXRlU291cFVSSSgpIGNvbnN0OwogCkBAIC0xMTMsNyArMTA4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hY2NlcHRFbmNvZGluZyA6
IDE7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7Ci0gICAgICAgIHVpbnQ2
NF90IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgUGFnZUlkZW50aWZpZXIgbV9pbml0aWF0
aW5nUGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VNZW1iZXJzKFNvdXBN
ZXNzYWdlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VCb2R5KFNvdXBN
ZXNzYWdlKikgY29uc3Q7CkBAIC0xNjIsMTAgKzE1NywxMSBAQCBib29sIFJlc291cmNlUmVxdWVz
dDo6ZGVjb2RlV2l0aFBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgbV9zb3VwRmxhZ3MgPSBzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdz
Pihzb3VwTWVzc2FnZUZsYWdzKTsKIAotICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQ7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbml0aWF0aW5nUGFnZUlEKSkKKyAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBkZWNvZGVyID4+IGluaXRpYXRp
bmdQYWdlSUQ7CisgICAgaWYgKCFpbml0aWF0aW5nUGFnZUlEKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBtX2lu
aXRpYXRpbmdQYWdlSUQgPSAqaW5pdGlhdGluZ1BhZ2VJRDsKIAogICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDBmNmVhMTk3ODdhLi4wZWQyNWIzN2Q1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
UmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0Ojp1cGRhdGVTb3VwUmVxdWVzdChTb3VwUmVxdWVzdCogc291cFJlcXVlc3QpIGNv
bnN0CiB7CiAgICAgaWYgKG1faW5pdGlhdGluZ1BhZ2VJRCkgewogICAgICAgICB1aW50NjRfdCog
aW5pdGlhdGluZ1BhZ2VJRFB0ciA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Kj4oZmFzdE1hbGxvYyhz
aXplb2YodWludDY0X3QpKSk7Ci0gICAgICAgICppbml0aWF0aW5nUGFnZUlEUHRyID0gbV9pbml0
aWF0aW5nUGFnZUlEOworICAgICAgICAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA9IG1faW5pdGlhdGlu
Z1BhZ2VJRC50b1VJbnQ2NCgpOwogICAgICAgICBnX29iamVjdF9zZXRfZGF0YV9mdWxsKEdfT0JK
RUNUKHNvdXBSZXF1ZXN0KSwgZ19pbnRlcm5fc3RhdGljX3N0cmluZyhnU291cFJlcXVlc3RJbml0
aWF0aW5nUGFnZUlES2V5KSwgaW5pdGlhdGluZ1BhZ2VJRFB0ciwgZmFzdEZyZWUpOwogICAgIH0K
IApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwUmVx
dWVzdChTb3VwUmVxdWVzdCogc291cFJlcXVlc3QpIGNvbnN0CiB2b2lkIFJlc291cmNlUmVxdWVz
dDo6dXBkYXRlRnJvbVNvdXBSZXF1ZXN0KFNvdXBSZXF1ZXN0KiBzb3VwUmVxdWVzdCkKIHsKICAg
ICB1aW50NjRfdCogaW5pdGlhdGluZ1BhZ2VJRFB0ciA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Kj4o
Z19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1Qoc291cFJlcXVlc3QpLCBnU291cFJlcXVlc3RJbml0
aWF0aW5nUGFnZUlES2V5KSk7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1Bh
Z2VJRFB0ciA/ICppbml0aWF0aW5nUGFnZUlEUHRyIDogMDsKKyAgICBtX2luaXRpYXRpbmdQYWdl
SUQgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KGluaXRpYXRpbmdQ
YWdlSURQdHIgPyAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA6IDApOwogfQogCiB1bnNpZ25lZCBpbml0
aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDg3OWMw
YjE5ZTk2Li5iNjg5YzNlMjVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgp
CiAgICAgbV9kYXRhYmFzZS5ydW5WYWN1dW1Db21tYW5kKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1l
RG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTc0Myw3ICs3NDMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNv
bnN0IFN1YkZyYW1lRG9tYWluJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
IHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlE
IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
IHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlE
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzk1LDcgKzc5NSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1l
RG9tYWluJiYKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9wZW5lclBhZ2VJRCBv
cGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRv
bWFpbikKIHsKICAgICBBU1NFUlQoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5l
ckRvbWFpbik7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC04MTQsNyArODE0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW4KICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChXVEZNb3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVy
RG9tYWluKSwgV1RGOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bjo6Tm8sIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3Mo
U3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFt
ZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1l
RG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtODI4LDcgKzgyOCw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURv
bWFpbiYmIHN1CiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFt
ZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHByb21w
dFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFs
KFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJh
bWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0
b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BG
cmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRX
YXNTaG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmgKaW5kZXggYmFiMmI3YWVhYjcuLmJmYzIzMzk2ODUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtNjQs
NyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlmTmVlZGVkKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyhjb25zdCBI
YXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpIG92ZXJyaWRlOwogCkBAIC05MSw5ICs5MSw5IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21h
aW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJ
RCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
LCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8
RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwg
Ym9vbCBpc01haW5GcmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
Y29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCByZWN1cnNpdmVseUZp
bmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21haW4odW5zaWduZWQg
cHJpbWFyeURvbWFpbklELCBTdGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2YWxlbnRSZWRpcmVjdGlv
blNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOwogICAgIHZvaWQgc2V0
RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0gICAgdm9pZCBncmFudFN0
b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBP
cHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1l
RG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7
CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudCgpOwog
ICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9y
RGVidWdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwZWU3Zjk2Mzg5NC4uYTVmMjYyNGU0MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6OnN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKQogICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdl
LT5zY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2U6OkZvcmNlSW1tZWRpYXRlV3JpdGU6Olllcyk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1l
RG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFN1YkZyYW1lRG9tYWluJiBzCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1
YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1
YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFp
biYmIHN1CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgT3BlbmVyUGFnZUlEIG9wZW5l
clBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQ
YWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikK
IHsKICAgICBBU1NFUlQoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5lckRvbWFp
bik7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC0yODcsNyArMjg3LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoRG9tYWluSW4KICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChX
VEZNb3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWlu
KSwgV1RGOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bjo6Tm8sIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1l
RG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBz
dWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkYK
ICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwg
V1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9t
YWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9w
dGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50
ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVh
cmxpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5k
ZXggNDRlZmJmNGRlYzEuLjQ1ZjdlMWI3NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN5bmNTdG9yYWdlSWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHN5bmNTdG9y
YWdlSW1tZWRpYXRlbHkoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgT3BlbmVyUGFnZUlE
LCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgT3BlbmVyRG9tYWluJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBncmFuZGZh
dGhlckRhdGFGb3JEb21haW5zKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jikgb3Zl
cnJpZGU7CiAKQEAgLTk3LDkgKzk3LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYWxjdWxhdGVB
bmRTdWJtaXRUZWxlbWV0cnkoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0
aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
LCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ3JhbnRTdG9y
YWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBh
Z2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
RnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ3JhbnRTdG9yYWdl
QWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQp
PiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmln
YXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9t
RG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAg
ICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRl
OwpAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZW1lbnRSZWNvcmRz
RGVsZXRlZENvdW50Rm9yRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCByZWN1cnNpdmVseUdl
dEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21haW4oY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYsIEhhc2hTZXQ8UmVkaXJlY3RlZFRvRG9tYWluPiYsIHVuc2lnbmVkIG51
bWJlck9mUmVjdXJzaXZlQ2FsbHMpIGNvbnN0OwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJh
bWVJRD4sIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7
CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwogICAgIHZvaWQg
bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQoUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyYpOwogICAgIGJvb2wgaXNQcmV2YWxlbnREdWVUb0RlYnVnTW9kZShSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJik7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2
YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAwYjU3NzViYmI3Ny4uZDc3OThiMjVkMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTkwLDggKzkwLDYg
QEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7
Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2
NF90OwogICAgIAogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwpA
QCAtMTEwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3JhZ2VJ
Zk5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgp
ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFp
biYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9wZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFn
ZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBncmFuZGZh
dGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAg
LTE2MSw5ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RlYnVnTW9kZUVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH07CiAgICAgdm9pZCBzZXRQcmV2YWxl
bnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCi0gICAg
dmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8
RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFp
biYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNS
ZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2dVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDg3MWIxOWQyZjA3Li42MjI0
MzBjZDhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcgogICAgIH0p
OwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9y
YWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChzdWJGcmFtZURvbWFpbiAhPSB0
b3BGcmFtZURvbWFpbik7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTI5OCwx
MiArMjk4LDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9y
YWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzCiAgICAgfSk7CiB9CiAKLWJvb2wg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlEKQorYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIG1fbmV0d29ya1Nlc3Npb24gPyBt
X25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5oYXNTdG9yYWdlQWNjZXNz
KHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpIDogZmFs
c2U7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
SGFuZGxlcihjb25zdCBSCiAgICAgY2FsbGJhY2soZmFsc2UpOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChzdWJGcmFtZURvbWFpbiA9
PSB0b3BGcmFtZURvbWFpbikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZDo6WWVzLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKQEAg
LTM2Miw3ICszNjIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haQogICAgIH0pOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFp
bikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYg
b3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM3
NSw3ICszNzUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZQogICAgIH0pOwogfQogCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcG9zdFRhc2so
W3RoaXMsIHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRv
cEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBh
Z2VJRCwgcHJvbXB0V2FzU2hvd24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYKICAgICB9KTsKIH0KIAotU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCkKK1N0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgYm9vbCBp
c1N0b3JhZ2VHcmFudGVkID0gZmFsc2U7CiAKQEAgLTQwOSw3ICs0MDksNyBAQCBTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFn
ZUFjY2Vzcyhjb25zdAogICAgIHJldHVybiBpc1N0b3JhZ2VHcmFudGVkID8gU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQ6OlllcyA6IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObzsKIH0KIAotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NI
YW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDg3NTlk
NjAxNjZhLi43OWNmMjQ2MDFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFU
eXBlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtODIsOCArODMsNiBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2lu
ZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAgICAg
dXNpbmcgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gPSBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd247CkBAIC0xMDQsNyArMTAzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1Jl
bW92YWwoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNo
b3VsZFN1Ym1pdFRlbGVtZXRyeShib29sKTsKIAotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQ
YWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4m
Jik7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogCiAg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKIApAQCAtMTE4LDExICsxMTcsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vi
c2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhX
ZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQ
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmKTsKLSAgICBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBQYWdlSUQpOworICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9u
YWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFt
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgYm9vbCBoYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWUoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIEZyYW1lSUQsIFBhZ2VJRCk7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgU3ViRnJhbWVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMTY2LDExICsxNjUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJ
RD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCk+JiYpOworICAgIHZvaWQgY2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2FsbFVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxsUmVtb3Zl
RG9tYWluc0hhbmRsZXIoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwotICAgIHZv
aWQgY2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21h
aW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZy
YW1lSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
RnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogCiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOwogCkBAIC0x
ODIsNyArMTgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxl
bWV0cnlGaW5pc2hlZCh1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQg
dG90YWxQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3Az
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucykgY29uc3Q7CiAKICAgICB2b2lkIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsK
LSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzJiYsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpOwor
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRv
bWFpbiYmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmLCBTaG91bGRJbmNsdWRlTG9j
YWxob3N0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCmluZGV4IDJjOTcxODM2YWRhLi40ZDNkMTY5ZjZh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgU3RyaW5nIHJlZmVycmVyOwogICAgICAgICBTdHJpbmcgdXNlckFnZW50OwogICAgICAgICBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAgICAgICB1aW50NjRfdCBmcmFt
ZUlEOwogICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAz
ZDcxZjhmNmIxYi4uOTJjOGI3YWU0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC00NDIsNyArNDQyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVt
b3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcgogICAgIEFTU0VSVCghbV9u
ZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qg
d2ViUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGFnZUxvYWRD
b21wbGV0ZWQoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogewogICAgIHN0b3BBbGxOZXR3b3Jr
QWN0aXZpdHlUcmFja2luZ0ZvclBhZ2Uod2ViUGFnZUlEKTsKIH0KQEAgLTUxMiw3ICs1MTIsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoUEFMOjpTZXNzaQogICAgIGxvYWRlci0+Y29udmVydFRvRG93bmxvYWQo
ZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwg
c2Vzc2lvbklEKTsKICAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29r
aWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwg
cmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBhdXRv
JiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2Vzcygp
LCBzZXNzaW9uSUQpOwogICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXRDb29raWVzRnJvbURP
TShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVT
dHJpbmcpOwpAQCAtNTQyLDEzICs1NDIsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb20KICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNz
aW9uSUQpLmNvb2tpZXNFbmFibGVkKCkpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vz
c2lvbklEKS5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gcmVzdWx0OwogICAgIHN0b3JhZ2VTZXNzaW9uKG5l
dHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCkuZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCByZXN1bHQpOwpAQCAtNjM4LDEzICs2Mzgs
MTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlTGVnYWN5UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShm
cmFtZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5jbGVhclBhZ2VTcGVj
aWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHBhZ2VJRCk7CkBAIC02OTcsNyArNjk3
LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmUKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nl
c3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGMKICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsK
QEAgLTcyMSw3ICs3MjEsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Np
b24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQpAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiAgICAg
U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogfQogCi1PcHRp
b25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZCh1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9h
ZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpT
ZXNzaW9uSUQmIHNlc3Npb25JRCkKK09wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBi
b29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQogewog
ICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKQEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmcoKQogICAgIG1fbmV0d29ya0FjdGl2
aXR5VHJhY2tlcnMuY2xlYXIoKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZSh1aW50NjRfdCBwYWdl
SUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxsTmV0d29ya0Fj
dGl2aXR5VHJhY2tpbmdGb3JQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBmb3Ig
KGF1dG8mIGFjdGl2aXR5VHJhY2tlciA6IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcnMpIHsKICAg
ICAgICAgaWYgKGFjdGl2aXR5VHJhY2tlci5wYWdlSUQgPT0gcGFnZUlEKQpAQCAtODI2LDcgKzgy
Niw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3Jr
QWN0aXZpdHlUcmFja2luZ0ZvclBhZ2UodWludDY0CiAgICAgfSk7CiB9CiAKLXNpemVfdCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkodWludDY0
X3QgcGFnZUlEKQorc2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kUm9v
dE5ldHdvcmtBY3Rpdml0eShQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIG1f
bmV0d29ya0FjdGl2aXR5VHJhY2tlcnMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVt
KSB7CiAgICAgICAgIHJldHVybiBpdGVtLmlzUm9vdEFjdGl2aXR5ICYmIGl0ZW0ucGFnZUlEID09
IHBhZ2VJRDsKQEAgLTkwMywxNyArOTAzLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNsZWFyQ29ubmVjdGlvbkhhc1VwbG9hZHMoKQogICAgIG1fbmV0d29ya1Byb2Nl
c3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQ
b29sOjpDbGVhcldlYlByb2Nlc3NIYXNVcGxvYWRzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAw
KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc0Fk
ZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBv
bGRQYWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2Fz
QWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKIHsKICAgICBtX25ldHdvcmtQcm9jZXNz
LT53ZWJQYWdlV2FzQWRkZWQobV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCwg
b2xkUGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2Vi
UGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBt
X25ldHdvcmtQcm9jZXNzLT53ZWJQYWdlV2FzUmVtb3ZlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNl
c3Npb25JRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZXMpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlcykKIHsKICAgICBtX25l
dHdvcmtQcm9jZXNzLT53ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQobV9jb25uZWN0aW9uLmdldCgp
LCBuZXdTZXNzaW9uSUQsIHBhZ2VzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBj
YmM3YmJmZThmNS4uMDZkNTc5Njg4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmgiCiAjaW5jbHVk
ZSAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtMb2FkSW5mb3JtYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAt
MTMzLDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9uZXR3b3JrTG9hZEluZm9ybWF0aW9u
QnlJRC5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gc3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZCh1aW50NjRfdCBwYWdlSUQs
IFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwg
Y29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNv
bnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgdm9pZCBzdG9wVHJhY2tpbmdSZXNvdXJjZUxvYWQo
UmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
OjpDb21wbGV0aW9uQ29kZSk7CiAKICAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBibG9i
UmVnaXN0cnkoKTsKQEAgLTE0NCw5ICsxNDUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb25u
ZWN0aW9uSGFzVXBsb2FkcygpOwogICAgIHZvaWQgY2xlYXJDb25uZWN0aW9uSGFzVXBsb2Fkcygp
OwogCi0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKFBB
TDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgcGFnZXMpOworICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlE
KTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CisgICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpT
ZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+JiBwYWdlcyk7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoTmV0d29ya1Byb2Nlc3MmLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwpAQCAtMTcw
LDE2ICsxNzEsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZWNvbm5lY3RUbyh1aW50NjRfdCBw
cmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7
CiAKICAgICB2b2lkIHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIp
OwotICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKTsKKyAgICB2
b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lk
IGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25z
dCBVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9u
SUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JE
T00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29v
a2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29v
a2llc0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFi
bGVkKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAg
IHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CisgICAgdm9pZCBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcg
Y29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQg
Z2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0
ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKQEAgLTIxOCwxNyArMjE5LDE3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbiYgY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlEKTsKLSAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCByZW1vdmVT
dG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKIAogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7
CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pOwogICAgIHZvaWQgbG9nU3VicmVzb3Vy
Y2VSZWRpcmVjdChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJj
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbik7CiAgICAgdm9p
ZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
c3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgb3BlbmVyRG9tYWluKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC0yMzksMjkgKzI0MCwyOSBAQCBwcml2YXRl
OgogICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoKSA9IGRlZmF1bHQ7CiAg
ICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihjb25zdCBSZXNvdXJjZU5ldHdv
cmtBY3Rpdml0eVRyYWNrZXImKSA9IGRlZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0Fj
dGl2aXR5VHJhY2tlcihSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXImJikgPSBkZWZhdWx0
OwotICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIodWludDY0X3QgcGFnZUlE
KQorICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAg
ICAgICAgLCBpc1Jvb3RBY3Rpdml0eSB7IHRydWUgfQogICAgICAgICAgICAgLCBuZXR3b3JrQWN0
aXZpdHkgeyBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpMYWJlbDo6TG9hZFBhZ2UgfQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIo
dWludDY0X3QgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpCisgICAg
ICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCkKICAgICAgICAgICAg
IDogcGFnZUlEIHsgcGFnZUlEIH0KICAgICAgICAgICAgICwgcmVzb3VyY2VJRCB7IHJlc291cmNl
SUQgfQogICAgICAgICAgICAgLCBuZXR3b3JrQWN0aXZpdHkgeyBOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyOjpMYWJlbDo6TG9hZFJlc291cmNlIH0KICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdWludDY0X3QgcGFnZUlEIHsgMCB9OworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQ7CiAgICAgICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCB7IDAg
fTsKICAgICAgICAgYm9vbCBpc1Jvb3RBY3Rpdml0eSB7IGZhbHNlIH07CiAgICAgICAgIE5ldHdv
cmtBY3Rpdml0eVRyYWNrZXIgbmV0d29ya0FjdGl2aXR5OwogICAgIH07CiAKICAgICB2b2lkIHN0
b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZygpOwotICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtB
Y3Rpdml0eVRyYWNraW5nRm9yUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHNpemVfdCBmaW5k
Um9vdE5ldHdvcmtBY3Rpdml0eSh1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgc3RvcEFsbE5l
dHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Cisg
ICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KTsKICAgICBzaXplX3QgZmluZE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoUmVzb3VyY2VMb2FkSWRl
bnRpZmllciByZXNvdXJjZUlEKTsKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZjdjOTdlZWJi
MjEuLjgzM2U3NGZjZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTI2LDE4ICsyNiwxOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVyZm9ybVN5bmNocm9ub3VzTG9hZChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRl
cnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4gZGF0YSkgU3luY2hyb25vdXMKICAgICBMb2Fk
UGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBh
cmFtZXRlcnMpCiAgICAgUmVtb3ZlTG9hZElkZW50aWZpZXIodWludDY0X3QgcmVzb3VyY2VMb2Fk
SWRlbnRpZmllcikKLSAgICBQYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpCisg
ICAgUGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQog
ICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkKICAgICBQcmVjb25uZWN0VG8odWludDY0
X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRp
ZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAgU2V0Q29va2llc0Zyb21ET00o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQor
ICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0
eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1Nl
Y3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3Ry
aW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJv
b2wgZW5hYmxlZCkgU3luY2hyb25vdXMKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBH
ZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0
cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgQ29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0
eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1Nl
Y3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogCiAgICAgUmVnaXN0
ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCkBAIC01Niwx
NiArNTYsMTYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIEVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdl
QWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpOwotICAgIENsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNl
TG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQp
OworICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7Cisg
ICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAg
TG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZG9tYWluKQogICAgIExvZ1dlYlNvY2tldExvYWRpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0
U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dT
dWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
YXJnZXREb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRpc3RpY3MpCi0gICAgSGFzU3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9y
YWdlQWNjZXNzKSBBc3luYwotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpIC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdl
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKKyAgICBIYXNTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQp
IC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBz
dWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGVu
dW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVt
OmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
KSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQogI2VuZGlmCiAKICAgICBBZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGlu
YXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucyk7CkBAIC04Nyw3ICs4Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFNldFdlYlByb2Nlc3NJ
ZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQog
Ci0gICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCi0gICAgV2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCi0gICAgV2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgVmVjdG9yPHVpbnQ2NF90PiBw
YWdlcykKKyAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBh
Z2VJRCkKKyAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyAgICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5n
ZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGQxNGIxZGU5ZDkxLi40MDk3MTRkNjY3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lT3JpZ2luKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIHJldHVybiB1
cmwucHJvdG9jb2xJc0RhdGEoKSB8fCB1cmwucHJvdG9jb2xJc0Jsb2IoKSB8fCAhb3JpZ2luIHx8
IG9yaWdpbi0+Y2FuUmVxdWVzdCh1cmwpOwogfQogCi1OZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdv
cmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9u
cyYmIG9wdGlvbnMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
VVJMJiYgdXJsLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVmbGln
aHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBT
VXBncmFkZUVuYWJsZWQsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
LCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUpCitOZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtM
b2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9ucyYm
IG9wdGlvbnMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVy
cywgVVJMJiYgdXJsLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVm
bGlnaHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hU
VFBTVXBncmFkZUVuYWJsZWQsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUpCiAgICAgOiBtX29wdGlvbnMoV1RGTW92ZShv
cHRpb25zKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fbmV0d29ya1By
b2Nlc3MobmV0d29ya1Byb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCAzMWQxMWMzYThhZS4uNTdkZjFkYTQ2ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
aApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8TmV0d29ya0xvYWRDaGVja2VyPiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFz
cyBMb2FkVHlwZSA6IGJvb2wgeyBNYWluRnJhbWUsIE90aGVyIH07CiAKLSAgICBOZXR3b3JrTG9h
ZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRU
UEhlYWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBX
ZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNV
cGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3Ro
ZXIpOworICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJp
bmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBz
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVx
dWVzdExvYWRUeXBlID0gTG9hZFR5cGU6Ok90aGVyKTsKICAgICB+TmV0d29ya0xvYWRDaGVja2Vy
KCk7CiAKICAgICBzdHJ1Y3QgUmVkaXJlY3Rpb25UcmlwbGV0IHsKQEAgLTEyNSw3ICsxMjUsNyBA
QCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IG1fc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAg
UmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwotICAgIHVpbnQ2NF90IG1fcGFn
ZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90
IG1fZnJhbWVJRDsKICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fb3JpZ2luYWxSZXF1ZXN0
SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JTIGNoZWNrcy4KICAgICBXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwIG1fZmlyc3RSZXF1ZXN0SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JTIGNoZWNrcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1l
dGVycy5oCmluZGV4IDg5NjM5OWQxMzMyLi44OTczMGNmOWZkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KQEAgLTM4LDcgKzM5LDcgQEAgZW51bSBjbGFzcyBQcmVjb25uZWN0T25seSB7
IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAg
ICB1aW50NjRfdCB3ZWJQYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlEOwogICAgIHVpbnQ2NF90IHdlYkZyYW1lSUQgeyAwIH07CiAgICAgV1RGOjpQcm9j
ZXNzSUQgcGFyZW50UElEIHsgMCB9OwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBB
TDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGE1ZDZmNWNmY2M3Li5hYzRkMzJi
ZjJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTExNTUsNyArMTE1NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2VzCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29tbWl0dGVk
Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29tbWl0dGVkQ3Jv
c3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24tPmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oZnJv
bURvbWFpbiwgdG9Eb21haW4sIHBhZ2VJRCk7CkBAIC0xOTU0LDcgKzE5NTQsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29s
IGFsbG93cywgQ29tcGxldAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2UoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAg
aWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91
bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNv
bnN0IFN0cmluZyYgbWVzcwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJ
RCwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIFNob3VsZFNhbXBsZTo6Tm8pLCAwKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90
IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUgcmVzdWx0LCBTaG91bGRTYW1wbGUgc2hv
dWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
UmVzdWx0KFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUgcmVz
dWx0LCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTk3MCw3ICsxOTcwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3QK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFnZUlELCBtZXNz
YWdlLCBkZXNjcmlwdGlvbiwgcmVzdWx0LCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90
IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgU2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFZhbHVlKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAo
IURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNh
bXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2MTksNyArMjYxOSw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpCiAgICAgICAgIHNlc3Npb24tPnJlbW92ZUtlcHRBbGl2ZUxvYWQobG9hZGVyKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IG9sZFBhZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7CiAgICAgaWYgKCFw
YWdlSUQgfHwgIW9sZFBhZ2VJRCkgewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQgcGFn
ZSB3aXRoIGludmFsaWQgaWQiKTsKQEAgLTI2NDQsNyArMjY0NCw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6
U2Vzc2lvbklECiAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2Uob2xkUGFnZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQ
YWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFn
ZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIXBhZ2VJRCkgewog
ICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCByZW1vdmUgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsK
QEAgLTI2NzQsNyArMjY3NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NXYXNE
aXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCktPnN0b3JhZ2VNYW5hZ2VyKCkucHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlv
bihjb25uZWN0aW9uKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgbmV3
U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlSURzKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50
aWZpZXI+JiBwYWdlSURzKQogewogICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51
bmlxdWVJRCgpOwogICAgIEFTU0VSVChtX3Nlc3Npb25CeUNvbm5lY3Rpb24uY29udGFpbnMoY29u
bmVjdGlvbklEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKaW5kZXggN2FjYjNmOTY3NWMuLmViZjNiN2ZlNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktl
eURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQlNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWlu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CkBAIC0xMzYsOCArMTM3LDYgQEAgcHVi
bGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0gICAg
dXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90Owog
CiAgICAgTmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYmKTsKQEAgLTE5MCw5ICsxODksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsK
IAogICAgIC8vIERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZy4KLSAgICB2b2lkIGxvZ0RpYWdu
b3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAgIHZv
aWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAg
dm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZh
bHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNh
bnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBj
b25zdDsKQEAgLTI1OCw3ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29u
c3QgUmVkaXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYmKT4mJik7Ci0gICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExp
bmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJv
bURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjb21taXR0ZWRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWlu
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYK
QEAgLTI3MSwxMCArMjcwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRy
b2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lv
bklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CiAKLSAgICB2
b2lkIHdlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQgd2ViUGFnZVdhc1Jl
bW92ZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9u
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgd2ViUHJvY2Vzc1dhc0Rpc2Nv
bm5lY3RlZChJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hh
bmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYpOworICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlv
biYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
Jik7CiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkOWZlZTA3OGZlNy4uZjVlZjUzMDEzNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMTMxLDcgKzEzMSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBTZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFp
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVkaXJlY3RlZFRvRG9tYWluKSAtPiAoKSBB
c3luYwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0ZWRGcm9tRG9tYWluKSAtPiAoKSBBc3luYwog
ICAgIFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFp
biwgdWludDY0X3QgcGFnZUlEKSAtPiAoKSBBc3luYworICAgIENvbW1pdHRlZENyb3NzU2l0ZUxv
YWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
b0RvbWFpbiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKSAtPiAoKSBBc3luYwogICAg
IFNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRD
cm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBi
b29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCmluZGV4IDU4YWFjYjk5M2RiLi4zM2NkYzRkMTdkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAKQEAgLTEwNyw4ICsxMDcsMTEgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291
cmMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViUGFnZUlE
KSkKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gd2ViUGFnZUlEOworICAgIGRlY29kZXIg
Pj4gd2ViUGFnZUlEOworICAgIGlmICghd2ViUGFnZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmVzdWx0LndlYlBhZ2VJRCA9ICp3ZWJQYWdlSUQ7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC53ZWJGcmFtZUlEKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGZlMjY1MzZmMjFjLi4yMGQwYTc1ZTg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTc0
LDE4ICsxNzQsMTggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICAg
ICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFs
UmVxdWVzdCgpIH0sIHRoaXMsIFt0aGlzXSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAg
V1RGOjpzd2l0Y2hPbihyZXN1bHQsCiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJjZUVy
cm9yJiBlcnJvcikgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJzdGFydDogZXJyb3IgY2hlY2tpbmcgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAl
ZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCwgZXJyb3IuZG9tYWluID0gJXtw
dWJsaWN9cywgZXJyb3IuY29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWlu
UmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElE
LCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBlcnJvciBjaGVj
a2luZyAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQsIHBhcmVudFBJRCA9ICVkLCBlcnJvci5kb21haW4gPSAle3B1YmxpY31zLCBlcnJvci5jb2Rl
ID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNl
KCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCwgZXJyb3Iu
ZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLT5kaWRGYWlsTG9hZGluZyhlcnJvcik7CiAgICAgICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgICAgICBbdGhpc10gKE5ldHdvcmtMb2FkQ2hlY2tlcjo6UmVkaXJlY3Rpb25Ucmlw
bGV0JiB0cmlwbGV0KSB7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMtPm1faXNXYWl0aW5nQ29u
dGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIHRoaXMtPndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZSh0cmlwbGV0
LnJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQucmVkaXJlY3RSZXF1ZXN0KSwgV1RGTW92ZSh0cmlw
bGV0LnJlZGlyZWN0UmVzcG9uc2UpKTsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgic3RhcnQ6IHN5bnRoZXRpYyByZWRpcmVjdCBzZW50IGJlY2F1c2UgcmVxdWVz
dCBVUkwgd2FzIG1vZGlmaWVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlz
U3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlz
LT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5w
YXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydDogc3ludGhldGljIHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVSTCB3YXMgbW9k
aWZpZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+
aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFy
ZW50UElEKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLT5j
YW5Vc2VDYWNoZShyZXF1ZXN0KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJ
RCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+
aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBm
b3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJv
bm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUlu
dDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwg
dGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRl
cnMucGFyZW50UElEKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnJldHJpZXZlQ2Fj
aGVFbnRyeShyZXF1ZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydCgpCiAgICAgfQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhhdCBjb2RlIHBh
dGggb25jZSBtX25ldHdvcmtMb2FkQ2hlY2tlciBpcyB1c2VkIGZvciBhbGwgbmV0d29yayBsb2Fk
cy4KICAgICBpZiAoY2FuVXNlQ2FjaGUob3JpZ2luYWxSZXF1ZXN0KCkpKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2Ug
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBw
YXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNT
eW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKICAgICAgICAgcmV0cmlldmVD
YWNoZUVudHJ5KG9yaWdpbmFsUmVxdWVzdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTIyNywxMyArMjI3LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNh
Y2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICBsb2FkZXIt
PmxvZ1Nsb3dDYWNoZVJldHJpZXZlSWZOZWVkZWQoaW5mbyk7CiAKICAgICAgICAgaWYgKCFlbnRy
eSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVu
dHJ5OiBSZXNvdXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2Ug
PSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3Vy
Y2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2Ugbm90IGluIGNhY2hlIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAg
ICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJz
dExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICBpZiAoZW50cnktPmhhc1JlYWNoZWRQ
cmV2YWxlbnRSZXNvdXJjZUFnZUNhcCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIGhhcyByZWFjaGVkIHByZXZhbGVu
dCByZXNvdXJjZSBhZ2UgY2FwIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlz
U3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlz
U3luY2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRy
aWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIGhhcyByZWFjaGVkIHByZXZhbGVudCByZXNvdXJjZSBh
Z2UgY2FwIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNT
eW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlk
YXRpb24gPSBXVEZNb3ZlKGVudHJ5KTsKICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXZh
bGlkYXRpb25SZXF1ZXN0ID0gb3JpZ2luYWxSZXF1ZXN0KCk7CiAgICAgICAgICAgICBsb2FkZXIt
PnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgRmlyc3RMb2Fk
OjpZZXMpOwpAQCAtMjQxLDIxICsyNDEsMjEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICBpZiAoZW50cnktPnJlZGlyZWN0UmVxdWVzdCgpKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IEhh
bmRsaW5nIHJlZGlyZWN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3lu
Y2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2
ZUNhY2hlRW50cnk6IEhhbmRsaW5nIHJlZGlyZWN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291
cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRl
ci0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBpZiAobG9hZGVyLT5tX3BhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gJiYgIWVudHJ5
LT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIGRvZXMgbm90IGhhdmUg
cmVxdWlyZWQgY2VydGlmaWNhdGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwg
aXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwg
aXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJl
dHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBjZXJ0aWZp
Y2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92
ZShyZXF1ZXN0KSwgRmlyc3RMb2FkOjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkgfHwgcmVxdWVzdC5jYWNo
ZVBvbGljeSgpID09IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZWZyZXNo
QW55Q2FjaGVEYXRhKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRy
aWV2ZUNhY2hlRW50cnk6IFZhbGlkYXRpbmcgY2FjaGUgZW50cnkgKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNN
YWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwg
aXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogVmFsaWRhdGluZyBjYWNoZSBlbnRy
eSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hy
b25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXItPnZhbGlkYXRlQ2FjaGVFbnRyeShXVEZNb3Zl
KGVudHJ5KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXRyaWV2ZWQgcmVzb3VyY2Ug
ZnJvbSBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50
cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9tIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgbG9hZGVy
LT5kaWRSZXRyaWV2ZUNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAgIH0pOwogfQpAQCAt
MjYzLDcgKzI2Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hl
RW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmly
c3RMb2FkIGxvYWQpCiB7CiAgICAgaWYgKGxvYWQgPT0gRmlyc3RMb2FkOjpZZXMpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWlu
UmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogCiAgICAgICAgIGNv
bnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgRmlyc3RMb2EKICAgICB9CiAgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikgewogICAgICAg
ICBXVEZMb2dBbHdheXMoIkF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEg
c2Vzc2lvbiAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgcGFyYW1ldGVy
cy5zZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xv
YWQgd2l0aCBhIHNlc3Npb24gdGhhdCBkb2VzIG5vdCBleGlzdCAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzZXNz
aW9uSUQ9JSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25J
RC5zZXNzaW9uSUQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0
YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEg
c2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQ
Ukl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcGFyYW1ldGVycy5zZXNzaW9u
SUQuc2Vzc2lvbklEKCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCku
bG9nRGlhZ25vc3RpY01lc3NhZ2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nS2V5czo6aW52YWxpZFNlc3Npb25JREtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGU6Ok5vKTsKICAgICAgICAgZGlkRmFpbExvYWRpbmcoaW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVy
bCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGaXJzdExvYQogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CiAg
ICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAm
bV9jb25uZWN0aW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdv
cmtTZXNzaW9uKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xv
YWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIsIGRlc2NyaXB0aW9uID0gJXtwdWJsaWN9cykiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
ZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBt
X25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cChMb2FkUmVzdWx0IHJlc3VsdCkKQEAgLTMyMiw3
ICszMjIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cChMb2FkUmVzdWx0
IHJlc3VsdCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnZlcnRUb0Rvd25sb2Fk
KERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSRUxFQVNFX0xPRyhMb2Fk
aW5nLCAiQ29udmVydGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgJXAgdG8gZG93bmxvYWQgJSIg
UFJJdTY0ICIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCBkb3dubG9hZElELmRvd25sb2FkSUQoKSwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiQ29udmVydGluZyBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIgJXAgdG8gZG93bmxvYWQgJSIgUFJJdTY0ICIgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCB0aGlzLCBkb3dubG9hZElELmRvd25sb2FkSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIpOwogICAgIAogICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgcmVzb3VyY2Ug
Y2FtZSBmcm9tIHRoZSBkaXNrIGNhY2hlLgogICAgIGlmICghbV9uZXR3b3JrTG9hZCkgewpAQCAt
MzQwLDcgKzM0MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImFib3J0OiBDYW5jZWxpbmcgcmVzb3VyY2UgbG9hZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsCi0gICAgICAg
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsK
IAogICAgIGlmIChtX3BhcmFtZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUgJiYgbV9yZXNwb25zZS5p
c051bGwoKSAmJiAhbV9pc0tlcHRBbGl2ZSkgewogICAgICAgICBtX2lzS2VwdEFsaXZlID0gdHJ1
ZTsKQEAgLTM4NCwxMiArMzg0LDEyIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91
bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25zdCBTdHJpbmcmIHhGCiAgICAgfQog
ICAgIGNhc2UgWEZyYW1lT3B0aW9uc0NvbmZsaWN0OiB7CiAgICAgICAgIFN0cmluZyBlcnJvck1l
c3NhZ2UgPSAiTXVsdGlwbGUgJ1gtRnJhbWUtT3B0aW9ucycgaGVhZGVycyB3aXRoIGNvbmZsaWN0
aW5nIHZhbHVlcyAoJyIgKyB4RnJhbWVPcHRpb25zICsgIicpIGVuY291bnRlcmVkIHdoZW4gbG9h
ZGluZyAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInLiBGYWxs
aW5nIGJhY2sgdG8gJ0RFTlknLiI7Ci0gICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFk
ZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291cmNl
OjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkgfSwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsICBNZXNzYWdlU291
cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLCBpZGVudGlmaWVyKCkg
fSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogICAgIGNhc2UgWEZyYW1lT3B0aW9uc0ludmFsaWQ6IHsKICAgICAgICAgU3Ry
aW5nIGVycm9yTWVzc2FnZSA9ICJJbnZhbGlkICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlciBlbmNv
dW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKCkgKyAiJzogJyIgKyB4RnJhbWVPcHRpb25zICsgIicgaXMgbm90IGEgcmVjb2duaXplZCBk
aXJlY3RpdmUuIFRoZSBoZWFkZXIgd2lsbCBiZSBpZ25vcmVkLiI7Ci0gICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdl
LCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCk7CisgICAgICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFkZENvbnNvbGVNZXNzYWdlIHsgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsICBNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNz
YWdlLCBpZGVudGlmaWVyKCkgfSwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB9CkBAIC00MTYsNyArNDE2LDcgQEAg
Ym9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFt
ZUFuY2VzdG9yc09yWEZyYW1lT3B0aW8KICAgICAgICAgU3RyaW5nIHhGcmFtZU9wdGlvbnMgPSBt
X3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6WEZyYW1lT3B0aW9ucyk7
CiAgICAgICAgIGlmICgheEZyYW1lT3B0aW9ucy5pc051bGwoKSAmJiBzaG91bGRJbnRlcnJ1cHRM
b2FkRm9yWEZyYW1lT3B0aW9ucyh4RnJhbWVPcHRpb25zLCByZXNwb25zZS51cmwoKSkpIHsKICAg
ICAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAiUmVmdXNlZCB0byBkaXNwbGF5ICciICsg
cmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBpbiBh
IGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICciICsgeEZyYW1lT3B0
aW9ucyArICInLiI7Ci0gICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBZGRDb25z
b2xlTWVzc2FnZSB7IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCAgTWVzc2FnZVNvdXJjZTo6U2Vj
dXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSwgaWRlbnRpZmllcigpIH0s
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQpOworICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QWRkQ29uc29sZU1lc3NhZ2UgeyBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgIE1lc3Nh
Z2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UsIGlk
ZW50aWZpZXIoKSB9LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICB9CkBAIC00MjUsNyArNDI1LDcgQEAg
Ym9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JDU1BGcmFt
ZUFuY2VzdG9yc09yWEZyYW1lT3B0aW8KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVjZWl2ZWRSZXNwb25zZSwgUmVz
cG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaHR0
cFN0YXR1c0NvZGUgPSAlZCwgbGVuZ3RoID0gJSIgUFJJZDY0ICIpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaHR0cFN0YXR1c0NvZGUgPSAlZCwgbGVuZ3Ro
ID0gJSIgUFJJZDY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJlY2VpdmVkUmVz
cG9uc2UuaHR0cFN0YXR1c0NvZGUoKSwgcmVjZWl2ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRM
ZW5ndGgoKSk7CiAKICAgICBtX3Jlc3BvbnNlID0gV1RGTW92ZShyZWNlaXZlZFJlc3BvbnNlKTsK
IApAQCAtNTA1LDcgKzUwNSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uCiB2b2lkIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1
ZmZlciwgaW50IHJlcG9ydGVkRW5jb2RlZERhdGFMZW5ndGgpCiB7CiAgICAgaWYgKCFtX251bUJ5
dGVzUmVjZWl2ZWQpCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVC
dWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQnVmZmVy
OiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIpOwogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBidWZmZXItPnNpemUoKTsK
IAogICAgIEFTU0VSVCghbV9jYWNoZUVudHJ5Rm9yVmFsaWRhdGlvbik7CkBAIC01MzQsNyArNTM0
LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXAKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9h
ZE1ldHJpY3MpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGlu
ZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQs
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9udW1C
eXRlc1JlY2VpdmVkKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2Fk
aW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGggPSAlemQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIsIG1fbnVtQnl0ZXNSZWNlaXZlZCk7CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJh
TmV0d29ya0xvYWRNZXRyaWNzKCkpCiAgICAgICAgIG1fY29ubmVjdGlvbi0+YWRkTmV0d29ya0xv
YWRJbmZvcm1hdGlvbk1ldHJpY3MoaWRlbnRpZmllcigpLCBuZXR3b3JrTG9hZE1ldHJpY3MpOwpA
QCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvCiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRGYWlsTG9hZGluZyhjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsTG9hZGluZzogKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIiwgaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQsIGlzQWNjZXNzQ29u
dHJvbCA9ICVkLCBlcnJDb2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJh
bWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBlcnJvci5pc1RpbWVv
dXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuaXNBY2Nlc3NDb250cm9sKCksIGVy
cm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsTG9h
ZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNUaW1lb3V0ID0gJWQsIGlzQ2FuY2VsbGF0aW9uID0gJWQs
IGlzQWNjZXNzQ29udHJvbCA9ICVkLCBlcnJDb2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJv
ci5pc0FjY2Vzc0NvbnRyb2woKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgaWYgKHNob3Vs
ZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5lY3Rpb24t
PnJlbW92ZU5ldHdvcmtMb2FkSW5mb3JtYXRpb24oaWRlbnRpZmllcigpKTsKQEAgLTczMSw3ICs3
MzEsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVl
c3QoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdAogICAgICAgICB9CiAgICAgfQogCi0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJj
b250aW51ZVdpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllcik7CiAKICAgICBtX2lzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzID0g
aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHM7CiAKQEAgLTk4OCw2ICs5ODgsMTEgQEAg
c3RhdGljIFN0cmluZyBlc2NhcGVJREZvckpTT04oY29uc3QgT3B0aW9uYWw8dWludDY0X3Q+JiB2
YWx1ZSkKICAgICByZXR1cm4gdmFsdWUgPyBTdHJpbmc6Om51bWJlcih2YWx1ZS52YWx1ZSgpKSA6
IFN0cmluZygiTm9uZSJfcyk7CiB9OwogCitzdGF0aWMgU3RyaW5nIGVzY2FwZUlERm9ySlNPTihj
b25zdCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4mIHZhbHVlKQoreworICAgIHJldHVybiB2YWx1
ZSA/IFN0cmluZzo6bnVtYmVyKHZhbHVlLT50b1VJbnQ2NCgpKSA6IFN0cmluZygiTm9uZSJfcyk7
Cit9OworCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24o
KSBjb25zdAogewogICAgIEFTU0VSVChzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5l
Y3Rpb24sIHNlc3Npb25JRCgpKSk7CkBAIC05OTgsNyArMTAwMyw3IEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0CiAgICAgbG9nQ29va2ll
SW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCAiTmV0d29ya1Jlc291cmNlTG9hZGVyIiwgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB2b2lkKj4odGhpcyksICpuZXR3b3JrU3RvcmFnZVNlc3Npb24sIG9y
aWdpbmFsUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3Jl
YXRlKG9yaWdpbmFsUmVxdWVzdCgpKSwgb3JpZ2luYWxSZXF1ZXN0KCkudXJsKCksIG9yaWdpbmFs
UmVxdWVzdCgpLmh0dHBSZWZlcnJlcigpLCBmcmFtZUlEKCksIHBhZ2VJRCgpLCBpZGVudGlmaWVy
KCkpOwogfQogCi1zdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWws
IGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBs
b2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVj
dCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNl
c3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTEwMjUsNyArMTAzMCw3IEBAIHN0YXRpYyB2
b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2VzcyYgY29ubmVjdGlvCiAjdW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotc3RhdGlj
IHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9n
Z2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVm
ZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Nvb2tp
ZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5l
Y3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6c2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0
b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKQEAgLTEwODYsNyArMTA5MSw3IEBAIHN0YXRp
YyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm5lY3RpCiAjdW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KIAotdm9p
ZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9w
dGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQordm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBp
ZGVudGlmaWVyKQogewogICAgIEFTU0VSVChzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihjb25u
ZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKaW5k
ZXggYThhMzAwNWMxNDIuLmE4ZjZkMzE1Nzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKQEAgLTg0LDcgKzg0LDcgQEAg
cHVibGljOgogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyYW1ldGVycy5zZXNzaW9uSUQ7IH0KICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcjsgfQogICAgIHVp
bnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRDsg
fQotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMud2ViUGFnZUlEOyB9CiAKICAgICBzdHJ1Y3QgU3luY2hyb25vdXNM
b2FkRGF0YTsKIApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpICYmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIHN0YXRp
YyBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKLSAgICBzdGF0aWMgdm9pZCBsb2dDb29r
aWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IGlkZW50aWZpZXIpOworICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0
aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
Y29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNhYmxlRXh0cmFOZXR3
b3JrTG9hZE1ldHJpY3NDYXB0dXJlKCkgeyBtX3Nob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcyA9IGZhbHNlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5j
cHAKaW5kZXggOTdlMGIyNDQwNzguLjU1M2NiYWQxOWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZp
Y2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC00NSw0MCArNDUsNDAgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRpZmll
ci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1f
Y29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRS
ZWNlaXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmllci5mZXRjaElk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVz
cG9uc2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdl
KQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVu
dEZldGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIp
OwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsK
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBtX2lkZW50aWZp
ZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEs
IGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQog
CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJ
UEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRh
IHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkK
IHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRjaDogZmV0Y2hJZGVu
dGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJ
ZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWls
IHsgZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkRmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiB7CiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMi
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0
YSgpKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRp
Zmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLmNwcAppbmRleCBkMzJjZDQ2Mzg5ZS4uOTFmZGM3MTU5NzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgdm9p
ZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbklkZW50aWZpZXIgc2VydmkKICAgICBhdXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS5hY3RpdmVX
b3JrZXJGcm9tUmVnaXN0cmF0aW9uSUQoc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50aWZp
ZXIpOwogICAgIGlmICghd29ya2VyKSB7CiAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVz
IC0+IERpZE5vdEhhbmRsZSBiZWNhdXNlIG5vIGFjdGl2ZSB3b3JrZXIiLCBmZXRjaElkZW50aWZp
ZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX2NvbnRlbnRDb25u
ZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhh
bmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9jb250ZW50
Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRO
b3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIGF1dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKTsK
QEAgLTE3MCwxMyArMTcwLDEzIEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZl
dGNoKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAKICAgICAgICAg
aWYgKCFzdWNjZXNzKSB7CiAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyBEaWRO
b3RIYW5kbGUgYmVjYXVzZSB3b3JrZXIgZGlkIG5vdCBiZWNvbWUgYWN0aXZhdGVkIiwgZmV0Y2hJ
ZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgICAgIG1f
Y29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAg
ICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNs
aWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byogd29ya2VyID0gc2VydmVyKCku
d29ya2VyQnlJRChzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgICAgIGlmICghd29ya2Vy
KSB7Ci0gICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVu
dGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xOTIsNyArMTky
LDcgQEAgdm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbklkZW50aWZpZXIgc2VydmkKICAgICAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPigqY29udGV4dENvbm5lY3Rpb24pLnN0
YXJ0RmV0Y2gobV9zZXNzaW9uSUQsIG1fY29udGVudENvbm5lY3Rpb24uZ2V0KCksIHRoaXMtPmlk
ZW50aWZpZXIoKSwgZmV0Y2hJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgcmVx
dWVzdCwgb3B0aW9ucywgZm9ybURhdGEsIHJlZmVycmVyKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJl
Y2F1c2UgZmFpbGVkIHRvIHJ1biBzZXJ2aWNlIHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dn
aW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICAgICAgbV9jb250ZW50Q29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RI
YW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICAgICAg
bV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9KTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMDAzOTQ1MDUzZjUu
LjBiZWQ2OTc2OTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTQ5NCw3ICs0OTQsNyBAQCBT
dG9yYWdlTWFuYWdlcjo6flN0b3JhZ2VNYW5hZ2VyKCkKIHsKIH0KIAotdm9pZCBTdG9yYWdlTWFu
YWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVz
cGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNl
SUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSUQsIHF1
b3RhSW5CeXRlc10oKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKG1fc2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2VzLmNvbnRhaW5zKHN0b3JhZ2VOYW1lc3BhY2VJRCkpCkBAIC01MDQsNyArNTA0LDcgQEAg
dm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0
X3Qgc3RvcmFnZU5hbWVzcGFjZUlELAogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFj
ZUlEKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNl
KFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKICAgICBtX3F1ZXVlLT5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNw
YWNlSURdIHsKICAgICAgICAgQVNTRVJUKG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmNvbnRh
aW5zKHN0b3JhZ2VOYW1lc3BhY2VJRCkpOwpAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgU3RvcmFn
ZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdl
TmFtZXNwYWNlSUQpCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmFkZEFsbG93
ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qgc3RvcmFnZU5hbWVz
cGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mIGFsbG93ZWRDb25uZWN0aW9uKQordm9pZCBTdG9yYWdl
TWFuYWdlcjo6YWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihQYWdl
SWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlvbiYgYWxsb3dlZENv
bm5lY3Rpb24pCiB7CiAgICAgYXV0byBhbGxvd2VkQ29ubmVjdGlvbklEID0gYWxsb3dlZENvbm5l
Y3Rpb24udW5pcXVlSUQoKTsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhbGxvd2VkQ29ubmVjdGlvbklELCBzdG9yYWdlTmFtZXNw
YWNlSURdKCkgbXV0YWJsZSB7CkBAIC01MjMsNyArNTIzLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdl
cjo6YWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbih1aW50NjRfdCBz
dG9yYWcKICAgICB9KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6cmVtb3ZlQWxsb3dlZFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbih1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQsIElQQzo6Q29ubmVjdGlvbiYgYWxsb3dlZENvbm5lY3Rpb24pCit2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpyZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKFBhZ2VJ
ZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29u
bmVjdGlvbikKIHsKICAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVj
dGlvbi51bmlxdWVJRCgpOwogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3Bh
Y2VJRF0oKSBtdXRhYmxlIHsKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjpyZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90
IHN0bwogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgdWludDY0X3QgbmV3U3Rv
cmFnZU5hbWVzcGFjZUlEKQordm9pZCBTdG9yYWdlTWFuYWdlcjo6Y2xvbmVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFBhZ2VJZGVudGlm
aWVyIG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCkKIHsKICAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzdG9yYWdlTmFtZXNwYWNlSUQsIG5l
d1N0b3JhZ2VOYW1lc3BhY2VJRF0gewogICAgICAgICBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSog
c2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UgPSBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcy5nZXQo
c3RvcmFnZU5hbWVzcGFjZUlEKTsKQEAgLTU2Niw3ICs1NjYsNyBAQCB2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpwcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlv
bikKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogY29ubmVjdGlvbkFuZFN0b3JhZ2VNYXBJRFBh
aXJzVG9SZW1vdmUpCiAgICAgICAgICAgICBtX3N0b3JhZ2VBcmVhc0J5Q29ubmVjdGlvbi5yZW1v
dmUocGFpcik7CiAKLSAgICAgICAgVmVjdG9yPHVpbnQ2NF90PiBzZXNzaW9uU3RvcmFnZU5hbWVT
cGFjZUlEc1RvUmVtb3ZlOworICAgICAgICBWZWN0b3I8UGFnZUlkZW50aWZpZXI+IHNlc3Npb25T
dG9yYWdlTmFtZVNwYWNlSURzVG9SZW1vdmU7CiAgICAgICAgIGZvciAoYXV0byYgc2Vzc2lvblN0
b3JhZ2VOYW1lc3BhY2UgOiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlcykgewogICAgICAgICAg
ICAgaWYgKHNlc3Npb25TdG9yYWdlTmFtZXNwYWNlLnZhbHVlLT5hbGxvd2VkQ29ubmVjdGlvbnMo
KS5jb250YWlucyhjb25uZWN0aW9uSUQpKQogICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlLnZhbHVlLT5yZW1vdmVBbGxvd2VkQ29ubmVjdGlvbihjb25uZWN0aW9uSUQpOwpA
QCAtNzc5LDcgKzc3OSw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVRyYW5zaWVudExv
Y2FsU3RvcmFnZU1hcChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sCiAKIHZvaWQgU3RvcmFn
ZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgdWludDY0X3Qgc3RvcmFnZU1hcElELCB1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQs
IFNlY3VyaXR5T3JpZ2luRGF0YSYmIHNlY3VyaXR5T3JpZ2luRGF0YSkKIHsKLSAgICBtX3F1ZXVl
LT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0
aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVz
cGFjZUlELCBzZWN1cml0eU9yaWdpbkRhdGEgPSBzZWN1cml0eU9yaWdpbkRhdGEuaXNvbGF0ZWRD
b3B5KCldKCkgbXV0YWJsZSB7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51bmlxdWVJ
RCgpLCBzdG9yYWdlTWFwSUQsIHN0b3JhZ2VOYW1lc3BhY2VJRCA9IG1ha2VPYmplY3RJZGVudGlm
aWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oc3RvcmFnZU5hbWVzcGFjZUlEKSwgc2VjdXJpdHlPcmln
aW5EYXRhID0gc2VjdXJpdHlPcmlnaW5EYXRhLmlzb2xhdGVkQ29weSgpXSgpIG11dGFibGUgewog
ICAgICAgICBpZiAobV9pc0VwaGVtZXJhbCkgewogICAgICAgICAgICAgbV9lcGhlbWVyYWxTdG9y
YWdlLmFkZChzZWN1cml0eU9yaWdpbkRhdGEsIFdlYkNvcmU6OlN0b3JhZ2VNYXA6OmNyZWF0ZShs
b2NhbFN0b3JhZ2VEYXRhYmFzZVF1b3RhSW5CeXRlcykpOwogICAgICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3Jh
Z2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3Rv
cmFnZU1hbmFnZXIuaAppbmRleCBhODg4MzMyZWZjZi4uNWU2NWU1MDM4ZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTUwLDExICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFu
YWdlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB+
U3RvcmFnZU1hbmFnZXIoKTsKIAotICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwot
ICAgIHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCk7Ci0gICAgdm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VD
b25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7
Ci0gICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9u
KHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9p
ZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICB2b2lkIGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQp
OworICAgIHZvaWQgYWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlv
biYpOworICAgIHZvaWQgcmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVj
dGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29u
bmVjdGlvbiYpOworICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKICAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZUNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CiAgICAgdm9pZCB3YWl0VW50aWxXcml0ZXNGaW5p
c2hlZCgpOwpAQCAtMTA3LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxzdGQ6OnBh
aXI8dWludDY0X3QsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4sIFJlZlB0cjxUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZXM7CiAKICAgICBjbGFzcyBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdl
TmFtZXNwYWNlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKIAog
ICAgIEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90
PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmlu
ZGV4IGM3ZjM4NmIzZDdjLi44YmJjMTY5Nzg1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiTmV0d29ya0NhY2hlRW50cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVTdG9yYWdl
LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvblNl
dC5oPgpAQCAtODQsNyArODUsNyBAQCBlbnVtIGNsYXNzIFVzZURlY2lzaW9uIHsKICAgICBOb0R1
ZVRvRXhwaXJlZFJlZGlyZWN0CiB9OwogCi11c2luZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWly
PHVpbnQ2NF90IC8qd2ViUGFnZUlEKi8sIHVpbnQ2NF90IC8qd2ViRnJhbWVJRCovPjsKK3VzaW5n
IEdsb2JhbEZyYW1lSUQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2
NF90IC8qd2ViRnJhbWVJRCovPjsKIAogY2xhc3MgQ2FjaGUgOiBwdWJsaWMgUmVmQ291bnRlZDxD
YWNoZT4gewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCmluZGV4IDk2NWM2ZmE2NjRiLi4yZGQw
ZTdkNDZiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBOZXR3
b3JrU2Vzc2lvbkNvY29hOwogY2xhc3MgTmV0d29ya0RhdGFUYXNrQ29jb2EgZmluYWwgOiBwdWJs
aWMgTmV0d29ya0RhdGFUYXNrIHsKICAgICBmcmllbmQgY2xhc3MgTmV0d29ya1Nlc3Npb25Db2Nv
YTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFzaz4gY3JlYXRlKE5ldHdv
cmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVu
dFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJl
ZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFz
a0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tl
cj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKKyAgICBzdGF0aWMgUmVmPE5ldHdvcmtEYXRhVGFz
az4gY3JlYXRlKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQm
IGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250
ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5j
b2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91
bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91
bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikK
ICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5ldHdvcmtEYXRhVGFza0NvY29h
KHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdCwgZnJhbWVJRCwgcGFnZUlELCBzdG9yZWRDcmVkZW50
aWFsc1BvbGljeSwgc2hvdWxkQ29udGVudFNuaWZmLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlm
Ziwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgc2hvdWxkUHJlY29u
bmVjdE9ubHksIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBuZXR3b3JrQWN0aXZp
dHlUcmFja2VyKSk7CiAgICAgfQpAQCAtNzAsMTIgKzcwLDEyIEBAIHB1YmxpYzoKICAgICBXZWJD
b3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcygpIHsgcmV0dXJuIG1f
bmV0d29ya0xvYWRNZXRyaWNzOyB9CiAKICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9mcmFtZUlEOyB9OwotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnZUlEOyB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fcGFnZUlEOyB9OwogCiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkgY29uc3Qg
b3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nl
c3Npb24mLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3ksIFdlYkNv
cmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5LCBib29sIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNG
b3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPik7
CisgICAgTmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrRGF0YVRh
c2tDbGllbnQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVu
Y29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5h
dmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKIAogICAgIGJvb2wg
dHJ5UGFzc3dvcmRCYXNlZEF1dGhlbnRpY2F0aW9uKGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImKTsKICAgICB2b2lkIGFw
cGx5U25pZmZpbmdQb2xpY2llc0FuZEJpbmRSZXF1ZXN0VG9JbmZlcmZhY2VJZk5lZWRlZChfX3N0
cm9uZyBOU1VSTFJlcXVlc3QqJiwgYm9vbCBzaG91bGRDb250ZW50U25pZmYsIGJvb2wgc2hvdWxk
Q29udGVudEVuY29kaW5nU25pZmYpOwpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIFJl
dGFpblB0cjxOU1VSTFNlc3Npb25EYXRhVGFzaz4gbV90YXNrOwogICAgIFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyBtX25ldHdvcmtMb2FkTWV0cmljczsKICAgICB1aW50NjRfdCBtX2ZyYW1l
SUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9wYWdlSUQ7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGJv
b2wgbV9oYXNCZWVuU2V0VG9Vc2VTdGF0ZWxlc3NDb29raWVTdG9yYWdlIHsgZmFsc2UgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFU
YXNrQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCmluZGV4IDM1ZTQ0M2I5ZWU5Li4yOGEwNWU4MGRiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFza1dp
dGhGaXJzdFBhcnR5Rm9yU2FtZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0YXMK
ICNlbmRpZgogfQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2Eo
TmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmlu
Z1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5l
Y3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29ya0Rh
dGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9u
LCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kg
c2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGlj
eSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwg
Ym9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtEYXRh
VGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFtZUlE
KQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtEYXRh
VGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwg
TmV0d29ya0RhdGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZv
cm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdB
bGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJ
bmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTog
QmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAodW5z
aWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0
ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlz
T25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNr
SUQgPSAlbHU6IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50b1VJ
bnQ2NCgpLCBmcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwg
bnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAgICAg
IExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwg
W21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRG
OFN0cmluZyk7CiAjZW5kaWYKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJgogICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFsc1Bv
bGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVs
ZXNzQ29va2llbGVzcyB8fCBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNob3Vs
ZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1h
dGlvbigpKQotICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9
ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhp
cywgbV9wYWdlSUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRp
Zmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIp
LCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNF
X0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29y
a0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZv
cm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMg
Y29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwg
bV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3Vs
ZEJsb2NrQ29va2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vzc2lv
biwgIiVsbHUgJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNrSWRl
bnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2lu
ZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBAIC0z
NzksNyArMzc5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQ
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3VsZEJs
b2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9z
ZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdv
cmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5m
b3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IE5v
dCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdl
SUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJl
cXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxFQVNF
X0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29y
a0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZv
cm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogTm90
IHBhcnRpdGlvbmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50
aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAg
ICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMg
Zm9yIHJlZGlyZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L0lQQy9Db25uZWN0aW9uLmgKaW5kZXggYzRmYjAwYjA4M2MuLjA4MzQ4ZDJjOTg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCkBAIC0xODYsNiArMTg2LDE4IEBAIHB1
YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIHNlbmRXaXRoUmVwbHkoVCYmIG1l
c3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIEZ1bmN0aW9uRGlzcGF0Y2hlciYgcmVwbHlE
aXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlw
ZW5hbWUgVDo6UmVwbHk+OjpUeXBlPik+JiYgcmVwbHlIYW5kbGVyKTsKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYm
IHJlcGx5LCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRz
OjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9
IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJ
bW1lZGlhdGVseSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlv
blNldDxXYWl0Rm9yT3B0aW9uPiB3YWl0Rm9yT3B0aW9ucyA9IHsgfSk7CisgICAgCisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBib29sIHNlbmQoVCYmIG1lc3NhZ2Us
IE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+
IHNlbmRPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VD4oV1RGTW92
ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CisgICAg
fQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCB3
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0
aW9uSUQsIFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JP
cHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaElt
bWVkaWF0ZWx5PFQ+KGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9w
dGlvbnMpOworICAgIH0KIAogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVu
Y29kZXI+LCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwogICAgIHZvaWQgc2Vu
ZE1lc3NhZ2VXaXRoUmVwbHkodWludDY0X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5j
b2Rlcj4sIEZ1bmN0aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lk
KHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVyPik+JiYgcmVwbHlIYW5kbGVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCBkNWY5ODFlNDUzNC4uM2Q2ZjM0
Mjg5MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5k
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKQEAg
LTM0LDkgKzM0LDkgQEAgY2xhc3MgTWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgdmlydHVh
bCB+TWVzc2FnZVNlbmRlcigpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5k
KGNvbnN0IFUmIG1lc3NhZ2UpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNv
bnN0IFUmIG1lc3NhZ2UsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBzZW5kKG1lc3NhZ2UsIG1lc3NhZ2VTZW5kZXJEZXN0aW5h
dGlvbklEKCksIHsgfSk7CisgICAgICAgIHJldHVybiBzZW5kKG1lc3NhZ2UsIG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCksIHNlbmRPcHRpb25zKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBVPiBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRp
b25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQpAQCAtNDgsNiAr
NDgsMTIgQEAgcHVibGljOgogICAgICAgICAKICAgICAgICAgcmV0dXJuIHNlbmRNZXNzYWdlKFdU
Rk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zKTsKICAgICB9CisgICAgCisgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVSwgdHlwZW5hbWUgVD4KKyAgICBib29sIHNlbmQoY29uc3QgVSYgbWVzc2FnZSwg
T2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4g
c2VuZE9wdGlvbnMgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4gc2VuZDxVPihtZXNzYWdl
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKKyAgICB9CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYgcmVwbHksIFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5
KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQpAQCAt
NjUsOCArNzEsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpLT5zZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgZGVzdGlu
YXRpb25JRCwgdGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKICAgICB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotICAgIHZvaWQgc2VuZFdpdGhBc3luY1Jl
cGx5KFQmJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+CisgICAg
dm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxl
cikKICAgICB7CiAgICAgICAgIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbWVz
c2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93
ZWJraXQvbWVzc2FnZXMucHkKaW5kZXggNTI1MTQ5MDJhYmIuLjViOTc1MzAzMDViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKQEAgLTIwNSw2ICsyMDUsNyBAQCBk
ZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjZWl2ZXIpOgogICAgICAgICAn
U3RyaW5nJywKICAgICAgICAgJ1dlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllcicsCiAgICAgICAg
ICdXZWJDb3JlOjpGZXRjaElkZW50aWZpZXInLAorICAgICAgICAnV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6UG9pbnRlcklEJywKICAgICAgICAgJ1dlYkNvcmU6
OlByb2Nlc3NJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFu
ZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcAppbmRl
eCBhNmEwMDk5NTUwMC4uZTYwNWE0NTk0NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9BUElQYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
QVBJUGFnZUhhbmRsZS5jcHAKQEAgLTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsK
IAotUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitS
ZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwg
ZmFsc2UpKTsKIH0KIAotUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252
ZXJ0aW5nKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVh
dGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAotUGFn
ZUhhbmRsZTo6UGFnZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGlu
ZykKK1BhZ2VIYW5kbGU6OlBhZ2VIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBib29sIGlzQXV0b2NvbnZlcnRpbmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBt
X2lzQXV0b2NvbnZlcnRpbmcoaXNBdXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBA
QCB2b2lkIFBhZ2VIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAK
IGJvb2wgUGFnZUhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9i
amVjdD4mIHJlc3VsdCkKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVy
LmRlY29kZShwYWdlSUQpKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQ7CisgICAgZGVjb2RlciA+PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAogICAgIGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKGlzQXV0b2NvbnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICByZXN1bHQgPSBpc0F1dG9jb252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcocGFn
ZUlEKSA6IGNyZWF0ZShwYWdlSUQpOworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBj
cmVhdGVBdXRvY29udmVydGluZygqcGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBh
Z2VIYW5kbGUuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKaW5k
ZXggZjMwZmFmYmRjMzEuLjZhMWNmYjY5ODI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElQYWdlSGFuZGxlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQVBJUGFnZUhhbmRsZV9o
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1lc3BhY2UgSVBDIHsKQEAgLTM4LDIw
ICszOSwyMCBAQCBuYW1lc3BhY2UgQVBJIHsKIAogY2xhc3MgUGFnZUhhbmRsZSA6IHB1YmxpYyBP
YmplY3RJbXBsPE9iamVjdDo6VHlwZTo6UGFnZUhhbmRsZT4gewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgc3RhdGljIFJl
ZjxQYWdlSGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyh1aW50NjRfdCBwYWdlSUQpOworICAg
IHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
KyAgICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNyZWF0ZUF1dG9jb252ZXJ0aW5nKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2aXJ0dWFsIH5QYWdlSGFuZGxlKCk7CiAKLSAgICB1aW50
NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgYm9v
bCBpc0F1dG9jb252ZXJ0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc0F1dG9jb252ZXJ0aW5nOyB9
CiAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoSVBDOjpEZWNvZGVyJiwgUmVmUHRyPE9iamVjdD4mKTsKIAogcHJpdmF0ZToKLSAg
ICBleHBsaWNpdCBQYWdlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgYm9vbCBpc0F1dG9jb252ZXJ0
aW5nKTsKKyAgICBQYWdlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBib29sIGlzQXV0
b2NvbnZlcnRpbmcpOwogCi0gICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3Qg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgY29uc3QgYm9vbCBtX2lzQXV0
b2NvbnZlcnRpbmc7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9D
b2NvYS9SZW1vdGVPYmplY3RSZWdpc3RyeS5oCmluZGV4IDg2ZjgwNDE3MDlhLi40MDQwODE3ODAw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVj
dFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9i
amVjdFJlZ2lzdHJ5LmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNl
aXZlci5oIgogI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8
d3RmL1dlYWtPYmpDUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTczLDcgKzc0
LDcgQEAgcHJpdmF0ZToKICAgICBGdW5jdGlvbjx2b2lkKCk+IG1fbGF1bmNoSW5pdGlhbFByb2Nl
c3NJZk5lY2Vzc2FyeTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBQcm9jZXNzVGhyb3R0bGVyOjpC
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlbj4gbV9wZW5kaW5nUmVwbGllczsKICAgICBib29sIG1faXNS
ZWdpc3RlcmVkQXNNZXNzYWdlUmVjZWl2ZXIgeyBmYWxzZSB9OwotICAgIHVpbnQ2NF90IG1fbWVz
c2FnZVJlY2VpdmVySUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9tZXNz
YWdlUmVjZWl2ZXJJRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxl
Lm1tCmluZGV4IDU4Y2IxZGQyYjVlLi43ZTk3ZjE3NmMwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpA
QCAtMjgsNyArMjgsNyBAQAogCiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5k
bGUKIAotLSAoaWQpX2luaXRXaXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0
V2l0aFBhZ2VJRDooV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3
IEBAIC0gKGlkKV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVn
ZXIpaGFzaAogewotICAgIHJldHVybiBfcGFnZUlEOworICAgIHJldHVybiBfcGFnZUlELnRvVUlu
dDY0KCk7CiB9CiAKIC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBA
IC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihO
U0NvZGVyICopY29kZXIKIHsKLSAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6
QCJwYWdlSUQiXTsKKyAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZv
cktleTpAInBhZ2VJRCJdOwogfQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29k
ZXIKQEAgLTYxLDcgKzYxLDcgQEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVy
CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICBfcGFnZUlEID0gW2NvZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAg
X3BhZ2VJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlw
ZT4oW2NvZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYS4u
NDNlNDFlMjRjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaApAQCAtMjQsMTEg
KzI0LDEyIEBACiAgKi8KIAogI2ltcG9ydCAiV0tCcm93c2luZ0NvbnRleHRIYW5kbGUuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KIAogQGludGVyZmFjZSBXS0Jyb3dzaW5n
Q29udGV4dEhhbmRsZSAoKQogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRl
ciA9IF9wYWdlSUQpIHVpbnQ2NF90IHBhZ2VJRDsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgZ2V0dGVyPV9wYWdlSUQpIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKIAot
LSAoaWQpX2luaXRXaXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQ7CistIChpZClfaW5pdFdpdGhQ
YWdlSUQ6KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKXBhZ2VJRDsKIAogQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuY3BwCmluZGV4IGViOGEwYjY2MTdhLi5kNGUxYzI1MDA4MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5LmNwcApAQCAtNjYsNyArNjYsNyBAQCBJUEM6OkNvbm5lY3Rpb24qIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVp
bnQ2NF90IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICptX2Rlc3RpbmF0aW9uSUQ7CisgICAgcmV0dXJu
IG1fZGVzdGluYXRpb25JRC0+dG9VSW50NjQoKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6Y2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgcmVwbHkpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6Om9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpCiAgICAg
cGxhdGZvcm1PcGVuUGF5bWVudFNldHVwKG1lcmNoYW50SWRlbnRpZmllciwgZG9tYWluTmFtZSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpzaG93UGF5bWVudFVJKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6c2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0
aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2lu
YXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3Ms
IGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVx
dWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoYXV0byYgY29vcmRpbmF0b3IgPSBhY3RpdmVQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSgpKQogICAgICAgICBjb29yZGluYXRvci0+ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGQyMzdlYWIzZGFiLi42ZTRhODVjZjJlMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3Qg
U3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFM
OjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQg
b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkb21haW5OYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICB2b2lkIHNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9p
ZCBzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBB
TDo6U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5
bWVudE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsK
ICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBw
cml2YXRlOgogI2VuZGlmCiAKICAgICBDbGllbnQmIG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBtX2Rlc3RpbmF0aW9uSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+IG1fZGVzdGluYXRpb25JRDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAg
ICAvLyBJZGxlIC0gTm90aGluZydzIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkubWVzc2FnZXMuaW4KaW5kZXggZGQzMTMxMjdiZjQuLjFkZTRjZGRjZTRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzAsNyArMzAsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSB7CiAgICAgQ2FuTWFrZVBheW1lbnRzV2l0
aEFjdGl2ZUNhcmQoU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllciwgU3RyaW5nIGRvbWFpbk5hbWUs
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgY2FuTWFrZVBheW1lbnRzKSBBc3lu
YwogICAgIE9wZW5QYXltZW50U2V0dXAoU3RyaW5nIG1lcmNoYW50SWRlbnRpZmllciwgU3RyaW5n
IGRvbWFpbk5hbWUpIC0+IChib29sIHJlc3VsdCkgQXN5bmMKIAotICAgIFNob3dQYXltZW50VUko
dWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTdHJpbmcg
b3JpZ2luYXRpbmdVUkxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+IGxpbmtJY29uVVJMU3RyaW5ncywg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QgcGF5bWVudFJlcXVlc3QpIC0+
IChib29sIHJlc3VsdCkgU3luY2hyb25vdXMKKyAgICBTaG93UGF5bWVudFVJKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3Ry
aW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmlu
Z3MsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0
KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCiAgICAgQ29tcGxldGVNZXJjaGFudFZhbGlk
YXRpb24oV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiBwYXltZW50TWVyY2hhbnRTZXNz
aW9uKQogICAgIENvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29y
ZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+IHVwZGF0ZSkKICAgICBDb21wbGV0ZVNoaXBwaW5nQ29u
dGFjdFNlbGVjdGlvbihPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+IHVw
ZGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1
dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IDZlYjMzNWYwN2QzLi45ZGViNzZm
ZjEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHVpbnQ2
NF90IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6YWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hh
bGxlbmdlJiYgY2hhbGxlbmdlCiAgICAgcmV0dXJuIGNoYWxsZW5nZUlEOwogfQogCi1ib29sIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6c2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2Um
IGNoYWxsZW5nZSkgY29uc3QKK2Jvb2wgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpzaG91bGRDb2Fs
ZXNjZUNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlE
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBjb25zdAogewogICAg
IGlmICghY2FuQ29hbGVzY2VDaGFsbGVuZ2UoY2hhbGxlbmdlKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTA4LDcgKzEwOCw3IEBAIFZlY3Rvcjx1aW50NjRfdD4gQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpjb2FsZXNjZUNoYWxsZW5nZXNNYXRjaGluZyh1aW50NjRfdCBjaGFsCiAgICAgcmV0
dXJuIGNoYWxsZW5nZXNUb0NvYWxlc2NlOwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
cGFnZUlEKTsKICAgICBBU1NFUlQoZnJhbWVJRCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1
aW50NjRfdCBwYWdlSUQsIHUKIAogdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgdWludDY0X3QgZHVtbXlQYWdlSUQgPSAwOworICAgIFBhZ2VJZGVudGlmaWVyIGR1bW15
UGFnZUlEOwogICAgIHVpbnQ2NF90IGNoYWxsZW5nZUlEID0gYWRkQ2hhbGxlbmdlVG9DaGFsbGVu
Z2VNYXAoeyBkdW1teVBhZ2VJRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpIH0pOwogICAgIAogICAgIC8vIENvYWxlc2NlIGNoYWxsZW5nZXMgaW4g
dGhlIHNhbWUgcHJvdGVjdGlvbiBzcGFjZSBhbmQgaW4gdGhlIHNhbWUgcGFnZS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmgKaW5kZXggN2ZlMzk5ZTBiN2UuLjg2ZTc0NGMxMDhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2
MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
Jik7CiAKICAgICB2b2lkIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
Y2hhbGxlbmdlSUQsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6
OkNyZWRlbnRpYWwmJik7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgQ2hhbGxlbmdlIHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKICAgICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXIgY29tcGxldGlvbkhhbmRsZXI7CiAgICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCiAgICAgdWludDY0X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VN
YXAoQ2hhbGxlbmdlJiYpOwotICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKKyAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50
NjRfdD4gY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0
NzVkYzIuLjE5MjUzZTJiYWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhp
bGlhcnlQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5oCkBAIC02Miw2ICs2MiwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3Qg
ZGVzdGluYXRpb25JRCk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5j
ZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQs
IElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB7CisgICAgICAgIGFkZE1lc3Nh
Z2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCks
IHJlY2VpdmVyKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAg
dm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAgIHsKKyAg
ICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0
aW9uSUQudG9VSW50NjQoKSk7CisgICAgfQogCiAgICAgdm9pZCBzZXRQcm9jZXNzU3VwcHJlc3Np
b25FbmFibGVkKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0
SW5wdXRDb250ZXh0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgK
aW5kZXggNGY3NWZkODA2ZjYuLjU0ZDQyNzdiODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9UZXh0SW5wdXRDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4
dElucHV0Q29udGV4dC5oCkBAIC0yOSwxMyArMjksMTQgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWxlbWVudElkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBUZXh0SW5wdXRD
b250ZXh0IHsKICAgICBXZWJDb3JlOjpGbG9hdFJlY3QgYm91bmRpbmdSZWN0OwogCi0gICAgdWlu
dDY0X3Qgd2ViUGFnZUlkZW50aWZpZXI7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2Vi
UGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyIGRvY3VtZW50
SWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpFbGVtZW50SWRlbnRpZmllciBlbGVtZW50SWRlbnRp
ZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRM
aXN0SXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVt
LmNwcAppbmRleCA5ZGJiMzZhNDU1My4uZDkwMGExNjczM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxXZWJC
YWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0Zv
cndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBw
YWdlSUQpCitSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRl
bTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUp
LCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRM
aXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZNb3Zl
KGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAg
LCBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nlc3NJ
ZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zvcndh
cmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oCmluZGV4IDg3MmVmMTgwOTVkLi5iYTM0NDgwY2Q1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2Vzc2lvblN0YXRlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNDYs
NyArNDcsNyBAQCBjbGFzcyBTdXNwZW5kZWRQYWdlUHJveHk7CiAKIGNsYXNzIFdlYkJhY2tGb3J3
YXJkTGlzdEl0ZW0gOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpC
YWNrRm9yd2FyZExpc3RJdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJCYWNrRm9y
d2FyZExpc3RJdGVtPiBjcmVhdGUoQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90
IHBhZ2VJRCk7CisgICAgc3RhdGljIFJlZjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBjcmVhdGUo
QmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAg
ICB2aXJ0dWFsIH5XZWJCYWNrRm9yd2FyZExpc3RJdGVtKCk7CiAKICAgICBzdGF0aWMgV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSogaXRlbUZvcklEKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRl
bUlkZW50aWZpZXImKTsKQEAgLTU0LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgY29uc3QgV2Vi
Q29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKCkgY29uc3QgeyByZXR1cm4g
bV9pdGVtU3RhdGUuaWRlbnRpZmllcjsgfQogICAgIGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSYgaXRlbVN0YXRlKCkgeyByZXR1cm4gbV9pdGVtU3RhdGU7IH0KLSAgICB1aW50NjRfdCBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICAgICBXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllciBsYXN0UHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcjsgfQogICAgIHZvaWQgc2V0TGFzdFByb2Nlc3NJZGVu
dGlmaWVyKGNvbnN0IFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IG1f
bGFzdFByb2Nlc3NJZGVudGlmaWVyID0gaWRlbnRpZmllcjsgfQpAQCAtODEsMTIgKzgyLDEyIEBA
IHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIHVpbnQ2NF90IHBhZ2VJRCk7Cisg
ICAgZXhwbGljaXQgV2ViQmFja0ZvcndhcmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCByZW1vdmVTdXNwZW5k
ZWRQYWdlRnJvbVByb2Nlc3NQb29sKCk7CiAKICAgICBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUg
bV9pdGVtU3RhdGU7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxTdXNwZW5kZWRQYWdlUHJveHk+IG1fc3Vz
cGVuZGVkUGFnZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IGU5ZGE2MGFlZWJlLi42OTk0ODI1ZDA4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUo
SVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdXNlckFnZW50Owog
ICAgIGVuY29kZXIgPDwgaXRlbVN0YXRlczsKICAgICBlbmNvZGVyIDw8IHNlc3Npb25JRDsKLSAg
ICBlbmNvZGVyIDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklELnRvVUludDY0KCk7CisgICAgZW5j
b2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJRDsKICAgICBlbmNvZGVyIDw8IHZpc2l0ZWRM
aW5rVGFibGVJRDsKICAgICBlbmNvZGVyIDw8IHdlYnNpdGVEYXRhU3RvcmVJRDsKICAgICBlbmNv
ZGVyIDw8IGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKQEAgLTE5MywxMSArMTkzLDEx
IEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJh
bWV0ZXJzLnNlc3Npb25JRCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICBP
cHRpb25hbDx1aW50NjRfdD4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBP
cHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllcjsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgcGFyYW1ldGVycy51c2VyQ29udGVudENvbnRy
b2xsZXJJRCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXJUeXBlPigqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcik7CisgICAgcGFyYW1l
dGVycy51c2VyQ29udGVudENvbnRyb2xsZXJJRCA9ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnZpc2l0ZWRMaW5r
VGFibGVJRCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC0zOTIsNyArMzkyLDcg
QEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
ICAgICBwYXJhbWV0ZXJzLmJhY2tncm91bmRDb2xvciA9IFdURk1vdmUoKmJhY2tncm91bmRDb2xv
cik7CiAKLSAgICBPcHRpb25hbDxPcHRpb25hbDx1aW50NjRfdD4+IG9sZFBhZ2VJRDsKKyAgICBP
cHRpb25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IG9sZFBhZ2VJRDsKICAgICBkZWNvZGVy
ID4+IG9sZFBhZ2VJRDsKICAgICBpZiAoIW9sZFBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuaAppbmRleCBjMmJlODQxNDZiMy4uOTAxMjdiYzMxMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91
dE1pbGVzdG9uZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRp
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Vc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6
Q29sb3I+IGJhY2tncm91bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdl
SUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3Jv
dXBEYXRhLmNwcAppbmRleCA5NjM5ZDAxNWMyZi4uNGQxY2NlYTY1NjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlBhZ2VHcm91cERhdGEuY3BwCkBAIC0zNCw3ICszNCw3IEBAIHZvaWQgV2Vi
UGFnZUdyb3VwRGF0YTo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAg
ICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CiAgICAgZW5jb2RlciA8PCBwYWdlR3JvdXBJRDsKLSAg
ICBlbmNvZGVyIDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIudG9VSW50NjQoKTsK
KyAgICBlbmNvZGVyIDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiB9CiAKIE9w
dGlvbmFsPFdlYlBhZ2VHcm91cERhdGE+IFdlYlBhZ2VHcm91cERhdGE6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIpCkBAIC00OSwxMiArNDksMTIgQEAgT3B0aW9uYWw8V2ViUGFnZUdyb3Vw
RGF0YT4gV2ViUGFnZUdyb3VwRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKICAg
ICBpZiAoIXBhZ2VHcm91cElEKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIAot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwor
ICAgIE9wdGlvbmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyOwogICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikK
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAgICByZXR1cm4ge3sgV1RGTW92
ZSgqaWRlbnRpZmllciksIFdURk1vdmUoKnBhZ2VHcm91cElEKSwgbWFrZU9iamVjdElkZW50aWZp
ZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllclR5cGU+KCp1c2VyQ29udGVudENvbnRy
b2xsZXJJZGVudGlmaWVyKSB9fTsKKyAgICByZXR1cm4ge3sgV1RGTW92ZSgqaWRlbnRpZmllciks
IFdURk1vdmUoKnBhZ2VHcm91cElEKSwgKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIg
fX07CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21h
Yy9PYmpDT2JqZWN0R3JhcGgubW0KaW5kZXggYzY1NDg0ZjU1MTIuLmZlNjZkZTY1OTJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KQEAgLTI5OCwxMSAr
Mjk4LDEyIEBAIGJvb2wgT2JqQ09iamVjdEdyYXBoOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBSZXRhaW5QdHI8aWQ+JiByZXN1bHQpCiAgICAgfQogCiAgICAgY2FzZSBPYmpDVHlwZTo6
V0tCcm93c2luZ0NvbnRleHRIYW5kbGU6IHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOwotICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VJRCkpCisgICAgICAgIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgICAgIGRlY29kZXIgPj4gcGFnZUlEOwor
ICAgICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0
V2l0aFBhZ2VJRDpwYWdlSURdKTsKKyAgICAgICAgcmVzdWx0ID0gYWRvcHROUyhbW1dLQnJvd3Np
bmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdpdGhQYWdlSUQ6KnBhZ2VJRF0pOwogICAgICAg
ICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3Bw
CmluZGV4IGVkODYzNTgyMDFiLi41OTcwMWExMzQzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuY3BwCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIGNvbnN0IFdLUGFnZUxvYWRlckNsaWVu
dEJhc2UqCiAgICAgICAgIG1pbGVzdG9uZXMuYWRkKFdlYkNvcmU6OkRpZEZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dCk7CiAKICAgICBpZiAobWlsZXN0b25lcykKLSAgICAgICAgd2ViUGFnZVBy
b3h5LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWls
ZXN0b25lcyhtaWxlc3RvbmVzKSwgd2ViUGFnZVByb3h5LT5wYWdlSUQoKSk7CisgICAgICAgIHdl
YlBhZ2VQcm94eS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0
b25lcyhtaWxlc3RvbmVzKSk7CiAKICAgICB3ZWJQYWdlUHJveHktPnNldExvYWRlckNsaWVudChX
VEZNb3ZlKGxvYWRlckNsaWVudCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAxMDc1
NzgxYWYyYy4uMmY5Y2ZlOTQyNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC01NCw2ICs1
NCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTdHJpbmcgQXV0b21hdGlvbkNvbW1hbmRFcnJv
cjo6dG9Qcm90b2NvbFN0cmluZygpCiB7CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFt
ZVByb3h5JiBmcmEKICAgICB9CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3Bv
bmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+
PiYgbWFwKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VO
YXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVm
UHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCiB7
CiAgICAgSW5zcGVjdG9yOjpFcnJvclN0cmluZyB0aW1lb3V0RXJyb3IgPSBTVFJJTkdfRk9SX1BS
RURFRklORURfRVJST1JfTkFNRShUaW1lb3V0KTsKICAgICBmb3IgKGF1dG8gaWQgOiBjb3B5VG9W
ZWN0b3IobWFwLmtleXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCA2NWViM2U0NmU1Yi4u
ZjM5YzA2MWI1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJTaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXIuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0yMjUsNyArMjI2LDcg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25QYWdl
KFdlYlBhZ2VQcm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2Fk
U3RyYXRlZ3ksIFNlY29uZHMsIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2U+JiYpOwogICAgIHZvaWQgd2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFt
ZShXZWJGcmFtZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxv
YWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNh
bGxiYWNrQmFzZT4mJik7Ci0gICAgdm9pZCByZXNwb25kVG9QZW5kaW5nUGFnZU5hdmlnYXRpb25D
YWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mKTsKKyAgICB2b2lkIHJlc3BvbmRUb1Bl
bmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2U+PiYpOwogICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ0ZyYW1lTmF2aWdhdGlvbkNh
bGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOwogICAgIHZvaWQgbG9hZFRpbWVyRmly
ZWQoKTsKIApAQCAtMjgwLDIyICsyODEsMjIgQEAgcHJpdmF0ZToKICAgICBSZWY8SW5zcGVjdG9y
OjpBdXRvbWF0aW9uQmFja2VuZERpc3BhdGNoZXI+IG1fZG9tYWluRGlzcGF0Y2hlcjsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVyPiBt
X2RvbWFpbk5vdGlmaWVyOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYlBh
Z2VIYW5kbGVNYXA7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hhbmRsZVdlYlBh
Z2VNYXA7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3RyaW5nPiBtX3dl
YlBhZ2VIYW5kbGVNYXA7CisgICAgSGFzaE1hcDxTdHJpbmcsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBtX2hhbmRsZVdlYlBhZ2VNYXA7CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+
IG1fd2ViRnJhbWVIYW5kbGVNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHVpbnQ2NF90PiBtX2hh
bmRsZVdlYkZyYW1lTWFwOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmln
YXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7Ci0gICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+
IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFn
ZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdh
dGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6
Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRD
YWxsYmFja3NQZXJQYWdlOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0
aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJGcmFtZTsKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4g
bV9wZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJGcmFt
ZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJhY2tzUGVyUGFnZTsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nSW5zcGVjdG9yQ2FsbGJh
Y2tzUGVyUGFnZTsKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVSQUNUSU9OUykK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25D
b21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1Bl
clBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9p
ZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2
ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdFQkRSSVZF
Ul9NT1VTRV9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9p
ZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50
c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4g
bV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsKICNlbmRpZgogCiAg
ICAgdWludDY0X3QgbV9uZXh0RXZhbHVhdGVKYXZhU2NyaXB0Q2FsbGJhY2tJRCB7IDEgfTsKQEAg
LTMxOSw3ICszMjAsNyBAQCBwcml2YXRlOgogICAgIC8vIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
ciBBUElzIHRha2UgYSBzZXQgb2YgaW5wdXQgc291cmNlcy4gV2UgYWxzbyBpbnRlcm4gdGhlc2UK
ICAgICAvLyBzbyB0aGF0IHByZXZpb3VzIGlucHV0IHNvdXJjZSBzdGF0ZSBpcyB1c2VkIGFzIGlu
aXRpYWwgc3RhdGUgZm9yIGxhdGVyIGNvbW1hbmRzLgogICAgIEhhc2hTZXQ8UmVmPFNpbXVsYXRl
ZElucHV0U291cmNlPj4gbV9pbnB1dFNvdXJjZXM7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
PFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKKyAg
ICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8U2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFdF
QkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCiAgICAgLy8gS2VlcCB0cmFjayBvZiBjdXJy
ZW50bHkgYWN0aXZlIG1vZGlmaWVycyBhY3Jvc3MgbXVsdGlwbGUga2V5c3Ryb2tlcy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5kZXggOTg5
M2QzOThiNTcuLjRjNmIzZDQyMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNTEsNiArNTEsMTIgQEAgcHVibGljOgogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVu
YW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9
IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsg
fSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5k
V2l0aEFzeW5jUmVwbHkoVCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmKTsK
KyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2Vu
ZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25T
ZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBzZW5kKFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgc2Vu
ZE9wdGlvbnMpOworICAgIH0KIAogICAgIElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbigpIGNv
bnN0CiAgICAgewpAQCAtNjcsNiArNzMsMTggQEAgcHVibGljOgogICAgIHZvaWQgYWRkTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAgdm9pZCByZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CisgICAgCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpT
dHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBk
ZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAg
ICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25J
RC50b1VJbnQ2NCgpLCByZWNlaXZlcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJl
bmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25J
RCkKKyAgICB7CisgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJO
YW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgIH0KIAogICAgIGVudW0gY2xhc3Mg
U3RhdGUgewogICAgICAgICBMYXVuY2hpbmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXgg
ZjA1ZDc5YzBkMDEuLjY3MDY1OTc2ODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC01
MjcsOTQgKzUyNyw5NCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxl
Q29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90IGNvbgogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6UGxheShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9n
Z2xlUGxheVN0YXRlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNv
bnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5T
Y3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRT
Y3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElk
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVp
bnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xlcmFuY2VCZWZvcmUsIGRv
dWJsZSB0b2xlcmFuY2VBZnRlcikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xlcmFuY2VC
ZWZvcmUsIHRvbGVyYW5jZUFmdGVyKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJ
ZCwgdGltZSwgdG9sZXJhbmNlQmVmb3JlLCB0b2xlcmFuY2VBZnRlcikpOwogfQogCiB2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBk
b3VibGUgdGltZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OkZhc3RTZWVrKGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNl
ZWsoY29udGV4dElkLCB0aW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5n
Rm9yd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNv
bnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5T
Y2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5k
U2Nhbm5pbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qg
aW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpTZWxlY3RBdWRpb01lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVp
bnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
Y29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KGNvbnRleHRJZCwgaW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVy
ZUluUGljdHVyZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1cmVJblBpY3R1
cmUoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0
b2dnbGVNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6c2V0TXV0ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIG11dGVk
KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2V0TXV0ZWQoY29udGV4dElkLCBtdXRlZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4
dElkLCBtdXRlZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0
Vm9sdW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0
SWQsIHZvbHVtZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQbGF5aW5nT25TZWNv
bmRTY3JlZW4odWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewogICAgIGlmIChtX3Bh
Z2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6U2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpTZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVt
ZW50SUQoKQogewogICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250
cm9sbGVkRWxlbWVudElEUmVxdWVzdChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OkhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNN
YW5hZ2VyQ29udGV4dElkKSk7CiB9CiAKIFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggNmJhNDc5ZTA2MGEuLmM4ZDY1YzM2MmFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC02MjAsNDMgKzYyMCw0MyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKHVpbnQ2NF90
IGNvbnRleHRJZCkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RG
dWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1l
bnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlh
KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
UmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZp
bmlzaGVkV2l0aE1lZGlhKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRl
SW5saW5lUmVjdChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVS
ZWN0KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
cmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0Nv
bnRlbnRMYXllcihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRM
YXllcihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OnJldHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29u
dGVudExheWVyKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5
ZXIoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpk
aWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNv
bnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVu
KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OkRpZEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxz
Y3JlZW4oY29udGV4dElkKSk7CiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVy
RnVsbHNjcmVlbigpOwogfQogCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
ICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkg
cmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0
cik7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpE
aWRDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBG
dWxsc2NyZWVuKGNvbnRleHRJZCkpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRNb2RlKEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIHJlbW92ZUNsaWVu
dEZvckNvbnRleHQoY29udGV4dElkKTsKQEAgLTY4OCwyNSArNjg4LDI1IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4
dElkLCBXZWJDb3JlCiAgICAgICAgIG1hY2hfcG9ydF9uYW1lX3QgZmVuY2VQb3J0ID0gZmVuY2VT
ZW5kUmlnaHQubGVha1NlbmRSaWdodCgpOwogI2VuZGlmCiAKLSAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5j
ZWQoY29udGV4dElkLCBmcmFtZSwgSVBDOjpBdHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0df
VFlQRV9NT1ZFX1NFTkQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVu
Y2VkKGNvbnRleHRJZCwgZnJhbWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNH
X1RZUEVfTU9WRV9TRU5EKSkpOwogICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jh
dml0eUVudW0oY29udGV4dElkLCAodW5zaWduZWQpZ3Jhdml0eSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0
VmlkZW9MYXllckdyYXZpdHlFbnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpKTsKIH0K
IAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIG1fcGFnZS0+dWlDbGllbnQoKS5oYXNWaWRl
b0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZShtX3BhZ2UsIG1vZGUgJiBNZWRpYVBsYXllckVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5n
ZWQoY29udGV4dElkLCBtb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQo
Y29udGV4dElkLCBtb2RlKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKQogewogICAg
IGJvb2wgaXNWaWV3VmlzaWJsZSA9IG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpOwotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJl
dHVyblRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVs
bHNjcmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSkpOwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBh
Z2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KaW5kZXggZjkxNDY4MTFjNTUuLmZjM2VmYmUyNmJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtMjAy
LDcgKzIwMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cEF0
TG9jYXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6UGVyZm9ybURpY3Rpb25hcnlMb29rdXBBdExvY2F0aW9uKHBvaW50KSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9uYXJ5
TG9va3VwQXRMb2NhdGlvbihwb2ludCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGVyZm9y
bURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKQpAQCAtMjEwLDcgKzIxMCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVj
dGlvbigpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EaWN0aW9u
YXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpQZXJmb3JtRGljdGlvbmFyeUxvb2t1cE9mQ3VycmVudFNlbGVjdGlvbigp
KTsKIH0KICAgICAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQpAQCAtMjY2LDE3ICsyNjYsMTcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlc3VtZVNwZWFraW5nKFdlYkNvcmU6OlBsYXRmb3JtU3Bl
ZWNoU3ludGhlc2lzVXR0ZXJhbmNlJikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNwZWFraW5nRXJy
b3JPY2N1cnJlZChXZWJDb3JlOjpQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSYpCiB7
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNwZWFraW5nRXJyb3JPY2N1
cnJlZCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3BlYWtpbmdF
cnJvck9jY3VycmVkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Ym91bmRhcnlFdmVudE9j
Y3VycmVkKFdlYkNvcmU6OlBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlJiwgV2ViQ29y
ZTo6U3BlZWNoQm91bmRhcnkgc3BlZWNoQm91bmRhcnksIHVuc2lnbmVkIGNoYXJJbmRleCkKIHsK
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Qm91bmRhcnlFdmVudE9jY3Vy
cmVkKHNwZWVjaEJvdW5kYXJ5ID09IFdlYkNvcmU6OlNwZWVjaEJvdW5kYXJ5OjpTcGVlY2hXb3Jk
Qm91bmRhcnksIGNoYXJJbmRleCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpCb3VuZGFyeUV2ZW50T2NjdXJyZWQoc3BlZWNoQm91bmRhcnkgPT0gV2ViQ29yZTo6U3Bl
ZWNoQm91bmRhcnk6OlNwZWVjaFdvcmRCb3VuZGFyeSwgY2hhckluZGV4KSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojp2b2ljZXNEaWRDaGFuZ2UoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpWb2ljZXNEaWRDaGFuZ2UoKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlZvaWNlc0RpZENoYW5nZSgpKTsKIH0KICNlbmRpZiAvLyBFTkFC
TEUoU1BFRUNIX1NZTlRIRVNJUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5tbQppbmRleCAyYWE3NDhmMDA0Zi4uMDhhM2QzMDhkM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xOTk3LDEzICsxOTk3
LDEzIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjppbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcigpIGNv
bnN0CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKCkKIHsKLSAg
ICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0Rp
ZE9yZGVyT2ZmU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2
aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNj
cmVlbiIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5h
Y3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
LCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9KTsKIH0KIAogdm9pZCBX
ZWJWaWV3SW1wbDo6d2luZG93RGlkT3JkZXJPblNjcmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2aXR5
U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVu
IiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJW
aWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9w
YWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCkBAIC0yMDcxLDcgKzIwNzEsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRDaGFuZ2VMYXllckhvc3RpbmcoKQogCiB2b2lkIFdl
YlZpZXdJbXBsOjp3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSgpCiB7Ci0gICAgTE9HKEFj
dGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VP
Y2NsdXNpb25TdGF0ZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0
eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdlT2NjbHVz
aW9uU3RhdGUiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFn
ZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2li
bGUpOwogfQogCkBAIC0yMjM0LDE5ICsyMjM0LDE5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdE
aWRDaGFuZ2VCYWNraW5nUHJvcGVydGllcygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRI
aWRlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVs
bHUpIHZpZXdEaWRIaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2
aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkSGlkZSIsIHRoaXMs
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQg
V2ViVmlld0ltcGw6OnZpZXdEaWRVbmhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAi
V2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2Ug
JWxsdSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7
CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlkQ2hh
bmdlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVs
bHUpIGFjdGl2ZVNwYWNlRGlkQ2hhbmdlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
TE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSBhY3RpdmVTcGFj
ZURpZENoYW5nZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9w
YWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlz
aWJsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdB
cmVhUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5j
cHAKaW5kZXggYjViNGUwYWQyMjEuLmVjZjVkYTBhOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIERyYXdpbmdB
cmVhUHJveHk6OkRyYXdpbmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdlYlBhZ2VQ
cm94eSYgd2ViUGFnZVByCiAgICAgLCBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcihSdW5M
b29wOjptYWluKCksIHRoaXMsICZEcmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFu
Z2VkVGltZXJGaXJlZCkKICNlbmRpZgogewotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRl
bnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
ZGVudGlmaWVyLCAqdGhpcyk7CiB9CiAKIERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVBy
b3h5KCkKIHsKLSAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpE
cmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpE
cmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9
CiAKIGJvb2wgRHJhd2luZ0FyZWFQcm94eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBj
b25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggY2E3Njg3ZjZiNTIuLmI5MzAxMjg1OTg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtNjIsNyArNjIsNyBAQCB2b2lkIEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBl
cm1pc3Npb25EZQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoR0VPTE9DQVRJT04pCi0g
ICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlR2Vv
bG9jYXRpb25QZXJtaXNzaW9uRGVjaXNpb24oZ2VvbG9jYXRpb25JRCwgYWxsb3dlZCksIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2Vp
dmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbihnZW9sb2NhdGlvbklELCBhbGxvd2VkKSk7
CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShhbGxvd2VkKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwCmluZGV4IDYyYjA3Mjlm
OGE1Li4wZjQxMDIwZWE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yVGFyZ2V0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3RvclRhcmdldFByb3h5LmNwcApAQCAtNTAsMTkgKzUwLDE5IEBAIEluc3BlY3RvclRhcmdldFBy
b3h5OjpJbnNwZWN0b3JUYXJnZXRQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIGNvbnN0IFN0cmlu
ZyYgdGFyCiB2b2lkIEluc3BlY3RvclRhcmdldFByb3h5Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsJiBjaGFubmVsKQogewogICAgIGlmIChtX3BhZ2UuaGFzUnVubmluZ1Byb2Nl
c3MoKSkKLSAgICAgICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
b25uZWN0SW5zcGVjdG9yKGlkZW50aWZpZXIoKSwgY2hhbm5lbC5jb25uZWN0aW9uVHlwZSgpKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkNvbm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpLCBjaGFubmVsLmNvbm5lY3Rpb25UeXBlKCkp
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JUYXJnZXRQcm94eTo6ZGlzY29ubmVjdChJbnNwZWN0b3I6
OkZyb250ZW5kQ2hhbm5lbCYpCiB7CiAgICAgaWYgKG1fcGFnZS5oYXNSdW5uaW5nUHJvY2Vzcygp
KQotICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpc2Nv
bm5lY3RJbnNwZWN0b3IoaWRlbnRpZmllcigpKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpc2Nvbm5lY3RJbnNwZWN0b3IoaWRlbnRp
ZmllcigpKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yVGFyZ2V0UHJveHk6OnNlbmRNZXNzYWdlVG9U
YXJnZXRCYWNrZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBpZiAobV9wYWdlLmhh
c1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2VuZE1lc3NhZ2VUb1RhcmdldEJhY2tlbmQoaWRlbnRpZmllcigpLCBtZXNz
YWdlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNlbmRNZXNzYWdlVG9UYXJnZXRCYWNrZW5kKGlkZW50aWZpZXIoKSwgbWVzc2FnZSkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM0NDNiMzg1
ZmFjLi4yZDk5NjZlM2M4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcyhjb25zdCBJUEM6OkF0dGEKICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNo
YWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29y
ZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQogICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbV9wcm9j
ZXNzUG9vbC5zZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChwYWdlSUQpKSB7CkBA
IC0zNzEsNyArMzcxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVu
Y2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb24KICNlbmRpZgogfQogCi12
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9j
ZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxs
LWNoZWNrIGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0
aGUgcGFnZSBtYXkgYmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBA
IC0zODIsNyArMzgyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGlj
TWVzc2FnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWUKICAgICBwYWdlLT5sb2dE
aWFnbm9zdGljTWVzc2FnZShtZXNzYWdlLCBkZXNjcmlwdGlvbiwgc2hvdWxkU2FtcGxlKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1
bHQodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3Vs
ZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJv
Y2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVs
bC1jaGVjayBiZWNhdXNlIGJ5IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwg
dGhlIHBhZ2UgbWF5IGJlIGdvbmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApA
QCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QKICAgICBwYWdlLT5sb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQobWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwg
c2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9z
dGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWdu
aWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRl
c2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBh
Z2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2Ug
ZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxv
ZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkgYmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2
b2lkIHRoaXMsCkBAIC03MzYsNyArNzM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpz
ZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXMKICAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRHcmFuZGZh
dGhlcmVkKHNlc3Npb25JRCwgcmVzb3VyY2VEb21haW4sIGlzR3JhbmRmYXRoZXJlZCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MDgs
NyArOTA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpub3RpZnlSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQKICAgICBXZWJQcm9jZXNzUHJveHk6
Om5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpEaWN0aW9uYXJ5Ojpj
cmVhdGUobWVzc2FnZUJvZHkpLnB0cigpKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNh
blNlbmRNZXNzYWdlKCkpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
aW5kZXggMjBhNzk5OGM0ZGMuLjJiZWM2OGZkODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCArODEs
NiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRf
dDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWlu
dDY0X3Q7CiAKICAgICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29s
Jik7CkBAIC0xMzEsNyArMTI5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVz
b3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxl
bnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmlu
Zz4gZG9tYWlucyk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBh
Z2VJRCwgRnJhbWVJRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3NDb25maXJtKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1
ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklE
LCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0
aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFM
OjpTZXNzaW9uSUQsIGJvb2wgZGVidWdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1Jl
bW92YWwoUEFMOjpTZXNzaW9uSUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6
U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29tbWl0
dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3Qg
TmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRl
TG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJv
bURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2
aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0Rl
Y29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJpdmF0
ZToKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1By
b2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAg
dm9pZCBkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0
dGFjaG1lbnQmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hh
bGxlbmdlSUQpOwogICAgIHZvaWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFj
a0lELCBjb25zdCBXZWJzaXRlRGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEo
dWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9y
aWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2Fn
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3Jp
cHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50Rmln
dXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdub3N0
aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5n
JiBldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGYu
LjIyZmZmZDE5ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsy
Myw3IEBACiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkF0dGFjaG1l
bnQgY29ubmVjdGlvbklkZW50aWZpZXIpCiAKLSAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQorICAg
IERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNp
dGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdl
YnNpdGVEYXRhKQogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CkBAIC0zNSw5ICszNSw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5
UmVjZWl2ZXIgewogICAgIFNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9j
a2VkRmlsZXMpCiAKICAgICAjIERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZwotICAgIExvZ0Rp
YWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBk
ZXNjcmlwdGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUp
Ci0gICAgTG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3Ry
aW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBlbnVtOmJv
b2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcg
ZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBl
bnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dEaWFn
bm9zdGljTWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNz
YWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQorICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRp
b24sIHVpbnQzMl90IHJlc3VsdCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91
bGRTYW1wbGUpCisgICAgTG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBk
b3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiAgICAgTG9nR2xvYmFsRGlhZ25vc3RpY01l
c3NhZ2VXaXRoVmFsdWUoU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKQEAgLTQ2LDcgKzQ2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94
eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluc0ZpbmlzaGVkKCkKICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdp
c3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNp
Z25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVk
IHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKQotICAgIFJlcXVlc3RTdG9yYWdlQWNj
ZXNzQ29uZmlybSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYworICAg
IFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1l
RG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJv
b2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVBy
b2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRp
b25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluPiBkb21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCBmODc2MWIx
ZjNmNC4uM2YyODczMmFiNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05v
dGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC01MCw3ICs1MCw3IEBAIFJlZjxO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmNyCiB7CiAgICAgYXV0byByZXF1ZXN0ID0gTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3Q6OmNyZWF0ZShbdGhpcywgbm90aWZpY2F0aW9uSUQsIHBhZ2UgPSBtYWtl
UmVmKG1fcGFnZSldKGJvb2wgYWxsb3dlZCkgewogICAgICAgICBtX3BlbmRpbmdSZXF1ZXN0cy50
YWtlKG5vdGlmaWNhdGlvbklEKTsKLSAgICAgICAgcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVjaXNpb24obm90
aWZpY2F0aW9uSUQsIGFsbG93ZWQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIHBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJtaXNzaW9uRGVj
aXNpb24obm90aWZpY2F0aW9uSUQsIGFsbG93ZWQpKTsKICAgICB9KTsKICAgICBtX3BlbmRpbmdS
ZXF1ZXN0cy5hZGQobm90aWZpY2F0aW9uSUQsIHJlcXVlc3QucHRyKCkpOwogICAgIHJldHVybiBy
ZXF1ZXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZh
ZTFmM2ZjYTg4Li4yYWFmZjFlYzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewog
ICAgIHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmlj
YXRpb25JRCgpOwogICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVh
dGUodGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGds
b2JhbE5vdGlmaWNhdGlvbklEKTsKLSAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBu
b3RpZmljYXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFn
ZU5vdGlmaWNhdGlvbklEKTsKKyAgICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90
PiBub3RpZmljYXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwg
cGFnZU5vdGlmaWNhdGlvbklEKTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xv
YmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRp
b25zLnNldChub3RpZmljYXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNh
dGlvbklELCBub3RpZmljYXRpb24uY29weVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygq
d2ViUGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBh
Z2VQcm94eSogd2ViUGFnZSwKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90LCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JikKK3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90LCBQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBW
ZWN0b3I8dWludDY0X3Q+JikKIHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7
CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJ
RCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitz
dGF0aWMgYm9vbCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQ
YWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURz
KQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5v
dGlmaWNhdGlvbklEcy5jb250YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEz
ICsxNDEsMTMgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZp
Y2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2Us
IGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlv
bkZpbHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBh
Z2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOworICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFn
ZS0+cGFnZUlEKCk7CiAKICAgICBWZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklE
czsKICAgICBnbG9iYWxOb3RpZmljYXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90
aWZpY2F0aW9uTWFwLnNpemUoKSk7CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlv
bnMuYmVnaW4oKSwgZW5kID0gbV9ub3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQp
IHsKLSAgICAgICAgdWludDY0X3Qgd2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAg
YXV0byB3ZWJQYWdlSUQgPSBpdC0+a2V5LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90
aWZpY2F0aW9uSUQgPSBpdC0+a2V5LnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlv
bih3ZWJQYWdlSUQsIHBhZ2VOb3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZp
Y2F0aW9uSURzKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZv
aWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRp
b24odWludDY0X3QgZ2xvYmFsTm90CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9u
TWFwLmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBp
dC0+dmFsdWUuZmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAg
ICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBh
Z2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1
LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tO
b3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3Rp
ZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3
ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFs
dWUuZmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3
ZWJQYWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNS4uMTE1
NzgxZTQzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYkNv
bnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25DbGllbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTc4LDcgKzc5
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNh
dGlvbkZpbHRlckZ1bmN0aW9uKSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmlj
YXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
ZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOworICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNh
dGlvbkZpbHRlckZ1bmN0aW9uKShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2
NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZGVzaXJlZFBh
Z2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMp
OwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0
aW9uKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CkBAIC04OCw5ICs4OSw5IEBAIHBy
aXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4g
bV9wcm92aWRlcjsKICAgICAvLyBQYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhl
IHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElECi0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3Rk
OjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOworICAg
IEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWlu
dDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKICAgICAvLyBLZXkgcGFpciBjb21wcmlz
ZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsg
dmFsdWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlm
aWNhdGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+
LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmlj
YXRpb25zOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1
aW50NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBt
X25vdGlmaWNhdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA0NWExZjBm
NWI1Yy4uNTczZWNjYzA5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5pc0Fsd2F5
c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6
OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihtX3BhZ2Uu
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIApAQCAtNjEsMTYgKzYzLDE2IEBA
IFByb3Zpc2lvbmFsUGFnZVByb3h5OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkm
IHBhZ2UsIFJlZjxXZWJQcm9jZXNzUHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmZvcmVncm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lv
bmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1
NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKSwgbmF2aWdhdGlvbklELCBz
dXNwZW5kZWRQYWdlLmdldCgpKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQg
IiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIHBhZ2VJRCgp
LnRvVUludDY0KCksIG5hdmlnYXRpb25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKLSAgICBt
X3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSwgKnRoaXMpOworICAgIG1fcHJvY2Vz
cy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgcGFnZUlEKCksICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lv
bmFsUGFnZVByb3h5KCp0aGlzKTsKIAogICAgIGlmIChtX3Byb2Nlc3MtPnN0YXRlKCkgPT0gQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpTdGF0ZTo6UnVubmluZykKICAgICAgICAgbV9wYWdlLndlYlBy
b2Nlc3NMaWZldGltZVRyYWNrZXIoKS53ZWJQYWdlRW50ZXJpbmdXZWJQcm9jZXNzKG1fcHJvY2Vz
cyk7CiAKICAgICBpZiAoJm1fcHJvY2Vzcy0+d2Vic2l0ZURhdGFTdG9yZSgpICE9ICZtX3BhZ2Uu
d2Vic2l0ZURhdGFTdG9yZSgpKQotICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFn
ZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5wYWdlSUQoKSwgbV9wcm9jZXNzLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkucGFn
ZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHBhZ2VJRCgpLCBtX3Byb2Nlc3MtPndlYnNpdGVE
YXRhU3RvcmUoKSk7CiAKICAgICAvLyBJZiB3ZSBhcmUgcmVhdHRhY2hpbmcgdG8gYSBTdXNwZW5k
ZWRQYWdlLCB0aGVuIHRoZSBXZWJQcm9jZXNzJyBXZWJQYWdlIGFscmVhZHkgZXhpc3RzIGFuZAog
ICAgIC8vIFdlYlBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKCkgd2lsbCBub3QgYmUgY2Fs
bGVkIHRvIGluaXRpYWxpemUgbV9tYWluRnJhbWUuIEluIHN1Y2gKQEAgLTk3LDE3ICs5OSwyMiBA
QCBQcm92aXNpb25hbFBhZ2VQcm94eTo6flByb3Zpc2lvbmFsUGFnZVByb3h5KCkKICAgICAgICAg
bV9wYWdlLndlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIoKS53ZWJQYWdlTGVhdmluZ1dlYlByb2Nl
c3MobV9wcm9jZXNzKTsKIAogICAgIGlmICgmbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkg
IT0gJm1fcGFnZS53ZWJzaXRlRGF0YVN0b3JlKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+cHJvY2Vz
c1Bvb2woKS5wYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKG1fcGFnZS5wYWdlSUQoKSwgbV9w
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCkpOworICAgICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQ
b29sKCkucGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShwYWdlSUQoKSwgbV9wcm9jZXNzLT53
ZWJzaXRlRGF0YVN0b3JlKCkpOwogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uu
cGFnZUlEKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2Uo
KSwgbV9wYWdlLnBhZ2VJRCgpKTsKLSAgICBtX3Byb2Nlc3MtPnJlbW92ZVZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKG1fcGFnZS52aXNpdGVkTGlua1N0b3JlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBwYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBwYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5yZW1v
dmVWaXNpdGVkTGlua1N0b3JlVXNlcihtX3BhZ2UudmlzaXRlZExpbmtTdG9yZSgpLCBwYWdlSUQo
KSk7CiAKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb2Nlc3MgPSBtX3Byb2Nlc3Mu
Y29weVJlZigpXSB7CiAgICAgICAgIHByb2Nlc3MtPm1heWJlU2h1dERvd24oKTsKICAgICB9KTsK
IH0KIAorUGFnZUlkZW50aWZpZXIgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnBhZ2VJRCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcGFnZS5wYWdlSUQoKTsKK30KKwogdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6Y29ubmVjdGlvbldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikK
IHsKICAgICBBU1NFUlRfVU5VU0VEKGNvbm5lY3Rpb24sICZjb25uZWN0aW9uID09IG1fcHJvY2Vz
cy0+Y29ubmVjdGlvbigpKTsKQEAgLTExNyw3ICsxMjQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5Ojpjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQog
CiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NE
aWRUZXJtaW5hdGU6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NEaWRU
ZXJtaW5hdGU6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgcGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAg
bV9wYWdlLnByb3Zpc2lvbmFsUHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogfQogCkBAIC0xMzIsNyAr
MTM5LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Y2FuY2VsKCkKICAgICBpZiAobV9w
cm92aXNpb25hbExvYWRVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBh
IGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSBmb3IgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAiY2FuY2VsOiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
IGZvciBwYWdlSUQgPSAlIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIEFTU0VS
VChtX21haW5GcmFtZSk7CiAgICAgYXV0byBlcnJvciA9IFdlYktpdDo6Y2FuY2VsbGVkRXJyb3Io
bV9yZXF1ZXN0KTsKICAgICBlcnJvci5zZXRUeXBlKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5
cGU6OkNhbmNlbGxhdGlvbik7CkBAIC0xNDUsMjAgKzE1MiwyMCBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiAKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBt
X3BhZ2UuY3JlYXRpb25QYXJhbWV0ZXJzKG1fcHJvY2VzcywgKm1fZHJhd2luZ0FyZWEpOwogICAg
IHBhcmFtZXRlcnMuaXNQcm9jZXNzU3dhcCA9IHRydWU7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzOjpDcmVhdGVXZWJQYWdlKG1fcGFnZS5wYWdlSUQoKSwgcGFyYW1l
dGVycyksIDApOwotICAgIG1fcHJvY2Vzcy0+YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIobV9wYWdl
LnZpc2l0ZWRMaW5rU3RvcmUoKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNyZWF0ZVdlYlBhZ2UocGFnZUlEKCksIHBhcmFtZXRl
cnMpLCAwKTsKKyAgICBtX3Byb2Nlc3MtPmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKG1fcGFnZS52
aXNpdGVkTGlua1N0b3JlKCksIHBhZ2VJRCgpKTsKIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYg
ZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBP
cHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJsb2FkRGF0YTogcGFnZUlEID0gJSIgUFJJdTY0LCBwYWdlSUQo
KS50b1VJbnQ2NCgpKTsKIAogICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGlu
ZywgYmFzZVVSTCwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1
ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZUlEID0gJSIg
UFJJdTY0LCBwYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGll
bnQtc2lkZSByZWRpcmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5l
dyBwcm9jZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNl
LAogICAgIC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nl
c3NJZGVudGlmaWVyIGFzIHdlIHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0Zv
cndhcmQgaXRlbSB0byBoYXBwZW4gaW4gdGhlCkBAIC0xNzEsNyArMTc4LDcgQEAgdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBXZWJDb3JlOjpSZXMKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3
YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mIGl0ZW0sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0Jh
Y2tGb3J3YXJkSXRlbTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJk
SXRlbTogcGFnZUlEID0gJSIgUFJJdTY0LCBwYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIGF1
dG8gaXRlbVN0YXRlcyA9IG1fcGFnZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1TdGF0
ZXMoW3RoaXMsIHRhcmdldEl0ZW0gPSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAgICAgICBpZiAo
YXV0byogcGFnZSA9IGl0ZW0uc3VzcGVuZGVkUGFnZSgpKSB7CkBAIC0xODAsOCArMTg3LDggQEAg
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIFdlYkIKICAgICAgICAgfQogICAgICAgICByZXR1cm4gJml0ZW0g
IT0gdGFyZ2V0SXRlbTsKICAgICB9KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvclJlYXR0YWNoKFdURk1vdmUoaXRlbVN0YXRl
cykpLCBtX3BhZ2UucGFnZUlEKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVt
Lml0ZW1JRCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgV2ViQ29y
ZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGlj
aWVzKSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVcGRhdGVCYWNrRm9yd2FyZExpc3RGb3JSZWF0dGFjaChXVEZNb3ZlKGl0ZW1TdGF0
ZXMpKSwgcGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R29Ub0JhY2tGb3J3YXJkSXRlbShuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBpdGVtLml0ZW1J
RCgpLCAqbmF2aWdhdGlvbi5iYWNrRm9yd2FyZEZyYW1lTG9hZFR5cGUoKSwgV2ViQ29yZTo6U2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSks
IHBhZ2VJRCgpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgp
OwogfQogCkBAIC0xOTYsNyArMjAzLDcgQEAgaW5saW5lIGJvb2wgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OnZhbGlkYXRlSW5wdXQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgT3B0aW9uYWwKIAogdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRD
cmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAg
ICAgQVNTRVJUKCFtX21haW5GcmFtZSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJv
eHk6OmNyZWF0ZShtX3BhZ2UsIGZyYW1lSUQpOwpAQCAtMjM0LDcgKzI0MSw3IEBAIHZvaWQgUHJv
dmlzaW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWluCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRp
b25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJ
dTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBu
YXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQsIG5h
dmlnYXRpb25JRCk7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsK
ICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHVybDsKIApAQCAtMjU0LDcgKzI2MSw3IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5h
dmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9u
SUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsK
KyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZEZh
aWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBwYWdlSUQoKS50b1VJbnQ2
NCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbExv
YWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogCkBAIC0y
NzAsOSArMjc3LDkgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmkKICAgICBpZiAoIXZhbGlkYXRl
SW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJh
bWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRp
b25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0
TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIHBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQs
IG5hdmlnYXRpb25JRCk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB7IH07Ci0gICAgbV9w
cm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgcGFnZUlEKCkpOwogCiAgICAgbV93YXNDb21taXR0ZWQgPSB0cnVlOwogICAgIG1f
cGFnZS5jb21taXRQcm92aXNpb25hbFBhZ2UoZnJhbWVJRCwgbmF2aWdhdGlvbklELCBtaW1lVHlw
ZSwgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIGZyYW1lTG9hZFR5cGUsIGNlcnRpZmlj
YXRlSW5mbywgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50
LCB1c2VyRGF0YSk7IC8vIFdpbGwgZGVsZXRlIHx0aGlzfC4KQEAgLTI5NSw3ICszMDIsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbgogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAorICAgIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcXVlc3QsCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRf
dCBsaXN0ZW5lcklEKQogewogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0
aW9uSUQpKQpAQCAtMzQxLDcgKzM0OCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmJh
Y2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlCiB9CiAK
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDY0NTZjMWY5MTZkLi5lMTRiYTg4OWE5YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC0yNiw2
ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgor
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgi
CiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTY1LDYgKzY2LDcgQEAgcHVibGljOgogICAgIH5Qcm92
aXNpb25hbFBhZ2VQcm94eSgpOwogCiAgICAgV2ViUGFnZVByb3h5JiBwYWdlKCkgeyByZXR1cm4g
bV9wYWdlOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3Q7CiAg
ICAgV2ViRnJhbWVQcm94eSogbWFpbkZyYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tYWluRnJhbWUu
Z2V0KCk7IH0KICAgICBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MoKSB7IHJldHVybiBtX3Byb2Nl
c3MuZ2V0KCk7IH0KICAgICBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQ7IH0KQEAgLTk0LDcgKzk2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCi0gICAg
ICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWlu
dDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTEwLDcg
KzExMiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1l
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0g
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAg
ICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAj
aWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCAwNTU5Yzk4NzRi
ZC4uNWIwMmRkYjI0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5Lm1tCkBAIC0xMTUsNyArMTE1LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcK
ICAgICBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29sKCkuc2V0UG9vbFNpemUoMCk7CiAjZW5kaWYK
IAotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiAKICAgICBpZiAobV93ZWJQYWdlUHJveHkucHJlZmVy
ZW5jZXMoKS50aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGUoKSkKICAgICAgICAgaW5pdGlh
bGl6ZURlYnVnSW5kaWNhdG9yKCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eShXZWJQYWdl
UHJveHkmIHcKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6On5SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5KCkKIHsKICAgICBtX2NhbGxiYWNrcy5pbnZhbGlkYXRlKENhbGxi
YWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwotICAgIHByb2Nlc3MoKS5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IHByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsK
IAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW21fZGlzcGxheUxpbmtIYW5kbGVyIGlu
dmFsaWRhdGVdOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0CiAg
ICAgfSgpOwogCiAgICAgYXV0byBzdGFydFRpbWUgPSBNb25vdG9uaWNUaW1lOjpub3coKTsKLSAg
ICB3aGlsZSAocHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRp
YXRlbHk8TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OkNvbW1pdExh
eWVyVHJlZT4obV9pZGVudGlmaWVyLnRvVUludDY0KCksIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1l
b3V0IC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKSwgSVBDOjpXYWl0Rm9yT3B0
aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKSB7CisgICAgd2hpbGUg
KHByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1l
c3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU+
KG1faWRlbnRpZmllciwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgLSAoTW9ub3RvbmljVGlt
ZTo6bm93KCkgLSBzdGFydFRpbWUpLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRp
bmdJZlN5bmNNZXNzYWdlQXJyaXZlcykpIHsKICAgICAgICAgaWYgKGFjdGl2aXR5U3RhdGVDaGFu
Z2VJRCA9PSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3VzIHx8IGFjdGl2aXR5U3RhdGVD
aGFuZ2VJRCA8PSBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0
b3JQcm94eS5jcHAKaW5kZXggNjY3OWQ0NWJkOTkuLjA4NmFlYjA3OTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC01
OSw3ICs1OSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQoY29uc3QgU3Ry
aW5nJiBkZWJ1Z2dhYmxlVHlwZSwgY29uc3QgU3RyaW5nJiBiCiAgICAgbV9kZWJ1Z2dhYmxlVHlw
ZSA9IGRlYnVnZ2FibGVUeXBlOwogICAgIG1fYmFja2VuZENvbW1hbmRzVVJMID0gYmFja2VuZENv
bW1hbmRzVVJMOwogCi0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkluaXRpYWxpemUoZGVidWdnYWJsZVR5cGUsIGJhY2tl
bmRDb21tYW5kc1VSTCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVj
dG9yUGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkluaXRpYWxpemUo
ZGVidWdnYWJsZVR5cGUsIGJhY2tlbmRDb21tYW5kc1VSTCkpOwogICAgIG1faW5zcGVjdG9yUGFn
ZS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFn
ZVVSTCgpKSk7CiB9CiAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6c2hvdygpCiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgbV9pbnNwZWN0b3JQYWdl
LT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OlNlbmRNZXNz
YWdlVG9Gcm9udGVuZChtZXNzYWdlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6U2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6ZnJvbnRlbmREaWRDbG9zZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDVhMTRmYmU0ZGNkLi5i
MmY3NzI5ZmQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVu
Y2VzU3RvcmUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5PiYmIGNoYWxsZW5nZSkKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYgY2hh
bGxlbmdlKQogewogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwogICAgIFVOVVNFRF9QQVJBTShm
cmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHkuaAppbmRleCA5MzI0NWYwZGM3Ni4uZTkzNjVhZmFjNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAg
LTQxLDE0ICs0MSwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBoYXNSZWdpc3RlcmVk
U2VydmljZVdvcmtlcnMoY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KTsKIAot
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYp
OworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eT4mJik7CiAKICAgICB2b2lkIHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
LCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCk7CiAgICAgdm9pZCBz
ZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0
b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIHsgcmV0dXJuIG1fcmVnaXN0cmFi
bGVEb21haW47IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZp
Y2VXb3JrZXJQYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBj
b25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0KIAogcHJpdmF0ZToKICAgICAv
LyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBT
ZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVpbnQ2NF90IG1fc2Vy
dmljZVdvcmtlclBhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3Nl
cnZpY2VXb3JrZXJQYWdlSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDEzNDZmY2Mw
NWM1Li5hZGY1YmJhOGNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuY3BwCkBAIC04OSwxMCArODksMTAgQEAgU3VzcGVuZGVkUGFnZVByb3h5OjpT
dXNwZW5kZWRQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYKICNlbmRpZgogewogICAgIG1fcHJvY2Vzcy0+aW5jcmVtZW50U3VzcGVuZGVkUGFnZUNvdW50
KCk7Ci0gICAgbV9wcm9jZXNzLT5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKKyAg
ICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIHBhZ2VJRCgpLCAqdGhpcyk7CiAKICAgICBtX3N1c3BlbnNp
b25UaW1lb3V0VGltZXIuc3RhcnRPbmVTaG90KHN1c3BlbnNpb25UaW1lb3V0KTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldElzU3VzcGVuZGVkKHRydWUpLCBtX3Bh
Z2UucGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
SXNTdXNwZW5kZWQodHJ1ZSksIHBhZ2VJRCgpKTsKIH0KIAogU3VzcGVuZGVkUGFnZVByb3h5Ojp+
U3VzcGVuZGVkUGFnZVByb3h5KCkKQEAgLTExMyw3ICsxMTMsNyBAQCBTdXNwZW5kZWRQYWdlUHJv
eHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQogICAgIGNsb3NlKCk7CiAKICAgICBpZiAobV9zdXNw
ZW5zaW9uU3RhdGUgPT0gU3VzcGVuc2lvblN0YXRlOjpTdXNwZW5kaW5nKQotICAgICAgICBtX3By
b2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgICAgIG1fcHJvY2Vzcy0+
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgcGFnZUlEKCkpOwogCiAgICAgLy8gV2UgY2FsbCBtYXliZVNodXREb3duKCkg
YXN5bmNocm9ub3VzbHkgc2luY2UgdGhlIFN1c3BlbmRlZFBhZ2UgaXMgY3VycmVudGx5IGJlaW5n
IHJlbW92ZWQgZnJvbSB0aGUgV2ViUHJvY2Vzc1Bvb2wKICAgICAvLyBhbmQgd2Ugd2FudCB0byBh
dm9pZCByZS1lbnRlcmluZyBXZWJQcm9jZXNzUG9vbCBtZXRob2RzLgpAQCAtMTIyLDYgKzEyMiwx
MSBAQCBTdXNwZW5kZWRQYWdlUHJveHk6On5TdXNwZW5kZWRQYWdlUHJveHkoKQogICAgIH0pOwog
fQogCitQYWdlSWRlbnRpZmllciBTdXNwZW5kZWRQYWdlUHJveHk6OnBhZ2VJRCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcGFnZS5wYWdlSUQoKTsKK30KKwogdm9pZCBTdXNwZW5kZWRQYWdlUHJv
eHk6OndhaXRVbnRpbFJlYWR5VG9VbnN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdXNw
ZW5kZWRQYWdlUHJveHkqKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAobV9yZWFk
eVRvVW5zdXNwZW5kSGFuZGxlcikKQEAgLTE0Nyw3ICsxNTIsNyBAQCB2b2lkIFN1c3BlbmRlZFBh
Z2VQcm94eTo6dW5zdXNwZW5kKCkKICAgICBBU1NFUlQobV9zdXNwZW5zaW9uU3RhdGUgPT0gU3Vz
cGVuc2lvblN0YXRlOjpTdXNwZW5kZWQpOwogCiAgICAgbV9zdXNwZW5zaW9uU3RhdGUgPSBTdXNw
ZW5zaW9uU3RhdGU6OlJlc3VtZWQ7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRJc1N1c3BlbmRlZChmYWxzZSksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJc1N1c3BlbmRlZChmYWxzZSksIHBhZ2VJ
RCgpKTsKIH0KIAogdm9pZCBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkKQEAgLTE1OSw3ICsx
NjQsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6Y2xvc2UoKQogCiAgICAgUkVMRUFTRV9M
T0coUHJvY2Vzc1N3YXBwaW5nLCAiJXAgLSBTdXNwZW5kZWRQYWdlUHJveHk6OmNsb3NlKCkiLCB0
aGlzKTsKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkNsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbG9zZSgpLCBwYWdlSUQoKSk7CiB9CiAKIHZvaWQgU3Vz
cGVuZGVkUGFnZVByb3h5OjpwYWdlRW50ZXJlZEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkK
QEAgLTIwMyw3ICsyMDgsNyBAQCB2b2lkIFN1c3BlbmRlZFBhZ2VQcm94eTo6ZGlkUHJvY2Vzc1Jl
cXVlc3RUb1N1c3BlbmQoU3VzcGVuc2lvblN0YXRlIG5ld1N1c3BlbnNpbwogICAgIG1fc3VzcGVu
c2lvblRva2VuID0gbnVsbHB0cjsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgcGFnZUlEKCkp
OwogCiAgICAgaWYgKG1fc3VzcGVuc2lvblN0YXRlID09IFN1c3BlbnNpb25TdGF0ZTo6RmFpbGVk
VG9TdXNwZW5kKQogICAgICAgICBjbG9zZVdpdGhvdXRGbGFzaGluZygpOwpAQCAtMjQ2LDcgKzI1
MSw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwKIAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFn
ZVByb3h5Ojpsb2dnaW5nU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmco
IigweCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQg
IiwgbV9wYWdlLnBhZ2VJRCgpLCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9zdXNwZW5zaW9uU3RhdGUpLCAnKScpOworICAgIHJldHVybiBkZWJ1Z1N0cmlu
ZygiKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSksICIgcGFnZSBJ
RCAiLCBwYWdlSUQoKS50b1VJbnQ2NCgpLCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4obV9zdXNwZW5zaW9uU3RhdGUpLCAnKScpOwogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmgKaW5kZXggMGRhZDA1
NGIyNzIuLjY4ZDYzODFiZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
dXNwZW5kZWRQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBy
b2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlICJXZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKQEAgLTQ2LDYgKzQ3LDcgQEAgcHVibGlj
OgogICAgIH5TdXNwZW5kZWRQYWdlUHJveHkoKTsKIAogICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZTsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCgpIGNvbnN0OwogICAgIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcygpIHsgcmV0dXJuIG1f
cHJvY2Vzcy5nZXQoKTsgfQogICAgIHVpbnQ2NF90IG1haW5GcmFtZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9tYWluRnJhbWVJRDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5jcHAKaW5kZXggOTcxMWIyMzM3MjEuLmFkNzgxZjZmODNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC03Myw3ICs3Myw3IEBAIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5Ojp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQogewogICAg
IHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsK
ICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBwcm9jZXNz
LT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVy
KCkpOwogICAgICAgICBwcm9jZXNzLT5kaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkoKnRoaXMpOwogICAgIH0KICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAt
ODUsNyArODUsNyBAQCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5KCkKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKG1fcHJvY2Vzc2VzLmFkZCgm
d2ViUHJvY2Vzc1Byb3h5KS5pc05ld0VudHJ5KQotICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSwgKnRoaXMpOwor
ICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlm
aWVyKCksICp0aGlzKTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRz
LmlzRW1wdHkoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZCA6IG1fdXNlckNvbnRlbnRX
b3JsZHMpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm8KICAgICBB
U1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMoJndlYlByb2Nlc3NQcm94eSkpOwogCiAgICAgbV9w
cm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNzUHJveHkpOwotICAgIHdlYlByb2Nlc3NQcm94eS5y
ZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVy
KCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29u
dGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCkBAIC0xMjYsNyArMTI2
LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRX
b3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXNl
ckNvbnRlbnRXb3JsZHMuYWRkKCZ3b3JsZCk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5
KSB7CiAgICAgICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
Ci0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsgc3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRp
ZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OkFkZFVzZXJDb250ZW50V29ybGRzKHsgc3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigp
LCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVudGlmaWVyKCkpOwogICAgIH0KIH0KIApAQCAtMTUwLDcg
KzE1MCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJD
b250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRXCiB7CiAgICAgaWYgKHNob3VsZFNlbmRS
ZW1vdmVVc2VyQ29udGVudFdvcmxkc01lc3NhZ2Uod29ybGQsIG51bWJlck9mVXNlc1RvUmVtb3Zl
KSkgewogICAgICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQotICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7
IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKICAgICB9CiB9CiAKQEAgLTE2
Myw3ICsxNjMsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVV
c2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZQogICAgIH0KIAogICAgIGZvciAo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRl
bnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkpOwogfQog
CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6
VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5IGltbWVk
aWF0ZWx5KQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBJCiAgICAg
bV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3JpcHQpOwogCiAgICAgZm9y
IChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0
cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJT
Y3JpcHQudXNlclNjcmlwdCgpIH0gfSwgaW1tZWRpYXRlbHkpLCBpZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3Js
ZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5
KSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCkBAIC0xODMs
NyArMTgzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNl
clNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQKICAgICBSZWY8QVBJOjpVc2VyQ29u
dGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgpOwogCiAgICAg
Zm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2Vy
U2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmllcigpKSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHQod29ybGQtPmlkZW50aWZp
ZXIoKSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91
c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTY3JpcHQpOwogCkBAIC0xOTMs
NyArMTkzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNl
clNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQKIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6VXNlckNvbnRlbnRXb3Js
ZCYgd29ybGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nl
c3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHsgd29ybGQuaWRl
bnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgdXNlclNjcmlwdHNS
ZW1vdmVkID0gbV91c2VyU2NyaXB0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2Vy
U2NyaXB0PihbJl0oY29uc3QgYXV0byYgdXNlclNjcmlwdCkgewogICAgICAgICByZXR1cm4gJnVz
ZXJTY3JpcHQtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0yMTQsNyArMjE0LDcg
QEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlw
dHMoKQogICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZCh3b3JsZENvdW50
UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJv
Y2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmll
cnMpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMod29y
bGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVt
ZW50cygpLmNsZWFyKCk7CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1
c2VyUwogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmFwcGVuZCgmdXNlclN0eWxl
U2hlZXQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3Nl
cykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpBZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSwg
d29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQudXNlclN0eWxlU2hlZXQoKSB9IH0p
LCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsgeyB1c2Vy
U3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNo
ZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2Vy
U3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2Vy
U3R5bGVTaGVldCYgdXMKICAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVz
ZXJTdHlsZVNoZWV0LnVzZXJDb250ZW50V29ybGQoKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclN0eWxlU2hlZXQod29ybGQt
PmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigp
LnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCks
IHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3Vz
ZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTdHlsZVNoZWV0KTsKIApA
QCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzCiB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoQVBJOjpVc2Vy
Q29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2Vz
cyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50
aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHls
ZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVu
c2lnbmVkIHVzZXJTdHlsZVNoZWV0c1JlbW92ZWQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3Zl
QWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU3R5bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVz
ZXJTdHlsZVNoZWV0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPnVzZXJDb250
ZW50V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0yNjksNyArMjY5LDcgQEAgdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKICAgICAgICAg
d29ybGRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIua2V5LT5pZGVu
dGlmaWVyKCkpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nl
c3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMod29ybGRJZGVu
dGlmaWVycyksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVu
dHMoKS5jbGVhcigpOwogCkBAIC0yOTAsNyArMjkwLDcgQEAgYm9vbCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3Nh
Z2UKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5hZGQoaGFuZGxlci5pZGVudGlmaWVyKCks
ICZoYW5kbGVyKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9j
ZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlm
aWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgeyBoYW5k
bGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgaGFuZGxlci5uYW1lKCkgfSB9
KSwgaWRlbnRpZmllcigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMwMCw3ICsz
MDAsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVz
c2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZwogICAgIGZvciAoYXV0byBpdCA9IG1fc2Ny
aXB0TWVzc2FnZUhhbmRsZXJzLmJlZ2luKCksIGVuZCA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+bmFtZSgp
ID09IG5hbWUgJiYgJml0LT52YWx1ZS0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZCkgewog
ICAgICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
LSAgICAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVy
KCksIGl0LT52YWx1ZS0+aWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
ICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKHdvcmxkLmlkZW50aWZpZXIo
KSwgaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgICAgICAg
ICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmUoaXQpOwogCkBAIC0zMTMsNyArMzEzLDcg
QEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVudFdvcmxk
JiB3b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vz
c2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlm
aWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwog
CiAgICAgdW5zaWduZWQgbnVtYmVyUmVtb3ZlZCA9IDA7CiAgICAgbV9zY3JpcHRNZXNzYWdlSGFu
ZGxlcnMucmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5KSB7CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5k
bGVycyhBUEk6OlVzZXJDb250ZW4KICAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3Js
ZCwgbnVtYmVyUmVtb3ZlZCk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3Qg
cGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNz
YWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgRnJhbWVJ
bmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQogewogICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkK
QEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojph
ZGRDb250ZW50UnVsZUxpc3QoQVBJOjpDb250ZW50UnVsZUxpc3QmIGNvbgogICAgIGF1dG8gcGFp
ciA9IHN0ZDo6bWFrZV9wYWlyKGNvbnRlbnRSdWxlTGlzdC5uYW1lKCksIGNvbnRlbnRSdWxlTGlz
dC5jb21waWxlZFJ1bGVMaXN0KCkuZGF0YSgpKTsKIAogICAgIGZvciAoYXV0byogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyh7IHBhaXIgfSksIGlkZW50aWZp
ZXIoKSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCiAg
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5h
Z2VyOjpBZGRDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpLCB7IHBhaXIgfSB9LCAwKTsK
QEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpy
ZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIG1fY29udGVudFJ1
bGVMaXN0cy5yZW1vdmUobmFtZSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nl
c3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QobmFtZSksIGlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QobmFtZSksIGlkZW50aWZpZXIoKSk7CiAKICAg
ICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCiAgICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVD
b250ZW50UnVsZUxpc3QgeyBpZGVudGlmaWVyKCksIG5hbWUgfSwgMCk7CkBAIC0zNzMsNyArMzcz
LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsQ29udGVu
dFJ1bGVMaXN0cygpCiAgICAgbV9jb250ZW50UnVsZUxpc3RzLmNsZWFyKCk7CiAKICAgICBmb3Ig
KGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3Rz
KCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3Rz
KCksIGlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQ
cm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigp
IH0sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggNjIzMzAx
MTE2ZWQuLjBlZDM2YTU5Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJN
ZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KQEAgLTExMCw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6
TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYs
IHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwor
ICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklE
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKIAogICAgIHZvaWQgYWRkVXNlckNvbnRlbnRX
b3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZVVzZXJDb250
ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYsIHVuc2lnbmVkIG51bWJlck9mVXNl
c1RvUmVtb3ZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggODE3MTQzNTFmY2UuLjI1YTRlMjkxMjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSAr
MjQsNSBAQAogICovCiAKIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
IHsKLURpZFBvc3RNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRh
dGFSZWZlcmVuY2UgbWVzc2FnZSkgV2FudHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEg
ZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJl
bmNlIG1lc3NhZ2UpIFdhbnRzQ29ubmVjdGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IDFmMjYwMjkxY2M3Li5iZDM3YmEwYzk2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgVXNlck1lZGlh
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNhcHR1cmVEZXZpY2VzQ2hhbmdlZCgpCiAg
ICAgICAgIGlmIChtX2dyYW50ZWRSZXF1ZXN0cy5pc0VtcHR5KCkgJiYgISpvcmlnaW5IYXNQZXJz
aXN0ZW50QWNjZXNzKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIG1fcGFnZS5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwdHVyZURldmljZXNDaGFuZ2VkKCksIG1f
cGFnZS5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpD
YXB0dXJlRGV2aWNlc0NoYW5nZWQoKSk7CiAgICAgfTsKIAogICAgIGF1dG8gb3JpZ2luID0gV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3BhZ2UubWFpbkZyYW1lKCktPnVybCgpKTsK
QEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpkZW55UmVxdWVzdCh1aW50NjRfdCB1c2VyTWVkaWFJRCwgVQogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgdXNlck1lZGlhSUQsICIsIHJlYXNvbjogIiwgcmVhc29uKTsKIAog
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNEZW5pZWQodXNlck1lZGlhSUQsIHRvV2Vi
Q29yZShyZWFzb24pLCBpbnZhbGlkQ29uc3RyYWludCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0RlbmllZCh1
c2VyTWVkaWFJRCwgdG9XZWJDb3JlKHJlYXNvbiksIGludmFsaWRDb25zdHJhaW50KSk7CiAjZWxz
ZQogICAgIFVOVVNFRF9QQVJBTShyZWFzb24pOwogICAgIFVOVVNFRF9QQVJBTShpbnZhbGlkQ29u
c3RyYWludCk7CkBAIC0yOTYsMTEgKzI5NiwxMSBAQCBib29sIFVzZXJNZWRpYVBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5OjpncmFudEFjY2Vzcyhjb25zdCBVc2VyTWVkaWFQZXJtaXNzaQog
ICAgIH0KIAogICAgICsrbV9oYXNQZW5kaW5nQ2FwdHVyZTsKLSAgICBtX3BhZ2UucHJvY2Vzcygp
LmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2Vy
TWVkaWFBY2Nlc3NXYXNHcmFudGVkIHsgcmVxdWVzdC51c2VyTWVkaWFJRCgpLCByZXF1ZXN0LmF1
ZGlvRGV2aWNlKCksIHJlcXVlc3QudmlkZW9EZXZpY2UoKSwgcmVxdWVzdC5kZXZpY2VJZGVudGlm
aWVySGFzaFNhbHQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gewor
ICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRp
YUFjY2Vzc1dhc0dyYW50ZWQgeyByZXF1ZXN0LnVzZXJNZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9E
ZXZpY2UoKSwgcmVxdWVzdC52aWRlb0RldmljZSgpLCByZXF1ZXN0LmRldmljZUlkZW50aWZpZXJI
YXNoU2FsdCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSB7CiAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIC0tbV9oYXNQ
ZW5kaW5nQ2FwdHVyZTsKLSAgICB9LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIH0pOwogICAgIHJl
dHVybiB0cnVlOwogfQogI2VuZGlmCkBAIC02MDgsNyArNjA4LDcgQEAgdm9pZCBVc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZW51bWVyYXRlTWVkaWFEZXZpY2VzRm9yRnJh
bWUodWludDYKIAogICAgICAgICAgICAgYm9vbCByZXZlYWxJZHNBbmRMYWJlbHMgPSBvcmlnaW5I
YXNQZXJzaXN0ZW50QWNjZXNzIHx8IHdhc0dyYW50ZWRWaWRlb09yQXVkaW9BY2Nlc3MoZnJhbWVJ
RCwgdXNlck1lZGlhRG9jdW1lbnRPcmlnaW4uZ2V0KCksIHRvcExldmVsRG9jdW1lbnRPcmlnaW4u
Z2V0KCkpOwogCi0gICAgICAgICAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkRpZENvbXBsZXRlTWVkaWFEZXZpY2VFbnVtZXJhdGlvbiB7IHVzZXJNZWRpYUlELCBj
b21wdXRlRmlsdGVyZWREZXZpY2VMaXN0KHJldmVhbElkc0FuZExhYmVscywgZGV2aWNlSURIYXNo
U2FsdCksIGRldmljZUlESGFzaFNhbHQsIG9yaWdpbkhhc1BlcnNpc3RlbnRBY2Nlc3MgfSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRDb21wbGV0ZU1lZGlhRGV2aWNlRW51bWVyYXRpb24geyB1c2VyTWVkaWFJRCwgY29tcHV0
ZUZpbHRlcmVkRGV2aWNlTGlzdChyZXZlYWxJZHNBbmRMYWJlbHMsIGRldmljZUlESGFzaFNhbHQp
LCBkZXZpY2VJREhhc2hTYWx0LCBvcmlnaW5IYXNQZXJzaXN0ZW50QWNjZXNzIH0pOwogICAgICAg
ICB9KTsKICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1
cmVDb250cm9sbGVyLmNwcAppbmRleCAyNDgxODJkODA5Mi4uMWU5MWFiYjZlZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcApAQCAt
NjYsMTAgKzY2LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtU2Nyb2xsRXZlbnRSYXRp
b0ZvclN3aXBlID0gMC41Owogc3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlU25hcHNob3RSZW1vdmFs
UmVuZGVyVHJlZVNpemVUYXJnZXRGcmFjdGlvbiA9IDAuNTsKICNlbmRpZgogCi1zdGF0aWMgSGFz
aE1hcDx1aW50NjRfdCwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4mIHZpZXdHZXN0dXJlQ29udHJv
bGxlcnNGb3JBbGxQYWdlcygpCitzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVmlld0dl
c3R1cmVDb250cm9sbGVyKj4mIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpCiB7
CiAgICAgLy8gVGhlIGtleSBpbiB0aGlzIG1hcCBpcyB0aGUgYXNzb2NpYXRlZCBwYWdlIElELgot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPHVpbnQ2NF90LCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8SGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4+IHZp
ZXdHZXN0dXJlQ29udHJvbGxlcnM7CiAgICAgcmV0dXJuIHZpZXdHZXN0dXJlQ29udHJvbGxlcnMu
Z2V0KCk7CiB9CiAKQEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxl
cjo6Y29ubmVjdFRvUHJvY2VzcygpCiAgICAgbV9pc0Nvbm5lY3RlZFRvUHJvY2VzcyA9IHRydWU7
CiB9CiAKLVZpZXdHZXN0dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250
cm9sbGVyRm9yR2VzdHVyZSh1aW50NjRfdCBwYWdlSUQsIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6
R2VzdHVyZUlEIGdlc3R1cmVJRCkKK1ZpZXdHZXN0dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVD
b250cm9sbGVyOjpjb250cm9sbGVyRm9yR2VzdHVyZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6R2VzdHVyZUlEIGdlc3R1cmVJRCkKIHsKICAgICBhdXRvIGdl
c3R1cmVDb250cm9sbGVySXRlciA9IHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygp
LmZpbmQocGFnZUlEKTsKICAgICBpZiAoZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID09IHZpZXdHZXN0
dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpLmVuZCgpKQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHZv
aWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpmb3JjZVJlcGFpbnRJZk5lZWRlZCgpCiAKICAgICBt
X2hhc091dHN0YW5kaW5nUmVwYWludFJlcXVlc3QgPSB0cnVlOwogCi0gICAgdWludDY0X3QgcGFn
ZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBh
Z2VQcm94eS5wYWdlSUQoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50R2Vz
dHVyZUlEOwogICAgIG1fd2ViUGFnZVByb3h5LmZvcmNlUmVwYWludChWb2lkQ2FsbGJhY2s6OmNy
ZWF0ZShbcGFnZUlELCBnZXN0dXJlSURdIChDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAg
ICAgICAgIGlmIChhdXRvIGdlc3R1cmVDb250cm9sbGVyID0gY29udHJvbGxlckZvckdlc3R1cmUo
cGFnZUlELCBnZXN0dXJlSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaAppbmRleCA0MzFjMjc2NmQwOC4uYzE2NzBkM2E5NGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25p
Y1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KQEAgLTE3NSw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVy
KiBjb250cm9sbGVyRm9yR2VzdHVyZSh1aW50NjRfdCBwYWdlSUQsIEdlc3R1cmVJRCk7CisgICAg
c3RhdGljIFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxlckZvckdlc3R1cmUoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIEdlc3R1cmVJRCk7CiAKICAgICBzdGF0aWMgR2VzdHVyZUlEIHRh
a2VOZXh0R2VzdHVyZUlEKCk7CiAgICAgdm9pZCB3aWxsQmVnaW5HZXN0dXJlKFZpZXdHZXN0dXJl
VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCmlu
ZGV4IGYyZTdiOTM0MDU3Li45OTFkYzJmY2ZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFZpc2l0ZWRM
aW5rU3RvcmU6OndlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5Jiwg
SVBDOjpDb25uZQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CiAKLXZvaWQgVmlzaXRlZExp
bmtTdG9yZTo6YWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UodWludDY0X3QgcGFnZUlELCBTaGFy
ZWRTdHJpbmdIYXNoIGxpbmtIYXNoKQordm9pZCBWaXNpdGVkTGlua1N0b3JlOjphZGRWaXNpdGVk
TGlua0hhc2hGcm9tUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFNoYXJlZFN0cmluZ0hhc2gg
bGlua0hhc2gpCiB7CiAgICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94eSA9IFdlYlByb2Nlc3NQcm94
eTo6d2ViUGFnZShwYWdlSUQpKSB7CiAgICAgICAgIGlmICghd2ViUGFnZVByb3h5LT5hZGRzVmlz
aXRlZExpbmtzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVk
TGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmgK
aW5kZXggMDZmMjBiYTkxY2IuLjAyYjQ5YmFjNTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVmlzaXRlZExpbmtTdG9yZS5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBkaWRJbnZhbGlkYXRlU2hhcmVkTWVtb3J5KCkgZmluYWw7CiAgICAgdm9pZCBkaWRVcGRhdGVT
aGFyZWRTdHJpbmdIYXNoZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2g+
JiBhZGRlZEhhc2hlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2g+JiBy
ZW1vdmVkSGFzaGVzKSBmaW5hbDsKIAotICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoRnJvbVBh
Z2UodWludDY0X3QgcGFnZUlELCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoKTsKKyAgICB2b2lk
IGFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpTaGFyZWRTdHJpbmdIYXNoKTsKIAogICAgIHZvaWQgc2VuZFN0b3JlSGFuZGxlVG9Qcm9j
ZXNzKFdlYlByb2Nlc3NQcm94eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbgppbmRleCBlNzg2MmUzNjViMC4uMmU2NmM0
MjgwOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3Rv
cmUubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtT
dG9yZS5tZXNzYWdlcy5pbgpAQCAtMjEsNSArMjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNz
YWdlcyAtPiBWaXNpdGVkTGlua1N0b3JlIHsKLSAgICBBZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFn
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGxpbmtIYXNoKQorICAgIEFkZFZpc2l0ZWRMaW5r
SGFzaEZyb21QYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgbGlu
a0hhc2gpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29t
bWFuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJv
eHkuY3BwCmluZGV4IDg3YjBhZmMyMGMyLi4wZGJlMGFmYjQzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
dm9pZCBXZWJFZGl0Q29tbWFuZFByb3h5Ojp1bmFwcGx5KCkKICAgICBpZiAoIW1fcGFnZSB8fCAh
bV9wYWdlLT5oYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Bh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVbmFwcGx5RWRpdENvbW1hbmQo
bV9jb21tYW5kSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNo
TWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpVbmFwcGx5RWRpdENvbW1hbmQobV9jb21tYW5kSUQpLCBJUEM6OlNl
bmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CiAg
ICAgbV9wYWdlLT5yZWdpc3RlckVkaXRDb21tYW5kKCp0aGlzLCBVbmRvT3JSZWRvOjpSZWRvKTsK
IH0KIApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFdlYkVkaXRDb21tYW5kUHJveHk6OnJlYXBwbHko
KQogICAgIGlmICghbV9wYWdlIHx8ICFtX3BhZ2UtPmhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJRCksIG1fcGFnZS0+cGFnZUlEKCksIElQ
Qzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFu
ZChtX2NvbW1hbmRJRCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKICAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1hbmQoKnRo
aXMsIFVuZG9PclJlZG86OlVuZG8pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZy
YW1lUHJveHkuY3BwCmluZGV4IDVjODUxYjcyNzU1Li5iMDFiMzA1MDUxNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBX
ZWJGcmFtZVByb3h5Ojpsb2FkVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIGlmICghbV9wYWdlKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpMb2FkVVJMSW5GcmFtZSh1cmwsIG1fZnJhbWVJRCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZFVSTEluRnJhbWUodXJs
LCBtX2ZyYW1lSUQpKTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBVUkwmIGJhc2VVUkwpCkBAIC05Miw3ICs5Miw3IEBA
IHZvaWQgV2ViRnJhbWVQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUCiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkxvYWRE
YXRhSW5GcmFtZShkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJMLCBtX2ZyYW1l
SUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkxvYWREYXRhSW5GcmFtZShkYXRhLCBNSU1FVHlwZSwgZW5jb2RpbmdOYW1lLCBiYXNlVVJM
LCBtX2ZyYW1lSUQpKTsKIH0KIAogdm9pZCBXZWJGcmFtZVByb3h5OjpzdG9wTG9hZGluZygpIGNv
bnN0CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBXZWJGcmFtZVByb3h5OjpzdG9wTG9hZGluZygp
IGNvbnN0CiAgICAgaWYgKCFtX3BhZ2UtPmhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0
b3BMb2FkaW5nRnJhbWUobV9mcmFtZUlEKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdG9wTG9hZGluZ0ZyYW1lKG1fZnJhbWVJRCkpOwog
fQogICAgIAogYm9vbCBXZWJGcmFtZVByb3h5OjpjYW5Qcm92aWRlU291cmNlKCkgY29uc3QKQEAg
LTI2Miw3ICsyNjIsNyBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmNvbGxhcHNlU2VsZWN0aW9uKCkK
ICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wYWdlLT5wcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKG1fZnJh
bWVJRCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Q29sbGFwc2VTZWxlY3Rpb25JbkZyYW1lKG1fZnJhbWVJRCkpOwogfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkZ1bGxTY3JlZW5NYW5hZ2Vy
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eS5jcHAKaW5kZXggOGU5M2IxZGMyZDAuLmVjNjk4ZTE2MGNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5LmNwcApAQCAt
NTYsMTMgKzU2LDEzIEBAIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6On5XZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5KCkKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEVudGVy
RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3JlZW5DbGllbnQoKS53aWxsRW50ZXJG
dWxsc2NyZWVuKCZtX3BhZ2UpOwotICAgIG1fcGFnZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6
V2ViRnVsbFNjcmVlbk1hbmFnZXI6OldpbGxFbnRlckZ1bGxTY3JlZW4oKSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6Oldp
bGxFbnRlckZ1bGxTY3JlZW4oKSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94
eTo6ZGlkRW50ZXJGdWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVudCgp
LmRpZEVudGVyRnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxTY3JlZW4oKSwgbV9w
YWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1h
bmFnZXI6OkRpZEVudGVyRnVsbFNjcmVlbigpKTsKIAogICAgIGlmIChtX3BhZ2UuaXNDb250cm9s
bGVkQnlBdXRvbWF0aW9uKCkpIHsKICAgICAgICAgaWYgKFdlYkF1dG9tYXRpb25TZXNzaW9uKiBh
dXRvbWF0aW9uU2Vzc2lvbiA9IG1fcGFnZS5wcm9jZXNzKCkucHJvY2Vzc1Bvb2woKS5hdXRvbWF0
aW9uU2Vzc2lvbigpKQpAQCAtNzMsMTMgKzczLDEzIEBAIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFn
ZXJQcm94eTo6ZGlkRW50ZXJGdWxsU2NyZWVuKCkKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQ
cm94eTo6d2lsbEV4aXRGdWxsU2NyZWVuKCkKIHsKICAgICBtX3BhZ2UuZnVsbHNjcmVlbkNsaWVu
dCgpLndpbGxFeGl0RnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxTY3JlZW4oKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVl
bk1hbmFnZXI6OldpbGxFeGl0RnVsbFNjcmVlbigpKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVu
TWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbFNjcmVlbigpCiB7CiAgICAgbV9wYWdlLmZ1bGxzY3Jl
ZW5DbGllbnQoKS5kaWRFeGl0RnVsbHNjcmVlbigmbV9wYWdlKTsKLSAgICBtX3BhZ2UucHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbFNjcmVl
bigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxs
U2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxTY3JlZW4oKSk7CiAgICAgCiAgICAgaWYgKG1fcGFn
ZS5pc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oKSkgewogICAgICAgICBpZiAoV2ViQXV0b21hdGlv
blNlc3Npb24qIGF1dG9tYXRpb25TZXNzaW9uID0gbV9wYWdlLnByb2Nlc3MoKS5wcm9jZXNzUG9v
bCgpLmF1dG9tYXRpb25TZXNzaW9uKCkpCkBAIC04OSwxMiArODksMTIgQEAgdm9pZCBXZWJGdWxs
U2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbFNjcmVlbigpCiAKIHZvaWQgV2ViRnVsbFNj
cmVlbk1hbmFnZXJQcm94eTo6c2V0QW5pbWF0aW5nRnVsbFNjcmVlbihib29sIGFuaW1hdGluZykK
IHsKLSAgICBtX3BhZ2UucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5h
Z2VyOjpTZXRBbmltYXRpbmdGdWxsU2NyZWVuKGFuaW1hdGluZyksIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRBbmlt
YXRpbmdGdWxsU2NyZWVuKGFuaW1hdGluZykpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5h
Z2VyUHJveHk6OnJlcXVlc3RFeGl0RnVsbFNjcmVlbigpCiB7Ci0gICAgbV9wYWdlLnByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6UmVxdWVzdEV4aXRGdWxsU2Ny
ZWVuKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVzc2FnZXM6OldlYkZ1
bGxTY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RXhpdEZ1bGxTY3JlZW4oKSk7CiB9CiAKIHZvaWQgV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c3VwcG9ydHNGdWxsU2NyZWVuKGJvb2wgd2l0aEtleWJv
YXJkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpA
QCAtMTA4LDI3ICsxMDgsMjcgQEAgdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpzdXBw
b3J0c0Z1bGxTY3JlZW4oYm9vbCB3aXRoS2V5Ym9hcmQsIENvbXBsZXRpb24KIAogdm9pZCBXZWJG
dWxsU2NyZWVuTWFuYWdlclByb3h5OjpzYXZlU2Nyb2xsUG9zaXRpb24oKQogewotICAgIG1fcGFn
ZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNhdmVTY3Jv
bGxQb3NpdGlvbigpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2Vz
OjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6U2F2ZVNjcm9sbFBvc2l0aW9uKCkpOwogfQogCiB2b2lk
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0g
ICAgbV9wYWdlLnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJGdWxsU2NyZWVuTWFuYWdlcjo6
UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNl
bmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpSZXN0b3JlU2Nyb2xsUG9zaXRpb24o
KSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbklu
c2V0cyhjb25zdCBXZWJDb3JlOjpGbG9hdEJveEV4dGVudCYgaW5zZXRzKQogewotICAgIG1fcGFn
ZS5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxz
Y3JlZW5JbnNldHMoaW5zZXRzKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChN
ZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5JbnNldHMoaW5zZXRz
KSk7CiB9CiAKIHZvaWQgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eTo6c2V0RnVsbHNjcmVlbkF1
dG9IaWRlRHVyYXRpb24oU2Vjb25kcyBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UucHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQXV0b0hp
ZGVEdXJhdGlvbihkdXJhdGlvbiksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQo
TWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVuQXV0b0hpZGVEdXJh
dGlvbihkdXJhdGlvbikpOwogfQogCiB2b2lkIFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHk6OnNl
dEZ1bGxzY3JlZW5Db250cm9sc0hpZGRlbihib29sIGhpZGRlbikKIHsKLSAgICBtX3BhZ2UucHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkZ1bGxTY3JlZW5NYW5hZ2VyOjpTZXRGdWxsc2NyZWVu
Q29udHJvbHNIaWRkZW4oaGlkZGVuKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2Vu
ZChNZXNzYWdlczo6V2ViRnVsbFNjcmVlbk1hbmFnZXI6OlNldEZ1bGxzY3JlZW5Db250cm9sc0hp
ZGRlbihoaWRkZW4pKTsKIH0KIAogdm9pZCBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5OjpjbG9z
ZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5k
ZXggMTJiYjI2MWQwN2MuLmZlOTBjY2M4OWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
ICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNw
ZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNlbmRN
ZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2VuZE1l
c3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpKTsKIH0KIAogLy8gUHVibGljIEFQSXMKQEAgLTEyNyw3
ICsxMjcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpjb25uZWN0KCkKICAgICBjcmVhdGVG
cm9udGVuZFBhZ2UoKTsKIAogICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3RvckludGVycnVwdERpc3BhdGNoZXI6Ok5vdGlmeU5lZWREZWJ1Z2dl
ckJyZWFrKCksIDApOwotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2Fn
ZXM6OldlYkluc3BlY3Rvcjo6U2hvdygpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvdygpKTsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvdygpCkBAIC0xNjEsNyArMTYxLDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6Y2xvc2UoKQogICAgIGlmICghbV9pbnNwZWN0ZWRQYWdl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OkNsb3NlKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlE
KCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpD
bG9zZSgpKTsKIAogICAgIGNsb3NlRnJvbnRlbmRQYWdlQW5kV2luZG93KCk7CiB9CkBAIC0xOTks
NyArMTk5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6dXBkYXRlRm9yTmV3UGFnZVByb2Nl
c3MoV2ViUGFnZVByb3h5KiBpbnNwZWN0ZWRQYWdlKQogICAgIG1faW5zcGVjdGVkUGFnZS0+cHJv
Y2VzcygpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSwgKnRoaXMpOwog
CiAgICAgaWYgKG1faW5zcGVjdG9yUGFnZSkKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlVwZGF0ZUNvbm5lY3Rpb24oKSwg
bV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlVwZGF0ZUNvbm5lY3Rpb24oKSk7CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OnNldEZyb250ZW5kQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1l
bnQgY29ubmVjdGlvbklkZW50aWZpZXIpCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JQcm94eTo6c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVudCBjb25uZWN0
aW9uSWRlbnRpZmkKICAgICBpZiAoIW1faW5zcGVjdGVkUGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yOjpTZXRGcm9udGVuZENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIpLCBtX2luc3Bl
Y3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3Rvcjo6U2V0RnJvbnRlbmRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVy
KSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNob3dDb25zb2xlKCkKQEAgLTIxNyw3
ICsyMTcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93Q29uc29sZSgpCiAKICAgICBj
cmVhdGVGcm9udGVuZFBhZ2UoKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U2hvd0NvbnNvbGUoKSwgbV9pbnNwZWN0ZWRQYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNw
ZWN0b3I6OlNob3dDb25zb2xlKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93
UmVzb3VyY2VzKCkKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpz
aG93UmVzb3VyY2VzKCkKIAogICAgIGNyZWF0ZUZyb250ZW5kUGFnZSgpOwogCi0gICAgbV9pbnNw
ZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVz
b3VyY2VzKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTaG93UmVzb3VyY2VzKCkpOwogfQogCiB2
b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93VGltZWxpbmVzKCkKQEAgLTIzNyw3ICsyMzcsNyBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93VGltZWxpbmVzKCkKIAogICAgIGNyZWF0ZUZy
b250ZW5kUGFnZSgpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTaG93VGltZWxpbmVzKCksIG1faW5zcGVjdGVkUGFnZS0+cGFn
ZUlEKCkpOworICAgIG1faW5zcGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9y
OjpTaG93VGltZWxpbmVzKCkpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzaG93TWFp
blJlc291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUpCkBAIC0yNDcsNyArMjQ3LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2hvd01haW5SZXNvdXJjZUZvckZyYW1lKFdlYkZy
YW1lUHJveHkqIGZyYW1lKQogCiAgICAgY3JlYXRlRnJvbnRlbmRQYWdlKCk7CiAKLSAgICBtX2lu
c3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNob3dN
YWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgbV9pbnNwZWN0ZWRQYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0
b3I6OlNob3dNYWluUmVzb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiB9CiAKIHZv
aWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEJvdHRvbSgpCkBAIC0yNzgsMTkgKzI3OCwxOSBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjphdHRhY2goQXR0YWNobWVudFNpZGUgc2lkZSkKICAg
ICBpZiAobV9pc1Zpc2libGUpCiAgICAgICAgIGluc3BlY3RvclBhZ2VQcmVmZXJlbmNlcygpLnNl
dEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKHRydWUpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZCh0cnVlKSwg
bV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKHRydWUpKTsKIAogICAgIHN3aXRjaCAo
bV9hdHRhY2htZW50U2lkZSkgewogICAgIGNhc2UgQXR0YWNobWVudFNpZGU6OkJvdHRvbToKLSAg
ICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRh
Y2hlZEJvdHRvbSgpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEF0dGFjaG1lbnRTaWRl
OjpSaWdodDoKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkUmlnaHQoKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OkF0dGFjaGVkUmlnaHQoKSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBBdHRh
Y2htZW50U2lkZTo6TGVmdDoKLSAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkF0dGFjaGVkTGVmdCgpLCBtX2luc3BlY3RvclBh
Z2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRMZWZ0KCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
QEAgLTMwNyw4ICszMDcsOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpkZXRhY2goKQogICAg
IGlmIChtX2lzVmlzaWJsZSkKICAgICAgICAgaW5zcGVjdG9yUGFnZVByZWZlcmVuY2VzKCkuc2V0
SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoZmFsc2UpOwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlLT5w
cm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTZXRBdHRhY2hlZChmYWxzZSks
IG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hlZCgpLCBtX2luc3BlY3Rv
clBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3Rvcjo6U2V0QXR0YWNoZWQoZmFsc2UpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEZXRhY2hlZCgpKTsKIAogICAgIHBsYXRmb3Jt
RGV0YWNoKCk7CiB9CkBAIC0zNDEsOSArMzQxLDkgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6
dG9nZ2xlUGFnZVByb2ZpbGluZygpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2lzUHJv
ZmlsaW5nUGFnZSkKLSAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViSW5zcGVjdG9yOjpTdG9wUGFnZVByb2ZpbGluZygpLCBtX2luc3BlY3RlZFBhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJ
bnNwZWN0b3I6OlN0b3BQYWdlUHJvZmlsaW5nKCkpOwogICAgIGVsc2UKLSAgICAgICAgbV9pbnNw
ZWN0ZWRQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydFBh
Z2VQcm9maWxpbmcoKSwgbV9pbnNwZWN0ZWRQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5z
cGVjdGVkUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yOjpTdGFydFBhZ2VQcm9maWxp
bmcoKSk7CiAKICAgICAvLyBGSVhNRTogaGF2ZSB0aGUgV2ViUHJvY2VzcyBub3RpZnkgdXMgb24g
c3RhdGUgY2hhbmdlcy4KICAgICBtX2lzUHJvZmlsaW5nUGFnZSA9ICFtX2lzUHJvZmlsaW5nUGFn
ZTsKQEAgLTM1NiwxMCArMzU2LDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnRvZ2dsZUVs
ZW1lbnRTZWxlY3Rpb24oKQogCiAgICAgaWYgKG1fZWxlbWVudFNlbGVjdGlvbkFjdGl2ZSkgewog
ICAgICAgICBtX2lnbm9yZUVsZW1lbnRTZWxlY3Rpb25DaGFuZ2UgPSB0cnVlOwotICAgICAgICBt
X2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0
b3BFbGVtZW50U2VsZWN0aW9uKCksIG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAg
ICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rvcjo6U3RvcEVsZW1l
bnRTZWxlY3Rpb24oKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgY29ubmVjdCgpOwotICAgICAg
ICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6
OlN0YXJ0RWxlbWVudFNlbGVjdGlvbigpLCBtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgbV9pbnNwZWN0ZWRQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlN0YXJ0
RWxlbWVudFNlbGVjdGlvbigpKTsKICAgICB9CiB9CiAKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lk
IFdlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0
dGFjaCwgYm9vbCB1bmRlclRlcwogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJJbnNwZWN0b3JVSTo6RXN0YWJsaXNoQ29ubmVjdGlvbihtX2luc3BlY3RlZFBhZ2UtPnBhZ2VJ
RCgpLCBtX3VuZGVyVGVzdCwgaW5zcGVjdGlvbkxldmVsKCkpLCBtX2luc3BlY3RvclBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpFc3RhYmxpc2hDb25uZWN0aW9uKG1faW5zcGVjdGVkUGFnZS0+cGFnZUlEKCksIG1fdW5k
ZXJUZXN0LCBpbnNwZWN0aW9uTGV2ZWwoKSkpOwogCiAgICAgQVNTRVJUKCFtX2lzQWN0aXZlRnJv
bnRlbmQpOwogICAgIG1faXNBY3RpdmVGcm9udGVuZCA9IHRydWU7CkBAIC00MjMsMjYgKzQyMywy
NiBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChi
b29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlcwogICAgICAgICBtX2lzQXR0YWNoZWQgPSBzaG91
bGRPcGVuQXR0YWNoZWQoKTsKICAgICAgICAgbV9hdHRhY2htZW50U2lkZSA9IHN0YXRpY19jYXN0
PEF0dGFjaG1lbnRTaWRlPihpbnNwZWN0b3JQYWdlUHJlZmVyZW5jZXMoKS5pbnNwZWN0b3JBdHRh
Y2htZW50U2lkZSgpKTsKIAotICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3I6OlNldEF0dGFjaGVkKG1faXNBdHRhY2hlZCksIG1faW5z
cGVjdGVkUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RlZFBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYkluc3BlY3Rvcjo6U2V0QXR0YWNoZWQobV9pc0F0dGFjaGVkKSk7CiAKICAgICAg
ICAgaWYgKG1faXNBdHRhY2hlZCkgewogICAgICAgICAgICAgc3dpdGNoIChtX2F0dGFjaG1lbnRT
aWRlKSB7CiAgICAgICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpCb3R0b206Ci0gICAgICAg
ICAgICAgICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5z
cGVjdG9yVUk6OkF0dGFjaGVkQm90dG9tKCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOwor
ICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OkF0dGFjaGVkQm90dG9tKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgICAgICBjYXNlIEF0dGFjaG1lbnRTaWRlOjpSaWdodDoKLSAgICAgICAgICAgICAgICBtX2lu
c3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0
YWNoZWRSaWdodCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAg
ICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hl
ZFJpZ2h0KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEF0
dGFjaG1lbnRTaWRlOjpMZWZ0OgotICAgICAgICAgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpBdHRhY2hlZExlZnQoKSwgbV9p
bnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9pbnNwZWN0b3JQYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6QXR0YWNoZWRMZWZ0KCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpEZXRhY2hlZCgpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAg
IG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OkRldGFjaGVk
KCkpOwogCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYkluc3BlY3RvclVJOjpTZXREb2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSwgbV9p
bnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViSW5zcGVjdG9yVUk6OlNldERvY2tpbmdVbmF2YWlsYWJsZSghbV9jYW5BdHRh
Y2gpKTsKICAgICB9CiAKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVSTChVUkwo
KSwgbV91bmRlclRlc3QgPyBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yVGVzdFBhZ2VVUkwo
KSA6IFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkpKTsKQEAgLTQ1OCw3ICs0
NTgsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuKCkKIAogICAgIFNldEZvclNjb3Bl
PGJvb2w+IGlzT3BlbmluZyhtX2lzT3BlbmluZywgdHJ1ZSk7CiAgICAgbV9pc1Zpc2libGUgPSB0
cnVlOwotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclVJOjpTZXRJc1Zpc2libGUobV9pc1Zpc2libGUpLCBtX2luc3BlY3RvclBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3Rv
clVJOjpTZXRJc1Zpc2libGUobV9pc1Zpc2libGUpKTsKIAogICAgIGlmIChtX2lzQXR0YWNoZWQp
CiAgICAgICAgIHBsYXRmb3JtQXR0YWNoKCk7CkBAIC00ODUsNyArNDg1LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JQcm94eTo6Y2xvc2VGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogCiAgICAgdW50cmFj
a0luc3BlY3RvclBhZ2UobV9pbnNwZWN0b3JQYWdlKTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRJc1Zpc2libGUobV9p
c1Zpc2libGUpLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRJc1Zpc2libGUobV9pc1Zpc2li
bGUpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
aW5zcGVjdGVkUGFnZS0+cGFnZUlEKCkpOwogCiAgICAgaWYgKG1faXNBY3RpdmVGcm9udGVuZCkg
ewpAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmF0dGFjaEF2YWls
YWJpbGl0eUNoYW5nZWQoYm9vbCBhdmFpbGFibGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2luc3BlY3RvclBhZ2UgJiYgIW1fdW5kZXJUZXN0KQotICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JVSTo6U2V0RG9ja2luZ1Vu
YXZhaWxhYmxlKCFtX2NhbkF0dGFjaCksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpTZXRE
b2NraW5nVW5hdmFpbGFibGUoIW1fY2FuQXR0YWNoKSk7CiAKICAgICBwbGF0Zm9ybUF0dGFjaEF2
YWlsYWJpbGl0eUNoYW5nZWQobV9jYW5BdHRhY2gpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNjU2YzhkY2M1OWMuLmRmNzRjNTY0Yzk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4MSwxMiArMzgxLDEyIEBA
IHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JNb3N0VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc2VsZWN0ZWRQ
YWdlKTsKIH0KIAotUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdl
SUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCitSZWY8V2Vi
UGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVmPEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEZNb3Zl
KGNvbmZpZ3VyYXRpb24pKSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFn
ZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorV2ViUGFn
ZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1By
b3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1
cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQobWFrZVdlYWtQdHIo
cGFnZUNsaWVudCkpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9u
KSkKICAgICAsIG1fbmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlv
bkNsaWVudD4oKSkKQEAgLTQzNSw3ICs0MzUsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgog
I2VuZGlmCiAgICAgLCBtX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6Om1haW4o
KSwgdGhpcywgJldlYlBhZ2VQcm94eTo6cmVzZXRSZWNlbnRDcmFzaENvdW50KQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb25zdHJ1Y3Rvcjog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghbV9jb25maWd1cmF0aW9u
LT5kcmF3c0JhY2tncm91bmQoKSkKICAgICAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihD
b2xvcjo6dHJhbnNwYXJlbnQpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIFdlYlBhZ2VQcm94eTo6V2Vi
UGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2Vz
cywgdWluCiAKIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MtPndlYlBhZ2UobV9w
YWdlSUQpICE9IHRoaXMpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTYxMyw3ICs2MTMsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VUlDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6VUlD
bGllbnQ+JiYgdWlDbGllbnQpCiAgICAgbV91aUNsaWVudCA9IFdURk1vdmUodWlDbGllbnQpOwog
CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKG1fdWlD
bGllbnQtPmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKSwgbV9wYWdlSUQpOworICAg
ICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5CZWZvcmVVbmxvYWRDb25maXJt
UGFuZWwobV91aUNsaWVudC0+Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCkpKTsKIAog
ICAgIHNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkpOwogICAgIHNldE5l
ZWRzRm9udEF0dHJpYnV0ZXMobV91aUNsaWVudC0+bmVlZHNGb250QXR0cmlidXRlcygpKTsKQEAg
LTYzMCw3ICs2MzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQo
c3RkOjp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VJY29uTG9hZGluZ0NsaWVudChoYXNDbGllbnQpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VXNlSWNvbkxvYWRpbmdDbGll
bnQoaGFzQ2xpZW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRGaW5kQ2xpZW50KHN0
ZDo6dW5pcXVlX3B0cjxBUEk6OkZpbmRDbGllbnQ+JiYgZmluZENsaWVudCkKQEAgLTcwOCw3ICs3
MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAg
ICBBU1NFUlQoIWhhc1J1bm5pbmdQcm9jZXNzKCkpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzczogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywg
V2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CiAgICAgbV9wcm9jZXNz
LT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CkBAIC03NjMsNyArNzYzLDcgQEAgYm9vbCBXZWJQYWdl
UHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBPcHQKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
InN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZv
ciBwcm9jZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAg
YXV0byBzdXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+
KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xv
c2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAKLSAgICBMT0co
UHJvY2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVu
ZGVkIHBhZ2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJ
dTY0LCBwYWdlSUQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0
cmluZygpIDogMCk7CisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQ
Ukl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFj
ay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCkudG9VSW50NjQoKSwgc3VzcGVuZGVk
UGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZy
b21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CiAKICAgICAvLyBJ
ZiB0aGUgY2xpZW50IGZvcmNlZCBhIHN3YXAgdGhlbiBpdCBtYXkgbm90IGJlIHdlYi1jb21wYXRp
YmxlIHRvIGtlZXAgdGhlIHByZXZpb3VzIHBhZ2UgYmVjYXVzZSBvdGhlciB3aW5kb3dzIG1heSBo
YXZlIGFuIG9wZW5lciBsaW5rIHRvIGl0LiBXZSB0aHVzIGNsb3NlIGl0IGFzIHNvb24gYXMgd2UK
ICAgICAvLyBjYW4gZG8gc28gd2l0aG91dCBmbGFzaGluZy4KQEAgLTc4MSw3ICs3ODEsNyBAQCBi
b29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIE9wdAogdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1dlYlByb2Nl
c3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2lu
Z0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlYSwgUmVmUHRyPFdlYkZyYW1lUHJveHk+JiYgbWFpbkZy
YW1lKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAic3dhcFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3dhcFRvV2ViUHJvY2Vzczogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcHJvY2VzcyA9IFdURk1vdmUocHJvY2Vz
cyk7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3Jl
KCk7CkBAIC04NzMsMTAgKzg3MywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9S
dW5uaW5nUHJvY2VzcygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6
bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JS
ZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBp
cyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KICAgICAKQEAgLTg4NSwxNCArODg1LDE0IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAgICAgbGF1
bmNoUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbik7CiAKICAgICBpZiAoIW1fYmFja0ZvcndhcmRM
aXN0LT5jdXJyZW50SXRlbSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQ6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRpb25TdGF0ZS0+Y3JlYXRlUmVs
b2FkTmF2aWdhdGlvbigpOwogCiAgICAgLy8gV2UgYWxsb3cgc3RhbGUgY29udGVudCB3aGVuIHJl
bG9hZGluZyBhIFdlYlByb2Nlc3MgdGhhdCdzIGJlZW4ga2lsbGVkIG9yIGNyYXNoZWQuCi0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0ZvcndhcmRJdGVtKG5h
dmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0o
KS0+aXRlbUlEKCksIEZyYW1lTG9hZFR5cGU6OkluZGV4ZWRCYWNrRm9yd2FyZCwgU2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxsb3B0KSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2aWdhdGlvbi0+bmF2
aWdhdGlvbklEKCksIG1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpLT5pdGVtSUQoKSwg
RnJhbWVMb2FkVHlwZTo6SW5kZXhlZEJhY2tGb3J3YXJkLCBTaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQ6Ok5vLCBXVEY6Om51bGxvcHQpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNz
VGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0dXJuIG5hdmlnYXRpb247CkBAIC05MDAsMTAgKzkw
MCwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nl
c3NGb3JSZWxvYWQoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6Omxh
dW5jaFByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAg
ICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFBy
b2Nlc3NXaXRoSXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtOTE1LDcgKzkxNSw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc1dpdGhJ
dGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0CiAKICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmln
YXRpb25TdGF0ZS0+Y3JlYXRlQmFja0ZvcndhcmROYXZpZ2F0aW9uKGl0ZW0sIG1fYmFja0Zvcndh
cmRMaXN0LT5jdXJyZW50SXRlbSgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQp
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHb1RvQmFja0Zvcndh
cmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBpdGVtLml0ZW1JRCgpLCBGcmFtZUxv
YWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6
Tm8sIFdURjo6bnVsbG9wdCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHb1RvQmFja0ZvcndhcmRJdGVtKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCBpdGVtLml0
ZW1JRCgpLCBGcmFtZUxvYWRUeXBlOjpJbmRleGVkQmFja0ZvcndhcmQsIFNob3VsZFRyZWF0QXND
b250aW51aW5nTG9hZDo6Tm8sIFdURjo6bnVsbG9wdCkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9u
c2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTk1
Niw3ICs5NTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIGlmIChtX2lzQ2xv
c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJjbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBt
X2lzQ2xvc2VkID0gdHJ1ZTsKIApAQCAtMTAwOSw3ICsxMDA5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNsb3NlKCkKIAogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5yZW1vdmVBbGxTdXNw
ZW5kZWRQYWdlc0ZvclBhZ2UoKnRoaXMpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDbG9zZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q2xvc2UoKSk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9j
ZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1fcGFnZUlEKTsKICAgICBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuc3VwcGxlbWVu
dDxXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk+KCktPmNsZWFyTm90aWZpY2F0aW9ucyh0aGlz
KTsKQEAgLTEwMzEsMTQgKzEwMzEsMTQgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnRyeUNsb3NlKCkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5Q2xvc2U6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeUNsb3NlOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgLy8gQ2xvc2Ugd2l0aG91dCBkZWxh
eSBpZiB0aGUgcHJvY2VzcyBhbGxvd3MgaXQuIE91ciBnb2FsIGlzIHRvIHRlcm1pbmF0ZQogICAg
IC8vIHRoZSBwcm9jZXNzLCBzbyB3ZSBjaGVjayBhIHBlci1wcm9jZXNzIHN0YXR1cyBiaXQuCiAg
ICAgaWYgKG1fcHJvY2Vzcy0+aXNTdWRkZW5UZXJtaW5hdGlvbkVuYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRy
eUNsb3NlKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlDbG9z
ZSgpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogICAg
IHJldHVybiBmYWxzZTsKIH0KQEAgLTEwNzcsNyArMTA3Nyw3IEBAIFJlZlB0cjxBUEk6Ok5hdmln
YXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCwgU2hvCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3Q6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1
ZXN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVx
dWVzdC51cmwoKSB9KTsKQEAgLTEwOTEsNyArMTA5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojps
b2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdFdpdGhO
YXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8gdHJhbnNh
Y3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMTEyMCwxMCArMTEy
MCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9u
PiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29u
c3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZywgQVBJOjpPYmplY3QqIHVzZXJE
YXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkRmlsZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xv
c2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxl
OiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC0xMTMyLDcgKzExMzIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiAgICAgVVJMIGZp
bGVVUkwgPSBVUkwoVVJMKCksIGZpbGVVUkxTdHJpbmcpOwogICAgIGlmICghZmlsZVVSTC5pc0xv
Y2FsRmlsZSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2Nh
bDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0xMTQyLDcgKzExNDIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwog
ICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVz
b3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5
VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBA
IC0xMTY0LDcgKzExNjQsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGFkZFBsYXRm
b3JtTG9hZFBhcmFtZXRlcnMobG9hZFBhcmFtZXRlcnMpOwogCiAgICAgbV9wcm9jZXNzLT5hc3N1
bWVSZWFkQWNjZXNzVG9CYXNlVVJMKCp0aGlzLCByZXNvdXJjZURpcmVjdG9yeVVSTCk7Ci0gICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVzdChsb2FkUGFyYW1l
dGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpMb2FkUmVxdWVz
dChsb2FkUGFyYW1ldGVycykpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LnN0YXJ0KCk7CiAKICAgICByZXR1cm4gbmF2aWdhdGlvbjsKQEAgLTExNzIsMTAgKzExNzIsMTAg
QEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBT
dHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2Vi
UGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYg
YmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWREYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRh
OiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTg5LDcgKzExODksNyBAQCBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgYwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlv
blNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcm
IE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkws
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3Vs
ZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3
ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZERhdGFXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTIxNSwx
MyArMTIxNSwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAKIHZvaWQgV2ViUGFnZVByb3h5
Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBj
b25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5y
ZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICAvLyBXaGVuIHRoZSBVSVByb2Nl
c3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgaGFuZGxpbmcgYSBmYWlsaW5nIHByb3Zpc2lvbmFsIGxv
YWQsIGRvIG5vdCBhdHRlbXB0IHRvCiAgICAgLy8gc3RhcnQgYSBzZWNvbmQgYWx0ZXJuYXRpdmUg
SFRNTCBsb2FkIGFzIHRoaXMgd2lsbCBwcmV2ZW50IHRoZSBwYWdlIGxvYWQgc3RhdGUgZnJvbSBi
ZWluZwogICAgIC8vIGhhbmRsZWQgcHJvcGVybHkuCiAgICAgaWYgKG1faXNDbG9zZWQgfHwgbV9p
c0xvYWRpbmdBbHRlcm5hdGVIVE1MU3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRN
TDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdl
IGlzIGNsb3NlZCAob3Igb3RoZXIpOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjUyLDE2ICsxMjUyLDE2IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxE
YXRhLCBjb25zdCBTCiAKICAgICBtX3Byb2Nlc3MtPmFzc3VtZVJlYWRBY2Nlc3NUb0Jhc2VVUkwo
KnRoaXMsIGJhc2VVUkwpOwogICAgIG1fcHJvY2Vzcy0+YXNzdW1lUmVhZEFjY2Vzc1RvQmFzZVVS
TCgqdGhpcywgdW5yZWFjaGFibGVVUkwpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUwobG9hZFBhcmFtZXRlcnMpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TG9hZEFsdGVybmF0ZUhUTUwobG9hZFBhcmFtZXRl
cnMpKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJj
aGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0
YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xvc2Vk
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMjc5LDE2ICsxMjc5LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2
ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAgICAgbG9h
ZFBhcmFtZXRlcnMudXNlckRhdGEgPSBVc2VyRGF0YShwcm9jZXNzKCkudHJhbnNmb3JtT2JqZWN0
c1RvSGFuZGxlcyh1c2VyRGF0YSkuZ2V0KCkpOwogICAgIGFkZFBsYXRmb3JtTG9hZFBhcmFtZXRl
cnMobG9hZFBhcmFtZXRlcnMpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpMb2FkRGF0YShsb2FkUGFyYW1ldGVycykpOwogICAgIG1fcHJvY2Vzcy0+
cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpu
YXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmlu
ZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9pbnQgc2NyZWVuUG9pbnQpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2lt
dWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2lt
dWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2lt
dWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjk4LDIwICsxMjk4LDIwIEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBT
dHJpbmcmIHVybFN0cmluZywKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IGxhdW5jaFByb2Nlc3MoUmVnaXN0cmFibGVEb21haW4geyBVUkwoVVJMKCksIHVybFN0cmluZykg
fSk7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Ok5hdmlnYXRlVG9Q
REZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKHVybFN0cmluZywgZG9jdW1lbnRQb2ludCwgc2NyZWVu
UG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2sodXJsU3RyaW5nLCBkb2N1bWVudFBvaW50LCBzY3Jl
ZW5Qb2ludCkpOwogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZygpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3RvcExvYWRpbmc6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9Q
REZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcExvYWRpbmcoKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlN0b3BMb2FkaW5nKCkpOwogICAgIGlmIChtX3Byb3Zp
c2lvbmFsUGFnZSkgewogICAgICAgICBtX3Byb3Zpc2lvbmFsUGFnZS0+Y2FuY2VsKCk7CiAgICAg
ICAgIG1fcHJvdmlzaW9uYWxQYWdlID0gbnVsbHB0cjsKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6cmVsb2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9w
dGlvbnMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJy
ZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKIApAQCAtMTM0Niw3ICsxMzQ2LDcg
QEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQoT3B0aW9uU2V0
PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3AKICAgICBpZiAob3B0aW9ucy5jb250YWlucyhXZWJD
b3JlOjpSZWxvYWRPcHRpb246OkRpc2FibGVDb250ZW50QmxvY2tlcnMpKQogICAgICAgICBuYXZp
Z2F0aW9uLT5zZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGZhbHNlKTsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmln
YXRpb25JRCgpLCBvcHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5h
dmlnYXRpb25JRCgpLCBvcHRpb25zLnRvUmF3KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpKTsK
ICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAgICAgcmV0
dXJuIG5hdmlnYXRpb247CkBAIC0xMzk4LDcgKzEzOTgsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBmcmFt
ZUxvYWRUeXBlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImdvVG9C
YWNrRm9yd2FyZEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgZ29Ub0JhY2tGb3J3
YXJkSXRlbSB0byBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0udXJsKCkudXRmOCgpLmRhdGEoKSk7
CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCkBAIC0xNDEyLDcgKzE0MTIsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0o
V2ViQmFja0ZvcndhcmRMaXN0SXRlbQogICAgIGlmICghbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJl
bnRJdGVtKCktPml0ZW1Jc0luU2FtZURvY3VtZW50KGl0ZW0pKQogICAgICAgICBuYXZpZ2F0aW9u
ID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0ZUJhY2tGb3J3YXJkTmF2aWdhdGlvbihpdGVtLCBt
X2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSwgZnJhbWVMb2FkVHlwZSk7CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9yd2FyZEl0ZW0obmF2
aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRlbS5pdGVtSUQoKSwg
ZnJhbWVMb2FkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpObywgV1RGOjpudWxs
b3B0KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdvVG9CYWNrRm9y
d2FyZEl0ZW0obmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwgaXRl
bS5pdGVtSUQoKSwgZnJhbWVMb2FkVHlwZSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpO
bywgV1RGOjpudWxsb3B0KSk7CiAgICAgbV9wcm9jZXNzLT5yZXNwb25zaXZlbmVzc1RpbWVyKCku
c3RhcnQoKTsKIAogICAgIHJldHVybiBuYXZpZ2F0aW9uOwpAQCAtMTQyMCwxNCArMTQyMCwxNCBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0
ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dHJ5UmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3Jl
U2Nyb2xsUG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBv
c2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6VHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpUcnlSZXN0b3JlU2Nyb2xsUG9zaXRpb24oKSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QoV2ViQmFja0ZvcndhcmRM
aXN0SXRlbSogYWRkZWQsIFZlY3RvcjxSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4+JiYgcmVt
b3ZlZCkKQEAgLTE0ODksNyArMTQ4OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDb250cm9s
bGVkQnlBdXRvbWF0aW9uKGJvb2wgY29udHJvbGxlZCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0Q29udHJvbGxlZEJ5QXV0b21hdGlvbihjb250cm9sbGVkKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldENvbnRyb2xsZWRCeUF1dG9tYXRpb24o
Y29udHJvbGxlZCkpOwogICAgIG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5zZW5kVG9OZXR3b3Jr
aW5nUHJvY2VzcyhNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNlc3Npb25Jc0NvbnRyb2xs
ZWRCeUF1dG9tYXRpb24obV93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgbV9jb250cm9s
bGVkQnlBdXRvbWF0aW9uKSk7CiB9CiAKQEAgLTE1MTQsNyArMTUxNCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRJbmRpY2F0aW5nKGJvb2wgaW5kaWNhdGluZykKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0SW5kaWNhdGluZyhpbmRpY2F0aW5nKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluZGljYXRpbmcoaW5kaWNhdGluZykpOwogfQog
CiBib29sIFdlYlBhZ2VQcm94eTo6YWxsb3dzUmVtb3RlSW5zcGVjdGlvbigpIGNvbnN0CkBAIC0x
NTUwLDcgKzE1NTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJJbnNwZWN0b3JUYXJnZXRz
KCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZUluc3BlY3RvclRhcmdldHMoKQogewotICAg
IFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZUlEKTsKKyAg
ICBTdHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPmNyZWF0ZUluc3BlY3RvclRhcmdl
dChwYWdlVGFyZ2V0SWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0VHlwZTo6UGFnZSk7CiB9
CiAKQEAgLTE1NjEsNyArMTU2MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRCYWNrZ3JvdW5k
Q29sb3IoY29uc3QgT3B0aW9uYWw8Q29sb3I+JiBjb2xvcikKIAogICAgIG1fYmFja2dyb3VuZENv
bG9yID0gY29sb3I7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QmFja2dyb3VuZENvbG9yKGNvbG9yKSwg
bV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYWNrZ3JvdW5k
Q29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvcENvbnRlbnRJbnNl
dChmbG9hdCBjb250ZW50SW5zZXQpCkBAIC0xNTc3LDkgKzE1NzcsOSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VG9wQ29udGVudEluc2V0KGZsb2F0IGNvbnRlbnRJbnNldCkKICAgICBNYWNoU2Vu
ZFJpZ2h0IGZlbmNlID0gbV9kcmF3aW5nQXJlYS0+Y3JlYXRlRmVuY2UoKTsKIAogICAgIGF1dG8g
ZmVuY2VBdHRhY2htZW50ID0gSVBDOjpBdHRhY2htZW50KGZlbmNlLmxlYWtTZW5kUmlnaHQoKSwg
TUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0VG9wQ29udGVudEluc2V0RmVuY2VkKGNvbnRlbnRJbnNldCwgZmVuY2VBdHRh
Y2htZW50KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENv
bnRlbnRJbnNldEZlbmNlZChjb250ZW50SW5zZXQsIGZlbmNlQXR0YWNobWVudCkpOwogI2Vsc2UK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRvcENvbnRlbnRJbnNl
dChjb250ZW50SW5zZXQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0VG9wQ29udGVudEluc2V0KGNvbnRlbnRJbnNldCkpOwogI2VuZGlmCiB9CiAKQEAgLTE1OTEs
NyArMTU5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVbmRlcmxheUNvbG9yKGNvbnN0IENv
bG9yJiBjb2xvcikKICAgICBtX3VuZGVybGF5Q29sb3IgPSBjb2xvcjsKIAogICAgIGlmIChoYXNS
dW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldFVuZGVybGF5Q29sb3IoY29sb3IpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFVuZGVybGF5Q29sb3IoY29sb3IpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkKQEAgLTE2MDAsMTQgKzE2MDAsMTQg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgY2xvc2VPdmVybGF5ZWRWaWV3cygpOwotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxTdGFydExpdmVSZXNpemUoKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxsU3RhcnRMaXZlUmVzaXplKCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld1dpbGxFbmRMaXZlUmVzaXplKCkKIHsKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZpZXdXaWxsRW5kTGl2ZVJlc2l6ZSgpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Vmlld1dpbGxFbmRMaXZlUmVzaXpl
KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBS
ZWdpb24mIHJlZ2lvbikKQEAgLTE3MDEsNyArMTcwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2
aWV3RGlkRW50ZXJXaW5kb3coKQogICAgIExheWVySG9zdGluZ01vZGUgbGF5ZXJIb3N0aW5nTW9k
ZSA9IHBhZ2VDbGllbnQoKS52aWV3TGF5ZXJIb3N0aW5nTW9kZSgpOwogICAgIGlmIChtX2xheWVy
SG9zdGluZ01vZGUgIT0gbGF5ZXJIb3N0aW5nTW9kZSkgewogICAgICAgICBtX2xheWVySG9zdGlu
Z01vZGUgPSBsYXllckhvc3RpbmdNb2RlOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0aW5nTW9kZSksIG1fcGFn
ZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9k
ZShsYXllckhvc3RpbmdNb2RlKSk7CiAgICAgfQogfQogCkBAIC0xNzUwLDcgKzE3NTAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlzcGF0Y2hBY3Rpdml0eVN0YXRlQ2hhbmdlKCkKICAgICBhdXRv
IGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZVdhbnRzU3luY2hy
b25vdXNSZXBseSA/IHRha2VOZXh0QWN0aXZpdHlTdGF0ZUNoYW5nZUlEKCkgOiBzdGF0aWNfY2Fz
dDxBY3Rpdml0eVN0YXRlQ2hhbmdlSUQ+KEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMp
OwogCiAgICAgaWYgKGNoYW5nZWQgfHwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEICE9IEFjdGl2aXR5
U3RhdGVDaGFuZ2VBc3luY2hyb25vdXMgfHwgIW1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxs
YmFja3MuaXNFbXB0eSgpKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rpdml0eVN0YXRlLCBhY3Rpdml0eVN0YXRlQ2hhbmdl
SUQsIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MpLCBtX3BhZ2VJRCk7CisgICAg
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFjdGl2aXR5U3RhdGUobV9hY3Rpdml0eVN0
YXRlLCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxs
YmFja3MpKTsKIAogICAgIG1fbmV4dEFjdGl2aXR5U3RhdGVDaGFuZ2VDYWxsYmFja3MuY2xlYXIo
KTsKIApAQCAtMTg1Myw3ICsxODUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxheWVySG9zdGlu
Z01vZGVEaWRDaGFuZ2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2xheWVySG9zdGluZ01v
ZGUgPSBsYXllckhvc3RpbmdNb2RlOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0TGF5ZXJIb3N0aW5nTW9kZShsYXllckhvc3RpbmdNb2RlKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldExheWVySG9zdGluZ01vZGUobGF5ZXJIb3N0
aW5nTW9kZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2
aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCkKQEAg
LTE4OTUsMjEgKzE4OTUsMjEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEluaXRpYWxGb2N1cyhi
b29sIGZvcndhcmQsIGJvb2wgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGNvbnMKICAgICB9CiAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEluaXRpYWxGb2N1cyhm
b3J3YXJkLCBpc0tleWJvYXJkRXZlbnRWYWxpZCwga2V5Ym9hcmRFdmVudCwgY2FsbGJhY2tJRCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRJbml0aWFsRm9jdXMo
Zm9yd2FyZCwgaXNLZXlib2FyZEV2ZW50VmFsaWQsIGtleWJvYXJkRXZlbnQsIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFyU2VsZWN0aW9uKCkKIHsKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNsZWFyU2VsZWN0aW9uKCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhclNlbGVjdGlvbigpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnJlc3RvcmVTZWxlY3Rpb25JbkZvY3VzZWRFZGl0YWJsZUVsZW1lbnQoKQogewog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVk
aXRhYmxlRWxlbWVudCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
UmVzdG9yZVNlbGVjdGlvbkluRm9jdXNlZEVkaXRhYmxlRWxlbWVudCgpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnZhbGlkYXRlQ29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGJvb2wsIGludDMyX3QsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0xOTIwLDcgKzE5MjAsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6dmFsaWRhdGVDb21tYW5kKGNvbnN0IFN0cmluZyYgY29tbWFuZE5h
bWUsIFdURjo6RnVuY3Rpb248dm9pZAogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1f
Y2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VmFsaWRhdGVDb21tYW5kKGNvbW1hbmROYW1lLCBjYWxsYmFja0lE
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlZhbGlkYXRlQ29tbWFu
ZChjb21tYW5kTmFtZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5j
cmVhc2VMaXN0TGV2ZWwoKQpAQCAtMTkyOCw3ICsxOTI4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmluY3JlYXNlTGlzdExldmVsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5j
cmVhc2VMaXN0TGV2ZWwoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkluY3JlYXNlTGlzdExldmVsKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjcmVhc2VM
aXN0TGV2ZWwoKQpAQCAtMTkzNiw3ICsxOTM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY3Jl
YXNlTGlzdExldmVsKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGVjcmVhc2VM
aXN0TGV2ZWwoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRlY3Jl
YXNlTGlzdExldmVsKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlTGlzdFR5cGUo
KQpAQCAtMTk0NCw3ICsxOTQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUxpc3RUeXBl
KCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlTGlzdFR5cGUoKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUxpc3RUeXBlKCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0Rp
cmVjdGlvbiBkaXJlY3Rpb24pCkBAIC0xOTUyLDcgKzE5NTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3Rpb24pCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhc2VXcml0aW5nRGlyZWN0aW9uKGRp
cmVjdGlvbiksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYXNl
V3JpdGluZ0RpcmVjdGlvbihkaXJlY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZUZvbnRBdHRyaWJ1dGVzQWZ0ZXJFZGl0b3JTdGF0ZUNoYW5nZSgpCkBAIC0xOTc2LDcgKzE5
NzYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0TmVlZHNGb250QXR0cmlidXRlcyhib29sIG5l
ZWRzRm9udEF0dHJpYnV0ZXMpCiAgICAgbV9uZWVkc0ZvbnRBdHRyaWJ1dGVzID0gbmVlZHNGb250
QXR0cmlidXRlczsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE5lZWRzRm9udEF0dHJpYnV0ZXMobmVl
ZHNGb250QXR0cmlidXRlcyksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0TmVlZHNGb250QXR0cmlidXRlcyhuZWVkc0ZvbnRBdHRyaWJ1dGVzKSk7CiB9CiAK
IGJvb2wgV2ViUGFnZVByb3h5OjptYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbigpIGNvbnN0CkBA
IC0xOTk5LDcgKzE5OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NoZWR1bGVGdWxsRWRpdG9y
U3RhdGVVcGRhdGUoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2hlZHVsZUZ1
bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZWxlY3RBbGwoKQpAQCAtMjAwNyw3ICsyMDA3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNlbGVjdEFsbCgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdEFs
bCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0QWxsKCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbnN0IFN0cmlu
ZyYgY29tbWFuZE5hbWUsIGNvbnN0IFN0cmluZyYgYXJndW1lbnQsIFdURjo6RnVuY3Rpb248dm9p
ZChDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMjAxOCw3ICsy
MDE4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJp
bmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJpbmcmIGEKICAgICB9CiAKICAgICBhdXRvIGNhbGxi
YWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9j
ZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFj
ayhjb21tYW5kTmFtZSwgYXJndW1lbnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKGNvbW1h
bmROYW1lLCBhcmd1bWVudCwgY2FsbGJhY2tJRCkpOwogfQogICAgIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBT
dHJpbmcmIGFyZ3VtZW50KQpAQCAtMjAzMSw3ICsyMDMxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmV4ZWN1dGVFZGl0Q29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBjb25zdCBTdHJp
bmcmIGEKICAgICBpZiAoY29tbWFuZE5hbWUgPT0gaWdub3JlU3BlbGxpbmdDb21tYW5kTmFtZSkK
ICAgICAgICAgKyttX3BlbmRpbmdMZWFybk9ySWdub3JlV29yZE1lc3NhZ2VDb3VudDsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXhlY3V0ZUVkaXRDb21tYW5kKGNv
bW1hbmROYW1lLCBhcmd1bWVudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpFeGVjdXRlRWRpdENvbW1hbmQoY29tbWFuZE5hbWUsIGFyZ3VtZW50KSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZ1
bmN0aW9uPHZvaWQoY29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmLCBDYWxsYmFja0Jhc2U6
OkVycm9yKT4mJiBjYWxsYmFjaykKQEAgLTIwNDIsNyArMjA0Miw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0Rm9udEF0dHJpYnV0ZXNBdFNlbGVjdGlvblN0YXJ0KEZ1bmN0aW9uPHZvaWQo
Y29uc3QgV2ViCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVx
dWVzdEZvbnRBdHRyaWJ1dGVzQXRTZWxlY3Rpb25TdGFydChjYWxsYmFja0lEKSwgbV9wYWdlSUQp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RGb250QXR0cmlidXRlc0F0U2Vs
ZWN0aW9uU3RhcnQoY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9udEF0
dHJpYnV0ZXNDYWxsYmFjayhjb25zdCBXZWJDb3JlOjpGb250QXR0cmlidXRlcyYgYXR0cmlidXRl
cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMjA2Myw3ICsyMDYzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnNldEVkaXRhYmxlKGJvb2wgZWRpdGFibGUpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEVkaXRhYmxlKGVkaXRhYmxlKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldEVkaXRhYmxlKGVkaXRhYmxlKSk7CiB9CiAgICAgCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0TWVkaWFTdHJlYW1DYXB0dXJlTXV0ZWQoYm9vbCBtdXRlZCkKQEAg
LTIxMjgsOSArMjEyOCw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtRHJhZ0NvbnRyb2xs
ZXJBY3Rpb24oRHJhZ0NvbnRyb2xsZXJBY3Rpb24gYWN0aW9uLCBEcmFnCiAKICAgICBBU1NFUlQo
ZHJhZ0RhdGEucGxhdGZvcm1EYXRhKCkpOwogICAgIFdlYlNlbGVjdGlvbkRhdGEgc2VsZWN0aW9u
KCpkcmFnRGF0YS5wbGF0Zm9ybURhdGEoKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBkcmFnRGF0YS5j
bGllbnRQb3NpdGlvbigpLCBkcmFnRGF0YS5nbG9iYWxQb3NpdGlvbigpLCBkcmFnRGF0YS5kcmFn
Z2luZ1NvdXJjZU9wZXJhdGlvbk1hc2soKSwgc2VsZWN0aW9uLCBkcmFnRGF0YS5mbGFncygpKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1EcmFnQ29udHJv
bGxlckFjdGlvbihhY3Rpb24sIGRyYWdEYXRhLmNsaWVudFBvc2l0aW9uKCksIGRyYWdEYXRhLmds
b2JhbFBvc2l0aW9uKCksIGRyYWdEYXRhLmRyYWdnaW5nU291cmNlT3BlcmF0aW9uTWFzaygpLCBz
ZWxlY3Rpb24sIGRyYWdEYXRhLmZsYWdzKCkpKTsKICNlbHNlCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpQZXJmb3JtRHJhZ0NvbnRyb2xsZXJBY3Rpb24oYWN0aW9uLCBk
cmFnRGF0YSwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSwgc2FuZGJveEV4dGVuc2lvbnNGb3JVcGxv
YWQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9ybURyYWdD
b250cm9sbGVyQWN0aW9uKGFjdGlvbiwgZHJhZ0RhdGEsIHNhbmRib3hFeHRlbnNpb25IYW5kbGUs
IHNhbmRib3hFeHRlbnNpb25zRm9yVXBsb2FkKSk7CiAjZW5kaWYKIH0KIApAQCAtMjE2MCw3ICsy
MTYwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYWdFbmRlZChjb25zdCBJbnRQb2ludCYgY2xp
ZW50UG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG8KIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRyYWdFbmRlZChjbGllbnRQb3NpdGlvbiwgZ2xvYmFsUG9zaXRpb24sIG9wZXJh
dGlvbiksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmFnRW5kZWQo
Y2xpZW50UG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBvcGVyYXRpb24pKTsKICAgICBzZXREcmFn
Q2FyZXRSZWN0KHsgfSk7CiB9CiAKQEAgLTIxNzIsMTMgKzIxNzIsMTMgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFBlcmZvcm1EcmFnT3BlcmF0aW9uKGJvb2wgaGFuZGxlZCkKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRTdGFydERyYWcoKQogewogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFN0YXJ0RHJhZygp
LCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFN0YXJ0RHJh
ZygpKTsKIH0KICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmFnQ2FuY2VsbGVkKCkKIHsKICAg
ICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpEcmFnQ2FuY2VsbGVkKCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RHJhZ0NhbmNlbGxlZCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEVuZERyYWdnaW5nKCkKQEAgLTIyNzcsNyArMjI3Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzTmV4dFF1ZXVlZE1vdXNlRXZlbnQoKQogICAgIH0KIAogICAgIExPRyhNb3Vz
ZUhhbmRsaW5nLCAiVUlQcm9jZXNzOiBzZW50IG1vdXNlIGV2ZW50ICVzIChxdWV1ZSBzaXplICV6
dSkiLCB3ZWJNb3VzZUV2ZW50VHlwZVN0cmluZyhldmVudFR5cGUpLCBtX21vdXNlRXZlbnRRdWV1
ZS5zaXplKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6TW91c2VF
dmVudChldmVudCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpNb3Vz
ZUV2ZW50KGV2ZW50KSk7CiB9CiAKICNpZiBNRVJHRV9XSEVFTF9FVkVOVFMKQEAgLTI0MzcsNyAr
MjQzNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IE5h
dGl2ZVdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogCiAgICAgaWYgKG1fa2V5RXZlbnRRdWV1ZS5z
aXplKCkgPT0gMSkgeyAvLyBPdGhlcndpc2UsIHNlbnQgZnJvbSBEaWRSZWNlaXZlRXZlbnQgbWVz
c2FnZSBoYW5kbGVyLgogICAgICAgICBMT0coS2V5SGFuZGxpbmcsICIgVUkgcHJvY2Vzczogc2Vu
dCBrZXlFdmVudCBmcm9tIGhhbmRsZUtleWJvYXJkRXZlbnQiKTsKLSAgICAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpLZXlFdmVudChldmVudCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQoZXZlbnQpKTsKICAgICB9CiB9
CiAKQEAgLTI2NDMsNyArMjY0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVUb3VjaEV2
ZW50U3luY2hyb25vdXNseShOYXRpdmVXZWJUb3VjaEV2ZW50JiBldmVudCkKIAogICAgIG1fcHJv
Y2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiAgICAgYm9vbCBoYW5kbGVkID0g
ZmFsc2U7Ci0gICAgYm9vbCByZXBseVJlY2VpdmVkID0gbV9wcm9jZXNzLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmMoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6
VG91Y2hFdmVudFN5bmM6OlJlcGx5KGhhbmRsZWQpLCBtX3BhZ2VJRCwgMV9zKTsKKyAgICBib29s
IHJlcGx5UmVjZWl2ZWQgPSBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5
bmMoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hFdmVudFN5bmM6OlJlcGx5KGhhbmRs
ZWQpLCAxX3MpOwogICAgIC8vIElmIHRoZSBzeW5jIHJlcXVlc3QgaGFzIHRpbWVkIG91dCwgd2Ug
c2hvdWxkIGNvbnNpZGVyIHRoZSBldmVudCBoYW5kbGVkLiBUaGUgV2ViIFByb2Nlc3MgaXMgdG9v
IGJ1c3kgdG8gYW5zd2VyIGFueSBxdWVzdGlvbnMsIHNvIHRoZSBkZWZhdWx0IGFjdGlvbiBpcyBh
bHNvIGxpa2VseSB0byBoYXZlIGlzc3Vlcy4KICAgICBpZiAoIXJlcGx5UmVjZWl2ZWQpCiAgICAg
ICAgIGhhbmRsZWQgPSB0cnVlOwpAQCAtMjY4Nyw3ICsyNjg3LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmhhbmRsZVRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYgZXZlbnQpCiAg
ICAgaWYgKCFtX2lzUGFnZVN1c3BlbmRlZCkgewogICAgICAgICBtX3RvdWNoRXZlbnRRdWV1ZS5h
cHBlbmQoZXZlbnQpOwogICAgICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5z
dGFydCgpOwotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRvdWNo
RXZlbnQoZXZlbnQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlRvdWNoRXZlbnQoZXZlbnQpKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAobV90b3VjaEV2
ZW50UXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBib29sIGlzRXZlbnRIYW5kbGVkID0g
ZmFsc2U7CkBAIC0yNzA4LDEyICsyNzA4LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVU
b3VjaEV2ZW50KGNvbnN0IE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2ZW50KQogI2lmIEVOQUJMRShQ
T0lOVEVSX0VWRU5UUykKIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxQb2ludGVyKFdlYkNvcmU6
OlBvaW50ZXJJRCBwb2ludGVySWQsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBkb2N1bWVudFBv
aW50KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsUG9p
bnRlcihwb2ludGVySWQsIGRvY3VtZW50UG9pbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Q2FuY2VsUG9pbnRlcihwb2ludGVySWQsIGRvY3VtZW50UG9pbnQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRvdWNoV2l0aElkZW50aWZpZXJXYXNSZW1vdmVkKFdl
YkNvcmU6OlBvaW50ZXJJRCBwb2ludGVySWQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpUb3VjaFdpdGhJZGVudGlmaWVyV2FzUmVtb3ZlZChwb2ludGVySWQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VG91Y2hXaXRoSWRlbnRpZmll
cldhc1JlbW92ZWQocG9pbnRlcklkKSk7CiB9CiAjZW5kaWYKIApAQCAtMjcyMiw3ICsyNzIyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjcm9sbEJ5KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24s
IFNjcm9sbEdyYW51bGFyaXR5IGdyYW51bGEKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2Nyb2xsQnkoZGlyZWN0aW9uLCBncmFudWxhcml0eSksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTY3JvbGxCeShkaXJlY3Rpb24sIGdyYW51bGFyaXR5KSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCkKQEAg
LTI3MzAsNyArMjczMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25JblZp
c2libGVBcmVhKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2VudGVyU2VsZWN0
aW9uSW5WaXNpYmxlQXJlYSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Q2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYSgpKTsKIH0KIAogY2xhc3MgV2ViUGFnZVBy
b3h5OjpQb2xpY3lEZWNpc2lvblNlbmRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFBvbGljeURlY2lz
aW9uU2VuZGVyPiB7CkBAIC0yODczLDcgKzI4NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVj
ZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24q
CiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBm
cmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29u
c3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFp
bnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBm
b3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAg
ICBBU1NFUlQobV9wcm92aXNpb25hbFBhZ2UpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImNvbW1pdFByb3Zpc2lvbmFsUGFnZTogcHJldmlvdXNQSUQgPSAlaSwgbmV3UElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNp
b25hbFBhZ2U6IHByZXZpb3VzUElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnBy
b2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWlu
RnJhbWUgPyBtYWtlT3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxv
cHQ7CiAKQEAgLTI4OTYsNyArMjg5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92
aXNpb25hbFBhZ2UodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKICAg
ICAvLyBUaGVyZSBpcyBubyB3YXkgd2UnbGwgYmUgYWJsZSB0byByZXR1cm4gdG8gdGhlIHBhZ2Ug
aW4gdGhlIHByZXZpb3VzIHBhZ2Ugc28gY2xvc2UgaXQuCiAgICAgaWYgKCFkaWRTdXNwZW5kUHJl
dmlvdXNQYWdlKQotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNs
b3NlKCksIHBhZ2VJRCgpKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xvc2Uo
KSk7CiAKICAgICBzd2FwVG9XZWJQcm9jZXNzKG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCks
IG1fcHJvdmlzaW9uYWxQYWdlLT50YWtlRHJhd2luZ0FyZWEoKSwgbV9wcm92aXNpb25hbFBhZ2Ut
Pm1haW5GcmFtZSgpKTsKIApAQCAtMjkxMyw3ICsyOTEzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vz
cyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxTdXNwZW5kZWRQ
YWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZVByb3h5LCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIG5l
d1Byb2Nlc3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3YXBSZXF1ZXN0
ZWRCeUNsaWVudCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNp
ZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZp
Z2F0aW9uSW5OZXdQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIG5l
d1Byb2Nlc3NQSUQgPSAlaSwgaGFzU3VzcGVuZGVkUGFnZSA9ICVpIiwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgbmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgISFzdXNwZW5kZWRQYWdlUHJveHkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBuZXdQcm9jZXNzUElEID0gJWksIGhhc1N1c3BlbmRlZFBhZ2UgPSAl
aSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwg
bmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlUHJveHkpOwog
ICAgIExPRyhMb2FkaW5nLCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2NCAiICclcycg
aW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0
aW9uLmxvZ2dpbmdTdHJpbmcoKSk7CiAKICAgICBpZiAobV9wcm92aXNpb25hbFBhZ2UpIHsKQEAg
LTI5ODgsNyArMjk4OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoU3RyaW5n
JiYgdXNlckFnZW50KQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VyQWdl
bnQobV91c2VyQWdlbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0VXNlckFnZW50KG1fdXNlckFnZW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRB
cHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUp
CkBAIC0zMDI1LDcgKzMwMjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdW1lQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogCiAgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSBmYWxzZTsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWN0aXZlRE9N
T2JqZWN0c0FuZEFuaW1hdGlvbnMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKQEAg
LTMwMzUsNyArMzAzNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnMoKQogCiAgICAgbV9pc1BhZ2VTdXNwZW5kZWQgPSB0cnVlOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWN0aXZlRE9NT2Jq
ZWN0c0FuZEFuaW1hdGlvbnMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpKTsKIH0KIAogYm9vbCBX
ZWJQYWdlUHJveHk6OnN1cHBvcnRzVGV4dEVuY29kaW5nKCkgY29uc3QKQEAgLTMwNTIsNyArMzA1
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0
IFN0cmluZyYgZW5jb2RpbmdOYW1lKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nTmFtZSksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5n
TmFtZSkpOwogfQogCiBTZXNzaW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RG
OjpGdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdGVtJik+JiYgZmlsdGVyKSBjb25z
dApAQCAtMzA3NCw3ICszMDc0LDcgQEAgU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lv
blN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShT
ZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlLCBib29sIG5hdmlnYXRlKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3Jl
RnJvbVNlc3Npb25TdGF0ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1f
c2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVyVHJlZVNpemUgPSAwOwogICAgIG1faGl0UmVuZGVyVHJl
ZVNpemVUaHJlc2hvbGQgPSBmYWxzZTsKQEAgLTMwODMsNyArMzA4Myw3IEBAIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3RhdGUoU2Vzc2lv
blN0YXRlIHNlc3NpCiAKICAgICBpZiAoaGFzQmFja0ZvcndhcmRMaXN0KSB7CiAgICAgICAgIG1f
YmFja0ZvcndhcmRMaXN0LT5yZXN0b3JlRnJvbVN0YXRlKFdURk1vdmUoc2Vzc2lvblN0YXRlLmJh
Y2tGb3J3YXJkTGlzdFN0YXRlKSk7Ci0gICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXN0b3JlU2Vzc2lvbihtX2JhY2tGb3J3YXJkTGlzdC0+aXRlbVN0YXRlcygpKSwg
bV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlU2Vzc2lv
bihtX2JhY2tGb3J3YXJkTGlzdC0+aXRlbVN0YXRlcygpKSk7CiAKICAgICAgICAgYXV0byB0cmFu
c2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogICAgICAgICBtX3BhZ2VM
b2FkU3RhdGUuc2V0Q2FuR29CYWNrKHRyYW5zYWN0aW9uLCBtX2JhY2tGb3J3YXJkTGlzdC0+YmFj
a0l0ZW0oKSk7CkBAIC0zMTMxLDcgKzMxMzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VGV4
dFpvb21GYWN0b3IoZG91YmxlIHpvb21GYWN0b3IpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFRleHRab29tRmFjdG9yKG1fdGV4dFpvb21GYWN0b3IpLCBtX3BhZ2VJRCk7IAor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFRleHRab29tRmFjdG9yKG1fdGV4dFpvb21G
YWN0b3IpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2Vab29tRmFjdG9yKGRvdWJs
ZSB6b29tRmFjdG9yKQpAQCAtMzE0Niw3ICszMTQ2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFBhZ2Vab29tRmFjdG9yKGRvdWJsZSB6b29tRmFjdG9yKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRQYWdlWm9vbUZhY3RvcihtX3BhZ2Vab29tRmFjdG9yKSwgbV9wYWdlSUQp
OyAKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRQYWdlWm9vbUZhY3RvcihtX3BhZ2Va
b29tRmFjdG9yKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlQW5kVGV4dFpvb21G
YWN0b3JzKGRvdWJsZSBwYWdlWm9vbUZhY3RvciwgZG91YmxlIHRleHRab29tRmFjdG9yKQpAQCAt
MzE2Miw3ICszMTYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VBbmRUZXh0Wm9vbUZh
Y3RvcnMoZG91YmxlIHBhZ2Vab29tRmFjdG9yLCBkb3VibGUgdGV4dFoKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUFuZFRleHRab29tRmFjdG9ycyhtX3BhZ2Vab29tRmFj
dG9yLCBtX3RleHRab29tRmFjdG9yKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRQYWdlQW5kVGV4dFpvb21GYWN0b3JzKG1fcGFnZVpvb21GYWN0b3IsIG1fdGV4
dFpvb21GYWN0b3IpKTsKIH0KIAogZG91YmxlIFdlYlBhZ2VQcm94eTo6cGFnZVpvb21GYWN0b3Io
KSBjb25zdApAQCAtMzE5Miw3ICszMTkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlUGFn
ZShkb3VibGUgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmlnaW4pCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFnZShzY2FsZSwgb3JpZ2luKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlUGFnZShzY2FsZSwgb3JpZ2luKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzY2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhkb3VibGUgc2Nh
bGUsIGNvbnN0IEludFBvaW50JiBjZW50ZXJJblZpZXdDb29yZGluYXRlcykKQEAgLTMyMDQsNyAr
MzIwNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzY2FsZVBhZ2VJblZpZXdDb29yZGluYXRlcyhk
b3VibGUgc2NhbGUsIGNvbnN0IEludFBvaW50JiBjZW50CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNjYWxlUGFnZUluVmlld0Nvb3JkaW5hdGVzKHNjYWxlLCBjZW50ZXJJblZpZXdD
b29yZGluYXRlcyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTY2Fs
ZVBhZ2VJblZpZXdDb29yZGluYXRlcyhzY2FsZSwgY2VudGVySW5WaWV3Q29vcmRpbmF0ZXMpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNjYWxlVmlldyhkb3VibGUgc2NhbGUpCkBAIC0zMjE2
LDcgKzMyMTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2NhbGVWaWV3KGRvdWJsZSBzY2FsZSkK
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2NhbGVWaWV3KHNjYWxlKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNjYWxlVmlldyhzY2FsZSkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZmxvYXQg
c2NhbGVGYWN0b3IpCkBAIC0zMjM1LDcgKzMyMzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lu
ZG93U2NyZWVuRGlkQ2hhbmdlKFBsYXRmb3JtRGlzcGxheUlEIGRpc3BsYXlJRCkKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6V2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dTY3JlZW5EaWRD
aGFuZ2UoZGlzcGxheUlEKSk7CiB9CiAKIGZsb2F0IFdlYlBhZ2VQcm94eTo6ZGV2aWNlU2NhbGVG
YWN0b3IoKSBjb25zdApAQCAtMzI3NCw3ICszMjc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmFj
Y2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkFjY2Vzc2liaWxpdHlTZXR0aW5nc0RpZENoYW5nZSgpLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXNzaWJpbGl0eVNldHRpbmdzRGlkQ2hhbmdlKCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlRml4ZWRMYXlvdXQoYm9vbCBmaXhlZCkK
QEAgLTMyOTEsNyArMzI5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VGaXhlZExheW91
dChib29sIGZpeGVkKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VGaXhl
ZExheW91dChmaXhlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRVc2VGaXhlZExheW91dChmaXhlZCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4
ZWRMYXlvdXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCkBAIC0zMzA0LDcgKzMzMDQsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNpemUmIHNpemUp
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZpeGVkTGF5b3V0U2l6ZShzaXpl
KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZpeGVkTGF5b3V0
U2l6ZShzaXplKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c0hvcml6
b250YWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyKQpAQCAtMzMx
Nyw3ICszMzE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzSG9yaXpvbnRh
bFNjcm9sbGVyKGJvb2wgYWx3YXlzU2hvd3NIb3Jpem9udGFsU2MKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYWx3YXlzU2hv
d3NIb3Jpem9udGFsU2Nyb2xsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0QWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIoYWx3YXlzU2hvd3NIb3Jpem9u
dGFsU2Nyb2xsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEFsd2F5c1Nob3dzVmVy
dGljYWxTY3JvbGxlcihib29sIGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcikKQEAgLTMzMzAs
NyArMzMzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRBbHdheXNTaG93c1ZlcnRpY2FsU2Ny
b2xsZXIoYm9vbCBhbHdheXNTaG93c1ZlcnRpY2FsU2Nyb2xsCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldEFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxlcihhbHdheXNTaG93c1Zl
cnRpY2FsU2Nyb2xsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0QWx3YXlzU2hvd3NWZXJ0aWNhbFNjcm9sbGVyKGFsd2F5c1Nob3dzVmVydGljYWxTY3JvbGxl
cikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhP
cHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPiBtaWxlc3RvbmVzKQpAQCAtMzM0Myw3
ICszMzQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omxpc3RlbkZvckxheW91dE1pbGVzdG9uZXMo
T3B0aW9uU2V0PFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZT4KICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6TGlzdGVuRm9yTGF5b3V0TWlsZXN0b25lcyhtaWxlc3RvbmVzKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxpc3RlbkZvckxheW91dE1pbGVzdG9u
ZXMobWlsZXN0b25lcykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3VwcHJlc3NTY3Jv
bGxiYXJBbmltYXRpb25zKGJvb2wgc3VwcHJlc3NBbmltYXRpb25zKQpAQCAtMzM1Niw3ICszMzU2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldFN1cHByZXNzU2Nyb2xsYmFyQW5pbWF0aW9ucyhi
b29sIHN1cHByZXNzQW5pbWF0aW9ucykKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0U3VwcHJlc3NTY3JvbGxiYXJBbmltYXRpb25zKHN1cHByZXNzQW5pbWF0aW9ucyksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTdXBwcmVzc1Njcm9sbGJhckFu
aW1hdGlvbnMoc3VwcHJlc3NBbmltYXRpb25zKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVByb3h5Ojpy
dWJiZXJCYW5kc0F0TGVmdCgpIGNvbnN0CkBAIC0zNDA4LDcgKzM0MDgsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0RW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKGJvb2wgZW5hYmxlVmVydGlj
YWxSdWJiZXJCYW5kaQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBy
ZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRFbmFibGVW
ZXJ0aWNhbFJ1YmJlckJhbmRpbmcoZW5hYmxlVmVydGljYWxSdWJiZXJCYW5kaW5nKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEVuYWJsZVZlcnRpY2FsUnViYmVy
QmFuZGluZyhlbmFibGVWZXJ0aWNhbFJ1YmJlckJhbmRpbmcpKTsKIH0KICAgICAKIGJvb2wgV2Vi
UGFnZVByb3h5Ojp2ZXJ0aWNhbFJ1YmJlckJhbmRpbmdJc0VuYWJsZWQoKSBjb25zdApAQCAtMzQy
NSw3ICszNDI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEVuYWJsZUhvcml6b250YWxSdWJi
ZXJCYW5kaW5nKGJvb2wgZW5hYmxlSG9yaXpvbnRhbFJ1YmJlckIKIAogICAgIGlmICghaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9y
aXpvbnRhbFJ1YmJlckJhbmRpbmcpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6U2V0RW5hYmxlSG9yaXpvbnRhbFJ1YmJlckJhbmRpbmcoZW5hYmxlSG9yaXpvbnRhbFJ1
YmJlckJhbmRpbmcpKTsKIH0KICAgICAKIGJvb2wgV2ViUGFnZVByb3h5Ojpob3Jpem9udGFsUnVi
YmVyQmFuZGluZ0lzRW5hYmxlZCgpIGNvbnN0CkBAIC0zNDQyLDcgKzM0NDIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0QmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKGJvb2wgYmFja2dyb3Vu
ZEV4dGVuZHNCZXlvbmRQYQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAg
ICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRCYWNr
Z3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UoYmFja2dyb3VuZEV4dGVuZHNCZXlvbmRQYWdlKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEJhY2tncm91bmRFeHRlbmRz
QmV5b25kUGFnZShiYWNrZ3JvdW5kRXh0ZW5kc0JleW9uZFBhZ2UpKTsKIH0KIAogYm9vbCBXZWJQ
YWdlUHJveHk6OmJhY2tncm91bmRFeHRlbmRzQmV5b25kUGFnZSgpIGNvbnN0CkBAIC0zNDU5LDcg
KzM0NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbk1vZGUoV2ViQ29yZTo6
UGFnaW5hdGlvbjo6TW9kZSBtb2RlKQogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRQYWdpbmF0aW9uTW9kZShtb2RlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNldFBhZ2luYXRpb25Nb2RlKG1vZGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldFBhZ2luYXRpb25CZWhhdmVzTGlrZUNvbHVtbnMoYm9vbCBiZWhhdmVzTGlrZUNvbHVtbnMp
CkBAIC0zNDcxLDcgKzM0NzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkJl
aGF2ZXNMaWtlQ29sdW1ucyhib29sIGJlaGF2ZXNMaWtlQ29sdW1ucykKIAogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhiZWhhdmVz
TGlrZUNvbHVtbnMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0
UGFnaW5hdGlvbkJlaGF2ZXNMaWtlQ29sdW1ucyhiZWhhdmVzTGlrZUNvbHVtbnMpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNldFBhZ2VMZW5ndGgoZG91YmxlIHBhZ2VMZW5ndGgpCkBAIC0z
NDgzLDcgKzM0ODMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxlbmd0aChkb3VibGUg
cGFnZUxlbmd0aCkKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0
dXJuOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnZUxlbmd0
aChwYWdlTGVuZ3RoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFBhZ2VMZW5ndGgocGFnZUxlbmd0aCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0R2Fw
QmV0d2VlblBhZ2VzKGRvdWJsZSBnYXApCkBAIC0zNDk1LDcgKzM0OTUsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6c2V0R2FwQmV0d2VlblBhZ2VzKGRvdWJsZSBnYXApCiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldEdhcEJldHdlZW5QYWdlcyhnYXApLCBtX3BhZ2VJRCk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0R2FwQmV0d2VlblBhZ2VzKGdhcCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChib29sIGxpbmVH
cmlkRW5hYmxlZCkKQEAgLTM1MDcsNyArMzUwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQ
YWdpbmF0aW9uTGluZUdyaWRFbmFibGVkKGJvb2wgbGluZUdyaWRFbmFibGVkKQogICAgIAogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChs
aW5lR3JpZEVuYWJsZWQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChsaW5lR3JpZEVuYWJsZWQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnBhZ2VTY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgc2NhbGVGYWN0
b3IpCkBAIC0zNTMyLDI3ICszNTMyLDI3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5n
TWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RmluZFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmdNYXRjaGVzKHN0
cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5z
aWduZWQgbWF4TWF0Y2hDb3VudCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRp
b25zLCBtYXhNYXRjaENvdW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZv
ckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpHZXRJbWFnZUZvckZpbmRNYXRjaChtYXRjaEluZGV4KSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldEltYWdlRm9yRmluZE1hdGNoKG1h
dGNoSW5kZXgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNlbGVjdEZpbmRNYXRjaChpbnQz
Ml90IG1hdGNoSW5kZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZWxlY3RGaW5kTWF0Y2gobWF0Y2hJbmRleCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpTZWxlY3RGaW5kTWF0Y2gobWF0Y2hJbmRleCkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6aGlkZUZpbmRVSSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpIaWRlRmluZFVJKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpIaWRlRmluZFVJKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y291bnRTdHJp
bmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KQpAQCAtMzU2MCw3ICszNTYwLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMg
b3B0aW9ucywKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q291bnRTdHJpbmdNYXRj
aGVzKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDb3VudFN0cmluZ01hdGNoZXMoc3RyaW5nLCBvcHRpb25zLCBt
YXhNYXRjaENvdW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlTWF0Y2hlcyhW
ZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJbmRpY2VzLCBjb25zdCBTdHJpbmcmIHJlcGxhY2VtZW50
VGV4dCwgYm9vbCBzZWxlY3Rpb25Pbmx5LCBGdW5jdGlvbjx2b2lkKHVpbnQ2NF90LCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFjaykKQEAgLTM1NzEsNyArMzU3MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZXBsYWNlTWF0Y2hlcyhWZWN0b3I8dWludDMyX3Q+JiYgbWF0Y2hJbmRpY2Vz
LCBjb25zdCBTdHJpbmcmCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVwbGFjZU1hdGNoZXMoV1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNlbWVudFRleHQs
IHNlbGVjdGlvbk9ubHksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6UmVwbGFjZU1hdGNoZXMoV1RGTW92ZShtYXRjaEluZGljZXMpLCByZXBsYWNl
bWVudFRleHQsIHNlbGVjdGlvbk9ubHksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQpAQCAtMzU5NiwxNCArMzU5
NiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvbwogICAgIH0KIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpLCBt
X3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lU2NyaXB0V29ybGQoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlLCB3b3JsZE5hbWUsIGNh
bGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJv
b2wgaGFkRXhjZXB0aW9uLCBjb25zdCBFeGNlcHRpb25EZXRhaWxzJiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBBU1NFUlQobWFpbkZyYW1lKCktPmZy
YW1lSUQoKSAhPSBmcmFtZUlEKTsKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5w
dXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlJ1bkphdmFTY3JpcHRJbkZyYW1lKGZyYW1lSUQsIHNjcmlwdCwgZm9yY2VVc2VyR2Vz
dHVyZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpSdW5KYXZhU2NyaXB0SW5GcmFtZShmcmFtZUlELCBzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUs
IGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVFeHRl
cm5hbFJlcHJlc2VudGF0aW9uKFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM2MTQsNyArMzYxNCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0CiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJh
Y2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nl
c3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50
YXRpb24oY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzYyNiw3ICszNjI2LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKGMKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQo
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJpbmdDYWxsYmFja0lE
cy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRTb3VyY2VGb3JGcmFtZShmcmFtZS0+ZnJhbWVJRCgpLCBjYWxsYmFja0lEKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNvdXJjZUZvckZyYW1lKGZyYW1l
LT5mcmFtZUlEKCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldENv
bnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzYzOCw3ICszNjM4LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmdldENvbnRlbnRzQXNTdHJpbmcoV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBDYWxsYmEKICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKICAgICBtX2xvYWREZXBlbmRlbnRTdHJp
bmdDYWxsYmFja0lEcy5hZGQoY2FsbGJhY2tJRCk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpHZXRDb250ZW50c0FzU3RyaW5nKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc1N0cmluZyhjYWxsYmFj
a0lEKSk7CiB9CiAKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTM2NDksNyArMzY0OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IEF0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3By
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpHZXRDb250ZW50c0FzQXR0cmlidXRlZFN0cmluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0Q29udGVudHNBc0F0dHJpYnV0ZWRTdHJpbmcoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogfQogI2VuZGlmCiAKQEAgLTM2NjIsNyArMzY2Miw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpnZXRCeXRlY29kZVByb2ZpbGUoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
LCBDYWxsYmFjCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMu
YWRkKGNhbGxiYWNrSUQpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0Qnl0ZWNvZGVQcm9maWxlKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5nUHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2
b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQpAQCAtMzY3NCw3ICszNjc0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNhbXBsaW5n
UHJvZmlsZXJPdXRwdXQoV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLAogICAgIAog
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwogICAgIG1fbG9hZERlcGVuZGVudFN0cmluZ0NhbGxiYWNrSURzLmFkZChjYWxsYmFja0lEKTsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNhbXBsaW5nUHJvZmls
ZXJPdXRwdXQoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRTYW1wbGluZ1Byb2ZpbGVyT3V0cHV0KGNhbGxiYWNrSUQpKTsKIH0KIAogI2lmIEVO
QUJMRShNSFRNTCkKQEAgLTM2ODYsNyArMzY4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRD
b250ZW50c0FzTUhUTUxEYXRhKEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNrQmFz
CiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRD
b250ZW50c0FzTUhUTUxEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6R2V0Q29udGVudHNBc01IVE1MRGF0YShjYWxsYmFja0lEKSk7CiB9CiAj
ZW5kaWYKIApAQCAtMzY5OCw3ICszNjk4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFNlbGVj
dGlvbk9yQ29udGVudHNBc1N0cmluZyhXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmkKICAg
ICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRT
ZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTZWxlY3Rpb25PckNvbnRlbnRzQXNTdHJpbmcoY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0U2VsZWN0aW9uQXNXZWJBcmNo
aXZlRGF0YShGdW5jdGlvbjx2b2lkIChBUEk6OkRhdGEqLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMzcwOSw3ICszNzA5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRh
KiwgQ2FsbGIKICAgICB9CiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3Mu
cHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZl
RGF0YShjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3Vy
Y2VEYXRhT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJOjpE
YXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTM3MjAs
NyArMzcyMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFt
ZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pCiAgICAgfQogICAgIAogICAgIGF1
dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0TWFpblJlc291cmNlRGF0YU9m
RnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRNYWluUmVzb3VyY2VEYXRhT2ZGcmFtZShmcmFtZS0+ZnJh
bWVJRCgpLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRSZXNvdXJj
ZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiByZXNvdXJjZVVS
TCwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKQEAgLTM3MzEsNyArMzczMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6VVJMKiBy
ZXNvCiAgICAgfQogICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKGZyYW1lLT5mcmFtZUlEKCksIHJlc291cmNlVVJM
LT5zdHJpbmcoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXRSZXNvdXJjZURhdGFGcm9tRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgcmVzb3Vy
Y2VVUkwtPnN0cmluZygpLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAo
QVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAg
LTM3NDIsNyArMzc0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRXZWJBcmNoaXZlT2ZGcmFt
ZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgRnVuY3Rpb248dm9pZCAoQVBJCiAgICAgfQogICAgIAog
ICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eVRva2VuKCkp
OwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0V2ViQXJjaGl2ZU9m
RnJhbWUoZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRXZWJBcmNoaXZlT2ZGcmFtZShmcmFtZS0+ZnJhbWVJRCgp
LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQoUmVm
UHRyPFZvaWRDYWxsYmFjaz4mJiBjYWxsYmFjaykKQEAgLTM3NzYsNyArMzc3Niw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpmb3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJiBjYWxsYmFj
aykKIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGRpZEZv
cmNlUmVwYWludENhbGxiYWNrKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHlUb2tlbigpKTsKICAgICBtX2RyYXdpbmdBcmVhLT53YWl0Rm9yQmFja2luZ1N0b3JlVXBk
YXRlT25OZXh0UGFpbnQoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OkZvcmNlUmVwYWludChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOyAKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpGb3JjZVJlcGFpbnQoY2FsbGJhY2tJRCkpOwogfQogCiBzdGF0aWMgT3B0aW9u
U2V0PElQQzo6U2VuZE9wdGlvbj4gcHJpbnRpbmdTZW5kT3B0aW9ucyhib29sIGlzUGVyZm9ybWlu
Z0RPTVByaW50T3BlcmF0aW9uKQpAQCAtMzgwMiw3ICszODAyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKICAgICAvLyBldmVuIGlmIG5vdGhpbmcgY2hhbmdl
ZCBpbiBVSSBwcm9jZXNzLCBzbyB0aGF0IG92ZXJyaWRlcyBnZXQgcmVtb3ZlZC4KIAogICAgIC8v
IFByZWZlcmVuY2VzIG5lZWQgdG8gYmUgdXBkYXRlZCBkdXJpbmcgc3luY2hyb25vdXMgcHJpbnRp
bmcgdG8gbWFrZSAicHJpbnQgYmFja2dyb3VuZHMiIHByZWZlcmVuY2Ugd29yayB3aGVuIHRvZ2ds
ZWQgZnJvbSBhIHByaW50IGRpYWxvZyBjaGVja2JveC4KLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlByZWZlcmVuY2VzRGlkQ2hhbmdlKHByZWZlcmVuY2VzU3RvcmUoKSks
IG1fcGFnZUlELCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVy
YXRpb24pKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQcmVmZXJlbmNlc0RpZENoYW5n
ZShwcmVmZXJlbmNlc1N0b3JlKCkpLCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5n
RE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENyZWF0ZU1h
aW5GcmFtZSh1aW50NjRfdCBmcmFtZUlEKQpAQCAtMzkzMiw4ICszOTMyLDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJgogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9u
SUQpCiAgICAgICAgIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5h
dmlnYXRpb25JRCk7CiAKLSAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQg
IiBpbiBwcm9jZXNzIHBpZCAlaSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZy
YW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9w
YWdlSUQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQsIG5hdmlnYXRpb25J
RCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIExPRyhMb2FkaW5nLCAi
V2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUi
IFBSSXU2NCAiLCB1cmwgJXMiLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFn
ZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC0zOTg1LDcgKzM5ODUsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZgogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
TE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25J
RCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0
b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQwMTQsNyArNDAxNCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZVNoYXJlZChSZWY8CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRv
dWJsZSBkZWxheSwgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCkKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJh
bWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC00MDI3LDcgKzQwMjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDA3NCw4
ICs0MDc0LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cmkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVl
TG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
Ci0gICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGlu
IHdlYiBwcm9jZXNzIHBpZCAlaSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJv
dmlzaW9uYWxVUkwgJXMiLCBtX3BhZ2VJRCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
cHJvdmlzaW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMs
IGNvZGUgPSAlZCIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7Cisg
ICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdl
YiBwcm9jZXNzIHBpZCAlaSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlz
aW9uYWxVUkwgJXMiLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21h
aW4gPSAlcywgY29kZSA9ICVkIiwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJy
b3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFn
ZUNsaWVudCgpKTsKIApAQCAtNDE0MSw5ICs0MTQxLDkgQEAgc3RhdGljIGJvb2wgaXNOb25Vbmlx
dWVOYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSBy
ZXEKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9h
ZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBi
b29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4g
aGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgTE9H
KExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExv
YWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9wYWdlSUQsIG5hdmlnYXRpb25J
RCk7CisgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAi
IGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9wYWdlSUQu
dG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9G
b3J3YXJkKSBBZnRlciBsb2FkIGNvbW1pdCwgYmFjay9mb3J3YXJkIGxpc3QgaXMgbm93OiVzIiwg
bV9iYWNrRm9yd2FyZExpc3QtPmxvZ2dpbmdTdHJpbmcoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI1NCw3ICs0MjU0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJ
RCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC00Mjc4LDcgKzQyNzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aQogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9h
ZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lIC0gV2ViUGFnZVByb3h5
ICVwIHdpdGggbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiIGRpZEZpbmlzaExvYWQiLCB0aGlzLCBu
YXZpZ2F0aW9uSUQpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZp
bmlzaExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5p
c2hMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQzMjMsNyArNDMyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAl
ZCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQsIGVy
cm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWlu
ID0gJXMsIGNvZGUgPSAlZCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJy
b3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFn
ZUNsaWVudCgpKTsKIApAQCAtNDM2NSw3ICs0MzY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgb3BhcXVl
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFVSTCYmIHVybCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGll
bnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ1MzUsNyArNDUzNSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYs
IGJvb2wsIFdlYkZyYW1lUG9saWN5TGlzdGVuCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELAotICAgIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAg
ICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1
aW50NjRfdCBsaXN0ZW5lcklEKQogewogICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25Bc3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1l
U2VjdXJpdHlPcmlnaW4pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdh
dGlvbkFjdGlvbkRhdGEpLApAQCAtNDU0Myw3ICs0NTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3IKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmln
aW4sCi0gICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
UGFnZUlELAorICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogewpAQCAtNDU1OSw3ICs0NTU5LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3gKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJGcmFt
ZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELAotICAgIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwKKyAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LAogICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBMT0coTG9hZGlu
ZywgIldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiAtIE9yaWdp
bmFsIFVSTCAlcywgY3VycmVudCB0YXJnZXQgVVJMICVzIiwgb3JpZ2luYWxSZXF1ZXN0LnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CkBAIC00Njk5LDcgKzQ2OTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAg
ICAgICBpZiAoIWZyb21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCiAgICAgICAg
ICAgICBzb3VyY2VGcmFtZUluZm8gPSBkZXN0aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7CiAg
ICAgICAgIGVsc2UgaWYgKCFmcm9tQVBJKQotICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0g
QVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0
aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRy
KTsKKyAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUo
b3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndl
YlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6IG51bGxwdHIpOwogCiAgICAgICAgIGF1dG8gdXNl
ckluaXRpYXRlZEFjdGl2aXR5ID0gcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmln
YXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICAgICAgICAgYm9v
bCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2
aWdhdGlvblBvbGljeURlY2lzaW9uCkBAIC00NzcyLDcgKzQ3NzIsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25z
dCBVUkwmIHBhZwogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CkBAIC00NzkwLDcgKzQ3OTAsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3Qg
ZnJhbWVJRCwgYm9vbCBpcwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCB1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRl
bnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYg
cmVwbHkpCiB7CkBAIC00ODIxLDcgKzQ4MjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaQog
ICAgICAgICBBU1NFUlRfVU5VU0VEKHNhZmVCcm93c2luZ1dhcm5pbmcsICFzYWZlQnJvd3NpbmdX
YXJuaW5nKTsKIAogICAgICAgICBhdXRvIHNlbmRlciA9IFBvbGljeURlY2lzaW9uU2VuZGVyOjpj
cmVhdGUoaWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCBmcmFtZUlELCBsaXN0ZW5lcklEXSAoYXV0by4uLiBhcmdzKSB7Ci0gICAgICAgICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihmcmFtZUlELCBsaXN0ZW5lcklELCBhcmdzLi4uKSwgbV9wYWdlSUQpOworICAgICAgICAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1l
SUQsIGxpc3RlbmVySUQsIGFyZ3MuLi4pKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgcmVjZWl2
ZWRQb2xpY3lEZWNpc2lvbihwb2xpY3lBY3Rpb24sIG51bGxwdHIsIFdURjo6bnVsbG9wdCwgV1RG
TW92ZShzZW5kZXIpKTsKQEAgLTQ5MDcsNyArNDkwNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3
aWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBj
b25zCiAgICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIHNvdXJjZUZyYW1lKTsKIAogICAgIG1f
Zm9ybUNsaWVudC0+d2lsbFN1Ym1pdEZvcm0oKnRoaXMsICpmcmFtZSwgKnNvdXJjZUZyYW1lLCB0
ZXh0RmllbGRWYWx1ZXMsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGZyYW1lSUQsIGxpc3RlbmVySURdKCkgewotICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0oZnJhbWVJRCwgbGlzdGVuZXJJ
RCksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29udGludWVX
aWxsU3VibWl0Rm9ybShmcmFtZUlELCBsaXN0ZW5lcklEKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ5
MjMsNyArNDkyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0
aW9uRGF0YShjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCB1aW50
NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRp
ZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlv
bkRhdGFTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVu
dFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDk0Myw3ICs0OTQzLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZv
cm1DbGllbnRSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNv
bnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJM
U3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDk3MCw3
ICs0OTcwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3Rp
bmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1TZXJ2
ZXJSZWRpcmVjdDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC01MDE4LDE0ICs1MDE4LDE0
IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU182CiAjZW5kaWYKIH0KIAot
dm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBh
Z2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJl
cywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAg
ICAgTUVTU0FHRV9DSEVDSyhtX3Byb2Nlc3MsIG1fcHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpKTsKLSAgICBhdXRvIG9yaWdpbmF0aW5nRnJhbWVJbmZv
ID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG1fcHJv
Y2Vzcy0+d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJRCkpOworICAgIGF1dG8gb3JpZ2luYXRpbmdG
cmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0
YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBtX3Byb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFn
ZUlEKSA6IG51bGxwdHIpOwogICAgIGF1dG8gbWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUgPyBt
X21haW5GcmFtZS0+dXJsKCkgOiBVUkwoKTsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0g
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1
ZXN0LCByZXBseSA9IFdURk1vdmUocmVwbHkpXSAoUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFn
ZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghbmV3UGFnZSkgewotICAgICAgICAgICAgcmVwbHko
MCwgV1RGOjpudWxsb3B0KTsKKyAgICAgICAgICAgIHJlcGx5KFdURjo6bnVsbG9wdCwgV1RGOjpu
dWxsb3B0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC01Mzc0LDcgKzUz
NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbQogdm9pZCBXZWJQYWdlUHJveHk6OnNob3dT
aGFyZVNoZWV0KGNvbnN0IFNoYXJlRGF0YVdpdGhQYXJzZWRVUkwmIHNoYXJlRGF0YSwgU2hhcmVT
aGVldENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNhbGxiYWNrSURdIChib29sIGFjY2VzcykgewotICAgICAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENvbXBsZXRlU2hhcmVTaGVldChhY2Nlc3MsIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZENvbXBsZXRlU2hhcmVTaGVldChhY2Nlc3MsIGNhbGxiYWNrSUQpKTsKICAgICB9OwogICAgIAog
ICAgIHBhZ2VDbGllbnQoKS5zaG93U2hhcmVTaGVldChzaGFyZURhdGEsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKQEAgLTU0MDYsNyArNTQwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpz
ZXRNZWRpYVZvbHVtZShmbG9hdCB2b2x1bWUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRNZWRpYVZvbHVtZSh2b2x1bWUpLCBtX3BhZ2VJRCk7ICAgIAorICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldE1lZGlhVm9sdW1lKHZvbHVtZSkpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0TXV0ZWQoV2ViQ29yZTo6TWVkaWFQcm9kdWNlcjo6TXV0ZWRTdGF0ZUZs
YWdzIHN0YXRlKQpAQCAtNTQyMiw3ICs1NDIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE11
dGVkKFdlYkNvcmU6Ok1lZGlhUHJvZHVjZXI6Ok11dGVkU3RhdGVGbGFncyBzdGF0ZSkKICAgICAg
ICAgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLm11dGVDYXB0dXJlTWVkaWFT
dHJlYW1zRXhjZXB0SW4oKnRoaXMpOwogI2VuZGlmCiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldE11dGVkKHN0YXRlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldE11dGVkKHN0YXRlKSk7CiAgICAgYWN0aXZpdHlTdGF0ZURpZENo
YW5nZSh7IEFjdGl2aXR5U3RhdGU6OklzQXVkaWJsZSwgQWN0aXZpdHlTdGF0ZTo6SXNDYXB0dXJp
bmdNZWRpYSB9KTsKIH0KIApAQCAtNTQ0NCw3ICs1NDQ0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnN0b3BNZWRpYUNhcHR1cmUoKQogICAgICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcE1lZGlh
Q2FwdHVyZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3RvcE1l
ZGlhQ2FwdHVyZSgpKTsKICNlbmRpZgogfQogCkBAIC01NDUzLDcgKzU0NTMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c3RvcEFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTdG9wQWxsTWVkaWFQbGF5YmFjaygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6U3RvcEFsbE1lZGlhUGxheWJhY2soKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpzdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpCkBAIC01NDYxLDcgKzU0NjEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEFsbE1lZGlhUGxheWJhY2soKQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTdXNwZW5kQWxsTWVkaWFQbGF5YmFjaygpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U3VzcGVuZEFsbE1lZGlhUGxheWJhY2so
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBbGxNZWRpYVBsYXliYWNrKCkKQEAg
LTU0NjksNyArNTQ2OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXN1bWVBbGxNZWRpYVBsYXli
YWNrKCkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWxsTWVkaWFQbGF5
YmFjaygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdW1lQWxs
TWVkaWFQbGF5YmFjaygpKTsKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TRVNTSU9OKQpAQCAtNTQ3
OCw3ICs1NDc4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZU1lZGlhRXZlbnQoTWVkaWFF
dmVudFR5cGUgZXZlbnRUeXBlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
SGFuZGxlTWVkaWFFdmVudChldmVudFR5cGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6SGFuZGxlTWVkaWFFdmVudChldmVudFR5cGUpKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldFZvbHVtZU9mTWVkaWFFbGVtZW50KGRvdWJsZSB2b2x1bWUsIHVpbnQ2NF90
IGVsZW1lbnRJRCkKQEAgLTU0ODYsNyArNTQ4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRW
b2x1bWVPZk1lZGlhRWxlbWVudChkb3VibGUgdm9sdW1lLCB1aW50NjRfdCBlbGVtZW50SUQpCiAg
ICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFZvbHVtZU9mTWVkaWFFbGVtZW50KHZv
bHVtZSwgZWxlbWVudElEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldFZvbHVtZU9mTWVkaWFFbGVtZW50KHZvbHVtZSwgZWxlbWVudElEKSk7CiB9CiAjZW5kaWYK
IApAQCAtNTUwMCw3ICs1NTAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1heVN0YXJ0TWVk
aWFXaGVuSW5XaW5kb3coYm9vbCBtYXlTdGFydE1lZGlhKQogICAgIGlmICghaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldE1heVN0YXJ0TWVkaWFXaGVuSW5XaW5kb3cobWF5U3RhcnRNZWRpYSksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYXlTdGFydE1lZGlhV2hl
bkluV2luZG93KG1heVN0YXJ0TWVkaWEpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5JiBkb3dubG9hZCkKQEAgLTU1NDcsNyArNTU0
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDaG9vc2VDb2xvcihjb25zdCBXZWJDb3JlOjpD
b2xvciYgY29sb3IpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUNv
bG9yKGNvbG9yKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENo
b29zZUNvbG9yKGNvbG9yKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRFbmRDb2xvclBp
Y2tlcigpCkBAIC01NTU2LDcgKzU1NTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRW5kQ29s
b3JQaWNrZXIoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRFbmRDb2xvclBp
Y2tlcigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkRW5kQ29s
b3JQaWNrZXIoKSk7CiB9CiAjZW5kaWYKIApAQCAtNTU5MCw3ICs1NTkwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZENsb3NlU3VnZ2VzdGlvbnMoKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2RhdGFMaXN0U3VnZ2VzdGlvbnNEcm9wZG93biA9IG51bGxwdHI7Ci0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDbG9zZVN1Z2dlc3Rpb25zKCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDbG9zZVN1Z2dlc3Rpb25zKCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2VsZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0
ZWRPcHRpb24pCkBAIC01NTk4LDcgKzU1OTgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2Vs
ZWN0T3B0aW9uKGNvbnN0IFN0cmluZyYgc2VsZWN0ZWRPcHRpb24pCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdERhdGFMaXN0T3B0aW9uKHNlbGVjdGVkT3B0aW9uKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdERhdGFMaXN0
T3B0aW9uKHNlbGVjdGVkT3B0aW9uKSk7CiB9CiAKICNlbmRpZgpAQCAtNTY1MSw3ICs1NjUxLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldEFsbG93c01lZGlhRG9jdW1lbnRJbmxpbmVQbGF5YmFj
ayhib29sIGFsbG93cykKICAgICAgICAgcmV0dXJuOwogICAgIG1fYWxsb3dzTWVkaWFEb2N1bWVu
dElubGluZVBsYXliYWNrID0gYWxsb3dzOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYWxsb3dzKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEFsbG93c01lZGlhRG9j
dW1lbnRJbmxpbmVQbGF5YmFjayhhbGxvd3MpKTsKIH0KICNlbmRpZgogCkBAIC01ODM0LDE3ICs1
ODM0LDE3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29u
bmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2VJRDsKKyAgICByZXR1cm4g
bV9wYWdlSUQudG9VSW50NjQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hhbmdl
ZEZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRl
eCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENoYW5nZVNl
bGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUobmV3U2VsZWN0ZWRJbmRleCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9y
QWN0aXZlUG9wdXBNZW51KG5ld1NlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMy
X3QgaW5kZXgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRU
ZXh0Rm9yQWN0aXZlUG9wdXBNZW51KGluZGV4KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldFRleHRGb3JBY3RpdmVQb3B1cE1lbnUoaW5kZXgpKTsKIH0KIAogYm9v
bCBXZWJQYWdlUHJveHk6OmlzUHJvY2Vzc2luZ0tleWJvYXJkRXZlbnRzKCkgY29uc3QKQEAgLTU4
NzksMTMgKzU4NzksMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBvc3RNZXNzYWdlVG9JbmplY3Rl
ZEJ1bmRsZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok8KICAgICAvLyBGb3IgYmFj
a3dhcmQtY29tcGF0aWJpbGl0eSwgbWFrZSBzdXJlIHdlIGxhdW5jaCB0aGUgaW5pdGlhbCBwcm9j
ZXNzIGlmIHRoZSBjbGllbnQgYXNrcyB0byBwb3N0IGEgbWVzc2FnZSB0byBpdHMgaW5qZWN0ZWQg
YnVuZGxlIGJlZm9yZSBkb2luZyBhIGxvYWQuCiAgICAgbGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5l
Y2Vzc2FyeSgpOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBvc3RJ
bmplY3RlZEJ1bmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKHByb2Nlc3MoKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KS5nZXQoKSkpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UG9zdEluamVjdGVkQnVuZGxlTWVzc2FnZShtZXNz
YWdlTmFtZSwgVXNlckRhdGEocHJvY2VzcygpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVz
c2FnZUJvZHkpLmdldCgpKSkpOwogfQogCiAjaWYgUExBVEZPUk0oR1RLKQogdm9pZCBXZWJQYWdl
UHJveHk6OmZhaWxlZFRvU2hvd1BvcHVwTWVudSgpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpGYWlsZWRUb1Nob3dQb3B1cE1lbnUoKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZhaWxlZFRvU2hvd1BvcHVwTWVudSgpKTsKIH0KICNl
bmRpZgogCkBAIC01OTUyLDcgKzU5NTIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2hvd0NvbnRl
eHRNZW51KENvbnRleHRNZW51Q29udGV4dERhdGEmJiBjb250ZXh0TWVudUNvbnRleHREYQogICAg
IG1fYWN0aXZlQ29udGV4dE1lbnUtPnNob3coKTsKIAogICAgIC8vIE5vIG1hdHRlciB0aGUgcmVz
dWx0IG9mIGludGVybmFsU2hvd0NvbnRleHRNZW51LCBhbHdheXMgbm90aWZ5IHRoZSBXZWJQcm9j
ZXNzIHRoYXQgdGhlIG1lbnUgaXMgaGlkZGVuIHNvIGl0IHN0YXJ0cyBoYW5kbGluZyBtb3VzZSBl
dmVudHMgYWdhaW4uCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb250
ZXh0TWVudUhpZGRlbigpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
Q29udGV4dE1lbnVIaWRkZW4oKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250ZXh0TWVu
dUl0ZW1TZWxlY3RlZChjb25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJiBpdGVtKQpAQCAtNjAz
MCwxMiArNjAzMCwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYgaXRlbSkKICAgICBpZiAoaXRlbS5hY3Rp
b24oKSA9PSBDb250ZXh0TWVudUl0ZW1UYWdMZWFyblNwZWxsaW5nIHx8IGl0ZW0uYWN0aW9uKCkg
PT0gQ29udGV4dE1lbnVJdGVtVGFnSWdub3JlU3BlbGxpbmcpCiAgICAgICAgICsrbV9wZW5kaW5n
TGVhcm5Pcklnbm9yZVdvcmRNZXNzYWdlQ291bnQ7CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OkRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoaXRlbSks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRTZWxlY3RJdGVtRnJv
bUFjdGl2ZUNvbnRleHRNZW51KGl0ZW0pKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmhhbmRs
ZUNvbnRleHRNZW51S2V5RXZlbnQoKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6Q29udGV4dE1lbnVGb3JLZXlFdmVudCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q29udGV4dE1lbnVGb3JLZXlFdmVudCgpKTsKIH0KICNlbmRpZiAv
LyBFTkFCTEUoQ09OVEVYVF9NRU5VUykKIApAQCAtNjA1MSwxMCArNjA1MSwxMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0Fu
ZEljb24oY29uc3QgVmVjdAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsZVVSTHMuc2l6
ZSgpOyArK2kpCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNyZWF0ZUhhbmRsZShmaWxlVVJM
c1tpXSwgU2FuZGJveEV4dGVuc2lvbjo6VHlwZTo6UmVhZE9ubHksIHNhbmRib3hFeHRlbnNpb25I
YW5kbGVzW2ldKTsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RXh0
ZW5kU2FuZGJveEZvckZpbGVzRnJvbU9wZW5QYW5lbChzYW5kYm94RXh0ZW5zaW9uSGFuZGxlcyks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9y
RmlsZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSk7CiAjZW5kaWYKIAot
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hvb3NlRmlsZXNGb3JP
cGVuUGFuZWxXaXRoRGlzcGxheVN0cmluZ0FuZEljb24oZmlsZVVSTHMsIGRpc3BsYXlTdHJpbmcs
IGljb25EYXRhID8gaWNvbkRhdGEtPmRhdGFSZWZlcmVuY2UoKSA6IElQQzo6RGF0YVJlZmVyZW5j
ZSgpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENob29zZUZp
bGVzRm9yT3BlblBhbmVsV2l0aERpc3BsYXlTdHJpbmdBbmRJY29uKGZpbGVVUkxzLCBkaXNwbGF5
U3RyaW5nLCBpY29uRGF0YSA/IGljb25EYXRhLT5kYXRhUmVmZXJlbmNlKCkgOiBJUEM6OkRhdGFS
ZWZlcmVuY2UoKSkpOwogCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci0+aW52YWxpZGF0
ZSgpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRyOwpAQCAtNjA3OSwx
MCArNjA3OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFu
ZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVVUkxzKQogICAgICAgICB9CiAgICAgfQogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFeHRlbmRTYW5kYm94Rm9yRmls
ZXNGcm9tT3BlblBhbmVsKHNhbmRib3hFeHRlbnNpb25IYW5kbGVzKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkV4dGVuZFNhbmRib3hGb3JGaWxlc0Zyb21PcGVuUGFu
ZWwoc2FuZGJveEV4dGVuc2lvbkhhbmRsZXMpKTsKICNlbmRpZgogCi0gICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChmaWxlVVJM
cyksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbChmaWxlVVJMcykpOwogCiAgICAgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5l
ci0+aW52YWxpZGF0ZSgpOwogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIgPSBudWxscHRy
OwpAQCAtNjA5Myw3ICs2MDkzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbEZvck9w
ZW5QYW5lbCgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZENhbmNlbEZvck9w
ZW5QYW5lbCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2Fu
Y2VsRm9yT3BlblBhbmVsKCkpOwogICAgIAogICAgIG1fb3BlblBhbmVsUmVzdWx0TGlzdGVuZXIt
PmludmFsaWRhdGUoKTsKICAgICBtX29wZW5QYW5lbFJlc3VsdExpc3RlbmVyID0gbnVsbHB0cjsK
QEAgLTYxMDEsNyArNjEwMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxGb3JPcGVu
UGFuZWwoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJv
b2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpBZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoc3RhcnRCZWZvcmVTZWxlY3Rpb24p
LCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWR2YW5jZVRvTmV4dE1p
c3NwZWxsaW5nKHN0YXJ0QmVmb3JlU2VsZWN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpjaGFuZ2VTcGVsbGluZ1RvV29yZChjb25zdCBTdHJpbmcmIHdvcmQpCkBAIC02MTA5LDcgKzYx
MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3Ry
aW5nJiB3b3JkKQogICAgIGlmICh3b3JkLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VTcGVsbGluZ1RvV29y
ZCh3b3JkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZVNw
ZWxsaW5nVG9Xb3JkKHdvcmQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRp
dENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYgY29tbWFuZFByb3h5LCBVbmRvT3JS
ZWRvIHVuZG9PclJlZG8pCkBAIC02MTI4LDcgKzYxMjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVtb3ZlRWRpdENvbW1hbmQoV2ViRWRpdENvbW1hbmRQcm94eSYgY29tbWFuZCkKIAogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlRWRpdENvbW1hbmQoY29tbWFuZC5jb21t
YW5kSUQoKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1v
dmVFZGl0Q29tbWFuZChjb21tYW5kLmNvbW1hbmRJRCgpKSk7CiB9CiAKIGJvb2wgV2ViUGFnZVBy
b3h5OjpjYW5VbmRvKCkKQEAgLTYyMTcsMTIgKzYyMTcsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgVGV4dENo
ZWNraW4KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaENoZWNraW5nVGV4dCh1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0Q2hlY2tpbmdSZXN1bHQ+JiBy
ZXN1bHQpCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRGaW5p
c2hDaGVja2luZ1RleHQocmVxdWVzdElELCByZXN1bHQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkRmluaXNoQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCwgcmVzdWx0
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDaGVja2luZ1RleHQodWludDY0
X3QgcmVxdWVzdElEKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KHJlcXVlc3RJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpEaWRDYW5jZWxDaGVja2luZ1RleHQocmVxdWVzdElEKSk7CiB9CiAv
LyBPdGhlcgogCkBAIC02MzUxLDcgKzYzNTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZUV2ZW50KHVpbnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCkKICAgICAgICAgYm9v
bCBjYW5Qcm9jZXNzTW9yZUtleUV2ZW50cyA9ICFtX2tleUV2ZW50UXVldWUuaXNFbXB0eSgpOwog
ICAgICAgICBpZiAoY2FuUHJvY2Vzc01vcmVLZXlFdmVudHMpIHsKICAgICAgICAgICAgIExPRyhL
ZXlIYW5kbGluZywgIiBVSSBwcm9jZXNzOiBzZW50IGtleUV2ZW50IGZyb20gZGlkUmVjZWl2ZUV2
ZW50Iik7Ci0gICAgICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Oktl
eUV2ZW50KG1fa2V5RXZlbnRRdWV1ZS5maXJzdCgpKSwgbV9wYWdlSUQpOworICAgICAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6S2V5RXZlbnQobV9rZXlFdmVudFF1ZXVlLmZpcnN0KCkp
KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZSBjYWxsIHRvIGRvbmVXaXRoS2V5RXZlbnQg
bWF5IGNsb3NlIHRoaXMgV2ViUGFnZS4KQEAgLTY3MTUsNyArNjcxNSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpmcmFtZVNldExhcmdlc3RGcmFtZUNoYW5nZWQodWludDY0X3QgZnJhbWVJRCkKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJlc3Bv
bnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTY3MjcsNyArNjcyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVj
b21lVW5yZXNwb25zaXZlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVS
ZXNwb25zaXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9j
ZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTcyMzMsNyArNzIzMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpiYWNrRm9yd2FyZENsZWFyKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmdhbWVwYWRBY3Rpdml0
eShjb25zdCBWZWN0b3I8R2FtZXBhZERhdGE+JiBnYW1lcGFkRGF0YXMsIGJvb2wgc2hvdWxkTWFr
ZUdhbWVwYWRzVmlzaWJsZSkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkdhbWVwYWRBY3Rpdml0eShnYW1lcGFkRGF0YXMsIHNob3VsZE1ha2VHYW1lcGFkc1Zpc2li
bGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2FtZXBhZEFjdGl2
aXR5KGdhbWVwYWREYXRhcywgc2hvdWxkTWFrZUdhbWVwYWRzVmlzaWJsZSkpOwogfQogCiAjZW5k
aWYKQEAgLTc1MzksNyArNzUzOSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp3aWxsSGFuZGxlSG9y
aXpvbnRhbFNjcm9sbEV2ZW50cygpIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVX
ZWJzaXRlUG9saWNpZXMoV2Vic2l0ZVBvbGljaWVzRGF0YSYmIHdlYnNpdGVQb2xpY2llcykKIHsK
LSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVdlYnNpdGVQb2xp
Y2llcyh3ZWJzaXRlUG9saWNpZXMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VXBkYXRlV2Vic2l0ZVBvbGljaWVzKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlk
ZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBkYXRhUmVmZXJlbmNlKQpAQCAtNzU0OSw3ICs3NTQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKGNvbnN0IFN0
cmluZyYgc3UKIAogdm9pZCBXZWJQYWdlUHJveHk6OmJhY2tGb3J3YXJkUmVtb3ZlZEl0ZW0oY29u
c3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlEKQogewotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVtb3ZlQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCks
IG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZW1vdmVCYWNrRm9y
d2FyZEl0ZW0oaXRlbUlEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRDYW5SdW5Nb2Rh
bChib29sIGNhblJ1bk1vZGFsKQpAQCAtNzU2Miw3ICs3NTYyLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OnNldENhblJ1bk1vZGFsKGJvb2wgY2FuUnVuTW9kYWwpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlNldENhblJ1bk1vZGFsKG1fY2FuUnVuTW9kYWwpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuTW9kYWwobV9jYW5SdW5Nb2RhbCkp
OwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6Y2FuUnVuTW9kYWwoKQpAQCAtNzU3Niw3ICs3NTc2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJh
bWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmYKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9p
c0luUHJpbnRpbmdNb2RlID0gdHJ1ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkJlZ2luUHJpbnRpbmcoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvKSwgbV9wYWdl
SUQsIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikp
OworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJlZ2luUHJpbnRpbmcoZnJhbWUtPmZyYW1l
SUQoKSwgcHJpbnRJbmZvKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVBy
aW50T3BlcmF0aW9uKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjplbmRQcmludGluZygpCkBA
IC03NTg1LDcgKzc1ODUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZW5kUHJpbnRpbmcoKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX2lzSW5QcmludGluZ01vZGUgPSBmYWxzZTsKLSAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVuZFByaW50aW5nKCksIG1fcGFnZUlELCBw
cmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbmRQcmludGluZygpLCBwcmludGluZ1NlbmRPcHRp
b25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KIAogdm9pZCBXZWJQYWdl
UHJveHk6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25z
dCBQcmludEluZm8mIHByaW50SW5mbywgUmVmPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4mJiBjYWxs
YmFjaykKQEAgLTc1OTgsNyArNzU5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21wdXRlUGFn
ZXNGb3JQcmludGluZyhXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvCiAgICAg
YXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2NhbGxiYWNr
cy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwogICAgIG1faXNJblByaW50aW5nTW9kZSA9IHRydWU7
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQ
cmludGluZyhmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBtX3BhZ2VJ
RCwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcoZnJh
bWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBjYWxsYmFja0lEKSwgcHJpbnRpbmdTZW5kT3B0aW9u
cyhtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAKICNpZiBQTEFURk9STShD
T0NPQSkKQEAgLTc2MTEsNyArNzYxMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UmVjdFRv
SW1hZ2UoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJCiAgICAg
CiAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RHJhd1JlY3RUb0ltYWdlKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5m
bywgcmVjdCwgaW1hZ2VTaXplLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9w
dGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRyYXdSZWN0VG9JbWFnZShmcmFtZS0+ZnJhbWVJRCgpLCBwcmludEluZm8s
IHJlY3QsIGltYWdlU2l6ZSwgY2FsbGJhY2tJRCksIHByaW50aW5nU2VuZE9wdGlvbnMobV9pc1Bl
cmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJh
d1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJ
bmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJlZjxEYXRhQ2FsbGJhY2s+JiYg
Y2FsbGJhY2spCkBAIC03NjIzLDcgKzc2MjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1Bh
Z2VzVG9QREYoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgog
ICAgIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAgICAg
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50
SW5mbywgZmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIHByaW50aW5nU2VuZE9w
dGlvbnMobV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbikpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywg
Zmlyc3QsIGNvdW50LCBjYWxsYmFja0lEKSwgcHJpbnRpbmdTZW5kT3B0aW9ucyhtX2lzUGVyZm9y
bWluZ0RPTVByaW50T3BlcmF0aW9uKSk7CiB9CiAjZWxpZiBQTEFURk9STShHVEspCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZHJhd1BhZ2VzRm9yUHJpbnRpbmcoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNv
bnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBSZWY8UHJpbnRGaW5pc2hlZENhbGxiYWNrPiYmIGNh
bGxiYWNrKQpAQCAtNzYzNiw3ICs3NjM2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdl
c0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBQcmludEluZm8mIHAKICAg
ICBhdXRvIGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwogICAgIG1fY2FsbGJh
Y2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrKSk7CiAgICAgbV9pc0luUHJpbnRpbmdNb2RlID0gdHJ1
ZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRyYXdQYWdlc0ZvclBy
aW50aW5nKGZyYW1lLT5mcmFtZUlEKCksIHByaW50SW5mbywgY2FsbGJhY2tJRCksIG1fcGFnZUlE
LCBwcmludGluZ1NlbmRPcHRpb25zKG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNGb3JQcmludGluZyhmcmFtZS0+
ZnJhbWVJRCgpLCBwcmludEluZm8sIGNhbGxiYWNrSUQpLCBwcmludGluZ1NlbmRPcHRpb25zKG1f
aXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24pKTsKIH0KICNlbmRpZgogCkBAIC03NjgxLDcg
Kzc2ODEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0Vmlld0xheW91dFNpemUoY29uc3QgSW50
U2l6ZSYgdmlld0xheW91dFNpemUpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFZpZXdMYXlvdXRTaXplKHZpZXdMYXlvdXRTaXplKSk7CiAgICAg
bV9kcmF3aW5nQXJlYS0+dmlld0xheW91dFNpemVEaWRDaGFuZ2UoKTsKIAogI2lmIFVTRShBUFBL
SVQpCkBAIC03NzAwLDcgKzc3MDAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0QXV0b1Npemlu
Z1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChib29sIHNob3VsZEV4cGFuZCkKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0QXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdo
dChzaG91bGRFeHBhbmQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
U2V0QXV0b1NpemluZ1Nob3VsZEV4cGFuZFRvVmlld0hlaWdodChzaG91bGRFeHBhbmQpKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMo
Y29uc3QgSW50U2l6ZSYgdmlld3BvcnRTaXplKQpAQCAtNzcxMyw3ICs3NzEzLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHMoY29uc3QgSW50
U2l6ZSYgdmlld3BvcnRTaXoKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmll
d3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyh2aWV3cG9ydFNpemUpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRV
bml0cyh2aWV3cG9ydFNpemUpKTsKIH0KIAogI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNF
TUVOVCkKQEAgLTc3ODQsNyArNzc4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNvcmRBdXRv
Y29ycmVjdGlvblJlc3BvbnNlKGludDMyX3QgcmVzcG9uc2UsIGNvbnN0IFN0cmluZyYKIHZvaWQg
V2ViUGFnZVByb3h5OjpoYW5kbGVBbHRlcm5hdGl2ZVRleHRVSVJlc3VsdChjb25zdCBTdHJpbmcm
IHJlc3VsdCkKIHsKICAgICBpZiAoIWlzQ2xvc2VkKCkpCi0gICAgICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWx0ZXJuYXRpdmVUZXh0VUlSZXN1bHQocmVzdWx0
KSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIYW5kbGVBbHRl
cm5hdGl2ZVRleHRVSVJlc3VsdChyZXN1bHQpKTsKIH0KIAogI2lmIFVTRShESUNUQVRJT05fQUxU
RVJOQVRJVkVTKQpAQCAtNzgyNSw3ICs3ODI1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENv
bXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgdGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW4K
ICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBy
b2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRl
cmxpbmVzLCBzZWxlY3Rpb25TdGFydCwgc2VsZWN0aW9uRW5kLCByZXBsYWNlbWVudFJhbmdlU3Rh
cnQsIHJlcGxhY2VtZW50UmFuZ2VFbmQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6U2V0Q29tcG9zaXRpb24odGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uU3RhcnQs
IHNlbGVjdGlvbkVuZCwgcmVwbGFjZW1lbnRSYW5nZVN0YXJ0LCByZXBsYWNlbWVudFJhbmdlRW5k
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgU3Ry
aW5nJiBjb21wb3NpdGlvblN0cmluZywgaW50NjRfdCBzZWxlY3Rpb25TdGFydCwgaW50NjRfdCBz
ZWxlY3Rpb25MZW5ndGgpCkBAIC03ODMzLDcgKzc4MzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y29uZmlybUNvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYgY29tcG9zaXRpb25TdHJpbmcsIGludDY0
X3QgcwogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbihj
b21wb3NpdGlvblN0cmluZywgc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkxlbmd0aCksIG1fcGFn
ZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDb25maXJtQ29tcG9zaXRpb24oY29t
cG9zaXRpb25TdHJpbmcsIHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25MZW5ndGgpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmNhbmNlbENvbXBvc2l0aW9uKCkKQEAgLTc4NDEsNyArNzg0MSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjYW5jZWxDb21wb3NpdGlvbigpCiAgICAgaWYgKCFoYXNS
dW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Q2FuY2VsQ29tcG9zaXRpb24oKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbENvbXBvc2l0aW9uKCkpOwogfQogI2VuZGlmIC8v
IFBMQVRGT1JNKEdUSykKIApAQCAtNzg1OCw3ICs3ODU4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykK
ICAgICBtX3Njcm9sbFBpbm5pbmdCZWhhdmlvciA9IHBpbm5pbmc7CiAKICAgICBpZiAoaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IocGlubmluZyksIG1fcGFnZUlEKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2Nyb2xsUGlubmluZ0JlaGF2aW9yKHBpbm5pbmcp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJTdHlsZShPcHRp
b25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3R5bGU+IHNjcm9sbGJhclN0eWxlKQpAQCAt
Nzg3Niw3ICs3ODc2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE92ZXJsYXlTY3JvbGxiYXJT
dHlsZShPcHRpb25hbDxXZWJDb3JlOjpTY3JvbGxiYXJPdmVybGF5U3QKICAgICAgICAgc2Nyb2xs
YmFyU3R5bGVGb3JNZXNzYWdlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFyT3ZlcmxheVN0eWxlPihz
Y3JvbGxiYXJTdHlsZS52YWx1ZSgpKTsKIAogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbGJhck92
ZXJsYXlTdHlsZShzY3JvbGxiYXJTdHlsZUZvck1lc3NhZ2UpLCBtX3BhZ2VJRCk7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShzY3JvbGxi
YXJTdHlsZUZvck1lc3NhZ2UpKTsKIH0KIAogI2lmIEVOQUJMRShXRUJfQ1JZUFRPKQpAQCAtNzky
MSw3ICs3OTIxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxs
ZW5nZVN0cmluZyh1bnNpZ25lZCBrZXlTaXplSW5kZXgsIGNvbnMKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92aWRlcihjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QWRkTUlN
RVR5cGVXaXRoQ3VzdG9tQ29udGVudFByb3ZpZGVyKG1pbWVUeXBlKSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFkZE1JTUVUeXBlV2l0aEN1c3RvbUNvbnRlbnRQcm92
aWRlcihtaW1lVHlwZSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hhbmdlRm9udEF0dHJp
YnV0ZXMoV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZUNoYW5nZXMmJiBjaGFuZ2VzKQpAQCAtNzkyOSw3
ICs3OTI5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdlYkNv
cmU6OkZvbnRBdHRyaWJ1dGVDaGFuZ2VzJiYgY2hhbmdlcykKICAgICBpZiAoIWhhc1J1bm5pbmdQ
cm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDaGFuZ2VGb250QXR0cmlidXRlcyhXVEZNb3ZlKGNoYW5nZXMpKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnRBdHRyaWJ1dGVzKFdU
Rk1vdmUoY2hhbmdlcykpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQoV2Vi
Q29yZTo6Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQpAQCAtNzkzNyw3ICs3OTM3LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5nZXMmJiBjaGFuZ2VzKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJv
Y2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZUZvbnQoV1RGTW92ZShjaGFuZ2Vz
KSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDaGFuZ2VGb250KFdU
Rk1vdmUoY2hhbmdlcykpKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtNzk0NSw3ICs3
OTQ1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZUZvbnQoV2ViQ29yZTo6Rm9udENoYW5n
ZXMmJiBjaGFuZ2VzKQogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRBc3luYyhjb25zdCBTdHJp
bmcmIHRleHQpCiB7CiAgICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCi0gICAgICAgIHByb2Nl
c3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRUZXh0QXN5bmModGV4dCksIG1fcGFnZUlE
KTsKKyAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0VGV4dEFzeW5jKHRleHQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRl
eHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgSW5zZXJ0VGV4dE9wdGlv
bnMmJiBvcHRpb25zKQpAQCAtNzk1Myw3ICs3OTUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omlu
c2VydFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nZSYgcmVw
bGEKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5bmModGV4dCwg
cmVwbGFjZW1lbnRSYW5nZSwgV1RGTW92ZShvcHRpb25zKSksIG1fcGFnZUlEKTsKKyAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5n
ZSwgV1RGTW92ZShvcHRpb25zKSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFzTWFya2Vk
VGV4dChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQpAQCAtNzk2Miw3
ICs3OTYyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omhhc01hcmtlZFRleHQoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okhhc01hcmtlZFRleHQoKSwgV1RGTW92
ZShjYWxsYmFjayksIG1fcGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6Okhhc01hcmtlZFRleHQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0TWFya2VkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVk
aXRpbmdSYW5nZSwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAg
LTc5NzMsNyArNzk3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRNYXJrZWRSYW5nZUFzeW5j
KFdURjo6RnVuY3Rpb248dm9pZCAoRWRpdGluZ1JhbmdlLCBDYWxsYmFjCiAgICAgfQogCiAgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0g
ICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldE1hcmtlZFJhbmdlQXN5bmMo
Y2FsbGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRN
YXJrZWRSYW5nZUFzeW5jKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omdl
dFNlbGVjdGVkUmFuZ2VBc3luYyhXVEY6OkZ1bmN0aW9uPHZvaWQgKEVkaXRpbmdSYW5nZSwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKQEAgLTc5ODQsNyArNzk4NCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRTZWxlY3RlZFJhbmdlQXN5bmMoV1RGOjpGdW5jdGlv
bjx2b2lkIChFZGl0aW5nUmFuZ2UsIENhbGxiCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFuZ2VBc3luYyhjYWxsYmFja0lEKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFNlbGVjdGVkUmFuZ2VB
c3luYyhjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjaGFyYWN0ZXJJbmRl
eEZvclBvaW50QXN5bmMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKHVpbnQ2NF90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQpAQCAtNzk5NSw3ICs3OTk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNoYXJhY3Rlcklu
ZGV4Rm9yUG9pbnRBc3luYyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIFcKICAgICB9
CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tl
bigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhcmFjdGVySW5k
ZXhGb3JQb2ludEFzeW5jKHBvaW50LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkNoYXJhY3RlckluZGV4Rm9yUG9pbnRBc3luYyhwb2ludCwgY2Fs
bGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmIHJhbmdlLCBXVEY6OkZ1bmN0aW9uPHZvaWQg
KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBFZGl0aW5nUmFuZ2UmLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtODAwNiw3ICs4MDA2LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29uc3QgRWRp
dGluZ1JhbmdlJiByYW5nZSwgV1QKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2Nh
bGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigpKTsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6Rmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2Fs
bGJhY2tJRCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaXJzdFJl
Y3RGb3JDaGFyYWN0ZXJSYW5nZUFzeW5jKHJhbmdlLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpzZXRDb21wb3NpdGlvbkFzeW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29u
c3QgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiYgdW5kZXJsaW5lcywgY29uc3QgRWRpdGlu
Z1JhbmdlJiBzZWxlY3Rpb25SYW5nZSwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJh
bmdlKQpAQCAtODAxNyw3ICs4MDE3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldENvbXBvc2l0
aW9uQXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWZWN0b3I8Q29tcG9zaXQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpTZXRDb21wb3NpdGlvbkFzeW5jKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblJhbmdlLCBy
ZXBsYWNlbWVudFJhbmdlKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlNldENvbXBvc2l0aW9uQXN5bmModGV4dCwgdW5kZXJsaW5lcywgc2VsZWN0aW9uUmFuZ2UsIHJl
cGxhY2VtZW50UmFuZ2UpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbmZpcm1Db21wb3Np
dGlvbkFzeW5jKCkKQEAgLTgwMjUsNyArODAyNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb25m
aXJtQ29tcG9zaXRpb25Bc3luYygpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q29u
ZmlybUNvbXBvc2l0aW9uQXN5bmMoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkNvbmZpcm1Db21wb3NpdGlvbkFzeW5jKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6c2V0U2Nyb2xsUGVyZm9ybWFuY2VEYXRhQ29sbGVjdGlvbkVuYWJsZWQoYm9vbCBlbmFibGVk
KQpAQCAtODA1MCw3ICs4MDUwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRha2VTbmFwc2hvdChJ
bnRSZWN0IHJlY3QsIEludFNpemUgYml0bWFwU2l6ZSwgU25hcHNob3RPcHRpb24KICAgICB9CiAK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChy
ZWN0LCBiaXRtYXBTaXplLCBvcHRpb25zLCBjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlRha2VTbmFwc2hvdChyZWN0LCBiaXRtYXBTaXplLCBvcHRp
b25zLCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0aW9uR2Vz
dHVyZURpZEJlZ2luKCkKQEAgLTgyMDgsNyArODIwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpy
ZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKFJlZjxOb3dQbGF5aW5nSW5mb0NhbGxi
YWNrCiAgICAgYXV0byBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjaykpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QWN0aXZlTm93UGxheWluZ1Nlc3Npb25JbmZvKGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVz
dEFjdGl2ZU5vd1BsYXlpbmdTZXNzaW9uSW5mbyhjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojpub3dQbGF5aW5nSW5mb0NhbGxiYWNrKGJvb2wgaGFzQWN0aXZlU2Vzc2lvbiwg
Ym9vbCByZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIGNvbnN0IFN0cmluZyYgdGl0
bGUsIGRvdWJsZSBkdXJhdGlvbiwgZG91YmxlIGVsYXBzZWRUaW1lLCB1aW50NjRfdCB1bmlxdWVJ
ZGVudGlmaWVyLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC04MjUxLDIyICs4MjUxLDIyIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpoYW5kbGVBdXRvcGxheUV2ZW50KFdlYkNvcmU6OkF1dG9wbGF5
RXZlbnQgZXZlbnQsIE9wdGlvblNldDxBCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCBXZWJQYWdl
UHJveHk6OnBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihGbG9hdFBvaW50
IHBvaW50KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGVyZm9y
bUltbWVkaWF0ZUFjdGlvbkhpdFRlc3RBdExvY2F0aW9uKHBvaW50KSwgbV9wYWdlSUQpOworICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRM
b2NhdGlvbihwb2ludCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0aW9u
RGlkVXBkYXRlKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Oklt
bWVkaWF0ZUFjdGlvbkRpZFVwZGF0ZSgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkVXBkYXRlKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6aW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkltbWVkaWF0ZUFjdGlvbkRpZENhbmNlbCgpLCBtX3BhZ2VJRCk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9uRGlkQ2FuY2VsKCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW1tZWRpYXRlQWN0aW9uRGlkQ29tcGxldGUoKQog
ewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW1tZWRpYXRlQWN0aW9u
RGlkQ29tcGxldGUoKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Oklt
bWVkaWF0ZUFjdGlvbkRpZENvbXBsZXRlKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3QoY29uc3QgV2ViSGl0VGVzdFJlc3VsdERhdGEm
IHJlc3VsdCwgYm9vbCBjb250ZW50UHJldmVudHNEZWZhdWx0LCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCkBAIC04MjgxLDcgKzgyODEsNyBAQCBOU09iamVjdCAqV2ViUGFnZVByb3h5OjppbW1l
ZGlhdGVBY3Rpb25BbmltYXRpb25Db250cm9sbGVyRm9ySGl0VGVzdFJlc3VsdChSZWZQdAogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoV2ViQ29yZTo6VGV4dENo
ZWNraW5nUmVzdWx0IGFjY2VwdGVkQ2FuZGlkYXRlKQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWNjZXB0ZWRDYW5kaWRhdGUoYWNjZXB0ZWRDYW5kaWRh
dGUpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlQWNjZXB0
ZWRDYW5kaWRhdGUoYWNjZXB0ZWRDYW5kaWRhdGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEhhbmRsZUFjY2VwdGVkQ2FuZGlkYXRlKCkKQEAgLTgyOTksMTcgKzgyOTksMTcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFVzZVN5c3RlbUFwcGVhcmFuY2UoYm9vbCB1c2VTeXN0ZW1BcHBl
YXJhbmNlKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VTeXN0ZW1BcHBl
YXJhbmNlKHVzZVN5c3RlbUFwcGVhcmFuY2UpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZTo6U2V0VXNlU3lzdGVtQXBwZWFyYW5jZSh1c2VTeXN0ZW1BcHBlYXJhbmNlKSk7
CiB9CiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVz
dGluZyhpbnQgaGVpZ2h0KQogewotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVzdGluZyhoZWlnaHQpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0SGVhZGVyQmFubmVySGVpZ2h0Rm9yVGVzdGlu
ZyhoZWlnaHQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldEZvb3RlckJhbm5lckhlaWdo
dEZvclRlc3RpbmcoaW50IGhlaWdodCkKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldEZvb3RlckJhbm5lckhlaWdodEZvclRlc3RpbmcoaGVpZ2h0KSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldEZvb3RlckJhbm5lckhlaWdodEZv
clRlc3RpbmcoaGVpZ2h0KSk7CiB9CiAKICNlbmRpZgpAQCAtODMzNSw3ICs4MzM1LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmltYWdlT3JNZWRpYURvY3VtZW50U2l6ZUNoYW5nZWQoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgbmV3U2kKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFNob3VsZERpc3Bh
dGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhib29sIHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2
ZW50cykKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNob3Vs
ZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2ZW50cyhzaG91bGREaXNwYXRjaEZha2VNb3VzZU1vdmVF
dmVudHMpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxk
RGlzcGF0Y2hGYWtlTW91c2VNb3ZlRXZlbnRzKHNob3VsZERpc3BhdGNoRmFrZU1vdXNlTW92ZUV2
ZW50cykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlQXV0b0ZpbGxCdXR0b25DbGlj
ayhjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC04Mzg0LDcgKzgzODQsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6c2V0UGxheWJhY2tUYXJnZXQodWludDY0X3QgY29udGV4dElkLCBSZWY8TWVk
aWFQbGF5YmFja1RhcmdldAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpQbGF5YmFj
a1RhcmdldFNlbGVjdGVkKGNvbnRleHRJZCwgdGFyZ2V0LT50YXJnZXRDb250ZXh0KCkpLCBtX3Bh
Z2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRTZWxlY3Rl
ZChjb250ZXh0SWQsIHRhcmdldC0+dGFyZ2V0Q29udGV4dCgpKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpleHRlcm5hbE91dHB1dERldmljZUF2YWlsYWJsZURpZENoYW5nZSh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgYXZhaWxhYmxlKQpAQCAtODM5Miw3ICs4MzkyLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmV4dGVybmFsT3V0cHV0RGV2aWNlQXZhaWxhYmxlRGlkQ2hhbmdlKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm8KICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tU
YXJnZXRBdmFpbGFiaWxpdHlEaWRDaGFuZ2UoY29udGV4dElkLCBhdmFpbGFibGUpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlEaWRDaGFuZ2UoY29udGV4dElkLCBhdmFpbGFibGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9v
bCBzaG91bGRQbGF5KQpAQCAtODQwMCw3ICs4NDAwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBzaG91
bGQKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkUGxheVRvUGxheWJh
Y2tUYXJnZXQoY29udGV4dElkLCBzaG91bGRQbGF5KSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNldFNob3VsZFBsYXlUb1BsYXliYWNrVGFyZ2V0KGNvbnRleHRJZCwg
c2hvdWxkUGxheSkpOwogfQogI2VuZGlmCiAKQEAgLTg0MjYsNyArODQyNiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpjbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDbGVhcldoZWVsRXZlbnRUZXN0VHJpZ2dlcigpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2xlYXJXaGVlbEV2ZW50VGVzdFRyaWdn
ZXIoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYWxsQWZ0ZXJOZXh0UHJlc2VudGF0aW9u
VXBkYXRlKFdURjo6RnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJh
Y2spCkBAIC04NDQ5LDcgKzg0NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U2hvdWxkU2Nh
bGVWaWV3VG9GaXREb2N1bWVudChib29sIHNob3VsZFNjYWxlVmlld1RvRml0RG9jdQogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRTaG91bGRTY2FsZVZpZXdUb0ZpdERvY3VtZW50
KHNob3VsZFNjYWxlVmlld1RvRml0RG9jdW1lbnQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0U2hvdWxkU2NhbGVWaWV3VG9GaXREb2N1bWVudChzaG91bGRTY2Fs
ZVZpZXdUb0ZpdERvY3VtZW50KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZXN0b3Jl
U2Nyb2xsUG9zaXRpb24oKQpAQCAtODQ2OSw3ICs4NDY5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmdldExvYWREZWNpc2lvbkZvckljb24oY29uc3QgV2ViQ29yZTo6TGlua0ljb24mIGljb24sIENh
bGxiYWMKICAgICAgICAgYm9vbCBkZWNpc2lvbiA9IChib29sKWNhbGxiYWNrRnVuY3Rpb247CiAg
ICAgICAgIGF1dG8gbmV3Q2FsbGJhY2tJZGVudGlmaWVyID0gZGVjaXNpb24gPyBPcHRpb25hbENh
bGxiYWNrSUQobV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJv
Y2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSkpIDogT3B0aW9uYWxD
YWxsYmFja0lEKCk7CiAKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmllciwgbmV3
Q2FsbGJhY2tJZGVudGlmaWVyKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpEaWRHZXRMb2FkRGVjaXNpb25Gb3JJY29uKGRlY2lzaW9uLCBsb2FkSWRlbnRpZmll
ciwgbmV3Q2FsbGJhY2tJZGVudGlmaWVyKSk7CiAgICAgfSk7CiB9CiAKQEAgLTg0ODgsNyArODQ4
OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChib29s
IGRpc2FibGVkKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRSZXNvdXJjZUNh
Y2hpbmdEaXNhYmxlZChkaXNhYmxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZXRSZXNvdXJjZUNhY2hpbmdEaXNhYmxlZChkaXNhYmxlZCkpOwogfQogCiBXZWJD
b3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIFdlYlBhZ2VQcm94eTo6dXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbigpCkBAIC04NTAxLDcgKzg1MDEsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbihXZWJDb3JlOjpVc2VySW50ZXJm
YWNlTGF5b3V0RAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih1c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpT
ZXRVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKHN0YXRpY19jYXN0PHVpbnQzMl90Pih1c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKSkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aGlk
ZVZhbGlkYXRpb25NZXNzYWdlKCkKQEAgLTg1NDgsMTQgKzg1NDgsMTQgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEFsbG93UG9pbnRlckxvY2soKQogICAgIENHRGlzcGxheUhpZGVDdXJzb3IoQ0dN
YWluRGlzcGxheUlEKCkpOwogICAgIENHQXNzb2NpYXRlTW91c2VBbmRNb3VzZUN1cnNvclBvc2l0
aW9uKGZhbHNlKTsKICNlbmRpZgotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6RGlkQWNxdWlyZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWRBY3F1aXJlUG9pbnRlckxvY2soKSk7CiB9CiAgICAgCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRGVueVBvaW50ZXJMb2NrKCkKIHsKICAgICBBU1NFUlQobV9pc1BvaW50ZXJM
b2NrUGVuZGluZyAmJiAhbV9pc1BvaW50ZXJMb2NrZWQpOwogICAgIG1faXNQb2ludGVyTG9ja1Bl
bmRpbmcgPSBmYWxzZTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRp
ZE5vdEFjcXVpcmVQb2ludGVyTG9jaygpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkTm90QWNxdWlyZVBvaW50ZXJMb2NrKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2soKQpAQCAtODU2NiwxMiArODU2NiwxMiBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdFBvaW50ZXJVbmxvY2soKQogICAgICAgICBDR0Rpc3BsYXlT
aG93Q3Vyc29yKENHTWFpbkRpc3BsYXlJRCgpKTsKICNlbmRpZgogICAgICAgICBtX3VpQ2xpZW50
LT5kaWRMb3NlUG9pbnRlckxvY2sodGhpcyk7Ci0gICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCksIG1fcGFnZUlEKTsKKyAgICAgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkTG9zZVBvaW50ZXJMb2NrKCkpOwogICAgIH0KIAog
ICAgIGlmIChtX2lzUG9pbnRlckxvY2tQZW5kaW5nKSB7CiAgICAgICAgIG1fdWlDbGllbnQtPmRp
ZExvc2VQb2ludGVyTG9jayh0aGlzKTsKLSAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSwgbV9wYWdlSUQpOworICAgICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWROb3RBY3F1aXJlUG9pbnRlckxvY2soKSk7CiAg
ICAgfQogCiAgICAgbV9pc1BvaW50ZXJMb2NrZWQgPSBmYWxzZTsKQEAgLTg1OTIsNyArODU5Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVUkxTY2hlbWVIYW5kbGVyRm9yU2NoZW1lKFJlZjxX
ZWJVUkxTY2hlbWVIYW5kbGVyPiYmIGhhbmRsCiAgICAgYXV0byBpZGVudGlmaWVyUmVzdWx0ID0g
bV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5hZGQoaWRlbnRpZmllciwgV1RGTW92ZSho
YW5kbGVyKSk7CiAgICAgQVNTRVJUX1VOVVNFRChpZGVudGlmaWVyUmVzdWx0LCBpZGVudGlmaWVy
UmVzdWx0LmlzTmV3RW50cnkpOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZWdpc3RlclVSTFNjaGVtZUhhbmRsZXIoaWRlbnRpZmllciwgY2Fub25pY2FsaXplZFNj
aGVtZS52YWx1ZSgpKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJl
Z2lzdGVyVVJMU2NoZW1lSGFuZGxlcihpZGVudGlmaWVyLCBjYW5vbmljYWxpemVkU2NoZW1lLnZh
bHVlKCkpKTsKIH0KIAogV2ViVVJMU2NoZW1lSGFuZGxlciogV2ViUGFnZVByb3h5Ojp1cmxTY2hl
bWVIYW5kbGVyRm9yU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKQpAQCAtODY1MSw3ICs4NjUx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRDaGFuZ2UoKQog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFZmZlY3RpdmVBcHBlYXJhbmNlRGlkQ2hh
bmdlKHVzZURhcmtBcHBlYXJhbmNlKCksIHVzZUluYWN0aXZlQXBwZWFyYW5jZSgpKSwgbV9wYWdl
SUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVmZmVjdGl2ZUFwcGVhcmFuY2VEaWRD
aGFuZ2UodXNlRGFya0FwcGVhcmFuY2UoKSwgdXNlSW5hY3RpdmVBcHBlYXJhbmNlKCkpKTsKIH0K
IAogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtODY5MCw3ICs4NjkwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6Omluc2VydEF0dGFjaG1lbnQoUmVmPEFQSTo6QXR0YWNobWVudD4mJiBhdHRhY2htZW50
LCBGdW5jdGlvbjwKIAogICAgIGF1dG8gYXR0YWNobWVudElkZW50aWZpZXIgPSBhdHRhY2htZW50
LT5pZGVudGlmaWVyKCk7CiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdU
Rk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0
QXR0YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNpemVGb3JE
aXNwbGF5KCksIGF0dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRlbnRUeXBl
KCksIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
SW5zZXJ0QXR0YWNobWVudChhdHRhY2htZW50SWRlbnRpZmllciwgYXR0YWNobWVudC0+ZmlsZVNp
emVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQtPmZpbGVOYW1lKCksIGF0dGFjaG1lbnQtPmNvbnRl
bnRUeXBlKCksIGNhbGxiYWNrSUQpKTsKICAgICBtX2F0dGFjaG1lbnRJZGVudGlmaWVyVG9BdHRh
Y2htZW50TWFwLnNldChhdHRhY2htZW50SWRlbnRpZmllciwgV1RGTW92ZShhdHRhY2htZW50KSk7
CiB9CiAKQEAgLTg3MDYsNyArODcwNiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVBdHRh
Y2htZW50QXR0cmlidXRlcyhjb25zdCBBUEk6OkF0dGFjaG1lbnQmIGF0dGFjaG1lbnQsCiAgICAg
ICAgIGRhdGFSZWZlcmVuY2UgPSB7ICpkYXRhIH07CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBt
X2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVcGRhdGVBdHRhY2htZW50QXR0cmlidXRlcyhhdHRhY2htZW50LmlkZW50aWZp
ZXIoKSwgYXR0YWNobWVudC5maWxlU2l6ZUZvckRpc3BsYXkoKSwgYXR0YWNobWVudC5jb250ZW50
VHlwZSgpLCBhdHRhY2htZW50LmZpbGVOYW1lKCksIFdURk1vdmUoZGF0YVJlZmVyZW5jZSksIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRl
QXR0YWNobWVudEF0dHJpYnV0ZXMoYXR0YWNobWVudC5pZGVudGlmaWVyKCksIGF0dGFjaG1lbnQu
ZmlsZVNpemVGb3JEaXNwbGF5KCksIGF0dGFjaG1lbnQuY29udGVudFR5cGUoKSwgYXR0YWNobWVu
dC5maWxlTmFtZSgpLCBXVEZNb3ZlKGRhdGFSZWZlcmVuY2UpLCBjYWxsYmFja0lEKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckF0dGFjaG1lbnRJZGVudGlmaWVyRnJvbURhdGEo
Y29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlLCBjb25z
dCBTdHJpbmcmIHByZWZlcnJlZEZpbGVOYW1lLCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRh
dGEpCkBAIC04ODY2LDcgKzg4NjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0QXBwbGljYXRp
b25NYW5pZmVzdChGdW5jdGlvbjx2b2lkKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OgogCiAgICAg
YXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAg
ICAgbV9sb2FkRGVwZW5kZW50U3RyaW5nQ2FsbGJhY2tJRHMuYWRkKGNhbGxiYWNrSUQpOwotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6R2V0QXBwbGljYXRpb25NYW5pZmVz
dChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okdl
dEFwcGxpY2F0aW9uTWFuaWZlc3QoY2FsbGJhY2tJRCkpOwogfQogI2VuZGlmCiAKQEAgLTg5MzAs
NyArODkzMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBvcnRQYWdlTG9hZFJlc3VsdChjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldERlZmVyc0xv
YWRpbmdGb3JUZXN0aW5nKGJvb2wgZGVmZXJzTG9hZGluZykKIHsKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9hZGluZyksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXREZWZlcnNMb2FkaW5nKGRl
ZmVyc0xvYWRpbmcpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmdldElzVmlld1Zpc2libGUo
Ym9vbCYgcmVzdWx0KQpAQCAtODk0Miw3ICs4OTQyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKCkKIHsKICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJM
RShXRUJQUk9DRVNTX1dJTkRPV1NFUlZFUl9CTE9DS0lORykgfHwgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKICAgICBhdXRvIG1vZGlmaWVycyA9IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Y3VycmVudFN0
YXRlT2ZNb2RpZmllcktleXMoKTsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlVwZGF0ZUN1cnJlbnRNb2RpZmllclN0YXRlKG1vZGlmaWVycyksIG1fcGFnZUlEKTsKKyAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVDdXJyZW50TW9kaWZpZXJTdGF0ZShtb2Rp
ZmllcnMpKTsKICNlbmRpZgogfQogCkBAIC04OTg0LDE5ICs4OTg0LDE5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp3aWxsQWNxdWlyZVVuaXZlcnNhbEZpbGVSZWFkU2FuZGJveEV4dGVuc2lvbihXZWJQ
cm9jZXNzUHJveHkmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzaW11bGF0ZURldmljZU9yaWVudGF0
aW9uQ2hhbmdlKGRvdWJsZSBhbHBoYSwgZG91YmxlIGJldGEsIGRvdWJsZSBnYW1tYSkKIHsKLSAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNpbXVsYXRlRGV2aWNlT3JpZW50
YXRpb25DaGFuZ2UoYWxwaGEsIGJldGEsIGdhbW1hKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2U6OlNpbXVsYXRlRGV2aWNlT3JpZW50YXRpb25DaGFuZ2UoYWxwaGEsIGJl
dGEsIGdhbW1hKSk7CiB9CiAKICNpZiBFTkFCTEUoREFUQV9ERVRFQ1RJT04pCiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZXRlY3REYXRhSW5BbGxGcmFtZXMoV2ViQ29yZTo6RGF0YURldGVjdG9yVHlw
ZXMgdHlwZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRGF0YURldGVjdGlvblJlc3Vs
dCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkRldGVjdERhdGFJbkFsbEZy
YW1lcyhzdGF0aWNfY2FzdDx1aW50NjRfdD4odHlwZXMpKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIG1fcGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OkRldGVjdERhdGFJbkFsbEZyYW1lcyhzdGF0aWNfY2FzdDx1aW50NjRfdD4odHlwZXMpKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVt
b3ZlRGF0YURldGVjdGVkTGlua3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBEYXRhRGV0
ZWN0aW9uUmVzdWx0Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcm9jZXNzLT5j
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3Zl
RGF0YURldGVjdGVkTGlua3MoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fcGFnZUlE
KTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZURhdGFE
ZXRlY3RlZExpbmtzKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogI2VuZGlm
CkBAIC05MTQ2LDcgKzkxNDYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGV4dElucHV0Q29udGV4
dHNJblJlY3QoV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QsIENvbXBsZXRpb25IYQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VGV4dElucHV0Q29udGV4dHNJblJlY3QocmVjdCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3BhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpUZXh0SW5wdXRDb250ZXh0c0luUmVjdChyZWN0KSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9j
dXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0IFRleHRJbnB1dENvbnRleHQmIGNvbnRleHQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC05MTU2LDcg
KzkxNTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnN0
IFRleHRJbnB1dENvbnRleHQmIGNvbnRleHQsIENvbXBsZQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6Rm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnRleHQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgbV9wYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6Rm9jdXNUZXh0SW5wdXRDb250ZXh0KGNvbnRleHQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIExvZ2dlciYgV2ViUGFnZVByb3h5Ojpsb2dnZXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2YzVhZDYyNWQxMi4uNjhi
NWEyNjc2YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02Niw2
ICs2Niw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NMaWZldGltZVRyYWNrZXIu
aCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJXZWJVbmRvU3RlcElE
LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QWN0aXZpdHlTdGF0ZS5oPgpAQCAtODIsNiArODMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGF5
b3V0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxh
dGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaD4KQEAgLTM4MiwxNCArMzg0LDE0IEBAIGNs
YXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5
cGU6OlBhZ2U+CiAjZW5kaWYKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYWdlUHJv
eHk+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VD
bGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBh
Z2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZpcnR1YWwgfldlYlBhZ2VQcm94eSgp
OwogCiAgICAgc3RhdGljIHZvaWQgZm9yTW9zdFZpc2libGVXZWJQYWdlSWZBbnkoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViUGFnZVByb3h5Kik+JiYpOwogCiAgICAgY29uc3QgQVBJOjpQYWdlQ29uZmln
dXJhdGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0OwogCi0gICAgdWludDY0X3QgcGFnZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3Q7CiAKQEAgLTE1MDIsNyArMTUwNCw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFtZUlEKTsK
ICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBV
UkwmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyLAotICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwKKyAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLAogICAg
ICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90
IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsCiAgICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJv
b2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTUxMSw3ICsxNTEzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0Zv
cndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3Jl
OjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3Qg
ZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYs
IFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEm
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
U3luYzo6RGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlk
UmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKQEAgLTE1NDksOSAr
MTU1MSw5IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU18xCiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKIAogICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VTcGFjZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2Fn
ZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2Us
IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwotCisgICAgCiBwcml2
YXRlOgotICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWlu
dDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAgV2ViUGFn
ZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplKCk7CiAKICAgICB2b2lkIG5vdGlmeVByb2Nlc3NQb29sVG9QcmV3YXJtKCk7CkBA
IC0xNjI3LDEzICsxNjI5LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdh
dGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZyYW1lUHJveHkmLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBS
ZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYm
LCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAg
ICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0
IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1l
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0g
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAg
ICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAogICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNjU1LDcgKzE2NTcsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0
cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIC8vIFVJIGNsaWVudAotICAgIHZv
aWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRp
bmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0
dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpD
cmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNv
bnN0IEZyYW1lSW5mb0RhdGEmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3Jp
Z2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBzaG93UGFnZSgp
OwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQg
cnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmKTsKQEAgLTIzMjcsNyArMjMyOSw3
IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU18yCiAgICAgUmVmUHRyPFdl
YkNvcmU6OlZhbGlkYXRpb25CdWJibGU+IG1fdmFsaWRhdGlvbkJ1YmJsZTsKICNlbmRpZgogCi0g
ICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBib29sIG1faXNQYWdlU3VzcGVuZGVkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fYWRkc1Zpc2l0ZWRMaW5rcyB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA2ZmNlY2RjNmI2NS4u
YjFlNzk5MjIzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcgQEAKIAogbWVzc2FnZXMgLT4gV2ViUGFnZVBy
b3h5IHsKICAgICAjIFVJIG1lc3NhZ2VzCi0gICAgQ3JlYXRlTmV3UGFnZShzdHJ1Y3QgV2ViS2l0
OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhKSAtPiAodWludDY0X3QgbmV3UGFn
ZUlELCBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IG5ld1BhZ2VQ
YXJhbWV0ZXJzKSBTeW5jaHJvbm91cworICAgIENyZWF0ZU5ld1BhZ2Uoc3RydWN0IFdlYktpdDo6
RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJl
cywgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRh
dGEpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlELCBPcHRp
b25hbDxXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IG5ld1BhZ2VQYXJhbWV0ZXJz
KSBTeW5jaHJvbm91cwogICAgIFNob3dQYWdlKCkKICAgICBDbG9zZVBhZ2UoYm9vbCBzdG9wUmVz
cG9uc2l2ZW5lc3NUaW1lcikKICAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJ
RCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkgU3luY2hyb25vdXMKQEAgLTEwNCw4ICsxMDQsOCBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMKICAgICBE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRy
aWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0g
ICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
LCB1aW50NjRfdCBsaXN0ZW5lcklEKQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5
Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgZW51bTp1aW50OF90
IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRp
b25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIE9wdGlvbmFsPFdlYktpdDo6V2Vi
c2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBTeW5jaHJvbm91cworICAgIERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6
OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFt
ZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RC
b2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6
VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAgRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFt
ZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRh
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdp
bmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNl
LCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpE
b3dubG9hZElEIGRvd25sb2FkSUQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0
YT4gd2Vic2l0ZVBvbGljaWVzKSBTeW5jaHJvbm91cwogICAgIERlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKICAgICBVbmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRp
bWVPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRp
bWVPYnNlcnZlci5jcHAKaW5kZXggYzgwMjNkZTQxNjEuLmY0OTcxNTFkNzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIu
Y3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFk
ZFdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYlByb2NlCiAgICAgUkVMRUFT
RV9BU1NFUlQoIXByb2Nlc3MuaXNQcmV3YXJtZWQoKSk7CiAKICAgICBpZiAobV9wcm9jZXNzZXMu
YWRkKCZwcm9jZXNzKS5pc05ld0VudHJ5KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKExvYWRpbmcs
ICIlcCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjphZGRXZWJQYWdlOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCks
IHdlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICIl
cCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjphZGRXZWJQYWdlOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCksIHdl
YlBhZ2VQcm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgd2ViUHJvY2Vzc1dpbGxP
cGVuQ29ubmVjdGlvbihwcm9jZXNzLCAqcHJvY2Vzcy5jb25uZWN0aW9uKCkpOwogICAgIH0KIApA
QCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjpyZW1vdmVX
ZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJQcgogICAgIHdlYlBhZ2VEaWRD
bG9zZUNvbm5lY3Rpb24od2ViUGFnZVByb3h5LCAqcHJvY2Vzcy5jb25uZWN0aW9uKCkpOwogCiAg
ICAgaWYgKG1fcHJvY2Vzc2VzLnJlbW92ZSgmcHJvY2VzcykpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBh
Z2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vz
c0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAgICAgUkVMRUFTRV9M
T0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBh
Z2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vz
c0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgICAg
ICB3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKHByb2Nlc3MsICpwcm9jZXNzLmNvbm5lY3Rp
b24oKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCmluZGV4IDBlMTM5ZjMwZDljLi4wYjhiMzQ1ZWY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTI5Niw5ICsxMjk2LDkgQEAgYm9vbCBXZWJQ
cm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBXZWJzaXRl
RGF0YVN0b3JlJiBzdG8KIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3Jl
JiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVE
YXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3Rv
cmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFT
dG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDx1aW50NjRfdD4oKSkuaXRlcmF0b3ItPnZhbHVlLmFk
ZChwYWdlSUQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmFkZChk
YXRhU3RvcmUuc2Vzc2lvbklEKCksIEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+KCkpLml0ZXJhdG9y
LT52YWx1ZS5hZGQocGFnZUlEKTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0Lmlz
TmV3RW50cnkpOwogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7
CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2lu
Z1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YQogICAgIH0KIH0K
IAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50
NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBk
YXRhU3RvcmUuc2Vzc2lvbklEKCk7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fc2Vzc2lvblRvUGFn
ZUlEc01hcC5maW5kKHNlc3Npb25JRCk7CkBAIC0yMjExLDcgKzIyMTEsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQ
cm9jZXNzUHJveHkmCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1TZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NQcm94
eUZyb21QYWdlSUQodWludDY0X3QgcGFnZUlEKSBjb25zdAorU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSogV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlE
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBp
bmVmZmljaWVudC4KICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7CkBAIC0yNTE5LDcgKzI1MTksNyBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpjbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpCiAg
ICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVhckN1cnJlbnRN
b2RpZmllclN0YXRlRm9yVGVzdGluZygpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y29t
bWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAj
aWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIW1fbmV0d29ya1By
b2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9v
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAxNjU1
NDViMWEyZi4uMTdlM2U4MDJiYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaApAQCAtMTQ4LDYgKzE0OCwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAgICAKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRl
c3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB7CisgICAg
ICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCksIHJlY2VpdmVyKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
KQorICAgIHsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CisgICAgfQogCiAgICAgYm9vbCBkaXNwYXRj
aE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgYm9vbCBkaXNw
YXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5p
cXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CkBAIC0xOTMsOCArMjA1LDggQEAgcHVibGljOgogCiAg
ICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6
UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCi0gICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVE
YXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0gICAgdm9pZCBw
YWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFT
dG9yZSYpOworICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlRW5kVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0
b3JlJik7CiAgICAgYm9vbCBoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0
YVN0b3JlJikgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVuZGxlUGF0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQYXRoKCk7IH0K
QEAgLTM2NSw3ICszNzcsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYsIE9w
dGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7Ci0gICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSog
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0X3QgcGFnZUlEKSBjb25z
dDsKKyAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1By
b3h5RnJvbVBhZ2VJRChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgY29uc3Qg
SGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtlclByb2Nlc3NQ
cm94eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZVdv
cmtlclByb2Nlc3NlczsgfQogICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JT
ZXJ2aWNlV29ya2VyKGJvb2wgYWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JT
ZXJ2aWNlV29ya2VyID0gYWxsb3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0
ZUZvclNlcnZpY2VXb3JrZXIoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNTTENlcnRpZmlj
YXRlRm9yU2VydmljZVdvcmtlcjsgfQpAQCAtNDkzLDcgKzUwNSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNlbmREaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVzdGluZygpOwog
ICAgIHZvaWQgY2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoKTsKIAotICAgIHZv
aWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25J
RCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKTsKKyAg
ICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25z
dCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQogICAgIHZvaWQg
c2V0U2FuZGJveEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fc2FuZGJveEVuYWJsZWQgPSBlbmFi
bGVkOyB9OwpAQCAtNzU4LDcgKzc3MCw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAgICBQYXRocyBt
X3Jlc29sdmVkUGF0aHM7CiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBIYXNoU2V0PHVp
bnQ2NF90Pj4gbV9zZXNzaW9uVG9QYWdlSURzTWFwOworICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9u
SUQsIEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNN
YXA7CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUHJvY2Vzc1Bvb2w+IG1fc2VydmljZVdvcmtlclBy
b2Nlc3Nlc1Rlcm1pbmF0aW9uVGltZXI7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggODIwMzQ2NWNi
MjguLjY3ODMxZTIwNzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTExMCwxMCArMTEwLDkgQEAgV2ViUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNz
UHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKFByb2Nlc3NJZGVudGlmaWVyIGlkZW50aWYKICAg
ICByZXR1cm4gYWxsUHJvY2Vzc2VzKCkuZ2V0KGlkZW50aWZpZXIpOwogfQogCi11aW50NjRfdCBX
ZWJQcm9jZXNzUHJveHk6OmdlbmVyYXRlUGFnZUlEKCkKK1BhZ2VJZGVudGlmaWVyIFdlYlByb2Nl
c3NQcm94eTo6Z2VuZXJhdGVQYWdlSUQoKQogewotICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVQ
YWdlSUQ7Ci0gICAgcmV0dXJuICsrdW5pcXVlUGFnZUlEOworICAgIHJldHVybiBQYWdlSWRlbnRp
Zmllcjo6Z2VuZXJhdGUoKTsKIH0KIAogc3RhdGljIFdlYlByb2Nlc3NQcm94eTo6V2ViUGFnZVBy
b3h5TWFwJiBnbG9iYWxQYWdlTWFwKCkKQEAgLTMzMCw3ICszMjksNyBAQCB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6c2h1dERvd24oKQogICAgIG1fcHJvY2Vzc1Bvb2wtPmRpc2Nvbm5lY3RQcm9jZXNz
KHRoaXMpOwogfQogCi1XZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQpCitXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGdsb2JhbFBhZ2VNYXAoKS5nZXQocGFn
ZUlEKTsKIH0KQEAgLTM2Myw3ICszNjIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5
UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCogbWVzc2FnZQogCiBS
ZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVu
dCYgcGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgcGFnZUNvbmZpZ3Vy
YXRpb24pCiB7Ci0gICAgdWludDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKKyAgICBh
dXRvIHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7CiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gd2Vi
UGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlzLCBwYWdlSUQsIFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIGFkZEV4aXN0aW5nV2ViUGFnZSh3ZWJQ
YWdlLmdldCgpLCBCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKQEAgLTQxNSwxMCArNDE0LDEw
IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2Vi
UGFnZSwgRW5kc1VzaW5nRGF0YVN0b3JlIGVuCiAgICAgbWF5YmVTaHV0RG93bigpOwogfQogCi12
b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtT
dG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNz
UHJveHk6OmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRM
aW5rU3RvcmUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvJiB1c2VycyA9IG1f
dmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnMuZW5zdXJlKCZ2aXNpdGVkTGlua1N0b3JlLCBbXSB7
Ci0gICAgICAgIHJldHVybiBIYXNoU2V0PHVpbnQ2NF90PiB7IH07CisgICAgICAgIHJldHVybiBI
YXNoU2V0PFBhZ2VJZGVudGlmaWVyPiB7IH07CiAgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCiAg
ICAgQVNTRVJUKCF1c2Vycy5jb250YWlucyhwYWdlSUQpKTsKQEAgLTQyOCw3ICs0MjcsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtT
dG9yZSYgdmlzaXRlZExpbmtTdG9yZQogICAgICAgICB2aXNpdGVkTGlua1N0b3JlLmFkZFByb2Nl
c3MoKnRoaXMpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtT
dG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgdWludDY0X3QgcGFn
ZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZp
c2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICBhdXRvIGl0ID0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5maW5kKCZ2aXNp
dGVkTGlua1N0b3JlKTsKICAgICBpZiAoaXQgPT0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vy
cy5lbmQoKSkKQEAgLTU0MSw3ICs1NDAsNyBAQCBib29sIFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtl
eWJvYXJkQWNjZXNzRW5hYmxlZCgpCiB9CiAjZW5kaWYKIAotYm9vbCBXZWJQcm9jZXNzUHJveHk6
Omhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29sIFdl
YlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8qIHByb3Zpc2lvbmFsUGFnZSA6IG1fcHJvdmlz
aW9uYWxQYWdlcykgewogICAgICAgICBpZiAocHJvdmlzaW9uYWxQYWdlLT5wYWdlKCkucGFnZUlE
KCkgPT0gcGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApp
bmRleCA5YTZjYmYxZjQ2MC4uYWQzZjAzOGRkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9j
ZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFN0cmluZ0hhc2guaD4KQEAgLTk3LDcgKzk4LDcgQEAg
ZW51bSBjbGFzcyBBbGxvd1Byb2Nlc3NDYWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5IDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNp
dmVuZXNzVGltZXI6OkNsaWVudCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nl
c3NQcm94eT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRl
IFByb2Nlc3NUaHJvdHRsZXJDbGllbnQgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFwOwotICAgIHR5
cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5
Kj4gV2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKICAg
ICBlbnVtIGNsYXNzIElzUHJld2FybWVkIHsKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIHN0
YXRpYyBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCk7CisgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcik7CiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZW51bSBjbGFzcyBC
ZWdpbnNVc2luZ0RhdGFTdG9yZSA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0xNDksMTAgKzE1MCwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblBy
b2Nlc3ModWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nl
c3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0
b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHJl
bW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBwYWdl
SUQpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAg
ICB2b2lkIGFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGlk
RGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Jik7CkBAIC0zMTEsNyArMzEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ViUGFn
ZU1lZGlhU3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5Jik7CiAKIHByb3RlY3RlZDoKLSAgICBz
dGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQpOwogCiAgICAgLy8gQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC0zNTQsNyArMzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29u
dGV4dElEKTsKICNlbmRpZgogCi0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWlu
dDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0
ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7CiAKICAgICAv
LyBQbHVnaW5zCkBAIC00NDcsNyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFByb3Zp
c2lvbmFsUGFnZVByb3h5Kj4gbV9wcm92aXNpb25hbFBhZ2VzOwogICAgIFVzZXJJbml0aWF0ZWRB
Y3Rpb25NYXAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCi0gICAgSGFzaE1hcDxWaXNpdGVk
TGlua1N0b3JlKiwgSGFzaFNldDx1aW50NjRfdC8qIHBhZ2VJRCAqLz4+IG1fdmlzaXRlZExpbmtT
dG9yZXNXaXRoVXNlcnM7CisgICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAg
ICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveGllczsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJt
aW5hdGlvbldhc0Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVIYW5kbGVyLmNwcAppbmRleCBlMzU1MzE5ZWE0Yy4uN2Q1NzVhNDA0YjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjp0YXNrQ29tcGxldGVkKFdlYlVS
TFNjaGVtZVRhc2smIHRhc2spCiAgICAgcGxhdGZvcm1UYXNrQ29tcGxldGVkKHRhc2spOwogfQog
Ci12b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCkKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6cmVt
b3ZlVGFza0Zyb21QYWdlTWFwKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgdGFza0lE
KQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5maW5kKHBh
Z2VJRCk7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmVu
ZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApp
bmRleCA4OTk3NmM2MWY4My4uYjdhZjA3NTk3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTY2LDEzICs2NiwxMyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNj
aGVtZVRhc2smKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtVGFza0NvbXBsZXRlZChX
ZWJVUkxTY2hlbWVUYXNrJikgPSAwOwogCi0gICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpOworICAgIHZvaWQgcmVtb3ZlVGFza0Zy
b21QYWdlTWFwKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSUQpOwogICAg
IFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0ZvclRhc2tJZGVudGlmaWVyKHVpbnQ2NF90KSBjb25z
dDsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKIAogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZjxXZWJVUkxTY2hlbWVUYXNrPj4gbV90YXNrczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBI
YXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgSGFzaFNldDx1aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJ
ZGVudGlmaWVyOwogICAgIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jTG9h
ZENvbXBsZXRpb25IYW5kbGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwCmluZGV4IDE5YTZiYjg0YzNjLi45YjdhZDVlMjMxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5jcHAKQEAgLTcwLDcgKzcwLDcgQEAg
YXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlc3BvbnMKICAgICAgICAgbV9zeW5jUmVzcG9uc2UgPSByZXNwb25z
ZTsKIAogICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKG1fdXJsU2No
ZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlLCByZXF1ZXN0
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2No
ZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZp
ZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVxdWVzdCkpOwogCiAgICAgcmV0dXJuIEV4
Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CkBAIC05Myw3ICs5Myw3IEBAIGF1dG8gV2ViVVJMU2NoZW1l
VGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KSAtPiBFCiAgICAgaWYgKGlzU3luYygpKQogICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3Bv
bnNlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVU
YXNrRGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBt
X2lkZW50aWZpZXIsIHJlc3BvbnNlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNwb25zZShtX3VybFNjaGVt
ZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSkpOwogICAgIHJl
dHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCkBAIC0xMTgsNyArMTE4LDcgQEAgYXV0byBX
ZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZl
cikgLT4gRXhjZXB0aW9uVHkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAg
ICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVU
YXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5kbGVyLT5pZGVudGlmaWVyKCksIG1faWRl
bnRpZmllciwgeyBidWZmZXIgfSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRs
ZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCB7IGJ1ZmZlciB9KSk7CiAgICAgcmV0dXJu
IEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCBhdXRvIFdlYlVS
TFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBF
eGNlcHRpb25UeXBlCiAgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOwogICAgIH0KIAotICAg
IG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBs
ZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9y
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2No
ZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lk
ZW50aWZpZXIsIGVycm9yKSk7CiAgICAgbV91cmxTY2hlbWVIYW5kbGVyLT50YXNrQ29tcGxldGVk
KCp0aGlzKTsKIAogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwpAQCAtMTY5LDQgKzE2
OSwxNCBAQCB2b2lkIFdlYlVSTFNjaGVtZVRhc2s6OnN0b3AoKQogICAgICAgICBtX3N5bmNDb21w
bGV0aW9uSGFuZGxlcih7IH0sIGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQobV9yZXF1ZXN0
KSwgeyB9KTsKIH0KIAorSVBDOjpDb25uZWN0aW9uKiBXZWJVUkxTY2hlbWVUYXNrOjptZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVj
dGlvbigpOworfQorCit1aW50NjRfdCBXZWJVUkxTY2hlbWVUYXNrOjptZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50
NjQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggYjg3MjA3M2JkMjcuLjdmMTRiOTg2MDQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CkBAIC01MSwxMyArNTIs
MTMgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogCiB1c2luZyBTeW5jTG9hZENvbXBsZXRpb25IYW5k
bGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYpPjsKIAotY2xhc3MgV2ViVVJMU2NoZW1lVGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YlVSTFNjaGVtZVRhc2s+LCBwdWJsaWMgSW5zdGFuY2VDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+
IHsKK2NsYXNzIFdlYlVSTFNjaGVtZVRhc2sgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVUkxTY2hl
bWVUYXNrPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBJbnN0YW5jZUNvdW50
ZWQ8V2ViVVJMU2NoZW1lVGFzaz4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlVSTFNj
aGVtZVRhc2spOwogcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFzaz4gY3Jl
YXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkm
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xv
YWRDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQogICAgIFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQogCiAg
ICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1
cm4gbV9yZXF1ZXN0OyB9CkBAIC04MCw2ICs4MSwxMCBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAg
ICAgV2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5Jiwg
V2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgCisgICAgLy8gSVBD
OjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVj
dGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlv
bklEKCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuICEh
bV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7IH0KIApAQCAtODcsNyArOTIsNyBAQCBwcml2YXRlOgog
ICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1f
cHJvY2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Ci0gICAgdWludDY0X3QgbV9wYWdl
SWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVy
OwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAgYm9vbCBtX3N0
b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNwb25zZVNlbnQgeyBmYWxzZSB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVN0b3JlLmNwcAppbmRleCAwYmY1MTEyYTllNC4uMGE4YjBjMTEyMjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
Y3BwCkBAIC0xNTc2LDcgKzE1NzYsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlm
eVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUsIENvbXBsZQogICAgICAg
ICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXROb3RpZnlQYWdlc1doZW5U
ZWxlbWV0cnlXYXNDYXB0dXJlZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0K
IAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50
NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21h
aW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxs
U3RvcmFnZUFjY2Vzc0VudHJpZXMoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQp
OwogICAgIGlmICghd2ViUGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDY0MmUzMzA5ZDA3Li44MjJj
M2ZjNzYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEv
V2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVE
YXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYnNp
dGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3Rh
dGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3Jp
Z2luSGFzaC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTEzNSw3ICsxMzYsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVu
dChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXModWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOworICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXMoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CiAgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rp
b24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9p
ZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogICAgIHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKGNvbnN0IFVS
TCYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBjb25zdCBVUkwmIGhvc3RSZWRpcmVjdGVkVG8sIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMDgzZDZmYWYx
NTIuLmNlZmRlNjFjNDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3Mv
Vmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lk
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUoX1VJTmF2aWdhdGlvbklu
dGVyYWN0aXZlVHJhbnNpdGlvbgogICAgICAgICBpZiAoZmluaXNoKQogICAgICAgICAgICAgbV93
ZWJQYWdlUHJveHlGb3JCYWNrRm9yd2FyZExpc3RGb3JDdXJyZW50U3dpcGUtPm5hdmlnYXRpb25H
ZXN0dXJlV2lsbEVuZCh0cmFuc2l0aW9uQ29tcGxldGVkLCAqdGFyZ2V0SXRlbSk7CiAgICAgfV07
Ci0gICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CisgICAgYXV0
byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVy
ZUlEID0gbV9jdXJyZW50R2VzdHVyZUlEOwogICAgIFttX3N3aXBlVHJhbnNpdGlvbkNvbnRleHQg
X3NldENvbXBsZXRpb25IYW5kbGVyOltwYWdlSUQsIGdlc3R1cmVJRCwgdGFyZ2V0SXRlbV0gKF9V
SVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQgKmNvbnRleHQsIEJPT0wgZGlkQ29tcGxl
dGUpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyRm9y
R2VzdHVyZShwYWdlSUQsIGdlc3R1cmVJRCkpCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmVuZFN3aXBlR2VzdHVyZShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KiB0YXJnZXRJdGVtLAogICAgICAgICBtX3dlYlBhZ2VQcm94eS5kaWRDaGFuZ2VCYWNrZ3JvdW5k
Q29sb3IoKTsKICAgICB9CiAKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5w
YWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwogICAg
IEdlc3R1cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgbV9sb2FkQ2Fs
bGJhY2sgPSBbdGhpcywgcGFnZUlELCBnZXN0dXJlSURdIHsKICAgICAgICAgYXV0byBkcmF3aW5n
QXJlYSA9IG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFsRHJhd2luZ0FyZWEoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDAzNTg0YjU1
MDM4Li45YzgyMWUwODg3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCkBAIC0yMjMsNyArMjIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKEZ1bmN0aW9uPHZvaWQoY29uc3QgRm9jdXNl
ZEUKICAgICB9CiAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92
ZShjYWxsYmFjayksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9r
ZW4oKSk7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9j
dXNlZEVsZW1lbnRJbmZvcm1hdGlvbihjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RGb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uKGNhbGxi
YWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVZpc2libGVDb250ZW50UmVj
dHMoY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgdmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdl
Ykluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDc2MGExZDAwOWRlLi4wMTc5OTVhNTE1MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29u
c3QgU3RyCiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9V
Ukw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVTIGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
IGVycm9yOk5VTExdOwogCi0gICAgICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1
dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1faW5zcGVj
dG9yUGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZFNhdmUoW2Fj
dHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pKTsKICAgICB9OwogCiAgICAgaWYgKCFmb3JjZVNhdmVE
aWFsb2cpIHsKQEAgLTIxMiw3ICsyMTIsNyBAQCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgUwogICAg
IFtoYW5kbGUgY2xvc2VGaWxlXTsKIAogICAgIFdlYlBhZ2VQcm94eSogaW5zcGVjdG9yUGFnZSA9
IHdlYlZpZXcoKS0+X3BhZ2UuZ2V0KCk7Ci0gICAgaW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBh
YnNvbHV0ZVN0cmluZ10pLCBpbnNwZWN0b3JQYWdlLT5wYWdlSUQoKSk7CisgICAgaW5zcGVjdG9y
UGFnZS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0
dWFsVVJMIGFic29sdXRlU3RyaW5nXSkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybVNldFNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2lu
Z0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmlt
YXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCmluZGV4IGY3MGYxYTRhYzRkLi5hZTZjOTBmYWQzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVkQ29yZUFuaW1hdGlv
bkRyYXdpbmdBcmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1Rp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0KQEAgLTEyMSw4ICsxMjEsNyBAQCB2
b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OmRpZFVwZGF0ZUdlb21ldHJ5
KCkKIAogdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlk
VXBkYXRlQWN0aXZpdHlTdGF0ZShBY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCiB7Ci0gICAgU2Vjb25k
cyBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCA9IFNlY29uZHM6OmZyb21NaWxsaXNlY29uZHMo
MjUwKTsKLSAgICBwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1l
ZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlPiht
X3dlYlBhZ2VQcm94eS5wYWdlSUQoKSwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQsIElQQzo6
V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKTsKKyAg
ICBwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRVcGRhdGVBY3Rpdml0eVN0YXRlPihtX3dlYlBhZ2VQ
cm94eS5wYWdlSUQoKSwgMjUwX21zLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRp
bmdJZlN5bmNNZXNzYWdlQXJyaXZlcyk7CiB9CiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWFQcm94eTo6d2lsbFNlbmRVcGRhdGVHZW9tZXRyeSgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQppbmRl
eCA1MDI0MWQ4YmY2Mi4uZjUzZmIyMWUzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlck1hYy5tbQpAQCAtMTQ0LDcgKzE0
NCw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVNYWduaWZpY2F0aW9uR2Vz
dHVyZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBGbG9hCiAKICAgICAgICAgLy8gRklYTUU6IFdlIGRy
b3AgdGhlIGZpcnN0IGZyYW1lIG9mIHRoZSBnZXN0dXJlIG9uIHRoZSBmbG9vciwgYmVjYXVzZSB3
ZSBkb24ndCBoYXZlIHRoZSB2aXNpYmxlIGNvbnRlbnQgYm91bmRzIHlldC4KICAgICAgICAgbV9t
YWduaWZpY2F0aW9uID0gbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAg
IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpLCBt
X3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgICAgIG1fd2ViUGFnZVByb3h5LnNlbmQoTWVz
c2FnZXM6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvck1h
Z25pZmljYXRpb25HZXN0dXJlKCkpOwogICAgICAgICBtX2xhc3RNYWduaWZpY2F0aW9uR2VzdHVy
ZVdhc1NtYXJ0TWFnbmlmaWNhdGlvbiA9IGZhbHNlOwogCiAgICAgICAgIHJldHVybjsKQEAgLTE5
Niw3ICsxOTYsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlU21hcnRNYWdu
aWZpY2F0aW9uR2VzdHVyZShGbG9hdFBvaW50IG9yaWdpbikKICAgICBpZiAobV9hY3RpdmVHZXN0
dXJlVHlwZSAhPSBWaWV3R2VzdHVyZVR5cGU6Ok5vbmUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fd2ViUGFnZVByb3h5LnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21l
dHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJl
KG9yaWdpbiksIG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5z
ZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpDb2xsZWN0R2VvbWV0
cnlGb3JTbWFydE1hZ25pZmljYXRpb25HZXN0dXJlKG9yaWdpbikpOwogfQogCiBzdGF0aWMgZmxv
YXQgbWF4aW11bVJlY3RhbmdsZUNvbXBvbmVudERlbHRhKEZsb2F0UmVjdCBhLCBGbG9hdFJlY3Qg
YikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlh
dGVBY3Rpb25Db250cm9sbGVyLm1tCmluZGV4IDIxNTE2NjJkMzQ3Li44YWYzNGFjNGM2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29u
dHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVB
Y3Rpb25Db250cm9sbGVyLm1tCkBAIC0xOTMsNyArMTkzLDcgQEAgLSAodm9pZClpbW1lZGlhdGVB
Y3Rpb25SZWNvZ25pemVyV2lsbEJlZ2luQW5pbWF0aW9uOihOU0ltbWVkaWF0ZUFjdGlvbkdlc3R1
cmVSZWMKICAgICAvLyBGSVhNRTogQ29ubmVjdGlvbiBjYW4gYmUgbnVsbCBpZiB0aGUgcHJvY2Vz
cyBpcyBjbG9zZWQ7IHdlIHNob3VsZCBjbGVhbiB1cCBiZXR0ZXIgaW4gdGhhdCBjYXNlLgogICAg
IGlmIChfc3RhdGUgPT0gV2ViS2l0OjpJbW1lZGlhdGVBY3Rpb25TdGF0ZTo6UGVuZGluZykgewog
ICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IF9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlv
bigpKSB7Ci0gICAgICAgICAgICBib29sIHJlY2VpdmVkUmVwbHkgPSBjb25uZWN0aW9uLT53YWl0
Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRQZXJm
b3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdD4oX3BhZ2UtPnBhZ2VJRCgpLCBTZWNvbmRzOjpmcm9t
TWlsbGlzZWNvbmRzKDUwMCkpOworICAgICAgICAgICAgYm9vbCByZWNlaXZlZFJlcGx5ID0gY29u
bmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3Q+KF9wYWdlLT5wYWdlSUQoKSwg
NTAwX21zKTsKICAgICAgICAgICAgIGlmICghcmVjZWl2ZWRSZXBseSkKICAgICAgICAgICAgICAg
ICBfc3RhdGUgPSBXZWJLaXQ6OkltbWVkaWF0ZUFjdGlvblN0YXRlOjpUaW1lZE91dDsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3Rv
clByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclBy
b3h5TWFjLm1tCmluZGV4IDAwN2Q4N2RmY2Q4Li5mNGFiOTFlODliMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNDc3
LDcgKzQ3Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2F2ZShjb25zdCBT
dHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjCiAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgW2NvbnRlbnRDb3B5IHdyaXRlVG9VUkw6YWN0dWFsVVJMIGF0b21pY2FsbHk6WUVT
IGVuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nIGVycm9yOk5VTExdOwogCi0gICAgICAgIG1f
aW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpE
aWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgbV9pbnNwZWN0b3JQYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OkRpZFNhdmUoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pKTsKICAgICB9OwogCiAg
ICAgaWYgKCFmb3JjZVNhdmVEaWFsb2cpIHsKQEAgLTUyMiw3ICs1MjIsNyBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwg
Y29uc3QgU3RyaW5nJgogICAgIFtoYW5kbGUgd3JpdGVEYXRhOltjb250ZW50IGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CiAgICAgW2hhbmRsZSBjbG9zZUZpbGVdOwog
Ci0gICAgbV9pbnNwZWN0b3JQYWdlLT5wcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViSW5zcGVj
dG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9y
UGFnZS0+cGFnZUlEKCkpOworICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yVUk6OkRpZEFwcGVuZChbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSkpOwogfQog
CiB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojp3aW5kb3dGcmFtZURpZENoYW5nZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQppbmRleCA4N2M2OGIz
MzQ4NS4uNDU1ZDJkNWQ0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dl
YlBhZ2VQcm94eU1hYy5tbQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3
aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZChjb25zdCBGbG9hdFJlY3QmIHZpZXdGcmFtZUluV2lu
ZG93CiAgICAgLy8gSW4gY2FzZSB0aGUgVUkgY2xpZW50IG92ZXJyaWRlcyBnZXRXaW5kb3dGcmFt
ZSgpLCB3ZSBjYWxsIGl0IGhlcmUgdG8gbWFrZSBzdXJlIHdlIHNlbmQgdGhlIGFwcHJvcHJpYXRl
IHdpbmRvdyBmcmFtZS4KICAgICBtX3VpQ2xpZW50LT53aW5kb3dGcmFtZSgqdGhpcywgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGlu
YXRlcywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlc10gKEZsb2F0UmVjdCB3aW5kb3dGcmFt
ZUluU2NyZWVuQ29vcmRpbmF0ZXMpIHsKICAgICAgICAgRmxvYXRSZWN0IHdpbmRvd0ZyYW1lSW5V
bmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcyA9IHBhZ2VDbGllbnQoKS5jb252ZXJ0VG9Vc2VyU3Bh
Y2Uod2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKTsKLSAgICAgICAgcHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OldpbmRvd0FuZFZpZXdGcmFtZXNDaGFuZ2VkKHdpbmRvd0Zy
YW1lSW5TY3JlZW5Db29yZGluYXRlcywgd2luZG93RnJhbWVJblVuZmxpcHBlZFNjcmVlbkNvb3Jk
aW5hdGVzLCB2aWV3RnJhbWVJbldpbmRvd0Nvb3JkaW5hdGVzLCBhY2Nlc3NpYmlsaXR5Vmlld0Nv
b3JkaW5hdGVzKSwgbV9wYWdlSUQpOworICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpX
aW5kb3dBbmRWaWV3RnJhbWVzQ2hhbmdlZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMs
IHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1lSW5XaW5k
b3dDb29yZGluYXRlcywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcykpOwogICAgIH0pOwog
fQogCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldE1haW5GcmFtZUlz
U2Nyb2xsYWJsZShib29sIGlzU2Nyb2xsYWJsZSkKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSwgbV9wYWdlSUQpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldE1haW5GcmFtZUlzU2Nyb2xsYWJsZShpc1Nj
cm9sbGFibGUpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERpY3RhdGVkVGV4dEFz
eW5jKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgRWRpdGluZ1JhbmdlJiByZXBsYWNlbWVudFJh
bmdlLCBjb25zdCBWZWN0b3I8VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlPiYgZGljdGF0aW9uQWx0
ZXJuYXRpdmVzV2l0aFJhbmdlLCBib29sIHJlZ2lzdGVyVW5kb0dyb3VwKQpAQCAtMjA1LDcgKzIw
NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjppbnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdSYW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0
QXN5bmModGV4dCwgcmVwbGFjZW1lbnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdp
c3RlclVuZG9Hcm91cCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJ
bnNlcnREaWN0YXRlZFRleHRBc3luYyh0ZXh0LCByZXBsYWNlbWVudFJhbmdlLCBkaWN0YXRpb25B
bHRlcm5hdGl2ZXMsIHJlZ2lzdGVyVW5kb0dyb3VwKSk7CiAjZWxzZQogICAgIEluc2VydFRleHRP
cHRpb25zIG9wdGlvbnM7CiAgICAgb3B0aW9ucy5yZWdpc3RlclVuZG9Hcm91cCA9IHJlZ2lzdGVy
VW5kb0dyb3VwOwpAQCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjphdHRyaWJ1
dGVkU3Vic3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhjb25zdCBFZGl0aW5nUmFuZ2UmCiAK
ICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbigp
KTsKIAotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vi
c3RyaW5nRm9yQ2hhcmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yQ2hh
cmFjdGVyUmFuZ2VBc3luYyhyYW5nZSwgY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6YXR0cmlidXRlZFN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQ2FsbGJhY2soY29uc3QgQXR0
cmlidXRlZFN0cmluZyYgc3RyaW5nLCBjb25zdCBFZGl0aW5nUmFuZ2UmIGFjdHVhbFJhbmdlLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmZvbnRBdFNlbGVjdGlvbihXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIGRv
dWJsZSwgYm8KICAgICAKICAgICBhdXRvIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKTsKICAgICAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6Rm9udEF0U2VsZWN0aW9uKGNhbGxiYWNrSUQpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmZvbnRBdFNlbGVjdGlvbkNhbGxiYWNrKGNvbnN0IFN0cmluZyYgZm9u
dE5hbWUsIGRvdWJsZSBmb250U2l6ZSwgYm9vbCBzZWxlY3Rpb25IYXNNdWx0aXBsZUZvbnRzLCBD
YWxsYmFja0lEIGNhbGxiYWNrSUQpCkBAIC0yNzEsNyArMjcxLDcgQEAgU3RyaW5nIFdlYlBhZ2VQ
cm94eTo6c3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgpCiAgICAgICAgIHJldHVybiB2YWx1
ZTsKICAgICAKICAgICBjb25zdCBTZWNvbmRzIG1lc3NhZ2VUaW1lb3V0KDIwKTsKLSAgICBwcm9j
ZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBh
c3RlYm9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlvbkZvclBhc3Rl
Ym9hcmQ6OlJlcGx5KHZhbHVlKSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZCgp
LCBNZXNzYWdlczo6V2ViUGFnZTo6R2V0U3RyaW5nU2VsZWN0aW9uRm9yUGFzdGVib2FyZDo6UmVw
bHkodmFsdWUpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0y
ODIsOCArMjgyLDggQEAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gV2ViUGFnZVByb3h5
OjpkYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChjb25zdCBTdHIKICAgICBTaGFyZWRNZW1vcnk6
OkhhbmRsZSBoYW5kbGU7CiAgICAgdWludDY0X3Qgc2l6ZSA9IDA7CiAgICAgY29uc3QgU2Vjb25k
cyBtZXNzYWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChwYXN0ZWJvYXJkVHlwZSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6
V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQ6OlJlcGx5KGhhbmRsZSwgc2l6
ZSksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKHBhc3RlYm9hcmRUeXBlKSwKKyAg
ICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpS
ZXBseShoYW5kbGUsIHNpemUpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgaWYgKGhhbmRsZS5pc051
bGwoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
c2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKQEAgLTI5NywxNCArMjk3LDE0IEBAIGJvb2wgV2Vi
UGFnZVByb3h5OjpyZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQoY29uc3QgU3RyaW5nJiBwYXN0
ZWJvYXJkTmFtZSkKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3QgU2Vjb25k
cyBtZXNzYWdlVGltZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLCBNZXNz
YWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOjpSZXBseShyZXN1bHQp
LCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZWFkU2VsZWN0aW9uRnJvbVBhc3RlYm9hcmQocGFzdGVib2FyZE5hbWUpLCBNZXNzYWdl
czo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkOjpSZXBseShyZXN1bHQpLCBt
ZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogI2lmIEVOQUJMRShTRVJW
SUNFX0NPTlRST0xTKQogdm9pZCBXZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFz
dGVib2FyZERhdGEoY29uc3QgVmVjdG9yPFN0cmluZz4mIHR5cGVzLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCiB7Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEpLCBtX3BhZ2VJ
RCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVwbGFjZVNlbGVjdGlvbldpdGhQYXN0
ZWJvYXJkRGF0YSh0eXBlcywgZGF0YSkpOwogfQogI2VuZGlmCiAKQEAgLTMzNCwyMiArMzM0LDIy
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHVpbnQ2
NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OlNlbmRDb21wbGV4VGV4dElucHV0VG9QbHVnaW4ocGx1Z2luQ29tcGxleFRleHRJbnB1
dElkZW50aWZpZXIsIHRleHRJbnB1dCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpTZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHBsdWdpbkNvbXBsZXhUZXh0SW5w
dXRJZGVudGlmaWVyLCB0ZXh0SW5wdXQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwcGVy
Y2FzZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcHBl
cmNhc2VXb3JkKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVcHBl
cmNhc2VXb3JkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG93ZXJjYXNlV29yZCgpCiB7
Ci0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxvd2VyY2FzZVdvcmQoKSwg
bV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okxvd2VyY2FzZVdvcmQoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjYXBpdGFsaXplV29yZCgpCiB7Ci0gICAgcHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhcGl0YWxpemVXb3JkKCksIG1fcGFnZUlEKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBpdGFsaXplV29yZCgpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChib29sIGlzU21hcnRJ
bnNlcnREZWxldGVFbmFibGVkKQpAQCAtMzU5LDcgKzM1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZCkKIAogICAgIFRleHRDaGVja2VyOjpzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNT
bWFydEluc2VydERlbGV0ZUVuYWJsZWQpOwogICAgIG1faXNTbWFydEluc2VydERlbGV0ZUVuYWJs
ZWQgPSBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZDsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGlzU21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dFNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZChpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybURpY3Rpb25hcnlMb29rdXAoY29uc3Qg
RGljdGlvbmFyeVBvcHVwSW5mbyYgZGljdGlvbmFyeVBvcHVwSW5mbykKQEAgLTM5NSw3ICszOTUs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJVSVByb2Nlc3NBY2Nlc3NpYmlsaXR5VG9r
ZW5zKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlZ2lzdGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4sIHdp
bmRvd1Rva2VuKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlZ2lz
dGVyVUlQcm9jZXNzQWNjZXNzaWJpbGl0eVRva2VucyhlbGVtZW50VG9rZW4sIHdpbmRvd1Rva2Vu
KSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFu
Z2VkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBib29sIHBsdWdp
bkhhc0ZvY3VzQW5kV2luZG93SGFzRm9jdXMpCkBAIC00MjQsNyArNDI0LDcgQEAgYm9vbCBXZWJQ
YWdlUHJveHk6OnNob3VsZERlbGF5V2luZG93T3JkZXJpbmdGb3JFdmVudChjb25zdCBXZWJLaXQ6
OldlYk1vdXNlRXZlbnQKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgY29uc3QgU2Vj
b25kcyBtZXNzYWdlVGltZW91dCgzKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMoTWVzc2FnZXM6
OldlYlBhZ2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChldmVudCksIE1lc3NhZ2Vz
OjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQ6OlJlcGx5KHJlc3VsdCks
IG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBh
Z2U6OlNob3VsZERlbGF5V2luZG93T3JkZXJpbmdFdmVudChldmVudCksIE1lc3NhZ2VzOjpXZWJQ
YWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQ6OlJlcGx5KHJlc3VsdCksIG1lc3Nh
Z2VUaW1lb3V0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzUsNyArNDM1LDcgQEAg
Ym9vbCBXZWJQYWdlUHJveHk6OmFjY2VwdHNGaXJzdE1vdXNlKGludCBldmVudE51bWJlciwgY29u
c3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW4KIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAg
Y29uc3QgU2Vjb25kcyBtZXNzYWdlVGltZW91dCgzKTsKLSAgICBwcm9jZXNzKCkuc2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVyLCBldmVudCks
IE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZTo6UmVwbHkocmVzdWx0KSwgbV9w
YWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6
QWNjZXB0c0ZpcnN0TW91c2UoZXZlbnROdW1iZXIsIGV2ZW50KSwgTWVzc2FnZXM6OldlYlBhZ2U6
OkFjY2VwdHNGaXJzdE1vdXNlOjpSZXBseShyZXN1bHQpLCBtZXNzYWdlVGltZW91dCk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCBmZjQ0OTM0MWQ5
ZS4uNTdmM2ZlMTczY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0xNjgsNyArMTY4LDcg
QEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS5w
YWdlSUQoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAK
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFN0cmlu
ZyYgdmFsaWRhdGlvblVSTFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAK
aW5kZXggYjFjYmM5NjNiMGUuLjQ1NGNhNmJjODQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRG
dW5jdGlvbihjYWxsYmFja0lELCBlcnJvck1lc3NhZ2UsIGVycm9yVHlwZSksIDApOwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9u
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlv
biwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNr
QXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5j
dGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxi
YWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7
CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFn
ZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90
IGZyYW1lSUQsCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2YWx1YXRl
SmF2YVNjcmlwdEZ1bmN0aW9uKGNhbGxiYWNrSUQsIHJlc3VsdCwgZXJyb3JUeXBlKSwgMCk7CiB9
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRo
T3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGlu
YWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNv
bHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFn
ZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBp
ZiAoIXBhZ2UpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aQog
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgp
KTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmlu
Zz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTM4OCw3ICszODgsNyBA
QCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5v
ZGVIYW5kbGUodWludDY0X3QgcGFnZUlELAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVs
bG9wdCwgZnJhbWVGcm9tRWxlbWVudC0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFt
ZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQyNiw3
ICs0MjYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZy
YW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NgogICAgIGNvbXBsZXRpb25IYW5kbGVy
KFdURjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4s
IHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50
NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAg
LTQ1Miw3ICs0NTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQ
YXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYQogICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURjo6bnVsbG9wdCwgcGFyZW50RnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Zm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJh
bWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQogewogICAgIFdlYlBh
Z2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAg
aWYgKCFwYWdlKQpAQCAtNTI3LDcgKzUyNyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50
IGNvbnZlcnRQb2ludEZyb21GcmFtZUNsaWVudFRvUm9vdFZpZXcoV2ViQ29yZTo6RnJhbWVWCiAg
ICAgcmV0dXJuIGNsaWVudFBvaW50OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRp
bmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50
PiwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRl
ZCwgQ29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6
OkludFBvaW50PiwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSog
cGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAo
IXBhZ2UpIHsKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZgogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgcmVzdWx0RWxlbWVudEJvdW5kcywgcmVz
dWx0SW5WaWV3Q2VudGVyUG9pbnQsIGlzT2JzY3VyZWQpOwogfQogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudChQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBh
Z2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAg
aWYgKCFwYWdlKSB7CkBAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIFdlYkNvcmU6OkludFJlY3Qg
c25hcHNob3RSZWN0Rm9yU2NyZWVuc2hvdChXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpFbGVtZW4K
ICAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRh
a2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9y
dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6
dGFrZVNjcmVlbnNob3QoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBU
b1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGhhbmRsZTsKIApAQCAtNzUxLDcgKzc1MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlECiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5zaG90
KGNhbGxiYWNrSUQsIGhhbmRsZSwgeyB9KSwgMCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
PiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7
CiAgICAgaWYgKCFwYWdlKSB7CkBAIC03NzYsNyArNzc2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZvdW5kQ29va2llcyk7
CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGVsZXRlQ29va2llKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJ
RCk7CiAgICAgaWYgKCFwYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKaW5kZXgg
NjI5NTQxZDIwYmEuLjExNjc2NDUyNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNv
b3JkaW5hdGVTeXN0ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDE3ICs2MSwxNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eSBtZXNzYWdlcwotICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBW
ZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1
bWVudCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9p
ZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRo
Tm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1
aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQg
cmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAg
IHZvaWQgZm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpOwotICAg
IHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29y
ZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdl
YkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYpOwot
ICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4pPiYmKTsKLSAgICB2b2lkIHRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+KT4mJik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBs
aWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZv
aWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBy
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFt
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgZm9j
dXNGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCk7CisgICAg
dm9pZCBjb21wdXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRl
ZCwgQ29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wp
PiYmKTsKKyAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKKyAgICB2b2lkIHRha2VTY3JlZW5zaG90KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRs
ZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYpOworICAgIHZvaWQg
ZGVsZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
KT4mJik7CiAKICAgICBTdHJpbmcgbV9zZXNzaW9uSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWExMjE5ZTJlZjEuLmQ3
MmY4OWQyNjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2Fn
ZXMuaW4KQEAgLTIxLDIxICsyMSwyMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IHsKLSAgICBFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBmdW5jdGlvbiwgVmVj
dG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1l
bnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywg
Ym9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0
LCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5h
bCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwpIC0+
IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAg
ICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhO
YW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUpIC0+IChP
cHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBS
ZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAo
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAg
UmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25hbDxTdHJp
bmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRG
cmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhO
YW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIG5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJ
RCkgQXN5bmMKKyAgICBSZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUs
IHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCiAKLSAgICBGb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCkKKyAgICBGb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKIAotICAgIENvbXB1dGVFbGVtZW50TGF5b3V0
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJv
b2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0
ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUs
IFdlYkNvcmU6OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmll
d0NlbnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIEFzeW5jCisgICAgQ29tcHV0ZUVsZW1lbnRM
YXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4
X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25hbDxXZWJD
b3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkgQXN5bmMK
IAotICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBB
c3luYworICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0
cmluZz4gZXJyb3JUeXBlKSBBc3luYwogCi0gICAgVGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQor
ICAgIFRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRl
ZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIEdldENv
b2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRp
b25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykg
QXN5bmMKLSAgICBEZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgY29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3lu
YworICAgIEdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKKyAgICBEZWxldGVDb29raWUoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2ll
TmFtZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKaW5kZXggYWUzODgzZDg2YjYuLmFmODlkNzg4MTYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwg
SVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewot
ICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBh
Z2UoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKQorICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFn
ZUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAgICAgICAg
d2ViUGFnZS0+ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDA0YWUwZTQ1ZDVlLi4yNzhi
NjAxODQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENh
Y2hlZFJlc291CiAgICAgYXV0byYgZnJhbWVMb2FkZXJDbGllbnQgPSByZXNvdXJjZUxvYWRlci5m
cmFtZUxvYWRlcigpLT5jbGllbnQoKTsKIAogICAgIFdlYlJlc291cmNlTG9hZGVyOjpUcmFja2lu
Z1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0ZXJzOwotICAgIHRyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZU9yKDApOworICAgIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZU9y
KFBhZ2VJZGVudGlmaWVyIHsgfSk7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQgPSBm
cmFtZUxvYWRlckNsaWVudC5mcmFtZUlEKCkudmFsdWVPcigwKTsKICAgICB0cmFja2luZ1BhcmFt
ZXRlcnMucmVzb3VyY2VJRCA9IGlkZW50aWZpZXI7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBmcmFt
ZUxvYWRlckNsaWVudC5zZXNzaW9uSUQoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVy
LCBDYWNoZWRSZXNvdQogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHJlbWVtYmVyIHRoZSBSZXNvdXJj
ZUxvYWRlciBpbiBvdXIgcmVjb3JkcyBidXQgbm90IHNjaGVkdWxlIGl0IGluIHRoZSBOZXR3b3Jr
UHJvY2Vzcy4KICAgICBpZiAocmVzb3VyY2VMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+c2NoZWR1
bGVBcmNoaXZlTG9hZChyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpKSkg
ewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVy
U3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFy
Y2hpdmUgcmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJz
Y2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNvdXJjZSAo
ZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlm
aWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNj
aGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlIChm
cmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgaWRlbnRpZmllcik7CiAgICAgICAgIG1fd2ViUmVzb3VyY2VMb2FkZXJzLnNldChpZGVudGlm
aWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1Bh
cmFtZXRlcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3NSwxNCArMTc1LDE0IEBA
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVz
b3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBpZiAocmVzb3VyY2VMb2FkZXIuZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRSZXNvdXJjZShyZXNv
dXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCByZXNvdXJjZUxvYWRlci5yZXF1
ZXN0KCkudXJsKCkpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9j
ZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGxv
YWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291
cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNh
dGlvbiBjYWNoZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZy
YW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJj
ZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGZyb20gYXBwbGljYXRp
b24gY2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFt
ZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgbV93ZWJSZXNvdXJjZUxvYWRlcnMu
c2V0KGlkZW50aWZpZXIsIFdlYlJlc291cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIs
IHRyYWNraW5nUGFyYW1ldGVycykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYg
KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzRGF0YSgpKSB7CiAgICAg
ICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGxvYWRlZCBhcyBkYXRhLiIsIHJlc291
cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBi
ZSBsb2FkZWQgYXMgZGF0YSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9h
ZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChy
ZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEg
KGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIs
IENhY2hlZFJlc291CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGlzUXVpY2tMb29rUHJl
dmlld1VSTChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkpKSB7CiAgICAgICAgIExPRyhO
ZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2Uu
IiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVS
TCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2UgKGZyYW1lID0gJXAsIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVS
TCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2UgKGZyYW1lID0gJXAsIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVy
KTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAg
ICAgLy8gaHR0cHM6Ly9ibG9ncy5nbm9tZS5vcmcvYWxleGwvMjAxMi8wMS8yNi9yZXNvdXJjZXMt
aW4tZ2xpYi8KICAgICBpZiAocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29s
SXMoInJlc291cmNlIikpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlBy
b2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUg
aGFuZGxlZCBhcyBhIEdSZXNvdXJjZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxv
YWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJjZSAo
ZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlm
aWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNj
aGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJjZSAoZnJhbWUgPSAl
cCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOwogICAgICAgICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRS
ZXNvdQogICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuaGFuZGxlRmV0
Y2gocmVzb3VyY2VMb2FkZXIsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgW3RoaXMsIHRyYWNraW5nUGFyYW1ldGVycywgaWRlbnRpZmllciwgc2Vz
c2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVt
QnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSwgcmVzb3VyY2VM
b2FkZXIgPSBtYWtlUmVmKHJlc291cmNlTG9hZGVyKV0gKFNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6UmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQ6OlVuaGFuZGxlZCkgewogICAgICAgICAgICAgTE9H
KE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hl
ZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtl
ciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIiwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmluZygp
LmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJl
c291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQg
dGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNj
aGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBo
YW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3Vy
Y2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNvdXJjZUxvYWRlci0+b3B0aW9ucygpLnNl
cnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJz
Y2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNlV29ya2Vy
IGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNv
dXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogdW5h
YmxlIHRvIHNjaGVkdWxlIFVSTCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFs
Z29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFt
ZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3Jlc291cmNlTG9hZGVyID0gV1RGTW92ZShyZXNvdXJjZUxvYWRlcildIHsKICAgICAgICAgICAg
ICAgICBhdXRvIGVycm9yID0gaW50ZXJuYWxFcnJvcihyZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgp
LnVybCgpKTsKICAgICAgICAgICAgICAgICBlcnJvci5zZXRUeXBlKFJlc291cmNlRXJyb3I6OlR5
cGU6OkNhbmNlbGxhdGlvbik7CkBAIC0yMjcsMTMgKzIyNywxMyBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNo
ZWRSZXNvdQogICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0
cmF0ZWd5KCkudHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlcikp
CiAgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgp
LnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlci5nZXQoKSwgcmVz
b3VyY2VMb2FkZXItPnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzZXNzaW9uSUQsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChy
ZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFu
eSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5m
cmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJl
c291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55
IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZy
YW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgIH0pOwogI2Vsc2UKICAgICBpZiAoIXRy
eUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKQogICAgICAgICBz
Y2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzZXNzaW9uSUQsIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291
cmNlKSk7CiAgICAgZWxzZQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNl
TG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChm
cmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZp
ZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2No
ZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJz
LnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmll
cik7CiAjZW5kaWYKIH0KIApAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3Vy
Y2VMCiAgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLm9wdGlvbnMubW9kZSAhPSBGZXRjaE9wdGlvbnM6
Ok1vZGU6Ok5hdmlnYXRlKSB7CiAgICAgICAgIEFTU0VSVChsb2FkUGFyYW1ldGVycy5zb3VyY2VP
cmlnaW4pOwogICAgICAgICBpZiAoIWxvYWRQYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbikgewotICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNj
aGVkdWxlTG9hZDogbm8gc291cmNlT3JpZ2luIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50Pihy
ZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmll
cik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLCAic2NoZWR1bGVMb2FkOiBubyBzb3VyY2VPcmlnaW4gKGZyYW1lID0gJXAsIHByaW9yaXR5
ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2Fz
dDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQ
YXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgICAgICAgICAgc2NoZWR1bGVJbnRlcm5hbGx5RmFp
bGVkTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTM0Niw5ICszNDYsOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRG
cm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogCiAgICAgQVNTRVJU
KChsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgJiYgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCkg
fHwgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVkZW50
aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscyk7CiAKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBp
cyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHBy
aW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0
aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBh
cmFtZXRlcnMud2ViUGFnZUlELCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1l
dGVycy5pZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLCAic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUg
TmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVy
LnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0
KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIp
OwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycyksIDApKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJz
Y2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3Jr
UHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291
cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVbmFi
bGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0g
JXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgp
LCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwg
bG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgICAgICAvLyBXZSBwcm9iYWJs
eSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIGJl
Y2F1c2UgaXQgaGFkIGNyYXNoZWQuCiAgICAgICAgIC8vIFRoaXMgbG9hZCB3aWxsIG5ldmVyIHN1
Y2NlZWQgc28gd2Ugd2lsbCBzY2hlZHVsZSBpdCB0byBmYWlsIGFzeW5jaHJvbm91c2x5LgogICAg
ICAgICBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKHJlc291cmNlTG9hZGVyKTsKQEAgLTUw
NywxOSArNTA3LDE5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgV2ViRnJhbWUqIHdl
YkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2Vi
RnJhbWUoKSA6IG51bGxwdHI7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2Vi
RnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAKLSAgICBhdXRvIHBhZ2VJRCA9IHdlYlBhZ2UgPyB3
ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CisgICAgYXV0byBwYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFn
ZS0+cGFnZUlEKCkgOiBQYWdlSWRlbnRpZmllciB7IH07CiAgICAgYXV0byBmcmFtZUlEID0gd2Vi
RnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKICAgICBhdXRvIHNlc3Npb25JRCA9IHdl
YlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vz
c2lvbklEKCk7CiAKICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lTG9hZGVyLmZyYW1lKCkuZG9j
dW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogbm8gZG9j
dW1lbnQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlbHUpIiwgcGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5OiBubyBkb2N1bWVudCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQudG9VSW50NjQo
KSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgICAgIGVycm9yID0gaW50
ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGlmIChhdXRvIHN5bmNMb2FkUmVzdWx0ID0gdHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2luZ1VS
TFNjaGVtZUhhbmRsZXIoZnJhbWVMb2FkZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHJlcXVl
c3QpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAi
bG9hZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIGNhbGxpbmcgdHJ5TG9hZGluZ1N5bmNo
cm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUsIGVycm9yID0gJWQpIiwgcGFnZUlE
LCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBzeW5jTG9hZFJlc3VsdC0+ZXJyb3Iu
ZXJyb3JDb2RlKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Np
b25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBjYWxsaW5nIHRyeUxvYWRp
bmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyIChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1LCBlcnJvciA9ICVkKSIs
IHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBzeW5j
TG9hZFJlc3VsdC0+ZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgICAgICBlcnJvciA9IFdURk1vdmUo
c3luY0xvYWRSZXN1bHQtPmVycm9yKTsKICAgICAgICAgcmVzcG9uc2UgPSBXVEZNb3ZlKHN5bmNM
b2FkUmVzdWx0LT5yZXNwb25zZSk7CiAgICAgICAgIGRhdGEgPSBXVEZNb3ZlKHN5bmNMb2FkUmVz
dWx0LT5kYXRhKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQog
ICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAKICAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBhcmFtZXRlcnMpLCBNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQ6
OlJlcGx5KGVycm9yLCByZXNwb25zZSwgZGF0YSksIDApKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTog
ZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUp
IiwgcGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5OiBmYWlsZWQgc2VuZGluZyBzeW5jaHJvbm91cyBuZXR3b3JrIHByb2Nlc3MgbWVzc2Fn
ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICVsdSkiLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRp
Zmllcik7CiAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gd2ViUGFnZSA/IHdlYlBhZ2UtPmNvcmVQ
YWdlKCkgOiBudWxscHRyKQogICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdDbGll
bnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6
OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpzeW5j
aHJvbm91c01lc3NhZ2VGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7CiAg
ICAgICAgIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwpAQCAtNTYxLDcgKzU2MSw3IEBA
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVM
b2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgfQogfQogCi12b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpCit2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5OjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCiB7
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpQYWdlTG9hZENvbXBsZXRlZCh3ZWJQYWdlSUQpLCAwKTsKIH0KQEAgLTY0OCwxMCAr
NjQ4LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhGcmFtZUxvYWRl
ciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBTCiAKICAgICBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFJlc291
cmNlUmVxdWVzdCB7IHVybCB9OwotICAgIHBhcmFtZXRlcnMud2ViUGFnZUlEID0gd2ViUGFnZSA/
IHdlYlBhZ2UtPnBhZ2VJRCgpIDogMDsKLSAgICBwYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJG
cmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwOworICAgIHBhcmFtZXRlcnMud2ViUGFnZUlE
ID0gd2ViUGFnZS0+cGFnZUlEKCk7CisgICAgcGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJh
bWUtPmZyYW1lSUQoKTsKICAgICBwYXJhbWV0ZXJzLnBhcmVudFBJRCA9IHByZXNlbnRpbmdBcHBs
aWNhdGlvblBJRCgpOwotICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdlYlBh
Z2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKKyAg
ICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UtPnNlc3Npb25JRCgpOwogICAgIHBhcmFt
ZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsK
ICAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6Olll
czsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzID0gc2hv
dWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA0YWY1OTk0MWUzNC4uYWM1
MjQ5NjZhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCBsb2FkUmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxv
YWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJy
ZXNvdXJjZUxvYWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hy
b25vdXNseShXZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VMb2Fk
SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2xp
ZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3Qg
V2ViQ29yZTo6SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSBmaW5hbDsKLSAgICB2b2lk
IHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgZmluYWw7CisgICAgdm9pZCBw
YWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgZmluYWw7CiAKICAgICB2
b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0
RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IGJmODhmZGEzMDA3Li44OGJkNTNiZjFmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAt
ODgsMTYgKzg4LDE2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIFJlc291CiAgICAgUmVmPFdlYlJlc291
cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIExPRyhOZXR3b3JrLCAiKFdl
YlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIsIHBy
b3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoIndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBpZiAobV9jb3JlTG9hZGVyLT5kb2N1
bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrRm9y
UmVkaXJlY3QobV9jb3JlTG9hZGVyLmdldCgpLCBwcm9wb3NlZFJlcXVlc3QsIHJlZGlyZWN0UmVz
cG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVz
dDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QgcmV0
dXJuZWQgZmFsc2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291
cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6
IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVy
bmVkIGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb3JlTG9h
ZGVyLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJl
c3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwg
IW1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3Jl
bG9hZGVyIG9yIGlkZW50aWZpZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2ls
bFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBvciBpZGVu
dGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUlu
dDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnJlc291cmNlSUQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExMywx
MiArMTEzLDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKHVpbnQ2NF90
IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTCiB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Us
IGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7CiAgICAgTE9H
KE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHN0YXR1
cyA9ICVkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAK
ICAgICBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
aWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3Qo
KS5tYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKG1fY29yZUxvYWRlci5nZXQoKSwgcmVzcG9u
c2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25z
ZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVhZHkgY2Fj
aGVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3Qg
Y29udGludWluZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMgYWxyZWFkeSBjYWNoZWQgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90
cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJ
RCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGJvbwogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlciAmJiBtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkpOwogICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIg
b3Igbm8gSUQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVS
ZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8g
SUQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVz
b3VyY2VJRCk7CiAgICAgICAgIH07CiAgICAgfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2lu
Z05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1
bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoIW1fbnVtQnl0
ZXNSZWNlaXZlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
RGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgIH0KICAg
ICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKQEAgLTE1OCw3ICsxNTgsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0
cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
RmluaXNoUmVzb3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGggPSAlemQpIiwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgbGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSgh
bV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3VsZCBub3QgYmUgYWJsZSB0
byBmaW5pc2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKICAgICBtX2Nv
cmVMb2FkZXItPmRpZEZpbmlzaExvYWRpbmcobmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTE2Nyw3
ICsxNjcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQo
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTAogdm9pZCBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJl
c291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsUmVzb3VyY2VM
b2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7
CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25z
ZSwgIkxvYWQgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGZpbmlzaCBiZWZvcmUgd2UndmUgdmFsaWRh
dGVkIHRoZSByZXNwb25zZSIpOwogCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51
cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIG1fY29y
ZUxvYWRlci0+ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogfQpAQCAtMTg3LDcg
KzE4Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFt
ZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNv
dXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0
eVBvbGljeURlbmllZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0
aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdG9wTG9hZGluZ0Fm
dGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkOiAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1
cml0eVBvbGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9h
ZGVyKCktPnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xp
Y3lEZW5pZWQobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIHJlc3BvbnNlKTsKIH0KQEAgLTE5
NiwxMyArMTk2LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJY
RnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pCiB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRs
ZSYgaGFuZGxlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgp
LnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkUmVjZWl2ZVJlc291cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c291cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5yZXNvdXJjZUlEKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRs
ZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAg
IExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJj
ZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1
ZmZlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5h
YmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIGlmIChhdXRvKiBmcmFt
ZSA9IG1fY29yZUxvYWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2Ug
PSBmcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5n
Q2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6
Y3JlYXRlU2hhcmVkQnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmgKaW5kZXggN2ZkNzgzMjIzM2EuLjU4NjU0MzcxOGU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNl
bmRlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01MCw3ICs1MSw3IEBAIHR5cGVkZWYgdWludDY0X3QgUmVz
b3VyY2VMb2FkSWRlbnRpZmllcjsKIGNsYXNzIFdlYlJlc291cmNlTG9hZGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyIHsK
IHB1YmxpYzoKICAgICBzdHJ1Y3QgVHJhY2tpbmdQYXJhbWV0ZXJzIHsKLSAgICAgICAgdWludDY0
X3QgcGFnZUlEIHsgMCB9OworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7
CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQgeyAwIH07CiAgICAgICAgIFJlc291cmNlTG9hZElk
ZW50aWZpZXIgcmVzb3VyY2VJRCB7IDAgfTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcAppbmRleCAyMGU0ZDVjNWFkYi4uZmEwNzgyM2ZmM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgYm9vbCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyOjpzaG93KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uLCBXZWJQYWdlKiBw
YWdlKQogICAgIGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNh
dGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkpLml0ZXJh
dG9yOwogICAgIGl0LT52YWx1ZS5hcHBlbmQobm90aWZpY2F0aW9uSUQpOwogCi0gICAgbV9wcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6U2hvd05vdGlmaWNhdGlvbihub3RpZmljYXRpb24tPnRpdGxlKCksIG5vdGlmaWNhdGlvbi0+
Ym9keSgpLCBub3RpZmljYXRpb24tPmljb24oKS5zdHJpbmcoKSwgbm90aWZpY2F0aW9uLT50YWco
KSwgbm90aWZpY2F0aW9uLT5sYW5nKCksIG5vdGlmaWNhdGlvbi0+ZGlyKCksIG5vdGlmaWNhdGlv
bi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygp
LCBub3RpZmljYXRpb25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNob3dOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLT50aXRsZSgp
LCBub3RpZmljYXRpb24tPmJvZHkoKSwgbm90aWZpY2F0aW9uLT5pY29uKCkuc3RyaW5nKCksIG5v
dGlmaWNhdGlvbi0+dGFnKCksIG5vdGlmaWNhdGlvbi0+bGFuZygpLCBub3RpZmljYXRpb24tPmRp
cigpLCBub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmln
aW4oKS0+dG9TdHJpbmcoKSwgbm90aWZpY2F0aW9uSUQpKTsKICAgICByZXR1cm4gdHJ1ZTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CkBAIC0xNjksNyArMTY5LDcgQEAg
dm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmlj
YXRpb24sIFdlYlBhZ2UqIHBhZ2UpCiAgICAgaWYgKCFub3RpZmljYXRpb25JRCkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRp
b25JRCksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkNhbmNlbE5vdGlmaWNhdGlvbihub3RpZmljYXRpb25JRCkpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZSk7CkBAIC0x
ODQsNyArMTg0LDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpjbGVhck5vdGlmaWNh
dGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCoKICAgICAgICAgcmV0dXJuOwog
CiAgICAgVmVjdG9yPHVpbnQ2NF90PiYgbm90aWZpY2F0aW9uSURzID0gaXQtPnZhbHVlOwotICAg
IG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkNsZWFyTm90aWZpY2F0aW9ucyhub3RpZmljYXRpb25JRHMpLCBwYWdlLT5wYWdl
SUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDbGVhck5vdGlm
aWNhdGlvbnMobm90aWZpY2F0aW9uSURzKSk7CiAgICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0
aW9uSURzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
ICAgICAgICAgUmVmUHRyPE5vdGlmaWNhdGlvbj4gbm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRp
b25JRE1hcC50YWtlKG5vdGlmaWNhdGlvbklEc1tpXSk7CkBAIC0yMTAsNyArMjEwLDcgQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKE5vdGlmaWNh
dGlvbiogbm90aWZpY2F0aW9uLAogCiAgICAgbV9ub3RpZmljYXRpb25JRE1hcC5yZW1vdmUobm90
aWZpY2F0aW9uSUQpOwogICAgIHJlbW92ZU5vdGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKG5vdGlm
aWNhdGlvbklELCBub3RpZmljYXRpb24pOwotICAgIG1fcHJvY2Vzcy5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZERlc3Ryb3lOb3RpZmlj
YXRpb24obm90aWZpY2F0aW9uSUQpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWREZXN0cm95Tm90aWZpY2F0aW9uKG5vdGlmaWNhdGlv
bklEKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOwogICAgIFVOVVNF
RF9QQVJBTShwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCAz
NGI1YTY0M2YwMy4uYWRjNDc2NjUyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgc3luY1dvcmtlclRl
cm1pbmF0aW9uVGltZW91dCB7IDEwMF9tcyB9OyAvLyBPbmx5IHVzZWQgYnkgbGEKIAogY2xhc3Mg
U2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIEVtcHR5RnJhbWVM
b2FkZXJDbGllbnQgewogcHVibGljOgotICAgIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVu
dChXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50KQorICAgIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudChXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogICAgICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0
aW9uKQogICAgICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAgICAgLCBtX3BhZ2VJ
RChwYWdlSUQpCkBAIC05NSwxOCArOTUsMTggQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykgZmluYWwg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdl
SUQ7IH0KICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fZnJhbWVJRDsgfQogICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgZmluYWwg
eyByZXR1cm4gbV91c2VyQWdlbnQ7IH0KIAogICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uJiBtX2Nvbm5lY3Rpb247CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAg
dWludDY0X3QgbV9wYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9w
YWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEIHsgMCB9OwogICAgIFN0cmluZyBtX3VzZXJB
Z2VudDsKIH07CiAKLVdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2
NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlKQorV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0
X3QgcGFnZUdyb3VwSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5j
ZXNTdG9yZSYgc3RvcmUpCiAgICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1v
dmUoY29ubmVjdGlvbikpCiAgICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQogICAgICwg
bV9wYWdlSUQocGFnZUlEKQpAQCAtMjI2LDEyICsyMjYsMTIgQEAgdm9pZCBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVy
IHNlcnYKIHsKICAgICBhdXRvKiBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtl
cklkZW50aWZpZXIpOwogICAgIGlmICghc2VydmljZVdvcmtlclRocmVhZFByb3h5KSB7Ci0gICAg
ICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlm
aWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghaXNWYWxpZEZldGNoKHJl
cXVlc3QsIG9wdGlvbnMsIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c2NyaXB0VVJMKCksIHJl
ZmVycmVyKSkgewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElk
ZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7
IH0sIGZldGNoSWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDZjZTgzZDFkMDllLi5mYmI2MzBlNGUxOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBw
dWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91
cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCB1aW50
NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKTsKICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
JikgZmluYWw7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBDOjpDb25u
ZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOwogICAgIHVpbnQ2NF90IG1fcGFn
ZUdyb3VwSUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9wcmV2aW91c1NlcnZpY2VXb3Jr
ZXJJRCB7IDAgfTsKIAogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tp
bmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6U3RvcmFnZUJsb2NraW5nUG9saWN5OjpBbGxvd0FsbFN0b3JhZ2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggOGFlYmFmZjk2MjIuLjI2NDRjOWMxZDEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNTUsNyArNTUs
NyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZWRp
cmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0s
IG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UgeyByZXNwb25zZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9
CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgaWYgKG1fbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiAgICAgICAgIG1fd2FpdGluZ0Zv
ckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSA9IHRydWU7CiAKLSAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVS
ZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNz
YWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNl
IHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwg
bV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpAQCAtODQs
NyArODQsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2Vp
dmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgYnVmZmVyIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1
ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2Vp
dmVEYXRhIHsgeyBidWZmZXIgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLT5zaXplKCkp
IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZv
cm1EYXRhKQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mCiAgICAg
Ly8gRm9yIG5vdyBhbmQgZm9yIHRoZSBjYXNlIG9mIGJsb2JzLCB3ZSByZWFkIGl0IHRoZXJlIGFu
ZCBzZW5kIHRoZSBkYXRhIHRocm91Z2ggSVBDLgogICAgIFVSTCBibG9iVVJMID0gZm9ybURhdGEt
PmFzQmxvYlVSTCgpOwogICAgIGlmIChibG9iVVJMLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2
ZUZvcm1EYXRhIHsgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IFdURk1vdmUoZm9ybURhdGEpIH0g
fSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZUZvcm1EYXRh
IHsgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IFdURk1vdmUoZm9ybURhdGEpIH0gfSwgbV9mZXRj
aElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjksNyArMTI5LDcg
QEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNo
dW5rKGNvbnN0IGNoYXIqIGRhdGEsIHNpemUKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oZGF0YSksIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9m
ZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRf
dD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKQEAgLTE0OSw3ICsxNDks
NyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZhaWwg
eyBlcnJvciB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZhaWwgeyBlcnJv
ciB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC0xNjQsNyAr
MTY0LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2go
KQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2ggeyB9LCBtX2ZldGNoSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZpbmlzaCB7IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIAog
ICAgIGNsZWFudXAoKTsKIH0KQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmRpZE5vdEhhbmRsZSgpCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24p
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgbV9mZXRjaElkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAKICAg
ICBjbGVhbnVwKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IDQ5
MzNjYTRjM2EwLi4yYjI4ODY0YTlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKQEAgLTgyLDE0ICs4MiwxNCBAQCBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9yQ3JlYXRlKFVzZXJDb250ZW50QwogV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250
cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIH0KIAogV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKCkKIHsKICAg
ICBBU1NFUlQodXNlckNvbnRlbnRDb250cm9sbGVycygpLmNvbnRhaW5zKG1faWRlbnRpZmllcikp
OwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiAKICAgICB1c2VyQ29udGVudENv
bnRyb2xsZXJzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVz
c2FnZSh3ZWJQYWdlLT5wYWdlSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJ
UEM6OkRhdGFSZWZlcmVuY2UodmFsdWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPnBhZ2VJRCgpLCB3ZWJGcmFtZS0+aW5m
bygpLCBtX2lkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1f
Y29udHJvbGxlci0+aWRlbnRpZmllcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4
IDQ5NjI5NmY2ZDg4Li4zNDNlODM1YWQwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTE3
OCw3ICsxNzgsNyBAQCBGbG9hdFJlY3QgV2ViQ2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKIAog
ICAgIEZsb2F0UmVjdCBuZXdXaW5kb3dGcmFtZTsKIAotICAgIGlmICghV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6R2V0V2luZG93RnJhbWUoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0
V2luZG93RnJhbWU6OlJlcGx5KG5ld1dpbmRvd0ZyYW1lKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAg
ICBpZiAoIW1fcGFnZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dG
cmFtZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRXaW5kb3dGcmFtZTo6UmVwbHkobmV3
V2luZG93RnJhbWUpKSkKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCiAgICAgcmV0dXJu
IG5ld1dpbmRvd0ZyYW1lOwpAQCAtMjYzLDcgKzI2Myw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
Ojpmb2N1c2VkRnJhbWVDaGFuZ2VkKEZyYW1lKiBmcmFtZSkKIHsKICAgICBXZWJGcmFtZSogd2Vi
RnJhbWUgPSBmcmFtZSA/IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSkgOiBudWxscHRy
OwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGb2N1c2VkRnJhbWVDaGFuZ2VkKHdlYkZy
YW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDApLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1f
cGFnZS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZvY3VzZWRGcmFtZUNoYW5nZWQod2Vi
RnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMCkpOwogfQogCiBQYWdlKiBXZWJDaHJvbWVD
bGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgY29uc3QgTmF2
aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbikKQEAgLTI4OCwxOSArMjg4LDIwIEBAIFBh
Z2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJh
bWVMb2FkUmVxdWVzdCYgcmVxdWVzCiAKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFt
ZTo6ZnJvbUNvcmVGcmFtZShmcmFtZSk7CiAKLSAgICB1aW50NjRfdCBuZXdQYWdlSUQgPSAwOwor
ICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBuZXdQYWdlSUQ7CiAgICAgT3B0aW9uYWw8V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gcGFyYW1ldGVyczsKLSAgICBpZiAoIXdlYlByb2Nlc3Mu
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Q3JlYXRlTmV3UGFnZSh3ZWJGcmFtZS0+aW5mbygpLCB3ZWJGcmFtZS0+cGFnZSgpLT5wYWdl
SUQoKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgd2luZG93RmVhdHVyZXMsIG5hdmlnYXRp
b25BY3Rpb25EYXRhKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6UmVw
bHkobmV3UGFnZUlELCBwYXJhbWV0ZXJzKSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1f
cGFnZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlKHdlYkZy
YW1lLT5pbmZvKCksIHdlYkZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpLCByZXF1ZXN0LnJlc291cmNl
UmVxdWVzdCgpLCB3aW5kb3dGZWF0dXJlcywgbmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpSZXBseShuZXdQYWdlSUQsIHBhcmFtZXRl
cnMpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIW5ld1BhZ2VJRCkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKICAgICBBU1NFUlQocGFyYW1ldGVycyk7CiAgICAgaWYg
KHBhcmFtZXRlcnMtPnNlc3Npb25JRCA9PSBtX3BhZ2Uuc2Vzc2lvbklEKCkpCiAgICAgICAgIHBh
cmFtZXRlcnMtPm9sZFBhZ2VJRCA9IG1fcGFnZS5wYWdlSUQoKTsKIAotICAgIHdlYlByb2Nlc3Mu
Y3JlYXRlV2ViUGFnZShuZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMpKTsKLSAgICByZXR1
cm4gd2ViUHJvY2Vzcy53ZWJQYWdlKG5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7CisgICAgd2ViUHJv
Y2Vzcy5jcmVhdGVXZWJQYWdlKCpuZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMpKTsKKyAg
ICByZXR1cm4gd2ViUHJvY2Vzcy53ZWJQYWdlKCpuZXdQYWdlSUQpLT5jb3JlUGFnZSgpOwogfQog
CiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvdygpCkBAIC0zMzUsNyArMzM2LDcgQEAgYm9vbCBX
ZWJDaHJvbWVDbGllbnQ6OnRvb2xiYXJzVmlzaWJsZSgpCiAgICAgICAgIHJldHVybiB0b29sYmFy
c1Zpc2liaWxpdHkgPT0gQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50OjpVSUVsZW1l
bnRWaXNpYmlsaXR5OjpWaXNpYmxlOwogICAgIAogICAgIGJvb2wgdG9vbGJhcnNBcmVWaXNpYmxl
ID0gdHJ1ZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJz
QXJlVmlzaWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRUb29sYmFyc0FyZVZpc2li
bGU6OlJlcGx5KHRvb2xiYXJzQXJlVmlzaWJsZSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYg
KCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0VG9vbGJhcnNBcmVW
aXNpYmxlKCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFRvb2xiYXJzQXJlVmlzaWJsZTo6
UmVwbHkodG9vbGJhcnNBcmVWaXNpYmxlKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
cmV0dXJuIHRvb2xiYXJzQXJlVmlzaWJsZTsKQEAgLTM1Myw3ICszNTQsNyBAQCBib29sIFdlYkNo
cm9tZUNsaWVudDo6c3RhdHVzYmFyVmlzaWJsZSgpCiAgICAgICAgIHJldHVybiBzdGF0dXNiYXJW
aXNpYmlsaXR5ID09IEFQSTo6SW5qZWN0ZWRCdW5kbGU6OlBhZ2VVSUNsaWVudDo6VUlFbGVtZW50
VmlzaWJpbGl0eTo6VmlzaWJsZTsKIAogICAgIGJvb2wgc3RhdHVzQmFySXNWaXNpYmxlID0gdHJ1
ZTsKLSAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlz
aWJsZSgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRTdGF0dXNCYXJJc1Zpc2libGU6OlJl
cGx5KHN0YXR1c0JhcklzVmlzaWJsZSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3Bh
Z2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6R2V0U3RhdHVzQmFySXNWaXNpYmxl
KCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldFN0YXR1c0JhcklzVmlzaWJsZTo6UmVwbHko
c3RhdHVzQmFySXNWaXNpYmxlKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJu
IHN0YXR1c0JhcklzVmlzaWJsZTsKQEAgLTM4Miw3ICszODMsNyBAQCBib29sIFdlYkNocm9tZUNs
aWVudDo6bWVudWJhclZpc2libGUoKQogICAgICAgICByZXR1cm4gbWVudWJhclZpc2liaWxpdHkg
PT0gQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZVVJQ2xpZW50OjpVSUVsZW1lbnRWaXNpYmlsaXR5
OjpWaXNpYmxlOwogICAgIAogICAgIGJvb2wgbWVudUJhcklzVmlzaWJsZSA9IHRydWU7Ci0gICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpHZXRNZW51QmFySXNWaXNpYmxlKCksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGU6OlJlcGx5KG1lbnVCYXJJ
c1Zpc2libGUpLCBtX3BhZ2UucGFnZUlEKCkpKQorICAgIGlmICghbV9wYWdlLnNlbmRTeW5jKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkdldE1lbnVCYXJJc1Zpc2libGUoKSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6R2V0TWVudUJhcklzVmlzaWJsZTo6UmVwbHkobWVudUJhcklzVmlzaWJsZSkp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBtZW51QmFySXNWaXNpYmxlOwpA
QCAtMTE4Niw3ICsxMTg3LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWRDb250ZW50
TWVkaWFFbGVtZW50RGlkQ2hhbmdlKHVpbnQ2NF90IGVsZW1lbnRJRCkKIGJvb2wgV2ViQ2hyb21l
Q2xpZW50Ojp3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBWZWN0b3I8
dWludDhfdD4mIHdyYXBwZWRLZXkpIGNvbnN0CiB7CiAgICAgYm9vbCBzdWNjZWVkZWQ7Ci0gICAg
aWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpXcmFwQ3J5cHRvS2V5KGtleSksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OldyYXBDcnlwdG9LZXk6OlJlcGx5KHN1Y2NlZWRlZCwgd3JhcHBl
ZEtleSksIG1fcGFnZS5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3BhZ2Uuc2VuZFN5bmMoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6V3JhcENyeXB0b0tleShrZXkpLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpXcmFwQ3J5cHRvS2V5OjpSZXBseShzdWNjZWVkZWQsIHdyYXBwZWRLZXkpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBzdWNjZWVkZWQ7CiB9CkBAIC0xMTk0LDcgKzEx
OTUsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8
dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JgogYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnVu
d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIHdyYXBwZWRLZXksIFZlY3Rvcjx1
aW50OF90PiYga2V5KSBjb25zdAogewogICAgIGJvb2wgc3VjY2VlZGVkOwotICAgIGlmICghV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6VW53cmFwQ3J5cHRvS2V5KHdyYXBwZWRLZXkpLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpVbndyYXBDcnlwdG9LZXk6OlJlcGx5KHN1Y2NlZWRlZCwga2V5
KSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpVbndyYXBDcnlwdG9LZXkod3JhcHBlZEtleSksIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OlVud3JhcENyeXB0b0tleTo6UmVwbHkoc3VjY2VlZGVkLCBrZXkpKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBzdWNjZWVkZWQ7CiB9CkBAIC0xMjA0LDcgKzEy
MDUsNyBAQCBib29sIFdlYkNocm9tZUNsaWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPAogU3RyaW5nIFdlYkNocm9tZUNsaWVudDo6
c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGtleVNpemVJbmRleCwg
Y29uc3QgU3RyaW5nJiBjaGFsbGVuZ2VTdHJpbmcsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewog
ICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVuZ2VT
dHJpbmcsIHVybCksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNpZ25lZFB1YmxpY0tleUFuZENo
YWxsZW5nZVN0cmluZzo6UmVwbHkocmVzdWx0KSwgbV9wYWdlLnBhZ2VJRCgpKSkKKyAgICBpZiAo
IW1fcGFnZS5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaWduZWRQdWJsaWNLZXlB
bmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZUluZGV4LCBjaGFsbGVuZ2VTdHJpbmcsIHVybCksIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZzo6
UmVwbHkocmVzdWx0KSkpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CkBAIC0xMzE3LDEyICsxMzE4LDEyIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50
OjpkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpCiB9CiAKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VB
Y2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21h
aW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkNocm9t
ZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UuaGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZy
YW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RTdG9y
YWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxl
RG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIG1fcGFnZS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9t
YWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBkZDNiMjI1NDM1ZC4uMjkxYzVl
ZGRjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM2OSw4ICszNjksOCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSBmaW5hbDsKIAogI2lm
IEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5h
bDsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKSBmaW5hbDsKKyAgICB2b2lkIGhhc1N0
b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYm
KSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDb2xvckNo
b29zZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNv
bG9yQ2hvb3Nlci5jcHAKaW5kZXggZDUzNWU1YzU1YzYuLmNiNDAyNDE3MDVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29sb3JDaG9vc2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ29s
b3JDaG9vc2VyLmNwcApAQCAtNDIsNyArNDIsNyBAQCBXZWJDb2xvckNob29zZXI6OldlYkNvbG9y
Q2hvb3NlcihXZWJQYWdlKiBwYWdlLCBDb2xvckNob29zZXJDbGllbnQqIGNsaWVudCwgY29ucwog
ICAgICwgbV9wYWdlKHBhZ2UpCiB7CiAgICAgbV9wYWdlLT5zZXRBY3RpdmVDb2xvckNob29zZXIo
dGhpcyk7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93Q29sb3JQaWNrZXIoaW5pdGlh
bENvbG9yLCBjbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCksIGNsaWVudC0+
c3VnZ2VzdGVkQ29sb3JzKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd0NvbG9yUGlja2VyKGluaXRpYWxDb2xvciwgY2xp
ZW50LT5lbGVtZW50UmVjdFJlbGF0aXZlVG9Sb290VmlldygpLCBjbGllbnQtPnN1Z2dlc3RlZENv
bG9ycygpKSk7CiB9CiAKIFdlYkNvbG9yQ2hvb3Nlcjo6fldlYkNvbG9yQ2hvb3NlcigpCkBAIC03
NCw3ICs3NCw3IEBAIHZvaWQgV2ViQ29sb3JDaG9vc2VyOjpyZWF0dGFjaENvbG9yQ2hvb3Nlcihj
b25zdCBDb2xvciYgY29sb3IpCiAgICAgbV9wYWdlLT5zZXRBY3RpdmVDb2xvckNob29zZXIodGhp
cyk7CiAKICAgICBBU1NFUlQobV9jb2xvckNob29zZXJDbGllbnQpOwotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2hvd0NvbG9yUGlja2VyKGNvbG9yLCBtX2NvbG9yQ2hvb3NlckNsaWVudC0+
ZWxlbWVudFJlY3RSZWxhdGl2ZVRvUm9vdFZpZXcoKSwgbV9jb2xvckNob29zZXJDbGllbnQtPnN1
Z2dlc3RlZENvbG9ycygpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dDb2xvclBpY2tlcihjb2xvciwgbV9jb2xvckNob29z
ZXJDbGllbnQtPmVsZW1lbnRSZWN0UmVsYXRpdmVUb1Jvb3RWaWV3KCksIG1fY29sb3JDaG9vc2Vy
Q2xpZW50LT5zdWdnZXN0ZWRDb2xvcnMoKSkpOwogfQogCiB2b2lkIFdlYkNvbG9yQ2hvb3Nlcjo6
c2V0U2VsZWN0ZWRDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCkBAIC04NSw3ICs4NSw3IEBAIHZv
aWQgV2ViQ29sb3JDaG9vc2VyOjpzZXRTZWxlY3RlZENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikK
ICAgICBpZiAobV9wYWdlLT5hY3RpdmVDb2xvckNob29zZXIoKSAhPSB0aGlzKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNldENvbG9yUGlja2VyQ29sb3Io
Y29sb3IpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6U2V0Q29sb3JQaWNrZXJDb2xvcihjb2xvcikpOwogfQogCiB2b2lkIFdlYkNv
bG9yQ2hvb3Nlcjo6ZW5kQ2hvb3NlcigpCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgV2ViQ29sb3JD
aG9vc2VyOjplbmRDaG9vc2VyKCkKICAgICBpZiAoIW1fcGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbmRDb2xvclBpY2tlcigpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5kQ29s
b3JQaWNrZXIoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFMaXN0U3VnZ2VzdGlv
blBpY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RGF0YUxpc3RTdWdnZXN0aW9uUGlja2VyLmNwcAppbmRleCBkMDI1ZGZhY2ZhMi4uZDM2YTE1NGNm
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhTGlzdFN1Z2dlc3Rpb25QaWNrZXIuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6fldlYkRhdGFMaXN0U3Vn
Z2VzdGlvblBpY2tlcigpIHsgfQogCiB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6
aGFuZGxlS2V5ZG93bldpdGhJZGVudGlmaWVyKGNvbnN0IFdURjo6U3RyaW5nJiBrZXkpCiB7Ci0g
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVLZXlkb3duSW5EYXRhTGlzdChrZXkpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6SGFuZGxlS2V5ZG93bkluRGF0YUxpc3Qoa2V5KSk7CiB9CiAKIHZvaWQgV2ViRGF0YUxpc3RT
dWdnZXN0aW9uUGlja2VyOjpkaWRTZWxlY3RPcHRpb24oY29uc3QgV1RGOjpTdHJpbmcmIHNlbGVj
dGVkT3B0aW9uKQpAQCAtNjIsNyArNjIsNyBAQCB2b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBp
Y2tlcjo6ZGlkQ2xvc2VTdWdnZXN0aW9ucygpCiAKIHZvaWQgV2ViRGF0YUxpc3RTdWdnZXN0aW9u
UGlja2VyOjpjbG9zZSgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFbmREYXRhTGlz
dFN1Z2dlc3Rpb25zKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpFbmREYXRhTGlzdFN1Z2dlc3Rpb25zKCkpOwogfQogCiB2b2lk
IFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlwZShE
YXRhTGlzdFN1Z2dlc3Rpb25BY3RpdmF0aW9uVHlwZSB0eXBlKQpAQCAtNzUsNyArNzUsNyBAQCB2
b2lkIFdlYkRhdGFMaXN0U3VnZ2VzdGlvblBpY2tlcjo6ZGlzcGxheVdpdGhBY3RpdmF0aW9uVHlw
ZShEYXRhTGlzdFN1Z2dlc3Rpb25BYwogICAgIG1fcGFnZS0+c2V0QWN0aXZlRGF0YUxpc3RTdWdn
ZXN0aW9uUGlja2VyKHRoaXMpOwogCiAgICAgRGF0YUxpc3RTdWdnZXN0aW9uSW5mb3JtYXRpb24g
aW5mbyA9IHsgdHlwZSwgbV9kYXRhTGlzdFN1Z2dlc3Rpb25zQ2xpZW50LT5zdWdnZXN0aW9ucygp
LCBtX2RhdGFMaXN0U3VnZ2VzdGlvbnNDbGllbnQtPmVsZW1lbnRSZWN0SW5Sb290Vmlld0Nvb3Jk
aW5hdGVzKCkgfTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNob3dEYXRhTGlzdFN1Z2dl
c3Rpb25zKGluZm8pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6U2hvd0RhdGFMaXN0U3VnZ2VzdGlvbnMoaW5mbykpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggZjQyOGZkMjM5
N2UuLjcwNTIwMjViOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMzA5LDcgKzMwOSw3
IEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlclVuZG9TdGVwKFVuZG9TdGVwJiBzdGVw
KQogICAgIGF1dG8gc3RlcElEID0gd2ViU3RlcC0+c3RlcElEKCk7CiAKICAgICBtX3BhZ2UtPmFk
ZFdlYlVuZG9TdGVwKHN0ZXBJRCwgV1RGTW92ZSh3ZWJTdGVwKSk7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHN0ZXBJ
RCwgc3RlcC5sYWJlbCgpKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNw
YXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyhzdGVw
SUQsIHN0ZXAubGFiZWwoKSksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lz
dGVyUmVkb1N0ZXAoVW5kb1N0ZXAmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5k
ZXggNTI5YzA0NjcwMzAuLjNkY2Q3ZTJlYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6fldlYkZyYW1l
TG9hZGVyQ2xpZW50KCkKIHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lICYmIG1fZnJh
bWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCk7CkBA
IC01NDEsNyArNTQxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRG
YWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGUKICAgICBpZiAoIXdlYlBh
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQ6IChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2Ut
PnBhZ2VJRCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmss
ICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExv
YWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMs
IHdlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CiAKICAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCkBAIC01NzcsNyArNTc3LDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvcikKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZEZhaWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IikiLCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBS
RUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRGYWlsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIp
IiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgp
KTsKIAogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKQEAgLTkwMSw3ICs5MDEs
OSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIGlmIChyZXF1ZXN0ZXIuZnJhbWVJRCgp
ICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKHJlcXVlc3Rlci5mcmFtZUlEKCkp
KQogICAgICAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IHJlcXVlc3Rlci5m
cmFtZUlEKCk7CiAKLSAgICB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCA9IHJlcXVlc3Rlci5w
YWdlSUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5wYWdl
SUQoKSkgPyByZXF1ZXN0ZXIucGFnZUlEKCkgOiAwOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBvcmlnaW5hdGluZ1BhZ2VJRDsKKyAgICBpZiAocmVxdWVzdGVyLnBhZ2VJRCgpICYmIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJRCgpKSkKKyAgICAg
ICAgb3JpZ2luYXRpbmdQYWdlSUQgPSByZXF1ZXN0ZXIucGFnZUlEKCk7CiAKICAgICBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YTsKICAgICBuYXZpZ2F0aW9uQWN0aW9u
RGF0YS5uYXZpZ2F0aW9uVHlwZSA9IGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZjczYWI4Y2E3M2YuLmM4ZmIyYWYyMTI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGFwcGx5VG9Eb2N1bWVudExvYWRlcihXZWJzaXRlUG9saWNpZXNEYXRhJiYpOwogCi0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCmluZGV4IGQxNmZlODU3Nzg0
Li4yMDhiYjg4YTNiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lk
IFdlYlBvcHVwTWVudTo6c2hvdyhjb25zdCBJbnRSZWN0JiByZWN0LCBGcmFtZVZpZXcqIHZpZXcs
IGludCBpbmRleCkKICAgICBQbGF0Zm9ybVBvcHVwTWVudURhdGEgcGxhdGZvcm1EYXRhOwogICAg
IHNldFVwUGxhdGZvcm1EYXRhKHBhZ2VDb29yZGluYXRlcywgcGxhdGZvcm1EYXRhKTsKIAotICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2hvd1BvcHVwTWVudShwYWdlQ29vcmRpbmF0ZXMsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihtX3BvcHVwQ2xpZW50LT5tZW51U3R5bGUoKS50ZXh0RGlyZWN0
aW9uKCkpLCBpdGVtcywgaW5kZXgsIHBsYXRmb3JtRGF0YSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTaG93UG9wdXBNZW51KHBh
Z2VDb29yZGluYXRlcywgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fcG9wdXBDbGllbnQtPm1lbnVT
dHlsZSgpLnRleHREaXJlY3Rpb24oKSksIGl0ZW1zLCBpbmRleCwgcGxhdGZvcm1EYXRhKSk7CiB9
CiAKIHZvaWQgV2ViUG9wdXBNZW51OjpoaWRlKCkKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFdl
YlBvcHVwTWVudTo6aGlkZSgpCiAgICAgaWYgKCFtX3BhZ2UgfHwgIW1fcG9wdXBDbGllbnQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGlkZVBvcHVwTWVu
dSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6SGlkZVBvcHVwTWVudSgpKTsKICAgICBtX3BhZ2UtPnNldEFjdGl2ZVBvcHVwTWVu
dShudWxscHRyKTsKICAgICBtX3BvcHVwQ2xpZW50LT5wb3B1cERpZEhpZGUoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJTZWFyY2hQ
b3B1cE1lbnUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlNlYXJjaFBvcHVwTWVudS5jcHAKaW5kZXggMzNkNDc1NmVkYTIuLmMwZThjMTkxNDRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViU2VhcmNo
UG9wdXBNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViU2VhcmNoUG9wdXBNZW51LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFdlYlNlYXJj
aFBvcHVwTWVudTo6c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwg
Y29uc3QgVmVjdAogICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpTYXZlUmVjZW50U2VhcmNoZXMobmFtZSwgc2VhcmNoSXRlbXMpLCBw
YWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
YXZlUmVjZW50U2VhcmNoZXMobmFtZSwgc2VhcmNoSXRlbXMpKTsKIH0KIAogdm9pZCBXZWJTZWFy
Y2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IFZlY3RvcjxSZWNlbnRTZWFyY2g+JiByZXN1bHRJdGVtcykKQEAgLTY4LDcgKzY4LDcgQEAgdm9p
ZCBXZWJTZWFyY2hQb3B1cE1lbnU6OmxvYWRSZWNlbnRTZWFyY2hlcyhjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIFZlY3RvcjxSZWMKICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRSZWNlbnRTZWFyY2hlcyhuYW1lKSwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9hZFJlY2VudFNlYXJjaGVzOjpSZXBseShyZXN1bHRJ
dGVtcyksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpMb2FkUmVjZW50U2VhcmNoZXMobmFtZSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkxvYWRSZWNlbnRTZWFyY2hlczo6UmVwbHkocmVzdWx0SXRlbXMpKTsKIH0KIAogYm9vbCBX
ZWJTZWFyY2hQb3B1cE1lbnU6OmVuYWJsZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuaAppbmRleCBmOTk4NmU0MWNhMi4uY2Y3Y2JmNGY5ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAK
ICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7Ci0g
ICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbV9wYWdlSUQ7CiAgICAgUXVpY2tMb29rRG9jdW1lbnREYXRhIG1fZGF0YTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApp
bmRleCAyNzZiODBiZjI4Zi4uOGQ2OWI4NTRiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgRHJhd2lu
Z0FyZWE6OkRyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZSB0eXBlLCBEcmF3aW5nQXJlYUlkZW50
aWZpZXIgaWRlbnRpZmllciwKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwg
bV93ZWJQYWdlKHdlYlBhZ2UpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiB9CiAKIERyYXdpbmdBcmVhOjp+
RHJhd2luZ0FyZWEoKQpAQCAtOTQsNyArOTQsMTcgQEAgdm9pZCBEcmF3aW5nQXJlYTo6cmVtb3Zl
TWVzc2FnZVJlY2VpdmVySWZOZWVkZWQoKQogICAgIGlmIChtX2hhc1JlbW92ZWRNZXNzYWdlUmVj
ZWl2ZXIpCiAgICAgICAgIHJldHVybjsKICAgICBtX2hhc1JlbW92ZWRNZXNzYWdlUmVjZWl2ZXIg
PSB0cnVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyKTsKK30KKworSVBDOjpDb25uZWN0aW9uKiBEcmF3aW5nQXJlYTo6bWVzc2Fn
ZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBEcmF3aW5n
QXJlYTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAoreworICAgIHJldHVybiBt
X2lkZW50aWZpZXIudG9VSW50NjQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuaAppbmRleCA4MDY5
YTE1OGVlMi4uZWM5NTM3ZDcwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkRyYXdpbmdB
cmVhSW5mby5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUNvbnRleHQuaCIKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvRmxvYXRSZWN0Lmg+CkBAIC02NSw3ICs2Niw3IEBAIGNsYXNzIExheWVyVHJlZUhvc3Q7
CiBzdHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczsKIHN0cnVjdCBXZWJQcmVmZXJlbmNl
c1N0b3JlOwogCi1jbGFzcyBEcmF3aW5nQXJlYSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZl
ciB7CitjbGFzcyBEcmF3aW5nQXJlYSA6IHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJv
dGVjdGVkIElQQzo6TWVzc2FnZVNlbmRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRHJhd2luZ0FyZWEpOwogCkBAIC0xNTMsMTEgKzE1
NCw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5
cGUsIERyYXdpbmdBcmVhSWRlbnRpZmllciwgV2ViUGFnZSYpOwogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UpCi0gICAgewotICAgICAgICByZXR1
cm4gbV93ZWJQYWdlLnNlbmQobWVzc2FnZSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksIHsgfSk7
Ci0gICAgfQotCiAgICAgRHJhd2luZ0FyZWFUeXBlIG1fdHlwZTsKICAgICBEcmF3aW5nQXJlYUlk
ZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKQEAgLTE3MCw2
ICsxNjYsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7
CisgICAgCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0aW9uKiBt
ZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90IG1lc3Nh
Z2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzLgogICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQgYmUgcHVyZSB2aXJ0dWFsLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5j
cHAKaW5kZXggNjkxODMwYjU5M2MuLjQ5YTJjM2JiMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTg3LDcgKzg3
LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29u
bmVjdGlvbiogY29ubmVjdGlvbikKICAgICBjb25uZWN0aW9uLT5hZGRXb3JrUXVldWVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3F1ZXVlLmdldCgpLCB0aGlzKTsKIH0KIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVs
RXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBi
b29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wg
Y2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKK3ZvaWQgRXZl
bnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2Vi
V2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNh
blJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJi
ZXJCYW5kQXRCb3R0b20pCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHBsYXRmb3JtV2hlZWxFdmVudCA9IHBs
YXRmb3JtKHdoZWVsRXZlbnQpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hl
ZWxFdmVuCiB9CiAKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotdm9pZCBFdmVudERp
c3BhdGNoZXI6Omdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2Vi
R2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2VzdHVy
ZUV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZl
bnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGFnZUlELCBnZXN0dXJlRXZlbnRdKCkgbXV0YWJs
ZSB7CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoR2VzdHVyZUV2ZW50KHBhZ2VJRCwg
Z2VzdHVyZUV2ZW50KTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
Z2V0UXVldWVkVG91Y2hFdmVudHNGb3JQYWdlKGNvbnN0IFdlYlBhZ2UmIHdlYlBhZ2UsIFRvdWNo
RQogICAgIGRlc3RpbmF0aW9uUXVldWUgPSBtX3RvdWNoRXZlbnRzLnRha2Uod2ViUGFnZS5wYWdl
SUQoKSk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50KHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQordm9pZCBFdmVu
dERpc3BhdGNoZXI6OnRvdWNoRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJL
aXQ6OldlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCiB7CiAgICAgYm9vbCB1cGRhdGVMaXN0V2Fz
RW1wdHk7CiAgICAgewpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpk
aXNwYXRjaFRvdWNoRXZlbnRzKCkKIH0KICNlbmRpZgogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYg
d2hlZWxFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViV2hlZWxFdmVudCYgdwogfQogCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykK
LXZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQordm9pZCBFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoR2VzdHVyZUV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3Qg
V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVuCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi12b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6c2VuZERpZFJlY2VpdmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiBl
dmVudCwgYm9vbCBkaWRIYW5kbGVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpzZW5kRGlk
UmVjZWl2ZUV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmIGV2ZW50
LCBib29sIGRpZEhhbmRsZUV2ZW50KQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlk
UmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90PihldmVudC50eXBlKCkpLCBkaWRIYW5k
bGVFdmVudCksIHBhZ2VJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDFkNDc3ODc3ZWFhLi5lMWJiYmQ0Nzk2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKICNpbmNs
dWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1doZWVsRXZlbnREZWx0YUZpbHRlci5oPgogI2luY2x1ZGUgPG1lbW9y
eT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNzcsMzggKzc4LDM4IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKLSAgICB2b2lkIHdoZWVs
RXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBjYW5SdWJi
ZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJh
bmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOworICAgIHZvaWQgd2hlZWxFdmVu
dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViV2hlZWxFdmVudCYsIGJvb2wgY2Fu
UnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJi
ZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsKICNpZiBFTkFCTEUoSU9T
X1RPVUNIX0VWRU5UUykKLSAgICB2b2lkIHRvdWNoRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJUb3VjaEV2ZW50Jik7CisgICAgdm9pZCB0b3VjaEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dF
U1RVUkVfRVZFTlRTKQotICAgIHZvaWQgZ2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgV2ViR2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBnZXN0dXJlRXZlbnQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAKIAogICAgIC8v
IFRoaXMgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB2b2lkIGRpc3BhdGNoV2hl
ZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKKyAgICB2b2lk
IGRpc3BhdGNoV2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViV2hl
ZWxFdmVudCYpOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgZGlzcGF0
Y2hUb3VjaEV2ZW50cygpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykK
LSAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
R2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBkaXNwYXRjaEdlc3R1cmVFdmVudChXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpCi0gICAgdm9pZCBzZW5kRGlkUmVjZWl2ZUV2ZW50KHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmLCBib29sIGRpZEhhbmRsZUV2ZW50KTsKKyAgICB2
b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdl
YkV2ZW50JiwgYm9vbCBkaWRIYW5kbGVFdmVudCk7CiAjZW5kaWYKIAogICAgIFJlZjxXb3JrUXVl
dWU+IG1fcXVldWU7CiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIExvY2sgbV9z
Y3JvbGxpbmdUcmVlc011dGV4OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJDb3Jl
OjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGlu
Z1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOwogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OldoZWVsRXZlbnREZWx0YUZpbHRlcj4gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFGaWx0
ZXI7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgTG9jayBtX3RvdWNoRXZlbnRz
TG9jazsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBUb3VjaEV2ZW50UXVldWU+IG1fdG91Y2hFdmVu
dHM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVG91Y2hFdmVudFF1ZXVl
PiBtX3RvdWNoRXZlbnRzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KaW5k
ZXggNWUxNTQzYzk4Y2MuLmFmOTA0YjQ1MTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCkBA
IC0yMSwxMSArMjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gRXZlbnREaXNw
YXRjaGVyIHsKLSAgICBXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVl
bEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFu
ZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJv
dHRvbSkKKyAgICBXaGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2Vi
S2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wg
Y2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1
YmJlckJhbmRBdEJvdHRvbSkKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICBUb3Vj
aEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorICAg
IFRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlRv
dWNoRXZlbnQgZXZlbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQot
ICAgIEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50
IGV2ZW50KQorICAgIEdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggYjc1MmMx
YzU0ZDQuLmIyOTFkZjBiN2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC03NSw3ICs3NSw3IEBAIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdl
LCBjb25zdCBXCiAgICAgLy8gRklYTUU6IFdoaWxlIHVzaW5nIHRoZSBoaWdoIGVuZCBvZiB0aGUg
cmFuZ2Ugb2YgRGlzcGxheUlEcyBtYWtlcyBhIGNvbGxpc2lvbiB3aXRoIHJlYWwsIG5vbi1SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYQogICAgIC8vIERpc3BsYXlJRHMgbGVzcyBsaWtlbHksIGl0
IGlzIG5vdCBlbnRpcmVseSBzYWZlIHRvIGhhdmUgYSBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YSBhbmQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEKICAgICAvLyBjb2VleGlzdCBpbiB0
aGUgc2FtZSBwcm9jZXNzLgotICAgIHdlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6
bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkpOworICAg
IHdlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoKQpAQCAtNDM0
LDcgKzQzNCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJz
KCkKICAgICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0b3JlRmx1c2hlciA9
IEJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLCBXVEZNb3ZlKGNvbW1pdEVuY29kZXIpLCBXVEZNb3ZlKGNv
bnRleHRzVG9GbHVzaCkpOwogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXIgPSBiYWNr
aW5nU3RvcmVGbHVzaGVyOwogCi0gICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJ
RCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgpOwogICAgIGRpc3BhdGNo
X2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNr
aW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXIt
PmZsdXNoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1JlbW90ZVdlYkluc3BlY3RvclVJLmNwcAppbmRleCAwNTQ0MDQ1NmY0MS4uYzk0MGUwY2Qw
NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZVdl
Ykluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9S
ZW1vdGVXZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBSZW1vdGVXZWJJ
bnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5
OjpTZW5kTWVzc2FnZVRvQmFja2VuZChtZXNzYWdlKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNlbmRNZXNzYWdl
VG9CYWNrZW5kKG1lc3NhZ2UpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6d2lu
ZG93T2JqZWN0Q2xlYXJlZCgpCkBAIC0xMDIsMTIgKzEwMiwxMiBAQCB2b2lkIFJlbW90ZVdlYklu
c3BlY3RvclVJOjpmcm9udGVuZExvYWRlZCgpCiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6
OmNoYW5nZVNoZWV0UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7Ci0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OlNldFNoZWV0UmVjdChyZWN0KSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OlNldFNoZWV0UmVjdChyZWN0KSk7CiB9CiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnN0
YXJ0V2luZG93RHJhZygpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OlN0YXJ0V2luZG93RHJhZygpLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U3RhcnRXaW5kb3dEcmFnKCkpOwogfQog
CiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQg
eSkKQEAgLTEyNCwzNCArMTI0LDM0IEBAIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24gUmVtb3RlV2ViSW5zcGVjdG9yVUk6OnVzZXJJbnRlcmZhY2VMYXlvdXRECiAKIHZvaWQg
UmVtb3RlV2ViSW5zcGVjdG9yVUk6OmJyaW5nVG9Gcm9udCgpCiB7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UmVt
b3RlV2ViSW5zcGVjdG9yUHJveHk6OkJyaW5nVG9Gcm9udCgpLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdU
b0Zyb250KCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdygp
CiB7CiAgICAgbV9wYWdlLmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRJbnNw
ZWN0b3JGcm9udGVuZENsaWVudChudWxscHRyKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYklu
c3BlY3RvclByb3h5OjpGcm9udGVuZERpZENsb3NlKCksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpGcm9udGVuZERp
ZENsb3NlKCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclVJOjpyZW9wZW4oKQogewot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpSZW9wZW4oKSwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHk6OlJlb3BlbigpKTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6b3BlbkluTmV3
VGFiKGNvbnN0IFN0cmluZyYgdXJsKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3Rv
clByb3h5OjpPcGVuSW5OZXdUYWIodXJsKSwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Uu
c2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6Ok9wZW5Jbk5ld1RhYih1cmwp
KTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6c2F2ZShjb25zdCBTdHJpbmcmIGZp
bGVuYW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBm
b3JjZVNhdmVBcykKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2F2
ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMpLCBtX3BhZ2Uu
cGFnZUlEKCkpOworICAgIG1fcGFnZS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6U2F2ZShmaWxlbmFtZSwgY29udGVudCwgYmFzZTY0RW5jb2RlZCwgZm9yY2VTYXZlQXMp
KTsKIH0KIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JVSTo6YXBwZW5kKGNvbnN0IFN0cmluZyYg
ZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgY29udGVudCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eTo6QXBwZW5kKGZpbGVuYW1lLCBjb250ZW50KSwgbV9wYWdlLnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2Uuc2VuZChNZXNzYWdlczo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OkFwcGVuZChmaWxlbmFtZSwgY29udGVudCkpOwogfQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clVJOjppbnNwZWN0ZWRVUkxDaGFuZ2VkKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nKQpAQCAtMTYx
LDcgKzE2MSw3IEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6Omluc3BlY3RlZFVSTENoYW5n
ZWQoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiAKIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yVUk6
OnNob3dDZXJ0aWZpY2F0ZShjb25zdCBDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykK
IHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6U2hvd0NlcnRpZmljYXRl
KGNlcnRpZmljYXRlSW5mbyksIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgbV9wYWdlLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpTaG93Q2VydGlmaWNhdGUoY2VydGlmaWNh
dGVJbmZvKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCmlu
ZGV4IGMzYTk1MjU2NTMyLi5jOTdlNmZjNzI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcApAQCAtNTQs
NyArNTQsNyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjppbml0aWFsaXplQ29ubmVjdGlv
bihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAgICAgY29ubmVjdGlvbi0+YWRkV29ya1F1
ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0aGlzKTsKIH0KIAotdm9pZCBWaWV3VXBk
YXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgdmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlSW5mbykKK3ZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8mIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8pCiB7CiAgICAgYm9v
bCB1cGRhdGVMaXN0V2FzRW1wdHk7CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgKaW5kZXggZTQ3ZGM0ZTFk
NDEuLjZkNTRlOTU2OTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0
ZToKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlci4KICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IG92ZXJyaWRlOwogCi0gICAgdm9pZCB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUodWludDY0X3Qg
cGFnZUlELCBjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJik7CisgICAgdm9pZCB2
aXNpYmxlQ29udGVudFJlY3RVcGRhdGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBj
b25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJik7CiAKICAgICB2b2lkIGRpc3BhdGNo
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKCk7CiAKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgTG9jayBtX2RhdGFNdXRleDsKLSAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBVcGRhdGVEYXRhPiBtX2xhdGVzdFVwZGF0ZTsKKyAgICBIYXNo
TWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVcGRhdGVEYXRhPiBtX2xhdGVzdFVwZGF0ZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5tZXNzYWdl
cy5pbgppbmRleCAxN2UyYzhkZDE4Ni4uZDkyZWViODg5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRj
aGVyLm1lc3NhZ2VzLmluCkBAIC0yMSw1ICsyMSw1IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3Nh
Z2VzIC0+IFZpZXdVcGRhdGVEaXNwYXRjaGVyIHsKLSAgICBWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGUodWludDY0X3QgcGFnZUlELCBXZWJLaXQ6OlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8g
dmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbykKKyAgICBWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OlZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8gdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbykKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJk
TGlzdFByb3h5LmNwcAppbmRleCAyMTFkNjAxZWYwYi4uZmNlZTBkZmRmZDIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIElEVG9IaXN0b3J5SXRlbU1h
cCYgaWRUb0hpc3RvcnlJdGVtTWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi12b2lkIFdlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCB1aW50NjRf
dCBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0pCit2
b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBC
YWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVt
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVF
eGlzdGluZ0l0ZW0pCiB7CiAgICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWlyIHNob3VsZCBub3Qg
YWxyZWFkeSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQob3ZlcndyaXRlRXhp
c3RpbmdJdGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3RpbmdJdGVt
OjpZZXMgfHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwpAQCAtMTE2
LDcgKzExNiw3IEBAIFJlZlB0cjxIaXN0b3J5SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6
Oml0ZW1BdEluZGV4KGludCBpdGVtSW5kZXgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgT3B0aW9uYWw8QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllcj4gaXRlbUlEOwotICAgIGlmICgh
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleChpdGVtSW5k
ZXgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4OjpSZXBs
eShpdGVtSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKKyAgICBpZiAoIW1fcGFnZS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRJdGVtQXRJbmRleChpdGVtSW5kZXgp
LCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEl0ZW1BdEluZGV4OjpSZXBseShp
dGVtSUQpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWl0ZW1JRCkKQEAg
LTEzMSw3ICsxMzEsNyBAQCB1bnNpZ25lZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YmFja0xp
c3RDb3VudCgpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdW5zaWduZWQgYmFja0xp
c3RDb3VudCA9IDA7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9y
d2FyZEJhY2tMaXN0Q291bnQoKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRC
YWNrTGlzdENvdW50OjpSZXBseShiYWNrTGlzdENvdW50KSwgbV9wYWdlLT5wYWdlSUQoKSkpCisg
ICAgaWYgKCFtX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3
YXJkQmFja0xpc3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEJh
Y2tMaXN0Q291bnQ6OlJlcGx5KGJhY2tMaXN0Q291bnQpKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICByZXR1cm4gYmFja0xpc3RDb3VudDsKQEAgLTE0Myw3ICsxNDMsNyBAQCB1bnNpZ25lZCBX
ZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6Zm9yd2FyZExpc3RDb3VudCgpIGNvbnN0CiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgdW5zaWduZWQgZm9yd2FyZExpc3RDb3VudCA9IDA7Ci0gICAgaWYg
KCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0Q291bnQo
KSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6QmFja0ZvcndhcmRGb3J3YXJkTGlzdENvdW50OjpS
ZXBseShmb3J3YXJkTGlzdENvdW50KSwgbV9wYWdlLT5wYWdlSUQoKSkpCisgICAgaWYgKCFtX3Bh
Z2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkJhY2tGb3J3YXJkRm9yd2FyZExp
c3RDb3VudCgpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpCYWNrRm9yd2FyZEZvcndhcmRMaXN0
Q291bnQ6OlJlcGx5KGZvcndhcmRMaXN0Q291bnQpKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAg
ICByZXR1cm4gZm9yd2FyZExpc3RDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCmluZGV4IGYzYjFj
OGFmNTQ4Li5kMWJhYWRiOTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBAIC0yNiw2ICsyNiw3
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRDbGllbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6
CiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9OwotICAgIHZvaWQgYWRkSXRlbUZyb21V
SVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxX
ZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgdWludDY0X3QgcGFnZUlELCBPdmVyd3JpdGVFeGlzdGlu
Z0l0ZW0pOworICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7CiAKICAgICB2b2lk
IGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b29raWVKYXIuY3BwCmluZGV4IDE2MGVkZWZkNTlkLi4yZDlkMDg1ZTNiYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIFdlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKCkKIFN0cmluZyBXZWJDb29raWVK
YXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkg
Y29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtNjYsNyArNjYsNyBAQCBTdHJp
bmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3Jl
OjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7
CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFt
ZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtODMsNyArODMsNyBAQCBi
b29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQm
IGRvY3VtZW50KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFpcjxTdHJp
bmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJl
Q29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIGNvbnN0CiB7CiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwpAQCAtOTUsNyArOTUsNyBAQCBzdGQ6OnBhaXI8U3RyaW5n
LCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVx
dWVzdEhlYQogYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7
Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsK
ICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAg
ICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggOTdk
ZDc2ZjY2NGMuLjU1OWJkMGU1MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb29raWVKYXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIGNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykgZmluYWw7CiAgICAgYm9vbCBjb29raWVzRW5hYmxlZChj
b25zdCBXZWJDb3JlOjpEb2N1bWVudCYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6cGFpcjxTdHJp
bmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcykgY29uc3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6
U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3Jl
OjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwogcHJpdmF0ZToKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA4OTBj
NWU1NmFjMC4uNGFmNDk1YTUxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJGcmFtZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgdWludDY0X3QgZ2Vu
ZXJhdGVMaXN0ZW5lcklEKCkKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3Jl
TWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUpCiB7CiAg
ICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2FkZXJDbGll
bnQ+KHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oJmNvcmVGcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkpKSk7Ci0gICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRDcmVhdGVNYWluRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5GcmFtZShm
cmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUgPSBjb3JlRnJhbWU7
CiAgICAgZnJhbWUtPm1fY29yZUZyYW1lLT50cmVlKCkuc2V0TmFtZShTdHJpbmcoKSk7CkBAIC0x
MjEsNyArMTIxLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVNYWlu
RnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMKIFJlZjxXZWJGcmFtZT4gV2Vi
RnJhbWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsKICAgICBhdXRvIGZy
YW1lID0gY3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+KCkpOwot
ICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUo
ZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsK
IAogICAgIGF1dG8gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFnZSgpLCBv
d25lckVsZW1lbnQsIGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKICAgICBmcmFt
ZS0+bV9jb3JlRnJhbWUgPSBjb3JlRnJhbWUucHRyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAppbmRleCBkNzdlNjM3MGMxMS4uYmRi
OTJmNzRkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
Ykluc3BlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yLmNwcApAQCAtNzIsNyArNzIsNyBAQCBXZWJJbnNwZWN0b3I6On5XZWJJbnNwZWN0
b3IoKQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQoYm9v
bCB1bmRlclRlc3QpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6Ok9wZW5Mb2Nh
bEluc3BlY3RvckZyb250ZW5kKGNhbkF0dGFjaFdpbmRvdygpLCB1bmRlclRlc3QpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5
OjpPcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChjYW5BdHRhY2hXaW5kb3coKSwgdW5kZXJUZXN0
KSk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yOjpzZXRGcm9udGVuZENvbm5lY3Rpb24oSVBDOjpB
dHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcikKQEAgLTEwOCw3ICsxMDgsNyBA
QCB2b2lkIFdlYkluc3BlY3Rvcjo6c2V0RnJvbnRlbmRDb25uZWN0aW9uKElQQzo6QXR0YWNobWVu
dCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6Y2xvc2VGcm9u
dGVuZENvbm5lY3Rpb24oKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclByb3h5OjpEaWRD
bG9zZSgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
Ykluc3BlY3RvclByb3h5OjpEaWRDbG9zZSgpKTsKIAogICAgIC8vIElmIHdlIHRyaWVkIHRvIGNs
b3NlIHRoZSBmcm9udGVuZCBiZWZvcmUgaXQgd2FzIGNyZWF0ZWQsIHRoZW4gbm8gY29ubmVjdGlv
biBleGlzdHMgeWV0LgogICAgIGlmIChtX2Zyb250ZW5kQ29ubmVjdGlvbikgewpAQCAtMTI0LDcg
KzEyNCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yOjpjbG9zZUZyb250ZW5kQ29ubmVjdGlvbigpCiAK
IHZvaWQgV2ViSW5zcGVjdG9yOjpicmluZ1RvRnJvbnQoKQogewotICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYklu
c3BlY3RvclByb3h5OjpCcmluZ1RvRnJvbnQoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QnJpbmdUb0Zyb250KCkpOwog
fQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6d2hlbkZyb250ZW5kQ29ubmVjdGlvbkVzdGFibGlzaGVk
KEZ1bmN0aW9uPHZvaWQoKT4mJiBjYWxsYmFjaykKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIFdl
Ykluc3BlY3Rvcjo6c3RvcEVsZW1lbnRTZWxlY3Rpb24oKQogCiB2b2lkIFdlYkluc3BlY3Rvcjo6
ZWxlbWVudFNlbGVjdGlvbkNoYW5nZWQoYm9vbCBhY3RpdmUpCiB7Ci0gICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
SW5zcGVjdG9yUHJveHk6OkVsZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKGFjdGl2ZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6
OkVsZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKGFjdGl2ZSkpOwogfQogCiBib29sIFdlYkluc3BlY3Rv
cjo6Y2FuQXR0YWNoV2luZG93KCkKQEAgLTMxNSw3ICszMTUsNyBAQCB2b2lkIFdlYkluc3BlY3Rv
cjo6dXBkYXRlRG9ja2luZ0F2YWlsYWJpbGl0eSgpCiAKICAgICBtX3ByZXZpb3VzQ2FuQXR0YWNo
ID0gY2FuQXR0YWNoV2luZG93OwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViSW5zcGVjdG9yUHJveHk6OkF0
dGFjaEF2YWlsYWJpbGl0eUNoYW5nZWQoY2FuQXR0YWNoV2luZG93KSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJJbnNwZWN0b3JQcm94eTo6QXR0YWNo
QXZhaWxhYmlsaXR5Q2hhbmdlZChjYW5BdHRhY2hXaW5kb3cpKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JVSS5jcHAKaW5kZXggYzk2NTJlOTRhZjguLmJjZmY4ZTJhODk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIFdlYkluc3BlY3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlJiBw
YWdlKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rp
b24odWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNp
Z25lZCBpbnNwZWN0aW9uTGV2ZWwpCit2b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25u
ZWN0aW9uKFBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVy
VGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogewogICAgIG1faW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBtX2Zyb250ZW5kQVBJRGlz
cGF0Y2hlci5yZXNldCgpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6
OmNsb3NlV2luZG93KCkKICAgICBpZiAobV9mcm9udGVuZEhvc3QpCiAgICAgICAgIG1fZnJvbnRl
bmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50KCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlm
aWVyID0gMDsKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAgIG1fdW5k
ZXJUZXN0ID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3JVSS5oCmluZGV4IDgzODFiZjFjZWRlLi45NDI0YmZlMWYyNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNw
YXRjaGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNw
ZWN0b3JDb250cm9sbGVyOwpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRS
ZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVu
Y2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKSBvdmVycmlkZSB7IGNsb3NlV2luZG93KCk7IH0KIAog
ICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JVSSBtZXNzYWdlcwotICAgIHZvaWQgZXN0YWJs
aXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRl
clRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCk7CisgICAgdm9pZCBlc3RhYmxpc2hDb25u
ZWN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBi
b29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKTsKICAgICB2b2lkIHVwZGF0
ZUNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKQEAgLTEzMyw3ICsxMzQs
NyBAQCBwcml2YXRlOgogICAgIC8vIGNvcmVQYWdlKCksIHNpbmNlIHdlIG1heSBuZWVkIGl0IGFm
dGVyIHRoZSBmcm9udGVuZCdzIHBhZ2UgaGFzIHN0YXJ0ZWQgZGVzdHJ1Y3Rpb24uCiAgICAgV2Vi
Q29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciogbV9mcm9udGVuZENvbnRyb2xsZXIgeyBudWxscHRy
IH07CiAKLSAgICB1aW50NjRfdCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyIHsgMCB9OworICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7CiAgICAg
Ym9vbCBtX3VuZGVyVGVzdCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvY2tpbmdVbmF2YWlsYWJs
ZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzVmlzaWJsZSB7IGZhbHNlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1l
c3NhZ2VzLmluCmluZGV4IGRlYTBmZTU4NGQ0Li40MzE5MGFhODM0ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVz
c2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4g
V2ViSW5zcGVjdG9yVUkgewotICAgIEVzdGFibGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVj
dGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2
ZWwpCisgICAgRXN0YWJsaXNoQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBpbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25M
ZXZlbCkKICAgICBVcGRhdGVDb25uZWN0aW9uKCkKIAogICAgIEF0dGFjaGVkQm90dG9tKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2JhYWZk
MTg1NGMuLjIwODdmMjE0YWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIHByaXZhdGU6CiAKIERFRklORV9ERUJV
R19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciwgd2ViUGFnZUNvdW50ZXIs
ICgiV2ViUGFnZSIpKTsKIAotUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBw
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVmPFdlYlBh
Z2U+IFdlYlBhZ2U6OmNyZWF0ZShJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgUmVmPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJl
ZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiAKQEAgLTM3MCw3
ICszNzAsNyBAQCBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogICAgIHJldHVybiBwYWdlOwogfQog
Ci1XZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCitXZWJQYWdlOjpXZWJQYWdlKElkZW50aWZpZXIgcGFnZUlELCBX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IG1fcGFnZUlEKHBh
Z2VJRCkKICAgICAsIG1fdmlld1NpemUocGFyYW1ldGVycy52aWV3U2l6ZSkKICAgICAsIG1fYWx3
YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgeyBwYXJhbWV0ZXJzLmFsd2F5c1Nob3dzSG9yaXpv
bnRhbFNjcm9sbGVyIH0KQEAgLTgzMSw3ICs4MzEsNyBAQCBJUEM6OkNvbm5lY3Rpb24qIFdlYlBh
Z2U6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGFnZTo6
bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBwYWdlSUQo
KTsKKyAgICByZXR1cm4gcGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQpAQCAtMTY0OCw3ICsxNjQ4LDcgQEAgdm9pZCBXZWJQYWdlOjpnb1RvQmFja0Zv
cndhcmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgQmFja0ZvcndhcmRJdGVtSWQK
ICAgICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhMb2FkaW5nLCAiSW4g
V2ViUHJvY2VzcyBwaWQgJWksIFdlYlBhZ2UgJSIgUFJJdTY0ICIgaXMgbmF2aWdhdGluZyB0byBi
YWNrL2ZvcndhcmQgVVJMICVzIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX3BhZ2VJRCwgaXRl
bS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJJbiBX
ZWJQcm9jZXNzIHBpZCAlaSwgV2ViUGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZpZ2F0aW5nIHRvIGJh
Y2svZm9yd2FyZCBVUkwgJXMiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIG1fcGFnZUlELnRvVUlu
dDY0KCksIGl0ZW0tPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgQVNTRVJU
KCFtX3BlbmRpbmdOYXZpZ2F0aW9uSUQpOwogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IG5h
dmlnYXRpb25JRDsKQEAgLTIwNzYsNyArMjA3Niw3IEBAIGJvb2wgV2ViUGFnZTo6c2V0Rml4ZWRM
YXlvdXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgaWYgKCF2aWV3IHx8IHZpZXctPmZp
eGVkTGF5b3V0U2l6ZSgpID09IHNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExP
R19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFn
ZUlEIDw8ICIgc2V0Rml4ZWRMYXlvdXRTaXplICIgPDwgc2l6ZSk7CisgICAgTE9HX1dJVEhfU1RS
RUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQudG9VSW50
NjQoKSA8PCAiIHNldEZpeGVkTGF5b3V0U2l6ZSAiIDw8IHNpemUpOwogICAgIHZpZXctPnNldEZp
eGVkTGF5b3V0U2l6ZShzaXplKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Rml4ZWRMYXlvdXRTaXplRGlkQ2hhbmdlKHNpemUpKTsKQEAgLTI1MDQsNyArMjUwNCw3IEBAIGNv
bnN0IFdlYkV2ZW50KiBXZWJQYWdlOjpjdXJyZW50RXZlbnQoKQogdm9pZCBXZWJQYWdlOjpmcmVl
emVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29uIHJlYXNvbikKIHsKICAgICBSRUxFQVNF
X0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUGFnZSAoUGFnZUlEPSVsbHUpIC0gQWRk
aW5nIGEgcmVhc29uICVkIHRvIGZyZWV6ZSBsYXllciB0cmVlOyBjdXJyZW50IHJlYXNvbnMgYXJl
ICVkIiwKLSAgICAgICAgdGhpcywgbV9wYWdlSUQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFz
b24pLCBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMudG9SYXcoKSk7CisgICAgICAgIHRoaXMsIG1f
cGFnZUlELnRvVUludDY0KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24pLCBtX2xheWVy
VHJlZUZyZWV6ZVJlYXNvbnMudG9SYXcoKSk7CiAgICAgbV9sYXllclRyZWVGcmVlemVSZWFzb25z
LmFkZChyZWFzb24pOwogICAgIHVwZGF0ZURyYXdpbmdBcmVhTGF5ZXJUcmVlRnJlZXplU3RhdGUo
KTsKIH0KQEAgLTI1MTIsNyArMjUxMiw3IEBAIHZvaWQgV2ViUGFnZTo6ZnJlZXplTGF5ZXJUcmVl
KExheWVyVHJlZUZyZWV6ZVJlYXNvbiByZWFzb24pCiB2b2lkIFdlYlBhZ2U6OnVuZnJlZXplTGF5
ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbiByZWFzb24pCiB7CiAgICAgUkVMRUFTRV9MT0co
UHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlBhZ2UgKFBhZ2VJRD0lbGx1KSAtIFJlbW92aW5n
IGEgcmVhc29uICVkIHRvIGZyZWV6ZSBsYXllciB0cmVlOyBjdXJyZW50IHJlYXNvbnMgYXJlICVk
IiwKLSAgICAgICAgdGhpcywgbV9wYWdlSUQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24p
LCBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMudG9SYXcoKSk7CisgICAgICAgIHRoaXMsIG1fcGFn
ZUlELnRvVUludDY0KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24pLCBtX2xheWVyVHJl
ZUZyZWV6ZVJlYXNvbnMudG9SYXcoKSk7CiAgICAgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnJl
bW92ZShyZWFzb24pOwogICAgIHVwZGF0ZURyYXdpbmdBcmVhTGF5ZXJUcmVlRnJlZXplU3RhdGUo
KTsKIH0KQEAgLTMxNjgsNyArMzE2OCw3IEBAIHZvaWQgV2ViUGFnZTo6dmlzaWJpbGl0eURpZENo
YW5nZSgpCiAKIHZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykK
IHsKLSAgICBMT0dfV0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdl
ICIgPDwgcGFnZUlEKCkgPDwgIiBzZXRBY3Rpdml0eVN0YXRlIHRvICIgPDwgYWN0aXZpdHlTdGF0
ZSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFn
ZSAiIDw8IHBhZ2VJRCgpLnRvVUludDY0KCkgPDwgIiBzZXRBY3Rpdml0eVN0YXRlIHRvICIgPDwg
YWN0aXZpdHlTdGF0ZSk7CiAKICAgICBhdXRvIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBh
Y3Rpdml0eVN0YXRlOwogICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5U3RhdGU7CkBAIC0z
MTc2LDcgKzMxNzYsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0
PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdAogICAgIGlmIChjaGFuZ2Vk
KQogICAgICAgICB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKLSAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKG1fcGFnZSwgInNldEFjdGl2aXR5U3RhdGUgY2FsbGVkIG9uICUiIFBSSXU2NCAiIGJ1dCBX
ZWJDb3JlIHBhZ2Ugd2FzIG51bGwiLCBwYWdlSUQoKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShtX3BhZ2UsICJzZXRBY3Rpdml0eVN0YXRlIGNhbGxlZCBvbiAlIiBQUkl1NjQgIiBidXQgV2Vi
Q29yZSBwYWdlIHdhcyBudWxsIiwgcGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgaWYgKG1fcGFn
ZSkgewogICAgICAgICBTZXRGb3JTY29wZTxPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4+
IGN1cnJlbnRseUNoYW5naW5nQWN0aXZpdHlTdGF0ZSB7IG1fbGFzdEFjdGl2aXR5U3RhdGVDaGFu
Z2VzLCBjaGFuZ2VkIH07CiAgICAgICAgIG1fcGFnZS0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rpdml0
eVN0YXRlKTsKQEAgLTQzMzksNyArNDMzOSw3IEBAIHZvaWQgV2ViUGFnZTo6bWFpbkZyYW1lRGlk
TGF5b3V0KCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChGcmFtZVZpZXcqIGZy
YW1lVmlldyA9IG1haW5GcmFtZVZpZXcoKSkgewogICAgICAgICBJbnRTaXplIG5ld0NvbnRlbnRT
aXplID0gZnJhbWVWaWV3LT5jb250ZW50c1NpemUoKTsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFN
KFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQgPDwgIiBtYWlu
RnJhbWVEaWRMYXlvdXQgc2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBuZXdDb250ZW50U2l6
ZSk7CisgICAgICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2Vi
UGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBtYWluRnJhbWVEaWRMYXlvdXQgc2V0
dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBuZXdDb250ZW50U2l6ZSk7CiAgICAgICAgIGlmICht
X3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRDb250ZW50c1NpemUobmV3Q29udGVudFNpemUpKQog
ICAgICAgICAgICAgdmlld3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOwogICAgIH0KQEAgLTU3
NDIsNyArNTc0Miw3IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJh
bWUpCiAgICAgCiAgICAgYm9vbCB2aWV3cG9ydENoYW5nZWQgPSBmYWxzZTsKIAotICAgIExPR19X
SVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlE
IDw8ICIgZGlkQ29tbWl0TG9hZCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IGNvcmVGcmFt
ZS0+dmlldygpLT5jb250ZW50c1NpemUoKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVS
ZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQudG9VSW50NjQoKSA8PCAiIGRp
ZENvbW1pdExvYWQgc2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBjb3JlRnJhbWUtPnZpZXco
KS0+Y29udGVudHNTaXplKCkpOwogICAgIGlmIChtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRD
b250ZW50c1NpemUoY29yZUZyYW1lLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKSkKICAgICAgICAg
dmlld3BvcnRDaGFuZ2VkID0gdHJ1ZTsKIApAQCAtNjA1Niw3ICs2MDU2LDcgQEAgdm9pZCBXZWJQ
YWdlOjpzZW5kRWRpdG9yU3RhdGVVcGRhdGUoKQogICAgIC8vIElmIHRoYXQgaXMgdGhlIGNhc2Us
IGp1c3Qgc2VuZCB3aGF0IHdlIGhhdmUgKGkuZS4gZG9uJ3QgaW5jbHVkZSBwb3N0LWxheW91dCBk
YXRhKSBhbmQgd2FpdCB1bnRpbCB0aGUKICAgICAvLyBuZXh0IGxheWVyIHRyZWUgY29tbWl0IHRv
IGNvbXB1dGUgYW5kIHNlbmQgdGhlIGNvbXBsZXRlIEVkaXRvclN0YXRlIG92ZXIuCiAgICAgYXV0
byBzdGF0ZSA9IGVkaXRvclN0YXRlKCk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpFZGl0b3JTdGF0ZUNoYW5nZWQoc3RhdGUpLCBwYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQoc3RhdGUpKTsKIAogICAgIGlmIChz
dGF0ZS5pc01pc3NpbmdQb3N0TGF5b3V0RGF0YSkKICAgICAgICAgc2NoZWR1bGVGdWxsRWRpdG9y
U3RhdGVVcGRhdGUoKTsKQEAgLTYyMzcsNyArNjIzNyw3IEBAIHZvaWQgV2ViUGFnZTo6cG9zdE1l
c3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5
KQogCiB2b2lkIFdlYlBhZ2U6OnBvc3RNZXNzYWdlSWdub3JpbmdGdWxseVN5bmNocm9ub3VzTW9k
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiB7
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVNZXNzYWdlKG1lc3NhZ2VO
YW1lLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKG1lc3NhZ2VCb2R5KSkpLCBwYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpJZ25vcmVG
dWxseVN5bmNocm9ub3VzTW9kZSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpI
YW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KSkpLCBJUEM6OlNlbmRPcHRp
b246Oklnbm9yZUZ1bGx5U3luY2hyb25vdXNNb2RlKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpwb3N0
U3luY2hyb25vdXNNZXNzYWdlRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBB
UEk6Ok9iamVjdCogbWVzc2FnZUJvZHksIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggODY4YWU5
MmYyZmIuLjYxZTY0OTI4ZjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VPdmVybGF5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Qb2ludGVySUQuaD4KQEAgLTI3Myw3ICsyNzQsOSBAQCB1c2luZyBXS0V2
ZW50TW9kaWZpZXJzID0gdWludDMyX3Q7CiAKIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQQzo6TWVz
c2FnZVJlY2VpdmVyLCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8V2ViUGFnZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRl
KHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICB1c2lu
ZyBJZGVudGlmaWVyID0gV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI7CisgICAgc3RhdGljIFJlZjxX
ZWJQYWdlPiBjcmVhdGUoSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsK
KwogICAgIHZpcnR1YWwgfldlYlBhZ2UoKTsKIAogICAgIHZvaWQgcmVpbml0aWFsaXplV2ViUGFn
ZShXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMjgzLDcgKzI4Niw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgV2ViUGFnZSogZnJvbUNvcmVQYWdlKFdlYkNvcmU6OlBhZ2UqKTsKIAog
ICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdldCgp
OyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAg
ICBJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQo
KTsgfQogICAgIGJvb2wgdXNlc0VwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7IH0KIApAQCAtMTE2Niw3ICsxMTY5LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKICAgICAgICAgY2FuY2VsR2VzdHVyZXNCbG9j
a2VkT25TeW5jaHJvbm91c1JlcGxpZXMoKTsKLSAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1v
dmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX3BhZ2VJRCwgU2Vjb25kczo6aW5maW5pdHko
KSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQp
OworICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBs
eSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRm
b3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIpOwpAQCAtMTE5OSw3ICsxMjAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNl
cklzSW50ZXJhY3RpbmcoYm9vbCB1c2VySXNJbnRlcmFjdGluZykgeyBtX3VzZXJJc0ludGVyYWN0
aW5nID0gdXNlcklzSW50ZXJhY3Rpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBXZWJQYWdlKElk
ZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIHVwZGF0
ZVRocm90dGxlU3RhdGUoKTsKIApAQCAtMTU4NSw3ICsxNTg4LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgdXBkYXRlTW9ja0FjY2Vzc2liaWxpdHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgp
OwogCi0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgSWRlbnRpZmllciBtX3BhZ2VJRDsKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdl
YkZyYW1lPiBtX21haW5GcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKaW5kZXggZDk2YTdkN2Rk
YTkuLmI3Nzk5YjRmYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcApAQCAtNDEsNyArNDEsNyBA
QCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0KFdlYlBhZ2Um
IHBhZ2UpCiAKIFN0cmluZyBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjppZGVudGlmaWVyKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkpOwor
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKIH0KIAogdm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Ojpjb25uZWN0KEluc3BlY3Rvcjo6
RnJvbnRlbmRDaGFubmVsJiBjaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UuaAppbmRleCAzMDFiMTM5ZTFkMi4uNmI3ZWM1YjE2ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC0yNiwxMyArMjYsMTUgQEAK
ICNpZm5kZWYgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2VfaAogI2RlZmluZSBXS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZV9oCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJ
ZGVudGlmaWVyLmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIH0KIAog
QGludGVyZmFjZSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZSA6IE5TT2JqZWN0IHsK
ICAgICBXZWJLaXQ6OldlYlBhZ2UqIG1fcGFnZTsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICBpZCBtX3BhcmVudDsKICAg
ICBib29sIG1faGFzTWFpbkZyYW1lUGx1Z2luOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0
eVdlYlBhZ2VPYmplY3RCYXNlLm1tCmluZGV4IDNkM2YzNTU1M2U2Li42MTY1YTAxZmU2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMTQ4LDcg
KzE0OCw3IEBAIC0gKHZvaWQpc2V0V2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlKilwYWdlCiAgICAg
ICAgIGF1dG8qIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgICAgIG1faGFzTWFpbkZy
YW1lUGx1Z2luID0gZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCkgPyBmcmFtZS0+ZG9jdW1lbnQo
KS0+aXNQbHVnaW5Eb2N1bWVudCgpIDogZmFsc2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9w
YWdlSUQgPSAwOworICAgICAgICBtX3BhZ2VJRCA9IHsgfTsKICAgICAgICAgbV9oYXNNYWluRnJh
bWVQbHVnaW4gPSBmYWxzZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IGEwN2NhNDVkMzM3Li5iNmFlODQz
MjdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dl
YlBhZ2VNYWMubW0KQEAgLTI2Niw4ICsyNjYsOCBAQCBib29sIFdlYlBhZ2U6OmV4ZWN1dGVLZXlw
cmVzc0NvbW1hbmRzSW50ZXJuYWwoY29uc3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbQog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
Ym9vbCBjb21tYW5kV2FzSGFuZGxlZEJ5VUlQcm9jZXNzID0gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0
b3IoY29tbWFuZHNbaV0uY29tbWFuZE5hbWUpLAotICAgICAgICAgICAgICAgICAgICBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcjo6UmVwbHkoY29t
bWFuZFdhc0hhbmRsZWRCeVVJUHJvY2VzcyksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgICAgICBz
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxl
Y3Rvcihjb21tYW5kc1tpXS5jb21tYW5kTmFtZSksCisgICAgICAgICAgICAgICAgICAgIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yOjpSZXBseShj
b21tYW5kV2FzSGFuZGxlZEJ5VUlQcm9jZXNzKSk7CiAgICAgICAgICAgICAgICAgZXZlbnRXYXNI
YW5kbGVkIHw9IGNvbW1hbmRXYXNIYW5kbGVkQnlVSVByb2Nlc3M7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA1Y2U2
OWNjZjgzMy4uNjE3NGIwYTNiYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAgICAg
ICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVXBkYXRlZChXVEZNb3ZlKHN0YXRpc3RpY3MpKSwgMCk7CiAgICAgfSk7CiAKLSAgICBSZXNv
dXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrKFt0aGlzXSAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVu
ZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4pIHsKKyAgICBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lckNhbGxiYWNrKFt0aGlzXSAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRp
ZmllciBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4p
IHsKICAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKHNlc3Npb25JRCwgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCBvcGVuZXJQYWdlSUQsIG9wZW5lckRvbWFpbiksIDApOwogICAgIH0pOwogI2VuZGlmCkBA
IC02NjcsMTYgKzY2NywxNiBAQCBXZWJQYWdlKiBXZWJQcm9jZXNzOjpmb2N1c2VkV2ViUGFnZSgp
IGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAgICAgCi1XZWJQYWdlKiBXZWJQcm9jZXNzOjp3ZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK1dlYlBhZ2UqIFdlYlByb2Nlc3M6OndlYlBhZ2Uo
UGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIHJldHVybiBtX3BhZ2VNYXAuZ2V0
KHBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSh1aW50NjRfdCBw
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBXZWJQ
cm9jZXNzOjpjcmVhdGVXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRv
IGNoZWNrIGZvciBwYWdlIGV4aXN0ZW5jZSBoZXJlIHNpbmNlIGR1cmluZyBhIHdpbmRvdy5vcGVu
KCkgKG9yIHRhcmdldGVkCiAgICAgLy8gbGluaykgdGhlIFdlYlBhZ2UgZ2V0cyBjcmVhdGVkIGJv
dGggaW4gdGhlIHN5bmNocm9ub3VzIGhhbmRsZXIgYW5kIHRocm91Z2ggdGhlIG5vcm1hbCB3YXku
IAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPj46OkFkZFJlc3VsdCByZXN1
bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7CisgICAgYXV0byByZXN1bHQgPSBt
X3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7CiAgICAgYXV0byBvbGRQYWdlSUQgPSBwYXJh
bWV0ZXJzLm9sZFBhZ2VJRCA/IHBhcmFtZXRlcnMub2xkUGFnZUlELnZhbHVlKCkgOiBwYWdlSUQ7
CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSk7CkBAIC02OTMsNyArNjkzLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpjcmVh
dGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmEKICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBh
Z2VJRCkKK3ZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQobV9wYWdlTWFwLmNv
bnRhaW5zKHBhZ2VJRCkpOwogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6
OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uKQogCiAjZW5kaWYK
IAotdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZSh1aW50NjRfdCwg
T3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpCit2b2lkIFdl
YlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFBhZ2VJZGVudGlmaWVyLCBPcHRp
b25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCkKIHsKICAgICBpZiAo
Y2hhbmdlZCAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKICAgICAgICAgdXBk
YXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb246OlZpc2liaWxpdHlIYXND
aGFuZ2VkKTsKQEAgLTE2MjQsMTMgKzE2MjQsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZW5kUHJl
d2FybUluZm9ybWF0aW9uKGNvbnN0IFVSTCYgdXJsKQogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkQ29sbGVjdFByZXdhcm1J
bmZvcm1hdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6OmNv
bGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSksIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnBh
Z2VEaWRFbnRlcldpbmRvdyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnBhZ2VE
aWRFbnRlcldpbmRvdyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgbV9wYWdlc0luV2lu
ZG93cy5hZGQocGFnZUlEKTsKICAgICBtX25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyLnN0
b3AoKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90
IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGFnZVdpbGxMZWF2ZVdpbmRvdyhQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCiB7CiAgICAgbV9wYWdlc0luV2luZG93cy5yZW1vdmUocGFnZUlEKTsKIApA
QCAtMTY3Myw3ICsxNjczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjplbmFibGVQcml2YXRlQnJvd3Np
bmdGb3JUZXN0aW5nKGJvb2wgZW5hYmxlKQogICAgIGlmIChlbmFibGUpCiAgICAgICAgIGVuc3Vy
ZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAKLSAgICBW
ZWN0b3I8dWludDY0X3Q+IHBhZ2VJRHM7CisgICAgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SURzOwogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcCkgewogICAgICAgICBpZiAocGFn
ZS52YWx1ZSkKICAgICAgICAgICAgIHBhZ2VJRHMuYXBwZW5kKHBhZ2Uua2V5KTsKQEAgLTE4NTMs
NyArMTg1Myw3IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05ldHdv
cmsoKQogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNzOjpl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3Qg
cGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYg
c3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCit2b2lkIFdlYlByb2Nlc3M6
OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRf
dCBwYWdlR3JvdXBJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKIHsKICAgICAv
LyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhlIGNh
bGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJvY2Vz
cwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBTV0Nv
bnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29ubmVj
dGlvbiBhcyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDUyNWRm
MTgzZjIyLi4xODU3Y2VhMGVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
CkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaWYgUExBVEZPUk0o
TUFDKQogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgpAQCAtMTQ1LDkgKzE0
Niw5IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVj
dGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9
CiAKLSAgICBXZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7Ci0gICAgdm9p
ZCBjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cyYmKTsKLSAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBh
Z2VJRCk7CisgICAgV2ViUGFnZSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29u
c3Q7CisgICAgdm9pZCBjcmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHZvaWQgcmVtb3ZlV2ViUGFnZShQQUw6OlNl
c3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIFdlYlBhZ2UqIGZvY3VzZWRX
ZWJQYWdlKCkgY29uc3Q7CiAKICAgICBJbmplY3RlZEJ1bmRsZSogaW5qZWN0ZWRCdW5kbGUoKSBj
b25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgpOyB9CkBAIC0xOTksOCArMjAwLDgg
QEAgcHVibGljOgogCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9u
SW5OZXR3b3JrUHJvY2VzcygpOwogCi0gICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3codWludDY0
X3QgcGFnZUlEKTsKLSAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0X3QgcGFnZUlE
KTsKKyAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
CisgICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
IAogICAgIHZvaWQgbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXJGaXJlZCgpOwogCkBAIC0y
MTksNyArMjIwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBY3RpdmVQYWdlcygpOwog
ICAgIHZvaWQgZ2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKHVpbnQ2NF90IHBhZ2VJRCwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3Rh
dGU6OkZsYWc+IGNoYW5nZWQpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2Uo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpGbGFnPiBjaGFuZ2VkKTsKIAogICAgIHZvaWQgc2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0
bGluZ0luY3JlYXNlTGltaXQoaW50IG1pbGxpc2Vjb25kcyk7CiAKQEAgLTM1OSw3ICszNjAsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9p
ZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0
X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7
CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAjZW5kaWYKIApAQCAt
NDYwLDcgKzQ2MSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQ
cm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
V2ViUGFnZT4+IG1fcGFnZU1hcDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8V2ViUGFnZUdyb3VwUHJveHk+PiBtX3BhZ2VHcm91cE1hcDsKICAgICBSZWZQdHI8SW5qZWN0
ZWRCdW5kbGU+IG1faW5qZWN0ZWRCdW5kbGU7CiAKQEAgLTUxNCw3ICs1MTUsNyBAQCBwcml2YXRl
OgogCiAgICAgYm9vbCBtX3Byb2Nlc3NJc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAKLSAgICBIYXNo
U2V0PHVpbnQ2NF90PiBtX3BhZ2VzSW5XaW5kb3dzOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IG1fcGFnZXNJbldpbmRvd3M7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub25W
aXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lcjsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlU3RvcmFnZT4gbV9hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYjM5YjM4YzE4
M2MuLjU3YTI2NTYzNDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyhzdHJ1
Y3QgV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQogCiAg
ICAgIyBDcmVhdGUgYSBuZXcgcGFnZS4KLSAgICBDcmVhdGVXZWJQYWdlKHVpbnQ2NF90IG5ld1Bh
Z2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzKQorICAgIENyZWF0ZVdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bmV3UGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICBQcmV3YXJtR2xvYmFsbHkoKTsKICAgICBQcmV3YXJt
V2l0aERvbWFpbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJDb3JlOjpQcmV3YXJtSW5mb3JtYXRpb24g
cHJld2FybUluZm9ybWF0aW9uKQpAQCAtMTExLDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6Oldl
YlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQp
CisgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVp
bnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVj
dCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRp
YWxTZXNzaW9uSUQpCiAgICAgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuY3BwCmluZGV4IDBiZDkwYWY5MTg3Li4wZTk0Mjk2MDQ5ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNw
cApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNoU2Vzc2lv
blN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjCiAKICAgICAvLyBO
YW1lc3BhY2UgSURzIGZvciBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlcyBhcmUgZXF1aXZhbGVu
dCB0byB3ZWIgcGFnZSBJRHMKICAgICAvLyBzbyB3ZSBjYW4gZ2V0IHRoZSByaWdodCBwYWdlIGhl
cmUuCi0gICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBh
Z2UobV9zdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlm
aWVyVHlwZT4obV9zdG9yYWdlTmFtZXNwYWNlSUQpKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAg
ICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0
b3JhZ2UvU3RvcmFnZUFyZWFNYXAuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmgKaW5kZXggMjliYTdkOGE4YTMuLmVjYWY2NjUxOWQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1h
cC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VB
cmVhLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApp
bmRleCBiMzkwODFlNmUzYy4uODA5NjIzNDI0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAK
QEAgLTQwLDEyICs0MCwxMiBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1w
bDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5z
aWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZUlkZW50aWZpZXIg
aWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlm
aWVyLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBT
dG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllci50b1VJ
bnQ2NCgpLCBudWxscHRyLCBxdW90YUluQnl0ZXMpKTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdl
TmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1Jl
ZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpCiB7CiAgICAgcmV0dXJuIGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKGlkZW50aWZpZXIsIHF1b3RhSW5CeXRlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApp
bmRleCA2NzU3ZTNiODE4OC4uMWJmZWM0OGI4OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAt
MzksOCArMzksOCBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1w
bCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotICAgIHN0YXRp
YyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5h
bWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAg
IHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwor
ICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2Fs
U3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJ
bkJ5dGVzKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2Nh
bFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5
dGVzKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9u
TWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLm1tCmluZGV4IGZjNjU5ODYzMjUyLi43NjVlZmY0MDRiMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFn
ZXIubW0KQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNl
dFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbQogICAgIGFk
ZENsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwogCiAgICAgbV9w
YWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyV2l0aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OlNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQobV9jb250cm9sc01hbmFn
ZXJDb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQogICAgIG1fY29u
dHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKIAogICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01h
bmFnZXJEaWRDaGFuZ2UoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6Q2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6Q2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpKTsKIH0KIAogdWludDY0
X3QgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKQEAgLTMxOCwyNyArMzE4LDI3IEBA
IFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmN1cnJl
bnRQbGF5YmFja0NvbnRyb2xzRWxlbWVuCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
ZHVyYXRpb25DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQogewot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpE
dXJhdGlvbkNoYW5nZWQoY29udGV4dElkLCBkdXJhdGlvbiksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpE
dXJhdGlvbkNoYW5nZWQoY29udGV4dElkLCBkdXJhdGlvbikpOwogfQogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRv
dWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkN1cnJlbnRUaW1lQ2hhbmdl
ZChjb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OkN1cnJlbnRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YnVmZmVyZWRUaW1lQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpCiB7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkJ1ZmZlcmVkVGltZUNo
YW5nZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QnVmZmVy
ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSkpOwogfQogCiB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNv
bnRleHRJZCwgZG91YmxlIHBsYXliYWNrU3RhcnRlZFRpbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU3RhcnRlZFRp
bWVDaGFuZ2VkKGNvbnRleHRJZCwgcGxheWJhY2tTdGFydGVkVGltZSksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBsYXliYWNrU3RhcnRl
ZFRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyYXRlQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OlJhdGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6UmF0ZUNoYW5nZWQoY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0
ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWthYmxlUmFuZ2VzQ2hh
bmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHRpbWVS
YW5nZXMsIGRvdWJsZSBsYXN0TW9kaWZpZWRUaW1lLCBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFs
KQpAQCAtMzQ5LDM3ICszNDksMzcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVr
YWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWIKICAgICAgICAg
ZG91YmxlIGVuZCA9IHRpbWVSYW5nZXMucmFuZ2VzKCkuZW5kKGkpLnRvRG91YmxlKCk7CiAgICAg
ICAgIHJhbmdlc1ZlY3Rvci5hcHBlbmQoeyBzdGFydCwgZW5kIH0pOwogICAgIH0KLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2Vla2FibGVS
YW5nZXNWZWN0b3JDaGFuZ2VkKGNvbnRleHRJZCwgV1RGTW92ZShyYW5nZXNWZWN0b3IpLCBsYXN0
TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWwpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2Vl
a2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKGNvbnRleHRJZCwgV1RGTW92ZShyYW5nZXNWZWN0b3Ip
LCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWwpKTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCB2YWx1ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjb250ZXh0
SWQsIHZhbHVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQo
Y29udGV4dElkLCB2YWx1ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0
IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9w
dGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCkpOwog
fQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0
aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZElu
ZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCkpOwogfQogCiB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vbCBlbmFibGVkLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFj
a1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkV4
dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZChjb250ZXh0SWQsIGVuYWJsZWQsIHN0YXRp
Y19jYXN0PHVpbnQzMl90Pih0YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNlTmFtZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQoY29udGV4dElk
LCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxvY2FsaXplZERl
dmljZU5hbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlh
U2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0
ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNl
bGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4
Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rp
b25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVjdGVk
SW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp3aXJlbGVzc1ZpZGVv
UGxheWJhY2tEaXNhYmxlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVk
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlci5tbQppbmRleCA1ZDYxMTBiNzkwOS4uNzA2NjM5NzczNzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyLm1tCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW4KICAg
ICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnNldFJvb3RMYXllcih2aWRl
b0xheWVyKTsKICAgICB9CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRleHRJZCwgaW50ZXJm
YWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRleHRJRCgpLCB2aWRlb1JlY3QsIG1fcGFn
ZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW50ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxv
d3NQaWN0dXJlSW5QaWN0dXJlLCBzdGFuZGJ5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldHVwRnVs
bHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgp
LT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCksIGlu
dGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSwgc3RhbmRi
eSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3Jl
ZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50
KQpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZp
ZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGludGVyZmFjZS5zZXRJc0FuaW1hdGluZyh0cnVlKTsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3Jl
ZW4oY29udGV4dElkLCBpbmxpbmVWaWRlb0ZyYW1lKHZpZGVvRWxlbWVudCkpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkLCBpbmxpbmVWaWRlb0ZyYW1lKHZpZGVv
RWxlbWVudCkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9G
dWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
JiB2aWRlb0VsZW1lbnQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSB0YXJnZXRNb2RlKQpAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24o
V2ViQ29yZTo6CiAKICAgICBpbnRlcmZhY2Uuc2V0VGFyZ2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsK
IAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4dElkLCB0YXJnZXRN
b2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRv
TW9kZShjb250ZXh0SWQsIHRhcmdldE1vZGUpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZp
ZGVvRWxlbWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKHRhcmdldE1vZGUpOwpAQCAtMzM2LDEzICsz
MzYsMTMgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVu
VG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjoKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6aGFzVmlkZW9DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbykK
IHsKICAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW8oY29udGV4dElkLCBoYXNWaWRlbyks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW8oY29udGV4dElkLCBoYXNWaWRlbykp
OwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnZpZGVvRGltZW5zaW9uc0NoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBGbG9hdFNpemUmIHZpZGVvRGltZW5zaW9ucykK
IHsKICAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGNvbnRleHRJZCwgdmlk
ZW9EaW1lbnNpb25zKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMo
Y29udGV4dElkLCB2aWRlb0RpbWVuc2lvbnMpKTsKIH0KIAogI3ByYWdtYSBtYXJrIE1lc3NhZ2Vz
IGZyb20gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OgpAQCAtMzY0LDcgKzM2NCw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QodWludDY0
X3QgY29udGV4dElkKQogCiAgICAgYXV0byYgbW9kZWwgPSBlbnN1cmVNb2RlbChjb250ZXh0SWQp
OwogICAgIEludFJlY3QgaW5saW5lUmVjdCA9IGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVv
RWxlbWVudCgpKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6U2V0SW5saW5lUmVjdChjb250ZXh0SWQsIGlubGluZVJlY3QsIGlubGluZVJl
Y3QgIT0gSW50UmVjdCgwLCAwLCAwLCAwKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRJbmxpbmVS
ZWN0KGNvbnRleHRJZCwgaW5saW5lUmVjdCwgaW5saW5lUmVjdCAhPSBJbnRSZWN0KDAsIDAsIDAs
IDApKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29u
dGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBj
b250ZXh0SWQpCiAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIs
IFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0
SWRdIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAg
ICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgdHJ1ZSksIHByb3RlY3RlZFRoaXMt
Pm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihj
b250ZXh0SWQsIHRydWUpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC0zOTQsNyArMzk0
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXR1cm5WaWRlb0NvbnRlbnRMYXll
cih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgICAgICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRo
aXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0Nv
bnRlbnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4
dElkLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAg
ICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNv
bnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVy
RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKICNlbHNlCiAgICAgQ0FMYXllciogdmlk
ZW9MYXllciA9IGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5yb290TGF5ZXIoKTsK
QEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVw
RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNj
cmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3Rl
ZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlz
LT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0
ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNv
bnRleHRJZCkpOwogICAgICAgICB9KTsKICAgICB9KTsKICNlbmRpZgpAQCAtNDQyLDcgKzQ0Miw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVvRWxlbWVudCA9IFdU
Rk1vdmUodmlkZW9FbGVtZW50KSwgY29udGV4dElkXSB7CiAgICAgICAgIHZpZGVvRWxlbWVudC0+
d2lsbEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2Up
Ci0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKGNvbnRleHRJ
ZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKIH0KIApA
QCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1
bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZV0gewogICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBG
dWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAg
IH0pOwogI2Vsc2UKICAgICBtb2RlbC0+d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlLCBtb2Rl
bF0gKCkgbXV0YWJsZSB7CkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRleHQobnVsbHB0cik7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RlY3Rl
ZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVw
RnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNz
YWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250
ZXh0SWQpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKQEAgLTU1NSw3ICs1NTUsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxz
Y3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvbwogCiAgICAgaWYg
KCFpc1BhZ2VWaXNpYmxlKQogICAgICAgICBtb2RlbC52aWRlb0VsZW1lbnQoKS0+c2Nyb2xsSW50
b1ZpZXdJZk5vdFZpc2libGUoZmFsc2UpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoY29udGV4
dElkLCB0cnVlLCBpbmxpbmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSkpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwg
aW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50KCkpKSk7CiB9CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRV
SUQodWludDY0X3QgY29udGV4dElkLCBNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
UmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQ6OkFzeW5jUmVwbHkmJiByZXBs
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCmluZGV4IDJlMTkwYjAzNWY3Li5iOWNlNzlkMjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MzksNyArNTM5LDcg
QEAgc3RhdGljIE5TVVJMICpvcmlnaW4oV2ViUGFnZSYgcGFnZSkKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oTUFDKQotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PE5TU3RyaW5nICo+PiBhY3RpdmVQ
YWdlc09yaWdpbnMoY29uc3QgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+PiYgcGFn
ZU1hcCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNP
cmlnaW5zKGNvbnN0IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4mIHBh
Z2VNYXApCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+PiBhY3Rp
dmVPcmlnaW5zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA5ODcyYzMxYmE1OC4uNzk2MDI0YzhjZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBw
b3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lk
IFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFt
ZUxvYWRlciYgZnJhbWVMb2FkZQogICAgIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KGZyYW1lTG9hZGVyLm5ldHdvcmtpbmdDb250ZXh0KCksIHJlcXVlc3QsIG9wdGlv
bnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdCA/IFN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpV
c2UsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCAvKndlYlBhZ2VJRCovKQordm9pZCBX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVy
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA1NWIzNjk3NTMwNi4uNWY2
MmY3NzdhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQv
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNDYsNyArNDYsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGxvYWRSZXNvdXJjZShXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlTG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRy
PFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9u
ZywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JikgZmluYWw7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBs
ZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpIGZpbmFsOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0
ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgdm9pZCByZW1vdmUoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmco
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCmluZGV4IDEzODU1ODNhZjI5Li5iMTQwM2QwNTYzOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmcmFtZUxvYWRl
ckRlc3Ryb3llZCgpIGZpbmFsOwogICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFsOyAv
LyBtYWlubHkgZm9yIGFzc2VydGlvbnMKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQo
KSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25z
dCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3Zjg2OWYxZGRjYi4uN2ViYTNhOThhYTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDksNyArMjA5LDcgQEAgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lICp3ZWJGcmFtZSkK
IHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQo
KSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpw
YWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370613</attachid>
            <date>2019-05-24 18:08:45 -0700</date>
            <delta_ts>2019-05-24 18:42:28 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>198206_PageIdentifier_wip.patch</filename>
            <type>text/plain</type>
            <size>509224</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBiL1NvdXJjZS9X
VEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwNy4uYjNiY2FkZDlkZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDxtdXRleD4KICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC0xMjIsNiArMTIz
LDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBEZWZhdWx0SGFzaDxPYmplY3RJZGVu
dGlmaWVyPFQ+PiB7CiAgICAgdHlwZWRlZiBPYmplY3RJZGVudGlmaWVySGFzaDxUPiBIYXNoOwog
fTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4KK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IE9iamVjdElkZW50aWZpZXI8VD4mIGlkZW50aWZpZXIpCit7CisgICAg
dHMgPDwgaWRlbnRpZmllci50b1VJbnQ2NCgpOworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6T2JqZWN0SWRlbnRpZmllcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCmluZGV4IGMyYzdjMjI0OWUzLi40NDgyZDVkNDc1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBA
IC03NzksNiArNzc5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBhZ2UvUGFnZUNvbmZpZ3VyYXRpb24uaAogICAgIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQu
aAogICAgIHBhZ2UvUGFnZUdyb3VwLmgKKyAgICBwYWdlL1BhZ2VJZGVudGlmaWVyLmgKICAgICBw
YWdlL1BhZ2VPdmVybGF5LmgKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCiAgICAg
cGFnZS9QZXJmb3JtYW5jZUxvZ2dpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU2YTFmNWYxZDcxLi5iNmE4Zjg5YWI4OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMTIxNyw2ICsxMjE3LDcgQEAKIAkJNDY4MkQyMDAxRjc5NzgzMDAwQzg2M0RCIC8qIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERFMUVEREZBNUYwMEI3
Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBKU0V2ZW50VGFyZ2V0
Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2QjY1MEREMjI5NjI2
MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2luZG93LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5NTE4QTIwN0Q2MzI4
MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBBN0QyREQgLyogQWJz
dHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NzIwN0Q2MzQw
MDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAwQTdEMkREIC8qIEds
b2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzU5OSw2ICs3NjAwLDcgQEAKIAkJNDY4MzQ0REQxRURERkE1RjAw
Qjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTVJlY3RMaXN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUxRURERkE1RjAwQjc3
OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJFOTE0QiAvKiBKU0V2
ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZl
bnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZCNjUwREIy
Mjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRvdy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0QyREQgLyogUmVtb3Rl
RnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVtb3RlRnJh
bWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4RDIwN0Q2MzJBMDBB
N0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yMDE5Nyw2ICsyMDE5OSw3IEBACiAJCQkJOTMwMkIwQkUwRDc5RjgyQzAwQzdFRTgzIC8q
IFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3Jv
dXBMb2FkRGVmZXJyZXIuY3BwICovLAogCQkJCTdBNjc0QkRBMEY5RUJGNEUwMDZDRjA5OSAvKiBQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLywKKwkJCQk0NkI2NTBEQjIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRDVDOUNGQjE5QzdCNTJFMDBCM0M1QzEgLyog
UGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5Q0ZDMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdl
T3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3Zlcmxh
eUNvbnRyb2xsZXIuY3BwICovLApAQCAtMjk4NzEsNiArMjk4NzQsNyBAQAogCQkJCUJDMzA1QzdB
MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQTg1QjFFQjBBMUIyNDA1MDBEOEM4N0MgLyogSlNIVE1MT0xpc3RFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlBODBFN0U5QjBBMUE4M0UzMDA3RkI4QzUgLyogSlNIVE1MT3B0R3Jv
dXBFbGVtZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU3RTk5MEExQTgzRTMw
MDdGQjhDNSAvKiBKU0hUTUxPcHRpb25FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0NDhB
MjlCRjBBNDZEOUNCMDAzMDc1OUYgLyogSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTRBRDAxNzNEMTI3RTgyODYwMDE1MDM1RiAvKiBKU0hUTUxPdXRwdXRFbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAppbmRleCA3NjkxMmNh
ZWI4YS4uMGU3ZDU0MjA1YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTY3LDcgKzY3
LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0
ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQodWludDY0X3Qg
cGFnZUlELCBBWE9iamVjdENhY2hlJiBjYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29s
YXRlZFRyZWU6OmluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
QVhPYmplY3RDYWNoZSYgY2FjaGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGF1dG8gdHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0
eVRyZWUoKTsKQEAgLTg3LDcgKzg3LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6dHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogICAgIHJldHVybiB0
cmVlSURDYWNoZSgpLmdldCh0cmVlSUQpOwogfQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNv
bGF0ZWRUcmVlOjpjcmVhdGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQogewogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIApA
QCAtOTcsNyArOTcsNyBAQCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gbmV3VHJlZTsKIH0K
IAotUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCh1
aW50NjRfdCBwYWdlSUQpCitSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0
cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxv
Y2tlcihzX2NhY2hlTG9jayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGMwNzVkNWIwMTY3
Li42ZWVjMjY0NTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
c29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCkBAIC0yOCw2ICsyOCw3IEBACiAj
aWYgRU5BQkxFKEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKIAogI2luY2x1ZGUgIkFYSXNv
bGF0ZWRUcmVlTm9kZS5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Ro
cmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC00Myw5ICs0NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5BWElzb2xhdGVk
VHJlZSgpOwogCi0gICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gY3JlYXRlVHJlZUZvclBh
Z2VJRCh1aW50NjRfdCBwYWdlSUQpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QVhJ
c29sYXRlZFRyZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhP
YmplY3RDYWNoZSYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRl
ZFRyZWU+IHRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPEFY
SXNvbGF0ZWRUcmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBpbml0aWFsaXplUGFnZVRy
ZWVGb3JJRChQYWdlSWRlbnRpZmllciwgQVhPYmplY3RDYWNoZSYpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+IHRyZWVGb3JQYWdlSUQoUGFnZUlkZW50
aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWZQdHI8QVhJc29sYXRlZFRyZWU+
IHRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0
cjxBWElzb2xhdGVkVHJlZU5vZGU+IHJvb3ROb2RlKCk7CkBAIC03MCw3ICs3MSw3IEBAIHByaXZh
dGU6CiAgICAgQVhJc29sYXRlZFRyZWUoKTsKIAogICAgIHN0YXRpYyBIYXNoTWFwPEFYSXNvbGF0
ZWRUcmVlSUQsIFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlSURDYWNoZSgpOwotICAgIHN0YXRp
YyBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8QVhJc29sYXRlZFRyZWU+PiYgdHJlZVBhZ2VDYWNoZSgp
OworICAgIHN0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWY8QVhJc29sYXRlZFRyZWU+
PiYgdHJlZVBhZ2VDYWNoZSgpOwogCiAgICAgLy8gT25seSBhY2Nlc3Mgb24gQVggdGhyZWFkIHJl
cXVlc3RpbmcgZGF0YS4KICAgICBIYXNoTWFwPEFYSUQsIFJlZjxBWElzb2xhdGVkVHJlZU5vZGU+
PiBtX3JlYWRlclRocmVhZE5vZGVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlNzBh
OWY3ZmU1NS4uZDM1NDE2NzNlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNzc2Niw3
ICs3NzY2LDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2VyKCkKICAgICByZXR1cm4gKm1fbG9n
Z2VyOwogfQogICAgIAotT3B0aW9uYWw8dWludDY0X3Q+IERvY3VtZW50OjpwYWdlSUQoKSBjb25z
dAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50OjpwYWdlSUQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggYzA3NjU1NjUwNmEuLmEyNDgxZGY4YTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNp
bmNsdWRlICJNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmll
ci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVu
dC5oIgogI2luY2x1ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBA
IC02MzUsNyArNjM2LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2Fj
aGUqIGF4T2JqZWN0Q2FjaGUoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQVhPYmplY3RDYWNoZSgp
OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0OworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdDsKICAgICAvLyB0byBnZXQgdmlzdWFsbHkg
b3JkZXJlZCBoZWJyZXcgYW5kIGFyYWJpYyBwYWdlcyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFs
bHlPcmRlcmVkKCk7CiAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBt
X3Zpc3VhbGx5T3JkZXJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBi
MWJlZDhmMDMyZi4uMzNlMjc4NjM4MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Db29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3Bw
CkBAIC03Miw3ICs3Miw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tpZXMoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29r
aWVzID0gc2hvdWxkSW5jbHVkZVNlY3VyZUNvb2tpZXMoZG9jdW1lbnQsIHVybCk7CiAKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtMTEwLDcgKzExMCw3IEBAIENvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFByb3h5IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkoY29u
c3QgRG9jCiB2b2lkIENvb2tpZUphcjo6c2V0Q29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIGJvb2wgQ29va2llSmFyOjpjb29raWVz
RW5hYmxlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1z
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3Rk
OjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
IHsKICAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG1fc3RvcmFnZVNlc3Npb25Qcm92aWRlci0+c3Rv
cmFnZVNlc3Npb24oKSkgewogICAgICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiByZXN1bHQg
PSBzZXNzaW9uLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBA
IC0xNDUsNyArMTQ1LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2Vk
PiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHUKIFN0cmluZyBDb29raWVK
YXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAg
ICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAg
ICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTE2MCw3
ICsxNjAsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdQogYm9vbCBDb29raWVKYXI6OmdldFJh
d0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIGNvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkp
IHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7
CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Db29raWVKYXIuaAppbmRleCAwZGIwN2M2ZDEyZS4uMjgxZjg0YzQ5MDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBv
bmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzKERvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogCiAgICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8
U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OworICAg
IHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9h
ZGVyQ2xpZW50LmgKaW5kZXggNGYwYmI4NmRkZDUuLjFmN2EyOWM0YjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcg
QEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBG
cmFtZUxvYWRlckNsaWVudCB7CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJy
aWRlIHsgfQogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVs
bG9wdDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwog
CiAgICAgYm9vbCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBt
YWlubHkgZm9yIGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggZWMzOTEyN2ExYWQuLjA3NDg3NjExOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJMYXlvdXRNaWxlc3RvbmUuaCIKICNpbmNsdWRl
ICJMaW5rSWNvbi5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8ZnVu
Y3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGlt
ZS5oPgpAQCAtMTI2LDcgKzEyNyw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBtYWtl
UmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAKLSAgICB2aXJ0dWFsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQoKSBjb25zdCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Mb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0
ZWd5LmgKaW5kZXggOGE4MjM4MWYwMTguLjQ1ZmViNjM1ZjcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJP
cHRpb25zLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCIKQEAgLTU3LDcg
KzU4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQgTG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2UoRnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYsIHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25zJiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJl
c291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZShSZXNvdXJjZUxvYWRlciopID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhSZXNvdXJjZUxvYWRlciYsIGJvb2wpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcAppbmRleCA3NzQ1
MDAxZTc4YS4uZjI2YTlhYWYyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9O
YXZpZ2F0aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
bkFjdGlvbi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmF2aWdh
dGlvbkFjdGlvbjo6UmVxdWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50
KQogICAgIDogbV91cmwgeyBVUkwgeyBkb2N1bWVudC51cmwoKSB9IH0KICAgICAsIG1fb3JpZ2lu
IHsgbWFrZVJlZlB0cihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX3BhZ2VJ
REFuZEZyYW1lSURQYWlyIHsgZG9jdW1lbnQuZnJhbWUoKSA/IHN0ZDo6bWFrZV9wYWlyKGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpLnZhbHVlT3IoMCksIGRvY3Vt
ZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKDApKSA6IHN0
ZDo6bWFrZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9wYWdlSURB
bmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVu
dC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlm
aWVyIHsgfSksIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52
YWx1ZU9yKDApKSA6IHN0ZDo6bWFrZV9wYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4oeyB9
LCAwKSB9CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmlu
ZGV4IDFhNDRmOTFkMzY4Li5lZDdkMDljZjI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2
aWdhdGlvbkFjdGlvbi5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRl
ICJMYXlvdXRQb2ludC5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJVc2VyR2VzdHVyZUluZGljYXRvci5oIgpAQCAtNjMsMTQgKzY0LDE0IEBAIHB1YmxpYzoKICAg
ICBOYXZpZ2F0aW9uQWN0aW9uKE5hdmlnYXRpb25BY3Rpb24mJik7CiAgICAgTmF2aWdhdGlvbkFj
dGlvbiYgb3BlcmF0b3I9KE5hdmlnYXRpb25BY3Rpb24mJik7CiAKLSAgICB1c2luZyBQYWdlSURB
bmRGcmFtZUlEUGFpciA9IHN0ZDo6cGFpcjx1aW50NjRfdCAvKiBwYWdlSUQgKi8sIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+OworICAgIHVzaW5nIFBhZ2VJREFuZEZyYW1lSURQYWlyID0gc3RkOjpw
YWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKiBmcmFtZUlEICovPjsKICAgICBjbGFzcyBS
ZXF1ZXN0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgUmVxdWVzdGVyKGNvbnN0IERvY3VtZW50
Jik7CiAKICAgICAgICAgY29uc3QgVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQog
ICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJl
dHVybiAqbV9vcmlnaW47IH0KLSAgICAgICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5maXJzdDsgfQorICAgICAgICBQYWdlSWRlbnRpZmll
ciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZyYW1lSURQYWlyLmZpcnN0OyB9
CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZy
YW1lSURQYWlyLnNlY29uZDsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIFVSTCBtX3VybDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCmluZGV4IDE0
YmMyZjNiZWVmLi5mZmFkYTFjNDViZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRhdGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lk
KFZlY3RvCiAgICAgbV9ub3RpZmljYXRpb25DYWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9u
Q2FsbGJhY2spOwogfQogCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxsYmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2
ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0
aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQog
ewogICAgIEFTU0VSVCghbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2sp
OwogICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayk7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZl
cjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJlZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MK
IH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFJlc291cmNl
TG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1l
bnQpCit2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVy
T3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlE
LCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVu
ZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdpc3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBv
cGVuZXJVcmwgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxv
YWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKaW5kZXggYzQ2NjFiMDQ3NjAuLmRlMWM5NGE3MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBv
bmNlCiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgorI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1
ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTczLDcgKzc0LDcgQEAg
cHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0
IFVSTCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBkYXRlZENh
bGxiYWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4m
Jik+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0
aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJTb2NrZXRM
b2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxU
aW1lKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dTdWJyZXNvdXJjZUxvYWRp
bmdOb3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiYmKTsKQEAgLTk0LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3Vt
ZW50KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKICNlbmRpZgogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3Ry
YWJsZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25N
YXA7CiAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
IG1fbm90aWZpY2F0aW9uQ2FsbGJhY2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1aW50NjRfdCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CisgICAg
RnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQ
YWdlSWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3Rp
ZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUp
PiBtX2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlm
aWNhdGlvbkNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjM1Mzkw
YzhjM2EuLjUyYjJlOTRiN2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9t
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKQEAgLTQ4
Niw4ICs0ODYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQdHI8SWNvbj4gY3JlYXRlSWNv
bkZvckZpbGVzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiAvKiBmaWxlbmFtZXMgKi8pID0gMDsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQq
LywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsgfQotICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIC8q
c3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWluKi8s
IHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5v
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21h
aW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOyB9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3RyYWJsZURvbWFpbiYm
IC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIFBhZ2VJZGVudGlmaWVy
LCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxl
dGlvbkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6Ok5vLCBTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd246Ok5vKTsgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFU
SU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxGcmFtZUlkZW50aWZp
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKaW5kZXgg
MTU2YzljZDIwNWQuLjBkN2IzZGJmNzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFs
RnJhbWVJZGVudGlmaWVyLmgKQEAgLTI1LDEzICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAor
I2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gRnJhbWUgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1
ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQgcHJvY2Vzc2VzLgogc3RydWN0IEdsb2JhbEZyYW1lSWRl
bnRpZmllciB7Ci0gICAgdWludDY0X3QgcGFnZUlEOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RDsKICAgICB1aW50NjRfdCBmcmFtZUlEOwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIEdsb2Jh
bEZyYW1lSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9uYWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxG
cmFtZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50
aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50aWZpZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNDRkNWY4ZDI5NzUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBhZ2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBQYWdlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDExNTkw
NTBjZDMyLi40ZTZiNmFjZTMxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaApAQCAt
MjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDb29raWVKYXIuaCIKKyNp
bmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlNhbWVTaXRlSW5mby5oIgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CkBAIC0zOCw3ICsz
OSw3IEBAIHN0cnVjdCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSB7CiAgICAgU2FtZVNp
dGVJbmZvIHNhbWVTaXRlSW5mbzsKICAgICBVUkwgdXJsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcyB7IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObyB9OwogCiAgICAgdGVtcGxh
dGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNzEsOCAr
NzIsMTEgQEAgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5OjpkZWNvZGUoRGUKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5mcmFtZUlEKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5wYWdl
SUQpKQorICAgIE9wdGlvbmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gcGFnZUlEOworICAg
IGRlY29kZXIgPj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJlc3VsdC5wYWdlSUQgPSBXVEZNb3ZlKCpwYWdlSUQpOwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmluY2x1ZGVTZWN1cmVDb29raWVzKSkKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3Bw
CmluZGV4IDNiMThlNjJmZTM5Li42M2RmMDU4OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAt
NjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1Ro
aXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVn
aXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFp
bik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0K
ICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citi
b29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKSBjb25zdAogewog
ICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFydHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29v
a2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsx
MTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlu
cyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBy
ZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4s
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29s
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlEKSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3Jh
bnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7
CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygpIGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7
CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAg
ICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1wdHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChw
YWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vz
cy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAg
IGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1lSUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdl
U3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdl
SUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwog
ICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUs
NyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAgIG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21h
aW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoc2hvdWxkQmxvY2tUaGlyZFBhcnR5Q29va2llcyhm
cm9tRG9tYWluKSkKICAgICAgICAgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJl
dmFsZW50UmVzb3VyY2UuYWRkKHBhZ2VJRCwgdG9Eb21haW4pOwpAQCAtMjI3LDcgKzIyNyw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZygpCiAgICAgbV9uYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9u
VGVzdE1vZGUgPSB0cnVlOwogfQogCi1PcHRpb25hbDxTZWNvbmRzPiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHksIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0CitPcHRpb25hbDxTZWNvbmRz
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNsaWVudFNpZGVDb29raWVDYXAoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHksIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IGNvbnN0CiB7CiAgICAgaWYgKCFtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHx8ICFwYWdl
SUQgfHwgbV9uYXZpZ2F0ZWRUb1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2Uu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbV9hZ2VDYXBGb3JDbGllbnRTaWRlQ29va2llczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCmluZGV4IDAzMDIwMGRmOWM0Li4zZjM5YzhhY2Q4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRp
YWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdp
c3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3
dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFp
bkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29u
c3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJD
T1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2Nr
Q29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
Ym9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJs
ZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNp
ZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
bW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9t
YWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFn
ZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdl
dEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWlu
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vj
b25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJl
dmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4g
bWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21taXR0
ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVu
dGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQg
QEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxlRG9t
YWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1aW50
NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RG
OjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFzaDx1
aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0
X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVsdEhh
c2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVp
bnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFnZUlk
ZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBhZ2VJ
ZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbj4+
IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBtX2Nh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxTZWNv
bmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hNYXA8
dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gs
IFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmlnYXRl
ZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFwPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRUb1dp
dGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmlnYXRp
b25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5kZXggNjdkZjc2NGQyYzQuLjMzMGFhNjA4
NjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcApAQCAtMTg5LDcg
KzE4OSw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNvb2tpZXMoQ0ZEaWN0aW9uYXJ5UmVm
IGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQogICAgIHJldHVybiBwYXJzZWRDb29raWVzOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBj
b25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0CiB7CiAgICAgVU5V
U0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMjI1LDcg
KzIyNSw3IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zU2VjdXJlQ29va2llcyhDRkFycmF5UmVmIGNv
b2tpZXMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJh
bWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yNDAsNyArMjQwLDcgQEAgc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9N
KGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBjb29raWVTdHJpbmcsIGRpZEFjY2Vz
c1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNF
bmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VB
Y2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQ
Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0K
IAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4IDYzNzQwMzUyYzRhLi41NTdlOTc3
YjRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCkBAIC0yOTQsNyAr
Mjk0LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKE5TQXJyYXkg
KnVuZmlsdGVyZWRDb29raWVzLCBPcHRpb25hbDxTZWMKICAgICByZXR1cm4gZmlsdGVyZWRDb29r
aWVzOwogfQogCi1zdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkKK3N0YXRpYyBOU0FycmF5ICpjb29r
aWVzRm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
aWYgKHNlc3Npb24uc2hvdWxkQmxvY2tDb29raWVzKGZpcnN0UGFydHksIHVybCwgZnJhbWVJRCwg
cGFnZUlEKSkKQEAgLTMwNyw3ICszMDcsNyBAQCBzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVS
TChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZgogfQog
CiBlbnVtIEluY2x1ZGVIVFRQT25seU9yTm90IHsgRG9Ob3RJbmNsdWRlSFRUUE9ubHksIEluY2x1
ZGVIVFRQT25seSB9Owotc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZXNGb3JT
ZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHksIEluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQorc3RhdGljIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlSFRUUE9ubHlPck5vdCBpbmNsdWRlSFRUUE9ubHks
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKQogewogICAgIEFTU0VS
VChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nlc3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tp
ZXMpKTsKIApAQCAtMzYzLDEyICszNjMsMTIgQEAgc3RhdGljIHZvaWQgZGVsZXRlQWxsSFRUUENv
b2tpZXMoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQogICAgIENGSFRUUENv
b2tpZVN0b3JhZ2VEZWxldGVBbGxDb29raWVzKGNvb2tpZVN0b3JhZ2UpOwogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
c0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhp
cywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgRG9Ob3RJ
bmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIElu
Y2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJl
dHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2ll
cyk7CiB9CkBAIC0zNzgsNyArMzc4LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb24KICAgICBy
ZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGhlYWRlckZpZWxkUHJveHkuZmlyc3RQYXJ0
eSwgaGVhZGVyRmllbGRQcm94eS5zYW1lU2l0ZUluZm8sIGhlYWRlckZpZWxkUHJveHkudXJsLCBo
ZWFkZXJGaWVsZFByb3h5LmZyYW1lSUQsIGhlYWRlckZpZWxkUHJveHkucGFnZUlELCBJbmNsdWRl
SFRUUE9ubHksIGhlYWRlckZpZWxkUHJveHkuaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi12
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYg
Y29va2llU3RyKSBjb25zdAogewogICAgIEFTU0VSVChoYXNQcm9jZXNzUHJpdmlsZWdlKFByb2Nl
c3NQcml2aWxlZ2U6OkNhbkFjY2Vzc1Jhd0Nvb2tpZXMpKTsKIApAQCAtNDQzLDcgKzQ0Myw3IEBA
IGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRW5hYmxlZCgpIGNvbnN0CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9v
bCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICByYXdDb29raWVzLmNs
ZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCmluZGV4
IDJjMTE1NjhmY2U1Li5kNjBkNzBhODM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtNTksNyArNTksNyBA
QCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3RyaW5nKCk7
CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3Zv
aWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAg
ICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC03
NCw3ICs3NCw3IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21IVFRQUmVzcG9u
c2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzCiAgICAgY29va2llSmFyREIuc2V0
Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6Ok5ldHdv
cmspOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJ
RCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBj
b25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZy
YW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMTEzLDcgKzExMyw3IEBAIGJv
b2wgQ29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFiYXNlKCku
aXNFbmFibGVkKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KSBjb25zdAorYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5NGM4NmFmZThm
Li42ODcyYjBhYzliMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcApAQCAt
ODAsNyArODAsNyBAQCBDb29raWVKYXJEQiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVE
YXRhYmFzZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29va2llRGF0YWJhc2U7CiB9CiAKLXZvaWQg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNv
bnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdAogewogICAgIGNvb2tpZVN0b3JhZ2UoKS5zZXRDb29raWVzRnJvbURPTSgqdGhpcywgZmly
c3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgdmFsdWUpOwogfQpA
QCAtOTAsNyArOTAsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0VuYWJs
ZWQoKSBjb25zdAogICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuY29va2llc0VuYWJsZWQoKnRo
aXMpOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
IHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIHJldHVybiBjb29r
aWVTdG9yYWdlKCkuY29va2llc0ZvckRPTSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZv
LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpAQCAtMTU0
LDcgKzE1NCw3IEBAIFZlY3RvcjxDb29raWU+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0Q29v
a2llcyhjb25zdCBVUkwmKQogICAgIHJldHVybiB7IH07CiB9CiAKLWJvb2wgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2ll
cyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBh
Z2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAog
ewogICAgIHJldHVybiBjb29raWVTdG9yYWdlKCkuZ2V0UmF3Q29va2llcygqdGhpcywgZmlyc3RQ
YXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmF3Q29va2llcyk7CiB9
CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmZsdXNoQ29v
a2llU3RvcmUoKQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgZm9yIFdlYktpdCB0byB1c2UuCiB9
CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykg
Y29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwg
cGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uU291cC5jcHAKaW5kZXggMWY3NTg3N2E4MmIuLmY2NjQxZWZlYjQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
U291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdv
cmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCkBAIC0yOTEsNyArMjkxLDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKGNvbnN0IEdTTGlzdCogY29va2llcywgY29uc3Qg
Z2NoYXIqIG5hbWUKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QKK3Zv
aWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC00NDQsNyArNDQ0LDcgQEAgVmVjdG9yPENvb2tpZT4g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRDb29raWVzKGNvbnN0IFVSTCYgdXJsKQogICAgIHJl
dHVybiBjb29raWVzOwogfQogCi1ib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29v
a2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29sIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAgIFVOVVNFRF9Q
QVJBTShmcmFtZUlEKTsKQEAgLTUxNCw3ICs1MTQsNyBAQCBzdGF0aWMgc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZQogICAgIHJldHVybiB7IFN0cmluZzo6ZnJvbVVURjgoY29va2llSGVhZGVyLmdldCgpKSwgZGlk
QWNjZXNzU2VjdXJlQ29va2llcyB9OwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQ
YXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTIyLDcgKzUyMiw3IEBAIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRP
TShjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlz
LCB1cmwsIGZhbHNlLCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAor
c3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZpcnN0UGFydHkpOwogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA5NjYxYmM0MzdlOS4uNTQz
OTAyZmY1MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgUmVzb3Vy
Y2VSZXF1ZXN0X2gKICNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2luY2x1ZGUgIlBhZ2VJ
ZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgogI2luY2x1ZGUg
IlVSTFNvdXAuaCIKIApAQCAtMzgsNyArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwgUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1f
YWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nh
c3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJ
RCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDYsNyArNDYsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJsLCBSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgICAg
ICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0
aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwgbV9pbml0aWF0aW5n
UGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01NCw3ICs1Myw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZSh1cmwsIHBv
bGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAg
LCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAg
ICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgICAgIHNldEhU
VFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTYzLDcgKzYxLDYgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNlKFVSTCgpLCBS
ZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAg
ICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBGbGFn
cyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwgbV9pbml0
aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03MSw3ICs2OCw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShV
UkwoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kp
CiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9z
b3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAs
IG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9t
U291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CkBAIC04MCw3ICs3Niw2IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFzZShzb3Vw
VVJJVG9VUkwoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3QpKSwgUmVzb3VyY2VSZXF1
ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1f
YWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nh
c3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJ
RCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9tU291cFJlcXVlc3Qoc291cFJl
cXVlc3QpOwogICAgICAgICB9CkBAIC0xMDAsOCArOTUsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3Mgc291cE1lc3NhZ2VGbGFncygpIGNvbnN0IHsgcmV0
dXJuIG1fc291cEZsYWdzOyB9CiAgICAgICAgIHZvaWQgc2V0U291cE1lc3NhZ2VGbGFncyhTb3Vw
TWVzc2FnZUZsYWdzIHNvdXBGbGFncykgeyBtX3NvdXBGbGFncyA9IHNvdXBGbGFnczsgfQogCi0g
ICAgICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX2luaXRp
YXRpbmdQYWdlSUQ7IH0KLSAgICAgICAgdm9pZCBzZXRJbml0aWF0aW5nUGFnZUlEKHVpbnQ2NF90
IHBhZ2VJRCkgeyBtX2luaXRpYXRpbmdQYWdlSUQgPSBwYWdlSUQ7IH0KKyAgICAgICAgUGFnZUlk
ZW50aWZpZXIgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhdGluZ1Bh
Z2VJRDsgfQorICAgICAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlSUQoUGFnZUlkZW50aWZpZXIg
cGFnZUlEKSB7IG1faW5pdGlhdGluZ1BhZ2VJRCA9IHBhZ2VJRDsgfQogCiAgICAgICAgIEdVbmlx
dWVQdHI8U291cFVSST4gY3JlYXRlU291cFVSSSgpIGNvbnN0OwogCkBAIC0xMTMsNyArMTA4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hY2NlcHRFbmNvZGluZyA6
IDE7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7Ci0gICAgICAgIHVpbnQ2
NF90IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgUGFnZUlkZW50aWZpZXIgbV9pbml0aWF0
aW5nUGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VNZW1iZXJzKFNvdXBN
ZXNzYWdlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VCb2R5KFNvdXBN
ZXNzYWdlKikgY29uc3Q7CkBAIC0xNjIsMTAgKzE1NywxMSBAQCBib29sIFJlc291cmNlUmVxdWVz
dDo6ZGVjb2RlV2l0aFBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgbV9zb3VwRmxhZ3MgPSBzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdz
Pihzb3VwTWVzc2FnZUZsYWdzKTsKIAotICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQ7Ci0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbml0aWF0aW5nUGFnZUlEKSkKKyAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBkZWNvZGVyID4+IGluaXRpYXRp
bmdQYWdlSUQ7CisgICAgaWYgKCFpbml0aWF0aW5nUGFnZUlEKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBtX2lu
aXRpYXRpbmdQYWdlSUQgPSAqaW5pdGlhdGluZ1BhZ2VJRDsKIAogICAgIHJldHVybiB0cnVlOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDBmNmVhMTk3ODdhLi4wZWQyNWIzN2Q1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
UmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIHZvaWQgUmVzb3Vy
Y2VSZXF1ZXN0Ojp1cGRhdGVTb3VwUmVxdWVzdChTb3VwUmVxdWVzdCogc291cFJlcXVlc3QpIGNv
bnN0CiB7CiAgICAgaWYgKG1faW5pdGlhdGluZ1BhZ2VJRCkgewogICAgICAgICB1aW50NjRfdCog
aW5pdGlhdGluZ1BhZ2VJRFB0ciA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Kj4oZmFzdE1hbGxvYyhz
aXplb2YodWludDY0X3QpKSk7Ci0gICAgICAgICppbml0aWF0aW5nUGFnZUlEUHRyID0gbV9pbml0
aWF0aW5nUGFnZUlEOworICAgICAgICAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA9IG1faW5pdGlhdGlu
Z1BhZ2VJRC50b1VJbnQ2NCgpOwogICAgICAgICBnX29iamVjdF9zZXRfZGF0YV9mdWxsKEdfT0JK
RUNUKHNvdXBSZXF1ZXN0KSwgZ19pbnRlcm5fc3RhdGljX3N0cmluZyhnU291cFJlcXVlc3RJbml0
aWF0aW5nUGFnZUlES2V5KSwgaW5pdGlhdGluZ1BhZ2VJRFB0ciwgZmFzdEZyZWUpOwogICAgIH0K
IApAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgUmVzb3VyY2VSZXF1ZXN0Ojp1cGRhdGVTb3VwUmVx
dWVzdChTb3VwUmVxdWVzdCogc291cFJlcXVlc3QpIGNvbnN0CiB2b2lkIFJlc291cmNlUmVxdWVz
dDo6dXBkYXRlRnJvbVNvdXBSZXF1ZXN0KFNvdXBSZXF1ZXN0KiBzb3VwUmVxdWVzdCkKIHsKICAg
ICB1aW50NjRfdCogaW5pdGlhdGluZ1BhZ2VJRFB0ciA9IHN0YXRpY19jYXN0PHVpbnQ2NF90Kj4o
Z19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1Qoc291cFJlcXVlc3QpLCBnU291cFJlcXVlc3RJbml0
aWF0aW5nUGFnZUlES2V5KSk7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1Bh
Z2VJRFB0ciA/ICppbml0aWF0aW5nUGFnZUlEUHRyIDogMDsKKyAgICBtX2luaXRpYXRpbmdQYWdl
SUQgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KGluaXRpYXRpbmdQ
YWdlSURQdHIgPyAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA6IDApOwogfQogCiB1bnNpZ25lZCBpbml0
aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4IDg3OWMw
YjE5ZTk2Li5iNjg5YzNlMjVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC03MTYsNyArNzE2LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c3luY1N0b3JhZ2VJbW1lZGlhdGVseSgp
CiAgICAgbV9kYXRhYmFzZS5ydW5WYWN1dW1Db21tYW5kKCk7CiB9CiAKLXZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1l
RG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTc0Myw3ICs3NDMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNv
bnN0IFN1YkZyYW1lRG9tYWluJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
IHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlE
IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
IHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlE
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzk1LDcgKzc5NSw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1l
RG9tYWluJiYKICAgICB9KTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9wZW5lclBhZ2VJRCBv
cGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRv
bWFpbikKIHsKICAgICBBU1NFUlQoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5l
ckRvbWFpbik7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC04MTQsNyArODE0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW4KICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChXVEZNb3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVy
RG9tYWluKSwgV1RGOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bjo6Tm8sIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3Mo
U3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFt
ZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1l
RG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1By
b21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtODI4LDcgKzgyOCw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURv
bWFpbiYmIHN1CiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJGcmFt
ZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHByb21w
dFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFs
KFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJh
bWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0
b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BG
cmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRX
YXNTaG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmgKaW5kZXggYmFiMmI3YWVhYjcuLmJmYzIzMzk2ODUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtNjQs
NyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlmTmVlZGVkKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3ZlcnJpZGU7CiAKLSAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92ZXJyaWRlOworICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9yRG9tYWlucyhjb25zdCBI
YXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpIG92ZXJyaWRlOwogCkBAIC05MSw5ICs5MSw5IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCkgY29uc3Qg
b3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21h
aW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJ
RCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYm
KSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
LCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8
RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSBv
dmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lk
IGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZy
YW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwg
Ym9vbCBpc01haW5GcmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24o
Y29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3ICsxNTIsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCByZWN1cnNpdmVseUZp
bmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21haW4odW5zaWduZWQg
cHJpbWFyeURvbWFpbklELCBTdGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2YWxlbnRSZWRpcmVjdGlv
blNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOwogICAgIHZvaWQgc2V0
RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0gICAgdm9pZCBncmFudFN0
b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBP
cHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1l
RG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7
CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudCgpOwog
ICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50UmVzb3VyY2VzRm9y
RGVidWdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwZWU3Zjk2Mzg5NC4uYTVmMjYyNGU0MzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3Bw
CkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmU6OnN5bmNTdG9yYWdlSW1tZWRpYXRlbHkoKQogICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdl
LT5zY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2U6OkZvcmNlSW1tZWRpYXRlV3JpdGU6Olllcyk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZy
YW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21haW4mIHRvcEZyYW1l
RG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFN1YkZyYW1lRG9tYWluJiBzCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1
YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1
YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCBGcmFtZUlEIGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9y
YWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1
bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjY2LDcgKzI2Niw3IEBAIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFp
biYmIHN1CiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgT3BlbmVyUGFnZUlEIG9wZW5l
clBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQ
YWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikK
IHsKICAgICBBU1NFUlQoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzICE9IG9wZW5lckRvbWFp
bik7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC0yODcsNyArMjg3LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoRG9tYWluSW4KICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChX
VEZNb3ZlKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyksIFdURk1vdmUob3BlbmVyRG9tYWlu
KSwgV1RGOjpudWxsb3B0LCBvcGVuZXJQYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bjo6Tm8sIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7IH0pOwogfQogCi12b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1l
RG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiBz
dWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0yOTksNyArMjk5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkYK
ICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwg
V1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9t
YWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9w
dGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJRCBwYWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biBwcm9tcHRXYXNTaG93bk5vd09yRWFybGllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzSW50
ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIg
cGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVh
cmxpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5k
ZXggNDRlZmJmNGRlYzEuLjQ1ZjdlMWI3NTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3Jl
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHN5bmNTdG9yYWdlSWZOZWVkZWQoKSBvdmVycmlkZTsKICAgICB2b2lkIHN5bmNTdG9y
YWdlSW1tZWRpYXRlbHkoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgT3BlbmVyUGFnZUlE
LCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgT3BlbmVyRG9tYWluJiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBncmFuZGZh
dGhlckRhdGFGb3JEb21haW5zKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jikgb3Zl
cnJpZGU7CiAKQEAgLTk3LDkgKzk3LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBjYWxjdWxhdGVB
bmRTdWJtaXRUZWxlbWV0cnkoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0
aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYm
LCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZ3JhbnRTdG9y
YWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBh
Z2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7
CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
RnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
U3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgZ3JhbnRTdG9yYWdl
QWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQp
PiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IE5hdmln
YXRlZFRvRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRGcm9t
RG9tYWluJiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFpbkZyYW1lKSBvdmVycmlkZTsKICAg
ICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYpIG92ZXJyaWRl
OwpAQCAtMTIzLDcgKzEyMyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbmNyZW1lbnRSZWNvcmRz
RGVsZXRlZENvdW50Rm9yRG9tYWlucyhIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYmKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MmLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCByZWN1cnNpdmVseUdl
dEFsbERvbWFpbnNUaGF0SGF2ZVJlZGlyZWN0ZWRUb1RoaXNEb21haW4oY29uc3QgUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyYsIEhhc2hTZXQ8UmVkaXJlY3RlZFRvRG9tYWluPiYsIHVuc2lnbmVkIG51
bWJlck9mUmVjdXJzaXZlQ2FsbHMpIGNvbnN0OwotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
SW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgT3B0aW9uYWw8RnJh
bWVJRD4sIFBhZ2VJRCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7
CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpOwogICAgIHZvaWQg
bWFya0FzUHJldmFsZW50SWZIYXNSZWRpcmVjdGVkVG9QcmV2YWxlbnQoUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyYpOwogICAgIGJvb2wgaXNQcmV2YWxlbnREdWVUb0RlYnVnTW9kZShSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzJik7CiAgICAgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiBlbnN1cmVQcmV2
YWxlbnRSZXNvdXJjZXNGb3JEZWJ1Z01vZGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAwYjU3NzViYmI3Ny4uZDc3OThiMjVkMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTkwLDggKzkwLDYg
QEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7
Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2
NF90OwogICAgIAogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwpA
QCAtMTEwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3JhZ2VJ
Zk5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgp
ID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFp
biYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9wZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFn
ZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBncmFuZGZh
dGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAg
LTE2MSw5ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RlYnVnTW9kZUVuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH07CiAgICAgdm9pZCBzZXRQcmV2YWxl
bnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCi0gICAg
dmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgRnJhbWVJRCwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8
RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFp
biYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wgaXNS
ZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2dVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDg3MWIxOWQyZjA3Li42MjI0
MzBjZDhlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcgogICAgIH0p
OwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9y
YWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChzdWJGcmFtZURvbWFpbiAhPSB0
b3BGcmFtZURvbWFpbik7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKQEAgLTI5OCwx
MiArMjk4LDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9y
YWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzCiAgICAgfSk7CiB9CiAKLWJvb2wg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUo
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlEKQorYm9vbCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Omhhc1N0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIG1fbmV0d29ya1Nlc3Npb24gPyBt
X25ldHdvcmtTZXNzaW9uLT5uZXR3b3JrU3RvcmFnZVNlc3Npb24oKS5oYXNTdG9yYWdlQWNjZXNz
KHJlc291cmNlRG9tYWluLCBmaXJzdFBhcnR5RG9tYWluLCBmcmFtZUlELCBwYWdlSUQpIDogZmFs
c2U7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmNhbGxIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMzE1LDcgKzMxNSw3IEBAIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1l
SGFuZGxlcihjb25zdCBSCiAgICAgY2FsbGJhY2soZmFsc2UpOwogfQogCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChzdWJGcmFtZURvbWFpbiA9
PSB0b3BGcmFtZURvbWFpbikgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZDo6WWVzLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKQEAg
LTM2Miw3ICszNjIsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haQogICAgIH0pOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBSZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFp
bikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKFJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFJlZ2lzdHJhYmxlRG9tYWluJiYg
b3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTM3
NSw3ICszNzUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZQogICAgIH0pOwogfQogCi12b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgcG9zdFRhc2so
W3RoaXMsIHN1YkZyYW1lRG9tYWluID0gc3ViRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIHRv
cEZyYW1lRG9tYWluID0gdG9wRnJhbWVEb21haW4uaXNvbGF0ZWRDb3B5KCksIGZyYW1lSUQsIHBh
Z2VJRCwgcHJvbXB0V2FzU2hvd24sIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYKICAgICB9KTsKIH0KIAotU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCkKK1N0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgYm9vbCBp
c1N0b3JhZ2VHcmFudGVkID0gZmFsc2U7CiAKQEAgLTQwOSw3ICs0MDksNyBAQCBTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFn
ZUFjY2Vzcyhjb25zdAogICAgIHJldHVybiBpc1N0b3JhZ2VHcmFudGVkID8gU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQ6OlllcyA6IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObzsKIH0KIAotdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNhbGxHcmFudFN0b3JhZ2VBY2Nlc3NI
YW5kbGVyKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDg3NTlk
NjAxNjZhLi43OWNmMjQ2MDFjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFU
eXBlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtODIsOCArODMsNiBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2lu
ZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAgICAg
dXNpbmcgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgPSBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gPSBXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd247CkBAIC0xMDQsNyArMTAzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1Jl
bW92YWwoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNo
b3VsZFN1Ym1pdFRlbGVtZXRyeShib29sKTsKIAotICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNz
KGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBQ
YWdlSUQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4m
Jik7CisgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBj
b25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwogCiAg
ICAgdm9pZCBhcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUoKTsKIApAQCAtMTE4LDExICsxMTcsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlV2Vi
c2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4s
IEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdlYnNpdGVEYXRhVG9SZW1vdmU+JiYsIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhX
ZWJzaXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQ
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYp
PiYmKTsKLSAgICBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBQYWdlSUQpOworICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50U3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9u
YWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFt
ZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgYm9vbCBoYXNTdG9yYWdl
QWNjZXNzRm9yRnJhbWUoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFp
biYsIEZyYW1lSUQsIFBhZ2VJRCk7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzcyhjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgYm9vbCBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgU3ViRnJhbWVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9t
YWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2Vlbihjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFs
ZW50UmVzb3VyY2UoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMTY2LDExICsxNjUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJl
dmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29u
c3QgU3RyaW5nJik7Ci0gICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJ
RD4sIFBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCk+JiYpOworICAgIHZvaWQgY2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRsZXIoY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYpOwogICAgIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2FsbFVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb0Jsb2NrQ29va2llc0ZvckhhbmRsZXIoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9t
YWluPiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxsUmVtb3Zl
RG9tYWluc0hhbmRsZXIoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYpOwotICAgIHZv
aWQgY2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgU3ViRnJhbWVEb21h
aW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZy
YW1lSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
RnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwogCiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrUHJvY2VzcygpOwogCkBAIC0x
ODIsNyArMTgxLDcgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxl
bWV0cnlGaW5pc2hlZCh1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQg
dG90YWxQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3Az
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucykgY29uc3Q7CiAKICAgICB2b2lkIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsK
LSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzJiYsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpOwor
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRv
bWFpbiYmKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmLCBTaG91bGRJbmNsdWRlTG9j
YWxob3N0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0NPUlNQcmVmbGlnaHRDaGVja2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCmluZGV4IDJjOTcxODM2YWRhLi40ZDNkMTY5ZjZh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgU3RyaW5nIHJlZmVycmVyOwogICAgICAgICBTdHJpbmcgdXNlckFnZW50OwogICAgICAgICBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAgICAg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAgICAgICB1aW50NjRfdCBmcmFt
ZUlEOwogICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCAz
ZDcxZjhmNmIxYi4uOTJjOGI3YWU0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBA
IC00NDIsNyArNDQyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVt
b3ZlTG9hZElkZW50aWZpZXIoUmVzb3VyY2VMb2FkSWRlbnRpZmllcgogICAgIEFTU0VSVCghbV9u
ZXR3b3JrUmVzb3VyY2VMb2FkZXJzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qg
d2ViUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cGFnZUxvYWRD
b21wbGV0ZWQoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogewogICAgIHN0b3BBbGxOZXR3b3Jr
QWN0aXZpdHlUcmFja2luZ0ZvclBhZ2Uod2ViUGFnZUlEKTsKIH0KQEAgLTUxMiw3ICs1MTIsNyBA
QCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoUEFMOjpTZXNzaQogICAgIGxvYWRlci0+Y29udmVydFRvRG93bmxvYWQo
ZG93bmxvYWRJRCwgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byYg
bmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwg
c2Vzc2lvbklEKTsKICAgICBhdXRvIHJlc3VsdCA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jb29r
aWVzRm9yRE9NKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQs
IGluY2x1ZGVTZWN1cmVDb29raWVzKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29ucwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0KSwg
cmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBhdXRv
JiBuZXR3b3JrU3RvcmFnZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2Vzcygp
LCBzZXNzaW9uSUQpOwogICAgIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXRDb29raWVzRnJvbURP
TShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBjb29raWVT
dHJpbmcpOwpAQCAtNTQyLDEzICs1NDIsMTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Y29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb20KICAg
ICBjb21wbGV0aW9uSGFuZGxlcihzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNz
aW9uSUQpLmNvb2tpZXNFbmFibGVkKCkpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcsIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGF1dG8gcmVzdWx0ID0gc3RvcmFnZVNlc3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vz
c2lvbklEKS5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShmaXJzdFBhcnR5LCBzYW1lU2l0
ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXN1bHQuZmlyc3QpLCByZXN1bHQuc2Vjb25kKTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gcmVzdWx0OwogICAgIHN0b3JhZ2VTZXNzaW9uKG5l
dHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCkuZ2V0UmF3Q29va2llcyhmaXJzdFBhcnR5LCBzYW1l
U2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCByZXN1bHQpOwpAQCAtNjM4LDEzICs2Mzgs
MTMgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZW5zdXJlTGVnYWN5UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVtb3ZlU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlmIChhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkuc3RvcmFnZVNlc3Npb24oc2Vzc2lvbklE
KSkKICAgICAgICAgc3RvcmFnZVNlc3Npb24tPnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShm
cmFtZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlz
dGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3JhZ2VT
ZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5jbGVhclBhZ2VTcGVj
aWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHBhZ2VJRCk7CkBAIC02OTcsNyArNjk3
LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmUKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2Vz
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nl
c3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAg
ICAgICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+
cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7CkBAIC03MDksNyArNzA5LDcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6aGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGMKICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBm
cmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBpZiAoYXV0byBuZXR3b3JrU2Vzc2lvbiA9IG5ldHdvcmtQcm9jZXNzKCkubmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewogICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpIHsK
QEAgLTcyMSw3ICs3MjEsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpy
ZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Np
b24gPSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAg
ICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKQpAQCAtNzQ1LDcgKzc0NSw3IEBAIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiAgICAg
U2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogfQogCi1PcHRp
b25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZCh1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9h
ZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpT
ZXNzaW9uSUQmIHNlc3Npb25JRCkKK09wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBi
b29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklEKQogewog
ICAgIGlmIChzZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKQEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmcoKQogICAgIG1fbmV0d29ya0FjdGl2
aXR5VHJhY2tlcnMuY2xlYXIoKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZSh1aW50NjRfdCBwYWdl
SUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9wQWxsTmV0d29ya0Fj
dGl2aXR5VHJhY2tpbmdGb3JQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBmb3Ig
KGF1dG8mIGFjdGl2aXR5VHJhY2tlciA6IG1fbmV0d29ya0FjdGl2aXR5VHJhY2tlcnMpIHsKICAg
ICAgICAgaWYgKGFjdGl2aXR5VHJhY2tlci5wYWdlSUQgPT0gcGFnZUlEKQpAQCAtODI2LDcgKzgy
Niw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3Jr
QWN0aXZpdHlUcmFja2luZ0ZvclBhZ2UodWludDY0CiAgICAgfSk7CiB9CiAKLXNpemVfdCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkodWludDY0
X3QgcGFnZUlEKQorc2l6ZV90IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpmaW5kUm9v
dE5ldHdvcmtBY3Rpdml0eShQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIG1f
bmV0d29ya0FjdGl2aXR5VHJhY2tlcnMuZmluZE1hdGNoaW5nKFsmXShjb25zdCBhdXRvJiBpdGVt
KSB7CiAgICAgICAgIHJldHVybiBpdGVtLmlzUm9vdEFjdGl2aXR5ICYmIGl0ZW0ucGFnZUlEID09
IHBhZ2VJRDsKQEAgLTkwMywxNyArOTAzLDE3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OmNsZWFyQ29ubmVjdGlvbkhhc1VwbG9hZHMoKQogICAgIG1fbmV0d29ya1Byb2Nl
c3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQ
b29sOjpDbGVhcldlYlByb2Nlc3NIYXNVcGxvYWRzKG1fd2ViUHJvY2Vzc0lkZW50aWZpZXIpLCAw
KTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUGFnZVdhc0Fk
ZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBv
bGRQYWdlSUQpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2Fz
QWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKIHsKICAgICBtX25ldHdvcmtQcm9jZXNz
LT53ZWJQYWdlV2FzQWRkZWQobV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCwg
b2xkUGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2Vi
UGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQp
Cit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBt
X25ldHdvcmtQcm9jZXNzLT53ZWJQYWdlV2FzUmVtb3ZlZChtX2Nvbm5lY3Rpb24uZ2V0KCksIHNl
c3Npb25JRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZXMpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjp3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50aWZpZXI+JiBwYWdlcykKIHsKICAgICBtX25l
dHdvcmtQcm9jZXNzLT53ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQobV9jb25uZWN0aW9uLmdldCgp
LCBuZXdTZXNzaW9uSUQsIHBhZ2VzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBj
YmM3YmJmZThmNS4uMDZkNTc5Njg4MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkTWFwLmgiCiAjaW5jbHVk
ZSAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtMb2FkSW5mb3JtYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAt
MTMzLDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9uZXR3b3JrTG9hZEluZm9ybWF0aW9u
QnlJRC5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgT3B0aW9uYWw8TmV0d29ya0Fj
dGl2aXR5VHJhY2tlcj4gc3RhcnRUcmFja2luZ1Jlc291cmNlTG9hZCh1aW50NjRfdCBwYWdlSUQs
IFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwg
Y29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKKyAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VMb2FkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVzb3VyY2UsIGNv
bnN0IFBBTDo6U2Vzc2lvbklEJik7CiAgICAgdm9pZCBzdG9wVHJhY2tpbmdSZXNvdXJjZUxvYWQo
UmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
OjpDb21wbGV0aW9uQ29kZSk7CiAKICAgICBXZWJDb3JlOjpCbG9iUmVnaXN0cnlJbXBsJiBibG9i
UmVnaXN0cnkoKTsKQEAgLTE0NCw5ICsxNDUsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRDb25u
ZWN0aW9uSGFzVXBsb2FkcygpOwogICAgIHZvaWQgY2xlYXJDb25uZWN0aW9uSGFzVXBsb2Fkcygp
OwogCi0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKFBB
TDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgcGFnZXMpOworICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlE
KTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CisgICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpT
ZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+JiBwYWdlcyk7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoTmV0d29ya1Byb2Nlc3MmLCBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIpOwpAQCAtMTcw
LDE2ICsxNzEsMTYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHByZWNvbm5lY3RUbyh1aW50NjRfdCBw
cmVjb25uZWN0aW9uSWRlbnRpZmllciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmJik7
CiAKICAgICB2b2lkIHJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZpZXIp
OwotICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKTsKKyAgICB2
b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lk
IGNyb3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25z
dCBVUkwmIHJlZGlyZWN0VVJMKTsKICAgICB2b2lkIHN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9u
SUQsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7CiAgICAgdm9pZCBjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyLCBEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKLSAgICB2b2lkIGNvb2tpZXNGb3JE
T00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29v
a2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBjb29raWVzRm9yRE9NKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29v
a2llc0FjY2Vzc2VkKT4mJik7CisgICAgdm9pZCBzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Np
b25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGNvb2tpZXNFbmFi
bGVkKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dHJpbmcgY29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOwotICAg
IHZvaWQgZ2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYmKT4mJik7CisgICAgdm9pZCBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJD
b3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcg
Y29va2llU3RyaW5nLCBib29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCk+JiYpOworICAgIHZvaWQg
Z2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmKTsKICAgICB2b2lkIGRlbGV0
ZUNvb2tpZShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKTsKQEAgLTIxOCwxNyArMjE5LDE3IEBAIHByaXZhdGU6CiAgICAgQ2FjaGVTdG9y
YWdlRW5naW5lQ29ubmVjdGlvbiYgY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOwogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlEKTsKLSAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCByZW1vdmVT
dG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKIAogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIHZvaWQgbG9nV2ViU29ja2V0TG9hZGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7
CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0YXJnZXREb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgV2FsbFRpbWUgbGFzdFNlZW4pOwogICAgIHZvaWQgbG9nU3VicmVzb3Vy
Y2VSZWRpcmVjdChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHNvdXJj
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbik7CiAgICAgdm9p
ZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VM
b2FkU3RhdGlzdGljcz4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
c3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXIoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgb3BlbmVyRG9tYWluKTsKICNlbmRpZgogCiAgICAgdm9pZCBhZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC0yMzksMjkgKzI0MCwyOSBAQCBwcml2YXRl
OgogICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoKSA9IGRlZmF1bHQ7CiAg
ICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihjb25zdCBSZXNvdXJjZU5ldHdv
cmtBY3Rpdml0eVRyYWNrZXImKSA9IGRlZmF1bHQ7CiAgICAgICAgIFJlc291cmNlTmV0d29ya0Fj
dGl2aXR5VHJhY2tlcihSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXImJikgPSBkZWZhdWx0
OwotICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIodWludDY0X3QgcGFnZUlE
KQorICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAg
ICAgICAgLCBpc1Jvb3RBY3Rpdml0eSB7IHRydWUgfQogICAgICAgICAgICAgLCBuZXR3b3JrQWN0
aXZpdHkgeyBOZXR3b3JrQWN0aXZpdHlUcmFja2VyOjpMYWJlbDo6TG9hZFBhZ2UgfQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICBSZXNvdXJjZU5ldHdvcmtBY3Rpdml0eVRyYWNrZXIo
dWludDY0X3QgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpCisgICAg
ICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCkKICAgICAgICAgICAg
IDogcGFnZUlEIHsgcGFnZUlEIH0KICAgICAgICAgICAgICwgcmVzb3VyY2VJRCB7IHJlc291cmNl
SUQgfQogICAgICAgICAgICAgLCBuZXR3b3JrQWN0aXZpdHkgeyBOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyOjpMYWJlbDo6TG9hZFJlc291cmNlIH0KICAgICAgICAgewogICAgICAgICB9CiAKLSAgICAg
ICAgdWludDY0X3QgcGFnZUlEIHsgMCB9OworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQ7CiAgICAgICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCB7IDAg
fTsKICAgICAgICAgYm9vbCBpc1Jvb3RBY3Rpdml0eSB7IGZhbHNlIH07CiAgICAgICAgIE5ldHdv
cmtBY3Rpdml0eVRyYWNrZXIgbmV0d29ya0FjdGl2aXR5OwogICAgIH07CiAKICAgICB2b2lkIHN0
b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZygpOwotICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtB
Y3Rpdml0eVRyYWNraW5nRm9yUGFnZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHNpemVfdCBmaW5k
Um9vdE5ldHdvcmtBY3Rpdml0eSh1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgc3RvcEFsbE5l
dHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Cisg
ICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KTsKICAgICBzaXplX3QgZmluZE5ldHdvcmtBY3Rpdml0eVRyYWNrZXIoUmVzb3VyY2VMb2FkSWRl
bnRpZmllciByZXNvdXJjZUlEKTsKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggZjdjOTdlZWJi
MjEuLjgzM2U3NGZjZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2Fn
ZXMuaW4KQEAgLTI2LDE4ICsyNiwxOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVyZm9ybVN5bmNocm9ub3VzTG9hZChX
ZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRl
cnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4gZGF0YSkgU3luY2hyb25vdXMKICAgICBMb2Fk
UGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHJlc291cmNlTG9hZFBh
cmFtZXRlcnMpCiAgICAgUmVtb3ZlTG9hZElkZW50aWZpZXIodWludDY0X3QgcmVzb3VyY2VMb2Fk
SWRlbnRpZmllcikKLSAgICBQYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpCisg
ICAgUGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQog
ICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkKICAgICBQcmVjb25uZWN0VG8odWludDY0
X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAgU3RhcnREb3dubG9hZChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVy
dE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRp
ZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCi0gICAgU2V0Q29va2llc0Zyb21ET00o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQor
ICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0
eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1Nl
Y3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBTdHJpbmcgY29va2llU3Ry
aW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJv
b2wgZW5hYmxlZCkgU3luY2hyb25vdXMKLSAgICBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29y
ZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgLT4gKFN0cmluZyBjb29r
aWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2llcykgU3luY2hyb25vdXMKLSAgICBH
ZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIGZpcnN0UGFydHksIHN0
cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvLCBVUkwgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgQ29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0
eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1Nl
Y3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0UmF3Q29va2llcyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZv
IHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIERlbGV0ZUNvb2tpZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29raWVOYW1lKQogCiAgICAgUmVnaXN0
ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcgY29udGVudFR5cGUpCkBAIC01Niwx
NiArNTYsMTYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVn
YWN5UmVjZWl2ZXIgewogICAgIEVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBSZW1vdmVTdG9yYWdl
QWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpOwotICAgIENsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNl
TG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQp
OworICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7Cisg
ICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAg
TG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gZG9tYWluKQogICAgIExvZ1dlYlNvY2tldExvYWRpbmcoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0
U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZUxvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dT
dWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
YXJnZXREb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdl
YkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRpc3RpY3MpCi0gICAgSGFzU3RvcmFn
ZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9y
YWdlQWNjZXNzKSBBc3luYwotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpIC0+IChlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdl
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbikKKyAgICBIYXNTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQp
IC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBz
dWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4s
IHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGVu
dW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBlbnVt
OmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3du
KSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQogI2VuZGlmCiAKICAgICBBZGRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGlu
YXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucyk7CkBAIC04Nyw3ICs4Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgIFNldFdlYlByb2Nlc3NJ
ZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyKQog
Ci0gICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCi0gICAgV2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpCi0gICAgV2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgVmVjdG9yPHVpbnQ2NF90PiBw
YWdlcykKKyAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBh
Z2VJRCkKKyAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyAgICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5n
ZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGQxNGIxZGU5ZDkxLi40MDk3MTRkNjY3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmNwcApAQCAtNDgsNyArNDgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lT3JpZ2luKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBTZWN1cml0eU9yaWdpbiogb3JpZ2luKQogICAgIHJldHVybiB1
cmwucHJvdG9jb2xJc0RhdGEoKSB8fCB1cmwucHJvdG9jb2xJc0Jsb2IoKSB8fCAhb3JpZ2luIHx8
IG9yaWdpbi0+Y2FuUmVxdWVzdCh1cmwpOwogfQogCi1OZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdv
cmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9u
cyYmIG9wdGlvbnMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVycywg
VVJMJiYgdXJsLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVmbGln
aHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBT
VXBncmFkZUVuYWJsZWQsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNz
LCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUpCitOZXR3b3JrTG9hZENoZWNrZXI6Ok5ldHdvcmtM
b2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIEZldGNoT3B0aW9ucyYm
IG9wdGlvbnMsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBIVFRQSGVhZGVyTWFwJiYgb3JpZ2luYWxSZXF1ZXN0SGVhZGVy
cywgVVJMJiYgdXJsLCBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+JiYgc291cmNlT3JpZ2luLCBQcmVm
bGlnaHRQb2xpY3kgcHJlZmxpZ2h0UG9saWN5LCBTdHJpbmcmJiByZWZlcnJlciwgYm9vbCBpc0hU
VFBTVXBncmFkZUVuYWJsZWQsIGJvb2wgc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUpCiAgICAgOiBtX29wdGlvbnMoV1RGTW92ZShv
cHRpb25zKSkKICAgICAsIG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fbmV0d29ya1By
b2Nlc3MobmV0d29ya1Byb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrTG9hZENoZWNrZXIuaAppbmRleCAzMWQxMWMzYThhZS4uNTdkZjFkYTQ2ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2Vy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIu
aApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBOZXR3b3JrTG9hZENoZWNrZXIgOiBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8TmV0d29ya0xvYWRDaGVja2VyPiB7CiBwdWJsaWM6CiAgICAgZW51bSBjbGFz
cyBMb2FkVHlwZSA6IGJvb2wgeyBNYWluRnJhbWUsIE90aGVyIH07CiAKLSAgICBOZXR3b3JrTG9h
ZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmLCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmJiwgUEFMOjpT
ZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRU
UEhlYWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBX
ZWJDb3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNV
cGdyYWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2Fk
TWV0cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3Ro
ZXIpOworICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmJiwgVVJMJiYsIFJlZlB0cjxX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4mJiwgV2ViQ29yZTo6UHJlZmxpZ2h0UG9saWN5LCBTdHJp
bmcmJiByZWZlcnJlciwgYm9vbCBpc0hUVFBTVXBncmFkZUVuYWJsZWQgPSBmYWxzZSwgYm9vbCBz
aG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MgPSBmYWxzZSwgTG9hZFR5cGUgcmVx
dWVzdExvYWRUeXBlID0gTG9hZFR5cGU6Ok90aGVyKTsKICAgICB+TmV0d29ya0xvYWRDaGVja2Vy
KCk7CiAKICAgICBzdHJ1Y3QgUmVkaXJlY3Rpb25UcmlwbGV0IHsKQEAgLTEyNSw3ICsxMjUsNyBA
QCBwcml2YXRlOgogICAgIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IG1fc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CiAgICAg
UmVmPE5ldHdvcmtQcm9jZXNzPiBtX25ldHdvcmtQcm9jZXNzOwotICAgIHVpbnQ2NF90IG1fcGFn
ZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90
IG1fZnJhbWVJRDsKICAgICBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwIG1fb3JpZ2luYWxSZXF1ZXN0
SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JTIGNoZWNrcy4KICAgICBXZWJDb3JlOjpIVFRQSGVh
ZGVyTWFwIG1fZmlyc3RSZXF1ZXN0SGVhZGVyczsgLy8gTmVlZGVkIGZvciBDT1JTIGNoZWNrcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1l
dGVycy5oCmluZGV4IDg5NjM5OWQxMzMyLi44OTczMGNmOWZkMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2
ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrQWN0aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KQEAgLTM4LDcgKzM5LDcgQEAgZW51bSBjbGFzcyBQcmVjb25uZWN0T25seSB7
IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAg
ICB1aW50NjRfdCB3ZWJQYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
d2ViUGFnZUlEOwogICAgIHVpbnQ2NF90IHdlYkZyYW1lSUQgeyAwIH07CiAgICAgV1RGOjpQcm9j
ZXNzSUQgcGFyZW50UElEIHsgMCB9OwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBB
TDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGE1ZDZmNWNmY2M3Li5hYzRkMzJi
ZjJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTExNTUsNyArMTE1NSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc2V0Q2Fj
aGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2VzCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29tbWl0dGVk
Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6Y29tbWl0dGVkQ3Jv
c3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBuZXR3b3JrU3Rv
cmFnZVNlc3Npb24tPmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oZnJv
bURvbWFpbiwgdG9Eb21haW4sIHBhZ2VJRCk7CkBAIC0xOTU0LDcgKzE5NTQsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldChib29s
IGFsbG93cywgQ29tcGxldAogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2UoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAg
aWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91
bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47CkBAIC0xOTYyLDcgKzE5NjIsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNv
bnN0IFN0cmluZyYgbWVzcwogICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlKHdlYlBhZ2VJ
RCwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIFNob3VsZFNhbXBsZTo6Tm8pLCAwKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90
IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUgcmVzdWx0LCBTaG91bGRTYW1wbGUgc2hv
dWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
UmVzdWx0KFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBEaWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUgcmVz
dWx0LCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTk3MCw3ICsxOTcwLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3QK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQod2ViUGFnZUlELCBtZXNz
YWdlLCBkZXNjcmlwdGlvbiwgcmVzdWx0LCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90
IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgU2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFZhbHVlKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAo
IURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNh
bXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI2MTksNyArMjYxOSw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnJlbW92ZUtlcHRBbGl2ZUxvYWQoTmV0d29ya1Jlc291cmNlTG9hZGVyJiBsb2Fk
ZXIpCiAgICAgICAgIHNlc3Npb24tPnJlbW92ZUtlcHRBbGl2ZUxvYWQobG9hZGVyKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IG9sZFBhZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6
OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7CiAgICAgaWYgKCFw
YWdlSUQgfHwgIW9sZFBhZ2VJRCkgewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCBhZGQgcGFn
ZSB3aXRoIGludmFsaWQgaWQiKTsKQEAgLTI2NDQsNyArMjY0NCw3IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6
U2Vzc2lvbklECiAgICAgICAgIHN0b3JhZ2VNYW5hZ2VyLmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2Uob2xkUGFnZUlELCBwYWdlSUQpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQ
YWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFn
ZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIXBhZ2VJRCkgewog
ICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCByZW1vdmUgcGFnZSB3aXRoIGludmFsaWQgaWQiKTsK
QEAgLTI2NzQsNyArMjY3NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NXYXNE
aXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgIG5ldHdvcmtTZXNz
aW9uKHNlc3Npb25JRCktPnN0b3JhZ2VNYW5hZ2VyKCkucHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlv
bihjb25uZWN0aW9uKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Np
b25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgbmV3
U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlSURzKQordm9pZCBOZXR3b3Jr
UHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVj
dGlvbiwgUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8UGFnZUlkZW50
aWZpZXI+JiBwYWdlSURzKQogewogICAgIGF1dG8gY29ubmVjdGlvbklEID0gY29ubmVjdGlvbi51
bmlxdWVJRCgpOwogICAgIEFTU0VSVChtX3Nlc3Npb25CeUNvbm5lY3Rpb24uY29udGFpbnMoY29u
bmVjdGlvbklEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKaW5kZXggN2FjYjNmOTY3NWMuLmViZjNiN2ZlNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSA8V2ViQ29yZS9GZXRjaElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQktl
eURhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lEQlNlcnZlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWlu
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VySWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VydmljZVdvcmtlclR5cGVzLmg+CkBAIC0xMzYsOCArMTM3LDYgQEAgcHVi
bGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0gICAg
dXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90Owog
CiAgICAgTmV0d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1l
dGVycyYmKTsKQEAgLTE5MCw5ICsxODksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsK
IAogICAgIC8vIERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZy4KLSAgICB2b2lkIGxvZ0RpYWdu
b3N0aWNNZXNzYWdlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAgIHZv
aWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpE
aWFnbm9zdGljTG9nZ2luZ1Jlc3VsdFR5cGUsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAg
dm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZh
bHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7
CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNh
bnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBj
b25zdDsKQEAgLTI1OCw3ICsyNTcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb3BGcmFtZVVu
aXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29u
c3QgUmVkaXJlY3RlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0ZWRGcm9tRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJz
aXRlRGF0YShQQUw6OlNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wg
c2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYmKT4mJik7Ci0gICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExp
bmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJv
bURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjb21taXR0ZWRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWlu
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3Rp
bmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAjZW5kaWYK
QEAgLTI3MSwxMCArMjcwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRy
b2xsZWRCeUF1dG9tYXRpb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lv
bklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CiAKLSAgICB2
b2lkIHdlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQgd2ViUGFnZVdhc1Jl
bW92ZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9u
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7Cisg
ICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgd2ViUHJvY2Vzc1dhc0Rpc2Nv
bm5lY3RlZChJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHdlYlByb2Nlc3NTZXNzaW9uQ2hh
bmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYpOworICAgIHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlv
biYsIFBBTDo6U2Vzc2lvbklELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
Jik7CiAgICAgdm9pZCBnZXRMb2NhbFN0b3JhZ2VPcmlnaW5EZXRhaWxzKFBBTDo6U2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6Ok9yaWdpbkRldGFpbHM+JiYpPiYmKTsKIAogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgppbmRleCBkOWZlZTA3OGZlNy4uZjVlZjUzMDEzNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNz
YWdlcy5pbgpAQCAtMTMxLDcgKzEzMSw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExl
Z2FjeVJlY2VpdmVyIHsKICAgICBTZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFp
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVkaXJlY3RlZFRvRG9tYWluKSAtPiAoKSBB
c3luYwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0ZWRGcm9tRG9tYWluKSAtPiAoKSBBc3luYwog
ICAgIFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFp
biwgdWludDY0X3QgcGFnZUlEKSAtPiAoKSBBc3luYworICAgIENvbW1pdHRlZENyb3NzU2l0ZUxv
YWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
b0RvbWFpbiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKSAtPiAoKSBBc3luYwogICAg
IFNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRD
cm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBi
b29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCmluZGV4IDU4YWFjYjk5M2RiLi4zM2NkYzRkMTdkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5jcHAKQEAgLTEwNyw4ICsxMDcsMTEgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291
cmMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pZGVudGlmaWVyKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViUGFnZUlE
KSkKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gd2ViUGFnZUlEOworICAgIGRlY29kZXIg
Pj4gd2ViUGFnZUlEOworICAgIGlmICghd2ViUGFnZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgcmVzdWx0LndlYlBhZ2VJRCA9ICp3ZWJQYWdlSUQ7CiAKICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC53ZWJGcmFtZUlEKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGZlMjY1MzZmMjFjLi4wZDRmOWEyYTFhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTc0
LDE4ICsxNzQsMTggQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICAg
ICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPmNoZWNrKFJlc291cmNlUmVxdWVzdCB7IG9yaWdpbmFs
UmVxdWVzdCgpIH0sIHRoaXMsIFt0aGlzXSAoYXV0byYmIHJlc3VsdCkgewogICAgICAgICAgICAg
V1RGOjpzd2l0Y2hPbihyZXN1bHQsCiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJjZUVy
cm9yJiBlcnJvcikgewotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJzdGFydDogZXJyb3IgY2hlY2tpbmcgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAl
ZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCwgZXJyb3IuZG9tYWluID0gJXtw
dWJsaWN9cywgZXJyb3IuY29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWlu
UmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElE
LCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBlcnJvciBjaGVj
a2luZyAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQsIHBhcmVudFBJRCA9ICVkLCBlcnJvci5kb21haW4gPSAle3B1YmxpY31zLCBlcnJvci5jb2Rl
ID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNl
KCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCwgZXJyb3Iu
ZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoIWVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpCiAgICAgICAgICAgICAgICAgICAg
ICAgICB0aGlzLT5kaWRGYWlsTG9hZGluZyhlcnJvcik7CiAgICAgICAgICAgICAgICAgfSwKICAg
ICAgICAgICAgICAgICBbdGhpc10gKE5ldHdvcmtMb2FkQ2hlY2tlcjo6UmVkaXJlY3Rpb25Ucmlw
bGV0JiB0cmlwbGV0KSB7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMtPm1faXNXYWl0aW5nQ29u
dGludWVXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZWRSZWRpcmVjdCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIHRoaXMtPndpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QoV1RGTW92ZSh0cmlwbGV0
LnJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQucmVkaXJlY3RSZXF1ZXN0KSwgV1RGTW92ZSh0cmlw
bGV0LnJlZGlyZWN0UmVzcG9uc2UpKTsKLSAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgic3RhcnQ6IHN5bnRoZXRpYyByZWRpcmVjdCBzZW50IGJlY2F1c2UgcmVxdWVz
dCBVUkwgd2FzIG1vZGlmaWVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlz
U3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlz
LT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5w
YXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydDogc3ludGhldGljIHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVSTCB3YXMgbW9k
aWZpZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCks
IG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+
aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFy
ZW50UElEKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLT5j
YW5Vc2VDYWNoZShyZXF1ZXN0KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJ
RCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+
aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBm
b3IgcmVzb3VyY2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJv
bm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUlu
dDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwg
dGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRl
cnMucGFyZW50UElEKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPnJldHJpZXZlQ2Fj
aGVFbnRyeShyZXF1ZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMTk4LDcgKzE5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNl
TG9hZGVyOjpzdGFydCgpCiAgICAgfQogICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhhdCBjb2RlIHBh
dGggb25jZSBtX25ldHdvcmtMb2FkQ2hlY2tlciBpcyB1c2VkIGZvciBhbGwgbmV0d29yayBsb2Fk
cy4KICAgICBpZiAoY2FuVXNlQ2FjaGUob3JpZ2luYWxSZXF1ZXN0KCkpKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2Ug
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBw
YXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInN0YXJ0OiBDaGVja2luZyBjYWNoZSBmb3IgcmVzb3VyY2UgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNT
eW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKICAgICAgICAgcmV0cmlldmVD
YWNoZUVudHJ5KG9yaWdpbmFsUmVxdWVzdCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTIyNywxMyArMjI3LDEzIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNh
Y2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgICAgICBsb2FkZXIt
PmxvZ1Nsb3dDYWNoZVJldHJpZXZlSWZOZWVkZWQoaW5mbyk7CiAKICAgICAgICAgaWYgKCFlbnRy
eSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVu
dHJ5OiBSZXNvdXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2Ug
PSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3Vy
Y2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2Ugbm90IGluIGNhY2hlIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAg
ICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJz
dExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICBpZiAoZW50cnktPmhhc1JlYWNoZWRQ
cmV2YWxlbnRSZXNvdXJjZUFnZUNhcCgpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIGhhcyByZWFjaGVkIHByZXZhbGVu
dCByZXNvdXJjZSBhZ2UgY2FwIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlz
U3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlz
U3luY2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRy
aWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIGhhcyByZWFjaGVkIHByZXZhbGVudCByZXNvdXJjZSBh
Z2UgY2FwIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNT
eW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIG1fY2FjaGVFbnRyeUZvck1heEFnZUNhcFZhbGlk
YXRpb24gPSBXVEZNb3ZlKGVudHJ5KTsKICAgICAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXZh
bGlkYXRpb25SZXF1ZXN0ID0gb3JpZ2luYWxSZXF1ZXN0KCk7CiAgICAgICAgICAgICBsb2FkZXIt
PnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgRmlyc3RMb2Fk
OjpZZXMpOwpAQCAtMjQxLDIxICsyNDEsMjEgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICBpZiAoZW50cnktPnJlZGlyZWN0UmVxdWVzdCgpKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IEhh
bmRsaW5nIHJlZGlyZWN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3lu
Y2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2
ZUNhY2hlRW50cnk6IEhhbmRsaW5nIHJlZGlyZWN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291
cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRl
ci0+ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3RGb3JDYWNoZUVudHJ5KFdURk1vdmUocmVxdWVzdCks
IFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBpZiAobG9hZGVyLT5tX3BhcmFtZXRlcnMubmVlZHNDZXJ0aWZpY2F0ZUluZm8gJiYgIWVudHJ5
LT5yZXNwb25zZSgpLmNlcnRpZmljYXRlSW5mbygpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIGRvZXMgbm90IGhhdmUg
cmVxdWlyZWQgY2VydGlmaWNhdGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwg
aXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwg
aXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJl
dHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBjZXJ0aWZp
Y2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3lu
Y2hyb25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXItPnN0YXJ0TmV0d29ya0xvYWQoV1RGTW92
ZShyZXF1ZXN0KSwgRmlyc3RMb2FkOjpZZXMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGlmIChlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkgfHwgcmVxdWVzdC5jYWNo
ZVBvbGljeSgpID09IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZWZyZXNo
QW55Q2FjaGVEYXRhKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRy
aWV2ZUNhY2hlRW50cnk6IFZhbGlkYXRpbmcgY2FjaGUgZW50cnkgKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNN
YWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwg
aXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogVmFsaWRhdGluZyBjYWNoZSBlbnRy
eSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hy
b25vdXMoKSk7CiAgICAgICAgICAgICBsb2FkZXItPnZhbGlkYXRlQ2FjaGVFbnRyeShXVEZNb3Zl
KGVudHJ5KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXRyaWV2ZWQgcmVzb3VyY2Ug
ZnJvbSBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50
cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9tIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgbG9hZGVy
LT5kaWRSZXRyaWV2ZUNhY2hlRW50cnkoV1RGTW92ZShlbnRyeSkpOwogICAgIH0pOwogfQpAQCAt
MjYzLDcgKzI2Myw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hl
RW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgRmly
c3RMb2FkIGxvYWQpCiB7CiAgICAgaWYgKGxvYWQgPT0gRmlyc3RMb2FkOjpZZXMpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWlu
UmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogCiAgICAgICAgIGNv
bnN1bWVTYW5kYm94RXh0ZW5zaW9ucygpOwogCkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0TmV0d29ya0xvYWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgRmlyc3RMb2EKICAgICB9CiAgICAgaWYgKCFuZXR3b3JrU2Vzc2lvbikgewogICAgICAg
ICBXVEZMb2dBbHdheXMoIkF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEg
c2Vzc2lvbiAoaWQ9JSIgUFJJdTY0ICIpIHRoYXQgZG9lcyBub3QgZXhpc3QuIiwgcGFyYW1ldGVy
cy5zZXNzaW9uSUQuc2Vzc2lvbklEKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiBBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgTmV0d29ya0xv
YWQgd2l0aCBhIHNlc3Npb24gdGhhdCBkb2VzIG5vdCBleGlzdCAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzZXNz
aW9uSUQ9JSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJz
LndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25J
RC5zZXNzaW9uSUQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0
YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEg
c2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQ
Ukl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcGFyYW1ldGVycy5zZXNzaW9u
SUQuc2Vzc2lvbklEKCkpOwogICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCku
bG9nRGlhZ25vc3RpY01lc3NhZ2UobV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nS2V5czo6aW52YWxpZFNlc3Npb25JREtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGU6Ok5vKTsKICAgICAgICAgZGlkRmFpbExvYWRpbmcoaW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVy
bCgpKSk7CiAgICAgICAgIHJldHVybjsKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGaXJzdExvYQogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdCk7CiAg
ICAgbV9uZXR3b3JrTG9hZCA9IHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCAm
bV9jb25uZWN0aW9uLT5ibG9iUmVnaXN0cnkoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgKm5ldHdv
cmtTZXNzaW9uKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xv
YWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIsIGRlc2NyaXB0aW9uID0gJXtwdWJsaWN9cykiLCBtX3BhcmFtZXRl
cnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
ZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBt
X25ldHdvcmtMb2FkLT5kZXNjcmlwdGlvbigpLnV0ZjgoKS5kYXRhKCkpOwogfQogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cChMb2FkUmVzdWx0IHJlc3VsdCkKQEAgLTMyMiw3
ICszMjIsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y2xlYW51cChMb2FkUmVzdWx0
IHJlc3VsdCkKIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnZlcnRUb0Rvd25sb2Fk
KERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSRUxFQVNFX0xPRyhMb2Fk
aW5nLCAiQ29udmVydGluZyBOZXR3b3JrUmVzb3VyY2VMb2FkZXIgJXAgdG8gZG93bmxvYWQgJSIg
UFJJdTY0ICIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCBkb3dubG9hZElELmRvd25sb2FkSUQoKSwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiQ29udmVydGluZyBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIgJXAgdG8gZG93bmxvYWQgJSIgUFJJdTY0ICIgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCB0aGlzLCBkb3dubG9hZElELmRvd25sb2FkSUQoKSwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIpOwogICAgIAogICAgIC8vIFRoaXMgY2FuIGhhcHBlbiBpZiB0aGUgcmVzb3VyY2Ug
Y2FtZSBmcm9tIHRoZSBkaXNrIGNhY2hlLgogICAgIGlmICghbV9uZXR3b3JrTG9hZCkgewpAQCAt
MzQwLDcgKzM0MCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjphYm9ydCgpCiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImFib3J0OiBDYW5jZWxpbmcgcmVzb3VyY2UgbG9hZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsCi0gICAgICAg
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFt
ZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsK
IAogICAgIGlmIChtX3BhcmFtZXRlcnMub3B0aW9ucy5rZWVwQWxpdmUgJiYgbV9yZXNwb25zZS5p
c051bGwoKSAmJiAhbV9pc0tlcHRBbGl2ZSkgewogICAgICAgICBtX2lzS2VwdEFsaXZlID0gdHJ1
ZTsKQEAgLTQyNSw3ICs0MjUsNyBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c2hvdWxk
SW50ZXJydXB0TG9hZEZvckNTUEZyYW1lQW5jZXN0b3JzT3JYRnJhbWVPcHRpbwogCiB2b2lkIE5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2Um
JiByZWNlaXZlZFJlc3BvbnNlLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3Bv
bnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBodHRwU3RhdHVzQ29kZSA9ICVkLCBsZW5ndGggPSAlIiBQUklk
NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHJlY2VpdmVkUmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUo
KSwgcmVjZWl2ZWRSZXNwb25zZS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBodHRw
U3RhdHVzQ29kZSA9ICVkLCBsZW5ndGggPSAlIiBQUklkNjQgIikiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMu
aWRlbnRpZmllciwgcmVjZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJl
c3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKTsKIAogICAgIG1fcmVzcG9uc2UgPSBXVEZN
b3ZlKHJlY2VpdmVkUmVzcG9uc2UpOwogCkBAIC01MDUsNyArNTA1LDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVj
ZWl2ZWRSZXNwb24KIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVy
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwb3J0ZWRFbmNvZGVkRGF0YUxlbmd0
aCkKIHsKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVCdWZmZXI6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgbV9udW1CeXRlc1JlY2Vp
dmVkICs9IGJ1ZmZlci0+c2l6ZSgpOwogCiAgICAgQVNTRVJUKCFtX2NhY2hlRW50cnlGb3JWYWxp
ZGF0aW9uKTsKQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZUJ1ZmZlcihSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgaW50IHJlcAogCiB2
b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGggPSAlemQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCBtX251bUJ5dGVzUmVjZWl2ZWQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCki
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9udW1CeXRlc1JlY2VpdmVkKTsKIAogICAg
IGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAgICAgICAgbV9j
b25uZWN0aW9uLT5hZGROZXR3b3JrTG9hZEluZm9ybWF0aW9uTWV0cmljcyhpZGVudGlmaWVyKCks
IG5ldHdvcmtMb2FkTWV0cmljcyk7CkBAIC01NjksNyArNTY5LDcgQEAgdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBu
ZXR3b3JrTG8KIAogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxMb2FkaW5nKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZEZhaWxMb2FkaW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc1RpbWVvdXQgPSAlZCwgaXNDYW5jZWxs
YXRpb24gPSAlZCwgaXNBY2Nlc3NDb250cm9sID0gJWQsIGVyckNvZGUgPSAlZCkiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIGVycm9yLmlzVGltZW91dCgpLCBlcnJvci5pc0NhbmNlbGxhdGlvbigpLCBlcnJv
ci5pc0FjY2Vzc0NvbnRyb2woKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZEZhaWxMb2FkaW5nOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc1RpbWVvdXQgPSAl
ZCwgaXNDYW5jZWxsYXRpb24gPSAlZCwgaXNBY2Nlc3NDb250cm9sID0gJWQsIGVyckNvZGUgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9y
LmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlzQWNjZXNzQ29udHJvbCgpLCBlcnJvci5lcnJvckNv
ZGUoKSk7CiAKICAgICBpZiAoc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzKCkp
CiAgICAgICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlTmV0d29ya0xvYWRJbmZvcm1hdGlvbihpZGVu
dGlmaWVyKCkpOwpAQCAtNzMxLDcgKzczMSw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpjb250aW51ZVdpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjb250aW51ZVdp
bGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKIAogICAgIG1faXNBbGxvd2VkVG9B
c2tVc2VyRm9yQ3JlZGVudGlhbHMgPSBpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFsczsK
IApAQCAtOTg4LDYgKzk4OCwxMSBAQCBzdGF0aWMgU3RyaW5nIGVzY2FwZUlERm9ySlNPTihjb25z
dCBPcHRpb25hbDx1aW50NjRfdD4mIHZhbHVlKQogICAgIHJldHVybiB2YWx1ZSA/IFN0cmluZzo6
bnVtYmVyKHZhbHVlLnZhbHVlKCkpIDogU3RyaW5nKCJOb25lIl9zKTsKIH07CiAKK3N0YXRpYyBT
dHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiYgdmFs
dWUpCit7CisgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUtPnRvVUludDY0
KCkpIDogU3RyaW5nKCJOb25lIl9zKTsKK307CisKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVy
Ojpsb2dDb29raWVJbmZvcm1hdGlvbigpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHNob3VsZExvZ0Nv
b2tpZUluZm9ybWF0aW9uKG1fY29ubmVjdGlvbiwgc2Vzc2lvbklEKCkpKTsKQEAgLTk5OCw3ICsx
MDAzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9u
KCkgY29uc3QKICAgICBsb2dDb29raWVJbmZvcm1hdGlvbihtX2Nvbm5lY3Rpb24sICJOZXR3b3Jr
UmVzb3VyY2VMb2FkZXIiLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqPih0aGlzKSwgKm5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiwgb3JpZ2luYWxSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUob3JpZ2luYWxSZXF1ZXN0KCkpLCBvcmlnaW5hbFJl
cXVlc3QoKS51cmwoKSwgb3JpZ2luYWxSZXF1ZXN0KCkuaHR0cFJlZmVycmVyKCksIGZyYW1lSUQo
KSwgcGFnZUlEKCksIGlkZW50aWZpZXIoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRD
b29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRl
bnRpZmllcikKK3N0YXRpYyB2b2lkIGxvZ0Jsb2NrZWRDb29raWVJbmZvcm1hdGlvbihOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
Y29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAgICBB
U1NFUlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbihj
b25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApAQCAtMTAy
NSw3ICsxMDMwLDcgQEAgc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW8KICN1bmRlZiBMT0NBTF9MT0df
SUZfQUxMT1dFRAogfQogCi1zdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFs
KE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVy
KQorc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5hbChOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
dm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAg
ICBBU1NFUlQoTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRMb2dDb29raWVJbmZvcm1hdGlv
bihjb25uZWN0aW9uLCBuZXR3b3JrU3RvcmFnZVNlc3Npb24uc2Vzc2lvbklEKCkpKTsKIApAQCAt
MTA4Niw3ICsxMDkxLDcgQEAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb25JbnRlcm5h
bChOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGkKICN1bmRlZiBMT0NBTF9M
T0dfSUZfQUxMT1dFRAogfQogCi12b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2ll
SW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNv
bnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCit2b2lk
IE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0
IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCiB7CiAgICAgQVNTRVJUKHNob3VsZExv
Z0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNz
aW9uSUQoKSkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuaAppbmRleCBhOGEzMDA1YzE0Mi4uYThmNmQzMTU3OTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
ZXIuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnNlc3Npb25JRDsgfQogICAgIFJlc291
cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyOyB9CiAgICAgdWludDY0X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KIAog
ICAgIHN0cnVjdCBTeW5jaHJvbm91c0xvYWREYXRhOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVi
bGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwot
ICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0
LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0
cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGlj
IHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZl
cnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAg
ICB2b2lkIGRpc2FibGVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0NhcHR1cmUoKSB7IG1fc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA5N2UwYjI0NDA3OC4uNTUzY2JhZDE5YmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAKQEAgLTQ1LDQwICs0
NSw0MCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlZGlyZWN0UmVz
cG9uc2U6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2Ug
fSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2
ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURp
ZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3Bv
bnNlLCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2lkZW50aWZp
ZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyBy
ZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVu
dGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFz
azo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90
IGVuY29kZWREYXRhTGVuZ3RoKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWRE
YXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6
OkRpZFJlY2VpdmVEYXRhIHsgZGF0YSwgZW5jb2RlZERhdGFMZW5ndGggfSwgbV9pZGVudGlmaWVy
LmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlk
UmVjZWl2ZUZvcm1EYXRhKGNvbnN0IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmIGZvcm1EYXRhKQog
ewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWRSZWNlaXZlRm9ybURhdGEgeyBmb3JtRGF0YSB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJ
ZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRm9ybURhdGEgeyBmb3JtRGF0YSB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRGaW5pc2goKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZEZpbmlzaEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZpbmlzaCB7IH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZEZpbmlzaCB7
IH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiZGlkRmFpbEZldGNoOiBmZXRjaElkZW50aWZp
ZXI6ICVzIiwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g6OkRpZEZhaWwgeyBlcnJvciB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZl
dGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkTm90
SGFuZGxlKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWROb3RIYW5kbGVGZXRj
aDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9n
Z2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBtX2lkZW50
aWZpZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIv
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IGQzMmNkNDYzODll
Li45MWZkYzcxNTk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAK
QEAgLTE1OSw3ICsxNTksNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRj
aChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aQogICAgIGF1dG8qIHdv
cmtlciA9IHNlcnZlcigpLmFjdGl2ZVdvcmtlckZyb21SZWdpc3RyYXRpb25JRChzZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllcik7CiAgICAgaWYgKCF3b3JrZXIpIHsKICAgICAgICAg
U1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0
Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgLT4gRGlkTm90SGFuZGxlIGJlY2F1c2Ugbm8gYWN0aXZl
IHdvcmtlciIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
Ci0gICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNl
V29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byBzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9
IHdvcmtlci0+aWRlbnRpZmllcigpOwpAQCAtMTcwLDEzICsxNzAsMTMgQEAgdm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbklkZW50
aWZpZXIgc2VydmkKIAogICAgICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgICAgIFNXU0VS
VkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBm
ZXRjaElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIHdvcmtlciBkaWQgbm90IGJl
Y29tZSBhY3RpdmF0ZWQiLCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwotICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6
U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNo
SWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBh
dXRvKiB3b3JrZXIgPSBzZXJ2ZXIoKS53b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKICAgICAgICAgaWYgKCF3b3JrZXIpIHsKLSAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxl
IHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAgbV9jb250ZW50
Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRO
b3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKQEAgLTE5Miw3ICsxOTIsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aQogICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiY+
KCpjb250ZXh0Q29ubmVjdGlvbikuc3RhcnRGZXRjaChtX3Nlc3Npb25JRCwgbV9jb250ZW50Q29u
bmVjdGlvbi5nZXQoKSwgdGhpcy0+aWRlbnRpZmllcigpLCBmZXRjaElkZW50aWZpZXIsIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCByZXF1ZXN0LCBvcHRpb25zLCBmb3JtRGF0YSwgcmVmZXJyZXIp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJ
T05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlm
aWVyOiAlcyBEaWROb3RIYW5kbGUgYmVjYXVzZSBmYWlsZWQgdG8gcnVuIHNlcnZpY2Ugd29ya2Vy
IiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAg
ICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICAgICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRp
Zmllcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0pOwogICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2Vy
LmNwcAppbmRleCAwMDM5NDUwNTNmNS4uMGJlZDY5NzY5NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNw
cApAQCAtNDk0LDcgKzQ5NCw3IEBAIFN0b3JhZ2VNYW5hZ2VyOjp+U3RvcmFnZU1hbmFnZXIoKQog
ewogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFj
ZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK3Zv
aWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVu
dGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewogICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgcXVvdGFJbkJ5dGVzXSgpIG11dGFibGUgewogICAgICAgICBp
ZiAobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlE
KSkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsCiAgICAgfSk7CiB9
CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1
aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlE
KQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRF0gewogICAgICAgICBBU1NFUlQobV9zZXNzaW9u
U3RvcmFnZU5hbWVzcGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7CkBAIC01MTMs
NyArNTEzLDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCkKICAgICB9KTsKIH0KIAotdm9pZCBT
dG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlv
bih1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlvbiYgYWxsb3dlZENv
bm5lY3Rpb24pCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VDb25uZWN0aW9uKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBD
OjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKIHsKICAgICBhdXRvIGFsbG93ZWRDb25u
ZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVjdGlvbi51bmlxdWVJRCgpOwogICAgIG1fcXVldWUtPmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFsbG93ZWRDb25u
ZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3BhY2VJRF0oKSBtdXRhYmxlIHsKQEAgLTUyMyw3ICs1MjMs
NyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZwogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VN
YW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVp
bnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVj
dGlvbikKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5h
bWVzcGFjZUNvbm5lY3Rpb24oUGFnZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6
OkNvbm5lY3Rpb24mIGFsbG93ZWRDb25uZWN0aW9uKQogewogICAgIGF1dG8gYWxsb3dlZENvbm5l
Y3Rpb25JRCA9IGFsbG93ZWRDb25uZWN0aW9uLnVuaXF1ZUlEKCk7CiAgICAgbV9xdWV1ZS0+ZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5l
Y3Rpb25JRCwgc3RvcmFnZU5hbWVzcGFjZUlEXSgpIG11dGFibGUgewpAQCAtNTMzLDcgKzUzMyw3
IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZUNvbm5lY3Rpb24odWludDY0X3Qgc3RvCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1h
bmFnZXI6OmNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVz
cGFjZUlELCB1aW50NjRfdCBuZXdTdG9yYWdlTmFtZXNwYWNlSUQpCit2b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VO
YW1lc3BhY2VJRCwgUGFnZUlkZW50aWZpZXIgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAg
IG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHN0b3JhZ2VOYW1lc3BhY2VJRCwgbmV3U3RvcmFnZU5hbWVzcGFjZUlEXSB7CiAgICAgICAgIFNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VzLmdldChzdG9yYWdlTmFtZXNwYWNlSUQpOwpAQCAtNTY2LDcgKzU2
Niw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6OnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oSVBD
OjpDb25uZWN0aW9uJiBjb25uZWN0aW9uKQogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb25u
ZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFpcnNUb1JlbW92ZSkKICAgICAgICAgICAgIG1fc3RvcmFn
ZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92ZShwYWlyKTsKIAotICAgICAgICBWZWN0b3I8dWludDY0
X3Q+IHNlc3Npb25TdG9yYWdlTmFtZVNwYWNlSURzVG9SZW1vdmU7CisgICAgICAgIFZlY3RvcjxQ
YWdlSWRlbnRpZmllcj4gc2Vzc2lvblN0b3JhZ2VOYW1lU3BhY2VJRHNUb1JlbW92ZTsKICAgICAg
ICAgZm9yIChhdXRvJiBzZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2VzKSB7CiAgICAgICAgICAgICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFs
dWUtPmFsbG93ZWRDb25uZWN0aW9ucygpLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpCiAgICAgICAg
ICAgICAgICAgc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPnJlbW92ZUFsbG93ZWRDb25u
ZWN0aW9uKGNvbm5lY3Rpb25JRCk7CkBAIC03NzksNyArNzc5LDcgQEAgdm9pZCBTdG9yYWdlTWFu
YWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9jYWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwKIAogdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2
NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgU2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmln
aW5EYXRhKQogewotICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc3Rv
cmFnZU1hcElELCBzdG9yYWdlTmFtZXNwYWNlSUQsIHNlY3VyaXR5T3JpZ2luRGF0YSA9IHNlY3Vy
aXR5T3JpZ2luRGF0YS5pc29sYXRlZENvcHkoKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9u
SUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlEKCksIHN0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFj
ZUlEID0gbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihzdG9yYWdlTmFt
ZXNwYWNlSUQpLCBzZWN1cml0eU9yaWdpbkRhdGEgPSBzZWN1cml0eU9yaWdpbkRhdGEuaXNvbGF0
ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChtX2lzRXBoZW1lcmFsKSB7CiAgICAg
ICAgICAgICBtX2VwaGVtZXJhbFN0b3JhZ2UuYWRkKHNlY3VyaXR5T3JpZ2luRGF0YSwgV2ViQ29y
ZTo6U3RvcmFnZU1hcDo6Y3JlYXRlKGxvY2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzKSk7
CiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5oCmluZGV4IGE4ODgzMzJlZmNmLi41
ZTY1ZTUwMzhmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNTAsMTEgKzUxLDExIEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVmPFN0b3JhZ2VNYW5hZ2VyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBsb2NhbFN0
b3JhZ2VEaXJlY3RvcnkpOwogICAgIH5TdG9yYWdlTWFuYWdlcigpOwogCi0gICAgdm9pZCBjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNlSUQsIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcyk7Ci0gICAgdm9pZCBkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlEKTsKLSAgICB2b2lkIGFkZEFsbG93ZWRT
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qgc3RvcmFnZU5hbWVzcGFj
ZUlELCBJUEM6OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIHJlbW92ZUFsbG93ZWRTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6
OkNvbm5lY3Rpb24mKTsKLSAgICB2b2lkIGNsb25lU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UodWlu
dDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdTdG9yYWdlTmFtZXNwYWNlSUQp
OworICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAg
IHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgdm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2VDb25uZWN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1l
c3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7CisgICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHN0b3Jh
Z2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7CisgICAgdm9pZCBjbG9uZVNlc3Npb25T
dG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKIAogICAg
IHZvaWQgcHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mKTsKICAgICB2
b2lkIHdhaXRVbnRpbFdyaXRlc0ZpbmlzaGVkKCk7CkBAIC0xMDcsNyArMTA4LDcgQEAgcHJpdmF0
ZToKICAgICBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50NjRfdCwgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiwgUmVmUHRyPFRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZT4+IG1fdHJhbnNp
ZW50TG9jYWxTdG9yYWdlTmFtZXNwYWNlczsKIAogICAgIGNsYXNzIFNlc3Npb25TdG9yYWdlTmFt
ZXNwYWNlOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZT4+IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZT4+IG1fc2Vzc2lv
blN0b3JhZ2VOYW1lc3BhY2VzOwogCiAgICAgSGFzaE1hcDxzdGQ6OnBhaXI8SVBDOjpDb25uZWN0
aW9uOjpVbmlxdWVJRCwgdWludDY0X3Q+LCBSZWZQdHI8U3RvcmFnZUFyZWE+PiBtX3N0b3JhZ2VB
cmVhc0J5Q29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlLmgKaW5kZXggYzdmMzg2YjNkN2MuLjhiYmMxNjk3ODU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVFbnRyeS5oIgogI2luY2x1
ZGUgIk5ldHdvcmtDYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4K
ICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC04NCw3ICs4NSw3IEBAIGVudW0gY2xhc3Mg
VXNlRGVjaXNpb24gewogICAgIE5vRHVlVG9FeHBpcmVkUmVkaXJlY3QKIH07CiAKLXVzaW5nIEds
b2JhbEZyYW1lSUQgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyp3ZWJQYWdlSUQqLywgdWludDY0X3Qg
Lyp3ZWJGcmFtZUlEKi8+OwordXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgLyp3ZWJGcmFtZUlEKi8+OwogCiBjbGFzcyBDYWNo
ZSA6IHB1YmxpYyBSZWZDb3VudGVkPENhY2hlPiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgK
aW5kZXggOTY1YzZmYTY2NGIuLjJkZDBlN2Q0NmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00
Miw3ICs0Miw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uQ29jb2E7CiBjbGFzcyBOZXR3b3JrRGF0
YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogICAgIGZyaWVuZCBj
bGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29y
a0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFz
a0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlm
ZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1Nu
aWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNv
bm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25h
bDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorICAgIHN0
YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24s
IE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25p
ZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRF
bmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNG
b3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBu
ZXR3b3JrQWN0aXZpdHlUcmFja2VyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgTmV0d29ya0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlE
LCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNo
b3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5h
dmlnYXRpb24sIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIpKTsKICAgICB9CkBAIC03MCwxMiArNzAs
MTIgQEAgcHVibGljOgogICAgIFdlYkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xv
YWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9hZE1ldHJpY3M7IH0KIAogICAgIHVpbnQ2
NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSUQ7IH07Ci0gICAgdWludDY0X3Qg
cGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH07CisgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH07CiAKICAgICBTdHJp
bmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3Jr
RGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRl
bnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ks
IGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVj
dE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9s
aWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBk
YXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5
VHJhY2tlcj4pOwogCiAgICAgYm9vbCB0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RU
b0luZmVyZmFjZUlmTmVlZGVkKF9fc3Ryb25nIE5TVVJMUmVxdWVzdComLCBib29sIHNob3VsZENv
bnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZik7CkBAIC05Myw3ICs5
Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rh
c2s7CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNz
OwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCiAgICAgYm9vbCBtX2hhc0JlZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tp
ZVN0b3JhZ2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMzVlNDQzYjllZTku
LjI4YTA1ZTgwZGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0KQEAgLTE2MCw3ICsxNjAsNyBAQCBz
dGF0aWMgdm9pZCB1cGRhdGVUYXNrV2l0aEZpcnN0UGFydHlGb3JTYW1lU2l0ZUNvb2tpZXMoTlNV
UkxTZXNzaW9uRGF0YVRhc2sqIHRhcwogI2VuZGlmCiB9CiAKLU5ldHdvcmtEYXRhVGFza0NvY29h
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0Rh
dGFUYXNrQ2xpZW50JiBjbGllbnQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdFdpdGhDcmVkZW50aWFscywgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwg
V2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRTbmlmZiwgV2ViQ29y
ZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3kgc2hvdWxkQ29udGVudEVuY29kaW5nU25p
ZmYsIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29u
bmVjdE9ubHkgc2hvdWxkUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFt
ZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IG5ldHdvcmtBY3Rp
dml0eVRyYWNrZXIpCitOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2Eo
TmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6
OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRl
bnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29s
IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5
IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0
aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFj
a2VyKQogICAgIDogTmV0d29ya0RhdGFUYXNrKHNlc3Npb24sIGNsaWVudCwgcmVxdWVzdFdpdGhD
cmVkZW50aWFscywgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIHNob3VsZENsZWFyUmVmZXJyZXJP
bkhUVFBTVG9IVFRQUmVkaXJlY3QsIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uKQog
ICAgICwgbV9mcmFtZUlEKGZyYW1lSUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC0yMzYs
NyArMjM2LDcgQEAgTmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5l
dHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVQKICAgICBpZiAoc2hvdWxkQmxvY2tD
b29raWVzKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIGlmIChtX3Nlc3Np
b24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgICAgICBSRUxFQVNFX0xP
R19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlE
ID0gJWxsdSwgdGFza0lEID0gJWx1OiBCbG9ja2luZyBjb29raWVzIGZvciBVUkwgJXMiLCB0aGlz
LCBwYWdlSUQsIGZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJd
LCBuc1JlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOworICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAt
IE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxs
dSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogQmxvY2tpbmcgY29va2llcyBmb3IgVVJM
ICVzIiwgdGhpcywgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVtt
X3Rhc2sgdGFza0lkZW50aWZpZXJdLCBuc1JlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhT
dHJpbmcpOwogI2Vsc2UKICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBCbG9ja2lu
ZyBjb29raWVzIGZvciBVUkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0
LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbmRpZgpAQCAtMzY2LDcgKzM2Niw3
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmCiAgICAgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMg
PSBtX3N0b3JlZENyZWRlbnRpYWxzUG9saWN5ID09IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
UG9saWN5OjpFcGhlbWVyYWxTdGF0ZWxlc3NDb29raWVsZXNzIHx8IG1fc2Vzc2lvbi0+bmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCkuc2hvdWxkQmxvY2tDb29raWVzKHJlcXVlc3QsIG1fZnJhbWVJRCwg
bV9wYWdlSUQpOwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGlmIChtX3Nlc3Npb24t
PnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKCkpCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGKGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBw
YWdlSUQgPSAlbGx1LCBmcmFtZUlEID0gJWxsdSwgdGFza0lEID0gJWx1OiAlcyBjb29raWVzIGZv
ciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRCwgbV9mcmFtZUlELCAodW5zaWduZWQg
bG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29va2llcyA/ICJCbG9j
a2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0g
JWxsdSwgdGFza0lEID0gJWx1OiAlcyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlz
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sg
dGFza0lkZW50aWZpZXJdLCAoc2hvdWxkQmxvY2tDb29raWVzID8gIkJsb2NraW5nIiA6ICJOb3Qg
YmxvY2tpbmciKSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKICNlbHNl
CiAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSAlcyBjb29raWVzIGZvciByZWRpcmVjdCBV
UkwgJXMiLCBbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29va2llcyA/ICJC
bG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7CiAjZW5kaWYKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJgogICAgIGlmICghc2hvdWxkQmxvY2tDb29raWVzKSB7CiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgICAgIGlmIChtX3Nlc3Npb24tPnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9u
KCkpCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQo
KSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJl
ZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9
ICVsbHUsIHRhc2tJRCA9ICVsdTogTm90IHBhcnRpdGlvbmluZyBjb29raWVzIGZvciByZWRpcmVj
dCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRCwgbV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90
YXNrIHRhc2tJZGVudGlmaWVyXSwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVk
aXJlY3Rpb246OmxvZ0Nvb2tpZUluZm9ybWF0aW9uOiBwYWdlSUQgPSAlbGx1LCBmcmFtZUlEID0g
JWxsdSwgdGFza0lEID0gJWx1OiBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMgZm9yIHJlZGlyZWN0
IFVSTCAlcyIsIHRoaXMsIG1fcGFnZUlELnRvVUludDY0KCksIG1fZnJhbWVJRCwgKHVuc2lnbmVk
IGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CiAjZWxzZQogICAgICAgICBMT0coTmV0d29ya1Nlc3Npb24sICIlbGx1IE5v
dCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNr
SWRlbnRpZmllcl0sIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCBjNGZiMDBiMDgz
Yy4uM2VkZjgyYWRmM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
QEAgLTE4Niw2ICsxODYsMzYgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZv
aWQgc2VuZFdpdGhSZXBseShUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgRnVu
Y3Rpb25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4mJiByZXBseUhh
bmRsZXIpOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3Nh
Z2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHksIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNl
Y29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09w
dGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBi
b29sIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5KHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25z
ID0geyB9KTsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDLCB0eXBl
bmFtZSBVPgorICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29t
cGxldGlvbkhhbmRsZXIsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCA9IHsgfSkK
KyAgICB7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseTxULCBDPihXVEZNb3ZlKG1lc3NhZ2Up
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsK
KyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBi
b29sIHNlbmQoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwg
T3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHNlbmQ8VD4oV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
LCBzZW5kT3B0aW9ucyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5
cGVuYW1lIFU+CisgICAgdm9pZCBzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCBPYmplY3RJZGVu
dGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIEZ1bmN0aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRj
aGVyLCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPHR5cGVuYW1lIENvZGluZ1R5cGU8dHlwZW5hbWUg
VDo6UmVwbHk+OjpUeXBlPik+JiYgcmVwbHlIYW5kbGVyKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHNlbmRXaXRoUmVwbHk8VD4oV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpLCByZXBseURpc3BhdGNoZXIsIFdURk1vdmUocmVwbHlIYW5kbGVyKSk7CisgICAgfQorICAg
IAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCBzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmll
cjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgp
LCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKKyAgICB7
CisgICAgICAgIHJldHVybiBzZW5kU3luYzxUPihXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJl
cGx5KSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCB0aW1lb3V0LCBzZW5kU3luY09wdGlvbnMp
OworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAg
IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkoT2JqZWN0SWRlbnRpZmllcjxVPiBk
ZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQsIE9wdGlvblNldDxXYWl0Rm9yT3B0aW9uPiB3
YWl0Rm9yT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIHJldHVybiB3YWl0Rm9yQW5kRGlz
cGF0Y2hJbW1lZGlhdGVseTxUPihkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHdh
aXRGb3JPcHRpb25zKTsKKyAgICB9CiAKICAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVl
X3B0cjxFbmNvZGVyPiwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zKTsKICAgICB2
b2lkIHNlbmRNZXNzYWdlV2l0aFJlcGx5KHVpbnQ2NF90IHJlcXVlc3RJRCwgc3RkOjp1bmlxdWVf
cHRyPEVuY29kZXI+LCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0Y2hlciwgRnVuY3Rp
b248dm9pZChzdGQ6OnVuaXF1ZV9wdHI8RGVjb2Rlcj4pPiYmIHJlcGx5SGFuZGxlcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKaW5kZXggZDVmOTgxZTQ1MzQu
LjNkNmYzNDI4OTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNz
YWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRl
ci5oCkBAIC0zNCw5ICszNCw5IEBAIGNsYXNzIE1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAg
IHZpcnR1YWwgfk1lc3NhZ2VTZW5kZXIoKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJv
b2wgc2VuZChjb25zdCBVJiBtZXNzYWdlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wg
c2VuZChjb25zdCBVJiBtZXNzYWdlLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMg
PSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpLCB7IH0pOworICAgICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNz
YWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQogCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAg
LTQ4LDYgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVz
c2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQorICAgIAorICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFQ+CisgICAgYm9vbCBzZW5kKGNvbnN0IFUmIG1l
c3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRP
cHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VT4o
bWVzc2FnZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQog
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjpp
bmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsg
fSkKQEAgLTY1LDggKzcxLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSks
IGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQogCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHNlbmRXaXRo
QXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBD
PgorICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlv
bkhhbmRsZXIpCiAgICAgewogICAgICAgICBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4IDUyNTE0OTAyYWJiLi41Yjk3NTMwMzA1YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yMDUsNiArMjA1
LDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9oZWFkZXJzKHJlY2VpdmVyKToKICAg
ICAgICAgJ1N0cmluZycsCiAgICAgICAgICdXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6RmV0Y2hJZGVudGlmaWVyJywKKyAgICAgICAgJ1dlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OlBvaW50ZXJJRCcsCiAgICAgICAgICdX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllcicsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJ
UGFnZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5j
cHAKaW5kZXggYTZhMDA5OTU1MDAuLmU2MDVhNDU5NDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCkBAIC0zMSwxNyArMzEsMTcgQEAKIAogbmFtZXNwYWNl
IEFQSSB7CiAKLVJlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGUodWludDY0X3QgcGFn
ZUlEKQorUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGFnZUhhbmRsZShw
YWdlSUQsIGZhbHNlKSk7CiB9CiAKLVJlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVB
dXRvY29udmVydGluZyh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhhbmRsZT4gUGFnZUhhbmRs
ZTo6Y3JlYXRlQXV0b2NvbnZlcnRpbmcoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhZ2VIYW5kbGUocGFnZUlELCB0cnVlKSk7CiB9
CiAKLVBhZ2VIYW5kbGU6OlBhZ2VIYW5kbGUodWludDY0X3QgcGFnZUlELCBib29sIGlzQXV0b2Nv
bnZlcnRpbmcpCitQYWdlSGFuZGxlOjpQYWdlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgYm9vbCBpc0F1dG9jb252ZXJ0aW5nKQogICAgIDogbV9wYWdlSUQocGFnZUlEKQog
ICAgICwgbV9pc0F1dG9jb252ZXJ0aW5nKGlzQXV0b2NvbnZlcnRpbmcpCiB7CkBAIC01OSwxNSAr
NTksMTYgQEAgdm9pZCBQYWdlSGFuZGxlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAogCiBib29sIFBhZ2VIYW5kbGU6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJl
ZlB0cjxPYmplY3Q+JiByZXN1bHQpCiB7Ci0gICAgdWludDY0X3QgcGFnZUlEOwotICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocGFnZUlEKSkKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEOworICAgIGRlY29kZXIgPj4gcGFnZUlEOworICAgIGlmICghcGFnZUlEKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBib29sIGlzQXV0b2NvbnZlcnRpbmc7CiAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShpc0F1dG9jb252ZXJ0aW5nKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgcmVzdWx0ID0gaXNBdXRvY29udmVydGluZyA/IGNyZWF0ZUF1dG9jb252ZXJ0
aW5nKHBhZ2VJRCkgOiBjcmVhdGUocGFnZUlEKTsKKyAgICByZXN1bHQgPSBpc0F1dG9jb252ZXJ0
aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcoKnBhZ2VJRCkgOiBjcmVhdGUoKnBhZ2VJRCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9BUElQYWdlSGFuZGxlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRs
ZS5oCmluZGV4IGYzMGZhZmJkYzMxLi42YTFjZmI2OTgyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJUGFnZUhhbmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEFQSVBhZ2VI
YW5kbGVfaAogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBA
IC0zOCwyMCArMzksMjAgQEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFBhZ2VIYW5kbGUgOiBw
dWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6OlBhZ2VIYW5kbGU+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHN0
YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRlQXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlE
KTsKKyAgICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7CisgICAgc3RhdGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyhX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdmlydHVhbCB+UGFnZUhhbmRsZSgpOwogCi0g
ICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQog
ICAgIGJvb2wgaXNBdXRvY29udmVydGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvY29udmVy
dGluZzsgfQogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIFJlZlB0cjxPYmplY3Q+Jik7CiAKIHByaXZh
dGU6Ci0gICAgZXhwbGljaXQgUGFnZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRv
Y29udmVydGluZyk7CisgICAgUGFnZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgYm9v
bCBpc0F1dG9jb252ZXJ0aW5nKTsKIAotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAg
IGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIGNvbnN0IGJvb2wg
bV9pc0F1dG9jb252ZXJ0aW5nOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaAppbmRleCA4NmY4MDQxNzA5YS4uNDA0
MDgxNzgwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9SZW1v
dGVPYmplY3RSZWdpc3RyeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9S
ZW1vdGVPYmplY3RSZWdpc3RyeS5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJNZXNz
YWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CkBAIC03
Myw3ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgRnVuY3Rpb248dm9pZCgpPiBtX2xhdW5jaEluaXRp
YWxQcm9jZXNzSWZOZWNlc3Nhcnk7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUHJvY2Vzc1Rocm90
dGxlcjo6QmFja2dyb3VuZEFjdGl2aXR5VG9rZW4+IG1fcGVuZGluZ1JlcGxpZXM7CiAgICAgYm9v
bCBtX2lzUmVnaXN0ZXJlZEFzTWVzc2FnZVJlY2VpdmVyIHsgZmFsc2UgfTsKLSAgICB1aW50NjRf
dCBtX21lc3NhZ2VSZWNlaXZlcklEIHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG1fbWVzc2FnZVJlY2VpdmVySUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhh
bmRsZS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4
dEhhbmRsZS5tbQppbmRleCA1OGNiMWRkMmI1ZS4uN2U5N2YxNzZjMDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5k
bGUubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogQGltcGxlbWVudGF0aW9uIFdLQnJvd3NpbmdDb250
ZXh0SGFuZGxlCiAKLS0gKGlkKV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECistIChp
ZClfaW5pdFdpdGhQYWdlSUQ6KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKXBhZ2VJRAogewogICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwpAQCAtNDAs
NyArNDAsNyBAQCAtIChpZClfaW5pdFdpdGhQYWdlSUQ6KHVpbnQ2NF90KXBhZ2VJRAogCiAtIChO
U1VJbnRlZ2VyKWhhc2gKIHsKLSAgICByZXR1cm4gX3BhZ2VJRDsKKyAgICByZXR1cm4gX3BhZ2VJ
RC50b1VJbnQ2NCgpOwogfQogCiAtIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdApAQCAtNTMsNyAr
NTMsNyBAQCAtIChCT09MKWlzRXF1YWw6KGlkKW9iamVjdAogCiAtICh2b2lkKWVuY29kZVdpdGhD
b2RlcjooTlNDb2RlciAqKWNvZGVyCiB7Ci0gICAgW2NvZGVyIGVuY29kZUludDY0Ol9wYWdlSUQg
Zm9yS2V5OkAicGFnZUlEIl07CisgICAgW2NvZGVyIGVuY29kZUludDY0Ol9wYWdlSUQudG9VSW50
NjQoKSBmb3JLZXk6QCJwYWdlSUQiXTsKIH0KIAogLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2Rl
ciAqKWNvZGVyCkBAIC02MSw3ICs2MSw3IEBAIC0gKGlkKWluaXRXaXRoQ29kZXI6KE5TQ29kZXIg
Kiljb2RlcgogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgX3BhZ2VJRCA9IFtjb2RlciBkZWNvZGVJbnQ2NEZvcktleTpAInBhZ2VJRCJd
OworICAgIF9wYWdlSUQgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllclR5cGU+KFtjb2RlciBkZWNvZGVJbnQ2NEZvcktleTpAInBhZ2VJRCJdKTsKIAogICAgIHJl
dHVybiBzZWxmOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29h
L1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKaW5kZXggMmE5ZTY0
NjI4MWEuLjQzZTQxZTI0Y2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Q29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKQEAg
LTI0LDExICsyNCwxMiBAQAogICovCiAKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxl
LmgiCisjaW1wb3J0IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAKIEBpbnRlcmZhY2UgV0tC
cm93c2luZ0NvbnRleHRIYW5kbGUgKCkKIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCBnZXR0ZXIgPSBfcGFnZUlEKSB1aW50NjRfdCBwYWdlSUQ7CitAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHksIGdldHRlcj1fcGFnZUlEKSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQ7CiAKLS0gKGlkKV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlEOworLSAoaWQpX2lu
aXRXaXRoUGFnZUlEOihXZWJDb3JlOjpQYWdlSWRlbnRpZmllcilwYWdlSUQ7CiAKIEBlbmQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmNwcAppbmRleCBlYjhhMGI2NjE3YS4uZDRlMWMyNTAwODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25z
dAogCiB1aW50NjRfdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6bWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiAqbV9kZXN0aW5hdGlvbklEOworICAg
IHJldHVybiBtX2Rlc3RpbmF0aW9uSUQtPnRvVUludDY0KCk7CiB9CiAKIHZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OmNhbk1ha2VQYXltZW50cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIHJlcGx5KQpAQCAtODQsNyArODQsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpvcGVuUGF5bWVudFNldHVwKGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlm
aQogICAgIHBsYXRmb3JtT3BlblBheW1lbnRTZXR1cChtZXJjaGFudElkZW50aWZpZXIsIGRvbWFp
bk5hbWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6c2hvd1BheW1lbnRVSSh1aW50NjRfdCBkZXN0aW5hdGlvbklELCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJp
bmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiBwYXltZW50UmVxdWVzdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQYXltZW50VUkoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcm
IG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxT
dHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5
bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgaWYgKGF1dG8mIGNvb3JkaW5hdG9yID0gYWN0aXZlUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkoKSkKICAgICAgICAgY29vcmRpbmF0b3ItPmRpZENhbmNlbFBheW1lbnRTZXNz
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAppbmRleCBkMjM3ZWFiM2RhYi4uNmU0YTg1Y2YyZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC0xMTUsNyArMTE2
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNhbk1ha2VQYXltZW50cyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGNhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJk
KGNvbnN0IFN0cmluZyYgbWVyY2hhbnRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRvbWFpbk5h
bWUsIFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIG9wZW5QYXltZW50U2V0dXAoY29uc3QgU3RyaW5nJiBtZXJjaGFudElkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
Jik7Ci0gICAgdm9pZCBzaG93UGF5bWVudFVJKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwor
ICAgIHZvaWQgc2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlv
bklELCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKICAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNv
cmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKICAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRh
dGU+Jik7CiAgICAgdm9pZCBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+Jik7CkBAIC0xNDcsNyArMTQ4
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgQ2xpZW50JiBtX2NsaWVudDsKLSAgICBPcHRp
b25hbDx1aW50NjRfdD4gbV9kZXN0aW5hdGlvbklEOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBtX2Rlc3RpbmF0aW9uSUQ7CiAKICAgICBlbnVtIGNsYXNzIFN0YXRlIHsK
ICAgICAgICAgLy8gSWRsZSAtIE5vdGhpbmcncyBoYXBwZW5pbmcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGRkMzEzMTI3YmY0Li4xZGU0Y2RkY2U0YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAg
bWVzc2FnZXMgLT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgewogICAgIENhbk1ha2VQYXlt
ZW50c1dpdGhBY3RpdmVDYXJkKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21h
aW5OYW1lLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGNhbk1ha2VQYXltZW50
cykgQXN5bmMKICAgICBPcGVuUGF5bWVudFNldHVwKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIs
IFN0cmluZyBkb21haW5OYW1lKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKLSAgICBTaG93UGF5
bWVudFVJKHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
U3RyaW5nIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0
cmluZ3MsIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1
ZXN0KSAtPiAoYm9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFN0cmluZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25V
UkxTdHJpbmdzLCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50
UmVxdWVzdCkgLT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hh
bnRWYWxpZGF0aW9uKFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNo
YW50U2Vzc2lvbikKICAgICBDb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFs
PFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBk
YXRlPiB1cGRhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNh
dGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA2ZWIzMzVmMDdkMy4u
OWRlYjc2ZmYxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0
aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcApAQCAtNzUsNyArNzUsNyBA
QCB1aW50NjRfdCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmFkZENoYWxsZW5nZVRvQ2hhbGxlbmdl
TWFwKENoYWxsZW5nZSYmIGNoYWxsZW5nZQogICAgIHJldHVybiBjaGFsbGVuZ2VJRDsKIH0KIAot
Ym9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0Citib29sIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6c2hv
dWxkQ29hbGVzY2VDaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBjaGFs
bGVuZ2VJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNoYWxsZW5nZSkgY29uc3QK
IHsKICAgICBpZiAoIWNhbkNvYWxlc2NlQ2hhbGxlbmdlKGNoYWxsZW5nZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBWZWN0b3I8dWludDY0X3Q+IEF1dGhlbnRp
Y2F0aW9uTWFuYWdlcjo6Y29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbAog
ICAgIHJldHVybiBjaGFsbGVuZ2VzVG9Db2FsZXNjZTsKIH0KIAotdm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKHBhZ2VJRCk7CiAgICAgQVNTRVJUKGZyYW1lSUQpOwpAQCAtMTI0LDcgKzEyNCw3IEBA
IHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UodWludDY0X3QgcGFnZUlELCB1CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3du
bG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIHVpbnQ2NF90IGR1bW15UGFnZUlEID0gMDsKKyAgICBQYWdlSWRlbnRpZmll
ciBkdW1teVBhZ2VJRDsKICAgICB1aW50NjRfdCBjaGFsbGVuZ2VJRCA9IGFkZENoYWxsZW5nZVRv
Q2hhbGxlbmdlTWFwKHsgZHVtbXlQYWdlSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9KTsKICAgICAKICAgICAvLyBDb2FsZXNjZSBjaGFsbGVu
Z2VzIGluIHRoZSBzYW1lIHByb3RlY3Rpb24gc3BhY2UgYW5kIGluIHRoZSBzYW1lIHBhZ2UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5oCmluZGV4IDdmZTM5OWUwYjdlLi44NmU3NDRjMTA4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25N
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc1N1cHBsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzU3VwcGxlbWVudC5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAt
NjAsNyArNjEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgY29uc3QgY2hhciogc3VwcGxlbWVu
dE5hbWUoKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25I
YW5kbGVyJiYpOwogCiAgICAgdm9pZCBjb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVp
bnQ2NF90IGNoYWxsZW5nZUlELCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBX
ZWJDb3JlOjpDcmVkZW50aWFsJiYpOwpAQCAtNjksNyArNzAsNyBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgc3RydWN0IENoYWxsZW5nZSB7Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKKyAg
ICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAgICAgICBXZWJDb3JlOjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2U7CiAgICAgICAgIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyIGNvbXBsZXRpb25IYW5kbGVyOwogICAgIH07CkBAIC04Myw3ICs4NCw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIHVpbnQ2NF90IGFkZENoYWxsZW5nZVRvQ2hh
bGxlbmdlTWFwKENoYWxsZW5nZSYmKTsKLSAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdl
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgY29uc3Q7CisgICAgYm9vbCBzaG91bGRDb2FsZXNjZUNo
YWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJikgY29uc3Q7CiAKICAgICBWZWN0
b3I8dWludDY0X3Q+IGNvYWxlc2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWxsZW5n
ZUlEKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCmluZGV4
IDMyYjBhNDc1ZGMyLi4xOTI1M2UyYmFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXV4aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFy
eVByb2Nlc3MuaApAQCAtNjIsNiArNjIsMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5h
dGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBh
ZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJ
bnQ2NCgpLCByZWNlaXZlcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAg
ICB7CisgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgIH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc1N1
cHByZXNzaW9uRW5hYmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvVGV4dElucHV0Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29u
dGV4dC5oCmluZGV4IDRmNzVmZDgwNmY2Li41NGQ0Mjc3Yjg1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1RleHRJbnB1dENvbnRleHQuaApAQCAtMjksMTMgKzI5LDE0IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9Eb2N1bWVudElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VsZW1lbnRJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgVGV4
dElucHV0Q29udGV4dCB7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGJvdW5kaW5nUmVjdDsKIAot
ICAgIHVpbnQ2NF90IHdlYlBhZ2VJZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBk
b2N1bWVudElkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6RWxlbWVudElkZW50aWZpZXIgZWxlbWVu
dElkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRM
aXN0SXRlbS5jcHAKaW5kZXggOWRiYjM2YTQ1NTMuLmQ5MDBhMTY3MzNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtMzUsMTIgKzM1
LDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1S
ZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRl
KEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgdWlu
dDY0X3QgcGFnZUlEKQorUmVmPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+IFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW06OmNyZWF0ZShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKFdURk1vdmUoYmFja0ZvcndhcmRMaXN0SXRl
bVN0YXRlKSwgcGFnZUlEKSk7CiB9CiAKLVdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpXZWJC
YWNrRm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJk
TGlzdEl0ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIDogbV9pdGVtU3RhdGUo
V1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpKQogICAgICwgbV9wYWdlSUQocGFnZUlE
KQogICAgICwgbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXIobV9pdGVtU3RhdGUuaWRlbnRpZmllci5w
cm9jZXNzSWRlbnRpZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0uaAppbmRleCA4NzJlZjE4MDk1ZC4uNDRhZjdjNjY1OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAK
IAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTQ2LDcgKzQ3LDcgQEAgY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJC
YWNrRm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6
VHlwZTo6QmFja0ZvcndhcmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2Vi
QmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1
aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4g
Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cik7CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGlj
IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9y
d2FyZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsg
cmV0dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExp
c3RJdGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWlu
dDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9j
ZXNzSWRlbnRpZmllcihjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmll
cikgeyBtX2xhc3RQcm9jZXNzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4
MiwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdl
SUQpOworICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRl
JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3VzcGVuZGVk
UGFnZUZyb21Qcm9jZXNzUG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1f
aXRlbVN0YXRlOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fcGFnZUlEOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFBy
b2Nlc3NJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3Bl
bmRlZFBhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAppbmRleCBlOWRhNjBhZWViZS4uNjk5NDgyNWQwODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBA
IC01Myw3ICs1Myw3IEBAIHZvaWQgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVzZXJBZ2VudDsKICAg
ICBlbmNvZGVyIDw8IGl0ZW1TdGF0ZXM7CiAgICAgZW5jb2RlciA8PCBzZXNzaW9uSUQ7Ci0gICAg
ZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJRC50b1VJbnQ2NCgpOworICAgIGVuY29k
ZXIgPDwgdXNlckNvbnRlbnRDb250cm9sbGVySUQ7CiAgICAgZW5jb2RlciA8PCB2aXNpdGVkTGlu
a1RhYmxlSUQ7CiAgICAgZW5jb2RlciA8PCB3ZWJzaXRlRGF0YVN0b3JlSUQ7CiAgICAgZW5jb2Rl
ciA8PCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWw7CkBAIC0xOTMsMTEgKzE5MywxMSBA
QCBPcHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1l
dGVycy5zZXNzaW9uSUQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CisgICAgT3B0
aW9uYWw8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcj4gdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcjsKICAgICBkZWNvZGVyID4+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXI7CiAgICAgaWYgKCF1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwotICAgIHBhcmFtZXRlcnMudXNlckNvbnRlbnRDb250cm9s
bGVySUQgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyVHlwZT4oKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpOworICAgIHBhcmFtZXRl
cnMudXNlckNvbnRlbnRDb250cm9sbGVySUQgPSAqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRp
ZmllcjsKIAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy52aXNpdGVkTGlua1Rh
YmxlSUQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpAQCAtMzkyLDcgKzM5Miw3IEBA
IE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAg
ICAgcGFyYW1ldGVycy5iYWNrZ3JvdW5kQ29sb3IgPSBXVEZNb3ZlKCpiYWNrZ3JvdW5kQ29sb3Ip
OwogCi0gICAgT3B0aW9uYWw8T3B0aW9uYWw8dWludDY0X3Q+PiBvbGRQYWdlSUQ7CisgICAgT3B0
aW9uYWw8T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBvbGRQYWdlSUQ7CiAgICAgZGVjb2RlciA+
PiBvbGRQYWdlSUQ7CiAgICAgaWYgKCFvbGRQYWdlSUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmgKaW5kZXggYzJiZTg0MTQ2YjMuLjkwMTI3YmMzMTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC0zOSw2ICszOSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRN
aWxlc3RvbmUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdpbmF0aW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oPgpAQCAtMjAyLDcgKzIwMyw3IEBAIHN0cnVj
dCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6OkNv
bG9yPiBiYWNrZ3JvdW5kQ29sb3I7CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gb2xkUGFnZUlE
OworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvbGRQYWdlSUQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VHcm91cERhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3Vw
RGF0YS5jcHAKaW5kZXggOTYzOWQwMTVjMmYuLjRkMWNjZWE2NTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcApAQCAtMzQsNyArMzQsNyBAQCB2b2lkIFdlYlBh
Z2VHcm91cERhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBpZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwSUQ7Ci0gICAg
ZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLnRvVUludDY0KCk7Cisg
ICAgZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfQogCiBPcHRp
b25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQpAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VHcm91cERh
dGE+IFdlYlBhZ2VHcm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAg
aWYgKCFwYWdlR3JvdXBJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAg
ICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcjsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIHt7IFdURk1vdmUo
KmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpwYWdlR3JvdXBJRCksIG1ha2VPYmplY3RJZGVudGlmaWVy
PFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcikgfX07CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBX
VEZNb3ZlKCpwYWdlR3JvdXBJRCksICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH19
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
T2JqQ09iamVjdEdyYXBoLm1tCmluZGV4IGM2NTQ4NGY1NTEyLi5mZTY2ZGU2NTkyYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCkBAIC0yOTgsMTEgKzI5
OCwxMiBAQCBib29sIE9iakNPYmplY3RHcmFwaDo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rl
ciwgUmV0YWluUHRyPGlkPiYgcmVzdWx0KQogICAgIH0KIAogICAgIGNhc2UgT2JqQ1R5cGU6OldL
QnJvd3NpbmdDb250ZXh0SGFuZGxlOiB7Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKLSAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQorICAgICAgICBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEOworICAgICAgICBkZWNvZGVyID4+IHBhZ2VJRDsKKyAg
ICAgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAg
cmVzdWx0ID0gYWRvcHROUyhbW1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlIGFsbG9jXSBfaW5pdFdp
dGhQYWdlSUQ6cGFnZUlEXSk7CisgICAgICAgIHJlc3VsdCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5n
Q29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZUlEOipwYWdlSURdKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDEwNzU3ODFhZjJjLi4y
ZjljZmU5NDI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKQEAgLTU0LDYgKzU0LDcgQEAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIFN0cmluZyBBdXRvbWF0aW9uQ29tbWFuZEVycm9yOjp0b1Byb3Rv
Y29sU3RyaW5nKCkKIHsKQEAgLTUyMiw3ICs1MjMsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uOjp3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPbkZyYW1lKFdlYkZyYW1lUHJveHkmIGZy
YQogICAgIH0KIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGlu
Z1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCit2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNwb25kVG9QZW5kaW5nUGFnZU5hdmlnYXRpb25D
YWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mIG1hcCkKIHsKICAgICBJbnNw
ZWN0b3I6OkVycm9yU3RyaW5nIHRpbWVvdXRFcnJvciA9IFNUUklOR19GT1JfUFJFREVGSU5FRF9F
UlJPUl9OQU1FKFRpbWVvdXQpOwogICAgIGZvciAoYXV0byBpZCA6IGNvcHlUb1ZlY3RvcihtYXAu
a2V5cygpKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCmluZGV4IDY1ZWIzZTQ2ZTViLi5mMzljMDYxYjU3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNoYXJl
YWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIgogI2lu
Y2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTIyNSw3ICsyMjYsNyBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2ViUGFnZVBy
b3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVneSwg
U2Vjb25kcywgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4m
Jik7CiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPbkZyYW1lKFdlYkZyYW1l
UHJveHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5
LCBTZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNl
PiYmKTsKLSAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dp
dGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOworICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VO
YXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+
Jik7CiAgICAgdm9pZCByZXNwb25kVG9QZW5kaW5nRnJhbWVOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0
aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCBsb2FkVGltZXJGaXJlZCgpOwogCkBA
IC0yODAsMjIgKzI4MSwyMiBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OkF1dG9tYXRp
b25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRjaGVyOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+IG1fZG9tYWluTm90
aWZpZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRsZU1h
cDsKLSAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1faGFuZGxlV2ViUGFnZU1hcDsKKyAg
ICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRs
ZU1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1faGFu
ZGxlV2ViUGFnZU1hcDsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJGcmFt
ZUhhbmRsZU1hcDsKICAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1faGFuZGxlV2ViRnJh
bWVNYXA7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJv
d3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5n
RWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93
c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jh
c2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1Bl
clBhZ2U7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dz
aW5nQ29udGV4dENhbGxiYWNrc1BlckZyYW1lOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdF
YWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlckZyYW1lOwotICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdl
OwogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQotICAgIEhhc2hN
YXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJv
cj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsKKyAg
ICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1c2hl
ZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCRFJJVkVSX01PVVNFX0lO
VEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFs
PEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENh
bGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVu
Y3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdN
b3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAKICAgICB1aW50NjRf
dCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwpAQCAtMzE5LDcgKzMy
MCw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIEFQSXMgdGFr
ZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVybiB0aGVzZQogICAgIC8vIHNv
IHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVzZWQgYXMgaW5pdGlhbCBzdGF0
ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCiAgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRTb3Vy
Y2U+PiBtX2lucHV0U291cmNlczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8U2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+PiBt
X2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCRFJJVkVSX0tF
WUJPQVJEX0lOVEVSQUNUSU9OUykKICAgICAvLyBLZWVwIHRyYWNrIG9mIGN1cnJlbnRseSBhY3Rp
dmUgbW9kaWZpZXJzIGFjcm9zcyBtdWx0aXBsZSBrZXlzdHJva2VzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA5ODkzZDM5OGI1Ny4u
NGM2YjNkNDIzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCkBAIC01MSw2ICs1MSwxMiBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRp
b25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIHNlbmRXaXRoQXN5bmNS
ZXBseShUJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJncy4uLik+JiYpOworICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCBzZW5kKFQmJiBtZXNz
YWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNl
bmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQo
V1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7
CisgICAgfQogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29uc3QKICAgICB7
CkBAIC02Nyw2ICs3MywxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIo
SVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGlu
YXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRf
dCBkZXN0aW5hdGlvbklEKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9u
SUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB7CisgICAgICAgIGFkZE1l
c3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0
KCksIHJlY2VpdmVyKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAgIHsK
KyAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3Rp
bmF0aW9uSUQudG9VSW50NjQoKSk7CisgICAgfQogCiAgICAgZW51bSBjbGFzcyBTdGF0ZSB7CiAg
ICAgICAgIExhdW5jaGluZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQppbmRleCBmMDVkNzljMGQw
MS4uNjcwNjU5NzY4NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAgLTUyNyw5NCArNTI3
LDk0IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpoYW5kbGVDb250cm9sbGVk
RWxlbWVudElEUmVzcG9uc2UodWludDY0X3QgY29uCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpQbGF5KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6cGF1c2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpQYXVzZShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OnRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQbGF5U3Rh
dGUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4dElkKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnViYmluZyh1
aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OkJlZ2luU2NydWJiaW5nKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6ZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnViYmluZyhj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnViYmluZyhjb250ZXh0SWQpKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlZWtUb1RpbWUodWludDY0X3QgY29u
dGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIHRvbGVyYW5jZUJlZm9yZSwgZG91YmxlIHRvbGVy
YW5jZUFmdGVyKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6U2Vla1RvVGltZShjb250ZXh0SWQsIHRpbWUsIHRvbGVyYW5jZUJlZm9yZSwgdG9s
ZXJhbmNlQWZ0ZXIpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0
b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFmdGVyKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1l
KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
RmFzdFNlZWsoY29udGV4dElkLCB0aW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhjb250ZXh0
SWQsIHRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2lu
U2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNv
bnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0ZvcndhcmQoY29udGV4dElkKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5nQmFj
a3dhcmQodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nhbm5pbmcodWludDY0X3QgY29u
dGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY2FubmluZyhj
b250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlbGVj
dEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsK
LSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVj
dEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0
QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29u
dGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihjb250ZXh0SWQs
IGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29udGV4dElk
LCBpbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xl
UGljdHVyZUluUGljdHVyZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQaWN0dXJlSW5QaWN0dXJl
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShjb250ZXh0
SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZU11dGVk
KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
VG9nZ2xlTXV0ZWQoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpzZXRNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCiB7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRNdXRlZChj
b250ZXh0SWQsIG11dGVkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRNdXRlZChjb250ZXh0SWQsIG11dGVk
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRWb2x1bWUodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgdm9sdW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1l
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpTZXRWb2x1bWUoY29udGV4dElkLCB2b2x1bWUpKTsKIH0KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFBsYXlpbmdPblNlY29uZFNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKG1fcGFnZSkKLSAgICAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRQbGF5
aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNl
dFBsYXlpbmdPblNlY29uZFNjcmVlbihjb250ZXh0SWQsIHZhbHVlKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCgpCiB7
CiAgICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQotICAgICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkhhbmRsZUNvbnRyb2xsZWRFbGVt
ZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6SGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QobV9jb250cm9sc01hbmFnZXJDb250
ZXh0SWQpKTsKIH0KIAogUGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbQppbmRleCA2YmE0NzllMDYwYS4uYzhkNjVjMzYyYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHkubW0KQEAgLTYyMCw0MyArNjIwLDQzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpwcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElk
KQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCiB7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RnVs
bHNjcmVlbk1vZGUoY29udGV4dElkLCBtb2RlLCBmaW5pc2hlZFdpdGhNZWRpYSksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6UmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRo
TWVkaWEpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RV
cGRhdGVJbmxpbmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFVwZGF0ZUlubGluZVJlY3QoY29udGV4
dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0Vmlk
ZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFZpZGVvQ29udGVudExheWVy
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFZpZGVvQ29udGVudExheWVyKGNvbnRl
eHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmV0dXJuVmlk
ZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIo
Y29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXR1cm5WaWRlb0NvbnRlbnRMYXllcihjb250ZXh0
SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZFNldHVwRnVs
bHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRTZXR1cEZ1bGxzY3JlZW4oY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpEaWRTZXR1cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiB9CiAKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojp3aWxsRXhpdEZ1bGxzY3JlZW4odWludDY0X3Qg
Y29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6V2lsbEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6V2ls
bEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1
bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbHNjcmVlbihjb250
ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEV4aXRGdWxsc2NyZWVuKCk7CiB9CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFbnRlckZ1bGxzY3JlZW4odWludDY0X3QgY29u
dGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6RGlkRW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRW50
ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIG1fcGFnZS0+ZGlkRW50ZXJGdWxsc2NyZWVu
KCk7CiB9CiAKQEAgLTY3MCw3ICs2NzAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIFtDQVRy
YW5zYWN0aW9uIGZsdXNoXTsKICAgICBbbW9kZWwtPmxheWVySG9zdFZpZXcoKSByZW1vdmVGcm9t
U3VwZXJ2aWV3XTsKICAgICBtb2RlbC0+c2V0TGF5ZXJIb3N0VmlldyhudWxscHRyKTsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBG
dWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkQ2xlYW51cEZ1bGxzY3JlZW4o
Y29udGV4dElkKSk7CiAKICAgICBpbnRlcmZhY2UtPnNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CiAgICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4
dChjb250ZXh0SWQpOwpAQCAtNjg4LDI1ICs2ODgsMjUgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5ZXJGcmFtZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNv
cmUKICAgICAgICAgbWFjaF9wb3J0X25hbWVfdCBmZW5jZVBvcnQgPSBmZW5jZVNlbmRSaWdodC5s
ZWFrU2VuZFJpZ2h0KCk7CiAjZW5kaWYKIAotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJGcmFtZUZlbmNlZChjb250ZXh0
SWQsIGZyYW1lLCBJUEM6OkF0dGFjaG1lbnQoZmVuY2VQb3J0LCBNQUNIX01TR19UWVBFX01PVkVf
U0VORCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQoY29udGV4
dElkLCBmcmFtZSwgSVBDOjpBdHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZF
X1NFTkQpKSk7CiAgICAgfQogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
c2V0VmlkZW9MYXllckdyYXZpdHkodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpWaWRlb0dyYXZpdHkgZ3Jhdml0eSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShj
b250ZXh0SWQsICh1bnNpZ25lZClncmF2aXR5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVy
R3Jhdml0eUVudW0oY29udGV4dElkLCAodW5zaWduZWQpZ3Jhdml0eSkpOwogfQogCiB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlIG1vZGUpCiB7CiAgICAgbV9wYWdlLT51aUNsaWVudCgpLmhhc1ZpZGVvSW5QaWN0dXJl
SW5QaWN0dXJlRGlkQ2hhbmdlKG1fcGFnZSwgbW9kZSAmIE1lZGlhUGxheWVyRW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChjb250ZXh0
SWQsIG1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChjb250ZXh0SWQs
IG1vZGUpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3Jl
ZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7CiAgICAgYm9vbCBpc1Zp
ZXdWaXNpYmxlID0gbV9wYWdlLT5pc1ZpZXdWaXNpYmxlKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTWF5UmV0dXJuVG9Jbmxp
bmUoY29udGV4dElkLCBpc1ZpZXdWaXNpYmxlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTWF5
UmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCBpc1ZpZXdWaXNpYmxlKSk7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCAyYWE3
NDhmMDA0Zi4uMDhhM2QzMDhkM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCkBAIC0xOTk3LDEzICsxOTk3LDEzIEBAIGZsb2F0IFdlYlZpZXdJbXBs
OjppbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHZvaWQgV2ViVmlld0ltcGw6
OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldl
YlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwgdGhpcywg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAl
cCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIsIHRoaXMsIG1fcGFnZS0+cGFn
ZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsg
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpXaW5kb3dJc0FjdGl2ZSB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkT3Jk
ZXJPblNjcmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAo
cGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3
aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgp
KTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZl
IH0pOwogfQogCkBAIC0yMDcxLDcgKzIwNzEsNyBAQCB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dE
aWRDaGFuZ2VMYXllckhvc3RpbmcoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRDaGFu
Z2VPY2NsdXNpb25TdGF0ZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1w
bCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSIsIHRoaXMsIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAg
KHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUiLCB0aGlzLCBtX3BhZ2Ut
PnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5n
ZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCkBAIC0yMjM0LDE5ICsy
MjM0LDE5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRDaGFuZ2VCYWNraW5nUHJvcGVydGll
cygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRIaWRlKCkKIHsKLSAgICBMT0coQWN0aXZp
dHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRIaWRlIiwgdGhpcywg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAl
cCAocGFnZSAlbGx1KSB2aWV3RGlkSGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50
NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRVbmhp
ZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxs
dSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rp
dml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZFVuaGlkZSIsIHRo
aXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZv
aWQgV2ViVmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlkQ2hhbmdlKCkKIHsKLSAgICBMT0coQWN0aXZp
dHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNwYWNlRGlkQ2hhbmdl
IiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJW
aWV3SW1wbCAlcCAocGFnZSAlbGx1KSBhY3RpdmVTcGFjZURpZENoYW5nZSIsIHRoaXMsIG1fcGFn
ZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggYjViNGUwYWQyMjEuLmVj
ZjVkYTBhOTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJl
YVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5
LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIERyYXdpbmdBcmVhUHJveHk6OkRyYXdpbmdBcmVhUHJv
eHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByCiAgICAgLCBt
X3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZEcmF3
aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCkKICNlbmRpZgog
ewotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhp
cyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVh
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiB9CiAK
IERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICBwcm9jZXNzKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBwcm9jZXNzKCku
cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAKIGJvb2wgRHJhd2luZ0FyZWFQcm94
eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0
YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCmluZGV4IDM0NDNiMzg1ZmFjLi4yZDk5NjZlM2M4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRD
cmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGEKICNlbmRp
ZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdl
SUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxl
bmdlSUQpCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChhdXRvKiBzZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5ID0gbV9wcm9jZXNzUG9vbC5zZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5RnJvbVBhZ2VJRChwYWdlSUQpKSB7CkBAIC0zNzEsNyArMzcxLDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVu
Y2hlciwgSVBDOjpDb24KICNlbmRpZgogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omxv
Z0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxk
U2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAg
ICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsK
ICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1c2UgYnkgdGhlIHRpbWUg
dGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkgYmUgZ29uZS4gV2Ugc2hv
dWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQsIGNv
bnN0IFN0cmluZyYgbWUKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZShtZXNzYWdlLCBk
ZXNjcmlwdGlvbiwgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3Vs
dCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1
aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAg
ICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7
CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5IHRoZSB0aW1l
IHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdvbmUuIFdlIHNo
b3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzkzLDcgKzM5Myw3IEBAIHZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QKICAgICBwYWdlLT5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQo
bWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVu
c2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNh
bXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBh
Z2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1c2Ug
YnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkgYmUg
Z29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC03MzYsNyArNzM2LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXMKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRHcmFuZGZhdGhlcmVkKHNlc3Npb25JRCwgcmVzb3VyY2VE
b21haW4sIGlzR3JhbmRmYXRoZXJlZCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0o
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJ
RCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC05MDgsNyArOTA4LDcgQEAgdm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojpub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
dW5zaWduZWQKICAgICBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1l
dHJ5RmluaXNoZWQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUobWVzc2FnZUJvZHkpLnB0cigpKTsK
IH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
dWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRX
aXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWlu
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMjBhNzk5OGM0ZGMuLjJiZWM2OGZk
ODk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCArODEsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2
aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBE
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsK
ICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAg
ICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50
NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBleHBsaWNpdCBOZXR3
b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBAIC0xMzEsNyArMTI5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+JiYpOwotICAgIHZvaWQg
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJRCwgRnJhbWVJRCwgY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRv
cEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9p
ZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQ
ZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1v
cnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZp
ZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGJvb2wgZGVidWdNb2Rl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3Np
ZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIGJvb2ws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdl
Q2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVj
b3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0
IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6
OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRv
RG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVz
dGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5h
dmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29v
a2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Ym9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJz
CiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKLSAgICB2b2lkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNoYWxs
ZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOwogICAgIHZvaWQgZGlkRmV0
Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBXZWJzaXRlRGF0YSYpOwog
ICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAg
dm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7
Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxk
U2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAgIHZvaWQgbG9n
RGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWdu
ZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZvaWQg
bG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9p
ZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUg
dmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
KTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1
bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVu
dChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGYuLjIyZmZmZDE5ODgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBOZXR3b3Jr
UHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsKICAgICBEaWRDcmVhdGVOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2VzcyhJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCiAK
LSAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVu
Z2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQorICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWludDY0X3QgY2hh
bGxlbmdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQs
IHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQogICAgIERpZERlbGV0ZVdl
YnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC0zNSw5ICszNSw5IEBAIG1lc3NhZ2Vz
IC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldElzSG9sZGlu
Z0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCiAKICAgICAjIERpYWdub3N0
aWMgbWVzc2FnZXMgbG9nZ2luZwotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZW51bTpib29sIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAgTG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlw
dGlvbiwgdWludDMyX3QgcmVzdWx0LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNo
b3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBw
YWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwg
dW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGVu
dW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAgIExvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0
cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgZW51bTpi
b29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAgTG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdHJpbmcg
bWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25p
ZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCiAgICAgTG9nR2xvYmFsRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoU3RyaW5nIG1lc3Nh
Z2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2Fu
dEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKQEAgLTQ2LDcgKzQ2LDcgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgTm90
aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCkKICAg
ICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAg
ICAgTm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVk
IHRvdGFsUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zKQotICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wg
dXNlckRpZEdyYW50QWNjZXNzKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmly
bShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3lu
YwogICAgIERlbGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5
cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4g
ZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMp
IC0+IChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aE1hdGNo
aW5nRGF0YVJlY29yZHMpIEFzeW5jCiAjZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZhZTFm
M2ZjYTg4Li4yYWFmZjFlYzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6c2hvdyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAg
IHVpbnQ2NF90IGdsb2JhbE5vdGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRp
b25JRCgpOwogICAgIGF1dG8gbm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUo
dGl0bGUsIGJvZHksIGljb25VUkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2Jh
bE5vdGlmaWNhdGlvbklEKTsKLSAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3Rp
ZmljYXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5v
dGlmaWNhdGlvbklEKTsKKyAgICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBu
b3RpZmljYXRpb25JRFBhaXIgPSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFn
ZU5vdGlmaWNhdGlvbklEKTsKICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFs
Tm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25z
LnNldChub3RpZmljYXRpb25JRFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlv
bklELCBub3RpZmljYXRpb24uY29weVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2Vi
UGFnZSwgbm90aWZpY2F0aW9uLmdldCgpKTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQgV2Vi
Tm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwKICAgICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90LCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0
b3I8dWludDY0X3Q+JikKK3N0YXRpYyBib29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90LCBQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0
b3I8dWludDY0X3Q+JikKIHsKICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9
CiAKLXN0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwg
Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0
aWMgYm9vbCBwYWdlQW5kTm90aWZpY2F0aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdl
SUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQog
ewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlm
aWNhdGlvbklEcy5jb250YWlucyhwYWdlTm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEzICsx
NDEsMTMgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0
aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNv
bnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZp
bHRlckZ1bmN0aW9uIGZpbHRlckZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJ
RCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOworICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+
cGFnZUlEKCk7CiAKICAgICBWZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsK
ICAgICBnbG9iYWxOb3RpZmljYXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwLnNpemUoKSk7CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMu
YmVnaW4oKSwgZW5kID0gbV9ub3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
LSAgICAgICAgdWludDY0X3Qgd2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAgYXV0
byB3ZWJQYWdlSUQgPSBpdC0+a2V5LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZp
Y2F0aW9uSUQgPSBpdC0+a2V5LnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3
ZWJQYWdlSUQsIHBhZ2VOb3RpZmljYXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0
aW9uSURzKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQg
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24o
dWludDY0X3QgZ2xvYmFsTm90CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFw
LmVuZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+
dmFsdWUuZmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAg
V2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJ
RCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1LDcg
QEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3Rp
ZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmlj
YXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3ZWJQ
YWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUu
Zmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQ
YWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNS4uMTE1Nzgx
ZTQzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYkNvbnRl
eHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25DbGllbnQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTc4LDcgKzc5LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlv
bkZpbHRlckZ1bmN0aW9uKSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRp
b25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVz
aXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOworICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlv
bkZpbHRlckZ1bmN0aW9uKShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJ
RCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOwog
ICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9u
KTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CkBAIC04OCw5ICs4OSw5IEBAIHByaXZh
dGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4gbV9w
cm92aWRlcjsKICAgICAvLyBQYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhlIHdl
YiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElECi0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpw
YWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOworICAgIEhh
c2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0
X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKICAgICAvLyBLZXkgcGFpciBjb21wcmlzZWQg
b2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsgdmFs
dWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlmaWNh
dGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+LCBz
dGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmljYXRp
b25zOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25v
dGlmaWNhdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA0NWExZjBmNWI1
Yy4uN2Q1NDhhNTMyMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zp
c2lvbmFsUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5jcHAKQEAgLTQ3LDYgKzQ3LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoY2hhbm5lbCwgZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5pc0Fsd2F5c09u
TG9nZ2luZ0FsbG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIg
Zm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihtX3BhZ2UuaXNB
bHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIApAQCAtNjEsNyArNjMsNyBAQCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6UHJvdmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdl
LCBSZWY8V2ViUHJvY2Vzc1BybwogICAgICwgbV9zdXNwZW5zaW9uVG9rZW4obV9wcm9jZXNzLT50
aHJvdHRsZXIoKS5mb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbigpKQogI2VuZGlmCiB7Ci0gICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJQcm92aXNpb25hbFBh
Z2VQcm94eTogcGFnZUlEID0gJSIgUFJJdTY0ICIgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0ICIg
c3VzcGVuZGVkUGFnZTogJXAiLCBtX3BhZ2UucGFnZUlEKCksIG5hdmlnYXRpb25JRCwgc3VzcGVu
ZGVkUGFnZS5nZXQoKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJQcm92aXNpb25hbFBhZ2VQcm94eTogcGFnZUlEID0gJSIgUFJJdTY0ICIgbmF2
aWdhdGlvbklEID0gJSIgUFJJdTY0ICIgc3VzcGVuZGVkUGFnZTogJXAiLCBtX3BhZ2UucGFnZUlE
KCkudG9VSW50NjQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdldCgpKTsKIAogICAg
IG1fcHJvY2Vzcy0+YWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgbV9wcm9j
ZXNzLT5hZGRQcm92aXNpb25hbFBhZ2VQcm94eSgqdGhpcyk7CkBAIC0xMTcsNyArMTE5LDcgQEAg
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Y29ubmVjdGlvbldpbGxPcGVuKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbikKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJwcm9jZXNzRGlkVGVybWluYXRlOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFn
ZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dh
cHBpbmcsICJwcm9jZXNzRGlkVGVybWluYXRlOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5w
YWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UucHJvdmlzaW9uYWxQcm9jZXNzRGlkVGVy
bWluYXRlKCk7CiB9CiAKQEAgLTEzMiw3ICsxMzQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpjYW5jZWwoKQogICAgIGlmIChtX3Byb3Zpc2lvbmFsTG9hZFVSTC5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAiY2FuY2VsOiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
IGZvciBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdl
LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIEFTU0VSVChtX21haW5GcmFtZSk7CiAgICAgYXV0
byBlcnJvciA9IFdlYktpdDo6Y2FuY2VsbGVkRXJyb3IobV9yZXF1ZXN0KTsKICAgICBlcnJvci5z
ZXRUeXBlKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CkBAIC0x
NTEsMTQgKzE1MywxNCBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojppbml0aWFsaXplV2Vi
UGFnZSgpCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdh
dGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBT
dHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJsb2FkRGF0YTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlE
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERh
dGE6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAg
ICAgbV9wYWdlLmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYo
KSwgbmF2aWdhdGlvbiwgZGF0YSwgTUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0
YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vi
c2l0ZVBvbGljaWVzKSk7CiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1
ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRP
cGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdl
SUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRp
cmVjdCBjb250aW51aW5nIGluIGEgbmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIHdp
bGwgb3ZlcndyaXRlIHRoZSBmcm9tSXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHdl
IG5lZWQgdG8gbWFrZSBzdXJlIHdlIHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVudGlmaWVy
IGFzIHdlIHdhbnQgZnV0dXJlIG5hdmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQgaXRlbSB0
byBoYXBwZW4gaW4gdGhlCkBAIC0xNzEsNyArMTczLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpS
ZXMKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRl
bTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBhdXRvIGl0
ZW1TdGF0ZXMgPSBtX3BhZ2UuYmFja0ZvcndhcmRMaXN0KCkuZmlsdGVyZWRJdGVtU3RhdGVzKFt0
aGlzLCB0YXJnZXRJdGVtID0gJml0ZW1dKGF1dG8mIGl0ZW0pIHsKICAgICAgICAgaWYgKGF1dG8q
IHBhZ2UgPSBpdGVtLnN1c3BlbmRlZFBhZ2UoKSkgewpAQCAtMTk2LDcgKzE5OCw3IEBAIGlubGlu
ZSBib29sIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojp2YWxpZGF0ZUlucHV0KHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IE9wdGlvbmFsCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0
ZU1haW5GcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZU1haW5G
cmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5w
YWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsK
IAogICAgIG1fbWFpbkZyYW1lID0gV2ViRnJhbWVQcm94eTo6Y3JlYXRlKG1fcGFnZSwgZnJhbWVJ
RCk7CkBAIC0yMzQsNyArMjM2LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW4KICAgICBpZiAo
IXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJh
bWVJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
d2FwcGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwg
bV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAg
QVNTRVJUKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFs
TG9hZFVSTCA9IHVybDsKIApAQCAtMjU0LDcgKzI1Niw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1f
cGFnZS5wYWdlSUQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNpb25hbExvYWRG
b3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2
aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJ
RCwgbmF2aWdhdGlvbklEKTsKICAgICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVs
bCgpKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKIApAQCAtMjcwLDcgKzI3Miw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1l
SUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENvbW1pdExvYWRGb3JGcmFt
ZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlv
bklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2
aWdhdGlvbklEKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKICAgICBtX3Byb2Nl
c3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSk7CiAKQEAgLTI5NSw3ICsyOTcsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbgogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAorICAgIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcXVlc3QsCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBD
OjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRf
dCBsaXN0ZW5lcklEKQogewogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0
aW9uSUQpKQpAQCAtMzQxLDcgKzM0Myw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmJh
Y2tGb3J3YXJkR29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlCiB9CiAK
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNr
SWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
RnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
JiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpE
ZWxheWVkUmVwbHkmJiByZXBseSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92
aXNpb25hbFBhZ2VQcm94eS5oCmluZGV4IDY0NTZjMWY5MTZkLi43ZDJmMzkwMjMxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC05NCw3
ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4m
KSBmaW5hbDsKIAogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLAotICAgICAgICB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksCisgICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmLAogICAgICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNo
b3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc3RhcnRVUkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwog
ICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5
bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRh
JiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYm
LCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAog
ICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29u
c3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQog
ICAgIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFt
ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkubW0KaW5kZXggMDU1OWM5ODc0YmQuLjViMDJkZGIyNDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMTE1
LDcgKzExNSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3CiAgICAgSU9TdXJmYWNlUG9vbDo6
c2hhcmVkUG9vbCgpLnNldFBvb2xTaXplKDApOwogI2VuZGlmCiAKLSAgICBwcm9jZXNzLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwor
ICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRo
aXMpOwogCiAgICAgaWYgKG1fd2ViUGFnZVByb3h5LnByZWZlcmVuY2VzKCkudGlsZWRTY3JvbGxp
bmdJbmRpY2F0b3JWaXNpYmxlKCkpCiAgICAgICAgIGluaXRpYWxpemVEZWJ1Z0luZGljYXRvcigp
OwpAQCAtMTI0LDcgKzEyNCw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3CiBSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5Ojp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSgp
CiB7CiAgICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25l
cldhc0ludmFsaWRhdGVkKTsKLSAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBwcm9jZXNzKCkucmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFttX2Rpc3BsYXlMaW5rSGFuZGxlciBpbnZhbGlkYXRlXTsKQEAgLTQ2Myw3
ICs0NjMsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JE
aWRVcGRhdGVBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdAogICAgIH0oKTsKIAogICAgIGF1dG8g
c3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgd2hpbGUgKHByb2Nlc3MoKS5j
b25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU+KG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpLCBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCAtIChNb25vdG9uaWNUaW1l
Ojpub3coKSAtIHN0YXJ0VGltZSksIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGlu
Z0lmU3luY01lc3NhZ2VBcnJpdmVzKSkgeworICAgIHdoaWxlIChwcm9jZXNzKCkuY29ubmVjdGlv
bigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlPihtX2lkZW50aWZpZXIsIGFjdGl2
aXR5U3RhdGVVcGRhdGVUaW1lb3V0IC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1l
KSwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2
ZXMpKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPT0gQWN0aXZpdHlTdGF0
ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPD0gbV9hY3Rpdml0
eVN0YXRlQ2hhbmdlSUQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCA1YTE0ZmJlNGRjZC4uYjJmNzcyOWZkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShj
b25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb246OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsK
IH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBjaGFsbGVuZ2UpCit2b2lkIFNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5PiYmIGNoYWxsZW5nZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKICAg
ICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKaW5kZXggOTMyNDVmMGRjNzYuLmU5MzY1YWZh
YzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5oCkBAIC00MSwxNCArNDEsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJv
b2wgaGFzUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtl
ckRpcmVjdG9yeSk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5PiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwogCiAgICAgdm9pZCBzdGFydChjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9u
SUQpOwogICAgIHZvaWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBk
YXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICBj
b25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSB7IHJl
dHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAK
IHByaXZhdGU6CiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC01OSw3ICs1OSw3IEBA
IHByaXZhdGU6CiAgICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYs
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwog
CiAgICAgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKLSAg
ICB1aW50NjRfdCBtX3NlcnZpY2VXb3JrZXJQYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9zZXJ2aWNlV29ya2VyUGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNw
cAppbmRleCAxMzQ2ZmNjMDVjNS4uZjZkM2I1MzZkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQg
U3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJiwKIAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dn
aW5nU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChy
ZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBh
Z2VJRCgpLCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9z
dXNwZW5zaW9uU3RhdGUpLCAnKScpOworICAgIHJldHVybiBkZWJ1Z1N0cmluZygiKDB4IiwgaGV4
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSksICIgcGFnZSBJRCAiLCBtX3BhZ2Uu
cGFnZUlEKCkudG9VSW50NjQoKSwgIiwgbV9zdXNwZW5zaW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KG1fc3VzcGVuc2lvblN0YXRlKSwgJyknKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggOTcxMWIyMzM3MjEuLmFkNzgx
ZjZmODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC03
Myw3ICs3Myw3IEBAIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojp+V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkoKQogewogICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hp
ZXMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3By
b2Nlc3NlcykgewotICAgICAgICBwcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogICAgICAgICBwcm9jZXNzLT5kaWREZXN0
cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMpOwogICAgIH0KICNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtODUsNyArODUsNyBAQCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3
ZWJQcm9jZXNzUHJveHksIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7
CiAgICAgaWYgKG1fcHJvY2Vzc2VzLmFkZCgmd2ViUHJvY2Vzc1Byb3h5KS5pc05ld0VudHJ5KQot
ICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlm
aWVyKCkudG9VSW50NjQoKSwgKnRoaXMpOworICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCksICp0aGlzKTsKIAogICAgIEFTU0VSVChw
YXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChjb25zdCBh
dXRvJiB3b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMpCkBAIC0xMTUsNyArMTE1LDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNz
UHJveHkmIHdlYlByb2Nlc3NQcm8KICAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMoJndl
YlByb2Nlc3NQcm94eSkpOwogCiAgICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNzUHJv
eHkpOwotICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYgd29ybGQpCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQK
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXNlckNvbnRlbnRXb3JsZHMuYWRkKCZ3b3JsZCk7CiAg
ICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGZvciAoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsg
c3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsgc3RkOjpt
YWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVudGlmaWVy
KCkpOwogICAgIH0KIH0KIApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRl
bnRXCiB7CiAgICAgaWYgKHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01lc3NhZ2Uo
d29ybGQsIG51bWJlck9mVXNlc1RvUmVtb3ZlKSkgewogICAgICAgICBmb3IgKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxk
cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAg
ICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRp
ZmllcigpKTsKICAgICB9CiB9CiAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRl
ZFNldDxSZQogICAgIH0KIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9w
cm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9S
ZW1vdmUpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSW5qZWN0
VXNlclNjcmlwdEltbWVkaWF0ZWx5IGltbWVkaWF0ZWx5KQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2Vy
U2NyaXB0JiB1c2VyU2NyaXB0LCBJCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBl
bmQoJnVzZXJTY3JpcHQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCks
IHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSwgaW1tZWRp
YXRlbHkpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7IHVz
ZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVz
ZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJT
Y3JpcHQmIHVzZXJTY3JpcHQpCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJT
Y3JpcHQKICAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQu
dXNlckNvbnRlbnRXb3JsZCgpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mg
OiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVz
ZXJTY3JpcHQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZVVzZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkp
LCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5yZW1vdmVB
bGwoJnVzZXJTY3JpcHQpOwogCkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJT
Y3JpcHQKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJT
Y3JpcHRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7
IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92
ZUFsbFVzZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwog
CiAgICAgdW5zaWduZWQgdXNlclNjcmlwdHNSZW1vdmVkID0gbV91c2VyU2NyaXB0cy0+cmVtb3Zl
QWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU2NyaXB0PihbJl0oY29uc3QgYXV0byYgdXNlclNj
cmlwdCkgewogICAgICAgICByZXR1cm4gJnVzZXJTY3JpcHQtPnVzZXJDb250ZW50V29ybGQoKSA9
PSAmd29ybGQ7CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogICAgICAgICB3b3JsZElkZW50aWZpZXJz
LnVuY2hlY2tlZEFwcGVuZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAg
ICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFs
bFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7
CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7
CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTIzMCw3ICsy
MzAsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVT
aGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyUwogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5l
bGVtZW50cygpLmFwcGVuZCgmdXNlclN0eWxlU2hlZXQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVz
ZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxl
U2hlZXQudXNlclN0eWxlU2hlZXQoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7Cisg
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
QWRkVXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxk
LT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRl
bnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCkBA
IC0yMzgsNyArMjM4LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXMKICAgICBSZWY8QVBJOjpV
c2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTdHlsZVNoZWV0LnVzZXJDb250ZW50V29ybGQo
KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0g
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
UmVtb3ZlVXNlclN0eWxlU2hlZXQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQu
aWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHls
ZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSks
IGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5yZW1v
dmVBbGwoJnVzZXJTdHlsZVNoZWV0KTsKIApAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0
eWxlU2hlZXQmIHVzCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVB
bGxVc2VyU3R5bGVTaGVldHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBm
b3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVz
ZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9
KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIHVzZXJTdHlsZVNoZWV0c1JlbW92ZWQg
PSBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU3R5
bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTdHlsZVNoZWV0KSB7CiAgICAgICAgIHJldHVy
biAmdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0yNjks
NyArMjY5LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxs
VXNlclN0eWxlU2hlZXRzKCkKICAgICAgICAgd29ybGRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBl
bmQod29ybGRDb3VudFBhaXIua2V5LT5pZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVl
dHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVB
bGxVc2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7CiAKICAg
ICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCkBAIC0yOTAsNyArMjkw
LDcgQEAgYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1l
c3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2UKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVy
cy5hZGQoaGFuZGxlci5pZGVudGlmaWVyKCksICZoYW5kbGVyKTsKIAogICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIGhh
bmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2Ny
aXB0TWVzc2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50
aWZpZXIoKSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpKTsKICAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KQEAgLTMwMCw3ICszMDAsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmlu
ZwogICAgIGZvciAoYXV0byBpdCA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmJlZ2luKCksIGVu
ZCA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAg
ICAgICAgaWYgKGl0LT52YWx1ZS0+bmFtZSgpID09IG5hbWUgJiYgJml0LT52YWx1ZS0+dXNlckNv
bnRlbnRXb3JsZCgpID09ICZ3b3JsZCkgewogICAgICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0LT52YWx1ZS0+aWRlbnRpZmllcigpKSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBp
ZGVudGlmaWVyKCkpOwogCiAgICAgICAgICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1v
dmUoaXQpOwogCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFu
ZGxlcnMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2
NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRp
ZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgbnVtYmVyUmVtb3ZlZCA9
IDA7CiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMucmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5
KSB7CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW4KICAgICByZW1v
dmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7CiB9CiAKLXZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiBm
cmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0
X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJl
bmNlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFn
ZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTM1MSw3ICszNTEsNyBAQCB2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QoQVBJOjpDb250ZW50
UnVsZUxpc3QmIGNvbgogICAgIGF1dG8gcGFpciA9IHN0ZDo6bWFrZV9wYWlyKGNvbnRlbnRSdWxl
TGlzdC5uYW1lKCksIGNvbnRlbnRSdWxlTGlzdC5jb21waWxlZFJ1bGVMaXN0KCkuZGF0YSgpKTsK
IAogICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxl
TGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1
bGVMaXN0cyh7IHBhaXIgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nl
c3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpBZGRDb250ZW50UnVsZUxpc3RzIHsgaWRl
bnRpZmllcigpLCB7IHBhaXIgfSB9LCAwKTsKQEAgLTM2Miw3ICszNjIsNyBAQCB2b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgU3Ry
aW5nJiBuYW1lKQogICAgIG1fY29udGVudFJ1bGVMaXN0cy5yZW1vdmUobmFtZSk7CiAKICAgICBm
b3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50UnVsZUxpc3Qo
bmFtZSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50UnVsZUxpc3Qo
bmFtZSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdv
cmtQcm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QgeyBpZGVudGlmaWVyKCks
IG5hbWUgfSwgMCk7CkBAIC0zNzMsNyArMzczLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6cmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpCiAgICAgbV9jb250ZW50UnVs
ZUxpc3RzLmNsZWFyKCk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50aWZpZXIoKSk7CiAKICAgICBmb3Ig
KGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVBbGxDb250
ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpIH0sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmgKaW5kZXggNjIzMzAxMTE2ZWQuLjBlZDM2YTU5Y2MzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTExMCw3ICsxMTEs
NyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IEZyYW1lSW5mb0RhdGEm
LCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsK
IAogICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQm
KTsKICAgICB2b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYsIHVuc2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODE3MTQzNTFmY2Uu
LjI1YTRlMjkxMjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSArMjQsNSBAQAogICovCiAKIG1lc3NhZ2VzIC0+IFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IHsKLURpZFBvc3RNZXNzYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1aW50NjRf
dCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2FudHNDb25u
ZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0
cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2Fn
ZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRzQ29ubmVjdGlvbgog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9s
bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5j
cHAKaW5kZXggMjQ4MTgyZDgwOTIuLjFlOTFhYmI2ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTY2LDEwICs2NiwxMCBA
QCBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bVNjcm9sbEV2ZW50UmF0aW9Gb3JTd2lwZSA9IDAu
NTsKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXpl
VGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiAjZW5kaWYKIAotc3RhdGljIEhhc2hNYXA8dWludDY0X3Qs
IFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFn
ZXMoKQorc3RhdGljIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxl
cio+JiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKQogewogICAgIC8vIFRoZSBr
ZXkgaW4gdGhpcyBtYXAgaXMgdGhlIGFzc29jaWF0ZWQgcGFnZSBJRC4KLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDx1aW50NjRfdCwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4+IHZp
ZXdHZXN0dXJlQ29udHJvbGxlcnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
UGFnZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+PiB2aWV3R2VzdHVyZUNvbnRy
b2xsZXJzOwogICAgIHJldHVybiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzLmdldCgpOwogfQogCkBA
IC0xMTYsNyArMTE2LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbm5lY3RUb1By
b2Nlc3MoKQogICAgIG1faXNDb25uZWN0ZWRUb1Byb2Nlc3MgPSB0cnVlOwogfQogCi1WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1
cmUodWludDY0X3QgcGFnZUlELCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBnZXN0
dXJlSUQpCitWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29u
dHJvbGxlckZvckdlc3R1cmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6Okdlc3R1cmVJRCBnZXN0dXJlSUQpCiB7CiAgICAgYXV0byBnZXN0dXJlQ29udHJvbGxl
ckl0ZXIgPSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKS5maW5kKHBhZ2VJRCk7
CiAgICAgaWYgKGdlc3R1cmVDb250cm9sbGVySXRlciA9PSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJz
Rm9yQWxsUGFnZXMoKS5lbmQoKSkKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6Zm9yY2VSZXBhaW50SWZOZWVkZWQoKQogCiAgICAgbV9oYXNPdXRzdGFuZGlu
Z1JlcGFpbnRSZXF1ZXN0ID0gdHJ1ZTsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFn
ZVByb3h5LnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlE
KCk7CiAgICAgR2VzdHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBt
X3dlYlBhZ2VQcm94eS5mb3JjZVJlcGFpbnQoVm9pZENhbGxiYWNrOjpjcmVhdGUoW3BhZ2VJRCwg
Z2VzdHVyZUlEXSAoQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoYXV0
byBnZXN0dXJlQ29udHJvbGxlciA9IGNvbnRyb2xsZXJGb3JHZXN0dXJlKHBhZ2VJRCwgZ2VzdHVy
ZUlEKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVy
LmgKaW5kZXggNDMxYzI3NjZkMDguLmMxNjcwZDNhOTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0xNzUs
NyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92
ZXJyaWRlOwogCi0gICAgc3RhdGljIFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxlckZv
ckdlc3R1cmUodWludDY0X3QgcGFnZUlELCBHZXN0dXJlSUQpOworICAgIHN0YXRpYyBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JHZXN0dXJlKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBHZXN0dXJlSUQpOwogCiAgICAgc3RhdGljIEdlc3R1cmVJRCB0YWtlTmV4dEdlc3R1cmVJ
RCgpOwogICAgIHZvaWQgd2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAppbmRleCBmMmU3YjkzNDA1
Ny4uOTkxZGMyZmNmZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0
ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5r
U3RvcmUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0b3JlOjp3ZWJQ
cm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6Q29ubmUKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZp
c2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU2hhcmVkU3RyaW5nSGFzaCBs
aW5rSGFzaCkKK3ZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRlZExpbmtIYXNoRnJvbVBh
Z2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNoIGxpbmtIYXNoKQogewog
ICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFn
ZUlEKSkgewogICAgICAgICBpZiAoIXdlYlBhZ2VQcm94eS0+YWRkc1Zpc2l0ZWRMaW5rcygpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4IDA2ZjIwYmE5
MWNiLi4wMmI0OWJhYzU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5r
U3RvcmUuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkSW52YWxpZGF0
ZVNoYXJlZE1lbW9yeSgpIGZpbmFsOwogICAgIHZvaWQgZGlkVXBkYXRlU2hhcmVkU3RyaW5nSGFz
aGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoPiYgYWRkZWRIYXNoZXMs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoPiYgcmVtb3ZlZEhhc2hlcykg
ZmluYWw7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBh
Z2VJRCwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCk7CisgICAgdm9pZCBhZGRWaXNpdGVkTGlu
a0hhc2hGcm9tUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkU3Ry
aW5nSGFzaCk7CiAKICAgICB2b2lkIHNlbmRTdG9yZUhhbmRsZVRvUHJvY2VzcyhXZWJQcm9jZXNz
UHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5r
U3RvcmUubWVzc2FnZXMuaW4KaW5kZXggZTc4NjJlMzY1YjAuLjJlNjZjNDI4MDhlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMu
aW4KQEAgLTIxLDUgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gVmlzaXRl
ZExpbmtTdG9yZSB7Ci0gICAgQWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBsaW5rSGFzaCkKKyAgICBBZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGxpbmtIYXNoKQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNjU2YzhkY2M1OWMuLjFm
MzIxMDAzYzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTM4MSwxMiArMzgxLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JNb3N0VmlzaWJsZVdlYlBh
Z2VJZkFueShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoc2VsZWN0ZWRQYWdlKTsKIH0KIAotUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVBy
b3h5OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZp
Z3VyYXRpb24pCitSZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xp
ZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2Vz
cywgcGFnZUlELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6
V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJv
Y2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25m
aWd1cmF0aW9uKQorV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNs
aWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VD
bGllbnQobWFrZVdlYWtQdHIocGFnZUNsaWVudCkpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RG
TW92ZShjb25maWd1cmF0aW9uKSkKICAgICAsIG1fbmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVl
UmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKSkKQEAgLTQzNSw3ICs0MzUsNyBAQCBXZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIHVpbgogI2VuZGlmCiAgICAgLCBtX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6cmVzZXRSZWNlbnRDcmFz
aENvdW50KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0cnVj
dG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJjb25zdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlm
ICghbV9jb25maWd1cmF0aW9uLT5kcmF3c0JhY2tncm91bmQoKSkKICAgICAgICAgbV9iYWNrZ3Jv
dW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwpAQCAtNDg5LDcgKzQ4OSw3IEBA
IFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAKIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVz
dHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVChtX3By
b2Nlc3MtPndlYlBhZ2UobV9wYWdlSUQpICE9IHRoaXMpOwogI2lmICFBU1NFUlRfRElTQUJMRUQK
QEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiAgICAgQVNTRVJUKCFtX2lz
Q2xvc2VkKTsKICAgICBBU1NFUlQoIWhhc1J1bm5pbmdQcm9jZXNzKCkpOwogCi0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzczogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzczog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2Vi
UGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CiAg
ICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CkBAIC03NjMsNyArNzYzLDcgQEAg
Ym9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZp
Z2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3Vy
cmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSk7CiAgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNwZW5k
ZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNo
b3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7
CiAKLSAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNy
ZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQg
aXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygp
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0
ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBh
Z2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNz
IHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCkudG9VSW50NjQo
KSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7
CiAKICAgICAvLyBJZiB0aGUgY2xpZW50IGZvcmNlZCBhIHN3YXAgdGhlbiBpdCBtYXkgbm90IGJl
IHdlYi1jb21wYXRpYmxlIHRvIGtlZXAgdGhlIHByZXZpb3VzIHBhZ2UgYmVjYXVzZSBvdGhlciB3
aW5kb3dzIG1heSBoYXZlIGFuIG9wZW5lciBsaW5rIHRvIGl0LiBXZSB0aHVzIGNsb3NlIGl0IGFz
IHNvb24gYXMgd2UKICAgICAvLyBjYW4gZG8gc28gd2l0aG91dCBmbGFzaGluZy4KQEAgLTc4MSw3
ICs3ODEsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJs
ZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogdm9pZCBXZWJQYWdlUHJveHk6OnN3
YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBzdGQ6OnVuaXF1
ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlYSwgUmVmUHRyPFdlYkZyYW1lUHJv
eHk+JiYgbWFpbkZyYW1lKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3dhcFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3dhcFRvV2ViUHJv
Y2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcHJvY2VzcyA9IFdU
Rk1vdmUocHJvY2Vzcyk7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJz
aXRlRGF0YVN0b3JlKCk7CkBAIC04NzMsMTAgKzg3MywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vz
c0ZvclJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lz
Q2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5j
aFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJl
bG9hZDogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKQEAgLTg4NSw3ICs4ODUsNyBAQCBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQo
KQogICAgIGxhdW5jaFByb2Nlc3MocmVnaXN0cmFibGVEb21haW4pOwogCiAgICAgaWYgKCFtX2Jh
Y2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0g
dG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3VycmVudCBpdGVtIHRv
IHJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCkBAIC05MDAsMTAgKzkwMCwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogCiBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NXaXRoSXRlbShXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtJiBpdGVtKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVt
OiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogcGFnZSBpcyBjbG9z
ZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApAQCAtOTU2LDcgKzk1Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgp
CiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwogCkBAIC0xMDMxLDcgKzEwMzEsNyBA
QCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nl
c3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5Q2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CiAKICAgICAvLyBDbG9zZSB3aXRob3V0IGRlbGF5IGlmIHRoZSBwcm9jZXNzIGFsbG93cyBp
dC4gT3VyIGdvYWwgaXMgdG8gdGVybWluYXRlCiAgICAgLy8gdGhlIHByb2Nlc3MsIHNvIHdlIGNo
ZWNrIGEgcGVyLXByb2Nlc3Mgc3RhdHVzIGJpdC4KQEAgLTEwNzcsNyArMTA3Nyw3IEBAIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVl
c3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxl
RG9tYWluIHsgcmVxdWVzdC51cmwoKSB9KTsKQEAgLTEwOTEsNyArMTA5MSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
UmVxdWVzdFdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBw
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAt
MTEyMCwxMCArMTEyMCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2
aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogCiBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVS
TFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZywgQVBJOjpP
YmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRGaWxlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsb2FkRmlsZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3Nl
ZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBX
ZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwog
CiAgICAgVVJMIGZpbGVVUkwgPSBVUkwoVVJMKCksIGZpbGVVUkxTdHJpbmcpOwogICAgIGlmICgh
ZmlsZVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxl
IGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTQyLDcgKzExNDIsNyBAQCBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0
cmluZywgY29ucwogICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVS
TChVUkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIXJlc291
cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2Fs
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
IH0KICAgICB9CkBAIC0xMTcyLDEwICsxMTcyLDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25z
CiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBT
dHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZERhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Ns
b3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0
YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApA
QCAtMTE4OSw3ICsxMTg5LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5
Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNo
b3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb246IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
RGF0YVdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIEFT
U0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAgLTEyMTUsMTMgKzEyMTUsMTMgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29u
c3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFs
dGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOwogCiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGhh
bmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBub3QgYXR0ZW1wdCB0bwogICAg
IC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9hZCBhcyB0aGlzIHdpbGwgcHJl
dmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKICAgICAvLyBoYW5kbGVkIHByb3Bl
cmx5LgogICAgIGlmIChtX2lzQ2xvc2VkIHx8IG1faXNMb2FkaW5nQWx0ZXJuYXRlSFRNTFN0cmlu
Z0ZvckZhaWxpbmdQcm92aXNpb25hbExvYWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhl
cik6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTI1OCwxMCArMTI1OCwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgUwogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBj
bG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjg1LDEw
ICsxMjg1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpE
YXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0
cmluZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9pbnQgc2NyZWVuUG9pbnQpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzA0LDEwICsxMzA0LDEwIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25z
dCBTdHJpbmcmIHVybFN0cmluZywKIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKCkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9wTG9hZGluZzogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3Rv
cExvYWRpbmc6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1
bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlk
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZh
bGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMzIxLDcgKzEzMjEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmco
KQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25T
ZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgInJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25I
YW5kbGU7CiAKQEAgLTEzOTgsNyArMTM5OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAK
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5
cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3
YXJkSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVt
IHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKQEAgLTE0MjAsMTAgKzE0MjAsMTAgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3JvbGxQ
b3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVz
dG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBv
c2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjog
cGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTE1NTAsNyArMTU1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpjbGVhckluc3BlY3RvclRhcmdldHMoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlSW5z
cGVjdG9yVGFyZ2V0cygpCiB7Ci0gICAgU3RyaW5nIHBhZ2VUYXJnZXRJZCA9IG1ha2VTdHJpbmco
InBhZ2UtIiwgbV9wYWdlSUQpOworICAgIFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBtYWtlU3RyaW5n
KCJwYWdlLSIsIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgIG1faW5zcGVjdG9yQ29udHJvbGxl
ci0+Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0
b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0KIApAQCAtMjg3Myw3ICsyODczLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJ
OjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1l
TG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZv
LCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2Vj
dXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNl
ckRhdGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IHByZXZpb3VzUElE
ID0gJWksIG5ld1BJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
Y29tbWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcHJvdmlz
aW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJv
Y2VzcyA9IG1fbWFpbkZyYW1lID8gbWFrZU9wdGlvbmFsKG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkp
IDogV1RGOjpudWxsb3B0OwogCkBAIC0yOTEzLDcgKzI5MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9j
ZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRl
ZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlUHJveHksIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYg
bmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5h
dmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
bmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIG5ld1Byb2Nlc3NQSUQgPSAlaSwgaGFzU3VzcGVuZGVkUGFnZSA9
ICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
LCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7
CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVz
JyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmln
YXRpb24ubG9nZ2luZ1N0cmluZygpKTsKIAogICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkgewpA
QCAtMzA3NCw3ICszMDc0LDcgQEAgU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0
YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXQKIAogUmVmUHRyPEFQ
STo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNz
aW9uU3RhdGUgc2Vzc2lvblN0YXRlLCBib29sIG5hdmlnYXRlKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3JlRnJv
bVNlc3Npb25TdGF0ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fc2Vz
c2lvblJlc3RvcmF0aW9uUmVuZGVyVHJlZVNpemUgPSAwOwogICAgIG1faGl0UmVuZGVyVHJlZVNp
emVUaHJlc2hvbGQgPSBmYWxzZTsKQEAgLTM5MzIsOCArMzkzMiw4IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQog
ICAgICAgICBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0
aW9uSUQpOwogCi0gICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4g
cHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlE
ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1fcGFnZUlE
LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHVy
bC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBMT0coTG9hZGluZywgIldlYlBh
Z2VQcm94eSAlIiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBpZCAlaSBkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1
NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2Fk
U3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMzk4NSw3ICszOTg1LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KHVpbnQ2NF90IGYKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RG
b3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHBy
b2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhM
b2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNp
b25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIg
UFJJdTY0ICIsIHVybCAlcyIsIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgcmVxdWVzdC51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBw
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDE0LDcgKzQwMTQsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQoUmVmPAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUg
ZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RG
b3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNs
aWVudCgpKTsKIApAQCAtNDAyNyw3ICs0MDI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHIK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQwNzQsOCArNDA3
NCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92
aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRp
bmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAg
IExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIg
cHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lv
bmFsVVJMICVzIiwgbV9wYWdlSUQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zp
c2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2Rl
ID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCwg
ZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIExP
RyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJv
Y2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFs
VVJMICVzIiwgbV9wYWdlSUQudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgcHJvdmlzaW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0g
JXMsIGNvZGUgPSAlZCIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCksIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVy
cm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGll
bnQoKSk7CiAKQEAgLTQxNDEsOSArNDE0MSw5IEBAIHN0YXRpYyBib29sIGlzTm9uVW5pcXVlTmF2
aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlvbihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEgcmVxCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZy
YW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBl
LCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBj
b250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0lu
c2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIExPRyhMb2Fk
aW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9y
RnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1fcGFnZUlELCBuYXZpZ2F0aW9uSUQpOwor
ICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRD
b21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1fcGFnZUlELnRvVUlu
dDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2Fy
ZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1fYmFj
a0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQ
cm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQyNTQsNyArNDI1NCw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwog
CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAt
NDI3OCw3ICs0Mjc4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmkKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcs
ICJXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSAtIFdlYlBhZ2VQcm94eSAlcCB3
aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiBkaWRGaW5pc2hMb2FkIiwgdGhpcywgbmF2aWdh
dGlvbklEKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hM
b2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJh
bWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9h
ZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdl
Q2xpZW50KCkpOwogCkBAIC00MzIzLDcgKzQzMjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlELCBlcnJvci5k
b21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVz
LCBjb2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCksIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVy
cm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGll
bnQoKSk7CiAKQEAgLTQzNjUsNyArNDM2NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWls
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVE
b2N1bWVudE5hdmlnYXRpb25UeXBlLCBVUkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlk
U2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJv
dGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NTM1LDcgKzQ1MzUsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29s
LCBXZWJGcmFtZVBvbGljeUxpc3RlbgogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKLSAgICBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJh
bWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LAogICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShm
cmFtZVNlY3VyaXR5T3JpZ2luKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb25EYXRhKSwKQEAgLTQ1NDMsNyArNDU0Myw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50
NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLAotICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwKKyAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKQEAgLTQ1NTksNyArNDU1
OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
QXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcywgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKLSAgICBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3Jp
Z2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAg
ICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFs
UmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNDY5OSw3ICs0Njk5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXMKICAgICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZy
YW1lKQogICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm8u
Y29weVJlZigpOwogICAgICAgICBlbHNlIGlmICghZnJvbUFQSSkKLSAgICAgICAgICAgIHNvdXJj
ZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2Uob3JpZ2luYXRpbmdQYWdl
SUQpIDogbnVsbHB0cik7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1l
SW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQg
PyBwcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyKTsKIAogICAg
ICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRB
Y3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7
CiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBM
aW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgpAQCAtNDc3Miw3ICs0NzcyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5
JiBmcmFtZSwgY29uc3QgVVJMJiBwYWcKICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBp
c01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQs
CisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtNDc5MCw3ICs0Nzkw
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXMKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0
aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJh
bWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBG
cmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRl
bGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtNDkyMyw3ICs0OTIzLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25E
YXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRp
b25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgV2ViTmF2
aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFT
aGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC00OTQzLDcgKzQ5NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJl
ZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rv
cihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTcwLDcgKzQ5NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5n
LCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VV
UkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZy
YW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9y
bVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGll
bnQoKSk7CiAKQEAgLTUwMTgsMTQgKzUwMTgsMTQgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUla
RVJfQURESVRJT05TXzYKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3
UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dG
ZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxh
eWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0
IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBX
aW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdl
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2Vzcywg
bV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwot
ICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFn
ZUlEKSk7CisgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpj
cmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IG1fcHJv
Y2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CiAgICAgYXV0byBt
YWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwoKSA6IFVSTCgpOwog
ICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSld
IChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFu
ZXdQYWdlKSB7Ci0gICAgICAgICAgICByZXBseSgwLCBXVEY6Om51bGxvcHQpOworICAgICAgICAg
ICAgcmVwbHkoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAKQEAgLTU4MzQsNyArNTgzNCw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2Vi
UGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdl
YlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJl
dHVybiBtX3BhZ2VJRDsKKyAgICByZXR1cm4gbV9wYWdlSUQudG9VSW50NjQoKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94
eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCkKQEAgLTY3MTUsNyArNjcxNSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpmcmFtZVNldExhcmdlc3RGcmFtZUNoYW5nZWQodWludDY0X3QgZnJhbWVJ
RCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVV
bnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTY3MjcsNyArNjcyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNz
RGlkQmVjb21lVW5yZXNwb25zaXZlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRC
ZWNvbWVSZXNwb25zaXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3Ms
ICJwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggNmM1YWQ2MjVkMTIuLjU0YzRhZmNhMWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtNjYsNiArNjYsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzTGlmZXRpbWVUcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5Lmgi
CiAjaW5jbHVkZSAiV2ViVW5kb1N0ZXBJRC5oIgogI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llc0Rh
dGEuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KQEAgLTgyLDYgKzgzLDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVByb2R1
Y2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGxhdGZvcm1FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg+
CkBAIC0zODIsMTQgKzM4NCwxNCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpP
YmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogI2VuZGlmCiAgICAgLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8V2ViUGFnZVByb3h5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxX
ZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0
X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAgc3RhdGljIFJl
ZjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAg
ICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAogICAgIHN0YXRpYyB2b2lkIGZvck1vc3RWaXNp
YmxlV2ViUGFnZUlmQW55KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlBhZ2VQcm94eSopPiYmKTsKIAog
ICAgIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsK
IAotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7
IH0KIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCkBAIC0xNTAyLDcg
KzE1MDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0
YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0
b3JlJiwgdWludDY0X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVS
TEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2
NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKLSAgICAgICAgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCisgICAgICAgIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0
YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwKICAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwg
Y29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAogICAgICAgICB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5n
JiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
KTsKQEAgLTE1MTEsNyArMTUxMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0aW9u
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRB
c0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpu
dWxsb3B0KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmKTsKICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAg
RnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZy
YW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3Vt
ZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSk7CkBAIC0xNTUxLDcgKzE1NTMsNyBAQCBXRUJQQUdFUFJPWFlfTE9BRE9QVElN
SVpFUl9BRERJVElPTlNfMQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZSh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVv
dGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNl
VXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZCh1aW50NjRfdCk+JiYpOwogCiBwcml2YXRlOgotICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50
JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJik7CisgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJv
eHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKICAgICB2b2lkIG5vdGlmeVBy
b2Nlc3NQb29sVG9QcmV3YXJtKCk7CkBAIC0xNjI3LDEzICsxNjI5LDEzIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCiAg
ICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFt
ZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJ
bmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNw
b25zZSwgY29uc3QgVXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwK
LSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisg
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7
CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBm
cmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dB
Y3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNjU1LDcg
KzE2NTcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAog
ICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9E
YXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJik7Cisg
ICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkm
Jik7CiAgICAgdm9pZCBzaG93UGFnZSgpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0
IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVs
YXllZFJlcGx5JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwg
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBs
eSYmKTsKQEAgLTIzMjcsNyArMjMyOSw3IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FE
RElUSU9OU18yCiAgICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU+IG1fdmFsaWRh
dGlvbkJ1YmJsZTsKICNlbmRpZgogCi0gICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAg
Y29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBib29sIG1faXNQ
YWdlU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zpc2l0ZWRMaW5rcyB7IHRy
dWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA2ZmNlY2RjNmI2NS4uYjFlNzk5MjIzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcgQEAK
IAogbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIFVJIG1lc3NhZ2VzCi0gICAgQ3Jl
YXRlTmV3UGFnZShzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJ
bmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVy
ZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhKSAtPiAodWludDY0X3QgbmV3UGFnZUlELCBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM+IG5ld1BhZ2VQYXJhbWV0ZXJzKSBTeW5jaHJvbm91cworICAgIENyZWF0
ZU5ld1BhZ2Uoc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpXaW5k
b3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcywgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gbmV3UGFnZUlELCBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM+IG5ld1BhZ2VQYXJhbWV0ZXJzKSBTeW5jaHJvbm91cwogICAgIFNob3dQYWdlKCkKICAg
ICBDbG9zZVBhZ2UoYm9vbCBzdG9wUmVzcG9uc2l2ZW5lc3NUaW1lcikKICAgICBSdW5KYXZhU2Ny
aXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkgU3luY2hyb25v
dXMKQEAgLTEwNCw4ICsxMDQsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAg
IyBQb2xpY3kgbWVzc2FnZXMKICAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBm
cmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNw
b25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVU
eXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktp
dDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBv
bGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0
OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktp
dDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQotICAgIERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNN
YWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0
eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0
aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0
YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKSAtPiAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNr
SWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2Fk
SUQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVz
KSBTeW5jaHJvbm91cworICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1l
SW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJl
ZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3Rl
bmVySUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3Qg
ZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
cG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAo
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgZW51
bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5l
d05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIE9wdGlvbmFsPFdl
YktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBTeW5jaHJvbm91cwog
ICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHN0cnVjdCBX
ZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBVbmFibGVUb0ltcGxlbWVu
dFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBX
ZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKaW5kZXggYzgwMjNkZTQxNjEu
LmY0OTcxNTFkNzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgV2ViUHJv
Y2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJv
eHksIFdlYlByb2NlCiAgICAgUkVMRUFTRV9BU1NFUlQoIXByb2Nlc3MuaXNQcmV3YXJtZWQoKSk7
CiAKICAgICBpZiAobV9wcm9jZXNzZXMuYWRkKCZwcm9jZXNzKS5pc05ld0VudHJ5KSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICIlcCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVy
OjphZGRXZWJQYWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9j
ZXNzLnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgICAg
IFJFTEVBU0VfTE9HKExvYWRpbmcsICIlcCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjph
ZGRXZWJQYWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNz
LnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQcm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsK
ICAgICAgICAgd2ViUHJvY2Vzc1dpbGxPcGVuQ29ubmVjdGlvbihwcm9jZXNzLCAqcHJvY2Vzcy5j
b25uZWN0aW9uKCkpOwogICAgIH0KIApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYlByb2Nlc3NM
aWZldGltZU9ic2VydmVyOjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5
LCBXZWJQcgogICAgIHdlYlBhZ2VEaWRDbG9zZUNvbm5lY3Rpb24od2ViUGFnZVByb3h5LCAqcHJv
Y2Vzcy5jb25uZWN0aW9uKCkpOwogCiAgICAgaWYgKG1fcHJvY2Vzc2VzLnJlbW92ZSgmcHJvY2Vz
cykpIHsKLSAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJ
RCgpLnRvVUludDY0KCkpOwogICAgICAgICB3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKHBy
b2Nlc3MsICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDBlMTM5ZjMwZDljLi4wYjhiMzQ1ZWY4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTI5
Niw5ICsxMjk2LDkgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2
aWNlV29ya2Vycyhjb25zdCBXZWJzaXRlRGF0YVN0b3JlJiBzdG8KIH0KICNlbmRpZgogCi12b2lk
IFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3Qg
cGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29s
OjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX3Nlc3Np
b25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDx1aW50NjRf
dD4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9z
ZXNzaW9uVG9QYWdlSURzTWFwLmFkZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIEhhc2hTZXQ8UGFn
ZUlkZW50aWZpZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgYXV0byBzZXNzaW9uSUQg
PSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIFdlYlBy
b2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlE
LCBXZWJzaXRlRGF0YQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVz
aW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3Rv
cmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7
CiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CiAgICAgYXV0byBp
dGVyYXRvciA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Npb25JRCk7CkBAIC0yMjEx
LDcgKzIyMTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vz
c0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmCiB9CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCi1TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0X3QgcGFnZUlEKSBjb25z
dAorU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBmb3IgKGF1dG8qIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7CkBA
IC0yNTE5LDcgKzI1MTksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhckN1cnJlbnRNb2Rp
ZmllclN0YXRlRm9yVGVzdGluZygpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2VzKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpDbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3Jh
dGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBm
cm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBh
Z2VJRCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlu
a0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaAppbmRleCAxNjU1NDViMWEyZi4uMTdlM2U4MDJiYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTQ4LDYgKzE0OCwxOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVz
c2FnZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXImKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0
aW5hdGlvbklEKTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFk
ZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVy
JiByZWNlaXZlcikKKyAgICB7CisgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKKyAgICB9Cisg
ICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVj
ZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRl
bnRpZmllcjxUPiBkZXN0aW5hdGlvbklEKQorICAgIHsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7Cisg
ICAgfQogCiAgICAgYm9vbCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpE
ZWNvZGVyJik7CiAgICAgYm9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CkBAIC0xOTMs
OCArMjA1LDggQEAgcHVibGljOgogCiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFn
ZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCi0gICAgdm9p
ZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRl
RGF0YVN0b3JlJik7Ci0gICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2
NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdX
ZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3Jl
Jik7CisgICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAgICAgYm9vbCBoYXNQYWdlc1VzaW5nV2Vi
c2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3JlJikgY29uc3Q7CiAKICAgICBjb25zdCBTdHJp
bmcmIGluamVjdGVkQnVuZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+
aW5qZWN0ZWRCdW5kbGVQYXRoKCk7IH0KQEAgLTM2NSw3ICszNzcsNyBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluJiYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7Ci0gICAgU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdl
SUQodWludDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllcikgY29uc3Q7CiAgICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biwgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNv
bnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclByb2Nlc3NlczsgfQogICAgIHZvaWQgc2V0QWxs
b3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wgYWxsb3dzKSB7IG1fYWxs
b3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxsb3dzOyB9CiAgICAgYm9v
bCBhbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoKSBjb25zdCB7IHJldHVy
biBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjsgfQpAQCAtNDkzLDcg
KzUwNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmREaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5n
ZWRNZXNzYWdlRm9yVGVzdGluZygpOwogICAgIHZvaWQgY2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0
ZUZvclRlc3RpbmcoKTsKIAotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFp
biwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRo
TGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oV1BFKQogICAgIHZvaWQgc2V0U2FuZGJveEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7
IG1fc2FuZGJveEVuYWJsZWQgPSBlbmFibGVkOyB9OwpAQCAtNzU4LDcgKzc3MCw3IEBAIHByaXZh
dGU6CiAgICAgfTsKICAgICBQYXRocyBtX3Jlc29sdmVkUGF0aHM7CiAKLSAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV9zZXNzaW9uVG9QYWdlSURzTWFwOwor
ICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUHJvY2Vz
c1Bvb2w+IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0aW9uVGltZXI7CiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggODIwMzQ2NWNiMjguLjY3ODMxZTIwNzgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTExMCwxMCArMTEwLDkgQEAgV2Vi
UHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKFByb2Nl
c3NJZGVudGlmaWVyIGlkZW50aWYKICAgICByZXR1cm4gYWxsUHJvY2Vzc2VzKCkuZ2V0KGlkZW50
aWZpZXIpOwogfQogCi11aW50NjRfdCBXZWJQcm9jZXNzUHJveHk6OmdlbmVyYXRlUGFnZUlEKCkK
K1BhZ2VJZGVudGlmaWVyIFdlYlByb2Nlc3NQcm94eTo6Z2VuZXJhdGVQYWdlSUQoKQogewotICAg
IHN0YXRpYyB1aW50NjRfdCB1bmlxdWVQYWdlSUQ7Ci0gICAgcmV0dXJuICsrdW5pcXVlUGFnZUlE
OworICAgIHJldHVybiBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIH0KIAogc3RhdGljIFdl
YlByb2Nlc3NQcm94eTo6V2ViUGFnZVByb3h5TWFwJiBnbG9iYWxQYWdlTWFwKCkKQEAgLTMzMCw3
ICszMjksNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2h1dERvd24oKQogICAgIG1fcHJvY2Vz
c1Bvb2wtPmRpc2Nvbm5lY3RQcm9jZXNzKHRoaXMpOwogfQogCi1XZWJQYWdlUHJveHkqIFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCitXZWJQYWdlUHJveHkqIFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJu
IGdsb2JhbFBhZ2VNYXAoKS5nZXQocGFnZUlEKTsKIH0KQEAgLTM2Myw3ICszNjIsNyBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChB
UEk6Ok9iamVjdCogbWVzc2FnZQogCiBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb24+JiYgcGFnZUNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgdWludDY0X3QgcGFnZUlEID0g
Z2VuZXJhdGVQYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7CiAg
ICAgUmVmPFdlYlBhZ2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VD
bGllbnQsICp0aGlzLCBwYWdlSUQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAg
IGFkZEV4aXN0aW5nV2ViUGFnZSh3ZWJQYWdlLmdldCgpLCBCZWdpbnNVc2luZ0RhdGFTdG9yZTo6
WWVzKTsKQEAgLTQxNSwxMCArNDE0LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVX
ZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZSwgRW5kc1VzaW5nRGF0YVN0b3JlIGVuCiAgICAg
bWF5YmVTaHV0RG93bigpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExp
bmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgdWludDY0X3Qg
cGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZp
c2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICBhdXRvJiB1c2VycyA9IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnMuZW5zdXJl
KCZ2aXNpdGVkTGlua1N0b3JlLCBbXSB7Ci0gICAgICAgIHJldHVybiBIYXNoU2V0PHVpbnQ2NF90
PiB7IH07CisgICAgICAgIHJldHVybiBIYXNoU2V0PFBhZ2VJZGVudGlmaWVyPiB7IH07CiAgICAg
fSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgQVNTRVJUKCF1c2Vycy5jb250YWlucyhwYWdlSUQp
KTsKQEAgLTQyOCw3ICs0MjcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExp
bmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZQogICAgICAgICB2
aXNpdGVkTGlua1N0b3JlLmFkZFByb2Nlc3MoKnRoaXMpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRl
ZExpbmtTdG9yZSwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92
ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvIGl0ID0gbV92aXNpdGVkTGlua1N0
b3Jlc1dpdGhVc2Vycy5maW5kKCZ2aXNpdGVkTGlua1N0b3JlKTsKICAgICBpZiAoaXQgPT0gbV92
aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbmQoKSkKQEAgLTU0MSw3ICs1NDAsNyBAQCBib29s
IFdlYlByb2Nlc3NQcm94eTo6ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpCiB9CiAjZW5kaWYK
IAotYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCh1aW50NjRf
dCBwYWdlSUQpIGNvbnN0Citib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdl
V2l0aElEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8qIHBy
b3Zpc2lvbmFsUGFnZSA6IG1fcHJvdmlzaW9uYWxQYWdlcykgewogICAgICAgICBpZiAocHJvdmlz
aW9uYWxQYWdlLT5wYWdlKCkucGFnZUlEKCkgPT0gcGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA5YTZjYmYxZjQ2MC4uYWQzZjAzOGRkNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNz
YWdlUG9ydElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFN0cmluZ0hh
c2guaD4KQEAgLTk3LDcgKzk4LDcgQEAgZW51bSBjbGFzcyBBbGxvd1Byb2Nlc3NDYWNoaW5nIHsg
Tm8sIFllcyB9OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGljIEF1eGlsaWFyeVByb2Nl
c3NQcm94eSwgcHVibGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVudCwgcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxX
ZWJQcm9jZXNzUHJveHk+LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQgewogcHVibGlj
OgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+PiBX
ZWJGcmFtZVByb3h5TWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZVBy
b3h5Kj4gV2ViUGFnZVByb3h5TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYg
SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJ
bml0aWF0ZWRBY3Rpb25NYXA7CiAKICAgICBlbnVtIGNsYXNzIElzUHJld2FybWVkIHsKQEAgLTEy
OCw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNp
dGVEYXRhU3RvcmUmKTsKIAogICAgIHN0YXRpYyBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JJ
ZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFdlYlBhZ2VQcm94
eSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgUmVmPFdlYlBhZ2VQcm94
eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYpOwogCiAgICAgZW51bSBjbGFzcyBCZWdpbnNVc2luZ0RhdGFTdG9yZSA6IGJvb2wgeyBObywg
WWVzIH07CkBAIC0xNDksMTAgKzE1MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2
b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3ModWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lk
IGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCi0g
ICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgdWludDY0
X3QgcGFnZUlEKTsKLSAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRM
aW5rU3RvcmUmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9y
ZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2
b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYpOwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CkBAIC0zMTEsNyArMzEyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgd2ViUGFnZU1lZGlhU3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5
Jik7CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKTsK
KyAgICBzdGF0aWMgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZ2VuZXJhdGVQYWdlSUQoKTsKICAg
ICBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQ
cmV3YXJtZWQpOwogCiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC0zNTQsNyArMzU1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJv
cGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKICNlbmRpZgogCi0gICAgYm9vbCBoYXNQ
cm92aXNpb25hbFBhZ2VXaXRoSUQodWludDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBib29sIGhh
c1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAg
ICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJikgY29uc3Q7CiAKICAgICAvLyBQbHVnaW5zCkBAIC00NDcsNyArNDQ4LDcgQEAgcHJp
dmF0ZToKICAgICBIYXNoU2V0PFByb3Zpc2lvbmFsUGFnZVByb3h5Kj4gbV9wcm92aXNpb25hbFBh
Z2VzOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25NYXAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFw
OwogCi0gICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDx1aW50NjRfdC8qIHBh
Z2VJRCAqLz4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CisgICAgSGFzaE1hcDxWaXNp
dGVkTGlua1N0b3JlKiwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4+IG1fdmlzaXRl
ZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAgICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllczsKIAogICAgIGludCBt
X251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAppbmRleCBlMzU1MzE5ZWE0
Yy4uN2Q1NzVhNDA0YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZUhhbmRsZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5k
bGVyOjp0YXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smIHRhc2spCiAgICAgcGxhdGZvcm1U
YXNrQ29tcGxldGVkKHRhc2spOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJlbW92
ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCkKK3ZvaWQg
V2ViVVJMU2NoZW1lSGFuZGxlcjo6cmVtb3ZlVGFza0Zyb21QYWdlTWFwKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rhc2tz
QnlQYWdlSWRlbnRpZmllci5maW5kKHBhZ2VJRCk7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1f
dGFza3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCA4OTk3NmM2MWY4My4uYjdhZjA3NTk3NWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTY2
LDEzICs2NiwxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0b3BUYXNr
KFdlYlBhZ2VQcm94eSYsIFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtVGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJikgPSAwOwogCi0gICAgdm9p
ZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQp
OworICAgIHZvaWQgcmVtb3ZlVGFza0Zyb21QYWdlTWFwKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCB1aW50NjRfdCB0YXNrSUQpOwogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0ZvclRhc2tJ
ZGVudGlmaWVyKHVpbnQ2NF90KSBjb25zdDsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsK
IAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxXZWJVUkxTY2hlbWVUYXNrPj4gbV90YXNrczsK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlk
ZW50aWZpZXI7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgSGFzaFNldDx1
aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyOwogICAgIAogICAgIFN5bmNMb2FkQ29t
cGxldGlvbkhhbmRsZXIgbV9zeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCmluZGV4IDE5YTZiYjg0YzNjLi45
YjdhZDVlMjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3Jt
UmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlc3BvbnMKICAgICAgICAg
bV9zeW5jUmVzcG9uc2UgPSByZXNwb25zZTsKIAogICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7Ci0g
ICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUGVy
Zm9ybVJlZGlyZWN0aW9uKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50
aWZpZXIsIHJlc3BvbnNlLCByZXF1ZXN0KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihtX3Vy
bFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVx
dWVzdCkpOwogCiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CkBAIC05Myw3ICs5
Myw3IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgaWYgKGlzU3luYygpKQogICAgICAg
ICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOwogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZVJlc3BvbnNlKG1fdXJsU2NoZW1l
SGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJl
Y2VpdmVSZXNwb25zZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlm
aWVyLCByZXNwb25zZSkpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQogCkBA
IC0xMTgsNyArMTE4LDcgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikgLT4gRXhjZXB0aW9uVHkKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2ZURhdGEobV91cmxTY2hlbWVIYW5k
bGVyLT5pZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgeyBidWZmZXIgfSksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNl
aXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCB7
IGJ1ZmZlciB9KSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CiAKQEAgLTE0
Myw3ICsxNDMsNyBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJl
c291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgICAgIG1fc3luY0RhdGEg
PSBudWxscHRyOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmll
cigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFu
ZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSk7CiAgICAgbV91cmxTY2hl
bWVIYW5kbGVyLT50YXNrQ29tcGxldGVkKCp0aGlzKTsKIAogICAgIHJldHVybiBFeGNlcHRpb25U
eXBlOjpOb25lOwpAQCAtMTY5LDQgKzE2OSwxNCBAQCB2b2lkIFdlYlVSTFNjaGVtZVRhc2s6OnN0
b3AoKQogICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcih7IH0sIGZhaWxlZEN1c3RvbVBy
b3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9KTsKIH0KIAorSVBDOjpDb25uZWN0aW9uKiBX
ZWJVUkxTY2hlbWVUYXNrOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpOworfQorCit1aW50NjRfdCBXZWJVUkxTY2hl
bWVUYXNrOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggYjg3MjA3
M2JkMjcuLjdmMTRiOTg2MDQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lVGFzay5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
TWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
c3BvbnNlLmg+CkBAIC01MSwxMyArNTIsMTMgQEAgY2xhc3MgV2ViUGFnZVByb3h5OwogCiB1c2lu
ZyBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPjsKIAotY2xhc3MgV2ViVVJMU2NoZW1lVGFz
ayA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+LCBwdWJsaWMgSW5zdGFuY2VD
b3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+IHsKK2NsYXNzIFdlYlVSTFNjaGVtZVRhc2sgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVUYXNrPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5k
ZXIsIHB1YmxpYyBJbnN0YW5jZUNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFdlYlVSTFNjaGVtZVRhc2spOwogcHVibGljOgogICAgIHN0YXRpYyBS
ZWY8V2ViVVJMU2NoZW1lVGFzaz4gY3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdl
UHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHVp
bnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRl
bnRpZmllcjsgfQogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJu
IG1fcHJvY2Vzcy5nZXQoKTsgfQogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9CkBAIC04MCw2ICs4MSwxMCBA
QCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgV2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVI
YW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgaWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXImJik7CisgICAgCisgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgSVBDOjpDb25uZWN0
aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOworICAgIHVpbnQ2NF90
IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CiAKICAgICBib29sIGlz
U3luYygpIGNvbnN0IHsgcmV0dXJuICEhbV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7IH0KIApAQCAt
ODcsNyArOTIsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFJl
ZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50aWZp
ZXI7Ci0gICAgdWludDY0X3QgbV9wYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBt
X3JlcXVlc3Q7CiAgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNw
b25zZVNlbnQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwYmY1MTEyYTllNC4uMGE4
YjBjMTEyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRh
L1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNp
dGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNTc2LDcgKzE1NzYsNyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKGJv
b2wgdmFsdWUsIENvbXBsZQogICAgICAgICBwcm9jZXNzUG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChtX3Nlc3Npb25JRCwg
dmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdh
dG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxT
dG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlu
cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2ViUGFnZSA9IFdlYlByb2Nl
c3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CmluZGV4IDY0MmUzMzA5ZDA3Li44MjJjM2ZjNzYzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RldmljZU9yaWVudGF0
aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9u
SUQuaD4KQEAgLTEzNSw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkdW1wUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsK
ICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGxvZ1Vz
ZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwot
ICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModWludDY0X3QgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYpOworICAgIHZv
aWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CiAgICAg
dm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1ByZXZhbGVudFJlc291cmNlKGNvbnN0IFVSTCYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNSZWdpc3RlcmVk
QXNSZWRpcmVjdGluZ1RvKGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0ZWRGcm9tLCBjb25zdCBVUkwm
IGhvc3RSZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKaW5k
ZXggZGM4ZDUzY2FmYmIuLjI4OTIzNzM1OTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0
aWMgY29uc3Qgc3RydWN0IHdsX2NvbXBvc2l0b3JfaW50ZXJmYWNlIGNvbXBvc2l0b3JJbnRlcmZh
Y2UgPSB7CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfd2Via2l0Z3RrX2ludGVyZmFjZSB3ZWJr
aXRndGtJbnRlcmZhY2UgPSB7CiAgICAgLy8gYmluZFN1cmZhY2VUb1BhZ2VDYWxsYmFjawotICAg
IFtdKHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1
Y3Qgd2xfcmVzb3VyY2UqIHN1cmZhY2VSZXNvdXJjZSwgdWludDMyX3QgcGFnZUlEKQorICAgIFtd
KHN0cnVjdCB3bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1Y3Qg
d2xfcmVzb3VyY2UqIHN1cmZhY2VSZXNvdXJjZSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogICAgIHsKICAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRD
b21wb3NpdG9yOjpTdXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShzdXJmYWNlUmVz
b3VyY2UpKTsKICAgICAgICAgaWYgKCFzdXJmYWNlKQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIGJvb2wg
V2F5bGFuZENvbXBvc2l0b3I6OmdldFRleHR1cmUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCB1bnNp
Z25lZCYgdGV4dHVyZSwgSW50CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdheWxhbmRD
b21wb3NpdG9yOjpiaW5kU3VyZmFjZVRvV2ViUGFnZShXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFj
ZSogc3VyZmFjZSwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6Ymlu
ZFN1cmZhY2VUb1dlYlBhZ2UoV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqIHN1cmZhY2UsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBXZWJQYWdlUHJveHkqIHdlYlBh
Z2UgPSBudWxscHRyOwogICAgIGZvciAoYXV0byogcGFnZSA6IG1fcGFnZU1hcC5rZXlzKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRv
ci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKaW5k
ZXggMTQ4MTlmOGZhYzQuLmU0NjNkODY2N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoK
ICAgICBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9kaXNwbGF5OyB9CiAgICAg
U3RyaW5nIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQogCi0g
ICAgdm9pZCBiaW5kU3VyZmFjZVRvV2ViUGFnZShTdXJmYWNlKiwgdWludDY0X3QgcGFnZUlEKTsK
KyAgICB2b2lkIGJpbmRTdXJmYWNlVG9XZWJQYWdlKFN1cmZhY2UqLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQpOwogICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYp
OwogICAgIHZvaWQgdW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9T
Lm1tCmluZGV4IDA4M2Q2ZmFmMTUyLi5jZWZkZTYxYzQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCkBAIC0y
NTEsNyArMjUxLDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0
dXJlKF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24KICAgICAgICAgaWYgKGZpbmlz
aCkKICAgICAgICAgICAgIG1fd2ViUGFnZVByb3h5Rm9yQmFja0ZvcndhcmRMaXN0Rm9yQ3VycmVu
dFN3aXBlLT5uYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQodHJhbnNpdGlvbkNvbXBsZXRlZCwgKnRh
cmdldEl0ZW0pOwogICAgIH1dOwotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAg
ICAgR2VzdHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBbbV9zd2lw
ZVRyYW5zaXRpb25Db250ZXh0IF9zZXRDb21wbGV0aW9uSGFuZGxlcjpbcGFnZUlELCBnZXN0dXJl
SUQsIHRhcmdldEl0ZW1dIChfVUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db250ZXh0ICpjb250
ZXh0LCBCT09MIGRpZENvbXBsZXRlKSB7CiAgICAgICAgIGlmIChhdXRvIGdlc3R1cmVDb250cm9s
bGVyID0gY29udHJvbGxlckZvckdlc3R1cmUocGFnZUlELCBnZXN0dXJlSUQpKQpAQCAtMzIxLDcg
KzMyMSw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUoV2Vi
QmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwKICAgICAgICAgbV93ZWJQYWdlUHJveHku
ZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCk7CiAgICAgfQogCi0gICAgdWludDY0X3QgcGFnZUlE
ID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQ
cm94eS5wYWdlSUQoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50R2VzdHVy
ZUlEOwogICAgIG1fbG9hZENhbGxiYWNrID0gW3RoaXMsIHBhZ2VJRCwgZ2VzdHVyZUlEXSB7CiAg
ICAgICAgIGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5wcm92aXNpb25hbERyYXdp
bmdBcmVhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCAwMzU4NGI1NTAzOC4uOWM4MjFlMDg4NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMjIzLDcgKzIyMyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbihGdW5jdGlv
bjx2b2lkKGNvbnN0IEZvY3VzZWRFCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9j
YWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2spLCBtX3Byb2Nlc3MtPnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eVRva2VuKCkpOwotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6UmVxdWVzdEZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24oY2FsbGJhY2tJRCksIG1f
cGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0Rm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbihjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVWaXNpYmxlQ29udGVudFJlY3RzKGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8m
IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCA3NjBhMWQw
MDlkZS4uMDE3OTk1YTUxNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTE2NCw3ICsxNjQsNyBA
QCB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cgogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtj
b250ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVhbFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpOVUxMXTsKIAotICAgICAgICBtX2luc3BlY3RvclBh
Z2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlkU2F2
ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1faW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkp
OworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3Bl
Y3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSk7CiAgICAgfTsKIAog
ICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0
ZWRVUkwsIGNvbnN0IFMKICAgICBbaGFuZGxlIGNsb3NlRmlsZV07CiAKICAgICBXZWJQYWdlUHJv
eHkqIGluc3BlY3RvclBhZ2UgPSB3ZWJWaWV3KCktPl9wYWdlLmdldCgpOwotICAgIGluc3BlY3Rv
clBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6RGlk
QXBwZW5kKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJpbmddKSwgaW5zcGVjdG9yUGFnZS0+cGFnZUlE
KCkpOworICAgIGluc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3Rv
clVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0cmluZ10pKTsKIH0KIAogdm9pZCBS
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRTaGVldFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCBmNzBmMWE0
YWM0ZC4uYWU2YzkwZmFkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21h
Yy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5Lm1tCkBA
IC0xMjEsOCArMTIxLDcgQEAgdm9pZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYVByb3h5
OjpkaWRVcGRhdGVHZW9tZXRyeSgpCiAKIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3RhdGUoQWN0aXZpdHlTdGF0ZUNoYW5n
ZUlEKQogewotICAgIFNlY29uZHMgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgPSBTZWNvbmRz
Ojpmcm9tTWlsbGlzZWNvbmRzKDI1MCk7Ci0gICAgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2Fp
dEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBk
YXRlQWN0aXZpdHlTdGF0ZT4obV93ZWJQYWdlUHJveHkucGFnZUlEKCksIGFjdGl2aXR5U3RhdGVV
cGRhdGVUaW1lb3V0LCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNN
ZXNzYWdlQXJyaXZlcyk7CisgICAgcHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERp
c3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZT4obV93ZWJQYWdlUHJveHkucGFnZUlEKCksIDI1MF9tcywgSVBDOjpXYWl0Rm9yT3B0
aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCiB2b2lkIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhUHJveHk6OndpbGxTZW5kVXBkYXRlR2VvbWV0cnko
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlck1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJNYWMubW0KaW5kZXggNTAyNDFkOGJmNjIuLmY1M2ZiMjFlM2VlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJN
YWMubW0KQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFu
ZGxlTWFnbmlmaWNhdGlvbkdlc3R1cmVFdmVudChOU0V2ZW50ICpldmVudCwgRmxvYQogCiAgICAg
ICAgIC8vIEZJWE1FOiBXZSBkcm9wIHRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgZ2VzdHVyZSBvbiB0
aGUgZmxvb3IsIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSB0aGUgdmlzaWJsZSBjb250ZW50IGJvdW5k
cyB5ZXQuCiAgICAgICAgIG1fbWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2Fs
ZUZhY3RvcigpOwotICAgICAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlm
aWNhdGlvbkdlc3R1cmUoKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgICAgICBtX3dl
YlBhZ2VQcm94eS5zZW5kKE1lc3NhZ2VzOjpWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpD
b2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZSgpKTsKICAgICAgICAgbV9sYXN0
TWFnbmlmaWNhdGlvbkdlc3R1cmVXYXNTbWFydE1hZ25pZmljYXRpb24gPSBmYWxzZTsKIAogICAg
ICAgICByZXR1cm47CkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoRmxvYXRQb2ludCBvcmlnaW4pCiAg
ICAgaWYgKG1fYWN0aXZlR2VzdHVyZVR5cGUgIT0gVmlld0dlc3R1cmVUeXBlOjpOb25lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX3dlYlBhZ2VQcm94eS5wcm9jZXNzKCkuc2VuZChNZXNzYWdl
czo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRN
YWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4pLCBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKSk7Cisg
ICAgbV93ZWJQYWdlUHJveHkuc2VuZChNZXNzYWdlczo6Vmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcjo6Q29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4p
KTsKIH0KIAogc3RhdGljIGZsb2F0IG1heGltdW1SZWN0YW5nbGVDb21wb25lbnREZWx0YShGbG9h
dFJlY3QgYSwgRmxvYXRSZWN0IGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCAyMTUxNjYyZDM0
Ny4uOGFmMzRhYzRjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9X
S0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMTkzLDcgKzE5Myw3IEBA
IC0gKHZvaWQpaW1tZWRpYXRlQWN0aW9uUmVjb2duaXplcldpbGxCZWdpbkFuaW1hdGlvbjooTlNJ
bW1lZGlhdGVBY3Rpb25HZXN0dXJlUmVjCiAgICAgLy8gRklYTUU6IENvbm5lY3Rpb24gY2FuIGJl
IG51bGwgaWYgdGhlIHByb2Nlc3MgaXMgY2xvc2VkOyB3ZSBzaG91bGQgY2xlYW4gdXAgYmV0dGVy
IGluIHRoYXQgY2FzZS4KICAgICBpZiAoX3N0YXRlID09IFdlYktpdDo6SW1tZWRpYXRlQWN0aW9u
U3RhdGU6OlBlbmRpbmcpIHsKICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBfcGFnZS0+
cHJvY2VzcygpLmNvbm5lY3Rpb24oKSkgewotICAgICAgICAgICAgYm9vbCByZWNlaXZlZFJlcGx5
ID0gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkUGVyZm9ybUltbWVkaWF0ZUFjdGlvbkhpdFRlc3Q+KF9wYWdlLT5wYWdl
SUQoKSwgU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyg1MDApKTsKKyAgICAgICAgICAgIGJvb2wg
cmVjZWl2ZWRSZXBseSA9IGNvbm5lY3Rpb24tPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0
PihfcGFnZS0+cGFnZUlEKCksIDUwMF9tcyk7CiAgICAgICAgICAgICBpZiAoIXJlY2VpdmVkUmVw
bHkpCiAgICAgICAgICAgICAgICAgX3N0YXRlID0gV2ViS2l0OjpJbW1lZGlhdGVBY3Rpb25TdGF0
ZTo6VGltZWRPdXQ7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCAwMDdkODdkZmNkOC4uZjRhYjkxZTg5
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJJbnNwZWN0b3JQ
cm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9y
UHJveHlNYWMubW0KQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybVNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYgYwog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFtjb250ZW50Q29weSB3cml0ZVRvVVJMOmFjdHVh
bFVSTCBhdG9taWNhbGx5OllFUyBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZyBlcnJvcjpO
VUxMXTsKIAotICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2Vz
OjpXZWJJbnNwZWN0b3JVSTo6RGlkU2F2ZShbYWN0dWFsVVJMIGFic29sdXRlU3RyaW5nXSksIG1f
aW5zcGVjdG9yUGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRTYXZlKFthY3R1YWxVUkwgYWJzb2x1dGVTdHJp
bmddKSk7CiAgICAgfTsKIAogICAgIGlmICghZm9yY2VTYXZlRGlhbG9nKSB7CkBAIC01MjIsNyAr
NTIyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1BcHBlbmQoY29uc3QgU3Ry
aW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKICAgICBbaGFuZGxlIHdyaXRlRGF0YTpb
Y29udGVudCBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOwogICAgIFto
YW5kbGUgY2xvc2VGaWxlXTsKIAotICAgIG1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNlbmQo
TWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNvbHV0ZVN0
cmluZ10pLCBtX2luc3BlY3RvclBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX2luc3BlY3RvclBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJOjpEaWRBcHBlbmQoW2FjdHVhbFVSTCBhYnNv
bHV0ZVN0cmluZ10pKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6d2luZG93RnJhbWVE
aWRDaGFuZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlN
YWMubW0KaW5kZXggODdjNjhiMzM0ODUuLjQ1NWQyZDVkNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL21hYy9XZWJQYWdlUHJveHlNYWMubW0KQEAgLTE3MSw3ICsxNzEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQoY29uc3QgRmxvYXRS
ZWN0JiB2aWV3RnJhbWVJbldpbmRvdwogICAgIC8vIEluIGNhc2UgdGhlIFVJIGNsaWVudCBvdmVy
cmlkZXMgZ2V0V2luZG93RnJhbWUoKSwgd2UgY2FsbCBpdCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZSBz
ZW5kIHRoZSBhcHByb3ByaWF0ZSB3aW5kb3cgZnJhbWUuCiAgICAgbV91aUNsaWVudC0+d2luZG93
RnJhbWUoKnRoaXMsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHZpZXdG
cmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRpbmF0ZXNdIChG
bG9hdFJlY3Qgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVzKSB7CiAgICAgICAgIEZsb2F0
UmVjdCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0ZXMgPSBwYWdlQ2xpZW50
KCkuY29udmVydFRvVXNlclNwYWNlKHdpbmRvd0ZyYW1lSW5TY3JlZW5Db29yZGluYXRlcyk7Ci0g
ICAgICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dBbmRWaWV3RnJh
bWVzQ2hhbmdlZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIHdpbmRvd0ZyYW1lSW5V
bmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGluYXRlcywg
YWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcyksIG1fcGFnZUlEKTsKKyAgICAgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6V2luZG93QW5kVmlld0ZyYW1lc0NoYW5nZWQod2luZG93RnJhbWVJ
blNjcmVlbkNvb3JkaW5hdGVzLCB3aW5kb3dGcmFtZUluVW5mbGlwcGVkU2NyZWVuQ29vcmRpbmF0
ZXMsIHZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXMsIGFjY2Vzc2liaWxpdHlWaWV3Q29vcmRp
bmF0ZXMpKTsKICAgICB9KTsKIH0KIApAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRNYWluRnJhbWVJc1Njcm9sbGFibGUoYm9vbCBpc1Njcm9sbGFibGUpCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwcm9jZXNzKCku
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0TWFpbkZyYW1lSXNTY3JvbGxhYmxlKGlzU2Nyb2xs
YWJsZSksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRNYWluRnJh
bWVJc1Njcm9sbGFibGUoaXNTY3JvbGxhYmxlKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bnNlcnREaWN0YXRlZFRleHRBc3luYyhjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IEVkaXRpbmdS
YW5nZSYgcmVwbGFjZW1lbnRSYW5nZSwgY29uc3QgVmVjdG9yPFRleHRBbHRlcm5hdGl2ZVdpdGhS
YW5nZT4mIGRpY3RhdGlvbkFsdGVybmF0aXZlc1dpdGhSYW5nZSwgYm9vbCByZWdpc3RlclVuZG9H
cm91cCkKQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RGljdGF0
ZWRUZXh0QXN5bmMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBFZGl0aW5nUmFuZwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
Okluc2VydERpY3RhdGVkVGV4dEFzeW5jKHRleHQsIHJlcGxhY2VtZW50UmFuZ2UsIGRpY3RhdGlv
bkFsdGVybmF0aXZlcywgcmVnaXN0ZXJVbmRvR3JvdXApLCBtX3BhZ2VJRCk7CisgICAgc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmModGV4dCwgcmVwbGFjZW1l
bnRSYW5nZSwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzLCByZWdpc3RlclVuZG9Hcm91cCkpOwogI2Vs
c2UKICAgICBJbnNlcnRUZXh0T3B0aW9ucyBvcHRpb25zOwogICAgIG9wdGlvbnMucmVnaXN0ZXJV
bmRvR3JvdXAgPSByZWdpc3RlclVuZG9Hcm91cDsKQEAgLTIyMyw3ICsyMjMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6YXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMoY29u
c3QgRWRpdGluZ1JhbmdlJgogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0
KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6QXR0cmlidXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNh
bGxiYWNrSUQpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXR0cmli
dXRlZFN1YnN0cmluZ0ZvckNoYXJhY3RlclJhbmdlQXN5bmMocmFuZ2UsIGNhbGxiYWNrSUQpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmF0dHJpYnV0ZWRTdHJpbmdGb3JDaGFyYWN0ZXJSYW5n
ZUNhbGxiYWNrKGNvbnN0IEF0dHJpYnV0ZWRTdHJpbmcmIHN0cmluZywgY29uc3QgRWRpdGluZ1Jh
bmdlJiBhY3R1YWxSYW5nZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMjQ5LDcgKzI0OSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb24oV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBkb3VibGUsIGJvCiAgICAgCiAgICAgYXV0byBjYWxsYmFja0lEID0g
bV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CiAgICAgCi0gICAgcHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNlbGVjdGlvbihjYWxsYmFja0lEKSwgbV9w
YWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZvbnRBdFNlbGVjdGlvbihjYWxs
YmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb250QXRTZWxlY3Rpb25DYWxsYmFj
ayhjb25zdCBTdHJpbmcmIGZvbnROYW1lLCBkb3VibGUgZm9udFNpemUsIGJvb2wgc2VsZWN0aW9u
SGFzTXVsdGlwbGVGb250cywgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQpAQCAtMjcxLDcgKzI3MSw3
IEBAIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0cmluZ1NlbGVjdGlvbkZvclBhc3RlYm9hcmQoKQog
ICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgCiAgICAgY29uc3QgU2Vjb25kcyBtZXNzYWdlVGlt
ZW91dCgyMCk7Ci0gICAgcHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRT
dHJpbmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkKCksIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRTdHJp
bmdTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJkOjpSZXBseSh2YWx1ZSksIG1fcGFnZUlELCBtZXNzYWdl
VGltZW91dCk7CisgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVj
dGlvbkZvclBhc3RlYm9hcmQoKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkdldFN0cmluZ1NlbGVjdGlv
bkZvclBhc3RlYm9hcmQ6OlJlcGx5KHZhbHVlKSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVy
biB2YWx1ZTsKIH0KIApAQCAtMjgyLDggKzI4Miw4IEBAIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRC
dWZmZXI+IFdlYlBhZ2VQcm94eTo6ZGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQoY29uc3QgU3Ry
CiAgICAgU2hhcmVkTWVtb3J5OjpIYW5kbGUgaGFuZGxlOwogICAgIHVpbnQ2NF90IHNpemUgPSAw
OwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nlc3MoKS5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6R2V0RGF0YVNlbGVjdGlvbkZvclBhc3RlYm9hcmQo
cGFzdGVib2FyZFR5cGUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWVzc2FnZXM6OldlYlBhZ2U6OkdldERhdGFTZWxlY3Rpb25Gb3JQYXN0ZWJvYXJk
OjpSZXBseShoYW5kbGUsIHNpemUpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNl
bmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0aW9uRm9yUGFzdGVib2FyZChw
YXN0ZWJvYXJkVHlwZSksCisgICAgICAgIE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXREYXRhU2VsZWN0
aW9uRm9yUGFzdGVib2FyZDo6UmVwbHkoaGFuZGxlLCBzaXplKSwgbWVzc2FnZVRpbWVvdXQpOwog
ICAgIGlmIChoYW5kbGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIFJl
ZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUJ1ZmZlciA9IFNoYXJlZE1lbW9yeTo6bWFw
KGhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CkBAIC0yOTcsMTQg
KzI5NywxNCBAQCBib29sIFdlYlBhZ2VQcm94eTo6cmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJk
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUpCiAKICAgICBib29sIHJlc3VsdCA9IGZhbHNl
OwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMjApOwotICAgIHByb2Nlc3MoKS5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBh
c3RlYm9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVi
b2FyZDo6UmVwbHkocmVzdWx0KSwgbV9wYWdlSUQsIG1lc3NhZ2VUaW1lb3V0KTsKKyAgICBzZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZTo6UmVhZFNlbGVjdGlvbkZyb21QYXN0ZWJvYXJkKHBhc3Rl
Ym9hcmROYW1lKSwgTWVzc2FnZXM6OldlYlBhZ2U6OlJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2Fy
ZDo6UmVwbHkocmVzdWx0KSwgbWVzc2FnZVRpbWVvdXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9DT05UUk9MUykKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBs
YWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBl
cywgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogewotICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9hcmREYXRhKHR5
cGVzLCBkYXRhKSwgbV9wYWdlSUQpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcGxh
Y2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEodHlwZXMsIGRhdGEpKTsKIH0KICNlbmRpZgog
CkBAIC0zMzQsMjIgKzMzNCwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2VuZENvbXBsZXhUZXh0
SW5wdXRUb1BsdWdpbih1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SQogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZW5kQ29tcGxleFRleHRJbnB1dFRvUGx1Z2luKHBs
dWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCB0ZXh0SW5wdXQpLCBtX3BhZ2VJRCk7Cisg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VuZENvbXBsZXhUZXh0SW5wdXRUb1BsdWdpbihw
bHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgdGV4dElucHV0KSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojp1cHBlcmNhc2VXb3JkKCkKIHsKLSAgICBwcm9jZXNzKCkuc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VXBwZXJjYXNlV29yZCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6VXBwZXJjYXNlV29yZCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
Omxvd2VyY2FzZVdvcmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb3dlcmNhc2VXb3JkKCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpMb3dlcmNhc2VXb3JkKCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2FwaXRhbGl6ZVdv
cmQoKQogewotICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDYXBpdGFsaXpl
V29yZCgpLCBtX3BhZ2VJRCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2FwaXRhbGl6
ZVdvcmQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoYm9vbCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkKQEAgLTM1OSw3ICszNTksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U21hcnRJbnNlcnREZWxldGVFbmFibGVkKGJvb2wgaXNT
bWFydEluc2VydERlbGV0ZUVuYWJsZWQpCiAKICAgICBUZXh0Q2hlY2tlcjo6c2V0U21hcnRJbnNl
cnREZWxldGVFbmFibGVkKGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKTsKICAgICBtX2lzU21h
cnRJbnNlcnREZWxldGVFbmFibGVkID0gaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQ7Ci0gICAg
cHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZChpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpTZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoaXNTbWFydEluc2Vy
dERlbGV0ZUVuYWJsZWQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1EaWN0
aW9uYXJ5TG9va3VwKGNvbnN0IERpY3Rpb25hcnlQb3B1cEluZm8mIGRpY3Rpb25hcnlQb3B1cElu
Zm8pCkBAIC0zOTUsNyArMzk1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyVUlQcm9j
ZXNzQWNjZXNzaWJpbGl0eVRva2Vucyhjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UKICAgICBpZiAo
IWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHByb2Nlc3MoKS5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tl
bnMoZWxlbWVudFRva2VuLCB3aW5kb3dUb2tlbiksIG1fcGFnZUlEKTsKKyAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZWdpc3RlclVJUHJvY2Vzc0FjY2Vzc2liaWxpdHlUb2tlbnMoZWxlbWVu
dFRva2VuLCB3aW5kb3dUb2tlbikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cGx1Z2luRm9j
dXNPcldpbmRvd0ZvY3VzQ2hhbmdlZCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRl
bnRpZmllciwgYm9vbCBwbHVnaW5IYXNGb2N1c0FuZFdpbmRvd0hhc0ZvY3VzKQpAQCAtNDI0LDcg
KzQyNCw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGREZWxheVdpbmRvd09yZGVyaW5nRm9y
RXZlbnQoY29uc3QgV2ViS2l0OjpXZWJNb3VzZUV2ZW50CiAKICAgICBib29sIHJlc3VsdCA9IGZh
bHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7Ci0gICAgcHJvY2Vzcygp
LnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZl
bnQoZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2
ZW50OjpSZXBseShyZXN1bHQpLCBtX3BhZ2VJRCwgbWVzc2FnZVRpbWVvdXQpOworICAgIHNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpTaG91bGREZWxheVdpbmRvd09yZGVyaW5nRXZlbnQoZXZl
bnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6U2hvdWxkRGVsYXlXaW5kb3dPcmRlcmluZ0V2ZW50OjpS
ZXBseShyZXN1bHQpLCBtZXNzYWdlVGltZW91dCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApA
QCAtNDM1LDcgKzQzNSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjphY2NlcHRzRmlyc3RNb3VzZShp
bnQgZXZlbnROdW1iZXIsIGNvbnN0IFdlYktpdDo6V2ViTW91c2VFdmVuCiAKICAgICBib29sIHJl
c3VsdCA9IGZhbHNlOwogICAgIGNvbnN0IFNlY29uZHMgbWVzc2FnZVRpbWVvdXQoMyk7Ci0gICAg
cHJvY2VzcygpLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZShl
dmVudE51bWJlciwgZXZlbnQpLCBNZXNzYWdlczo6V2ViUGFnZTo6QWNjZXB0c0ZpcnN0TW91c2U6
OlJlcGx5KHJlc3VsdCksIG1fcGFnZUlELCBtZXNzYWdlVGltZW91dCk7CisgICAgc2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2U6OkFjY2VwdHNGaXJzdE1vdXNlKGV2ZW50TnVtYmVyLCBldmVudCks
IE1lc3NhZ2VzOjpXZWJQYWdlOjpBY2NlcHRzRmlyc3RNb3VzZTo6UmVwbHkocmVzdWx0KSwgbWVz
c2FnZVRpbWVvdXQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5j
cHAKaW5kZXggZmY0NDkzNDFkOWUuLjU3ZjNmZTE3M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNw
cApAQCAtMTY4LDcgKzE2OCw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENvb3JkaW5h
dG9yOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBheW1l
bnRDb29yZGluYXRvcjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAg
IHJldHVybiBtX3dlYlBhZ2UucGFnZUlEKCk7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQo
KS50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVN
ZXJjaGFudChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGIxY2JjOTYzYjBlLi40NTRjYTZiYzg0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2Vi
RnJhbWUmIGZyYW1lKQogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlk
RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgZXJyb3JNZXNzYWdlLCBlcnJv
clR5cGUpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0
ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBl
Y3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUph
dmFTY3JpcHRGdW5jdGlvbihQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBl
eHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50
NjRfdCBjYWxsYmFja0lEKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zMTIsNyArMzEy
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRFdmFsdWF0ZUphdmFTY3Jp
cHRGdW5jdGlvbih1aW50NjRfdCBmcmFtZUlELAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxsYmFja0lELCByZXN1bHQs
IGVycm9yVHlwZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJl
c29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlv
blNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVp
bnQ2NF90IHBhZ2VJRCwgdWkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNo
aWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVI
YW5kbGUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
dWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7
CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNv
bHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwKICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZyYW1lRnJvbUVsZW1lbnQtPmZyYW1lSUQoKSk7CiB9
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRo
TmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29s
dmVDaGlsZEZyYW1lV2l0aE5hbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2Uq
IHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYg
KCFwYWdlKSB7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDYKICAg
ICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7
CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1l
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZShQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdl
YlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAg
ICAgaWYgKCFwYWdlKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHBhcmVudEZyYW1lLT5mcmFt
ZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJhbWUo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5Ojpmb2N1c0ZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
UGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0aWMg
V2ViQ29yZTo6RmxvYXRQb2ludCBjb252ZXJ0UG9pbnRGcm9tRnJhbWVDbGllbnRUb1Jvb3RWaWV3
KFdlYkNvcmU6OkZyYW1lVgogICAgIHJldHVybiBjbGllbnRQb2ludDsKIH0KIAotdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9W
aWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dChQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0
LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHJlc3Vs
dEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBpc09ic2N1cmVkKTsKIH0K
IAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2Vi
UGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzAzLDcgKzcwMyw3IEBAIHN0YXRp
YyBXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoV2ViUGFnZSYgcGFn
ZSwgV2ViQ29yZTo6RWxlbWVuCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQs
IGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAg
ICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAKQEAgLTc1MSw3ICs3NTEsNyBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9u
OjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIHsgfSksIDApOwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzc2LDcgKzc3Niw3IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxs
b3B0LCBmb3VuZENvb2tpZXMpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBj
b29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkZWxldGVD
b29raWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29v
a2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5oCmluZGV4IDYyOTU0MWQyMGJhLi4xMTY3NjQ1Mjc3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJDb29yZGluYXRlU3lzdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNCYXNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02
MCwxNyArNjEsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGJ5
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkgbWVzc2FnZXMKLSAgICB2b2lkIGV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJ
bXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHJl
c29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZy
YW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0
X3QpPiYmKTsKLSAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
dWludDY0X3QpPiYmKTsKLSAgICB2b2lkIGZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlEKTsKLSAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQ
b2ludD4sIGJvb2wpPiYmKTsKLSAgICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7Ci0gICAgdm9pZCB0YWtlU2NyZWVuc2hv
dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBi
b29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2ll
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOworICAgIHZvaWQgZXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50
cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1l
b3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0
aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQz
Ml90IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWlu
dDY0X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9k
ZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRf
dCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9p
ZCByZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZy
YW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3Qp
PiYmKTsKKyAgICB2b2lkIGZvY3VzRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2
NF90IGZyYW1lSUQpOworICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29y
ZTo6SW50UG9pbnQ+LCBib29sKT4mJik7CisgICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRs
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9p
ZCB0YWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBj
bGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29raWVz
Rm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4pPiYmKTsKKyAgICB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOwogCiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkZW50aWZp
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IGFhMTIxOWUyZWYxLi5kNzJmODlkMjYzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSwyMSArMjEsMjEgQEAKICMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KIAogbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSB7Ci0gICAgRXZhbHVh
dGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBT
dHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1w
bGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGZ1bmN0aW9uLCBWZWN0b3I8
U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwg
aW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIFJlc29sdmVD
aGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1
aW50MzJfdCBvcmRpbmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90
IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0
aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVz
b2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZy
YW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBm
cmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFs
KSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5j
CisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0
aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVz
b2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5
cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFs
PFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYwogCi0gICAgRm9jdXNG
cmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCisgICAgRm9jdXNGcmFtZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCiAKLSAgICBD
b21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGVudW06dWludDhf
dCBXZWJLaXQ6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgLT4gKE9wdGlvbmFs
PFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIE9wdGlvbmFsPFdlYkNv
cmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCBpc09ic2N1cmVkKSBBc3luYwor
ICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRl
U3lzdGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3Qg
cmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29s
IGlzT2JzY3VyZWQpIEFzeW5jCiAKLSAgICBTZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxT
dHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBTZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKIAotICAgIFRha2VTY3Jl
ZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCkKKyAgICBUYWtlU2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiAKLSAgICBHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IGNvb2tpZXMpIEFzeW5jCi0gICAgRGVsZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChPcHRpb25hbDxTdHJp
bmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBHZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5n
PiBlcnJvclR5cGUsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIEFzeW5jCisgICAg
RGVsZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkg
QXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGFlMzg4M2Q4NmI2Li5hZjg5
ZDc4ODE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGRl
Y29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJQYWdlKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAg
aWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VP
YmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklE
KCkpKSkKICAgICAgICAgICAgIHdlYlBhZ2UtPmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShjb25u
ZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRl
eCAwNGFlMGU0NWQ1ZS4uMjc4YjYwMTg0NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTE1Nyw3ICsxNTcs
NyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXIm
IHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIGF1dG8mIGZyYW1lTG9hZGVyQ2xpZW50
ID0gcmVzb3VyY2VMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCk7CiAKICAgICBXZWJSZXNv
dXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJzIHRyYWNraW5nUGFyYW1ldGVyczsKLSAgICB0
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFs
dWVPcigwKTsKKyAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGll
bnQucGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pOwogICAgIHRyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlEID0gZnJhbWVMb2FkZXJDbGllbnQuZnJhbWVJRCgpLnZhbHVlT3IoMCk7
CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQgPSBpZGVudGlmaWVyOwogICAgIGF1
dG8gc2Vzc2lvbklEID0gZnJhbWVMb2FkZXJDbGllbnQuc2Vzc2lvbklEKCk7CkBAIC0xNjcsNyAr
MTY3LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9h
ZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAvLyB0aGVuIHdlIHNob3VsZCBy
ZW1lbWJlciB0aGUgUmVzb3VyY2VMb2FkZXIgaW4gb3VyIHJlY29yZHMgYnV0IG5vdCBzY2hlZHVs
ZSBpdCBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLmRvY3Vt
ZW50TG9hZGVyKCktPnNjaGVkdWxlQXJjaGl2ZUxvYWQocmVzb3VyY2VMb2FkZXIsIHJlc291cmNl
TG9hZGVyLnJlcXVlc3QoKSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdl
YlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwg
YmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGFu
IGFyY2hpdmUgcmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxv
YWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRl
cnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
cmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYW4g
YXJjaGl2ZSByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9h
ZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICBtX3dlYlJlc291cmNl
TG9hZGVycy5zZXQoaWRlbnRpZmllciwgV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNvdXJj
ZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0ZXJzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0xNzUsMTQgKzE3NSwxNCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQo
UmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogCiAgICAgaWYgKHJl
c291cmNlTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5
YmVMb2FkUmVzb3VyY2UocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwg
cmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZS4iLCByZXNvdXJj
ZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
bG9hZGVkIGZyb20gYXBwbGljYXRpb24gY2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxv
YWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
cmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2
NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIG1f
d2ViUmVzb3VyY2VMb2FkZXJzLnNldChpZGVudGlmaWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmIChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9j
b2xJc0RhdGEoKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2Vz
cykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBsb2Fk
ZWQgYXMgZGF0YS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVk
dWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEgKGZyYW1lID0gJXAsIHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxs
IGJlIGxvYWRlZCBhcyBkYXRhIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VM
b2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxM
b2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5MCw3ICsx
OTAsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2lmIFVTRShRVUlDS19MT09LKQogICAg
IGlmIChpc1F1aWNrTG9va1ByZXZpZXdVUkwocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgp
KSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFzIGEg
UXVpY2tMb29rIHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVy
LCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291
cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlk
ZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVy
LCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291
cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9h
ZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9h
ZGVyLCBDYWNoZWRSZXNvdQogICAgIC8vIGh0dHBzOi8vYmxvZ3MuZ25vbWUub3JnL2FsZXhsLzIw
MTIvMDEvMjYvcmVzb3VyY2VzLWluLWdsaWIvCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLnJlcXVl
c3QoKS51cmwoKS5wcm90b2NvbElzKCJyZXNvdXJjZSIpKSB7CiAgICAgICAgIExPRyhOZXR3b3Jr
U2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
LCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UuIiwgcmVzb3VyY2VMb2Fk
ZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRs
ZWQgYXMgYSBHUmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxv
YWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRl
cnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
cmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBH
UmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFt
ZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3Vy
Y2VMb2FkZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjExLDExICsyMTEsMTEgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNv
dXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNp
bmdsZXRvbigpLmhhbmRsZUZldGNoKHJlc291cmNlTG9hZGVyLCBzZXNzaW9uSUQsIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFtZXRl
cnMsIGlkZW50aWZpZXIsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZShy
ZXNvdXJjZSksIHJlc291cmNlTG9hZGVyID0gbWFrZVJlZihyZXNvdXJjZUxvYWRlcildIChTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdCByZXN1bHQpIG11dGFibGUgewogICAgICAgICBp
ZiAocmVzdWx0ICE9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQp
IHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB0
aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSIsIHJlc291cmNlTG9h
ZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJM
IHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxn
b3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1l
KCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3Vy
Y2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJv
dWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVy
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzb3VyY2VM
b2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2Rl
OjpPbmx5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291
cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2NoZWR1bGUgVVJMIHRo
cm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCks
ICJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNlV29y
a2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBy
ZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2
NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgICAg
ICBjYWxsT25NYWluVGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2Fk
ZXIpXSB7CiAgICAgICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJyb3IocmVzb3Vy
Y2VMb2FkZXItPnJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlw
ZShSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwpAQCAtMjI3LDEzICsyMjcsMTMg
QEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiBy
ZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRs
ZXIocmVzb3VyY2VMb2FkZXIpKQogICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3Vy
Y2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1l
dGVycywgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBtYXhpbXVtQnVmZmVyaW5nVGltZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVS
TCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJM
IG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIs
IHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUlu
dDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICB9KTsK
ICNlbHNlCiAgICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNl
TG9hZGVyKSkKICAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNl
TG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2Vz
c2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVt
QnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOwogICAgIGVsc2UKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVk
IGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9h
ZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChy
ZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5k
bGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCks
IHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIGlkZW50aWZpZXIpOwogI2VuZGlmCiB9CiAKQEAgLTMyNSw3ICszMjUsNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVz
b3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGlmIChsb2FkUGFyYW1ldGVycy5vcHRpb25zLm1v
ZGUgIT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkgewogICAgICAgICBBU1NFUlQobG9h
ZFBhcmFtZXRlcnMuc291cmNlT3JpZ2luKTsKICAgICAgICAgaWYgKCFsb2FkUGFyYW1ldGVycy5z
b3VyY2VPcmlnaW4pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
cmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAoZnJhbWUgPSAl
cCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCks
IHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBs
b2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQ
YXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogbm8gc291cmNlT3JpZ2luIChm
cmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3Jp
dHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICAgICAgICAgIHNj
aGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CkBAIC0zNDYsOSArMzQ2LDkgQEAgdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNv
dXJjZUwKIAogICAgIEFTU0VSVCgobG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJh
bWV0ZXJzLndlYkZyYW1lSUQpIHx8IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xp
Y3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlh
bHMpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVk
dWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9j
ZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VM
b2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCku
cHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcg
c2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9
ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8
aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJz
LndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFy
YW1ldGVycy5pZGVudGlmaWVyKTsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9h
ZFBhcmFtZXRlcnMpLCAwKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3Vy
Y2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFn
ZUlELCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwg
InNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdv
cmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1
ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBs
b2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAg
ICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRo
ZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgogICAgICAgICAvLyBUaGlz
IGxvYWQgd2lsbCBuZXZlciBzdWNjZWVkIHNvIHdlIHdpbGwgc2NoZWR1bGUgaXQgdG8gZmFpbCBh
c3luY2hyb25vdXNseS4KICAgICAgICAgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChyZXNv
dXJjZUxvYWRlcik7CkBAIC01MDcsMTkgKzUwNywxOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5z
aQogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJh
bWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwogICAgIFdlYlBhZ2UqIHdlYlBh
Z2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogCi0gICAgYXV0byBw
YWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+cGFnZUlEKCkgOiAwOworICAgIGF1dG8gcGFnZUlE
ID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogUGFnZUlkZW50aWZpZXIgeyB9OwogICAg
IGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CiAgICAg
YXV0byBzZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNl
c3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwogCiAgICAgYXV0byogZG9jdW1lbnQgPSBmcmFt
ZUxvYWRlci5mcmFtZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewotICAgICAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHk6IG5vIGRvY3VtZW50IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3Vy
Y2VMb2FkSWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
c2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogbm8gZG9jdW1lbnQgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUp
IiwgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOwog
ICAgICAgICBlcnJvciA9IGludGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAoYXV0byBzeW5jTG9hZFJlc3VsdCA9IHRyeUxvYWRpbmdT
eW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyKGZyYW1lTG9hZGVyLCByZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCByZXF1ZXN0KSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBjYWxs
aW5nIHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1LCBl
cnJvciA9ICVkKSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3lu
Y0xvYWRSZXN1bHQtPmVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWls
ZWQgY2FsbGluZyB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFuZGxlciAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICVsdSwgZXJyb3IgPSAlZCkiLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VM
b2FkSWRlbnRpZmllciwgc3luY0xvYWRSZXN1bHQtPmVycm9yLmVycm9yQ29kZSgpKTsKICAgICAg
ICAgZXJyb3IgPSBXVEZNb3ZlKHN5bmNMb2FkUmVzdWx0LT5lcnJvcik7CiAgICAgICAgIHJlc3Bv
bnNlID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+cmVzcG9uc2UpOwogICAgICAgICBkYXRhID0g
V1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+ZGF0YSk7CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYg
ZnJhbWVMb2FkZXIsIHVuc2kKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlv
bkRpc2FibGVyOwogCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQ
YXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJm
b3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5ldHdvcmsgcHJv
Y2VzcyBtZXNzYWdlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRp
Zmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAi
bG9hZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0
d29yayBwcm9jZXNzIG1lc3NhZ2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQs
IHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXV0byogcGFnZSA9IHdlYlBh
Z2UgPyB3ZWJQYWdlLT5jb3JlUGFnZSgpIDogbnVsbHB0cikKICAgICAgICAgICAgIHBhZ2UtPmRp
YWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0
aWNMb2dnaW5nS2V5czo6c3luY2hyb25vdXNNZXNzYWdlRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsK
QEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VT
eW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgIH0KIH0KIAot
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFn
ZUlEKQordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlkZW50
aWZpZXIgd2ViUGFnZUlEKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5l
dHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGFnZUxvYWRDb21wbGV0ZWQod2ViUGFnZUlEKSwg
MCk7CiB9CkBAIC02NDgsMTAgKzY0OCwxMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVj
b25uZWN0VG8oRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCBjb25zdCBVUkwmIHVybCwgUwogCiAg
ICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0
ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKLSAgICBwYXJhbWV0ZXJzLndl
YlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7Ci0gICAgcGFyYW1ldGVy
cy53ZWJGcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKKyAgICBw
YXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOworICAgIHBhcmFtZXRlcnMu
d2ViRnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgcGFyYW1ldGVycy5wYXJlbnRQ
SUQgPSBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQoKTsKLSAgICBwYXJhbWV0ZXJzLnNlc3Npb25J
RCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZh
dWx0U2Vzc2lvbklEKCk7CisgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlLT5zZXNz
aW9uSUQoKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9
IFByZWNvbm5lY3RPbmx5OjpZZXM7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBS
ZXNwb25zZUFjY2VzcyA9IHNob3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5k
ZXggNGFmNTk5NDFlMzQuLmFjNTI0OTY2YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIAogICAgIHZvaWQgbG9hZFJlc291cmNlKFdlYkNvcmU6OkZyYW1lJiwgV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChS
ZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lk
IGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6RnJhbWVMb2FkZXImLCB1bnNpZ25l
ZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0
YSkgZmluYWw7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQp
IGZpbmFsOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpIGZpbmFsOwogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBm
aW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIm
LCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiZjg4ZmRhMzAwNy4uODhiZDUzYmYxZjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTg4LDE2ICs4OCwxNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBSZXNv
dQogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgaWYg
KG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5t
YXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KG1fY29yZUxvYWRlci5nZXQoKSwgcHJvcG9zZWRS
ZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxs
YmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJh
Y2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIG1fY29yZUxvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocHJvcG9zZWRS
ZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7CiAgICAgICAgIGlm
ICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVh
cmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBvciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG5v
IGNvcmVsb2FkZXIgb3IgaWRlbnRpZmllciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0xMTMsMTIgKzExMywxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlUwog
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9yICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2Fk
ZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291
cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc3RhdHVzID0gJWQpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkpOwogCiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAogICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShtX2NvcmVM
b2FkZXIuZ2V0KCksIHJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSB0aGUgY29u
dGVudCBpcyBhbHJlYWR5IGNhY2hlZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlz
IGFscmVhZHkgY2FjaGVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzUs
NyArMTM1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICAgICAgICAgIGlmIChtX2Nv
cmVMb2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVj
YXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBu
byBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICB9OwogICAgIH0KIApAQCAtMTQ4
LDcgKzE0OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hv
dWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwog
CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0
YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEKTsKICAgICB9CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwog
CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNz
KSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9j
b3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVu
Z3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRl
c1JlY2VpdmVkKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hSZXNvdXJj
ZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRlc1JlY2VpdmVkKTsKIAogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTG9hZCBz
aG91bGQgbm90IGJlIGFibGUgdG8gZmluaXNoIGJlZm9yZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJl
c3BvbnNlIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKG5ldHdvcmtMb2Fk
TWV0cmljcyk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
RmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0wKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVy
bCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxS
ZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nl
c3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3VsZCBub3QgYmUgYWJsZSB0byBmaW5pc2gg
YmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIApAQCAtMTc5LDcgKzE3OSw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBmb3IgJyVz
JyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXItPmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKTsKIH0KQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0
b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIo
V2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRp
b25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXIt
PnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGlj
eURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVP
cHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgbV9jb3Jl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09y
Q29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBy
ZXNwb25zZSk7CiB9CkBAIC0xOTYsMTMgKzE5NiwxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVu
aQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQ
cm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwg
bV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZy
b20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxl
IHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRS
ZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAg
ICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdl
LT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6
OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDdmZDc4MzIyMzNhLi41ODY1NDM3MThl
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTAsNyArNTEsNyBAQCB0
eXBlZGVmIHVpbnQ2NF90IFJlc291cmNlTG9hZElkZW50aWZpZXI7CiBjbGFzcyBXZWJSZXNvdXJj
ZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZGVyPiwgcHVibGljIElQ
Qzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFRyYWNraW5nUGFyYW1ldGVy
cyB7Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRCB7IDAgfTsKKyAgICAgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEOwogICAgICAgICB1aW50NjRfdCBmcmFtZUlEIHsgMCB9OwogICAg
ICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQgeyAwIH07CiAgICAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCAzNGI1YTY0M2YwMy4uYWRjNDc2
NjUyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTczLDcgKzcz
LDcgQEAgc3RhdGljIGNvbnN0IFNlY29uZHMgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7
IDEwMF9tcyB9OyAvLyBPbmx5IHVzZWQgYnkgbGEKIAogY2xhc3MgU2VydmljZVdvcmtlckZyYW1l
TG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGljIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgewogcHVi
bGljOgotICAgIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudChXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQor
ICAgIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudChXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbiYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KQogICAgICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICAgICAsIG1f
c2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC05NSwx
OCArOTUsMTggQEAgcHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
KERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9z
ZXNzaW9uSUQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7IH0KICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZnJhbWVJRDsgfQog
ICAgIFN0cmluZyB1c2VyQWdlbnQoY29uc3QgVVJMJikgZmluYWwgeyByZXR1cm4gbV91c2VyQWdl
bnQ7IH0KIAogICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247
CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQg
eyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0
X3QgbV9mcmFtZUlEIHsgMCB9OwogICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKIH07CiAKLVdlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihS
ZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VHcm91cElELCB1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAg
ICAgOiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCiAg
ICAgLCBtX3BhZ2VHcm91cElEKHBhZ2VHcm91cElEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpA
QCAtMjI2LDEyICsyMjYsMTIgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnYKIHsKICAgICBhdXRv
KiBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24o
KS5zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAg
IGlmICghc2VydmljZVdvcmtlclRocmVhZFByb3h5KSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAogICAgIGlmICghaXNWYWxpZEZldGNoKHJlcXVlc3QsIG9wdGlvbnMsIHNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+c2NyaXB0VVJMKCksIHJlZmVycmVyKSkgewotICAgICAg
ICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmll
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oCmluZGV4IDZjZTgzZDFkMDllLi5mYmI2MzBlNGUxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
OwogCiBjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBX
ZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdl
UmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJl
ZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICBXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAg
ICB+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC05Niw3
ICs5Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzOwogICAgIHVpbnQ2NF90IG1fcGFnZUdyb3VwSUQ7Ci0gICAgdWlu
dDY0X3QgbV9wYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdl
SUQ7CiAgICAgdWludDY0X3QgbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCB7IDAgfTsKIAogICAg
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdl
QmxvY2tpbmdQb2xpY3kgeyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5n
UG9saWN5OjpBbGxvd0FsbFN0b3JhZ2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudC5jcHAKaW5kZXggOGFlYmFmZjk2MjIuLjI2NDRjOWMxZDEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJD
b3JlOjpSZXNvdQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0g
ICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1fZmV0Y2hJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9LCBt
X2ZldGNoSWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC02OCw3ICs2OCw3IEBA
IHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgaWYgKG1fbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UpCiAgICAgICAgIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2
ZVJlc3BvbnNlTWVzc2FnZSA9IHRydWU7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNl
LCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIp
OwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpAQCAtODQsNyArODQsNyBAQCB2b2lkIFdl
YlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0
YSB7IHsgYnVmZmVyIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBt
X2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBidWZmZXIg
fSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLT5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNl
aXZlRm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTAxLDcg
KzEwMSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2
ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mCiAgICAgLy8gRm9yIG5vdyBhbmQgZm9y
IHRoZSBjYXNlIG9mIGJsb2JzLCB3ZSByZWFkIGl0IHRoZXJlIGFuZCBzZW5kIHRoZSBkYXRhIHRo
cm91Z2ggSVBDLgogICAgIFVSTCBibG9iVVJMID0gZm9ybURhdGEtPmFzQmxvYlVSTCgpOwogICAg
IGlmIChibG9iVVJMLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgSVBDOjpG
b3JtRGF0YVJlZmVyZW5jZSB7IFdURk1vdmUoZm9ybURhdGEpIH0gfSwgbV9mZXRjaElkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSB7IFdURk1vdmUoZm9ybURhdGEpIH0gfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IGNoYXIqIGRh
dGEsIHNpemUKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRS
ZWNlaXZlRGF0YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNp
emUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oZGF0YSksIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRj
aElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZhaWwgeyBlcnJvciB9LCBtX2ZldGNo
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZhaWwgeyBlcnJvciB9LCBtX2ZldGNoSWRlbnRp
Zmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2goKQogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpEaWRGaW5pc2ggeyB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OkRpZEZpbmlzaCB7IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIAogICAgIGNsZWFudXAoKTsKIH0K
QEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZE5vdEhhbmRsZSgpCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsK
IAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkTm90SGFuZGxlIHsgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRO
b3RIYW5kbGUgeyB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IDQ5MzNjYTRjM2EwLi4yYjI4ODY0
YTlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTgyLDE0ICs4Miwx
NCBAQCBSZWY8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OmdldE9yQ3JlYXRlKFVzZXJDb250ZW50QwogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBp
ZGVudGlmaWVyKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIH0KIAogV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyKCkKIHsKICAgICBBU1NFUlQodXNlckNvbnRl
bnRDb250cm9sbGVycygpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOwogCi0gICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllcik7CiAKICAgICB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkucmVtb3Zl
KG1faWRlbnRpZmllcik7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
aWYgKCF3ZWJQYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT5wYWdl
SUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2Uo
dmFsdWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RN
ZXNzYWdlKHdlYlBhZ2UtPnBhZ2VJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBtX2lkZW50aWZpZXIs
IElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29udHJvbGxlci0+aWRlbnRp
ZmllcigpKTsKICAgICB9CiAKICAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBt
X2NvbnRyb2xsZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDQ5NjI5NmY2ZDg4Li4wOGJl
OGUwMTY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCBQYWdl
KiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IEZyYW1l
TG9hZFJlcXVlc3QmIHJlcXVlcwogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6
OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogCi0gICAgdWludDY0X3QgbmV3UGFnZUlEID0gMDsKKyAg
ICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlEOwogICAgIE9wdGlvbmFsPFdlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CiAgICAgaWYgKCF3ZWJQcm9jZXNzLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkNyZWF0ZU5ld1BhZ2Uod2ViRnJhbWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2UoKS0+cGFnZUlE
KCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OlJlcGx5
KG5ld1BhZ2VJRCwgcGFyYW1ldGVycyksIG1fcGFnZS5wYWdlSUQoKSkpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMjk5LDggKzI5OSw4IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzCiAg
ICAgaWYgKHBhcmFtZXRlcnMtPnNlc3Npb25JRCA9PSBtX3BhZ2Uuc2Vzc2lvbklEKCkpCiAgICAg
ICAgIHBhcmFtZXRlcnMtPm9sZFBhZ2VJRCA9IG1fcGFnZS5wYWdlSUQoKTsKIAotICAgIHdlYlBy
b2Nlc3MuY3JlYXRlV2ViUGFnZShuZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMpKTsKLSAg
ICByZXR1cm4gd2ViUHJvY2Vzcy53ZWJQYWdlKG5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7CisgICAg
d2ViUHJvY2Vzcy5jcmVhdGVXZWJQYWdlKCpuZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMp
KTsKKyAgICByZXR1cm4gd2ViUHJvY2Vzcy53ZWJQYWdlKCpuZXdQYWdlSUQpLT5jb3JlUGFnZSgp
OwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvdygpCkBAIC0xMzE3LDEyICsxMzE3LDEy
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0
cygpCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBXZWJD
aHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFt
ZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhSZWdpc3Ry
YWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UuaGFzU3Rv
cmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFp
biksIGZyYW1lSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJD
aHJvbWVDbGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJh
YmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGFnZS5yZXF1ZXN0U3RvcmFnZUFj
Y2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZy
YW1lSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApp
bmRleCBkZDNiMjI1NDM1ZC4uMjkxYzVlZGRjOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM2
OSw4ICszNjksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFy
a2VyUmVjdHMoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
c3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYm
KSBmaW5hbDsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERF
VklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggZjQyOGZkMjM5N2Uu
LjcwNTIwMjViOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMzA5LDcgKzMwOSw3IEBA
IHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlclVuZG9TdGVwKFVuZG9TdGVwJiBzdGVwKQog
ICAgIGF1dG8gc3RlcElEID0gd2ViU3RlcC0+c3RlcElEKCk7CiAKICAgICBtX3BhZ2UtPmFkZFdl
YlVuZG9TdGVwKHN0ZXBJRCwgV1RGTW92ZSh3ZWJTdGVwKSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHN0ZXBJRCwg
c3RlcC5sYWJlbCgpKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRj
aE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyhzdGVwSUQs
IHN0ZXAubGFiZWwoKSksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVy
UmVkb1N0ZXAoVW5kb1N0ZXAmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXgg
NTI5YzA0NjcwMzAuLjNkY2Q3ZTJlYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKQEAgLTExMiw3ICsxMTIsNyBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6fldlYkZyYW1lTG9h
ZGVyQ2xpZW50KCkKIHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUt
PnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCk7CkBAIC01
NDEsNyArNTQxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGUKICAgICBpZiAoIXdlYlBhZ2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQ6IChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBh
Z2VJRCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIl
cCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQ6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdl
YlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CiAKICAgICBS
ZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJF
TEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEZhaWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiki
LCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBSRUxF
QVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRG
YWlsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwg
dGhpcywgd2ViUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsK
IAogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKQEAgLTkwMSw3ICs5MDEsOSBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIGlmIChyZXF1ZXN0ZXIuZnJhbWVJRCgpICYm
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKHJlcXVlc3Rlci5mcmFtZUlEKCkpKQog
ICAgICAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IHJlcXVlc3Rlci5mcmFt
ZUlEKCk7CiAKLSAgICB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCA9IHJlcXVlc3Rlci5wYWdl
SUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5wYWdlSUQo
KSkgPyByZXF1ZXN0ZXIucGFnZUlEKCkgOiAwOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBvcmlnaW5hdGluZ1BhZ2VJRDsKKyAgICBpZiAocmVxdWVzdGVyLnBhZ2VJRCgpICYmIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJRCgpKSkKKyAgICAgICAg
b3JpZ2luYXRpbmdQYWdlSUQgPSByZXF1ZXN0ZXIucGFnZUlEKCk7CiAKICAgICBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0
YS5uYXZpZ2F0aW9uVHlwZSA9IGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgKaW5kZXggZjczYWI4Y2E3M2YuLmM4ZmIyYWYyMTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGFwcGx5VG9Eb2N1bWVudExvYWRlcihXZWJzaXRlUG9saWNpZXNEYXRhJiYpOwogCi0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50LmNwcAppbmRleCBlMWU5M2E2ZGUzNC4uOWU0NmQ4MDczYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtMzcsMTQgKzM3LDE0IEBACiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi11c2luZyBQYXNzd29yZENhbGxiYWNrTWFwID0gSGFzaE1hcDx1aW50
NjRfdCwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4+OwordXNpbmcgUGFzc3dvcmRDYWxs
YmFja01hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJik+PjsKIHN0YXRpYyBQYXNzd29yZENhbGxiYWNrTWFwJiBwYXNzd29yZENh
bGxiYWNrcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBhc3N3b3JkQ2FsbGJhY2tN
YXA+IGNhbGxiYWNrTWFwOwogICAgIHJldHVybiBjYWxsYmFja01hcC5nZXQoKTsKIH0KIAotV2Vi
UHJldmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgdWludDY0X3QgcGFnZUlEKQorV2ViUHJldmll
d0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ICAgIDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAs
IG1fcGFnZUlEIHsgcGFnZUlEIH0KQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcm
KT4mJgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZSht
X2ZpbGVOYW1lKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6
OmRpZFJlY2VpdmVQYXNzd29yZChjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCB1aW50NjRfdCBwYWdl
SUQpCit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVQYXNzd29yZChjb25z
dCBTdHJpbmcmIHBhc3N3b3JkLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAg
ICAgQVNTRVJUKHBhc3N3b3JkQ2FsbGJhY2tzKCkuY29udGFpbnMocGFnZUlEKSk7CiAgICAgYXV0
byBjb21wbGV0aW9uSGFuZGxlciA9IHBhc3N3b3JkQ2FsbGJhY2tzKCkudGFrZShwYWdlSUQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBmOTk4NmU0MWNhMi4u
YmU4ODdhZDhhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBA
IC0zNSwxNiArMzUsMTYgQEAgY2xhc3MgV2ViRnJhbWU7CiAKIGNsYXNzIFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UHJldmlld0xvYWRlckNsaWVudCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJQcmV2aWV3TG9hZGVyQ2xpZW50PiBjcmVhdGUoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIHVpbnQ2NF90IHBhZ2VJRCkK
KyAgICBzdGF0aWMgUmVmPFdlYlByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlEKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUHJldmlld0xv
YWRlckNsaWVudChmaWxlTmFtZSwgdXRpLCBwYWdlSUQpKTsKICAgICB9CiAgICAgfldlYlByZXZp
ZXdMb2FkZXJDbGllbnQoKTsKIAotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVQYXNzd29yZChj
b25zdCBTdHJpbmcmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVQYXNzd29yZChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKIHBy
aXZhdGU6Ci0gICAgV2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIHV0aSwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBXZWJQcmV2aWV3TG9h
ZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJy
YXlSZWYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwog
ICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgog
CiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwot
ICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1fcGFnZUlEOwogICAgIFF1aWNrTG9va0RvY3VtZW50RGF0YSBtX2RhdGE7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJl
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAK
aW5kZXggMjc2YjgwYmYyOGYuLmMwNzM5NmYwMmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC02OCw3ICs2OCw3IEBAIERyYXdp
bmdBcmVhOjpEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUgdHlwZSwgRHJhd2luZ0FyZWFJZGVu
dGlmaWVyIGlkZW50aWZpZXIsCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAs
IG1fd2ViUGFnZSh3ZWJQYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBEcmF3aW5nQXJlYTo6
fkRyYXdpbmdBcmVhKCkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBEcmF3aW5nQXJlYTo6cmVtb3Zl
TWVzc2FnZVJlY2VpdmVySWZOZWVkZWQoKQogICAgIGlmIChtX2hhc1JlbW92ZWRNZXNzYWdlUmVj
ZWl2ZXIpCiAgICAgICAgIHJldHVybjsKICAgICBtX2hhc1JlbW92ZWRNZXNzYWdlUmVjZWl2ZXIg
PSB0cnVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA2
OTE4MzBiNTkzYy4uNDlhMmMzYmIzNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uKQogICAgIGNvbm5lY3Rpb24tPmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUu
Z2V0KCksIHRoaXMpOwogfQogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGJvb2wgY2FuUnVi
YmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJC
YW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQordm9pZCBFdmVudERpc3BhdGNo
ZXI6OndoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50
JiB3aGVlbEV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFu
ZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJv
dHRvbSkKIHsKICNpZiBQTEFURk9STShDT0NPQSkgfHwgRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
ICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgcGxhdGZvcm1XaGVlbEV2ZW50ID0gcGxhdGZvcm0od2hl
ZWxFdmVudCk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVs
RXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW4KIH0K
IAogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
Z2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZl
bnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXN0dXJlRXZlbnQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYgZ2VzdHVy
ZUV2ZW50KQogewogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBwYWdlSUQsIGdlc3R1cmVFdmVudF0oKSBtdXRhYmxlIHsKICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hHZXN0dXJlRXZlbnQocGFnZUlELCBnZXN0dXJlRXZl
bnQpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXRRdWV1ZWRU
b3VjaEV2ZW50c0ZvclBhZ2UoY29uc3QgV2ViUGFnZSYgd2ViUGFnZSwgVG91Y2hFCiAgICAgZGVz
dGluYXRpb25RdWV1ZSA9IG1fdG91Y2hFdmVudHMudGFrZSh3ZWJQYWdlLnBhZ2VJRCgpKTsKIH0K
IAotdm9pZCBFdmVudERpc3BhdGNoZXI6OnRvdWNoRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6dG91Y2hFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViVG91
Y2hFdmVudCYgdG91Y2hFdmVudCkKIHsKICAgICBib29sIHVwZGF0ZUxpc3RXYXNFbXB0eTsKICAg
ICB7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoVG91
Y2hFdmVudHMoKQogfQogI2VuZGlmCiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdo
ZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50
KQordm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudChQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7CiAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVl
bEV2ZW50JiB3CiB9CiAKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotdm9pZCBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlz
cGF0Y2hHZXN0dXJlRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJl
RXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoR2VzdHVy
ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW4KICNlbmRpZgogCiAj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpzZW5kRGlk
UmVjZWl2ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmIGV2ZW50LCBib29s
IGRpZEhhbmRsZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRSZWNlaXZlRXZl
bnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJFdmVudCYgZXZlbnQsIGJvb2wgZGlk
SGFuZGxlRXZlbnQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZWNlaXZlRXZl
bnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGV2ZW50LnR5cGUoKSksIGRpZEhhbmRsZUV2ZW50KSwg
cGFnZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZl
bnREaXNwYXRjaGVyLmgKaW5kZXggMWQ0Nzc4NzdlYWEuLmUxYmJiZDQ3OTY5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAogI2luY2x1ZGUgIldlYkV2
ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2hlZWxFdmVudERlbHRhRmlsdGVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC03NywzOCArNzgsMzggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZvaWQgd2hlZWxFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmLCBib29sIGNhblJ1YmJlckJhbmRBdExl
ZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBi
b29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSk7CisgICAgdm9pZCB3aGVlbEV2ZW50KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRv
cCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZF
TlRTKQotICAgIHZvaWQgdG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlRvdWNo
RXZlbnQmKTsKKyAgICB2b2lkIHRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVO
VFMpCi0gICAgdm9pZCBnZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0
dXJlRXZlbnQmKTsKKyAgICB2b2lkIGdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAogCiAgICAgLy8gVGhpcyBpcyBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50KHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYpOworICAgIHZvaWQgZGlzcGF0Y2hX
aGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50Jik7
CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBkaXNwYXRjaFRvdWNoRXZl
bnRzKCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQg
ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZl
bnQmKTsKKyAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKLSAgICB2b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlkSGFuZGxlRXZlbnQpOworICAgIHZvaWQgc2VuZERp
ZFJlY2VpdmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViRXZlbnQmLCBi
b29sIGRpZEhhbmRsZUV2ZW50KTsKICNlbmRpZgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1
ZTsKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgTG9jayBtX3Njcm9sbGluZ1Ry
ZWVzTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVk
U2Nyb2xsaW5nVHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZT4+IG1f
c2Nyb2xsaW5nVHJlZXM7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2hl
ZWxFdmVudERlbHRhRmlsdGVyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YUZpbHRlcjsKICNpZiBF
TkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBMb2NrIG1fdG91Y2hFdmVudHNMb2NrOwotICAg
IEhhc2hNYXA8dWludDY0X3QsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBUb3VjaEV2ZW50UXVldWU+IG1fdG91Y2hF
dmVudHM7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgppbmRleCA1ZTE1NDNj
OThjYy4uYWY5MDRiNDUxNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KQEAgLTIxLDExICsy
MSwxMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBFdmVudERpc3BhdGNoZXIgewot
ICAgIFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZl
bnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwg
Ym9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQorICAg
IFdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYldo
ZWVsRXZlbnQgZXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJC
YW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0
Qm90dG9tKQogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgIFRvdWNoRXZlbnQodWlu
dDY0X3QgcGFnZUlELCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCisgICAgVG91Y2hFdmVu
dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6V2ViVG91Y2hFdmVudCBl
dmVudCkKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi0gICAgR2VzdHVy
ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQgZXZlbnQpCisg
ICAgR2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpX
ZWJHZXN0dXJlRXZlbnQgZXZlbnQpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVy
VHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBiNzUyYzFjNTRkNC4uYjI5
MWRmMGI3ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KQEAgLTc1LDcgKzc1LDcgQEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFcK
ICAgICAvLyBGSVhNRTogV2hpbGUgdXNpbmcgdGhlIGhpZ2ggZW5kIG9mIHRoZSByYW5nZSBvZiBE
aXNwbGF5SURzIG1ha2VzIGEgY29sbGlzaW9uIHdpdGggcmVhbCwgbm9uLVJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhCiAgICAgLy8gRGlzcGxheUlEcyBsZXNzIGxpa2VseSwgaXQgaXMgbm90IGVu
dGlyZWx5IHNhZmUgdG8gaGF2ZSBhIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhIGFuZCBUaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYQogICAgIC8vIGNvZWV4aXN0IGluIHRoZSBzYW1lIHBy
b2Nlc3MuCi0gICAgd2ViUGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2Uoc3RkOjpudW1lcmljX2xp
bWl0czx1aW50MzJfdD46Om1heCgpIC0gd2ViUGFnZS5wYWdlSUQoKSk7CisgICAgd2ViUGFnZS53
aW5kb3dTY3JlZW5EaWRDaGFuZ2Uoc3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgp
IC0gd2ViUGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIH0KIAogUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWE6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSgpCkBAIC00MzQsNyArNDM0LDcg
QEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hMYXllcnMoKQogICAgIFJl
ZlB0cjxCYWNraW5nU3RvcmVGbHVzaGVyPiBiYWNraW5nU3RvcmVGbHVzaGVyID0gQmFja2luZ1N0
b3JlRmx1c2hlcjo6Y3JlYXRlKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCksIFdURk1vdmUoY29tbWl0RW5jb2RlciksIFdURk1vdmUoY29udGV4dHNUb0Zs
dXNoKSk7CiAgICAgbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1c2hlciA9IGJhY2tpbmdTdG9yZUZs
dXNoZXI7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2UucGFnZUlEKCk7CisgICAg
YXV0byBwYWdlSUQgPSBtX3dlYlBhZ2UucGFnZUlEKCk7CiAgICAgZGlzcGF0Y2hfYXN5bmMobV9j
b21taXRRdWV1ZSwgW2JhY2tpbmdTdG9yZUZsdXNoZXIgPSBXVEZNb3ZlKGJhY2tpbmdTdG9yZUZs
dXNoZXIpLCBwYWdlSURdIHsKICAgICAgICAgYmFja2luZ1N0b3JlRmx1c2hlci0+Zmx1c2goKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0
ZURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1Vw
ZGF0ZURpc3BhdGNoZXIuY3BwCmluZGV4IGMzYTk1MjU2NTMyLi5jOTdlNmZjNzI1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNo
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVE
aXNwYXRjaGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVy
Ojppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAgICAg
Y29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3VXBk
YXRlRGlzcGF0Y2hlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0aGlz
KTsKIH0KIAotdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYg
dmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbykKK3ZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6
OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZUluZm8pCiB7CiAgICAgYm9vbCB1cGRhdGVMaXN0V2FzRW1wdHk7CiAgICAgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNo
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRj
aGVyLmgKaW5kZXggZTQ3ZGM0ZTFkNDEuLjNjMDNmODk0M2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKICNpbmNsdWRlICJWaXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4K
ICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC00Nyw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgLy8g
SVBDOjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRS
ZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29u
c3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYpOworICAgIHZvaWQgdmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgVmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYpOwogCiAgICAgdm9pZCBkaXNwYXRjaFZpc2libGVDb250
ZW50UmVjdFVwZGF0ZSgpOwogCkBAIC01OCw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8
V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIExvY2sgbV9kYXRhTXV0ZXg7Ci0gICAgSGFzaE1hcDx1
aW50NjRfdCwgVXBkYXRlRGF0YT4gbV9sYXRlc3RVcGRhdGU7CisgICAgSGFzaE1hcDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgVXBkYXRlRGF0YT4gbV9sYXRlc3RVcGRhdGU7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4KaW5kZXgg
MTdlMmM4ZGQxODYuLmQ5MmVlYjg4OWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5tZXNzYWdl
cy5pbgpAQCAtMjEsNSArMjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBWaWV3
VXBkYXRlRGlzcGF0Y2hlciB7Ci0gICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKHVpbnQ2NF90
IHBhZ2VJRCwgV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvIHZpc2libGVDb250
ZW50UmVjdFVwZGF0ZUluZm8pCisgICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJ
bmZvIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8pCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5j
cHAKaW5kZXggMjExZDYwMWVmMGIuLjdhMGMwYzgwZmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHku
Y3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBJRFRvSGlzdG9yeUl0ZW1NYXAmIGlkVG9IaXN0
b3J5SXRlbU1hcCgpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAotdm9pZCBXZWJCYWNrRm9yd2FyZExp
c3RQcm94eTo6YWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYgaXRlbUlELCBSZWY8SGlzdG9yeUl0ZW0+JiYgaXRlbSwgdWludDY0X3QgcGFnZUlELCBP
dmVyd3JpdGVFeGlzdGluZ0l0ZW0gb3ZlcndyaXRlRXhpc3RpbmdJdGVtKQordm9pZCBXZWJCYWNr
Rm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgQmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYgaXRlbUlELCBSZWY8SGlzdG9yeUl0ZW0+JiYgaXRlbSwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0gb3ZlcndyaXRlRXhpc3RpbmdJdGVt
KQogewogICAgIC8vIFRoaXMgaXRlbS9pdGVtSUQgcGFpciBzaG91bGQgbm90IGFscmVhZHkgZXhp
c3QgaW4gb3VyIG1hcC4KICAgICBBU1NFUlRfVU5VU0VEKG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSwg
b3ZlcndyaXRlRXhpc3RpbmdJdGVtID09IE92ZXJ3cml0ZUV4aXN0aW5nSXRlbTo6WWVzIHx8ICFp
ZFRvSGlzdG9yeUl0ZW1NYXAoKS5jb250YWlucyhpdGVtSUQpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5o
CmluZGV4IGYzYjFjOGFmNTQ4Li5kMWJhYWRiOTFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBA
IC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0Zv
cndhcmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9OwotICAgIHZvaWQg
YWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgdWludDY0X3QgcGFnZUlELCBPdmVy
d3JpdGVFeGlzdGluZ0l0ZW0pOworICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3Qg
V2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5
SXRlbT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7
CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDE2MGVkZWZkNTlkLi4yZDlkMDg1ZTNiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwCkBAIC00OSw3ICs0OSw3IEBAIFdlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKCkKIFN0cmlu
ZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAg
ICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAg
ICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtNjYsNyAr
NjYsNyBAQCBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29v
a2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsK
LSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewog
ICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAg
ICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtODMs
NyArODMsNyBAQCBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29y
ZTo6RG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2ll
SmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYg
c2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRl
SW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgV2Vi
Q29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBi
b29sIHNlY3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwpAQCAtOTUsNyArOTUsNyBAQCBzdGQ6
OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUph
cjo6Y29va2llUmVxdWVzdEhlYQogYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50
LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5m
cmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdl
SUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFy
LmgKaW5kZXggOTdkZDc2ZjY2NGMuLjU1OWJkMGU1MGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nIGNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykgZmluYWw7CiAgICAgYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYpIGNvbnN0IGZpbmFsOwotICAgIHN0
ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmlu
ZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAppbmRleCA4OTBjNWU1NmFjMC4uNGFmNDk1YTUxYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMg
dWludDY0X3QgZ2VuZXJhdGVMaXN0ZW5lcklEKCkKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNy
ZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjb3Jl
RnJhbWUpCiB7CiAgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJh
bWVMb2FkZXJDbGllbnQ+KHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oJmNvcmVG
cmFtZS0+bG9hZGVyKCkuY2xpZW50KCkpKSk7Ci0gICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRDcmVhdGVNYWluRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0
ZU1haW5GcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUg
PSBjb3JlRnJhbWU7CiAgICAgZnJhbWUtPm1fY29yZUZyYW1lLT50cmVlKCkuc2V0TmFtZShTdHJp
bmcoKSk7CkBAIC0xMjEsNyArMTIxLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRl
V2l0aENvcmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMKIFJlZjxX
ZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsK
ICAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVMb2FkZXJD
bGllbnQ+KCkpOwotICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3Jl
YXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5m
cmFtZUlEKCkpKTsKIAogICAgIGF1dG8gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5j
b3JlUGFnZSgpLCBvd25lckVsZW1lbnQsIGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgp
KTsKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUgPSBjb3JlRnJhbWUucHRyKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXgg
Yzk2NTJlOTRhZjguLmJjZmY4ZTJhODk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYklu
c3BlY3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlJiBwYWdlKQogI2VuZGlmCiB9CiAKLXZv
aWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwp
Cit2b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKFBhZ2VJZGVudGlmaWVy
IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVj
dGlvbkxldmVsKQogewogICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllcjsKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci5yZXNldCgpOwpAQCAt
MTY3LDcgKzE2Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKICAgICBp
ZiAobV9mcm9udGVuZEhvc3QpCiAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xp
ZW50KCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBtX2luc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
clVJLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5o
CmluZGV4IDgzODFiZjFjZWRlLi45NDI0YmZlMWYyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwpAQCAt
NTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJl
bmNlKSBvdmVycmlkZSB7IGNsb3NlV2luZG93KCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJ
bnNwZWN0b3JVSSBtZXNzYWdlcwotICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRf
dCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3Bl
Y3Rpb25MZXZlbCk7CisgICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWdu
ZWQgaW5zcGVjdGlvbkxldmVsKTsKICAgICB2b2lkIHVwZGF0ZUNvbm5lY3Rpb24oKTsKIAogICAg
IHZvaWQgc2hvd0NvbnNvbGUoKTsKQEAgLTEzMyw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIC8v
IGNvcmVQYWdlKCksIHNpbmNlIHdlIG1heSBuZWVkIGl0IGFmdGVyIHRoZSBmcm9udGVuZCdzIHBh
Z2UgaGFzIHN0YXJ0ZWQgZGVzdHJ1Y3Rpb24uCiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlciogbV9mcm9udGVuZENvbnRyb2xsZXIgeyBudWxscHRyIH07CiAKLSAgICB1aW50NjRfdCBt
X2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyIHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7CiAgICAgYm9vbCBtX3VuZGVyVGVzdCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2RvY2tpbmdVbmF2YWlsYWJsZSB7IGZhbHNlIH07CiAgICAgYm9v
bCBtX2lzVmlzaWJsZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCmluZGV4IGRlYTBm
ZTU4NGQ0Li40MzE5MGFhODM0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIx
LDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUkgewotICAg
IEVzdGFibGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJv
b2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCisgICAgRXN0YWJsaXNoQ29u
bmVjdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwg
Ym9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKICAgICBVcGRhdGVDb25u
ZWN0aW9uKCkKIAogICAgIEF0dGFjaGVkQm90dG9tKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggM2JhYWZkMTg1NGMuLjIwODdmMjE0YWQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzYw
LDcgKzM2MCw3IEBAIHByaXZhdGU6CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJl
ZkNvdW50ZWRMZWFrQ291bnRlciwgd2ViUGFnZUNvdW50ZXIsICgiV2ViUGFnZSIpKTsKIAotUmVm
PFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZShJ
ZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMp
CiB7CiAgICAgUmVmPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlE
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiAKQEAgLTM3MCw3ICszNzAsNyBAQCBSZWY8V2ViUGFn
ZT4gV2ViUGFnZTo6Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZQogICAgIHJldHVybiBwYWdlOwogfQogCi1XZWJQYWdlOjpXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitX
ZWJQYWdlOjpXZWJQYWdlKElkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IG1fcGFnZUlEKHBhZ2VJRCkKICAgICAsIG1fdmlld1Np
emUocGFyYW1ldGVycy52aWV3U2l6ZSkKICAgICAsIG1fYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Ny
b2xsZXIgeyBwYXJhbWV0ZXJzLmFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyIH0KQEAgLTgz
MSw3ICs4MzEsNyBAQCBJUEM6OkNvbm5lY3Rpb24qIFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGFnZTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0
aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBwYWdlSUQoKTsKKyAgICByZXR1cm4gcGFnZUlE
KCkudG9VSW50NjQoKTsKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAtMTY0OCw3
ICsxNjQ4LDcgQEAgdm9pZCBXZWJQYWdlOjpnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgQmFja0ZvcndhcmRJdGVtSWQKICAgICBpZiAoIWl0ZW0pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIExPRyhMb2FkaW5nLCAiSW4gV2ViUHJvY2VzcyBwaWQgJWksIFdl
YlBhZ2UgJSIgUFJJdTY0ICIgaXMgbmF2aWdhdGluZyB0byBiYWNrL2ZvcndhcmQgVVJMICVzIiwg
Z2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX3BhZ2VJRCwgaXRlbS0+dXJsKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJJbiBXZWJQcm9jZXNzIHBpZCAlaSwgV2Vi
UGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZpZ2F0aW5nIHRvIGJhY2svZm9yd2FyZCBVUkwgJXMiLCBn
ZXRDdXJyZW50UHJvY2Vzc0lEKCksIG1fcGFnZUlELnRvVUludDY0KCksIGl0ZW0tPnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdOYXZpZ2F0aW9u
SUQpOwogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKQEAgLTIwNzYs
NyArMjA3Niw3IEBAIGJvb2wgV2ViUGFnZTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0IEludFNp
emUmIHNpemUpCiAgICAgaWYgKCF2aWV3IHx8IHZpZXctPmZpeGVkTGF5b3V0U2l6ZSgpID09IHNp
emUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxl
UmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlEIDw8ICIgc2V0Rml4ZWRMYXlv
dXRTaXplICIgPDwgc2l6ZSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3Ry
ZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQudG9VSW50NjQoKSA8PCAiIHNldEZpeGVkTGF5
b3V0U2l6ZSAiIDw8IHNpemUpOwogICAgIHZpZXctPnNldEZpeGVkTGF5b3V0U2l6ZShzaXplKTsK
IAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rml4ZWRMYXlvdXRTaXplRGlkQ2hh
bmdlKHNpemUpKTsKQEAgLTI1MDQsNyArMjUwNCw3IEBAIGNvbnN0IFdlYkV2ZW50KiBXZWJQYWdl
OjpjdXJyZW50RXZlbnQoKQogdm9pZCBXZWJQYWdlOjpmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVl
RnJlZXplUmVhc29uIHJlYXNvbikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lv
biwgIiVwIC0gV2ViUGFnZSAoUGFnZUlEPSVsbHUpIC0gQWRkaW5nIGEgcmVhc29uICVkIHRvIGZy
ZWV6ZSBsYXllciB0cmVlOyBjdXJyZW50IHJlYXNvbnMgYXJlICVkIiwKLSAgICAgICAgdGhpcywg
bV9wYWdlSUQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24pLCBtX2xheWVyVHJlZUZyZWV6
ZVJlYXNvbnMudG9SYXcoKSk7CisgICAgICAgIHRoaXMsIG1fcGFnZUlELnRvVUludDY0KCksIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24pLCBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMudG9S
YXcoKSk7CiAgICAgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLmFkZChyZWFzb24pOwogICAgIHVw
ZGF0ZURyYXdpbmdBcmVhTGF5ZXJUcmVlRnJlZXplU3RhdGUoKTsKIH0KQEAgLTI1MTIsNyArMjUx
Miw3IEBAIHZvaWQgV2ViUGFnZTo6ZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNv
biByZWFzb24pCiB2b2lkIFdlYlBhZ2U6OnVuZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6
ZVJlYXNvbiByZWFzb24pCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIl
cCAtIFdlYlBhZ2UgKFBhZ2VJRD0lbGx1KSAtIFJlbW92aW5nIGEgcmVhc29uICVkIHRvIGZyZWV6
ZSBsYXllciB0cmVlOyBjdXJyZW50IHJlYXNvbnMgYXJlICVkIiwKLSAgICAgICAgdGhpcywgbV9w
YWdlSUQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24pLCBtX2xheWVyVHJlZUZyZWV6ZVJl
YXNvbnMudG9SYXcoKSk7CisgICAgICAgIHRoaXMsIG1fcGFnZUlELnRvVUludDY0KCksIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihyZWFzb24pLCBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMudG9SYXco
KSk7CiAgICAgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnJlbW92ZShyZWFzb24pOwogICAgIHVw
ZGF0ZURyYXdpbmdBcmVhTGF5ZXJUcmVlRnJlZXplU3RhdGUoKTsKIH0KQEAgLTMxNjgsNyArMzE2
OCw3IEBAIHZvaWQgV2ViUGFnZTo6dmlzaWJpbGl0eURpZENoYW5nZSgpCiAKIHZvaWQgV2ViUGFn
ZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4gYWN0aXZp
dHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCwgY29u
c3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykKIHsKLSAgICBMT0dfV0lUSF9TVFJF
QU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgcGFnZUlEKCkgPDwgIiBz
ZXRBY3Rpdml0eVN0YXRlIHRvICIgPDwgYWN0aXZpdHlTdGF0ZSk7CisgICAgTE9HX1dJVEhfU1RS
RUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IHBhZ2VJRCgpLnRvVUlu
dDY0KCkgPDwgIiBzZXRBY3Rpdml0eVN0YXRlIHRvICIgPDwgYWN0aXZpdHlTdGF0ZSk7CiAKICAg
ICBhdXRvIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOwogICAgIG1f
YWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5U3RhdGU7CkBAIC0zMTc2LDcgKzMxNzYsNyBAQCB2b2lk
IFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+
IGFjdGl2aXR5U3RhdGUsIEFjdAogICAgIGlmIChjaGFuZ2VkKQogICAgICAgICB1cGRhdGVUaHJv
dHRsZVN0YXRlKCk7CiAKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcGFnZSwgInNldEFjdGl2
aXR5U3RhdGUgY2FsbGVkIG9uICUiIFBSSXU2NCAiIGJ1dCBXZWJDb3JlIHBhZ2Ugd2FzIG51bGwi
LCBwYWdlSUQoKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BhZ2UsICJzZXRBY3Rpdml0
eVN0YXRlIGNhbGxlZCBvbiAlIiBQUkl1NjQgIiBidXQgV2ViQ29yZSBwYWdlIHdhcyBudWxsIiwg
cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgaWYgKG1fcGFnZSkgewogICAgICAgICBTZXRGb3JT
Y29wZTxPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4+IGN1cnJlbnRseUNoYW5naW5nQWN0
aXZpdHlTdGF0ZSB7IG1fbGFzdEFjdGl2aXR5U3RhdGVDaGFuZ2VzLCBjaGFuZ2VkIH07CiAgICAg
ICAgIG1fcGFnZS0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKTsKQEAgLTQzMzksNyAr
NDMzOSw3IEBAIHZvaWQgV2ViUGFnZTo6bWFpbkZyYW1lRGlkTGF5b3V0KCkKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1haW5GcmFtZVZp
ZXcoKSkgewogICAgICAgICBJbnRTaXplIG5ld0NvbnRlbnRTaXplID0gZnJhbWVWaWV3LT5jb250
ZW50c1NpemUoKTsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFt
IDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQgPDwgIiBtYWluRnJhbWVEaWRMYXlvdXQgc2V0dGlu
ZyBjb250ZW50IHNpemUgdG8gIiA8PCBuZXdDb250ZW50U2l6ZSk7CisgICAgICAgIExPR19XSVRI
X1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlELnRv
VUludDY0KCkgPDwgIiBtYWluRnJhbWVEaWRMYXlvdXQgc2V0dGluZyBjb250ZW50IHNpemUgdG8g
IiA8PCBuZXdDb250ZW50U2l6ZSk7CiAgICAgICAgIGlmIChtX3ZpZXdwb3J0Q29uZmlndXJhdGlv
bi5zZXRDb250ZW50c1NpemUobmV3Q29udGVudFNpemUpKQogICAgICAgICAgICAgdmlld3BvcnRD
b25maWd1cmF0aW9uQ2hhbmdlZCgpOwogICAgIH0KQEAgLTU3NDIsNyArNTc0Miw3IEBAIHZvaWQg
V2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAgCiAgICAgYm9vbCB2
aWV3cG9ydENoYW5nZWQgPSBmYWxzZTsKIAotICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVj
dHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlEIDw8ICIgZGlkQ29tbWl0TG9hZCBz
ZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IGNvcmVGcmFtZS0+dmlldygpLT5jb250ZW50c1Np
emUoKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQ
YWdlICIgPDwgbV9wYWdlSUQudG9VSW50NjQoKSA8PCAiIGRpZENvbW1pdExvYWQgc2V0dGluZyBj
b250ZW50IHNpemUgdG8gIiA8PCBjb3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkpOwog
ICAgIGlmIChtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRDb250ZW50c1NpemUoY29yZUZyYW1l
LT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKSkKICAgICAgICAgdmlld3BvcnRDaGFuZ2VkID0gdHJ1
ZTsKIApAQCAtNjA1Niw3ICs2MDU2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZW5kRWRpdG9yU3RhdGVV
cGRhdGUoKQogICAgIC8vIElmIHRoYXQgaXMgdGhlIGNhc2UsIGp1c3Qgc2VuZCB3aGF0IHdlIGhh
dmUgKGkuZS4gZG9uJ3QgaW5jbHVkZSBwb3N0LWxheW91dCBkYXRhKSBhbmQgd2FpdCB1bnRpbCB0
aGUKICAgICAvLyBuZXh0IGxheWVyIHRyZWUgY29tbWl0IHRvIGNvbXB1dGUgYW5kIHNlbmQgdGhl
IGNvbXBsZXRlIEVkaXRvclN0YXRlIG92ZXIuCiAgICAgYXV0byBzdGF0ZSA9IGVkaXRvclN0YXRl
KCk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNoYW5nZWQo
c3RhdGUpLCBwYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0
b3JTdGF0ZUNoYW5nZWQoc3RhdGUpKTsKIAogICAgIGlmIChzdGF0ZS5pc01pc3NpbmdQb3N0TGF5
b3V0RGF0YSkKICAgICAgICAgc2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKTsKQEAgLTYy
MzcsNyArNjIzNyw3IEBAIHZvaWQgV2ViUGFnZTo6cG9zdE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBt
ZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogCiB2b2lkIFdlYlBhZ2U6OnBv
c3RNZXNzYWdlSWdub3JpbmdGdWxseVN5bmNocm9ub3VzTW9kZShjb25zdCBTdHJpbmcmIG1lc3Nh
Z2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiB7Ci0gICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpIYW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0YShXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KSkp
LCBwYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSk7
CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVNZXNzYWdlKG1lc3NhZ2VO
YW1lLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9I
YW5kbGVzKG1lc3NhZ2VCb2R5KSkpLCBJUEM6OlNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hy
b25vdXNNb2RlKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpwb3N0U3luY2hyb25vdXNNZXNzYWdlRm9y
VGVzdGluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJv
ZHksIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggODY4YWU5MmYyZmIuLjYxZTY0OTI4ZjkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NCw2ICs2
NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2ludGVy
SUQuaD4KQEAgLTI3Myw3ICsyNzQsOSBAQCB1c2luZyBXS0V2ZW50TW9kaWZpZXJzID0gdWludDMy
X3Q7CiAKIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGFnZT4gewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICB1c2luZyBJZGVudGlmaWVyID0gV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI7CisgICAgc3RhdGljIFJlZjxXZWJQYWdlPiBjcmVhdGUoSWRlbnRp
ZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKwogICAgIHZpcnR1YWwgfldlYlBh
Z2UoKTsKIAogICAgIHZvaWQgcmVpbml0aWFsaXplV2ViUGFnZShXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOwpAQCAtMjgzLDcgKzI4Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUGFn
ZSogZnJvbUNvcmVQYWdlKFdlYkNvcmU6OlBhZ2UqKTsKIAogICAgIFdlYkNvcmU6OlBhZ2UqIGNv
cmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdldCgpOyB9Ci0gICAgdWludDY0X3QgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBJZGVudGlmaWVyIHBhZ2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQoKTsgfQogICAgIGJvb2wgdXNlc0Vw
aGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3BhZ2UtPnVzZXNFcGhlbWVyYWxTZXNz
aW9uKCk7IH0KIApAQCAtMTE2Niw3ICsxMTY5LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2VuZFN5
bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5
KQogICAgIHsKICAgICAgICAgY2FuY2VsR2VzdHVyZXNCbG9ja2VkT25TeW5jaHJvbm91c1JlcGxp
ZXMoKTsKLSAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUo
cmVwbHkpLCBtX3BhZ2VJRCwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlv
bjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOworICAgICAgICByZXR1cm4gc2Vu
ZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIFNlY29uZHM6OmluZmluaXR5
KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5k
KTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RE
T01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpOwpAQCAtMTE5OSw3
ICsxMjAyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlcklzSW50ZXJhY3RpbmcoYm9vbCB1
c2VySXNJbnRlcmFjdGluZykgeyBtX3VzZXJJc0ludGVyYWN0aW5nID0gdXNlcklzSW50ZXJhY3Rp
bmc7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBXZWJQYWdlKElkZW50aWZpZXIsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIApA
QCAtMTU4NSw3ICsxNTg4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTW9ja0FjY2Vz
c2liaWxpdHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpOwogCi0gICAgdWludDY0X3QgbV9w
YWdlSUQ7CisgICAgSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5GcmFtZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJbnNw
ZWN0b3JUYXJnZXQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZUluc3BlY3RvclRhcmdldC5jcHAKaW5kZXggZDk2YTdkN2RkYTkuLmI3Nzk5YjRmYmI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0LmNwcApAQCAtNDEsNyArNDEsNyBAQCBXZWJQYWdlSW5zcGVjdG9yVGFy
Z2V0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0KFdlYlBhZ2UmIHBhZ2UpCiAKIFN0cmluZyBXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0OjppZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFr
ZVN0cmluZygicGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIHJldHVybiBtYWtlU3RyaW5n
KCJwYWdlLSIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBjaGFu
bmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaAppbmRleCAz
MDFiMTM5ZTFkMi4uNmI3ZWM1YjE2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZS5oCkBAIC0yNiwxMyArMjYsMTUgQEAKICNpZm5kZWYgV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdEJhc2VfaAogI2RlZmluZSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2Jq
ZWN0QmFzZV9oCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisKIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIH0KIAogQGludGVyZmFjZSBXS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZSA6IE5TT2JqZWN0IHsKICAgICBXZWJLaXQ6OldlYlBhZ2Uq
IG1fcGFnZTsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX3BhZ2VJRDsKICAgICBpZCBtX3BhcmVudDsKICAgICBib29sIG1faGFzTWFpbkZyYW1l
UGx1Z2luOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1t
CmluZGV4IDNkM2YzNTU1M2U2Li42MTY1YTAxZmU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMTQ4LDcgKzE0OCw3IEBAIC0gKHZvaWQpc2V0
V2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlKilwYWdlCiAgICAgICAgIGF1dG8qIGZyYW1lID0gcGFn
ZS0+bWFpbkZyYW1lKCk7CiAgICAgICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gZnJhbWUgJiYg
ZnJhbWUtPmRvY3VtZW50KCkgPyBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgp
IDogZmFsc2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9wYWdlSUQgPSAwOworICAgICAgICBt
X3BhZ2VJRCA9IHsgfTsKICAgICAgICAgbV9oYXNNYWluRnJhbWVQbHVnaW4gPSBmYWxzZTsKICAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNWNlNjlj
Y2Y4MzMuLjYxNzRiMGEzYmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAgICAgICAg
IGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0aWNzKSksIDApOwogICAgIH0pOwogCi0gICAgUmVzb3Vy
Y2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVy
UGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKSB7CisgICAgUmVz
b3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJP
cGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZp
ZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKSB7
CiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihzZXNzaW9uSUQsIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsKICAgICB9KTsKICNlbmRpZgpAQCAt
NjY3LDE2ICs2NjcsMTYgQEAgV2ViUGFnZSogV2ViUHJvY2Vzczo6Zm9jdXNlZFdlYlBhZ2UoKSBj
b25zdAogICAgIHJldHVybiAwOwogfQogICAgIAotV2ViUGFnZSogV2ViUHJvY2Vzczo6d2ViUGFn
ZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CitXZWJQYWdlKiBXZWJQcm9jZXNzOjp3ZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlTWFwLmdldChw
YWdlSUQpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFn
ZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQgV2ViUHJv
Y2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBj
aGVjayBmb3IgcGFnZSBleGlzdGVuY2UgaGVyZSBzaW5jZSBkdXJpbmcgYSB3aW5kb3cub3Blbigp
IChvciB0YXJnZXRlZAogICAgIC8vIGxpbmspIHRoZSBXZWJQYWdlIGdldHMgY3JlYXRlZCBib3Ro
IGluIHRoZSBzeW5jaHJvbm91cyBoYW5kbGVyIGFuZCB0aHJvdWdoIHRoZSBub3JtYWwgd2F5LiAK
LSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4+OjpBZGRSZXN1bHQgcmVzdWx0
ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0ID0gbV9w
YWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOwogICAgIGF1dG8gb2xkUGFnZUlEID0gcGFyYW1l
dGVycy5vbGRQYWdlSUQgPyBwYXJhbWV0ZXJzLm9sZFBhZ2VJRC52YWx1ZSgpIDogcGFnZUlEOwog
ICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBBU1NFUlQoIXJlc3VsdC5pdGVy
YXRvci0+dmFsdWUpOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRl
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJh
CiAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCi12b2lkIFdlYlByb2Nl
c3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdl
SUQpCit2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1hcC5jb250
YWlucyhwYWdlSUQpKTsKIApAQCAtMTQ1MCw3ICsxNDUwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjp1
cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbikKIAogI2VuZGlmCiAK
LXZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0X3QsIE9w
dGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQordm9pZCBXZWJQ
cm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShQYWdlSWRlbnRpZmllciwgT3B0aW9u
U2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpCiB7CiAgICAgaWYgKGNo
YW5nZWQgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAgIHVwZGF0
ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uOjpWaXNpYmlsaXR5SGFzQ2hh
bmdlZCk7CkBAIC0xNjI0LDEzICsxNjI0LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2VuZFByZXdh
cm1JbmZvcm1hdGlvbihjb25zdCBVUkwmIHVybCkKICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZENvbGxlY3RQcmV3YXJtSW5m
b3JtYXRpb24ocmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5nOjpjb2xs
ZWN0UHJld2FybUluZm9ybWF0aW9uKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwYWdl
RGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlRGlk
RW50ZXJXaW5kb3coUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fcGFnZXNJbldpbmRv
d3MuYWRkKHBhZ2VJRCk7CiAgICAgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lci5zdG9w
KCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBw
YWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVhdmVXaW5kb3coUGFnZUlkZW50aWZp
ZXIgcGFnZUlEKQogewogICAgIG1fcGFnZXNJbldpbmRvd3MucmVtb3ZlKHBhZ2VJRCk7CiAKQEAg
LTE2NzMsNyArMTY3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5hYmxlUHJpdmF0ZUJyb3dzaW5n
Rm9yVGVzdGluZyhib29sIGVuYWJsZSkKICAgICBpZiAoZW5hYmxlKQogICAgICAgICBlbnN1cmVM
ZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwogCi0gICAgVmVj
dG9yPHVpbnQ2NF90PiBwYWdlSURzOworICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
czsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXApIHsKICAgICAgICAgaWYgKHBhZ2Uu
dmFsdWUpCiAgICAgICAgICAgICBwYWdlSURzLmFwcGVuZChwYWdlLmtleSk7CkBAIC0xODUzLDcg
KzE4NTMsNyBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENOZXR3b3Jr
KCkKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vzczo6ZXN0
YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBh
Z2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0
b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQordm9pZCBXZWJQcm9jZXNzOjpl
c3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3Qg
cGFnZUdyb3VwSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7CiAgICAgLy8g
V2UgYXJlIGluIHRoZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRoZSBjYWxs
IGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFByb2Nlc3MK
ICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4gU1dDb250
ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNvbm5lY3Rp
b24gYXMgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA1MjVkZjE4
M2YyMi4uMTg1N2NlYTBlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaApA
QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aCIKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0FjdGl2aXR5U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lmIFBMQVRGT1JNKE1B
QykKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KQEAgLTE0NSw5ICsxNDYs
OSBAQCBwdWJsaWM6CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNvbm5lY3Rp
b25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQoKTsgfQog
Ci0gICAgV2ViUGFnZSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OwotICAgIHZvaWQg
Y3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
Jik7Ci0gICAgdm9pZCByZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdl
SUQpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGNvbnN0
OworICAgIHZvaWQgY3JlYXRlV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNz
aW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBXZWJQYWdlKiBmb2N1c2VkV2Vi
UGFnZSgpIGNvbnN0OwogCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVuZGxlKCkgY29u
c3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQpAQCAtMTk5LDggKzIwMCw4IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbklu
TmV0d29ya1Byb2Nlc3MoKTsKIAotICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90
IHBhZ2VJRCk7Ci0gICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3coV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwor
ICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAK
ICAgICB2b2lkIG5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmlyZWQoKTsKIApAQCAtMjE5
LDcgKzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlUGFnZXMoKTsKICAg
ICB2b2lkIGdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCBwYWdlQWN0aXZpdHlTdGF0ZURp
ZENoYW5nZSh1aW50NjRfdCBwYWdlSUQsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRl
OjpGbGFnPiBjaGFuZ2VkKTsKKyAgICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZz4gY2hhbmdlZCk7CiAKICAgICB2b2lkIHNldEhpZGRlblBhZ2VET01UaW1lclRocm90dGxp
bmdJbmNyZWFzZUxpbWl0KGludCBtaWxsaXNlY29uZHMpOwogCkBAIC0zNTksNyArMzYwLDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQg
ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90
IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
LCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOwog
ICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogI2VuZGlmCiAKQEAgLTQ2
MCw3ICs0NjEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25Ub1VJUHJv
Y2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdl
YlBhZ2U+PiBtX3BhZ2VNYXA7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
UmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFdlYlBhZ2VHcm91cFByb3h5Pj4gbV9wYWdlR3JvdXBNYXA7CiAgICAgUmVmUHRyPEluamVjdGVk
QnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwogCkBAIC01MTQsNyArNTE1LDcgQEAgcHJpdmF0ZToK
IAogICAgIGJvb2wgbV9wcm9jZXNzSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCi0gICAgSGFzaFNl
dDx1aW50NjRfdD4gbV9wYWdlc0luV2luZG93czsKKyAgICBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBtX3BhZ2VzSW5XaW5kb3dzOwogICAgIFdlYkNvcmU6OlRpbWVyIG1fbm9uVmlz
aWJsZVByb2Nlc3NDbGVhbnVwVGltZXI7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZVN0b3JhZ2U+IG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGIzOWIzOGMxODNj
Li41N2EyNjU2MzQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoc3RydWN0
IFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycykKIAogICAg
ICMgQ3JlYXRlIGEgbmV3IHBhZ2UuCi0gICAgQ3JlYXRlV2ViUGFnZSh1aW50NjRfdCBuZXdQYWdl
SUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFnZUNyZWF0aW9u
UGFyYW1ldGVycykKKyAgICBDcmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG5l
d1BhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzKQogCiAgICAgUHJld2FybUdsb2JhbGx5KCk7CiAgICAgUHJld2FybVdp
dGhEb21haW5JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uIHBy
ZXdhcm1JbmZvcm1hdGlvbikKQEAgLTExMSw3ICsxMTEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9j
ZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1
aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQ
cmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQor
ICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50
NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3Qg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFs
U2Vzc2lvbklEKQogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VB
cmVhTWFwLmNwcAppbmRleCAwYmQ5MGFmOTE4Ny4uMGU5NDI5NjA0OWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAK
QEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRjaFNlc3Npb25T
dG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgYwogCiAgICAgLy8gTmFt
ZXNwYWNlIElEcyBmb3Igc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQg
dG8gd2ViIHBhZ2UgSURzCiAgICAgLy8gc28gd2UgY2FuIGdldCB0aGUgcmlnaHQgcGFnZSBoZXJl
LgotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmll
clR5cGU+KG1fc3RvcmFnZU5hbWVzcGFjZUlEKSk7CiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAg
ICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCBiMzkwODFlNmUzYy4uODA5
NjIzNDI0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTQwLDEyICs0MCwxMiBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotUmVmPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQor
UmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UoUGFnZUlkZW50aWZpZXIgaWRlbnRpZmllciwgdW5zaWduZWQg
cXVvdGFJbkJ5dGVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLCBudWxscHRyLCBxdW90YUlu
Qnl0ZXMpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChT
dG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRlbnRpZmllci50b1VJbnQ2NCgpLCBudWxscHRyLCBxdW90
YUluQnl0ZXMpKTsKIH0KIAotUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNw
YWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlk
ZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1w
bD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVz
cGFjZShQYWdlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7
CiAgICAgcmV0dXJuIGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKGlkZW50aWZpZXIsIHF1
b3RhSW5CeXRlcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAppbmRleCA2NzU3ZTNiODE4OC4uMmU0
YTQyMjYwZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgpAQCAtMzks
OCArNDAsOCBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6
IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1
aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotICAgIHN0YXRpYyBS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVz
cGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIHN0
YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAg
IHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5
dGVzKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
KTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLm1tCmluZGV4IGZjNjU5ODYzMjUyLi43NjVlZmY0MDRiMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIu
bW0KQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFVw
UGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbQogICAgIGFkZENs
aWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpOwogCiAgICAgbV9wYWdl
LT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyV2l0aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OlNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQobV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXli
YWNrQ29udHJvbHNNYW5hZ2VyKCkKQEAgLTI5MSw3ICsyOTEsNyBAQCB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQogICAgIG1fY29udHJv
bHNNYW5hZ2VyQ29udGV4dElkID0gMDsKIAogICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFn
ZXJEaWRDaGFuZ2UoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6Q2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6Q2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpKTsKIH0KIAogdWludDY0X3Qg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y29udGV4dElkRm9yTWVkaWFFbGVtZW50KFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKQEAgLTMxOCwyNyArMzE4LDI3IEBAIFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRQ
bGF5YmFja0NvbnRyb2xzRWxlbWVuCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZHVy
YXRpb25DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGR1cmF0aW9uKQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpEdXJh
dGlvbkNoYW5nZWQoY29udGV4dElkLCBkdXJhdGlvbiksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpEdXJh
dGlvbkNoYW5nZWQoY29udGV4dElkLCBkdXJhdGlvbikpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmN1cnJlbnRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkN1cnJlbnRUaW1lQ2hhbmdlZChj
b250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkN1
cnJlbnRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKSk7CiB9
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YnVmZmVyZWRUaW1lQ2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJlZFRpbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkJ1ZmZlcmVkVGltZUNoYW5n
ZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QnVmZmVyZWRU
aW1lQ2hhbmdlZChjb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgZG91YmxlIHBsYXliYWNrU3RhcnRlZFRpbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU3RhcnRlZFRpbWVD
aGFuZ2VkKGNvbnRleHRJZCwgcGxheWJhY2tTdGFydGVkVGltZSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBsYXliYWNrU3RhcnRlZFRp
bWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyYXRlQ2hhbmdlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJh
dGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6UmF0ZUNoYW5nZWQoY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSkp
OwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWthYmxlUmFuZ2VzQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdlYkNvcmU6OlRpbWVSYW5nZXMmIHRpbWVSYW5n
ZXMsIGRvdWJsZSBsYXN0TW9kaWZpZWRUaW1lLCBkb3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKQpA
QCAtMzQ5LDM3ICszNDksMzcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrYWJs
ZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWIKICAgICAgICAgZG91
YmxlIGVuZCA9IHRpbWVSYW5nZXMucmFuZ2VzKCkuZW5kKGkpLnRvRG91YmxlKCk7CiAgICAgICAg
IHJhbmdlc1ZlY3Rvci5hcHBlbmQoeyBzdGFydCwgZW5kIH0pOwogICAgIH0KLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2Vla2FibGVSYW5n
ZXNWZWN0b3JDaGFuZ2VkKGNvbnRleHRJZCwgV1RGTW92ZShyYW5nZXNWZWN0b3IpLCBsYXN0TW9k
aWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWwpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2Vla2Fi
bGVSYW5nZXNWZWN0b3JDaGFuZ2VkKGNvbnRleHRJZCwgV1RGTW92ZShyYW5nZXNWZWN0b3IpLCBs
YXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWwpKTsKIH0KIAogdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vbCB2YWx1ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjb250ZXh0SWQs
IHZhbHVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY29u
dGV4dElkLCB2YWx1ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlv
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZl
Y3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlv
bnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlv
bk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlv
bnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9u
T3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgYm9vbCBlbmFibGVkLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkV4dGVy
bmFsUGxheWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZChjb250ZXh0SWQsIGVuYWJsZWQsIHN0YXRpY19j
YXN0PHVpbnQzMl90Pih0YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNlTmFtZSksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQoY29udGV4dElkLCBl
bmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxvY2FsaXplZERldmlj
ZU5hbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2Vs
ZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVj
dGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hh
bmdlZChjb250ZXh0SWQsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0X3QgY29u
dGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25J
bmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OkxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVjdGVkSW5k
ZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp3aXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGRpc2FibGVkKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVl
bk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlci5tbQppbmRleCA1ZDYxMTBiNzkwOS4uNzA2NjM5NzczNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyLm1tCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpl
bnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChIVE1MVmlkZW9FbGVtZW4KICAgICAg
ICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnNldFJvb3RMYXllcih2aWRlb0xh
eWVyKTsKICAgICB9CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRleHRJZCwgaW50ZXJmYWNl
LT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRleHRJRCgpLCB2aWRlb1JlY3QsIG1fcGFnZS0+
ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW50ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxvd3NQ
aWN0dXJlSW5QaWN0dXJlLCBzdGFuZGJ5KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldHVwRnVsbHNj
cmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5j
b250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCksIGludGVy
ZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSwgc3RhbmRieSkp
OwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5G
b3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50KQpA
QCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVv
RnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGludGVyZmFjZS5zZXRJc0FuaW1hdGluZyh0cnVlKTsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4o
Y29udGV4dElkLCBpbmxpbmVWaWRlb0ZyYW1lKHZpZGVvRWxlbWVudCkpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkLCBpbmxpbmVWaWRlb0ZyYW1lKHZpZGVvRWxl
bWVudCkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxs
c2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2
aWRlb0VsZW1lbnQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZSB0YXJnZXRNb2RlKQpAQCAtMzI0LDcgKzMyNCw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2Vi
Q29yZTo6CiAKICAgICBpbnRlcmZhY2Uuc2V0VGFyZ2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKIAot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpF
eGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4dElkLCB0YXJnZXRNb2Rl
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9k
ZShjb250ZXh0SWQsIHRhcmdldE1vZGUpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZpZGVv
RWxlbWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKHRhcmdldE1vZGUpOwpAQCAtMzM2LDEzICszMzYs
MTMgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9N
b2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjoKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6aGFzVmlkZW9DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbykKIHsK
ICAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW8oY29udGV4dElkLCBoYXNWaWRlbyksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW8oY29udGV4dElkLCBoYXNWaWRlbykpOwog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQo
dWludDY0X3QgY29udGV4dElkLCBjb25zdCBGbG9hdFNpemUmIHZpZGVvRGltZW5zaW9ucykKIHsK
ICAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGNvbnRleHRJZCwgdmlkZW9E
aW1lbnNpb25zKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29u
dGV4dElkLCB2aWRlb0RpbWVuc2lvbnMpKTsKIH0KIAogI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZy
b20gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OgpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QodWludDY0X3Qg
Y29udGV4dElkKQogCiAgICAgYXV0byYgbW9kZWwgPSBlbnN1cmVNb2RlbChjb250ZXh0SWQpOwog
ICAgIEludFJlY3QgaW5saW5lUmVjdCA9IGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxl
bWVudCgpKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6U2V0SW5saW5lUmVjdChjb250ZXh0SWQsIGlubGluZVJlY3QsIGlubGluZVJlY3Qg
IT0gSW50UmVjdCgwLCAwLCAwLCAwKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRJbmxpbmVSZWN0
KGNvbnRleHRJZCwgaW5saW5lUmVjdCwgaW5saW5lUmVjdCAhPSBJbnRSZWN0KDAsIDAsIDAsIDAp
KSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29udGVu
dExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKQEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250
ZXh0SWQpCiAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRh
YmxlIHsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRd
IHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNl
dEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgdHJ1ZSksIHByb3RlY3RlZFRoaXMtPm1f
cGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250
ZXh0SWQsIHRydWUpKTsKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CkBAIC0zOTQsNyArMzk0LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcih1
aW50NjRfdCBjb250ZXh0SWQpCiAgICAgICAgICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVu
TGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMs
IGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBy
b3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRl
bnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElk
LCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0pOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlk
U2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAg
IGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRl
eHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVs
bHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKICNlbHNlCiAgICAgQ0FMYXllciogdmlkZW9M
YXllciA9IGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5yb290TGF5ZXIoKTsKQEAg
LTQyMSw3ICs0MjEsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVs
bHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVl
bkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhp
cywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5t
X3BhZ2UpCi0gICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRl
eHRJZCkpOwogICAgICAgICB9KTsKICAgICB9KTsKICNlbmRpZgpAQCAtNDQyLDcgKzQ0Miw3IEBA
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90
IGNvbnRleHRJZCkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHZpZGVvRWxlbWVudCA9IFdURk1v
dmUodmlkZW9FbGVtZW50KSwgY29udGV4dElkXSB7CiAgICAgICAgIHZpZGVvRWxlbWVudC0+d2ls
bEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0g
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCks
IHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OlByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKIH0KIApAQCAt
NDg2LDcgKzQ4Niw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxz
Y3JlZW4odWludDY0X3QgY29udGV4dElkKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZV0gewogICAgICAgICBpZiAo
cHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxs
c2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0p
OwogI2Vsc2UKICAgICBtb2RlbC0+d2FpdEZvclByZXBhcmVkRm9ySW5saW5lVGhlbihbcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlLCBtb2RlbF0g
KCkgbXV0YWJsZSB7CkBAIC00OTgsNyArNDk4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnRlcmZhY2UtPnNldExheWVySG9zdGluZ0NvbnRleHQobnVsbHB0cik7CiAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRo
aXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVs
bHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0
SWQpKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
QEAgLTU1NSw3ICs1NTUsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3Jl
ZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBjb250ZXh0SWQsIGJvbwogCiAgICAgaWYgKCFp
c1BhZ2VWaXNpYmxlKQogICAgICAgICBtb2RlbC52aWRlb0VsZW1lbnQoKS0+c2Nyb2xsSW50b1Zp
ZXdJZk5vdFZpc2libGUoZmFsc2UpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoY29udGV4dElk
LCB0cnVlLCBpbmxpbmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSkpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVyblRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5s
aW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50KCkpKSk7CiB9CiAKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQo
dWludDY0X3QgY29udGV4dElkLCBNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVx
dWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQ6OkFzeW5jUmVwbHkmJiByZXBseSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29j
b2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
CmluZGV4IDJlMTkwYjAzNWY3Li5iOWNlNzlkMjc0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MzksNyArNTM5LDcgQEAg
c3RhdGljIE5TVVJMICpvcmlnaW4oV2ViUGFnZSYgcGFnZSkKICNlbmRpZgogCiAjaWYgUExBVEZP
Uk0oTUFDKQotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PE5TU3RyaW5nICo+PiBhY3RpdmVQYWdl
c09yaWdpbnMoY29uc3QgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+PiYgcGFnZU1h
cCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNPcmln
aW5zKGNvbnN0IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4mIHBhZ2VN
YXApCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+PiBhY3RpdmVP
cmlnaW5zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2Fk
U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA5ODcyYzMxYmE1OC4uNzk2MDI0YzhjZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0
L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxv
YWRlciYgZnJhbWVMb2FkZQogICAgIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KGZyYW1lTG9hZGVyLm5ldHdvcmtpbmdDb250ZXh0KCksIHJlcXVlc3QsIG9wdGlvbnMu
Y3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpDcmVkZW50aWFsczo6T21pdCA/IFN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2Us
IGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyOjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCAvKndlYlBhZ2VJRCovKQordm9pZCBXZWJS
ZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyKQog
ewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dl
YlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAppbmRleCA1NWIzNjk3NTMwNi4uNWY2MmY3
NzdhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3Jl
U3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGxvYWRSZXNvdXJjZShXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdl
YkNvcmU6OlN1YnJlc291cmNlTG9hZGVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9uZywg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlh
bFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6SFRU
UEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgVmVjdG9yPGNoYXI+JikgZmluYWw7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRl
ZCh1aW50NjRfdCB3ZWJQYWdlSUQpIGZpbmFsOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCmluZGV4IDEzODU1ODNhZjI5Li5iMTQwM2QwNTYzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmcmFtZUxvYWRlckRl
c3Ryb3llZCgpIGZpbmFsOwogICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFsOyAvLyBt
YWlubHkgZm9yIGFzc2VydGlvbnMKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBj
b25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlE
KCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBm
aW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3Zjg2OWYxZGRjYi4uN2ViYTNhOThhYTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yMDksNyArMjA5LDcgQEAgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50KFdlYkZyYW1lICp3ZWJGcmFtZSkKIHsK
IH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBj
b25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdl
SUQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370614</attachid>
            <date>2019-05-24 18:42:30 -0700</date>
            <delta_ts>2019-05-24 19:02:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198206-20190524184229.patch</filename>
            <type>text/plain</type>
            <size>504350</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyNjVhYmRkMGVkYTI2ZTdmMWEyZDlk
NGZjNGVmMTJhYjVhM2M5OTguLjlmZGY2NjZiN2ZkMWY2NTkzZDI4M2E2NmFhMjg3YzQ0NDdkY2Uz
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZv
ciBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvT2JqZWN0SWRlbnRpZmllci5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KToKKwog
MjAxOS0wNS0yMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAg
ICAgIFtDTWFrZV0gVXNlIHRhcmdldCBvcmllbnRlZCBkZXNpZ24gZm9yIGJtYWxsb2MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxNWFiZmZhZjY1ZDkwM2MxOWNmNDk0OWE2Nzg1NDg0NDRkOGJmNDk0Li5jZTE2ZjA0
MmFjZDMxYjgyZmVmOWYzYjI3OTEzYzI1ZDIxYzA4MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZvciBwYWdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MjA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLyo6CisKIDIw
MTktMDUtMjMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE92ZXJsYXk6IHJ1bGVycyBzaG91bGQgc3dpdGNoIHNpZGVzIGlmIHRoZXkg
aW50ZXJzZWN0IHRoZSBoaWdobGlnaHRlZCBub2RlKHMpIHNvIHRoZXkgZG9uJ3Qgb2JzdHJ1Y3Qg
YW55IGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZjZjI0MDAwYWQ3NjMwZWM4ZWRkMjdkNGRlZDY5Y2Vh
NzVmYzM0ZS4uM2U2YjcwNWE4ZDI5MDMzMmE1ZWM1NTRjZjE1NzBjY2QxNzk0OTUwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBh
Z2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgy
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdC8qOgorCiAyMDE5LTA1LTIzICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255
LmNvbT4KIAogICAgICAgICBTb2NrZXQtYmFzZWQgUldJIHNob3VsZCBiZSBhYmxlIHRvIGluc3Bl
Y3QgYSBKU0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMWRkNTRlYWZhMzdmZDZiZDYx
NzY3OTI4N2EzODViYmE0MDk0NjU4NS4uOGFjYzQ2NjMyNDRkMjk0NjA4MDk0N2ZhZWU2NDQyYTE0
ZWZjYjg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0y
NCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9u
Z2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VMb2Fk
Q29tcGxldGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaDoKKwogMjAxOS0wNS0xNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgogCiAgICAgICAgIFtDTWFrZV0gVXNlIGJ1aWx0aW4gRmluZElDVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IGY5NzAwZjMxZmNkZjg3YTFiMTJmMDFjMWUyYTc0ZjUwNjc4NzFm
YWIuLjU2ZWU4YzNhYTkwNjczZmMwNzk2YTNkYTRjZDMyYzhmMTE0Nzc1NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlk
ZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEIGNvbnN0KToKKwogMjAxOS0wNS0yMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBJT1NN
QUMgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwN2EzYzA1
NTBhZTIzMjNjMWMxOWJiMjk1MzM5ZmQ4Li5iM2JjYWRkOWRkMTk1YWIzMGIxOGNmMWRhZDMzNTIz
MTE5MjUyNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
MTIyLDYgKzEyMywxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
T2JqZWN0SWRlbnRpZmllcjxUPj4gewogICAgIHR5cGVkZWYgT2JqZWN0SWRlbnRpZmllckhhc2g8
VD4gSGFzaDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBPYmplY3RJZGVudGlmaWVyPFQ+JiBpZGVudGlmaWVy
KQoreworICAgIHRzIDw8IGlkZW50aWZpZXIudG9VSW50NjQoKTsKKyAgICByZXR1cm4gdHM7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok9iamVjdElkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQppbmRleCBjMmM3YzIyNDllM2YxZWMwNzE2NGE5MzA5ODY1YjU3NTgyMzI4
OTEzLi40NDgyZDVkNDc1MDM5YmEwNmQ4OGJhOWUxNzNiMmMzZGY5NzM4ODM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKQEAgLTc3OSw2ICs3NzksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCiAgICAgcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5oCiAgICAgcGFnZS9QYWdlR3JvdXAuaAorICAgIHBhZ2UvUGFnZUlkZW50aWZp
ZXIuaAogICAgIHBhZ2UvUGFnZU92ZXJsYXkuaAogICAgIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9s
bGVyLmgKICAgICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTZhMWY1ZjFkNzE5YjRh
ZjYzZmQ5ZGRhN2UxYWZkNzQ1YTZkZTkwNy4uZWQ2MThmMDdiM2Q0OGMzNjllMDdhMzM1NzNkMzBh
YWRmZGJiMDIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTIxNyw2ICsxMjE3LDcgQEAKIAkJNDY4MkQyMDAxRjc5NzgzMDAw
Qzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERF
MUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBK
U0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3Rv
bS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
QjY1MEREMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0
IC8qIFBhZ2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2lu
ZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5
NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBB
N0QyREQgLyogQWJzdHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5
NTE5NzIwN0Q2MzQwMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAw
QTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzU5OSw2ICs3NjAwLDcgQEAKIAkJNDY4MzQ0
REQxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERPTVJlY3RMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUx
RURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdp
bmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRv
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0Qy
REQgLyogUmVtb3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4
RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDE5Nyw2ICsyMDE5OSw3IEBACiAJCQkJOTMwMkIwQkUwRDc5Rjgy
QzAwQzdFRTgzIC8qIFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5
OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwICovLAogCQkJCTdBNjc0QkRBMEY5RUJGNEUw
MDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLywKKwkJCQk0NkI2NTBEQjIyOTYy
NjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRDVDOUNGQjE5QzdCNTJF
MDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5Q0ZDMTlDN0I1MkUwMEIz
QzVDMSAvKiBQYWdlT3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAv
KiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovLApAQCAtMzA3NTUsNiArMzA3NTgsNyBAQAog
CQkJCTkzMDJCMEJGMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0M0MUZBQTQ0QkMwMDM3RDFFNiAvKiBQYWdlSGVh
cEFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyog
UGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Q0IwNTI0MUZCNTFGMzMwMDA4
OUI5NyAvKiBQYWdlTmV0d29ya0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwMDE5
QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUM5
RDAyMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IDc2OTEyY2FlYjhhNjQwZWQxMzNhYzRh
YWY0ZmE3ZDVjMjg5N2FmYTIuLjBlN2Q1NDIwNWM4MzU2N2FhNjVlMzYwZDQ3YWMwNTMzYTMxNTBl
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgUmVmPEFYSXNv
bGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQodWludDY0X3QgcGFnZUlELCBBWE9iamVj
dENhY2hlJiBjYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRp
YWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYg
Y2FjaGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8g
dHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0eVRyZWUoKTsKQEAgLTg3
LDcgKzg3LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZv
cklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogICAgIHJldHVybiB0cmVlSURDYWNoZSgpLmdl
dCh0cmVlSUQpOwogfQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJ
c29sYXRlZFRyZWU6OmNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIApAQCAtOTcsNyArOTcsNyBA
QCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVlRm9yUGFnZUlE
KHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gbmV3VHJlZTsKIH0KIAotUmVmUHRyPEFYSXNv
bGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQp
CitSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihzX2NhY2hlTG9j
ayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGMwNzVkNWIwMTY3ODEyNjBjNzYwMTliNTBl
MjZmNjA2MDE5ZGUwM2YuLjZlZWMyNjQ1MTk4NGY4ZWJhODg4NGY1OWM1MzM3Y2U1MjZjZDlhNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZU5vZGUu
aCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgpAQCAtNDMsOSArNDQsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBWElzb2xh
dGVkVHJlZT4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+QVhJc29sYXRlZFRyZWUoKTsKIAotICAg
IHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQodWludDY0X3Qg
cGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBp
bml0aWFsaXplUGFnZVRyZWVGb3JJRCh1aW50NjRfdCBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9y
UGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4g
Y3JlYXRlVHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlk
ZW50aWZpZXIsIEFYT2JqZWN0Q2FjaGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJ
c29sYXRlZFRyZWVJRCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZFRy
ZWVOb2RlPiByb290Tm9kZSgpOwpAQCAtNzAsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEFYSXNv
bGF0ZWRUcmVlKCk7CiAKICAgICBzdGF0aWMgSGFzaE1hcDxBWElzb2xhdGVkVHJlZUlELCBSZWY8
QVhJc29sYXRlZFRyZWU+PiYgdHJlZUlEQ2FjaGUoKTsKLSAgICBzdGF0aWMgSGFzaE1hcDx1aW50
NjRfdCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKTsKKyAgICBzdGF0aWMg
SGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2Fj
aGUoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNzIG9uIEFYIHRocmVhZCByZXF1ZXN0aW5nIGRhdGEu
CiAgICAgSGFzaE1hcDxBWElELCBSZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4gbV9yZWFkZXJUaHJl
YWROb2RlTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTcwYTlmN2ZlNTUxYWI1YjU1
NDY0NmZjMzY3N2QxOWU5MjFlMmVjZS4uZDM1NDE2NzNlYThkZDhlM2I3YzZiZTQ2MmM2MTU4NDVj
NDFmN2U1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03NzY2LDcgKzc3NjYsNyBAQCBM
b2dnZXImIERvY3VtZW50Ojpsb2dnZXIoKQogICAgIHJldHVybiAqbV9sb2dnZXI7CiB9CiAgICAg
Ci1PcHRpb25hbDx1aW50NjRfdD4gRG9jdW1lbnQ6OnBhZ2VJRCgpIGNvbnN0CitPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gRG9jdW1lbnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBjMDc2NTU2NTA2YTVjZjk5ODlkMzhjNDc4YmYzM2NmNzg2ZmFmZjA1Li5hMjQ4MWRmOGEz
NjY5YzIwNDE2NTE2MjhmOTg3YzgyM2Y1NzNjNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRlICJNdXRh
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgorI2luY2x1
ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1
ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBAIC02MzUsNyArNjM2
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0
Q2FjaGUoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQVhPYmplY3RDYWNoZSgpOwogCi0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQoKSBjb25zdDsKICAgICAvLyB0byBnZXQgdmlzdWFsbHkgb3JkZXJlZCBoZWJy
ZXcgYW5kIGFyYWJpYyBwYWdlcyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFsbHlPcmRlcmVkKCk7
CiAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBtX3Zpc3VhbGx5T3Jk
ZXJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBiMWJlZDhmMDMyZjlj
ZDI3ODE5M2VlZGNmZmM3Y2YxNTMxODk2YjI2Li4zM2UyNzg2MzgzNjU2OTBkMTZkNzJiM2Q3YjVi
ZTBiZTIwODViNmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IHNob3Vs
ZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpOwogCiAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3Vt
ZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5w
YWdlSUQoKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eSBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvYwogdm9p
ZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZy
YW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFt
ZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQo
KTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29u
c3QgRG9jdW1lbnQmKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJp
bmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9u
KCkpIHsKICAgICAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwpAQCAtMTQ1LDcgKzE0
NSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFy
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1CiBTdHJpbmcgQ29va2llSmFyOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1l
SUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQg
PSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAg
U3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBVUkwmIHUKIGJvb2wgQ29va2llSmFyOjpnZXRSYXdDb29raWVzKGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBj
b29raWVzKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAg
IGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBw
YWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29va2llSmFyLmgKaW5kZXggMGRiMDdjNmQxMmU4ZDliZGFmYzNjMGFiYTZlZTcxYTg5YmMxOTk0
Ny4uMjgxZjg0YzQ5MDA1MjY3ZWEwNTRkNTFkNzY4YTllYjczMmNiYzIzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db29raWVKYXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNTgsNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0cmluZyk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgRG9jdW1lbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIHN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
UEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgdmlydHVhbCBz
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmLCBjb25z
dCBVUkwmLCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCA0ZjBiYjg2ZGRkNTA5OWUzMTFkODlhNDliZTNhM2JlNDA3N2Y1ZTViLi4xZjdhMjlj
NGIzMDFhMzY1ODIyZTQyMzNiNDE1ZGQxYzAwMTkxMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRl
ckNsaWVudCB7CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQog
CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQog
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9v
bCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBtYWlubHkgZm9y
IGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggZWMzOTEyN2ExYWQ2YzI1ZTBkMzQ2YmU3YTQ2OGNiNmVhOThmM2ZjOS4uMDc0ODc2MTE4ZGM2
OTFhYTdjOGFkYTk3Yjc5NzEzNzMzYTI4YTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25lLmgiCiAjaW5jbHVkZSAiTGlua0lj
b24uaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAg
LTEyNiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2Vu
dGF0aW9uKERvY3VtZW50TG9hZGVyKikgPSAwOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlEKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmlu
ZGV4IDhhODIzODFmMDE4MTY1ZTY1M2UzYzRiMjU0ZTU2OTdiNjNjMDlmNzAuLjQ1ZmViNjM1Zjcw
YzM1Yzk5YzcxNmQzOTE0MTJhNWZkMmQxZGVkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkZldGNoT3B0aW9ucy5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMu
aCIKICNpbmNsdWRlICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIgpAQCAtNTcsNyArNTgsNyBA
QCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBMb2FkZXJTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRSZXNvdXJjZShGcmFtZSYsIENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNlTG9hZGVyJiwgYm9vbCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDc3NDUwMDFlNzhh
Yzk3YmUwMjRiMjNkNDExMGVjNGZkMjkwYjdkM2IuLmYyNmE5YWFmMmZkNzk3NGNkM2U3MWM4NTlh
YjQzZmVlMjBmODAzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlv
bi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmF2aWdhdGlvbkFj
dGlvbjo6UmVxdWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
IDogbV91cmwgeyBVUkwgeyBkb2N1bWVudC51cmwoKSB9IH0KICAgICAsIG1fb3JpZ2luIHsgbWFr
ZVJlZlB0cihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX3BhZ2VJREFuZEZy
YW1lSURQYWlyIHsgZG9jdW1lbnQuZnJhbWUoKSA/IHN0ZDo6bWFrZV9wYWlyKGRvY3VtZW50LmZy
YW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpLnZhbHVlT3IoMCksIGRvY3VtZW50LmZy
YW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKDApKSA6IHN0ZDo6bWFr
ZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9wYWdlSURBbmRGcmFt
ZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFt
ZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsg
fSksIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9y
KDApKSA6IHN0ZDo6bWFrZV9wYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4oeyB9LCAwKSB9
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDFh
NDRmOTFkMzY4MWI4MTQwMGU3MTEyN2VhNTI3MmM3NWJlNGJlMDcuLmVkN2QwOWNmMjg5MmJiODRk
ZjJmMjQ5YjA1MTQ3NWQ4ZGM3MzY3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5
b3V0UG9pbnQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTYzLDE0ICs2NCwxNCBAQCBwdWJsaWM6CiAgICAgTmF2
aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYpOwogICAgIE5hdmlnYXRpb25BY3Rpb24m
IG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwogCi0gICAgdXNpbmcgUGFnZUlEQW5kRnJh
bWVJRFBhaXIgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyogcGFnZUlEICovLCB1aW50NjRfdCAvKiBm
cmFtZUlEICovPjsKKyAgICB1c2luZyBQYWdlSURBbmRGcmFtZUlEUGFpciA9IHN0ZDo6cGFpcjxQ
YWdlSWRlbnRpZmllciwgdWludDY0X3QgLyogZnJhbWVJRCAqLz47CiAgICAgY2xhc3MgUmVxdWVz
dGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlcXVlc3Rlcihjb25zdCBEb2N1bWVudCYpOwog
CiAgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAg
ICAgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
Km1fb3JpZ2luOyB9Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KKyAgICAgICAgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5maXJzdDsgfQogICAg
ICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlE
UGFpci5zZWNvbmQ7IH0KICAgICBwcml2YXRlOgogICAgICAgICBVUkwgbV91cmw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRleCAxNGJjMmYz
YmVlZmEyYTYwMzJhMjZjN2Q2YWQyZmNmZDg3YjdjYjJiLi5mZmFkYTFjNDViZTQ2NmI3ZmFkY2Zk
MDY5MTAxMzI1ZWNhMzlkNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVj
dG8KICAgICBtX25vdGlmaWNhdGlvbkNhbGxiYWNrID0gV1RGTW92ZShub3RpZmljYXRpb25DYWxs
YmFjayk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFdURjo6RnVuY3Rpb248
dm9pZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKCFtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayk7CiAg
ICAgbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjps
b2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0IERvYwogfQog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkK
K3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERv
Y3VtZW50JiBvcGVuZXJEb2N1bWVudCkKIHsKICAgICBhdXRvIG9wZW5lclVybCA9IG9wZW5lckRv
Y3VtZW50LnVybCgpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbiB7IG9wZW5l
clVybCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApp
bmRleCBjNDY2MWIwNDc2MDczMjBmZDg3ZmJiM2RiYmI4MDNlNGQxMWQ0YTQxLi5kZTFjOTRhNzJj
ZDQ3MWNjZjdmODJiNWEyY2JiOTE3N2RiNTY4MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgorI2luY2x1ZGUgIlBhZ2VJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTczLDcgKzc0LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVS
TCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBkYXRlZENhbGxi
YWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
ckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9u
Q2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJTb2NrZXRMb2Fk
aW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1l
KT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dTdWJyZXNvdXJjZUxvYWRpbmdO
b3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiYm
KTsKQEAgLTk0LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Ms
IFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KTsK
ICNlbmRpZgogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3RyYWJs
ZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXA7
CiAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+IG1f
bm90aWZpY2F0aW9uQ2FsbGJhY2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1aW50NjRfdCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CisgICAgRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQYWdl
SWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmlj
YXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBt
X2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2
b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlmaWNh
dGlvbkNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjM1MzkwYzhj
M2FlMjc5ZjlkMzY5NWZhNmRlMmU3Zjc5NzY5YzdlZi4uNTJiMmU5NGI3ZWVlMWQxYzU1YTg4NGZk
ZDdiMDRlZGNmZDMyMDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC00ODYs
OCArNDg2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEljb24+IGNyZWF0ZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmlsZW5hbWVzICovKSA9IDA7CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZpcnR1YWwgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdp
c3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8s
IHVpbnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1
YkZyYW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1
aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYm
IC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWlu
Ki8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAv
KnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRpZmllciwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOjpObyk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCmluZGV4IDE1
NmM5Y2QyMDVkNGNmMzI0ZDY4MWY5NzYxMzJjMTZjZTJmMTc0ZDQuLjBkN2IzZGJmNzJmODFlNGZk
NjJhNzNmZWQyNTgxY2VhZWUxNjdiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxG
cmFtZUlkZW50aWZpZXIuaApAQCAtMjUsMTMgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBGcmFtZSBpZGVudGlmaWVyIHRoYXQgaXMgdW5pcXVl
IGFjcm9zcyBhbGwgV2ViQ29udGVudCBwcm9jZXNzZXMuCiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVu
dGlmaWVyIHsKLSAgICB1aW50NjRfdCBwYWdlSUQ7CisgICAgUGFnZUlkZW50aWZpZXIgcGFnZUlE
OwogICAgIHVpbnQ2NF90IGZyYW1lSUQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC00Nyw3ICs0OCw3IEBAIHZvaWQgR2xvYmFs
RnJhbWVJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+CiBPcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IEdsb2JhbEZy
YW1lSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwog
ICAgIGRlY29kZXIgPj4gcGFnZUlEOwogICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0ZDVmOGQyOTc1NjNlZTAyOWM0MTNlOWNkYTc0OTRjNWZhNGQ4YWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBhZ2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBQYWdlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDExNTkw
NTBjZDMyYzkzY2QzYjExY2YxMzIyNTY5ZDY0MWU1MGQ2MzYuLjRlNmI2YWNlMzE4MjljM2ViN2Nh
YWM0NzAyMjMzOGY1MmY5NTFkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCisj
aW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1lU2l0ZUluZm8uaCIKICNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzgsNyAr
MzksNyBAQCBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkgewogICAgIFNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm87CiAgICAgVVJMIHVybDsKICAgICBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMgeyBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm8gfTsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTcxLDgg
KzcyLDExIEBAIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiBDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eTo6ZGVjb2RlKERlCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZnJhbWVJRCkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGFn
ZUlEKSkKKyAgICBPcHRpb25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKKyAg
ICBkZWNvZGVyID4+IHBhZ2VJRDsKKyAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXN1bHQucGFnZUlEID0gV1RGTW92ZSgqcGFnZUlEKTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbmNsdWRlU2VjdXJlQ29va2llcykpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNw
cAppbmRleCAzYjE4ZTYyZmUzOTg3ZGI1ZmM4NjE5YmZmY2E2MmE0ODZmNDhhODA4Li42M2RmMDU4
OGRjOWZjYzY3YTRlOTEwOTU4ZTNkYTQ5YTg5NGYwZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBA
IC02NiwxMiArNjYsMTIgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4KICAgICByZXR1cm4gbV9y
ZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2ll
cyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKSBjb25zdAogewogICAgIHJldHVybiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCByZXF1ZXN0LnVybCgpLCBmcmFtZUlELCBwYWdlSUQpOwog
fQogICAgIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QK
K2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJM
JiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7
CiAgICAgUmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiB7IGZpcnN0UGFydHlGb3JD
b29raWVzIH07CiAgICAgaWYgKGZpcnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQpAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21h
aW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpCiAgICAgICAgIG1fcmVnaXN0cmFibGVE
b21haW5zVG9CbG9ja0Nvb2tpZUZvci5yZW1vdmUoZG9tYWluKTsKIH0KIAotYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFp
biwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lSUQpIHsKICAgICAgICAgYXV0byBmcmFtZXNH
cmFudGVkSXRlcmF0b3IgPSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlE
KTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3QKICAgICByZXR1cm4gZW50cmll
czsKIH0KICAgICAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIWZyYW1lSUQpIHsKICAg
ICAgICAgaWYgKGZpcnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQpAQCAtMTgyLDcgKzE4Miw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdl
QWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIGF1dG8gaXRlcmF0aW9uID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5k
KHBhZ2VJRCk7CiAgICAgaWYgKGl0ZXJhdGlvbiA9PSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNj
ZXNzLmVuZCgpKQpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0CiAg
ICAgaXRlcmF0aW9uLT52YWx1ZS5yZW1vdmUoZnJhbWVJRCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGVhclBh
Z2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7
CiAgICAgbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5yZW1vdmUocGFnZUlEKTsKQEAgLTIx
NSw3ICsyMTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpCiAgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyA9IFdURjo6bnVsbG9wdDsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0Rv
bWFpbiwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvbW1p
dHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlmIChzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
KGZyb21Eb21haW4pKQogICAgICAgICBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQ
cmV2YWxlbnRSZXNvdXJjZS5hZGQocGFnZUlELCB0b0RvbWFpbik7CkBAIC0yMjcsNyArMjI3LDcg
QEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKCkKICAgICBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRp
b25UZXN0TW9kZSA9IHRydWU7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK09wdGlvbmFsPFNlY29u
ZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkgY29uc3QKIHsKICAgICBpZiAoIW1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgfHwgIXBh
Z2VJRCB8fCBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJj
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKaW5kZXggMDMwMjAwZGY5YzQ0ZmQ0YmNmMmY1ODcyZGRkZmRhNTYzMjU5
ODUwYi4uM2YzOWM4YWNkOGIwZDNkMWU4NzUzOGFiODVlN2YyNmZlOWQxNTNlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJS
ZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
bWFpbkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJs
b2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2ll
cywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hv
dWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVu
dFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYg
ZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+
IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmlj
RGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9t
YWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFn
ZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
U2Vjb25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25k
cz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21t
aXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJ
ZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNX
aXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMs
MTQgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1
aW50NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVs
dEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVpbnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFn
ZUlkZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0
SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dWludDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBh
Z2VJZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFp
bj4+IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBt
X2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmln
YXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRU
b1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmln
YXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5kZXggNjdkZjc2NGQyYzRhZTQ1YTk2
ODU5NDRhYzQyMTVjZDU1M2EyYjI1MS4uMzMwYWE2MDg2NjE0MGIyNGQ5YjcwNTIzODNhODFjZWNm
OTBiOTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKQEAgLTE4
OSw3ICsxODksNyBAQCBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVDb29raWVzKENGRGljdGlvbmFy
eVJlZiBoZWFkZXJGaWVsZHMsIENGVVJMUmVmIHVybCkKICAgICByZXR1cm4gcGFyc2VkQ29va2ll
czsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTIy
NSw3ICsyMjUsNyBAQCBzdGF0aWMgYm9vbCBjb250YWluc1NlY3VyZUNvb2tpZXMoQ0ZBcnJheVJl
ZiBjb29raWVzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFN
KGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMjQwLDcgKzI0MCw3IEBA
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
ckRPTShjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAgcmV0dXJuIHsgY29va2llU3RyaW5nLCBkaWRB
Y2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfHwgcG9saWN5ID09IENG
SFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnRE
b21haW4gfHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lBbHdheXM7
CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA2Mzc0MDM1MmM0YTYyN2Vk
NmZlZWQ2OWZmZWIwOWQxOTdhODg3NGM3Li41NTdlOTc3YjRkNzJhYzgxOTdlOTllMjk2ZTRjMjEw
MDc2NzNjYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTI5
NCw3ICsyOTQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNB
cnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJl
ZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKQorc3RhdGljIE5TQXJyYXkg
KmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBpZiAoc2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFt
ZUlELCBwYWdlSUQpKQpAQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
CiB9CiAKIGVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwg
SW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
c0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpCitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQ
T25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpCiB7CiAgICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykpOwogCkBAIC0zNjMsMTIgKzM2MywxMiBAQCBzdGF0aWMgdm9pZCBkZWxldGVBbGxI
VFRQQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCiAgICAgQ0ZI
VFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZSk7CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBE
b05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVD
b29raWVzKTsKIH0KQEAgLTM3OCw3ICszNzgsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbgog
ICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJz
dFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51
cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIElu
Y2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9
CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogCkBAIC00NDMsNyArNDQz
LDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRS
YXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIHJhd0Nvb2tp
ZXMuY2xlYXIoKTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAK
aW5kZXggMmMxMTU2OGZjZTViMjg5MTI2MGRhM2JlOTFmODkxN2MwODUxMjdhOC4uZDYwZDcwYTgz
NjgzMDEzN2VlNjBkYjBlNzY0ZWRiZjUyNTc0ZjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtNTksNyAr
NTksNyBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3Ry
aW5nKCk7CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKK3ZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21IVFRQ
UmVzcG9uc2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzCiAgICAgY29va2llSmFy
REIuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6
Ok5ldHdvcmspOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpj
b29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFy
Q3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0o
ZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BB
UkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMTEzLDcgKzExMyw3
IEBAIGJvb2wgQ29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFi
YXNlKCkuaXNFbmFibGVkKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2ll
cyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKSBjb25zdAorYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5NGM4
NmFmZThmNzQwYWVkZDI4YWQ5NzI3Mjc1MWVlYmEzODQzMjMuLjY4NzJiMGFjOWIwMDE5ZGU1ODNl
YjI2OGM4Yzk0NTc5OWVmOTQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5j
cHAKQEAgLTgwLDcgKzgwLDcgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwogfQog
Ci12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKIHsKICAgICBjb29raWVTdG9yYWdlKCkuc2V0Q29va2llc0Zyb21ET00oKnRo
aXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHZhbHVl
KTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNFbmFi
bGVkKCp0aGlzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICByZXR1
cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0K
QEAgLTE1NCw3ICsxNTQsNyBAQCBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldENvb2tpZXMoY29uc3QgVVJMJikKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmdldFJhd0Nvb2tpZXMoKnRoaXMs
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJhd0Nvb2tp
ZXMpOwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpm
bHVzaENvb2tpZVN0b3JlKCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQgdG8g
dXNlLgogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9y
YWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDFmNzU4NzdhODJiMzE4Mzk0NzYxMTIzYmU2ZjU4NWE0
NzYxY2Y4OTYuLmY2NjQxZWZlYjQ0YzczNDM0ZTRkMTVhNGE1YWJlZGQ4NTZmMjBlNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29raWVz
LCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBWZWN0b3I8
Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwp
CiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAgICAg
VU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIuZ2V0
KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJB
TShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01MjIsNyArNTIy
LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Np
b24oKnRoaXMsIHVybCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0
eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDk2NjFiYzQz
N2U5ODU0MmI2YzVjMWQ2NjQ4OTZmNjAyODVhN2ZiM2QuLjU0MzkwMmZmNTM0ZWE1MGE0ZGViMDUx
NjJjMmVlYjM1YmEyZDdkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5k
ZWYgUmVzb3VyY2VSZXF1ZXN0X2gKICNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2luY2x1
ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgog
I2luY2x1ZGUgIlVSTFNvdXAuaCIKIApAQCAtMzgsNyArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlh
dGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDYsNyArNDYsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJs
LCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAg
ICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBG
bGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwgbV9p
bml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01NCw3ICs1Myw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFz
ZSh1cmwsIHBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAg
ICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkK
LSAgICAgICAgICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTYzLDcgKzYxLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNl
KFVSTCgpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBt
X3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAg
ICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03MSw3
ICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZShVUkwoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAg
ICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAg
ICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1
cGRhdGVGcm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CkBAIC04MCw3ICs3
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShzb3VwVVJJVG9VUkwoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3QpKSwgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlh
dGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9tU291cFJlcXVl
c3Qoc291cFJlcXVlc3QpOwogICAgICAgICB9CkBAIC0xMDAsOCArOTUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3Mgc291cE1lc3NhZ2VGbGFncygpIGNv
bnN0IHsgcmV0dXJuIG1fc291cEZsYWdzOyB9CiAgICAgICAgIHZvaWQgc2V0U291cE1lc3NhZ2VG
bGFncyhTb3VwTWVzc2FnZUZsYWdzIHNvdXBGbGFncykgeyBtX3NvdXBGbGFncyA9IHNvdXBGbGFn
czsgfQogCi0gICAgICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCB7IHJldHVy
biBtX2luaXRpYXRpbmdQYWdlSUQ7IH0KLSAgICAgICAgdm9pZCBzZXRJbml0aWF0aW5nUGFnZUlE
KHVpbnQ2NF90IHBhZ2VJRCkgeyBtX2luaXRpYXRpbmdQYWdlSUQgPSBwYWdlSUQ7IH0KKyAgICAg
ICAgUGFnZUlkZW50aWZpZXIgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dGlhdGluZ1BhZ2VJRDsgfQorICAgICAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlSUQoUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKSB7IG1faW5pdGlhdGluZ1BhZ2VJRCA9IHBhZ2VJRDsgfQogCiAgICAg
ICAgIEdVbmlxdWVQdHI8U291cFVSST4gY3JlYXRlU291cFVSSSgpIGNvbnN0OwogCkBAIC0xMTMs
NyArMTA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hY2NlcHRF
bmNvZGluZyA6IDE7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7Ci0gICAg
ICAgIHVpbnQ2NF90IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgUGFnZUlkZW50aWZpZXIg
bV9pbml0aWF0aW5nUGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VNZW1i
ZXJzKFNvdXBNZXNzYWdlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VC
b2R5KFNvdXBNZXNzYWdlKikgY29uc3Q7CkBAIC0xNjIsMTAgKzE1NywxMSBAQCBib29sIFJlc291
cmNlUmVxdWVzdDo6ZGVjb2RlV2l0aFBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zb3VwRmxhZ3MgPSBzdGF0aWNfY2FzdDxTb3VwTWVz
c2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKTsKIAotICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQ
YWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbml0aWF0aW5nUGFnZUlEKSkKKyAgICBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBkZWNvZGVyID4+
IGluaXRpYXRpbmdQYWdlSUQ7CisgICAgaWYgKCFpbml0aWF0aW5nUGFnZUlEKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2VJRDsK
KyAgICBtX2luaXRpYXRpbmdQYWdlSUQgPSAqaW5pdGlhdGluZ1BhZ2VJRDsKIAogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDBmNmVhMTk3ODdhNDZjNzQ3
NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUuLjBlZDI1YjM3ZDVmODA4NzY4MTI1Mzg3NzA4OTBhZjli
ODhlOTM2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBS
ZXF1ZXN0KSBjb25zdAogewogICAgIGlmIChtX2luaXRpYXRpbmdQYWdlSUQpIHsKICAgICAgICAg
dWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1aW50NjRfdCo+KGZh
c3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSkpOwotICAgICAgICAqaW5pdGlhdGluZ1BhZ2VJRFB0
ciA9IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgKmluaXRpYXRpbmdQYWdlSURQdHIgPSBt
X2luaXRpYXRpbmdQYWdlSUQudG9VSW50NjQoKTsKICAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGFf
ZnVsbChHX09CSkVDVChzb3VwUmVxdWVzdCksIGdfaW50ZXJuX3N0YXRpY19zdHJpbmcoZ1NvdXBS
ZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSksIGluaXRpYXRpbmdQYWdlSURQdHIsIGZhc3RGcmVl
KTsKICAgICB9CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBk
YXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0KSBjb25zdAogdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21Tb3VwUmVxdWVzdChTb3VwUmVxdWVzdCogc291cFJlcXVl
c3QpCiB7CiAgICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1
aW50NjRfdCo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBSZXF1ZXN0KSwgZ1NvdXBS
ZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSkpOwotICAgIG1faW5pdGlhdGluZ1BhZ2VJRCA9IGlu
aXRpYXRpbmdQYWdlSURQdHIgPyAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA6IDA7CisgICAgbV9pbml0
aWF0aW5nUGFnZUlEID0gbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihp
bml0aWF0aW5nUGFnZUlEUHRyID8gKmluaXRpYXRpbmdQYWdlSURQdHIgOiAwKTsKIH0KIAogdW5z
aWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApp
bmRleCA4NzljMGIxOWU5NjZmMjk2OWJhMGFmNDc4YjZlODNlNjMwNWI5NDBiLi5iNjg5YzNlMjVh
ZDgyM2VjZjZkMzA0ZWU3ODljYTlmMzQ1ZGEyZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3MTYsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3RvcmFnZUlt
bWVkaWF0ZWx5KCkKICAgICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQzLDcgKzc0
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgT3Bl
bmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWlu
JiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAg
LTgxNCw3ICs4MTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RG
TW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFp
biYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZN
b3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBh
Z2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21h
aW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJs
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNzYwZDJhM2UxZWNiZGU4
Yjc1ODUzNzU1ZTNhZTkwLi5iZmMyMzM5Njg1MzMyMDAyNjI2Nzg5NDMxYWUwNzNiMmQzOTc1ZjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlmTmVl
ZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9w
ZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9yRG9t
YWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpIG92ZXJyaWRlOwogCkBAIC05
MSw5ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVsZW1l
dHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3Qg
U3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+
LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFt
ZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wg
aXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3ICsx
NTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCBy
ZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21h
aW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBTdGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2YWxl
bnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOwog
ICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0gICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFt
ZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVy
bmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1By
ZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50
UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVEYXRhUmVj
b3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwZWU3Zjk2Mzg5NDYxNWRm
ZDEzNWIxODQwOTBiNTNmODFiZDlkZmY0Li5hNWYyNjI0ZTQzMzRjZTkwMzlmYWE1ZTJkMWU1YzQx
ZmQwZDA4N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAgICAgICAgbV9wZXJz
aXN0ZW50U3RvcmFnZS0+c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpZZXMpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFn
ZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgcwogICAgIH0pOwogfQogCi12b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFp
biwgRnJhbWVJRCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFp
biwgRnJhbWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3ViRnJhbWVEb21haW4mJiBzdQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9wZW5l
clBhZ2VJRCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBv
cGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAh
PSBvcGVuZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjg3
LDcgKzI4Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluCiAgICAgZ3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3Zl
KG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiBzdWJGCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJG
cmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHBy
b21wdFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZy
YW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdh
c1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oCmluZGV4IDQ0ZWZiZjRkZWMxNGYyMDI3MDJhY2FkMDc3NjhmNWFjODIwYjgwNWEu
LjQ1ZjdlMWI3NTk2OTNjMTEwM2EzZDY2MjczMTZkNmZjZTAyZTRjZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYm
LCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQp
PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BG
cmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
RnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRp
b24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0
IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9t
YWluJikgb3ZlcnJpZGU7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
Y3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVk
IHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbihj
b25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21haW4+
JiwgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBncmFu
dFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYm
LCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZy
YW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
Jik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudChS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVidWdN
b2RlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3OWNj
MWYxYjk0NTYyMWI5YTA1NTI0ODRjMDk2YzUuLmQ3Nzk4YjI1ZDFlM2JiYmI3OGE4N2FiM2UxYTVh
MzEzOWYxNGJhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
QEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3BlbmVy
RG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyUGFn
ZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcg
RnJhbWVJRCA9IHVpbnQ2NF90OwogICAgIAogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSgpOwpAQCAtMTEwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3Jh
Z2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdl
SUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZvaWQg
cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAg
ICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RlYnVn
TW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH07CiAgICAg
dm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0
ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURv
bWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDg3
MWIxOWQyZjA3NDg2ZTBmNGJiNzYzYzY5ZGFhMWFhZmY4N2M5OTIuLjYyMjQzMGNkOGU0ZjA5ZWNh
ZjhmYTM2OGEzODlmMGNhYjg3YzEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxXZWJDb3IKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoc3Vi
RnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CkBAIC0yOTgsMTIgKzI5OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcwogICAg
IH0pOwogfQogCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291
cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBtX25l
dHdvcmtTZXNzaW9uID8gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCku
aGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJ
RCwgcGFnZUlEKSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
cihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNh
bGxiYWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMxNSw3ICsz
MTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUgogICAgIGNhbGxiYWNrKGZhbHNlKTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
c3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duOjpObyk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWkK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVEb21h
aW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBSZWdp
c3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGUKICAg
ICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlz
b2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMzk2LDcgKzM5Niw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgfSk7CiB9CiAKLVN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5
RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQogewogICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00MDksNyArNDA5
LDcgQEAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QKICAgICByZXR1cm4gaXNTdG9yYWdlR3JhbnRl
ZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsR3Jh
bnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRs
ZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAppbmRleCA4NzU5ZDYwMTY2YTU1MGVlNjlhNjJiMTcxZGVhODZmZTNhNDFiOTJmLi43OWNm
MjQ2MDFjMzJlNzA1Y2Q4YjQ1M2Y5MjNiZmQzNjYzMTE0ZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04Miw4
ICs4Myw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVp
bnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQg
PSB1aW50NjRfdDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93biA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEwNCw3
ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwogCkBA
IC0xMTgsMTEgKzExNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlv
bihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFU
b1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0
cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBi
b29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lk
IHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGxv
Z1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VB
Y2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNz
SGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0
aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxs
VXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBWZWN0
b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+Jik7Ci0gICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxIYXNT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CiAKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlQ
YWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVz
b3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsKIAog
ICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBP
cGVuZXJEb21haW4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYs
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5NzE4
MzZhZGE1YWU4Mjk3YjViNTc5MDZiYzkwNWMxODNjZWI2ZC4uNGQzZDE2OWY2YWY5ZjQzYjc2MTA4
MWNmYmZlNjBhZmM1YTM5M2ZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgICAgICBTdHJpbmcgdXNl
ckFnZW50OwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7Ci0gICAgICAgIHVpbnQ2
NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAg
ICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCAzZDcxZjhmNmIxYjZjMjZkYjA1NTBmODhhYTVlZTExNDQyMTBhOTA2
Li45MmM4YjdhZTQ0ZmIzYjc3NGQ2YjA1OThjNDE5YzM4M2ZlYjA5MjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZp
ZXIKICAgICBBU1NFUlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVudGlm
aWVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBhZ2VMb2Fk
Q29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKIHsK
ICAgICBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHdlYlBhZ2VJRCk7CiB9
CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2kKICAgICBsb2FkZXIt
PmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNv
b2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CiAgICAgYXV0byByZXN1bHQgPSBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBAIC01MjUsNyArNTI1
LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Np
b24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24uc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKQEAgLTU0MiwxMyArNTQyLDEzIEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZVNlc3Npb24obmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5jb29raWVzRW5hYmxlZCgpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKG5l
dHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0
KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRS
YXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHJlc3VsdDsKICAg
ICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmdldFJhd0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0
KTsKQEAgLTYzOCwxMyArNjM4LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVTdG9y
YWdlQWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vz
c2lvbi0+Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdl
SUQpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlCiAgICAgfQog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAtNzA5LDcg
KzcwOSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50
ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBu
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKSB7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbkkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6WWVzLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIGlm
IChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKQEAgLTc0NSw3ICs3NDUs
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vz
c1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0X3Qg
cGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVz
b3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCitPcHRpb25hbDxOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRUcmFj
a2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9u
SUQmIHNlc3Npb25JRCkKIHsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCkK
ICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmNsZWFyKCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0Zv
clBhZ2UodWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQpCiB7CiAgICAgZm9yIChhdXRvJiBhY3Rpdml0eVRyYWNrZXIgOiBtX25ldHdvcmtBY3Rp
dml0eVRyYWNrZXJzKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVRyYWNrZXIucGFnZUlEID09IHBh
Z2VJRCkKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NAogICAgIH0p
OwogfQogCi1zaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290TmV0
d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCkKK3NpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQogewogICAgIHJldHVybiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmZpbmRNYXRjaGluZyhb
Jl0oY29uc3QgYXV0byYgaXRlbSkgewogICAgICAgICByZXR1cm4gaXRlbS5pc1Jvb3RBY3Rpdml0
eSAmJiBpdGVtLnBhZ2VJRCA9PSBwYWdlSUQ7CkBAIC05MDMsMTcgKzkwMywxNyBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRzKCkK
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6Q2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dlYlBy
b2Nlc3NJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7CiAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQoKSwg
c2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc1JlbW92ZWQobV9j
b25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Np
b25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VzKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBB
TDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYg
cGFnZXMpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2Vk
KG1fY29ubmVjdGlvbi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggY2JjN2JiZmU4ZjU3ZDc1NDEzMTU4MTA0Zjg4YTU0NDAwOTQyMDc2
Yi4uMDZkNTc5Njg4Mjg2NThlMTY4YzJjODFmNzI4MWYxZjk2MGM4MDRiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRNYXAuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzMsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBtX25l
dHdvcmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VM
b2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBi
b29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlvbmFs
PE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9v
bCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0b3BU
cmFja2luZ1Jlc291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6OkJs
b2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVhckNv
bm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQg
d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAg
dm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRk
ZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBvbGRQYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NT
ZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcik7CkBAIC0xNzAsMTYgKzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJl
Y29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVz
b3VyY2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRf
dCB3ZWJQYWdlSUQpOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnRE
b3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lk
IGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAot
ICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYm
KTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vz
c2VkKT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+
JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAgcHJp
dmF0ZToKICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZv
aWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRh
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlE
KTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2xl
YXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rp
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBs
b2dXZWJTb2NrZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IFdhbGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAg
ICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFy
Z2V0RG9tYWluKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5l
clBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAg
IHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bik+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQ
QUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2
b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIzOSwy
OSArMjQwLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KGNvbnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAgICAg
ICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlciYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcih1aW50NjRfdCBwYWdlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBhZ2VJ
RCB7IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAgICAg
ICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVs
OjpMb2FkUGFnZSB9CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlTmV0
d29ya0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgcmVzb3VyY2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNv
dXJjZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAgLCBy
ZXNvdXJjZUlEIHsgcmVzb3VyY2VJRCB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7
IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICB1aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciByZXNvdXJjZUlEIHsgMCB9OwogICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsgZmFs
c2UgfTsKICAgICAgICAgTmV0d29ya0FjdGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7CiAg
ICAgfTsKIAogICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0gICAg
dm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCk7Ci0gICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzaXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBmN2M5N2VlYmIyMTNjZDc4M2NhZjRlMjA0NjliZmEzY2UxOTRjOGNlLi44MzNl
NzRmY2Y2MDAzZWI4M2FjMWRlMmQ4YzZiZmMwZmYyNWI5ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDE4ICsyNiwxOCBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVy
Zm9ybVN5bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
IHJlc291cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4gZGF0YSkg
U3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCiAgICAgUmVtb3ZlTG9hZElkZW50aWZpZXIo
dWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKLSAgICBQYWdlTG9hZENvbXBsZXRlZCh1
aW50NjRfdCB3ZWJQYWdlSUQpCisgICAgUGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkKICAg
ICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAgU3Rh
cnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBk
b3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dl
c3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNG
b3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcg
Y29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCi0g
ICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQ
YXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBT
dHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgU2V0Q29v
a2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKLSAgICBDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJz
dFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2ll
cykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJ
bmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9u
b3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0UmF3
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIERl
bGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29r
aWVOYW1lKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0aCwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcg
Y29udGVudFR5cGUpCkBAIC01NiwxNiArNTYsMTYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEVuc3VyZUxlZ2FjeVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIENsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCk7CisgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQogICAgIExvZ1dlYlNv
Y2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZUxvYWRpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXRE
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGlt
ZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRp
c3RpY3MpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwotICAgIFJlcXVlc3RTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChlbnVtOmJvb2wgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKLSAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
LCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5l
ckRvbWFpbikKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisg
ICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQog
I2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNl
T3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC04Nyw3ICs4Nyw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
IAogICAgIFNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJZGVudGlmaWVyKQogCi0gICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCi0gICAgV2Vi
UGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQp
Ci0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25J
RCwgVmVjdG9yPHVpbnQ2NF90PiBwYWdlcykKKyAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKKyAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyAgICBX
ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBWZWN0
b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGQxNGIxZGU5
ZDkxYzAyMmI3ZTBlMDM4MjE3NGRhODgyMmI5M2EzMTguLjQwOTcxNGQ2NjcyNmE4NDc0YWZmMjlh
MTYwODE3ZjI0Nzk2N2IwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzU2FtZU9yaWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3RvY29s
SXNCbG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAotTmV0
d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYmIG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYm
IHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYg
cmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQorTmV0d29y
a0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQogICAg
IDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMzFkMTFj
M2E4YWVjYjJhYWZkNDllNWMzMTAzOThlMGFjMTZkZGVlNy4uNTdkZjFkYTQ2ODBkMjU4NGVlMjE2
YWFkZmYwOGRlODJhMTM2YmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtM
b2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwgT3Ro
ZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYg
cmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVlc3RM
b2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5ldHdv
cmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3Jl
OjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRl
RW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
cyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOwog
ICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRyaXBs
ZXQgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nl
c3M7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBIZWFk
ZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tz
LgogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAvLyBO
ZWVkZWQgZm9yIENPUlMgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggODk2Mzk5ZDEzMzI1ZDAxNGExNzRi
Zjc3YjRjYTYzNmNhZjJlMGM0Ni4uODk3MzBjZjlmZDI2OTliY2ZkMzJkZGMzOGVmOGNlMDM3NDZh
MzAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrQWN0
aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVuY2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTM4LDcgKzM5LDcgQEAgZW51
bSBjbGFzcyBQcmVjb25uZWN0T25seSB7IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgeyAwIH07CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEOwogICAgIHVpbnQ2NF90IHdlYkZyYW1l
SUQgeyAwIH07CiAgICAgV1RGOjpQcm9jZXNzSUQgcGFyZW50UElEIHsgMCB9OwogICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgpIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IGE1ZDZmNWNmY2M3YzQzMjVlOWFkNzMxMzZmMzZmZGEyOTlkMWRlMGIuLmFjNGQzMmJmMmQz
MTE3MTE4MDM1ZTIzY2Y4YjFkNWIxYmI2ZWI0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFBBTDo6U2Vzc2lvbklEIHNlcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb21taXR0ZWRDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9tYWluLCBwYWdlSUQpOwpAQCAt
MTk1NCw3ICsxOTU0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCBhbGxvd3MsIENvbXBsZXQKICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2Fn
ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNo
b3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTk2Miw3ICsxOTYyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3MKICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dE
aWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCBTaG91bGRT
YW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBl
IHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25v
c3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
IHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBs
aW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NzAsNyArMTk3MCw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50
NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgU2hvdWxk
U2FtcGxlOjpObyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWdu
aWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxk
TG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47CkBAIC0yNjE5
LDcgKzI2MTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5l
dHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNzaW9uLT5yZW1vdmVLZXB0
QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNB
ZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUGFnZUlkZW50aWZpZXIg
b2xkUGFnZUlEKQogewogICAgIGlmICghcGFnZUlEIHx8ICFvbGRQYWdlSUQpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDYW5ub3QgYWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjQ0LDcg
KzI2NDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRAogICAgICAgICBzdG9yYWdlTWFuYWdl
ci5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG9sZFBhZ2VJRCwgcGFnZUlEKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQp
CiB7CiAgICAgaWYgKCFwYWdlSUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgcmVtb3Zl
IHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjc0LDcgKzI2NzQsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKICAgICBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5zdG9yYWdlTWFuYWdlcigp
LnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgcGFnZUlEcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdl
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZUlEcykKIHsKICAgICBhdXRvIGNv
bm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKICAgICBBU1NFUlQobV9zZXNzaW9u
QnlDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDdhY2IzZjk2NzVjM2Q5NDg3Mzk4
YzdhN2QwY2YzNjNhOTk3NDU3YWEuLmViZjNiN2ZlNjUwMWQ1MjQzYmQyZGUwMzI2YmIzN2ZmNDgw
MjNiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURC
U2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMu
aD4KQEAgLTEzNiw4ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21h
aW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBP
cGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVu
ZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1
c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMTkwLDkgKzE4OSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gRGlhZ25vc3RpYyBtZXNzYWdlcyBs
b2dnaW5nLgotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1
bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZh
bHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJl
cywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZv
aWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3Vy
Y2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtMjU4LDcgKzI1Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJl
Y3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lkIGNv
bW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRz
V2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtMjcxLDEwICsyNzAsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25J
RCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6
U2Vzc2lvbklEKSBjb25zdDsKIAotICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVj
dGlvbiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJ
RCk7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChJUEM6
OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQQzo6
Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCB3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYpOwotICAg
IHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+Jik7CisgICAgdm9pZCB3ZWJQcm9jZXNzU2Vz
c2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mKTsKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9y
aWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQ5ZmVlMDc4
ZmU3MzUzNGJjZTQ2ZDUyMmFmM2NkMjRiNjM5YjdjNjIuLmY1ZWY1MzAxMzQwMjM3YzcyMmVkOTU3
NTViODNiZmQ1ZDE4YjBlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTMxLDcgKzEzMSw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVkaXJlY3RlZFRvRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0
ZWRGcm9tRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAg
IENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKSAtPiAoKSBBc3lu
YworICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEKSAtPiAoKSBBc3luYwogICAgIFNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21h
aW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIERl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+
ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDU4YWFjYjk5M2RiOThh
Y2NkYTY1MjJkOTU2NGM5ZWFhODk0YmRhODEuLjMzY2RjNGQxN2RiZTJlMDg2NmUzNjEyZWYyMjc2
MWEzODIzODA1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMDcsOCArMTA3
LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LndlYlBhZ2VJRCkpCisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHdlYlBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHdlYlBhZ2VJRDsKKyAgICBpZiAoIXdlYlBh
Z2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC53ZWJQYWdlSUQgPSAqd2Vi
UGFnZUlEOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViRnJhbWVJRCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBmZTI2NTM2ZjIxYzNlZTlhNzAx
ODk4Y2EwNTkzMmQ1NWQxNWQzNGIwLi4wZDRmOWEyYTFhZWE1Yzg4MDBhNWIxM2ZlMzdlMDE3YmJk
YzQ5NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNzQsMTggKzE3NCwxOCBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hl
Y2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChh
dXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwKICAgICAg
ICAgICAgICAgICBbdGhpc10gKFJlc291cmNlRXJyb3ImIGVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBlcnJvciBjaGVja2luZyAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVu
dFBJRCA9ICVkLCBlcnJvci5kb21haW4gPSAle3B1YmxpY31zLCBlcnJvci5jb2RlID0gJWQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9u
b3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgic3RhcnQ6IGVycm9yIGNoZWNraW5nIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQsIGVycm9yLmRv
bWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFn
ZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBt
X3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJv
ci5lcnJvckNvZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3IuaXNDYW5jZWxs
YXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmRpZEZhaWxMb2FkaW5nKGVy
cm9yKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoTmV0d29y
a0xvYWRDaGVja2VyOjpSZWRpcmVjdGlvblRyaXBsZXQmIHRyaXBsZXQpIHsKICAgICAgICAgICAg
ICAgICAgICAgdGhpcy0+bV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hl
ZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+d2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRyaXBsZXQucmVxdWVzdCksIFdURk1vdmUodHJpcGxldC5y
ZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQucmVkaXJlY3RSZXNwb25zZSkpOwotICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogc3ludGhldGlj
IHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVSTCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlz
U3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CisgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2Vu
dCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdhcyBtb2RpZmllZCAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5
bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRoaXMtPmNhblVzZUNhY2hlKHJlcXVlc3QpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogQ2hlY2tp
bmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQs
IGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0
aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVy
cy5wYXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlz
LT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy0+cmV0cmlldmVDYWNoZUVudHJ5KHJlcXVlc3QpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xOTgsNyAr
MTk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICB9CiAgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBvbmNlIG1fbmV0d29ya0xvYWRDaGVja2Vy
IGlzIHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgogICAgIGlmIChjYW5Vc2VDYWNoZShvcmln
aW5hbFJlcXVlc3QoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6
IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFy
ZW50UElEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5n
IGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBp
c1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5w
YXJlbnRQSUQpOwogICAgICAgICByZXRyaWV2ZUNhY2hlRW50cnkob3JpZ2luYWxSZXF1ZXN0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI3LDEzICsyMjcsMTMgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiAgICAgICAgIGxvYWRlci0+bG9nU2xvd0NhY2hlUmV0cmlldmVJZk5lZWRl
ZChpbmZvKTsKIAogICAgICAgICBpZiAoIWVudHJ5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIG5vdCBpbiBjYWNoZSAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNv
dXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNT
eW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdv
cmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgICAgIGlmIChlbnRyeS0+aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFz
IHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWlu
UmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAg
bV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbiA9IFdURk1vdmUoZW50cnkpOwogICAg
ICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRhdGlvblJlcXVlc3QgPSBvcmlnaW5hbFJl
cXVlc3QoKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJl
dmFsaWRhdGlvblJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CkBAIC0yNDEsMjEgKzI0MSwyMSBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGlmIChl
bnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJl
Y3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZv
ckNhY2hlRW50cnkoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShlbnRyeSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChsb2FkZXItPm1fcGFyYW1ldGVycy5u
ZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnktPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZv
KCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVF
bnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBk
b2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNlcnRpZmljYXRlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxv
YWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGVudHJ5LT5uZWVk
c1ZhbGlkYXRpb24oKSB8fCByZXF1ZXN0LmNhY2hlUG9saWN5KCkgPT0gV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlDYWNoZURhdGEpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogVmFsaWRhdGluZyBj
YWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNo
ZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291
cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRl
ci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNh
Y2hlRW50cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9tIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmV0cmlldmVkIHJlc291cmNlIGZyb20g
Y2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOwogICAgICAgICBsb2FkZXItPmRpZFJldHJpZXZlQ2FjaGVFbnRyeShXVEZN
b3ZlKGVudHJ5KSk7CiAgICAgfSk7CiB9CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYWQgbG9hZCkKIHsKICAgICBpZiAobG9h
ZCA9PSBGaXJzdExvYWQ6OlllcykgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdv
cmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3Vz
ID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlz
U3luY2hyb25vdXMoKSk7CiAKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgIH0KICAgICBp
ZiAoIW5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRv
IGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIChpZD0lIiBQUkl1NjQgIikgdGhh
dCBkb2VzIG5vdCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0
dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMg
bm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRv
IGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3Qg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklEPSUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgICAgIG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFs
RXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lv
bklES2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICBkaWRGYWlsTG9h
ZGluZyhpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
Mjk4LDcgKzI5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgp
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCi0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRp
b24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3Jp
cHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFy
dE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCku
dXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVw
KExvYWRSZXN1bHQgcmVzdWx0KQpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNv
dXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRo
aXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgIFJFTEVB
U0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBk
b3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93
bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgCiAgICAgLy8gVGhp
cyBjYW4gaGFwcGVuIGlmIHRoZSByZXNvdXJjZSBjYW1lIGZyb20gdGhlIGRpc2sgY2FjaGUuCiAg
ICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJvcnQ6IENhbmNlbGluZyByZXNvdXJjZSBs
b2FkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAgICAgaWYgKG1fcGFyYW1ldGVycy5vcHRp
b25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX2lzS2VwdEFsaXZlKSB7
CiAgICAgICAgIG1faXNLZXB0QWxpdmUgPSB0cnVlOwpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNl
c3RvcnNPclhGcmFtZU9wdGlvCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0
dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcmVj
ZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUi
IFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCByZWNlaXZlZFJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkpOwogCiAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAg
LTUwNSw3ICs1MDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bvbgogdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1Jl
Y2VpdmVkKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQnVmZmVy
OiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5zaXplKCk7CiAKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwpAQCAtNTM0LDcgKzUzNCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNS
ZWNlaXZlZCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5m
b3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTU2
OSw3ICs1NjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wg
PSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgZXJyb3IuaXNUaW1lb3V0KCks
IGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlzQWNjZXNzQ29udHJvbCgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0Fj
Y2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuaXNB
Y2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIGlmIChzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1v
dmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZpZXIoKSk7CkBAIC03MzEsNyArNzMxLDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOwogCiAgICAgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOwogCkBAIC05ODgsNiArOTg4LDExIEBAIHN0YXRp
YyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUp
CiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUudmFsdWUoKSkgOiBTdHJp
bmcoIk5vbmUiX3MpOwogfTsKIAorc3RhdGljIFN0cmluZyBlc2NhcGVJREZvckpTT04oY29uc3Qg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPyBT
dHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOworfTsK
Kwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9u
LCBzZXNzaW9uSUQoKSkpOwpAQCAtOTk4LDcgKzEwMDMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGxvZ0Nvb2tpZUluZm9y
bWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5h
bFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShv
cmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVl
c3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigpKTsK
IH0KIAotc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxv
Y2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDI1LDcgKzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBs
b2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXN0YXRpYyB2b2lk
IGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9i
amVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZv
cm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDg2LDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9p
ZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aQogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRp
ZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlv
biwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGE4
YTMwMDVjMTQyMzA2MTM4ODc2ODIxYTQzYTA1N2EwYjZmM2Q3ZmMuLmE4ZjZkMzE1Nzk4YzRhZGZm
Zjk5ZGE3ZTgyZmZjODMzYTk2NzY4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtODQsNyArODQsNyBAQCBwdWJs
aWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLnNlc3Npb25JRDsgfQogICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAgICAgdWludDY0
X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9Ci0g
ICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KIAogICAgIHN0cnVjdCBTeW5jaHJvbm91c0xvYWRE
YXRhOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwotICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgT3B0aW9uYWw8dWludDY0
X3Q+IGlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpc2FibGVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljc0NhcHR1cmUoKSB7IG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApp
bmRleCA5N2UwYjI0NDA3OGQ4MzJhZWRjZGQ4YTY3OTE4NDE0ZjI4NzBjNjAyLi41NTNjYmFkMTli
YzVhMTk3ZTA2MjUyNzUwZjI4MmNlM2IwNDE2ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCkBAIC00NSw0MCArNDUsNDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9u
c2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQog
ewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIu
ZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVu
Y29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsg
Zm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIHsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRjaDogZmV0Y2hJZGVudGlm
aWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsg
ZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
RmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmll
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAppbmRleCBkMzJjZDQ2Mzg5ZWMwMjJiZmM1MDE0NWI3MzdlZjRjYWFlYzkz
MjMxLi45MWZkYzcxNTk3MWQ3YjE5Y2JiOGI0MmM2NDdkYjMwYzNhZmUyOWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyIHNlcnZpCiAgICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29y
a2VyRnJvbVJlZ2lzdHJhdGlvbklEKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKICAgICBpZiAoIXdvcmtlcikgewogICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyAt
PiBEaWROb3RIYW5kbGUgYmVjYXVzZSBubyBhY3RpdmUgd29ya2VyIiwgZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9jb250ZW50Q29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5k
bGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29udGVudENv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90
SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7CkBA
IC0xNzAsMTMgKzE3MCwxMyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRj
aChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aQogCiAgICAgICAgIGlm
ICghc3VjY2VzcykgewogICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90
SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRpZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIGZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBtX2Nv
bnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6
OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAg
ICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndv
cmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXdvcmtlcikg
ewotICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRp
Zmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTkyLDcgKzE5Miw3
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKS5zdGFy
dEZldGNoKG1fc2Vzc2lvbklELCBtX2NvbnRlbnRDb25uZWN0aW9uLmdldCgpLCB0aGlzLT5pZGVu
dGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVl
c3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZlcnJlcik7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNh
dXNlIGZhaWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIiLCBmZXRjaElkZW50aWZpZXIubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgICAgIG1fY29udGVudENvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFu
ZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAgICAgIG1f
Y29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDAwMzk0NTA1M2Y1NTAz
NGMyMzA4N2U5MDc5OGJmOWI3ZGZiZTg2MjMuLjBiZWQ2OTc2OTVmYTVkOGIzNGJjMjhjNTA3MGEy
YWNjYzA2MjIxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNDk0LDcgKzQ5NCw3IEBAIFN0
b3JhZ2VNYW5hZ2VyOjp+U3RvcmFnZU1hbmFnZXIoKQogewogfQogCi12b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgcXVv
dGFJbkJ5dGVzXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9zZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRf
dCBzdG9yYWdlTmFtZXNwYWNlSUQsCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6
OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3Bh
Y2VJRF0gewogICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFp
bnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCkKICAgICB9KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dl
ZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbih1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIElQQzo6Q29ubmVjdGlvbiYgYWxsb3dlZENvbm5lY3Rpb24pCit2b2lkIFN0b3JhZ2VN
YW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKFBhZ2VJ
ZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29u
bmVjdGlvbikKIHsKICAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVj
dGlvbi51bmlxdWVJRCgpOwogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3Bh
Y2VJRF0oKSBtdXRhYmxlIHsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0
b3JhZwogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKK3ZvaWQgU3RvcmFnZU1hbmFn
ZXI6OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24oUGFnZUlk
ZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mIGFsbG93ZWRDb25u
ZWN0aW9uKQogewogICAgIGF1dG8gYWxsb3dlZENvbm5lY3Rpb25JRCA9IGFsbG93ZWRDb25uZWN0
aW9uLnVuaXF1ZUlEKCk7CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVzcGFj
ZUlEXSgpIG11dGFibGUgewpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6
OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qg
c3RvCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdTdG9y
YWdlTmFtZXNwYWNlSUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgUGFnZUlkZW50aWZp
ZXIgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgbmV3
U3RvcmFnZU5hbWVzcGFjZUlEXSB7CiAgICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChz
dG9yYWdlTmFtZXNwYWNlSUQpOwpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgU3RvcmFnZU1hbmFn
ZXI6OnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFp
cnNUb1JlbW92ZSkKICAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92
ZShwYWlyKTsKIAotICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHNlc3Npb25TdG9yYWdlTmFtZVNw
YWNlSURzVG9SZW1vdmU7CisgICAgICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4gc2Vzc2lvblN0
b3JhZ2VOYW1lU3BhY2VJRHNUb1JlbW92ZTsKICAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzKSB7CiAgICAgICAgICAg
ICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPmFsbG93ZWRDb25uZWN0aW9ucygp
LmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpCiAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UudmFsdWUtPnJlbW92ZUFsbG93ZWRDb25uZWN0aW9uKGNvbm5lY3Rpb25JRCk7CkBA
IC03NzksNyArNzc5LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKIAogdm9pZCBTdG9yYWdl
TWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhKQogewotICAgIG1fcXVldWUt
PmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbm5lY3Rp
b25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHNlY3VyaXR5T3JpZ2luRGF0YSA9IHNlY3VyaXR5T3JpZ2luRGF0YS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlE
KCksIHN0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZUlEID0gbWFrZU9iamVjdElkZW50aWZp
ZXI8UGFnZUlkZW50aWZpZXJUeXBlPihzdG9yYWdlTmFtZXNwYWNlSUQpLCBzZWN1cml0eU9yaWdp
bkRhdGEgPSBzZWN1cml0eU9yaWdpbkRhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChtX2lzRXBoZW1lcmFsKSB7CiAgICAgICAgICAgICBtX2VwaGVtZXJhbFN0b3Jh
Z2UuYWRkKHNlY3VyaXR5T3JpZ2luRGF0YSwgV2ViQ29yZTo6U3RvcmFnZU1hcDo6Y3JlYXRlKGxv
Y2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzKSk7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5oCmluZGV4IGE4ODgzMzJlZmNmYjU5NDEzMGIyNjA4ODQ2YWY0YTE4MjE4MmI3
OTAuLjVlNjVlNTAzOGZkZmY0MTcxMjY3ZDllMzJlZDE4ZTU0ZmMzOTU2YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTUwLDExICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFu
YWdlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB+
U3RvcmFnZU1hbmFnZXIoKTsKIAotICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwot
ICAgIHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCk7Ci0gICAgdm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VD
b25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7
Ci0gICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9u
KHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9p
ZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICB2b2lkIGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQp
OworICAgIHZvaWQgYWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlv
biYpOworICAgIHZvaWQgcmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVj
dGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29u
bmVjdGlvbiYpOworICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKICAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZUNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CiAgICAgdm9pZCB3YWl0VW50aWxXcml0ZXNGaW5p
c2hlZCgpOwpAQCAtMTA3LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxzdGQ6OnBh
aXI8dWludDY0X3QsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4sIFJlZlB0cjxUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZXM7CiAKICAgICBjbGFzcyBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdl
TmFtZXNwYWNlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKIAog
ICAgIEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90
PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmlu
ZGV4IGM3ZjM4NmIzZDdjMzE0NTU4MGYyYWMwZTBlMzUyZWE2Yjg3MTU1YzEuLjhiYmMxNjk3ODU2
MGU0NDYzMjIxZGY3M2FjYjEwODc2MmFiNzY5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFn
ZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KQEAgLTg0LDcgKzg1LDcgQEAgZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CiAgICAgTm9E
dWVUb0V4cGlyZWRSZWRpcmVjdAogfTsKIAotdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFp
cjx1aW50NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47Cit1c2lu
ZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCAvKndlYkZyYW1lSUQqLz47CiAKIGNsYXNzIENhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8
Q2FjaGU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCA5NjVjNmZhNjY0YmNkMTU1
Zjc2Y2RiM2I0ZDczMjZlZWUwM2U5MTg4Li4yZGQwZTdkNDZiYzcxOWU5NmZhMTUwNzRmZWQwMGIx
Yzg4NjY1NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIE5l
dHdvcmtTZXNzaW9uQ29jb2E7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1
YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNv
Y29hOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFU
YXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2
NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNv
bnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNo
b3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29j
b2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1Nu
aWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVj
b25uZWN0T25seSwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIG5ldHdvcmtBY3Rp
dml0eVRyYWNrZXIpKTsKICAgICB9CkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4g
bV9uZXR3b3JrTG9hZE1ldHJpY3M7IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lSUQ7IH07Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSUQ7IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlSUQ7IH07CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
KTsKKyAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRh
VGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50
RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1l
TmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOwogCiAgICAgYm9v
bCB0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQg
YXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9f
c3Ryb25nIE5TVVJMUmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZik7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIHVpbnQ2NF90IG1fZnJh
bWVJRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBtX3BhZ2VJRDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBtX2hhc0JlZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMzVlNDQzYjllZTkxODA1N2FkMzRkZWYwNjhhODk5YmVh
MDY3YWRmNi4uMjhhMDVlODBkYjY4NWFmNjdiMjg0Yzg0MjMxNzE5NGY5N2U4N2UzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFz
a1dpdGhGaXJzdFBhcnR5Rm9yU2FtZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0
YXMKICNlbmRpZgogfQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29j
b2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlm
ZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1Nu
aWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNv
bm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25h
bDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29y
a0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xp
Y3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1Bv
bGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVy
T25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25s
eSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtE
YXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFt
ZUlEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29r
aWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVs
dTogQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAo
dW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0
YXNrSUQgPSAlbHU6IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVy
XSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAg
ICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVz
IiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcu
VVRGOFN0cmluZyk7CiAjZW5kaWYKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJgogICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFs
c1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3Rh
dGVsZXNzQ29va2llbGVzcyB8fCBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNo
b3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZv
cm1hdGlvbigpKQotICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJ
RCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwg
dGhpcywgbV9wYWdlSUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRl
bnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2lu
ZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0
d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJ
bmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTog
JXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQo
KSwgbV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNo
b3VsZEJsb2NrQ29va2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vz
c2lvbiwgIiVsbHUgJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNr
SWRlbnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9j
a2luZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBA
IC0zNzksNyArMzc5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3Vs
ZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAo
bV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5l
dHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2ll
SW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6
IE5vdCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9w
YWdlSUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0s
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0
d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJ
bmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTog
Tm90IHBhcnRpdGlvbmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lk
ZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UK
ICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tp
ZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggYzRmYjAwYjA4M2M0MTEyYTIyYzgxZWM0NWYwODhk
YTA5Y2I4NjllOC4uM2VkZjgyYWRmM2I1YWUzYjI4NGM3ZGQ1OTE1Yjg4NWU3NTIzMTc2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTg2LDYgKzE4NiwzNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQm
JiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJl
cGx5RGlzcGF0Y2hlciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBl
PHR5cGVuYW1lIFQ6OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcik7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vj
b25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3Bh
dGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBP
cHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOworICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFU+CisgICAgdm9pZCBz
ZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgT2Jq
ZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklEID0geyB9KQorICAgIHsKKyAgICAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5PFQsIEM+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgIH0KKyAgICAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2Fn
ZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlv
bj4gc2VuZE9wdGlvbnMgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4gc2VuZDxUPihXVEZN
b3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKKyAg
ICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICB2b2lk
IHNlbmRXaXRoUmVwbHkoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgRnVuY3Rpb25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQo
T3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4m
JiByZXBseUhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gc2VuZFdpdGhSZXBseTxUPihX
VEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlcGx5RGlzcGF0Y2hl
ciwgV1RGTW92ZShyZXBseUhhbmRsZXIpKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNl
bmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CisgICAgfQorICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCB3YWl0Rm9yQW5kRGlz
cGF0Y2hJbW1lZGlhdGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+
KGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAg
IH0KIAogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRp
b25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRo
UmVwbHkodWludDY0X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIEZ1bmN0
aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPik+JiYgcmVwbHlIYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCBkNWY5ODFlNDUzNGIyYTliZDhiNGE1Y2M2MTRlODdj
YTQ0OTU2ZDRhLi4zZDZmMzQyODkyYmM4ODM5MDY3OGU4YzM2NDYzOTExMGRlNGY1NzI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC0zNCw5ICszNCw5
IEBAIGNsYXNzIE1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lc3NhZ2VT
ZW5kZXIoKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBt
ZXNzYWdlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNz
YWdlLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCiAgICAgewotICAg
ICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCB7
IH0pOworICAgICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlv
blNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTQ4LDYgKzQ4LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29k
ZXIpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFQ+CisgICAgYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9iamVjdElkZW50
aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25z
ID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KICAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25T
ZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKQEAgLTY1LDggKzcxLDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRp
bWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgorICAgIHZvaWQgc2VuZFdp
dGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewog
ICAgICAgICBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDUyNTE0OTAyYWJiZTFjYzcxNDZiNDNiZTdjZDhjNDZiYWI0OTA1ODguLjVi
OTc1MzAzMDViMDQ5OWRjOGYyZTg0ZWNjZTBmMzFlOGU2NWQ3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjA1LDYgKzIwNSw3IEBAIGRlZiBmb3J3YXJk
X2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICdTdHJpbmcnLAog
ICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OkZldGNoSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCmluZGV4IGE2YTAwOTk1
NTAwZTc2MzNlMGQ0NWIxOGE0NDdjNzQyYTY5MjIwYWIuLmU2MDVhNDU5NDZmZmM3ZjFkMDdjYjg0
ZThmNWNiOTg3YmJmMzY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElQYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhh
bmRsZS5jcHAKQEAgLTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBh
Z2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhh
bmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsK
IH0KIAotUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVp
bnQ2NF90IHBhZ2VJRCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29u
dmVydGluZyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6
UGFnZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VI
YW5kbGU6OlBhZ2VIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlz
QXV0b2NvbnZlcnRpbmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2Nv
bnZlcnRpbmcoaXNBdXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBh
Z2VIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFn
ZUhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJl
c3VsdCkKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YWdlSUQpKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7Cisg
ICAgZGVjb2RlciA+PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGlzQXV0b2NvbnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1
bHQgPSBpc0F1dG9jb252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNy
ZWF0ZShwYWdlSUQpOworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRv
Y29udmVydGluZygqcGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFm
YmRjMzFiNzkxYTlmYzBhYTYyNmZjOTBhNzQ4ZWYwODk0OC4uNmExY2ZiNjk4MjU5YmY0OGQ0ZDhl
ZDU4ZWNiODdiMGYyMjY3NDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSVBhZ2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhh
bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEFQSVBhZ2VIYW5kbGVfaAogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zOCwyMCArMzksMjAg
QEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFBhZ2VIYW5kbGUgOiBwdWJsaWMgT2JqZWN0SW1w
bDxPYmplY3Q6OlR5cGU6OlBhZ2VIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBh
Z2VIYW5kbGU+IGNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHN0YXRpYyBSZWY8UGFnZUhh
bmRsZT4gY3JlYXRlQXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMg
UmVmPFBhZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc3Rh
dGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7CiAgICAgdmlydHVhbCB+UGFnZUhhbmRsZSgpOwogCi0gICAgdWludDY0X3QgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIGJvb2wgaXNBdXRv
Y29udmVydGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvY29udmVydGluZzsgfQogCiAgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KElQQzo6RGVjb2RlciYsIFJlZlB0cjxPYmplY3Q+Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgUGFnZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZyk7Cisg
ICAgUGFnZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgYm9vbCBpc0F1dG9jb252ZXJ0
aW5nKTsKIAotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIGNvbnN0IGJvb2wgbV9pc0F1dG9jb252ZXJ0
aW5nOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaAppbmRleCA4NmY4MDQxNzA5YWJkNWMzY2Q2NGNkODIwZjg2MzUy
Y2FjMmE0ZDUxLi40MDQwODE3ODAwMmE5NDY3MWQzNTBkZjI2MWUwOGM5NTBlZWYyYjgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a09iakNQdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNzMsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9sYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVj
ZXNzYXJ5OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eVRva2VuPiBtX3BlbmRpbmdSZXBsaWVzOwogICAgIGJvb2wgbV9pc1JlZ2lzdGVy
ZWRBc01lc3NhZ2VSZWNlaXZlciB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9tZXNzYWdlUmVj
ZWl2ZXJJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX21lc3NhZ2VSZWNl
aXZlcklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KaW5k
ZXggNThjYjFkZDJiNWU3YzdjNmIwOTY1YWY2N2E1NTc2MmY0OTU5ODMwNi4uN2U5N2YxNzZjMDhh
NTg1YjFiOWMyNDMwZmU5NjEzYmQzYTM5MTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgs
NyArMjgsNyBAQAogCiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAot
LSAoaWQpX2luaXRXaXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBh
Z2VJRDooV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0g
KGlkKV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFz
aAogewotICAgIHJldHVybiBfcGFnZUlEOworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7
CiB9CiAKIC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJP
T0wpaXNFcXVhbDooaWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVy
ICopY29kZXIKIHsKLSAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdl
SUQiXTsKKyAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpA
InBhZ2VJRCJdOwogfQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAg
LTYxLDcgKzYxLDcgQEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBf
cGFnZUlEID0gW2NvZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJ
RCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2Nv
ZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0Nv
bnRleHRIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYTc0ZmI0Mjhj
MjBlOTdjYmVmNmFkN2UzNjU4OTQzLi40M2U0MWUyNGNkMzYzMzZiNTQ3ODRiMDAzY2YxN2JiYzE2
ZjY3YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKQEAgLTI0LDExICsyNCwx
MiBAQAogICovCiAKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlLmgiCisjaW1wb3J0
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRl
eHRIYW5kbGUgKCkKIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXIgPSBf
cGFnZUlEKSB1aW50NjRfdCBwYWdlSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGdldHRlcj1fcGFnZUlEKSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAKLS0gKGlk
KV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlEOworLSAoaWQpX2luaXRXaXRoUGFnZUlE
OihXZWJDb3JlOjpQYWdlSWRlbnRpZmllcilwYWdlSUQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LmNwcAppbmRleCBlYjhhMGI2NjE3YWU1M2I1MDk4Zjg4NjIwNmNkZjczZTg4NDIxNDM1Li5k
NGUxYzI1MDA4MTEyYmJiZGY1ODM2Zjk2N2YwYzgzYzBjNmY3MTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuY3BwCkBAIC02Niw3ICs2Niw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0
X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKm1fZGVzdGluYXRpb25JRDsKKyAgICByZXR1cm4gbV9k
ZXN0aW5hdGlvbklELT50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpjYW5NYWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBy
ZXBseSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmkKICAgICBwbGF0
Zm9ybU9wZW5QYXltZW50U2V0dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGlu
Z1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvJiBjb29yZGluYXRvciA9IGFjdGl2ZVBheW1lbnRDb29yZGluYXRvclByb3h5
KCkpCiAgICAgICAgIGNvb3JkaW5hdG9yLT5kaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgKaW5kZXggZDIzN2VhYjNkYWI4NzlhNWRhMzU3MWY4OTEwMWQ3ZWU5NzA1
OTZiMi4uNmU0YTg1Y2YyZTI3ZmU0NjVhYWQ3NWNlZTIzYmNhZTJkZTdmZTAyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3Bl
blBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBkb21haW5OYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2
b2lkIHNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBz
aG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
ICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAg
ICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBDbGllbnQmIG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBtX2Rlc3RpbmF0aW9uSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IG1fZGVzdGluYXRpb25JRDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAv
LyBJZGxlIC0gTm90aGluZydzIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggZGQzMTMxMjdiZjRhOGExYWEwYzZkZWNjNmQyMzRmOWJkYmFhYjdk
My4uMWRlNGNkZGNlNGIxMjYzZTJkMGI5NGJmYjkzMTkxNDhiYmMxODIzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhB
Y3RpdmVDYXJkKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGNhbk1ha2VQYXltZW50cykgQXN5bmMK
ICAgICBPcGVuUGF5bWVudFNldHVwKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBk
b21haW5OYW1lKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKLSAgICBTaG93UGF5bWVudFVJKHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAo
Ym9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdz
LCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkg
LT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uKFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lv
bikKICAgICBDb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6
OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRh
dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA2ZWIzMzVmMDdkM2NmZTYyOTAwMDcx
Y2RhYTc4OTNmMDQzMzViZWFhLi45ZGViNzZmZjEzMmM2Y2I1ZmRmNWViZjUyMjIzNGY2ZDQ0M2Vm
OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdWludDY0
X3QgQXV0aGVudGljYXRpb25NYW5hZ2VyOjphZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcChDaGFs
bGVuZ2UmJiBjaGFsbGVuZ2UKICAgICByZXR1cm4gY2hhbGxlbmdlSUQ7CiB9CiAKLWJvb2wgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlKSBjb25zdAorYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNob3VsZENvYWxl
c2NlQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQs
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0CiB7CiAgICAg
aWYgKCFjYW5Db2FsZXNjZUNoYWxsZW5nZShjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMDgsNyArMTA4LDcgQEAgVmVjdG9yPHVpbnQ2NF90PiBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmNvYWxlc2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWwKICAgICByZXR1
cm4gY2hhbGxlbmdlc1RvQ29hbGVzY2U7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChw
YWdlSUQpOwogICAgIEFTU0VSVChmcmFtZUlEKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVp
bnQ2NF90IHBhZ2VJRCwgdQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICB1aW50NjRfdCBkdW1teVBhZ2VJRCA9IDA7CisgICAgUGFnZUlkZW50aWZpZXIgZHVtbXlQ
YWdlSUQ7CiAgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5n
ZU1hcCh7IGR1bW15UGFnZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikgfSk7CiAgICAgCiAgICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0
aGUgc2FtZSBwcm90ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaAppbmRleCA3ZmUzOTllMGI3ZTk0NThiZDkxNzgyNTkzODQxZTRjNDQ5MzM1YWUx
Li44NmU3NDRjMTA4ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2YjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2
MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
Jik7CiAKICAgICB2b2lkIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
Y2hhbGxlbmdlSUQsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6
OkNyZWRlbnRpYWwmJik7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgQ2hhbGxlbmdlIHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKICAgICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXIgY29tcGxldGlvbkhhbmRsZXI7CiAgICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCiAgICAgdWludDY0X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VN
YXAoQ2hhbGxlbmdlJiYpOwotICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKKyAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50
NjRfdD4gY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0
NzVkYzJiYjhmZjc3ZmE0MTcyNWMwODNiMGY3NTA5OTUzOS4uMTkyNTNlMmJhYjZhMTdiZWY0NjYz
NjY3ZmQ0OGFiOWU5ZTA1MTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4
aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nl
c3MuaApAQCAtNjIsNiArNjIsMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNz
YWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
LCByZWNlaXZlcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7Cisg
ICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklELnRvVUludDY0KCkpOworICAgIH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4
dElucHV0Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5o
CmluZGV4IDRmNzVmZDgwNmY2OGQ2YTk5OWJiYTZhNDViMTQ1NzQ3NmZjYWI4OGMuLjU0ZDQyNzdi
ODUzOGZiYTQxNTZhYjgzZDZhZGI4OTU3ODI4YTBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
ZXh0SW5wdXRDb250ZXh0LmgKQEAgLTI5LDEzICsyOSwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRleHRJbnB1
dENvbnRleHQgewogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CiAKLSAgICB1
aW50NjRfdCB3ZWJQYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3
ZWJQYWdlSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1l
bnRJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVu
dGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwCmluZGV4IDlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdjZjRkODQyZGZmMzk2ZWQuLmQ5
MDBhMTY3MzNhOWNlNTNmNzZlOTdmODk1OWMxNDdhNzUwODk3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRf
dCBwYWdlSUQpCitSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0Zvcndh
cmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZN
b3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAg
ICAgLCBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oCmluZGV4IDg3MmVmMTgwOTVkMThjYzNhOWM1ZTc0NjNkMzBlN2Y2MTQ4NzJmNWUuLjQ0
YWY3YzY2NTkwNzQ2ZGY5ODJlMDVjMTNiZWVjZDA2YTc4NjRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQ2LDcgKzQ3LDcgQEAgY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6QmFja0ZvcndhcmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50
NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3Jl
YXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGljIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0
dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWludDY0
X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9jZXNz
SWRlbnRpZmllcihjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmllcikg
eyBtX2xhc3RQcm9jZXNzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4Miwx
MiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3VzcGVuZGVkUGFn
ZUZyb21Qcm9jZXNzUG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRl
bVN0YXRlOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nl
c3NJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRl
ZFBhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCBlOWRhNjBhZWViZWZmMWRhNjkxZTFlNDUzMzczNTc3YTNhOTQw
YTI1Li42OTk0ODI1ZDA4MWNiMDk5NDg0MmFjY2RjZTQ4NDZlM2RkYjBlOTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
NTMsNyArNTMsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1c2VyQWdlbnQ7CiAgICAg
ZW5jb2RlciA8PCBpdGVtU3RhdGVzOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbklEOwotICAgIGVu
Y29kZXIgPDwgdXNlckNvbnRlbnRDb250cm9sbGVySUQudG9VSW50NjQoKTsKKyAgICBlbmNvZGVy
IDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklEOwogICAgIGVuY29kZXIgPDwgdmlzaXRlZExpbmtU
YWJsZUlEOwogICAgIGVuY29kZXIgPDwgd2Vic2l0ZURhdGFTdG9yZUlEOwogICAgIGVuY29kZXIg
PDwgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwpAQCAtMTkzLDExICsxOTMsMTEgQEAg
T3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIE9wdGlv
bmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyOwogICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxl
cklEID0gbWFrZU9iamVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
clR5cGU+KCp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyAgICBwYXJhbWV0ZXJz
LnVzZXJDb250ZW50Q29udHJvbGxlcklEID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXI7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJs
ZUlEKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTM5Miw3ICszOTIsNyBAQCBP
cHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IHBhcmFtZXRlcnMuYmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsK
IAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVpbnQ2NF90Pj4gb2xkUGFnZUlEOworICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4g
b2xkUGFnZUlEOwogICAgIGlmICghb2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCmluZGV4IGMyYmU4NDE0NmIzNGVhNzU2MTk3MDc1YWM4YjJjYmMzOGJlYzQyZTAuLjkwMTI3
YmMzMTAzMGVlZTAzZjI2MjdlOTdjYWQ0NWY5YjdiNjljMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1p
bGVzdG9uZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29s
b3I+IGJhY2tncm91bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBE
YXRhLmNwcAppbmRleCA5NjM5ZDAxNWMyZjk0ZTY3Yjc2NzIyOGFkMjNiMWQ5YzQzYjM1MDA3Li40
ZDFjY2VhNjU2MzA5NmM1YWFhMmZmZmE2MzljYWJjOTMxOTIyYjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcApAQCAtMzQsNyArMzQsNyBAQCB2b2lkIFdlYlBh
Z2VHcm91cERhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBpZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwSUQ7Ci0gICAg
ZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLnRvVUludDY0KCk7Cisg
ICAgZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfQogCiBPcHRp
b25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQpAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VHcm91cERh
dGE+IFdlYlBhZ2VHcm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAg
aWYgKCFwYWdlR3JvdXBJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAg
ICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcjsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIHt7IFdURk1vdmUo
KmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpwYWdlR3JvdXBJRCksIG1ha2VPYmplY3RJZGVudGlmaWVy
PFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcikgfX07CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBX
VEZNb3ZlKCpwYWdlR3JvdXBJRCksICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH19
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
T2JqQ09iamVjdEdyYXBoLm1tCmluZGV4IGM2NTQ4NGY1NTEyMjBkZGJjOGI4NGI3OTZhY2IwNTk4
ODcyNmI4NzMuLmZlNjZkZTY1OTJhYTBhZjIzNDU4ODJkYjNkNDFhMTJjYTJiOWJjMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQpAQCAtMjk4LDExICsy
OTgsMTIgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICB9CiAKICAgICBjYXNlIE9iakNUeXBlOjpX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZTogewotICAgICAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFnZUlEKSkKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKKyAgICAgICAgZGVjb2RlciA+PiBwYWdlSUQ7Cisg
ICAgICAgIGlmICghcGFnZUlEKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHJlc3VsdCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRX
aXRoUGFnZUlEOnBhZ2VJRF0pOworICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2lu
Z0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDoqcGFnZUlEXSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAxMDc1NzgxYWYyYzNm
OGE3ZWE3YzYxODZlYmNmNzljNzA4MWMxOTk3Li4yZjljZmU5NDI0MDI2MTcyZDkwNmRiZDFhMDNj
NGNkMDE1NDRiYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNTQsNiArNTQsNyBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogU3RyaW5nIEF1dG9tYXRpb25Db21tYW5kRXJyb3I6OnRvUHJv
dG9jb2xTdHJpbmcoKQogewpAQCAtNTIyLDcgKzUyMyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OndhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uRnJhbWUoV2ViRnJhbWVQcm94eSYg
ZnJhCiAgICAgfQogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNwb25kVG9QZW5k
aW5nUGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mIG1hcCkK
K3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlv
bkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQogewogICAgIElu
c3BlY3Rvcjo6RXJyb3JTdHJpbmcgdGltZW91dEVycm9yID0gU1RSSU5HX0ZPUl9QUkVERUZJTkVE
X0VSUk9SX05BTUUoVGltZW91dCk7CiAgICAgZm9yIChhdXRvIGlkIDogY29weVRvVmVjdG9yKG1h
cC5rZXlzKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggNjVlYjNlNDZlNWI4OGJhODJhYzJk
MTAyNGVjYWU2M2NiMzRkNzA4Ny4uZjM5YzA2MWI1Nzg5MmE5MjQ4ZmQwOWRmZmNmYTdiOGM1MGEw
NzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNo
YXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIgog
I2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTIyNSw3ICsyMjYsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2ViUGFn
ZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVn
eSwgU2Vjb25kcywgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZT4mJik7CiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPbkZyYW1lKFdlYkZy
YW1lUHJveHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0
ZWd5LCBTZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlPiYmKTsKLSAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNr
c1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOworICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1Bh
Z2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZT4+Jik7CiAgICAgdm9pZCByZXNwb25kVG9QZW5kaW5nRnJhbWVOYXZpZ2F0aW9uQ2FsbGJhY2tz
V2l0aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCBsb2FkVGltZXJGaXJlZCgpOwog
CkBAIC0yODAsMjIgKzI4MSwyMiBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OkF1dG9t
YXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRjaGVyOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+IG1fZG9tYWlu
Tm90aWZpZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRs
ZU1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1faGFuZGxlV2ViUGFnZU1hcDsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdHJpbmc+IG1fd2ViUGFnZUhh
bmRsZU1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1f
aGFuZGxlV2ViUGFnZU1hcDsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJG
cmFtZUhhbmRsZU1hcDsKICAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1faGFuZGxlV2Vi
RnJhbWVNYXA7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbklu
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5k
aW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5C
cm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFj
a0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNr
c1BlclBhZ2U7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJy
b3dzaW5nQ29udGV4dENhbGxiYWNrc1BlckZyYW1lOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRp
bmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlckZyYW1lOwotICAg
IEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpD
YWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQ
YWdlOwogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQotICAgIEhh
c2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKE9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1
c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCRFJJVkVSX01PVVNF
X0lOVEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKE9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hl
ZENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
RnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRp
bmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAKICAgICB1aW50
NjRfdCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwpAQCAtMzE5LDcg
KzMyMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIEFQSXMg
dGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVybiB0aGVzZQogICAgIC8v
IHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVzZWQgYXMgaW5pdGlhbCBz
dGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCiAgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRT
b3VyY2U+PiBtX2lucHV0U291cmNlczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+
PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCRFJJVkVS
X0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKICAgICAvLyBLZWVwIHRyYWNrIG9mIGN1cnJlbnRseSBh
Y3RpdmUgbW9kaWZpZXJzIGFjcm9zcyBtdWx0aXBsZSBrZXlzdHJva2VzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA5ODkzZDM5OGI1
NzQ2MmFkOWI4ODgzOGUyMjcxMGZjYWYwNDYzMGQwLi42YjA5YmFkYjhkMGNlYmFiZjJjNjlmNjAw
OWIxYmQxZDIzYzA5ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlh
cnlQcm9jZXNzUHJveHkuaApAQCAtNTEsNiArNTEsMTggQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6
OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywg
T3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5kV2l0aEFz
eW5jUmVwbHkoVCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmKTsKKyAgICAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYg
bWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBD
OjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIHJldHVybiBz
ZW5kPFQ+KFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgc2VuZE9w
dGlvbnMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PgorICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVw
bHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0g
MV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdU
Rk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5j
T3B0aW9ucyk7CisgICAgfQogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29u
c3QKICAgICB7CkBAIC02Nyw2ICs3OSwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICAKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRl
c3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB7CisgICAg
ICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCksIHJlY2VpdmVyKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
KQorICAgIHsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CisgICAgfQogCiAgICAgZW51bSBjbGFzcyBT
dGF0ZSB7CiAgICAgICAgIExhdW5jaGluZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQppbmRleCBm
MDVkNzljMGQwMWI4OWQ2YjY4NDhjYTI1MDZjY2Y5MWRjZmI3NjcxLi42NzA2NTk3Njg2MThlZDc1
Zjk4MGMxMWFkYWNhOTFiZTI5OWU0ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC01
MjcsOTQgKzUyNyw5NCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxl
Q29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90IGNvbgogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6UGxheShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9n
Z2xlUGxheVN0YXRlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNv
bnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5T
Y3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRT
Y3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElk
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVp
bnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xlcmFuY2VCZWZvcmUsIGRv
dWJsZSB0b2xlcmFuY2VBZnRlcikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xlcmFuY2VC
ZWZvcmUsIHRvbGVyYW5jZUFmdGVyKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJ
ZCwgdGltZSwgdG9sZXJhbmNlQmVmb3JlLCB0b2xlcmFuY2VBZnRlcikpOwogfQogCiB2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBk
b3VibGUgdGltZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OkZhc3RTZWVrKGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNl
ZWsoY29udGV4dElkLCB0aW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5n
Rm9yd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNv
bnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5T
Y2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5k
U2Nhbm5pbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qg
aW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpTZWxlY3RBdWRpb01lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVp
bnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
Y29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KGNvbnRleHRJZCwgaW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVy
ZUluUGljdHVyZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1cmVJblBpY3R1
cmUoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0
b2dnbGVNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6c2V0TXV0ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIG11dGVk
KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2V0TXV0ZWQoY29udGV4dElkLCBtdXRlZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4
dElkLCBtdXRlZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0
Vm9sdW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0
SWQsIHZvbHVtZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQbGF5aW5nT25TZWNv
bmRTY3JlZW4odWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewogICAgIGlmIChtX3Bh
Z2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6U2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpTZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVt
ZW50SUQoKQogewogICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250
cm9sbGVkRWxlbWVudElEUmVxdWVzdChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OkhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNN
YW5hZ2VyQ29udGV4dElkKSk7CiB9CiAKIFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggNmJhNDc5ZTA2MGEwOTZjNDM5NTFlYTc0YmY4
OTdiYTY3MTY4OWY3ZS4uYzhkNjVjMzYyYWFjODJjNjQxMTk1MTE2NDk4YTExNzljNTMzZTQ0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtNjIwLDQzICs2MjAsNDMgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbih1aW50NjRf
dCBjb250ZXh0SWQpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0
RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRp
YSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlh
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29udGV4dElkLCBtb2RlLCBm
aW5pc2hlZFdpdGhNZWRpYSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFVwZGF0
ZUlubGluZVJlY3QoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5saW5l
UmVjdChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VmlkZW9D
b250ZW50TGF5ZXIoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VmlkZW9Db250ZW50
TGF5ZXIoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXR1cm5WaWRlb0Nv
bnRlbnRMYXllcihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVudExh
eWVyKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZFNldHVwRnVsbHNjcmVlbihj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZFNldHVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFeGl0RnVsbHNjcmVl
bih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpXaWxsRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0
SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpEaWRFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxs
c2NyZWVuKGNvbnRleHRJZCkpOwogICAgIG1fcGFnZS0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKIH0K
IAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgbV9wYWdlLT5kaWRFbnRl
ckZ1bGxzY3JlZW4oKTsKIH0KIApAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwogICAgIFttb2RlbC0+bGF5ZXJIb3N0Vmlldygp
IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxw
dHIpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
RGlkQ2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRDbGVhbnVw
RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKIAogICAgIGludGVyZmFjZS0+c2V0TW9kZShIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICByZW1vdmVDbGll
bnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CkBAIC02ODgsMjUgKzY4OCwyNSBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckZyYW1lKHVpbnQ2NF90IGNvbnRl
eHRJZCwgV2ViQ29yZQogICAgICAgICBtYWNoX3BvcnRfbmFtZV90IGZlbmNlUG9ydCA9IGZlbmNl
U2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKTsKICNlbmRpZgogCi0gICAgICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVu
Y2VkKGNvbnRleHRJZCwgZnJhbWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNH
X1RZUEVfTU9WRV9TRU5EKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJGcmFtZUZl
bmNlZChjb250ZXh0SWQsIGZyYW1lLCBJUEM6OkF0dGFjaG1lbnQoZmVuY2VQb3J0LCBNQUNIX01T
R19UWVBFX01PVkVfU0VORCkpKTsKICAgICB9CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpzZXRWaWRlb0xheWVyR3Jhdml0eSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckdy
YXZpdHlFbnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNl
dFZpZGVvTGF5ZXJHcmF2aXR5RW51bShjb250ZXh0SWQsICh1bnNpZ25lZClncmF2aXR5KSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTW9kZUNoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBtX3BhZ2UtPnVpQ2xpZW50KCkuaGFzVmlk
ZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UobV9wYWdlLCBtb2RlICYgTWVkaWFQbGF5ZXJF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOwotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1vZGVDaGFu
Z2VkKGNvbnRleHRJZCwgbW9kZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KGNvbnRleHRJZCwgbW9kZSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAg
ICBib29sIGlzVmlld1Zpc2libGUgPSBtX3BhZ2UtPmlzVmlld1Zpc2libGUoKTsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIGlzVmlld1Zpc2libGUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1
bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIGlzVmlld1Zpc2libGUpKTsKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CmluZGV4IDJhYTc0OGYwMDRmMjIyYTAxZGRiN2FjOGVlZTcxMzJjYTc4ODkwY2EuLjA4YTNkMzA4
ZDNhNTBmMTk0NTQ0YzEzZTc5MWIzNmE3MTNiM2Q0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xOTk3LDEzICsxOTk3LDEzIEBAIGZsb2F0
IFdlYlZpZXdJbXBsOjppbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHZvaWQg
V2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZp
dHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2Ny
ZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJX
ZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIsIHRoaXMs
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6
d2luZG93RGlkT3JkZXJPblNjcmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJW
aWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAo
cGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oldp
bmRvd0lzQWN0aXZlIH0pOwogfQogCkBAIC0yMDcxLDcgKzIwNzEsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjp3aW5kb3dEaWRDaGFuZ2VMYXllckhvc3RpbmcoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3
aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUs
ICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0
ZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2Vi
Vmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUiLCB0
aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlT
dGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCkBA
IC0yMjM0LDE5ICsyMjM0LDE5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRDaGFuZ2VCYWNr
aW5nUHJvcGVydGllcygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRIaWRlKCkKIHsKLSAg
ICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRI
aWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJX
ZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkSGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFn
ZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6
OnZpZXdEaWRVbmhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwg
JXAgKHBhZ2UgJWxsdSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0Rp
ZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdl
LT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlkQ2hhbmdlKCkKIHsKLSAg
ICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNw
YWNlRGlkQ2hhbmdlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5
U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSBhY3RpdmVTcGFjZURpZENoYW5nZSIs
IHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggYjVi
NGUwYWQyMjE2MmM5ZDBjMDBjOThjZDgzOTM1MDlmY2Y2ZGY4MS4uZWNmNWRhMGE5MTBiNjM5NDgw
YWMzMmE1ZmIxYjBmYjBjZmZmZjZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBEcmF3aW5nQXJlYVByb3h5OjpE
cmF3aW5nQXJlYVByb3h5KERyYXdpbmdBcmVhVHlwZSB0eXBlLCBXZWJQYWdlUHJveHkmIHdlYlBh
Z2VQcgogICAgICwgbV92aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXIoUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmRHJhd2luZ0FyZWFQcm94eTo6dmlld0V4cG9zZWRSZWN0Q2hhbmdlZFRpbWVyRmly
ZWQpCiAjZW5kaWYKIHsKLSAgICBwcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
RHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSwgKnRoaXMpOworICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwg
KnRoaXMpOwogfQogCiBEcmF3aW5nQXJlYVByb3h5Ojp+RHJhd2luZ0FyZWFQcm94eSgpCiB7Ci0g
ICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWFQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWFQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIpOwogfQogCiBib29sIERy
YXdpbmdBcmVhUHJveHk6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgSW50U2l6
ZSYgc2Nyb2xsRGVsdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNDQzYjM4NWZhYzc0MWNkOGIyNGJh
Y2VlMDhiMDczNGQwN2UwMjcyLi4yZDk5NjZlM2M4M2ZiMWE0NDAzZTA3ZGY5YzU0YmJkYmQ0YjMw
OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IElQ
Qzo6QXR0YQogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjb3JlQ2hhbGxlbmdlLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjb3JlQ2hhbGxlbmdlLCB1
aW50NjRfdCBjaGFsbGVuZ2VJRCkKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
aWYgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBtX3Byb2Nlc3NQb29sLnNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKHBhZ2VJRCkpIHsKQEAgLTM3MSw3ICszNzEs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNz
TGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNvbgogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdu
b3N0aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxk
U2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2Vi
UGFnZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51bGwtY2hlY2sgYmVjYXVz
ZSBieSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUsIHRoZSBwYWdlIG1heSBi
ZSBnb25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywKQEAgLTM4Miw3ICszODIs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZQogICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNz
YWdlKG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCBzaG91bGRTYW1wbGUpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
dWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3Vs
ZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1
c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkg
YmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC0zOTMsNyArMzkz
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQodWludDY0X3QgcGFnZUlELCBjb25zdAogICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFJlc3VsdChtZXNzYWdlLCBkZXNjcmlwdGlvbiwgcmVzdWx0LCBzaG91bGRTYW1wbGUp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJl
cywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRv
dWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nl
c3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51bGwt
Y2hlY2sgYmVjYXVzZSBieSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUsIHRo
ZSBwYWdlIG1heSBiZSBnb25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywKQEAg
LTczNiw3ICs3MzYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVy
ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpcwogICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEdyYW5kZmF0aGVyZWQoc2Vzc2lv
bklELCByZXNvdXJjZURvbWFpbiwgaXNHcmFuZGZhdGhlcmVkKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbmZpcm0oUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6
OndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTkwOCw3ICs5MDgsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxl
bWV0cnlGaW5pc2hlZCh1bnNpZ25lZAogICAgIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0
YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShtZXNzYWdl
Qm9keSkucHRyKCkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbW1pdHRlZENy
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y29tbWl0dGVk
Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2Uo
KSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAyMGE3OTk4
YzRkYzI0YWIxNjU2ZjM5Mzg3ZjU3MDBmYTNjZTlhNjhlLi4yYmVjNjhmZDg5N2ZhNTk5MjNmMzE5
ZTMxMDQ5MmY2OTg2ZmM4YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCArODEsNiBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2lu
ZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAg
ICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBAIC0xMzEs
NyArMTI5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+
JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJRCwgRnJhbWVJ
RCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3ND
b25maXJtKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBjb25zdCBTdWJGcmFtZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxX
YWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQs
IGJvb2wgZGVidWdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpT
ZXNzaW9uSUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBy
ZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRl
TG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJv
bURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNv
bnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURv
bWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBN
ZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRDcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYs
IHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOwog
ICAgIHZvaWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBX
ZWJzaXRlRGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0
X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUp
OwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJs
ZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJl
c3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNh
bXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lk
IGxvZ1Rlc3RpbmdFdmVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGZhZDc5MDYxMDkyMGNl
Zjg1Mjc1ZGM5N2FkMWYxZC4uMjJmZmZkMTk4ODFiMjYzZTU3NDY5N2E5OWE0OWI0Y2NlMzIzNjE3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkQ3Jl
YXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rp
b25JZGVudGlmaWVyKQogCi0gICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgY2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKKyAgICBEaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVu
Z2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogCiAgICAgRGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50
NjRfdCBjYWxsYmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkK
ICAgICBEaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtMzUsOSAr
MzUsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBTZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQog
CiAgICAgIyBEaWFnbm9zdGljIG1lc3NhZ2VzIGxvZ2dpbmcKLSAgICBMb2dEaWFnbm9zdGljTWVz
c2FnZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24s
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQotICAgIExvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdl
LCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgZW51bTpib29sIFdlYkNvcmU6
OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAgTG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
VmFsdWUodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9u
LCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAgTG9nRGlhZ25vc3RpY01lc3Nh
Z2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5n
IGRlc2NyaXB0aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBs
ZSkKKyAgICBMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCB1aW50MzJf
dCByZXN1bHQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQor
ICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVl
LCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQogICAgIExvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZh
bHVlKFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5z
aWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCkBA
IC00Niw3ICs0Niw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIE5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21h
aW5zRmluaXNoZWQoKQogICAgIE5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlG
aW5pc2hlZCh1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgdG90YWxQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzU3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2lucykKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0o
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVE
b21haW4pIC0+IChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgQXN5bmMKKyAgICBSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0NvbmZpcm0oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4pIC0+IChib29sIHVzZXJEaWRH
cmFudEFjY2VzcykgQXN5bmMKICAgICBEZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVn
aXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVE
YXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBkb21haW5zKSAtPiAoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKSBBc3luYwogI2VuZGlmCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcAppbmRleCBmYWUxZjNmY2E4ODg3MTliZTdmNjI3MmQyMDU3MjBiYjg5MDE3N2ZlLi4yYWFm
ZjFlYzJhNjU0OTBkODg1NDM5OTZiZjgxMDJjMmQ0OWM1MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3Ry
aW5nJiB0aXRsCiB7CiAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0
ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBXZWJOb3Rp
ZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9y
aWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwotICAgIHN0ZDo6cGFpcjx1aW50NjRf
dCwgdWludDY0X3Q+IG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2Ut
PnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIHN0ZDo6cGFpcjxQYWdlSWRlbnRp
ZmllciwgdWludDY0X3Q+IG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBh
Z2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIG1fZ2xvYmFsTm90aWZpY2F0
aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uSURQYWlyKTsKICAg
ICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3RkOjptYWtlX3BhaXIo
Z2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpKTsKICAgICBtX3By
b3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwpAQCAtMTE5LDEyICsx
MTksMTIgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAogICAgIH0KIH0KIAotc3RhdGljIGJvb2wg
cGFnZUlEc01hdGNoKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QsIHVpbnQ2NF90IGRlc2lyZWRQ
YWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQorc3RhdGljIGJvb2wgcGFnZUlEc01hdGNo
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQ
YWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQogewogICAgIHJldHVybiBwYWdlSUQgPT0g
ZGVzaXJlZFBhZ2VJRDsKIH0KIAotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01h
dGNoKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCB1aW50NjRf
dCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlm
aWNhdGlvbklEcykKK3N0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgUGFnZUlkZW50
aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VO
b3RpZmljYXRpb25JRHMpCiB7CiAgICAgcmV0dXJuIHBhZ2VJRCA9PSBkZXNpcmVkUGFnZUlEICYm
IGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzLmNvbnRhaW5zKHBhZ2VOb3RpZmljYXRpb25JRCk7
CiB9CkBAIC0xNDEsMTMgKzE0MSwxMyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29ucwogCiB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNhdGlvbklE
cywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24gZmlsdGVyRnVuY3Rpb24pCiB7Ci0gICAgdWlu
dDY0X3QgdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CisgICAgYXV0byB0YXJnZXRQ
YWdlSUQgPSB3ZWJQYWdlLT5wYWdlSUQoKTsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gZ2xvYmFs
Tm90aWZpY2F0aW9uSURzOwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5yZXNlcnZlQ2FwYWNp
dHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsKIAogICAgIGZvciAoYXV0byBpdCA9
IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpLCBlbmQgPSBtX25vdGlmaWNhdGlvbnMuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+a2V5LmZp
cnN0OworICAgICAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT5rZXkuZmlyc3Q7CiAgICAgICAgIHVp
bnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT5rZXkuc2Vjb25kOwogICAgICAgICBpZiAo
IWZpbHRlckZ1bmN0aW9uKHdlYlBhZ2VJRCwgcGFnZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdl
SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xNzAs
NyArMTcwLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlk
U2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxOb3QKICAgICBpZiAoaXQgPT0gbV9nbG9i
YWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVpbnQ2NF90
IHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT52
YWx1ZS5maXJzdDsKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6
OndlYlBhZ2Uod2ViUGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsK
QEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJv
dmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxObwogICAgIGlmIChpdCA9
PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICBhdXRvIHdlYlBh
Z2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2Uod2ViUGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IGY3
MjdlZDQ3MmM1YmVmYTVhMjNmM2UwNDRlMGZkNDE5MDcwNDA0ZWYuLjExNTc4MWU0MzMzYzg1Njg0
ZmJjYTVjYTg0MTc2NTY0NGE4YzcxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3Rp
ZmljYXRpb25DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVkZWYg
Ym9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOworICAgIHR5cGVkZWYg
Ym9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VO
b3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNh
dGlvbkZpbHRlckZ1bmN0aW9uKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CkBAIC04
OCw5ICs4OSw5IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmlj
YXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICAvLyBQYWlyIGNvbXByaXNlZCBvZiB3ZWIg
cGFnZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElECi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwOworICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgdWludDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKICAgICAvLyBL
ZXkgcGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5v
dGlmaWNhdGlvbiBJRDsgdmFsdWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlv
biBJRCwgYW5kIG5vdGlmaWNhdGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50
NjRfdCwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRp
b24+Pj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5v
dGlmaWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAppbmRleCA0NWExZjBmNWI1Y2I4MGNjYzlhMGNmYmExNjEzZTQ0Yzg3NGE1NjA3Li43ZDU0OGE1
MzIxZWVjYmZjNjRiYzE0ZTkxNjg4MWU5OTBjOTY5MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC00Nyw2ICs0Nyw4IEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogI2RlZmlu
ZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19J
RihtX3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFByb3Zp
c2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0df
RVJST1JfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAg
LSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKQEAg
LTYxLDcgKzYzLDcgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5
KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm8KICAgICAsIG1fc3VzcGVuc2lv
blRva2VuKG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSkK
ICNlbmRpZgogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiIG5hdmlnYXRp
b25JRCA9ICUiIFBSSXU2NCAiIHN1c3BlbmRlZFBhZ2U6ICVwIiwgbV9wYWdlLnBhZ2VJRCgpLCBu
YXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCAiIHN1c3BlbmRlZFBhZ2U6
ICVwIiwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCwgc3VzcGVuZGVk
UGFnZS5nZXQoKSk7CiAKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSwg
KnRoaXMpOwogICAgIG1fcHJvY2Vzcy0+YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoKnRoaXMpOwpA
QCAtMTE3LDcgKzExOSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNvbm5lY3Rpb25X
aWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLnByb3Zp
c2lvbmFsUHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogfQogCkBAIC0xMzIsNyArMTM0LDcgQEAgdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Y2FuY2VsKCkKICAgICBpZiAobV9wcm92aXNpb25hbExv
YWRVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZSBmb3IgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlE
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2Vs
OiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQobV9t
YWluRnJhbWUpOwogICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1fcmVx
dWVzdCk7CiAgICAgZXJyb3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpD
YW5jZWxsYXRpb24pOwpAQCAtMTUxLDE0ICsxNTMsMTQgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojps
b2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6IHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKIAogICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGlu
ZywgYmFzZVVSTCwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1
ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICAvLyBJZiB0aGlzIGlz
IGEgY2xpZW50LXNpZGUgcmVkaXJlY3QgY29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVu
IHRoZSBuZXcgcHJvY2VzcyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRo
aXMgY2FzZSwKICAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgZnJvbUl0ZW0n
cyBwcm9jZXNzSWRlbnRpZmllciBhcyB3ZSB3YW50IGZ1dHVyZSBuYXZpZ2F0aW9ucyB0byB0aGlz
IEJhY2tGb3J3YXJkIGl0ZW0gdG8gaGFwcGVuIGluIHRoZQpAQCAtMTcxLDcgKzE3Myw3IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQ29yZTo6UmVzCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9C
YWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtJiBpdGVtLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQ
b2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
ImdvVG9CYWNrRm9yd2FyZEl0ZW06IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNr
Rm9yd2FyZEl0ZW06IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0
KCkpOwogCiAgICAgYXV0byBpdGVtU3RhdGVzID0gbV9wYWdlLmJhY2tGb3J3YXJkTGlzdCgpLmZp
bHRlcmVkSXRlbVN0YXRlcyhbdGhpcywgdGFyZ2V0SXRlbSA9ICZpdGVtXShhdXRvJiBpdGVtKSB7
CiAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gaXRlbS5zdXNwZW5kZWRQYWdlKCkpIHsKQEAgLTE5
Niw3ICsxOTgsNyBAQCBpbmxpbmUgYm9vbCBQcm92aXNpb25hbFBhZ2VQcm94eTo6dmFsaWRhdGVJ
bnB1dCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBPcHRpb25hbAogCiB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUodWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZU1haW5GcmFt
ZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdl
SUQoKSwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAgICAgQVNT
RVJUKCFtX21haW5GcmFtZSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNy
ZWF0ZShtX3BhZ2UsIGZyYW1lSUQpOwpAQCAtMjM0LDcgKzIzNiw3IEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWluCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBt
X3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0
aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBu
YXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsTG9hZFVSTC5pc051bGwoKSk7
CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB1cmw7CiAKQEAgLTI1NCw3ICsyNTYsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgY29ucwogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBu
YXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlv
bklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7
CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgp
LnRvVUludDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAgQVNTRVJUKCFtX3Byb3Zp
c2lvbmFsTG9hZFVSTC5pc051bGwoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB7IH07
CiAKQEAgLTI3MCw3ICsyNzIsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21t
aXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aQogICAgIGlmICgh
dmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENvbW1pdExv
YWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
bmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmln
YXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRDb21taXRMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUlu
dDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwg
PSB7IH07CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwogCkBA
IC0yOTUsNyArMjk3LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJv
dmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW4KIH0KIAogdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAg
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBpZiAoIXZhbGlkYXRlSW5w
dXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKQEAgLTM0MSw3ICszNDMsNyBAQCB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tG
b3J3YXJkSXRlbUlkZQogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZy
YW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCA2NDU2YzFmOTE2ZDU5
NzU1MDZjMTUyNzk0YWYyZTZiNjY4YzBiZjZjLi43ZDJmMzkwMjMxYWVhYjM3MGM3N2ZjMWFmMDJj
ZTRlZDUyNWE1ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCi0gICAg
ICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWlu
dDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTEwLDcg
KzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1l
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0g
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAg
ICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAj
aWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCAwNTU5Yzk4NzRi
ZGMzMzVjZWE4YWQ0YTg3N2IyYWMyOTcwODA1ZjI2Li41YjAyZGRiMjQ4OWZlM2I5NzMxNjQxZWRi
M2JmYjM3MDM0NjU1YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5tbQpAQCAtMTE1LDcgKzExNSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3
CiAgICAgSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgpLnNldFBvb2xTaXplKDApOwogI2VuZGlm
CiAKLSAgICBwcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSwgKnRoaXMpOworICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogCiAgICAgaWYgKG1fd2ViUGFnZVByb3h5LnByZWZl
cmVuY2VzKCkudGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlKCkpCiAgICAgICAgIGluaXRp
YWxpemVEZWJ1Z0luZGljYXRvcigpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFn
ZVByb3h5JiB3CiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp+UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eSgpCiB7CiAgICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBwcm9jZXNzKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFttX2Rpc3BsYXlMaW5rSGFuZGxlciBp
bnZhbGlkYXRlXTsKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdAog
ICAgIH0oKTsKIAogICAgIGF1dG8gc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0g
ICAgd2hpbGUgKHByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRM
YXllclRyZWU+KG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBhY3Rpdml0eVN0YXRlVXBkYXRlVGlt
ZW91dCAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSksIElQQzo6V2FpdEZvck9w
dGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkgeworICAgIHdoaWxl
IChwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVl
PihtX2lkZW50aWZpZXIsIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0IC0gKE1vbm90b25pY1Rp
bWU6Om5vdygpIC0gc3RhcnRUaW1lKSwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0
aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVN0YXRlQ2hh
bmdlSUQgPT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCBhY3Rpdml0eVN0YXRl
Q2hhbmdlSUQgPD0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1YTE0ZmJlNGRjZDRiMzhjN2EwYmZkNWMyZjcwYTA2YzVj
NTc1Zjg2Li5iMmY3NzI5ZmQzOTM1ZjcyZTFiYzkxMTVhMzBhMThmNjRlMzlmZDI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnVw
ZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZQogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNl
c1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYgY2hhbGxl
bmdlKQordm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBS
ZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBjaGFsbGVuZ2UpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHBhZ2VJRCk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCmluZGV4
IDkzMjQ1ZjBkYzc2ZjI2NTc1N2VjMmJmZTcxNjNlOWVkYWFlOWMwZjAuLmU5MzY1YWZhYzRmNDdk
N2ZkNzQ3Zjk4OTgzYWQ5OTkwZThhYjk3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTQxLDE0ICs0MSwxNCBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29u
c3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7CiAKICAg
ICB2b2lkIHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBPcHRpb25hbDxQQUw6OlNl
c3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbigpIHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KLSAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0K
KyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZpY2VXb3JrZXJQYWdlSUQ7IH0KIAogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNz
UHJveHkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
LCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBt
X3JlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVpbnQ2NF90IG1fc2VydmljZVdvcmtlclBhZ2VJRCB7
IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDEzNDZmY2MwNWM1YTI5Y2RiMDg2ZjcyZWY0
OTY3ODJjYjJiMDA1YWUuLmY2ZDNiNTM2ZGY4YWFiMTk3ZDkxMWVkMTRkMmVhNDBmZWZmMmUxZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApA
QCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwKIAogY29uc3QgY2hhciog
U3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykp
LCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgpLCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zdXNwZW5zaW9uU3RhdGUpLCAnKScpOworICAgIHJldHVy
biBkZWJ1Z1N0cmluZygiKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlz
KSksICIgcGFnZSBJRCAiLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgIiwgbV9zdXNwZW5z
aW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc3VzcGVuc2lvblN0YXRlKSwgJykn
KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAK
aW5kZXggOTcxMWIyMzM3MjE1ODc5MTE2YzNkZDhiNDY2ZWY1NTg1YWU5ODU4Mi4uYWQ3ODFmNmY4
M2NlZDdmNjNiMDZkNDY4ZTA1ZDNlNGExYTk3ZTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcApAQCAtNzMsNyArNzMsNyBAQCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKIHsKICAgICB3ZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiAgICAg
Zm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKLSAgICAgICAgcHJvY2Vzcy0+cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
ICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsK
ICAgICAgICAgcHJvY2Vzcy0+ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KCp0aGlzKTsKICAgICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTg1LDcg
Kzg1LDcgQEAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6On5XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSgpCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQoJndlYlBy
b2Nlc3NQcm94eSkuaXNOZXdFbnRyeSkKLSAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCksICp0aGlzKTsKKyAgICAg
ICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigp
LCAqdGhpcyk7CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcy5pc0Vt
cHR5KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgd29ybGQgOiBtX3VzZXJDb250ZW50V29ybGRz
KQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiAgICAgQVNTRVJU
KG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCZ3ZWJQcm9jZXNzUHJveHkpKTsKIAogICAgIG1fcHJvY2Vz
c2VzLnJlbW92ZSgmd2ViUHJvY2Vzc1Byb3h5KTsKLSAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgd2Vi
UHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsK
IH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRX
b3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQpAQCAtMTI2LDcgKzEyNiw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRV
c2UoQVBJOjpVc2VyQ29udGVudFdvcmxkCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3VzZXJDb250
ZW50V29ybGRzLmFkZCgmd29ybGQpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewog
ICAgICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAg
ICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpBZGRVc2VyQ29udGVudFdvcmxkcyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIo
KSwgd29ybGQubmFtZSgpKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRV
c2VyQ29udGVudFdvcmxkcyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwgd29y
bGQubmFtZSgpKSB9KSwgaWRlbnRpZmllcigpKTsKICAgICB9CiB9CiAKQEAgLTE1MCw3ICsxNTAs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVu
dFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50VwogewogICAgIGlmIChzaG91bGRTZW5kUmVtb3Zl
VXNlckNvbnRlbnRXb3JsZHNNZXNzYWdlKHdvcmxkLCBudW1iZXJPZlVzZXNUb1JlbW92ZSkpIHsK
ICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAg
ICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoeyB3b3Js
ZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAgICAgfQogfQogCkBAIC0xNjMsNyAr
MTYzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNv
bnRlbnRXb3JsZFVzZXMoSGFzaENvdW50ZWRTZXQ8UmUKICAgICB9CiAKICAgICBmb3IgKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29y
bGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVz
ZXJDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJT
Y3JpcHQmIHVzZXJTY3JpcHQsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVs
eSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSQogICAgIG1fdXNl
clNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7
IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0
LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OkFkZFVzZXJTY3JpcHRzKHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlk
ZW50aWZpZXIoKSwgdXNlclNjcmlwdC51c2VyU2NyaXB0KCkgfSB9LCBpbW1lZGlhdGVseSksIGlk
ZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQpAQCAtMTgzLDcgKzE4
Myw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3Jp
cHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0CiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRX
b3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0LnVzZXJDb250ZW50V29ybGQoKTsKIAogICAgIGZvciAo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlw
dCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCks
IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclNj
cmlwdHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU2NyaXB0KTsKIApAQCAtMTkzLDcgKzE5
Myw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3Jp
cHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdv
cmxkKQogewogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZp
ZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIHVzZXJTY3JpcHRzUmVtb3Zl
ZCA9IG1fdXNlclNjcmlwdHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclNjcmlw
dD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTY3JpcHQpIHsKICAgICAgICAgcmV0dXJuICZ1c2VyU2Ny
aXB0LT51c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkK
ICAgICAgICAgd29ybGRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIu
a2V5LT5pZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mg
OiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh3b3JsZElkZW50aWZpZXJzKSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRl
bnRpZmllcnMpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMo
KS5jbGVhcigpOwogCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclMK
ICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTdHlsZVNoZWV0
KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0g
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
QWRkVXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxk
LT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IHsgdXNlclN0eWxl
U2hlZXQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC51
c2VyU3R5bGVTaGVldCgpIH0gfSksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxl
U2hlZXQmIHVzZXJTdHlsZVNoZWV0KQpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxl
U2hlZXQmIHVzCiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5
bGVTaGVldC51c2VyQ29udGVudFdvcmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSog
cHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVu
dGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2Vy
U3R5bGVTaGVldC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5
bGVTaGVldHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU3R5bGVTaGVldCk7CiAKQEAgLTI0
OCw3ICsyNDgsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVV
c2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1cwogdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKEFQSTo6VXNlckNvbnRl
bnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVy
KCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVl
dHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1bnNpZ25l
ZCB1c2VyU3R5bGVTaGVldHNSZW1vdmVkID0gbV91c2VyU3R5bGVTaGVldHMtPnJlbW92ZUFsbE9m
VHlwZU1hdGNoaW5nPEFQSTo6VXNlclN0eWxlU2hlZXQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU3R5
bGVTaGVldCkgewogICAgICAgICByZXR1cm4gJnVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdv
cmxkKCkgPT0gJndvcmxkOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCiAgICAgICAgIHdvcmxk
SWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmll
cigpKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHdvcmxkSWRlbnRpZmll
cnMpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCku
Y2xlYXIoKTsKIApAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlCiAg
ICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYWRkKGhhbmRsZXIuaWRlbnRpZmllcigpLCAmaGFu
ZGxlcik7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OkFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB7IGhhbmRsZXIuaWRlbnRpZmllcigp
LCB3b3JsZC0+aWRlbnRpZmllcigpLCBoYW5kbGVyLm5hbWUoKSB9IH0pLCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5p
ZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlk
ZW50aWZpZXIoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMDAsNyArMzAwLDcg
QEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1l
c3NhZ2VIYW5kbGVycy5iZWdpbigpLCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBu
YW1lICYmICZpdC0+dmFsdWUtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQpIHsKICAgICAg
ICAgICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIod29ybGQuaWRlbnRpZmllcigpLCBp
dC0+dmFsdWUtPmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAg
ICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0
LT52YWx1ZS0+aWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpKTsKIAogICAgICAgICAgICAgbV9z
Y3JpcHRNZXNzYWdlSGFuZGxlcnMucmVtb3ZlKGl0KTsKIApAQCAtMzEzLDcgKzMxMyw3IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxl
ckZvck5hbWUoY29uc3QgU3RyaW5nCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29y
bGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigp
IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAg
IHVuc2lnbmVkIG51bWJlclJlbW92ZWQgPSAwOwogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJz
LnJlbW92ZUlmKFsmXShhdXRvJiBlbnRyeSkgewpAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMo
QVBJOjpVc2VyQ29udGVuCiAgICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQsIG51
bWJlclJlbW92ZWQpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpk
aWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhh
bmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQordm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0Rh
dGEmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2Ug
PSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0z
NTEsNyArMzUxLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkQ29u
dGVudFJ1bGVMaXN0KEFQSTo6Q29udGVudFJ1bGVMaXN0JiBjb24KICAgICBhdXRvIHBhaXIgPSBz
dGQ6Om1ha2VfcGFpcihjb250ZW50UnVsZUxpc3QubmFtZSgpLCBjb250ZW50UnVsZUxpc3QuY29t
cGlsZWRSdWxlTGlzdCgpLmRhdGEoKSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3By
b2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpBZGRDb250ZW50UnVsZUxpc3RzKHsgcGFpciB9KSwgaWRlbnRpZmllcigpLnRv
VUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkp
OwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQogICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6
QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSwgeyBwYWlyIH0gfSwgMCk7CkBAIC0z
NjIsNyArMzYyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
Q29udGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBtX2NvbnRlbnRSdWxlTGlz
dHMucmVtb3ZlKG5hbWUpOwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7
CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgZm9y
IChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlQ29udGVu
dFJ1bGVMaXN0IHsgaWRlbnRpZmllcigpLCBuYW1lIH0sIDApOwpAQCAtMzczLDcgKzM3Myw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxl
TGlzdHMoKQogICAgIG1fY29udGVudFJ1bGVMaXN0cy5jbGVhcigpOwogCiAgICAgZm9yIChhdXRv
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBp
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBp
ZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vz
c2VzKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVM
aXN0TWFuYWdlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSB9LCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDYyMzMwMTExNmVk
MWQ2NTRmMmEzNDg5YTdmMGY2MjQ3NzY2MTI0YWUuLjBlZDM2YTU5Y2MzYTcxZDlmMjE5ZTE5NDg0
MjljOGE3OTFkMGM2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgpAQCAtMTEwLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWlu
dDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAg
dm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxk
VXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRX
b3JsZFVzZXMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9S
ZW1vdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbgppbmRleCA4MTcxNDM1MWZjZTc3NWRhYmM0NzE4ZDQzZjg4ZTM2ZjVmNTBmZWU0Li4y
NWE0ZTI5MTI3NGVlMDM2OWZkZDE2ZWUwMDVjMmM5NWY5ZmFmMjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSArMjQs
NSBAQAogICovCiAKIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IHsK
LURpZFBvc3RNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZv
RGF0YSBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFS
ZWZlcmVuY2UgbWVzc2FnZSkgV2FudHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJh
bWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNl
IG1lc3NhZ2UpIFdhbnRzQ29ubmVjdGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXggMjQ4MTgyZDgwOTIxZmUxYTE5ZTVj
NjM0YjE2YTI0YzdjN2QxNzZlZi4uMWU5MWFiYjZlZmRkMGNkNTk2Zjk0ZGFjZThmNzI2OGUzMTg0
YTVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwCkBAIC02NiwxMCArNjYsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1T
Y3JvbGxFdmVudFJhdGlvRm9yU3dpcGUgPSAwLjU7CiBzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVT
bmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uID0gMC41OwogI2VuZGlm
CiAKLXN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmll
d0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkKK3N0YXRpYyBIYXNoTWFwPFBhZ2VJZGVu
dGlmaWVyLCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0Zv
ckFsbFBhZ2VzKCkKIHsKICAgICAvLyBUaGUga2V5IGluIHRoaXMgbWFwIGlzIHRoZSBhc3NvY2lh
dGVkIHBhZ2UgSUQuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3Qs
IFZpZXdHZXN0dXJlQ29udHJvbGxlcio+PiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKICAgICByZXR1cm4gdmlld0dlc3R1
cmVDb250cm9sbGVycy5nZXQoKTsKIH0KIApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgVmlld0dl
c3R1cmVDb250cm9sbGVyOjpjb25uZWN0VG9Qcm9jZXNzKCkKICAgICBtX2lzQ29ubmVjdGVkVG9Q
cm9jZXNzID0gdHJ1ZTsKIH0KIAotVmlld0dlc3R1cmVDb250cm9sbGVyKiBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JHZXN0dXJlKHVpbnQ2NF90IHBhZ2VJRCwgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpHZXN0dXJlSUQgZ2VzdHVyZUlEKQorVmlld0dlc3R1cmVDb250cm9sbGVy
KiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JHZXN0dXJlKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJlSUQgZ2VzdHVyZUlEKQog
ewogICAgIGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID0gdmlld0dlc3R1cmVDb250cm9sbGVy
c0ZvckFsbFBhZ2VzKCkuZmluZChwYWdlSUQpOwogICAgIGlmIChnZXN0dXJlQ29udHJvbGxlckl0
ZXIgPT0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZW5kKCkpCkBAIC01NDcs
NyArNTQ3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmZvcmNlUmVwYWludElmTmVl
ZGVkKCkKIAogICAgIG1faGFzT3V0c3RhbmRpbmdSZXBhaW50UmVxdWVzdCA9IHRydWU7CiAKLSAg
ICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBhdXRvIHBh
Z2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJlSUQg
PSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgbV93ZWJQYWdlUHJveHkuZm9yY2VSZXBhaW50KFZv
aWRDYWxsYmFjazo6Y3JlYXRlKFtwYWdlSUQsIGdlc3R1cmVJRF0gKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXIgPSBjb250cm9s
bGVyRm9yR2VzdHVyZShwYWdlSUQsIGdlc3R1cmVJRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDQzMWMyNzY2ZDA4MjYxZTUyY2Vm
YjIwNmQ2Y2QyOTliMTJjZjEzOTQuLmMxNjcwZDNhOTRjZWYzZDkwNmFmNDk0OWNkNTQxMzYwNDk0
NzYzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
bG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTE3NSw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgVmlld0dl
c3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyRm9yR2VzdHVyZSh1aW50NjRfdCBwYWdlSUQsIEdl
c3R1cmVJRCk7CisgICAgc3RhdGljIFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxlckZv
ckdlc3R1cmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEdlc3R1cmVJRCk7CiAKICAgICBzdGF0
aWMgR2VzdHVyZUlEIHRha2VOZXh0R2VzdHVyZUlEKCk7CiAgICAgdm9pZCB3aWxsQmVnaW5HZXN0
dXJlKFZpZXdHZXN0dXJlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9WaXNpdGVkTGlua1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRM
aW5rU3RvcmUuY3BwCmluZGV4IGYyZTdiOTM0MDU3NjZlYTVlOGM3NWVhYmY1YWM2YTRmZDRjMDRk
ZWUuLjk5MWRjMmZjZmY5ZDQzYzVlMDg3Njg2NGNjMjgwNDM4ZDllMzRhMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDksNyArMTA5LDcg
QEAgdm9pZCBWaXNpdGVkTGlua1N0b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdl
YlByb2Nlc3NQcm94eSYsIElQQzo6Q29ubmUKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQog
Ci12b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgU2hhcmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkKK3ZvaWQgVmlzaXRlZExpbmtT
dG9yZTo6YWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBT
aGFyZWRTdHJpbmdIYXNoIGxpbmtIYXNoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkg
PSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKSkgewogICAgICAgICBpZiAoIXdlYlBh
Z2VQcm94eS0+YWRkc1Zpc2l0ZWRMaW5rcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZS5oCmluZGV4IDA2ZjIwYmE5MWNiZGJiYTI2Nzk1ZjM4YzYwYzgxYjY4ZDgx
NzU5YTUuLjAyYjQ5YmFjNTVlMjQ4NmJkM2U4OWE5ZWU4OGVhODgzMzZmMWVmYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmgKQEAgLTY3LDcgKzY3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVTaGFyZWRNZW1vcnkoKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFVwZGF0ZVNoYXJlZFN0cmluZ0hhc2hlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaD4mIGFkZGVkSGFzaGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2hh
cmVkU3RyaW5nSGFzaD4mIHJlbW92ZWRIYXNoZXMpIGZpbmFsOwogCi0gICAgdm9pZCBhZGRWaXNp
dGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlNoYXJlZFN0cmlu
Z0hhc2gpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gpOwogCiAgICAgdm9pZCBzZW5k
U3RvcmVIYW5kbGVUb1Byb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCmluZGV4IGU3
ODYyZTM2NWIwZmZlMTM5MTQ2M2MwMDcwNjFkN2U3ZjhmOGQ1NGIuLjJlNjZjNDI4MDhlYmI3ZWJj
ZjM5MzE5YjEwODZhOTI3ZjMzMTM2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbgpAQCAtMjEsNSArMjEsNSBAQAogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBWaXNpdGVkTGlua1N0b3JlIHsKLSAgICBBZGRWaXNp
dGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGxpbmtIYXNoKQor
ICAgIEFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgdWludDY0X3QgbGlua0hhc2gpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCA2NTZjOGRjYzU5YzRhZWJjZjEzNmQ3MGM3ZjQwMGY5Nzc2ODFkNTBj
Li4xZjMyMTAwM2M3ZjkyYmMxN2NmMWI3ODMyYjcxZDk5MjAyYTYxNmY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4MSwxMiArMzgxLDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpmb3JNb3N0VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc2VsZWN0ZWRQYWdlKTsK
IH0KIAotUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUGFnZVBy
b3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pKSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBS
ZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQobWFrZVdlYWtQdHIocGFnZUNs
aWVudCkpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKICAg
ICAsIG1fbmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVu
dD4oKSkKQEAgLTQzNSw3ICs0MzUsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogI2VuZGlm
CiAgICAgLCBtX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJldlYlBhZ2VQcm94eTo6cmVzZXRSZWNlbnRDcmFzaENvdW50KQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb25zdHJ1Y3Rvcjogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5kcmF3
c0JhY2tncm91bmQoKSkKICAgICAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6
dHJhbnNwYXJlbnQpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVBy
b3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWlu
CiAKIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MtPndlYlBhZ2UobV9wYWdlSUQp
ICE9IHRoaXMpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4pCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBBU1NFUlQoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibGF1bmNoUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1By
b3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRCk7CkBAIC03NjMsNyArNzYzLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3Bl
bmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJy
ZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBp
ZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgYXV0byBzdXNwZW5k
ZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3By
b2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50
ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAKLSAgICBMT0coUHJvY2Vzc1N3YXBw
aW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMg
Zm9yIHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQo
KSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7
CisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVh
dGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0
ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCkudG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2lu
Z1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJv
bUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CiAKICAgICAvLyBJZiB0aGUgY2xpZW50
IGZvcmNlZCBhIHN3YXAgdGhlbiBpdCBtYXkgbm90IGJlIHdlYi1jb21wYXRpYmxlIHRvIGtlZXAg
dGhlIHByZXZpb3VzIHBhZ2UgYmVjYXVzZSBvdGhlciB3aW5kb3dzIG1heSBoYXZlIGFuIG9wZW5l
ciBsaW5rIHRvIGl0LiBXZSB0aHVzIGNsb3NlIGl0IGFzIHNvb24gYXMgd2UKICAgICAvLyBjYW4g
ZG8gc28gd2l0aG91dCBmbGFzaGluZy4KQEAgLTc4MSw3ICs3ODEsNyBAQCBib29sIFdlYlBhZ2VQ
cm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIE9wdAogdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4m
JiBkcmF3aW5nQXJlYSwgUmVmUHRyPFdlYkZyYW1lUHJveHk+JiYgbWFpbkZyYW1lKQogewogICAg
IEFTU0VSVCghbV9pc0Nsb3NlZCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAic3dhcFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAic3dhcFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKIAogICAgIG1fcHJvY2VzcyA9IFdURk1vdmUocHJvY2Vzcyk7CiAgICAgbV93
ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CkBAIC04NzMs
MTAgKzg3MywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vz
cygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vz
c0ZvclJlbG9hZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1
bmNoUHJvY2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2Ug
aXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQ6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICAKQEAgLTg4NSw3ICs4ODUsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogICAgIGxhdW5jaFByb2Nlc3MocmVn
aXN0cmFibGVEb21haW4pOwogCiAgICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0
ZW0oKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQ
cm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJv
Y2Vzc0ZvclJlbG9hZDogbm8gY3VycmVudCBpdGVtIHRvIHJlbG9hZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC05MDAs
MTAgKzkwMCwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5j
aFByb2Nlc3NGb3JSZWxvYWQoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxhdW5jaFByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRo
SXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiBwYWdlIGlzIGNsb3NlZDogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxh
dW5jaFByb2Nlc3NXaXRoSXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtOTU2LDcgKzk1
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNs
b3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJjbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1faXNDbG9z
ZWQgPSB0cnVlOwogCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5
Q2xvc2UoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5
Q2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICAvLyBDbG9zZSB3aXRo
b3V0IGRlbGF5IGlmIHRoZSBwcm9jZXNzIGFsbG93cyBpdC4gT3VyIGdvYWwgaXMgdG8gdGVybWlu
YXRlCiAgICAgLy8gdGhlIHByb2Nlc3MsIHNvIHdlIGNoZWNrIGEgcGVyLXByb2Nlc3Mgc3RhdHVz
IGJpdC4KQEAgLTEwNzcsNyArMTA3Nyw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAg
aWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC51cmwoKSB9
KTsKQEAgLTEwOTEsNyArMTA5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3Bh
Z2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMTEyMCwxMCArMTEyMCwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2NlcwogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNs
b3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTMyLDcgKzEx
MzIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiAgICAgVVJMIGZpbGVVUkwgPSBVUkwo
VVJMKCksIGZpbGVVUkxTdHJpbmcpOwogICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgpKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxl
IGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC0xMTQyLDcgKzExNDIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGVsc2Ugewog
ICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3Rv
cnlVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxG
aWxlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNv
dXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTcyLDEwICsx
MTcyLDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5h
dmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAg
LTEyMTUsMTMgKzEyMTUsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmln
YXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1s
RGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBV
UkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5h
dGVIVE1MOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgLy8gV2hlbiB0aGUg
VUlQcm9jZXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNp
b25hbCBsb2FkLCBkbyBub3QgYXR0ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVy
bmF0aXZlIEhUTUwgbG9hZCBhcyB0aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRl
IGZyb20gYmVpbmcKICAgICAvLyBoYW5kbGVkIHByb3Blcmx5LgogICAgIGlmIChtX2lzQ2xvc2Vk
IHx8IG1faXNMb2FkaW5nQWx0ZXJuYXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExv
YWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVy
bmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhlcik6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRN
TDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1OCwxMCArMTI1OCwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBodG1sRGF0YSwgY29uc3QgUwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVE
YXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRXZWJBcmNoaXZlRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQp
OworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2
ZURhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjg1LDEwICsxMjg1LDEwIEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJ
OjpPYmplY3QqIHVzCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhT
aW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQ
b2ludCwgSW50UG9pbnQgc2NyZWVuUG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRl
VG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMg
Y2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMg
Y2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xMzA0LDEwICsxMzA0LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0
ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJzdG9wTG9hZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3RvcExvYWRpbmc6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtX
aXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzIxLDcgKzEzMjEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9u
PiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlbG9h
ZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAicmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAKQEAgLTEzOTgsNyArMTM5
OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3
YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiBpdGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJk
SXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBMT0coTG9hZGluZywgIldl
YlBhZ2VQcm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywg
aXRlbS51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKQEAgLTE0MjAsMTAgKzE0MjAsMTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlS
ZXN0b3JlU2Nyb2xsUG9zaXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxp
ZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1
NTAsNyArMTU1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckluc3BlY3RvclRhcmdldHMo
KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCiB7Ci0gICAg
U3RyaW5nIHBhZ2VUYXJnZXRJZCA9IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQpOworICAg
IFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0
KHBhZ2VUYXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0K
IApAQCAtMjg3Myw3ICsyODczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0
b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5z
ZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgQVNTRVJUKG1f
cHJvdmlzaW9uYWxQYWdlKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJj
b21taXRQcm92aXNpb25hbFBhZ2U6IHByZXZpb3VzUElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNp
b25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBw
cmV2aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBPcHRpb25hbDx1
aW50NjRfdD4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFr
ZU9wdGlvbmFsKG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OwogCkBAIC0y
OTEzLDcgKzI5MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdl
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQ
YWdlUHJveHksIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNT
dXNwZW5kZWRQYWdlID0gJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94
eSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0
aW9uSW5OZXdQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIG5ld1By
b2Nlc3NQSUQgPSAlaSwgaGFzU3VzcGVuZGVkUGFnZSA9ICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250
aW51aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIs
IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsK
IAogICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkgewpAQCAtMzA3NCw3ICszMDc0LDcgQEAgU2Vz
c2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAo
V2ViQmFja0ZvcndhcmRMaXN0SXQKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlLCBi
b29sIG5hdmlnYXRlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJl
c3RvcmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fc2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVyVHJl
ZVNpemUgPSAwOwogICAgIG1faGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQgPSBmYWxzZTsKQEAg
LTM5MzIsOCArMzkzMiw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICBpZiAoZnJhbWUt
PmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gbmF2
aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAgTE9HKExvYWRp
bmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9u
SUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1fcGFnZUlELCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBm
cmFtZUlEKTsKKyAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBw
cm9jZXNzIHBpZCAlaSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQg
JSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQu
dG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdh
dGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAog
ICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIApA
QCAtMzk4NSw3ICszOTg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGYKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFt
ZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZyYW1l
SUQsIG5hdmlnYXRpb25JRCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwg
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJ
RCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC00MDE0LDcgKzQwMTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPAogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNr
Rm9yd2FyZExpc3QpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFn
ZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDAyNyw3ICs0
MDI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHIKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZv
ckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENhbmNlbENsaWVudFJl
ZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQwNzQsOCArNDA3NCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcp
IFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQsIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkp
OwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRh
dGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdl
YlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQudG9VSW50
NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgp
LmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9y
LmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQxNDEsOSArNDE0
MSw5IEBAIHN0YXRpYyBib29sIGlzTm9uVW5pcXVlTmF2aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlv
bihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEgcmVxCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBP
cHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQ
cm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQ
Ukl1NjQsIG1fcGFnZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRp
bmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2
aWdhdGlvbiAlIiBQUkl1NjQsIG1fcGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAg
ICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJh
Y2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3Ry
aW5nKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENvbW1pdExv
YWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2Fk
Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VD
bGllbnQoKSk7CiAKQEAgLTQyNTQsNyArNDI1NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3Rv
ciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI3OCw3ICs0Mjc4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmkKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZEZpbmlz
aExvYWRGb3JGcmFtZSAtIFdlYlBhZ2VQcm94eSAlcCB3aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1
NjQgIiBkaWRGaW5pc2hMb2FkIiwgdGhpcywgbmF2aWdhdGlvbklEKTsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MzIzLDcg
KzQzMjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JG
cmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELCBmcmFtZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBl
cnJvci5lcnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
ZGlkRmFpbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9y
LmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQzNjUsNyArNDM2
NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBV
UkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC00NTM1LDcgKzQ1MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5T
YWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxpc3Rlbgog
I2VuZGlmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwKLSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
IHsKICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQobV9wcm9j
ZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgaWRl
bnRpZmllciwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwKQEAg
LTQ1NDMsNyArNDU0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yCiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLAotICAgIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0
X3QgbGlzdGVuZXJJRCkKIHsKQEAgLTQ1NTksNyArNDU1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViRnJhbWVQcm94eSYgZnJh
bWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwKLSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisg
ICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZv
RGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xp
Y3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMs
IGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAt
NDY5OSw3ICs0Njk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgaWYgKCFm
cm9tQVBJICYmIG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZyYW1lKQogICAgICAgICAgICAgc291cmNl
RnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm8uY29weVJlZigpOwogICAgICAgICBlbHNl
IGlmICghZnJvbUFQSSkKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/
IHByb2Nlc3MtPndlYlBhZ2Uob3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CisgICAgICAg
ICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKCpvcmln
aW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyKTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRB
Y3Rpdml0eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9u
RGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgIGJvb2wgc2hvdWxkT3Bl
bkFwcExpbmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbgpAQCAtNDc3Miw3ICs0NzcyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ0Zy
YW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWcK
ICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
RGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewpAQCAtNDc5MCw3ICs0NzkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJv
b2wgaXMKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3Qg
ZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0g
ICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
RGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAg
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpA
QCAtNDkyMyw3ICs0OTIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5h
dmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUs
IHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTQzLDcgKzQ5
NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0
IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAK
ICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00
OTcwLDcgKzQ5NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9y
bVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMTgsMTQgKzUw
MTgsMTQgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzYKICNlbmRpZgog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRh
JiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVz
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0Zl
YXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwotICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFt
ZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
bV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKSk7CisgICAgYXV0byBvcmlnaW5h
dGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IG1fcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRp
bmdQYWdlSUQpIDogbnVsbHB0cik7CiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFt
ZSA/IG1fbWFpbkZyYW1lLT51cmwoKSA6IFVSTCgpOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkws
IHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVByb3h5PiBu
ZXdQYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0gICAgICAgICAgICBy
ZXBseSgwLCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgcmVwbHkoV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTU4MzQs
NyArNTgzNCw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2VJRDsKKyAgICByZXR1
cm4gbV9wYWdlSUQudG9VSW50NjQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hh
bmdlZEZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJ
bmRleCkKQEAgLTY3MTUsNyArNjcxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZVNldExh
cmdlc3RGcmFtZUNoYW5nZWQodWludDY0X3QgZnJhbWVJRCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRC
ZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY3MjcsNyArNjcy
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkK
IAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9u
c2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNmM1YWQ2MjVkMTIwNGM3
YzBkODM5Njk5ZTdlMmY2NWE1YmE2NGUwMy4uYWIzZTU5N2Q2MDQzNjk3Mjc2M2EwYjg5MjlkYzI4
YzdhMzUxMTliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgy
LDYgKzgyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVByb2R1Y2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmg+CkBAIC0zODIsMTQgKzM4MywxNCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogI2VuZGlmCiAgICAg
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGFnZVByb3h5PiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5
JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAg
c3RhdGljIFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1By
b3h5JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAogICAgIHN0YXRpYyB2b2lkIGZv
ck1vc3RWaXNpYmxlV2ViUGFnZUlmQW55KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlBhZ2VQcm94eSop
PiYmKTsKIAogICAgIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24o
KSBjb25zdDsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSUQ7IH0KIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCkBA
IC0xNTAyLDcgKzE1MDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlJiwgdWludDY0X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92
aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKLSAgICAgICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9E
YXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCisg
ICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJh
bWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwKICAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAogICAgICAgICB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmKTsKQEAgLTE1MTEsNyArMTUxMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRS
ZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpO
YXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
ID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYp
PiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJh
bWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwK
LSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisg
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSk7CkBAIC0xNTUxLDcgKzE1NTIsNyBAQCBXRUJQQUdFUFJPWFlf
TE9BRE9QVElNSVpFUl9BRERJVElPTlNfMQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBj
dXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVu
dERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogCiBwcml2YXRlOgotICAgIFdlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQ
YWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQ
cm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKICAgICB2b2lk
IG5vdGlmeVByb2Nlc3NQb29sVG9QcmV3YXJtKCk7CkBAIC0xNjI3LDEzICsxNjI4LDEzIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9u
SUQpOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAg
ICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAg
ICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+
JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2
NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlz
dGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1
aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAg
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBV
c2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBA
IC0xNjU1LDcgKzE2NTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRp
dGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBmcmFt
ZUlEKTsKIAogICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBG
cmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVw
bHkmJik7CisgICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxh
eWVkUmVwbHkmJik7CiAgICAgdm9pZCBzaG93UGFnZSgpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlw
dEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRB
bGVydDo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0odWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3Qg
U3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRl
bGF5ZWRSZXBseSYmKTsKQEAgLTIzMjcsNyArMjMyOCw3IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BU
SU1JWkVSX0FERElUSU9OU18yCiAgICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU+
IG1fdmFsaWRhdGlvbkJ1YmJsZTsKICNlbmRpZgogCi0gICAgY29uc3QgdWludDY0X3QgbV9wYWdl
SUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBi
b29sIG1faXNQYWdlU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zpc2l0ZWRM
aW5rcyB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCA2ZmNlY2RjNmI2NWQ4OGM5Yzk4NTg1Mzk1YWI1OWU3ZDgxMjZi
YTA2Li5iMWU3OTkyMjNiZmM5OWMzZmQyYjUyNWZmN2U4OTI0NjQ5NTcxN2NhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw3
ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBVSSBtZXNzYWdl
cwotICAgIENyZWF0ZU5ld1BhZ2Uoc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzIHdp
bmRvd0ZlYXR1cmVzLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSkgLT4gKHVpbnQ2NF90IG5ld1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXdQYWdlUGFyYW1ldGVycykgU3luY2hyb25vdXMK
KyAgICBDcmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhKSAtPiAoT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBuZXdQYWdlUGFyYW1ldGVycykgU3luY2hyb25vdXMKICAgICBTaG93
UGFnZSgpCiAgICAgQ2xvc2VQYWdlKGJvb2wgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIpCiAgICAg
UnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgp
IFN5bmNocm9ub3VzCkBAIC0xMDQsOCArMTA0LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCiAgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
dWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNh
blNob3dNSU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3Ry
dWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0
cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RS
ZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
LSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlE
LCBib29sIGlzTWFpbkZyYW1lLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lD
aGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2
aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBw
b2xpY3lDaGVja0lkZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNp
dGVQb2xpY2llcykgU3luY2hyb25vdXMKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
cG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50
NjRfdCBsaXN0ZW5lcklEKQorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBz
dHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkgLT4gKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50
aWZpZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1
aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBP
cHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgU3lu
Y2hyb25vdXMKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxl
VG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwCmluZGV4IGM4
MDIzZGU0MTYxNjQ3NTAxMGY0MjgyMzlhN2JlZDA3YjE3Zjg1ZDcuLmY0OTcxNTFkNzVjNWU2ZjFm
Mjg2YWFhNzllOGE2NDdjNmE5ZjM2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
dm9pZCBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6YWRkV2ViUGFnZShXZWJQYWdlUHJveHkm
IHdlYlBhZ2VQcm94eSwgV2ViUHJvY2UKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvY2Vzcy5pc1By
ZXdhcm1lZCgpKTsKIAogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQoJnByb2Nlc3MpLmlzTmV3RW50
cnkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1l
T2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRo
aXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRv
VUludDY0KCkpOwogICAgICAgICB3ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHByb2Nlc3Ms
ICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAgICAgfQogCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQg
V2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3
ZWJQYWdlUHJveHksIFdlYlByCiAgICAgd2ViUGFnZURpZENsb3NlQ29ubmVjdGlvbih3ZWJQYWdl
UHJveHksICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAKICAgICBpZiAobV9wcm9jZXNzZXMucmVt
b3ZlKCZwcm9jZXNzKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQ
cm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdl
UHJveHkucGFnZUlEKCkpOworICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQ
cm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdl
UHJveHkucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgICAgIHdlYlByb2Nlc3NEaWRDbG9zZUNv
bm5lY3Rpb24ocHJvY2VzcywgKnByb2Nlc3MuY29ubmVjdGlvbigpKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMGUxMzlmMzBkOWNl
ZjlmNjMyMzNjNjEzYjVlNDJiY2RkNTk4ZWU2OC4uMGI4YjM0NWVmOGVmMzIyZjJmMjc1N2Q0ZWUz
N2JlZjlkMjcwYmIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcApAQCAtMTI5Niw5ICsxMjk2LDkgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJl
Z2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBXZWJzaXRlRGF0YVN0b3JlJiBzdG8KIH0KICNl
bmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3Rv
cmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFz
aFNldDx1aW50NjRfdD4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOworICAgIGF1dG8g
cmVzdWx0ID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmFkZChkYXRhU3RvcmUuc2Vzc2lvbklEKCks
IEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgYXV0
byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CkBAIC0xMzE2LDcgKzEzMTYsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWlu
dDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVE
YXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dl
YnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBk
YXRhU3RvcmUpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7
CiAgICAgYXV0byBpdGVyYXRvciA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Npb25J
RCk7CkBAIC0yMjExLDcgKzIyMTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVO
ZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmCiB9CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQ
cm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0X3Qg
cGFnZUlEKSBjb25zdAorU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Bvb2w6
OnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBmb3Ig
KGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZh
bHVlcygpKSB7CkBAIC0yNTE5LDcgKzI1MTksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVh
ckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGlu
ZygpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4s
IHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNvbW1pdHRlZENyb3NzU2l0
ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
RG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAxNjU1NDViMWEyZjg2ZWFhNGI4MzNjOTNh
YmU4MGRjOTBlZTUyNjMzLi4xN2UzZTgwMmJjNDUwMDhjMzg1MTBiYWY1ZDRlMTQzOTkzYzhiMWFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTE0OCw2ICsx
NDgsMTggQEAgcHVibGljOgogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZl
cik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAgIHJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRv
VUludDY0KCkpOworICAgIH0KIAogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOwpAQCAtMTkzLDggKzIwNSw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxXZWJQYWdlUHJveHk+
IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYm
KTsKIAotICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBh
Z2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYpOwotICAgIHZvaWQgcGFnZUVuZFVzaW5nV2Vic2l0ZURh
dGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICB2b2lkIHBh
Z2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
c2l0ZURhdGFTdG9yZSYpOworICAgIHZvaWQgcGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYpOwogICAgIGJvb2wgaGFz
UGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpIGNvbnN0OwogCiAg
ICAgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24tPmluamVjdGVkQnVuZGxlUGF0aCgpOyB9CkBAIC0zNjUsNyArMzc3LDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJv
eHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBPcHRpb25hbDxQQUw6OlNlc3Npb25J
RD4pOwotICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHlGcm9tUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CisgICAgU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2VydmljZVdvcmtl
clByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7IH0KICAg
ICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29sIGFs
bG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFsbG93
czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXI7
IH0KQEAgLTQ5Myw3ICs1MDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kRGlzcGxheUNvbmZp
Z3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcoKTsKICAgICB2b2lkIGNsZWFyQ3VycmVu
dE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCk7CiAKLSAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0
ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBjb21taXR0ZWRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHRvRG9tYWluLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICB2b2lkIHNldFNhbmRib3hFbmFibGVkKGJv
b2wgZW5hYmxlZCkgeyBtX3NhbmRib3hFbmFibGVkID0gZW5hYmxlZDsgfTsKQEAgLTc1OCw3ICs3
NzAsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGF0aHMgbV9yZXNvbHZlZFBhdGhzOwogCi0g
ICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDx1aW50NjRfdD4+IG1fc2Vzc2lvblRv
UGFnZUlEc01hcDsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPj4gbV9zZXNzaW9uVG9QYWdlSURzTWFwOwogICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYlByb2Nlc3NQb29sPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXNUZXJtaW5hdGlvblRp
bWVyOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDgyMDM0NjVjYjI4MTRkMmNmYzMyOGZhNzk0NjYy
YTIwZTAyYjQzMmMuLjY3ODMxZTIwNzgwOWMwZWM1YjYyOGFlYzBkMzkxMTE4MzVmMzEwZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTEwLDEw
ICsxMTAsOSBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0Zvcklk
ZW50aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZgogICAgIHJldHVybiBhbGxQcm9jZXNz
ZXMoKS5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXVpbnQ2NF90IFdlYlByb2Nlc3NQcm94eTo6Z2Vu
ZXJhdGVQYWdlSUQoKQorUGFnZUlkZW50aWZpZXIgV2ViUHJvY2Vzc1Byb3h5OjpnZW5lcmF0ZVBh
Z2VJRCgpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVBhZ2VJRDsKLSAgICByZXR1cm4g
Kyt1bmlxdWVQYWdlSUQ7CisgICAgcmV0dXJuIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwog
fQogCiBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAmIGdsb2JhbFBhZ2VN
YXAoKQpAQCAtMzMwLDcgKzMyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigp
CiAgICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3ModGhpcyk7CiB9CiAKLVdlYlBh
Z2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBh
Z2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQpAQCAtMzYzLDcg
KzM2Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVt
ZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAKIFJlZjxXZWJQYWdlUHJveHk+IFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8
QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJhdGlvbikKIHsKLSAgICB1aW50
NjRfdCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gZ2VuZXJh
dGVQYWdlSUQoKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5
OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwgV1RGTW92ZShwYWdlQ29uZmlndXJh
dGlvbikpOwogCiAgICAgYWRkRXhpc3RpbmdXZWJQYWdlKHdlYlBhZ2UuZ2V0KCksIEJlZ2luc1Vz
aW5nRGF0YVN0b3JlOjpZZXMpOwpAQCAtNDE1LDEwICs0MTQsMTAgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRzVXNpbmdEYXRh
U3RvcmUgZW4KICAgICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0
b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExp
bmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8mIHVzZXJzID0gbV92aXNpdGVkTGlua1N0b3Jlc1dp
dGhVc2Vycy5lbnN1cmUoJnZpc2l0ZWRMaW5rU3RvcmUsIFtdIHsKLSAgICAgICAgcmV0dXJuIEhh
c2hTZXQ8dWludDY0X3Q+IHsgfTsKKyAgICAgICAgcmV0dXJuIEhhc2hTZXQ8UGFnZUlkZW50aWZp
ZXI+IHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIXVzZXJzLmNv
bnRhaW5zKHBhZ2VJRCkpOwpAQCAtNDI4LDcgKzQyNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0
b3JlCiAgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUuYWRkUHJvY2VzcygqdGhpcyk7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlu
a1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nl
c3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlz
aXRlZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8gaXQgPSBt
X3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmZpbmQoJnZpc2l0ZWRMaW5rU3RvcmUpOwogICAg
IGlmIChpdCA9PSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmVuZCgpKQpAQCAtNTQxLDcg
KzU0MCw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVk
KCkKIH0KICNlbmRpZgogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdl
V2l0aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQ
cm92aXNpb25hbFBhZ2VXaXRoSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAg
IGZvciAoYXV0byogcHJvdmlzaW9uYWxQYWdlIDogbV9wcm92aXNpb25hbFBhZ2VzKSB7CiAgICAg
ICAgIGlmIChwcm92aXNpb25hbFBhZ2UtPnBhZ2UoKS5wYWdlSUQoKSA9PSBwYWdlSUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDlhNmNiZjFmNDYwOTlh
NWY2ZjlmYTJmMGVlOGE2ZmEyYzgxODE2YTguLmFkM2YwMzhkZDY1NDY1YzA0ODk5NzliNjdlNTg1
Yzg1NmY5MmRjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZFN0cmluZ0hhc2guaD4KQEAgLTk3LDcgKzk4LDcgQEAgZW51bSBjbGFzcyBBbGxvd1By
b2Nlc3NDYWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGlj
IEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVu
dCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJD
bGllbnQgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdl
YkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOworICAgIHR5cGVkZWYgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFw
OwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFQSTo6VXNlckluaXRpYXRl
ZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKICAgICBlbnVtIGNsYXNzIElzUHJl
d2FybWVkIHsKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJzaXRl
RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIHN0YXRpYyBXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKLSAg
ICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3Rh
dGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAg
UmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZW51bSBjbGFzcyBCZWdpbnNVc2luZ0RhdGFTdG9y
ZSA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0xNDksMTAgKzE1MCwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3ModWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3MoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlu
a1N0b3JlJiwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgYWRk
VmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5r
U3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFkZFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5JiwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CkBAIC0z
MTEsNyArMzEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ViUGFnZU1lZGlhU3RhdGVEaWRDaGFu
Z2UoV2ViUGFnZVByb3h5Jik7CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgdWludDY0X3QgZ2Vu
ZXJhdGVQYWdlSUQoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZ2VuZXJh
dGVQYWdlSUQoKTsKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRl
RGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQpOwogCiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
CkBAIC0zNTQsNyArMzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZUNvbnRleHRG
b3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKICNlbmRpZgog
Ci0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWludDY0X3QgcGFnZUlEKSBjb25z
dDsKKyAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0ZUJhY2tGb3J3YXJkSXRlbShX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7CiAKICAgICAvLyBQbHVnaW5zCkBAIC00NDcs
NyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFByb3Zpc2lvbmFsUGFnZVByb3h5Kj4g
bV9wcm92aXNpb25hbFBhZ2VzOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25NYXAgbV91c2VySW5p
dGlhdGVkQWN0aW9uTWFwOwogCi0gICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNl
dDx1aW50NjRfdC8qIHBhZ2VJRCAqLz4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7Cisg
ICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAgICAgSGFzaFNldDxXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGll
czsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcApp
bmRleCBlMzU1MzE5ZWE0YzRlZTY1MWM2YmVkZjdjODZmYmRkMjFmMjlkYzIzLi43ZDU3NWE0MDRi
MDQ1YjkxYWQ3YWM4ZTY2NzYwZDA4YmUzOGI5MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
V2ViVVJMU2NoZW1lSGFuZGxlcjo6dGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJiB0YXNr
KQogICAgIHBsYXRmb3JtVGFza0NvbXBsZXRlZCh0YXNrKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hl
bWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBhZ2VNYXAodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCB0YXNrSUQpCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFnZU1h
cChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCkKIHsKICAgICBhdXRvIGl0
ZXJhdG9yID0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZmluZChwYWdlSUQpOwogICAgIEFTU0VS
VChpdGVyYXRvciAhPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5lbmQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKaW5kZXggODk5NzZjNjFmODNk
NTJiODFmMmM0NDA3YzJjNWJiZDczYmYyYWU0OS4uYjdhZjA3NTk3NWYzMmI4YWI4NWU4OGQxYmFm
ZmIwNWExNzA1YTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZUhhbmRsZXIuaApAQCAtNjYsMTMgKzY2LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiwgV2ViVVJMU2NoZW1lVGFzayYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1UYXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2sm
KSA9IDA7CiAKLSAgICB2b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IHRhc2tJRCk7CisgICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJRCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzRm9yVGFza0lkZW50aWZpZXIodWludDY0X3QpIGNvbnN0OwogCiAgICAgdWludDY0
X3QgbV9pZGVudGlmaWVyOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVt
ZVRhc2s+PiBtX3Rhc2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIEhhc2hTZXQ8dWludDY0X3Q+
PiBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CiAgICAg
CiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBi
ODcyMDczYmQyNzgxZmYwOWI5YmYyNTMzMTYyYzA1YWE2OWMwM2ViLi5hOTdmMTYwY2YyNTU2ZmEx
MzhmNTJiZDgxNWYyM2U4ZWE2YzdlYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFdlYlVSTFNjaGVtZVRhc2s+IGNyZWF0ZShXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVBy
b3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB1aW50
NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgdWlu
dDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQorICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50
aWZpZXI7IH0KICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBt
X3Byb2Nlc3MuZ2V0KCk7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQpAQCAtODcsNyArODcsNyBAQCBw
cml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFJlZlB0cjxXZWJQcm9jZXNz
UHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Ci0gICAgdWludDY0
X3QgbV9wYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJ
ZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAg
Ym9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNwb25zZVNlbnQgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwYmY1MTEyYTllNGRiZTY0YjA3ODQ2NTBjMTkxMjkx
NmUwOTE5NTMzLi4wYThiMGMxMTIyNTViMDczZTBiNmJhYjg2NTMyYzQ4MzQ1YjNmOTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcApAQCAtMTU3Niw3ICsxNTc2LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlLCBDb21w
bGUKICAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Tm90aWZ5
UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9zZXNzaW9uSUQsIHZhbHVlLCBbcHJvY2Vz
c1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCld
IHsgfSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXModWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBh
Z2UocGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA2NDJlMzMw
OWQwNzYyNDNlMzdkOGUxZDI3NDY1YjExZjcxMmRiMGM4Li44MjJjM2ZjNzYzN2Q3YzVlYjAwM2M2
OWNlOTQ3NDViZDM4MjU5M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBl
cm1pc3Npb25TdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMTM1
LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgbG9n
VGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9u
KGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CisgICAgdm9pZCBnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAgICB2b2lkIGhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0
ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAppbmRleCBkYzhkNTNjYWZi
YjYzYjE2YTc4Y2E2ODVkZDc0ZmFiN2M0MWQyYWNmLi4yODkyMzczNTkxYTJlNjllMDFlNGMzZDJi
Njg5NWViMzY2YmFhZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2F5bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
YXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry
dWN0IHdsX2NvbXBvc2l0b3JfaW50ZXJmYWNlIGNvbXBvc2l0b3JJbnRlcmZhY2UgPSB7CiAKIHN0
YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfd2Via2l0Z3RrX2ludGVyZmFjZSB3ZWJraXRndGtJbnRlcmZh
Y2UgPSB7CiAgICAgLy8gYmluZFN1cmZhY2VUb1BhZ2VDYWxsYmFjawotICAgIFtdKHN0cnVjdCB3
bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1Y3Qgd2xfcmVzb3Vy
Y2UqIHN1cmZhY2VSZXNvdXJjZSwgdWludDMyX3QgcGFnZUlEKQorICAgIFtdKHN0cnVjdCB3bF9j
bGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1Y3Qgd2xfcmVzb3VyY2Uq
IHN1cmZhY2VSZXNvdXJjZSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIHsK
ICAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpT
dXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShzdXJmYWNlUmVzb3VyY2UpKTsKICAg
ICAgICAgaWYgKCFzdXJmYWNlKQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIGJvb2wgV2F5bGFuZENvbXBv
c2l0b3I6OmdldFRleHR1cmUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCB1bnNpZ25lZCYgdGV4dHVy
ZSwgSW50CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdheWxhbmRDb21wb3NpdG9yOjpi
aW5kU3VyZmFjZVRvV2ViUGFnZShXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZSogc3VyZmFjZSwg
dWludDY0X3QgcGFnZUlEKQordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6YmluZFN1cmZhY2VUb1dl
YlBhZ2UoV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqIHN1cmZhY2UsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBudWxscHRy
OwogICAgIGZvciAoYXV0byogcGFnZSA6IG1fcGFnZU1hcC5rZXlzKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKaW5kZXggMTQ4MTlmOGZh
YzRlYzgwMjMwYmEyY2JiYjE4ZTZkMDk1OWI5Zjg0YS4uMmQ3ODBmZmIxMjU3ZDQ5ZjA4ZGVhOWEx
ODY4YThhNDMyYzYxYmU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1dheWxhbmRDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dh
eWxhbmRDb21wb3NpdG9yLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiAhIW1fZGlzcGxheTsgfQogICAgIFN0cmluZyBkaXNw
bGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0KIAotICAgIHZvaWQgYmlu
ZFN1cmZhY2VUb1dlYlBhZ2UoU3VyZmFjZSosIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBi
aW5kU3VyZmFjZVRvV2ViUGFnZShTdXJmYWNlKiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYpOwogICAgIHZvaWQgdW5yZWdp
c3RlcldlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCmluZGV4IDA4M2Q2ZmFm
MTUyMDFmOGNlYzRkMDI4YmEzMDk4OGI3YWNhNzUwZDQuLmNlZmRlNjFjNDliNTJhY2Q2ZjA4OTA4
ODIwNmI4ZDY2Yzc1NTAyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZv
aWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShfVUlOYXZpZ2F0aW9u
SW50ZXJhY3RpdmVUcmFuc2l0aW9uCiAgICAgICAgIGlmIChmaW5pc2gpCiAgICAgICAgICAgICBt
X3dlYlBhZ2VQcm94eUZvckJhY2tGb3J3YXJkTGlzdEZvckN1cnJlbnRTd2lwZS0+bmF2aWdhdGlv
bkdlc3R1cmVXaWxsRW5kKHRyYW5zaXRpb25Db21wbGV0ZWQsICp0YXJnZXRJdGVtKTsKICAgICB9
XTsKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBh
dXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwogICAgIEdlc3R1cmVJRCBnZXN0
dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgW21fc3dpcGVUcmFuc2l0aW9uQ29udGV4
dCBfc2V0Q29tcGxldGlvbkhhbmRsZXI6W3BhZ2VJRCwgZ2VzdHVyZUlELCB0YXJnZXRJdGVtXSAo
X1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4dCAqY29udGV4dCwgQk9PTCBkaWRDb21w
bGV0ZSkgewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxlciA9IGNvbnRyb2xsZXJG
b3JHZXN0dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIHRhcmdldEl0ZW0sCiAgICAgICAgIG1fd2ViUGFnZVByb3h5LmRpZENoYW5nZUJhY2tncm91
bmRDb2xvcigpOwogICAgIH0KIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAg
ICAgR2VzdHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBtX2xvYWRD
YWxsYmFjayA9IFt0aGlzLCBwYWdlSUQsIGdlc3R1cmVJRF0gewogICAgICAgICBhdXRvIGRyYXdp
bmdBcmVhID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxEcmF3aW5nQXJlYSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmNwcAppbmRleCBmZjQ0OTM0MWQ5ZTQ0MmZjMTYyZTQxNTQ0YjM4NWIxN2MwNTNh
MDM4Li41N2YzZmUxNzNjY2Q5NTE3MzY0MmExOTVlN2NmZDEwMTg4Njk4OGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5
bWVudENvb3JkaW5hdG9yOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2
NF90IFdlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBj
b25zdAogewotICAgIHJldHVybiBtX3dlYlBhZ2UucGFnZUlEKCk7CisgICAgcmV0dXJuIG1fd2Vi
UGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
cjo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGIxY2JjOTYzYjBlZmNjODUyNDky
ZDk2OGQ5ZWFhYzMxODI4ZTE1MmIuLjQ1NGNhNmJjODQ0OTgzZjU5OThmZmVlNGRhMzc0Y2NmY2M2
MjI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC0yMzEsNyArMjMx
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRDbGVhcldpbmRvd09iamVj
dEZvckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb246OkRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNhbGxiYWNrSUQsIGVycm9y
TWVzc2FnZSwgZXJyb3JUeXBlKSwgMCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVu
dHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGlt
ZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1
bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNr
VGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpA
QCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGlkRXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgZnJhbWVJRCwKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJh
Y2tJRCwgcmVzdWx0LCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFs
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtMzUwLDcgKzM1
MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVX
aXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
OjpudWxsb3B0LCBjaGlsZEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRG
cmFtZVdpdGhOb2RlSGFuZGxlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQ
YWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAg
IGlmICghcGFnZSkgewpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQs
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBmcmFtZUZyb21FbGVtZW50LT5m
cmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVD
aGlsZEZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
dWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdl
SUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBjaGlsZEZyYW1l
LT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29s
dmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJh
bWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBwYXJl
bnRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojpmb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKK3ZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6Zm9jdXNGcmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpCkBAIC01MjcsNyArNTI3
LDcgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udmVydFBvaW50RnJvbUZyYW1lQ2xp
ZW50VG9Sb290VmlldyhXZWJDb3JlOjpGcmFtZVYKICAgICByZXR1cm4gY2xpZW50UG9pbnQ7CiB9
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9v
bCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0
ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50
UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlv
dXQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhh
bmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtIGNvb3Jk
aW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2Vi
Q29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNjM1LDcgKzYzNSw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpu
dWxsb3B0LCByZXN1bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdDZW50ZXJQb2ludCwgaXNP
YnNjdXJlZCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0
aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRp
b25FbGVtZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTcwMyw3ICs3
MDMsNyBAQCBzdGF0aWMgV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90
KFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6OkVsZW1lbgogICAgIHJldHVybiB7IH07CiB9CiAKLXZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdChQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogCkBAIC03NTEs
NyArNzUxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hv
dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFuZGxlLCB7IH0p
LCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9y
RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2ll
c0ZvckZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTc3
Niw3ICs3NzYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNG
b3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYQogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bnVsbG9wdCwgZm91bmRDb29raWVzKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpkZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6ZGVsZXRlQ29va2llKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAppbmRleCA2Mjk1NDFkMjBiYTEwZGY2MmRhMWUyNjA5
MTY0ZWFjODkyYmEwZDEzLi4xMTY3NjQ1Mjc3ZGJjMTkzMGE1YTdhNTk3ZGNiYzJkZjNlY2Y1NWM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVTeXN0ZW0uaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTYwLDE3ICs2MSwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBDYWxsZWQgYnkgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBtZXNzYWdlcwotICAgIHZv
aWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMs
IGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91
dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhP
cmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5h
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYp
OwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQg
cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgZm9jdXNGcmFtZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpOwotICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlv
dXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwg
Ym9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFs
PFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYpOwotICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxl
bWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKLSAgICB2b2lk
IHRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3
cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRDb29raWVzRm9yRnJhbWUo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJik7Ci0gICAgdm9p
ZCBkZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
Y29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7
CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0
cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGlu
dCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2
ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRo
Tm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1l
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3Qp
PiYmKTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgZm9jdXNGcmFtZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgdWludDY0X3QgZnJhbWVJRCk7CisgICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91
dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBP
cHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmKTsKKyAgICB2b2lkIHNlbGVjdE9w
dGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4p
PiYmKTsKKyAgICB2b2lkIHRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1
aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIGdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
ZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CiAKICAgICBTdHJpbmcgbV9z
ZXNzaW9uSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggYWExMjE5ZTJlZjFmYzA3MDA0NTk2ZDI0YTFiNTcxNmQzMDZmNzhi
ZS4uZDcyZjg5ZDI2MzU5Y2YwMWNjZmQ1MzFlOTZlMDFmNDQ0MDlhYWY1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSwyMSArMjEsMjEg
QEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eSB7Ci0gICAgRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywg
Ym9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0
LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGZ1
bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2Fs
bGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
IAotICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRo
Tm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQp
IEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5
cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JU
eXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE9y
ZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1
aW50MzJfdCBvcmRpbmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90
IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQp
IEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8
U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZVBh
cmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3lu
YwogCi0gICAgRm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCisg
ICAgRm9jdXNGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQpCiAKLSAgICBDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVk
ZWQsIGVudW06dWludDhfdCBXZWJLaXQ6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3Rl
bSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qs
IE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCBpc09i
c2N1cmVkKSBBc3luYworICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0ZVN5
c3RlbSBjb29yZGluYXRlU3lzdGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdl
YkNvcmU6OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0Nl
bnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIEFzeW5jCiAKLSAgICBTZWxlY3RPcHRpb25FbGVt
ZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUp
IC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBTZWxlY3RPcHRpb25F
bGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMK
IAotICAgIFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlw
VG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBUYWtlU2NyZWVuc2hvdChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIEFzeW5jCi0gICAgRGVsZXRlQ29va2ll
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+
IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBHZXRDb29raWVzRm9yRnJh
bWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAo
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tp
ZXMpIEFzeW5jCisgICAgRGVsZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChPcHRpb25hbDxTdHJp
bmc+IGVycm9yVHlwZSkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNw
cAppbmRleCBlNTdlMmU3N2U1NTg0OGU4YmE3MjVmOWQzMjI3NzA5ZmZmMTc4YWZmLi5jZmM1MDMx
ZWQ2ZTRhMjk1NGZlMDJhMDNkYTg3YTE2MWNkMmQzMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYlBhZ2UuY3BwCkBAIC03NjMsNyArNzYzLDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2ViX3Bh
Z2VfZ2V0X2lkKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpLCAwKTsKIAotICAgIHJldHVybiB3ZWJQ
YWdlLT5wcml2LT53ZWJQYWdlLT5wYWdlSUQoKTsKKyAgICByZXR1cm4gd2ViUGFnZS0+cHJpdi0+
d2ViUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcAppbmRleCBhZTM4ODNkODZiNjg5ZTY2NmYxNmFjZWY5MDE2NzI5NGU1ZDI3ODdjLi5h
Zjg5ZDc4ODE2M2YyNjE1M2YwZDU2MmEzNGJkOTYyOGE1YjQ3NjQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAg
ICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UoZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCkpKQorICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAgICAgICAgd2ViUGFn
ZS0+ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDA0YWUwZTQ1ZDVlOWQyOWNhMGYyNzBh
MDY0MThhNmFiMmQ1MDFmY2IuLjI3OGI2MDE4NDc5ZjM2NTkwMzQ4Yzg5NTE4NTVhY2Y0M2RjYjU5
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRS
ZXNvdQogICAgIGF1dG8mIGZyYW1lTG9hZGVyQ2xpZW50ID0gcmVzb3VyY2VMb2FkZXIuZnJhbWVM
b2FkZXIoKS0+Y2xpZW50KCk7CiAKICAgICBXZWJSZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJh
bWV0ZXJzIHRyYWNraW5nUGFyYW1ldGVyczsKLSAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
ID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVPcigwKTsKKyAgICB0cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVPcihQYWdl
SWRlbnRpZmllciB7IH0pOwogICAgIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlEID0gZnJhbWVM
b2FkZXJDbGllbnQuZnJhbWVJRCgpLnZhbHVlT3IoMCk7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJz
LnJlc291cmNlSUQgPSBpZGVudGlmaWVyOwogICAgIGF1dG8gc2Vzc2lvbklEID0gZnJhbWVMb2Fk
ZXJDbGllbnQuc2Vzc2lvbklEKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJMb2FkZXJT
dHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2Fj
aGVkUmVzb3UKICAgICAvLyB0aGVuIHdlIHNob3VsZCByZW1lbWJlciB0aGUgUmVzb3VyY2VMb2Fk
ZXIgaW4gb3VyIHJlY29yZHMgYnV0IG5vdCBzY2hlZHVsZSBpdCBpbiB0aGUgTmV0d29ya1Byb2Nl
c3MuCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPnNjaGVkdWxlQXJj
aGl2ZUxvYWQocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSkpIHsKICAg
ICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0
ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZl
IHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1
bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFyY2hpdmUgcmVzb3VyY2UgKGZyYW1l
ID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVs
ZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNvdXJjZSAoZnJhbWUg
PSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlk
ZW50aWZpZXIpOwogICAgICAgICBtX3dlYlJlc291cmNlTG9hZGVycy5zZXQoaWRlbnRpZmllciwg
V2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0
ZXJzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNzUsMTQgKzE3NSwxNCBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNl
TG9hZGVyLCBDYWNoZWRSZXNvdQogCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLmRvY3VtZW50TG9h
ZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkUmVzb3VyY2UocmVzb3VyY2VM
b2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgp
LnVybCgpKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2Vzcykg
V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBsb2FkZWQg
ZnJvbSBhcHBsaWNhdGlvbiBjYWNoZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxv
YWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGZyb20gYXBwbGljYXRpb24g
Y2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgp
LCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
aWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNh
Y2hlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIG1fd2ViUmVzb3VyY2VMb2FkZXJzLnNldChp
ZGVudGlmaWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHJlc291cmNlTG9hZGVyLCB0cmFj
a2luZ1BhcmFtZXRlcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChyZXNv
dXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0RhdGEoKSkgewogICAgICAgICBM
T0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBsb2FkZWQgYXMgZGF0YS4iLCByZXNvdXJjZUxv
YWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9h
ZGVkIGFzIGRhdGEgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5m
cmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3Vy
Y2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBhcyBkYXRhIChmcmFt
ZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
aWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNo
ZWRSZXNvdQogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChpc1F1aWNrTG9va1ByZXZpZXdV
UkwocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICBMT0coTmV0d29y
a1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9h
ZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlLiIsIHJl
c291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2ls
bCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2ls
bCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAg
ICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIC8v
IGh0dHBzOi8vYmxvZ3MuZ25vbWUub3JnL2FsZXhsLzIwMTIvMDEvMjYvcmVzb3VyY2VzLWluLWds
aWIvCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzKCJy
ZXNvdXJjZSIpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNz
KSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRs
ZWQgYXMgYSBHUmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIs
ICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UgKGZyYW1l
ID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVs
ZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UgKGZyYW1lID0gJXAsIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVy
KTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtMjExLDExICsyMTEsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UK
ICAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLmhhbmRsZUZldGNoKHJl
c291cmNlTG9hZGVyLCBzZXNzaW9uSUQsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFtZXRlcnMsIGlkZW50aWZpZXIsIHNlc3Npb25J
RCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZl
cmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSksIHJlc291cmNlTG9hZGVy
ID0gbWFrZVJlZihyZXNvdXJjZUxvYWRlcildIChTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJl
c3VsdCByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0ICE9IFNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpIHsKICAgICAgICAgICAgIExPRyhOZXR3
b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVM
b2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFu
ZGxlIGZldGNoIGFsZ29yaXRobSIsIHJlc291cmNlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRp
bjEoKS5kYXRhKCkpOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJj
ZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91
Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVs
ZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxl
IGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9h
ZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgICAgICBpZiAocmVzb3VyY2VMb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNl
V29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1
bGVMb2FkOiB1bmFibGUgdG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5k
bGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VM
b2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0
byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0
aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwg
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXNv
dXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSB7CiAgICAgICAgICAgICAgICAg
YXV0byBlcnJvciA9IGludGVybmFsRXJyb3IocmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKS51cmwo
KSk7CiAgICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpD
YW5jZWxsYXRpb24pOwpAQCAtMjI3LDEzICsyMjcsMTMgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVz
b3UKICAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVn
eSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKQogICAg
ICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hl
ZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIuZ2V0KCksIHJlc291cmNl
TG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2Vzc2lvbklELCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSk7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3Vy
Y2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFu
ZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IGlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJj
ZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5k
bGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgp
LCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICB9KTsKICNlbHNlCiAgICAgaWYgKCF0cnlMb2Fk
aW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyKSkKICAgICAgICAgc2NoZWR1
bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkp
OwogICAgIGVsc2UKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ciwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUg
PSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxl
TG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwog
I2VuZGlmCiB9CiAKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
Y2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAog
ICAgIGlmIChsb2FkUGFyYW1ldGVycy5vcHRpb25zLm1vZGUgIT0gRmV0Y2hPcHRpb25zOjpNb2Rl
OjpOYXZpZ2F0ZSkgewogICAgICAgICBBU1NFUlQobG9hZFBhcmFtZXRlcnMuc291cmNlT3JpZ2lu
KTsKICAgICAgICAgaWYgKCFsb2FkUGFyYW1ldGVycy5zb3VyY2VPcmlnaW4pIHsKLSAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVs
ZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3Vy
Y2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQs
IGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwg
InNjaGVkdWxlTG9hZDogbm8gc291cmNlT3JpZ2luIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVk
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50
PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndl
YlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1l
dGVycy5pZGVudGlmaWVyKTsKICAgICAgICAgICAgIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExv
YWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0z
NDYsOSArMzQ2LDkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5l
dHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKIAogICAgIEFTU0VSVCgobG9h
ZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8IGxv
YWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBv
bGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwogCi0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVp
bmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0
eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nh
c3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0
ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMu
aWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwg
InNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdv
cmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1
ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBs
b2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMpLCAwKSkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1
bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nl
c3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxv
YWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5w
cmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2FkUGFyYW1ldGVycy53ZWJG
cmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0df
RVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVW5hYmxlIHRv
IHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBw
cmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3Rh
dGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQ
YXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFp
bGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNl
IGl0IGhhZCBjcmFzaGVkLgogICAgICAgICAvLyBUaGlzIGxvYWQgd2lsbCBuZXZlciBzdWNjZWVk
IHNvIHdlIHdpbGwgc2NoZWR1bGUgaXQgdG8gZmFpbCBhc3luY2hyb25vdXNseS4KICAgICAgICAg
c2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChyZXNvdXJjZUxvYWRlcik7CkBAIC01MDcsMTkg
KzUwNywxOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgIFdlYkZyYW1lKiB3ZWJGcmFt
ZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1l
KCkgOiBudWxscHRyOwogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1l
LT5wYWdlKCkgOiBudWxscHRyOwogCi0gICAgYXV0byBwYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFn
ZS0+cGFnZUlEKCkgOiAwOworICAgIGF1dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBh
Z2VJRCgpIDogUGFnZUlkZW50aWZpZXIgeyB9OwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1l
ID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CiAgICAgYXV0byBzZXNzaW9uSUQgPSB3ZWJQYWdl
ID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25J
RCgpOwogCiAgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZUxvYWRlci5mcmFtZSgpLmRvY3VtZW50
KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IG5vIGRvY3VtZW50
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNl
U3luY2hyb25vdXNseTogbm8gZG9jdW1lbnQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELnRvVUludDY0KCksIGZy
YW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgICAgICBlcnJvciA9IGludGVybmFs
RXJyb3IocmVxdWVzdC51cmwoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
YXV0byBzeW5jTG9hZFJlc3VsdCA9IHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hl
bWVIYW5kbGVyKGZyYW1lTG9hZGVyLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0KSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBjYWxsaW5nIHRyeUxvYWRpbmdTeW5jaHJvbm91
c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1LCBlcnJvciA9ICVkKSIsIHBhZ2VJRCwgZnJh
bWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3luY0xvYWRSZXN1bHQtPmVycm9yLmVycm9y
Q29kZSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQs
ICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgY2FsbGluZyB0cnlMb2FkaW5nU3lu
Y2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFuZGxlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSwgZXJyb3IgPSAlZCkiLCBwYWdl
SUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3luY0xvYWRS
ZXN1bHQtPmVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAgZXJyb3IgPSBXVEZNb3ZlKHN5bmNM
b2FkUmVzdWx0LT5lcnJvcik7CiAgICAgICAgIHJlc3BvbnNlID0gV1RGTW92ZShzeW5jTG9hZFJl
c3VsdC0+cmVzcG9uc2UpOwogICAgICAgICBkYXRhID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+
ZGF0YSk7CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICBI
YW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVyOwogCiAgICAgaWYgKCFX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5j
b25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpSZXBs
eShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJP
Ul9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxl
ZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBh
Z2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNs
eTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
bHUpIiwgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIp
OwogICAgICAgICBpZiAoYXV0byogcGFnZSA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5jb3JlUGFnZSgp
IDogbnVsbHB0cikKICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCku
bG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRl
cm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6c3luY2hyb25v
dXNNZXNzYWdlRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAg
ICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVy
JiBmcmFtZUxvYWRlciwgdW5zaQogICAgIH0KIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKQordm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogewogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6UGFnZUxvYWRDb21wbGV0ZWQod2ViUGFnZUlEKSwgMCk7CiB9CkBAIC02NDgsMTAgKzY0OCwx
MCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXImIGZy
YW1lTG9hZGVyLCBjb25zdCBVUkwmIHVybCwgUwogCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJl
cXVlc3QgeyB1cmwgfTsKLSAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQ
YWdlLT5wYWdlSUQoKSA6IDA7Ci0gICAgcGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUg
PyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKKyAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdl
YlBhZ2UtPnBhZ2VJRCgpOworICAgIHBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lLT5m
cmFtZUlEKCk7CiAgICAgcGFyYW1ldGVycy5wYXJlbnRQSUQgPSBwcmVzZW50aW5nQXBwbGljYXRp
b25QSUQoKTsKLSAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5z
ZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgcGFy
YW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlLT5zZXNzaW9uSUQoKTsKICAgICBwYXJhbWV0ZXJz
LnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAg
cGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RPbmx5OjpZZXM7CiAg
ICAgcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyA9IHNob3VsZFBl
cmZvcm1TZWN1cml0eUNoZWNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggNGFmNTk5NDFlMzRmNzJhZDI2ZTgx
ZWZiNTYwNjA2NzUxODExZjhjNi4uYWM1MjQ5NjZhODUyMWUwZTNkNjVlYjYyYjlmNzBlODJmNzhj
YzIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lk
IGxvYWRSZXNvdXJjZShXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
T3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlN1YnJlc291
cmNlTG9hZGVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVu
dGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDbGllbnRD
cmVkZW50aWFsUG9saWN5LCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBjb25zdCBXZWJD
b3JlOjpIVFRQSGVhZGVyTWFwJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgcGFn
ZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSBmaW5hbDsKKyAgICB2b2lkIHBhZ2VM
b2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQg
cmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCBzZXREZWZl
cnNMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9vbCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggYmY4OGZkYTMwMDdlMTY0ZmYzOGE5NTIyYWJiODFmZWZkN2U5Zjg1Mi4uODhiZDUz
YmYxZjhmYjczNmViMTczZWY2NGYxZTMwM2QxYmIxMDBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtODgs
MTYgKzg4LDE2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIFJlc291CiAgICAgUmVmPFdlYlJlc291cmNl
TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlBy
b2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bv
c2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
IndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBpZiAobV9jb3JlTG9hZGVyLT5kb2N1bWVu
dExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrRm9yUmVk
aXJlY3QobV9jb3JlTG9hZGVyLmdldCgpLCBwcm9wb3NlZFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9u
c2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDog
ZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QgcmV0dXJu
ZWQgZmFsc2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4
aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVk
IGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUlu
dDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnJlc291cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb3JlTG9hZGVy
LT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3Bv
bnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1f
Y29yZUxvYWRlci0+aWRlbnRpZmllcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9h
ZGVyIG9yIGlkZW50aWZpZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnJlc291cmNlSUQpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNl
bmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBvciBpZGVudGlm
aWVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0
KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJl
c291cmNlSUQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExMywxMiAr
MTEzLDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5
dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTCiB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJv
b2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7CiAgICAgTE9HKE5l
dHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0
aW4xKCkuZGF0YSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHN0YXR1cyA9
ICVkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3Bv
bnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAKICAg
ICBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYg
KG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5t
YXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKG1fY29yZUxvYWRlci5nZXQoKSwgcmVzcG9uc2Up
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTog
bm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVhZHkgY2FjaGVk
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29u
dGludWluZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMgYWxyZWFkeSBjYWNoZWQgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIGJvbwogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlciAmJiBtX2NvcmVMb2Fk
ZXItPmlkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkpOwogICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Ig
bm8gSUQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQp
OworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNw
b25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CiAgICAgICAgIH07CiAgICAgfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05l
dHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRp
bCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoIW1fbnVtQnl0ZXNS
ZWNlaXZlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0
YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgIH0KICAgICBt
X251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGludDY0X3QgZQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
UmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNz
KQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmlu
aXNoUmVzb3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGggPSAlemQpIiwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
bGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9p
c1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3VsZCBub3QgYmUgYWJsZSB0byBm
aW5pc2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKICAgICBtX2NvcmVM
b2FkZXItPmRpZEZpbmlzaExvYWRpbmcobmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29u
c3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBM
T0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291
cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsUmVzb3VyY2VMb2Fk
OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAK
ICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwg
IkxvYWQgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGZpbmlzaCBiZWZvcmUgd2UndmUgdmFsaWRhdGVk
IHRoZSByZXNwb25zZSIpOwogCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQog
ewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwo
KS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIG1fY29yZUxv
YWRlci0+ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogfQpAQCAtMTg3LDcgKzE4
Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9w
dGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJj
ZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBv
bGljeURlbmllZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4x
KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdG9wTG9hZGluZ0FmdGVy
WEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0
eVBvbGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVy
KCktPnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lE
ZW5pZWQobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIHJlc3BvbnNlKTsKIH0KQEAgLTE5Niwx
MyArMTk2LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJh
bWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pCiB2b2lkIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYg
aGFuZGxlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0
cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
UmVjZWl2ZVJlc291cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291
cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2
NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5y
ZXNvdXJjZUlEKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50
cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExP
R19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBz
ZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZl
ciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxl
IHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90
cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9
IG1fY29yZUxvYWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBm
cmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xp
ZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlz
OjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3Jl
YXRlU2hhcmVkQnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VM
b2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmgKaW5kZXggN2ZkNzgzMjIzM2EzNjJjMjNhOTA0ZmMxNWVmMzRjYTY0YTk2N2VhZS4uNTg2
NTQzNzE4ZTVlODM4OGI4YjQxYWIwMjAzN2FjNzZlNzg2OTM3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5k
ZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KIApAQCAtNTAsNyArNTEsNyBAQCB0eXBlZGVmIHVpbnQ2NF90IFJlc291
cmNlTG9hZElkZW50aWZpZXI7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZD
b3VudGVkPFdlYlJlc291cmNlTG9hZGVyPiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBw
dWJsaWM6CiAgICAgc3RydWN0IFRyYWNraW5nUGFyYW1ldGVycyB7Ci0gICAgICAgIHVpbnQ2NF90
IHBhZ2VJRCB7IDAgfTsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwog
ICAgICAgICB1aW50NjRfdCBmcmFtZUlEIHsgMCB9OwogICAgICAgICBSZXNvdXJjZUxvYWRJZGVu
dGlmaWVyIHJlc291cmNlSUQgeyAwIH07CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcAppbmRleCAzNGI1YTY0M2YwM2JkYTYxZmRhNGIzM2Q4ODdiNWQxZGI4OWRjNjA3
Li5hZGM0NzY2NTJlODA3YjIzNmFjYzExNjU0YTVmYzE3MTU3MzVjOTE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBjb25zdCBT
ZWNvbmRzIHN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQgeyAxMDBfbXMgfTsgLy8gT25seSB1
c2VkIGJ5IGxhCiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBTZXJ2aWNlV29y
a2VyRnJhbWVMb2FkZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKKyAgICBTZXJ2aWNlV29ya2VyRnJh
bWVMb2FkZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKICAgICAgICAgOiBt
X2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQp
CiAgICAgICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtOTUsMTggKzk1LDE4IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlciosIHVu
c2lnbmVkIGxvbmcpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZyYW1lSUQ7IH0KICAgICBTdHJpbmcgdXNlckFnZW50
KGNvbnN0IFVSTCYpIGZpbmFsIHsgcmV0dXJuIG1fdXNlckFnZW50OyB9CiAKICAgICBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwogICAgIFBBTDo6U2Vzc2lvbklE
IG1fc2Vzc2lvbklEOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9OworICAgIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRCB7IDAgfTsK
ICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CiB9OwogCi1XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiBjb25uZWN0aW9uLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYm
IGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIDogbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9wYWdlR3JvdXBJRChw
YWdlR3JvdXBJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKQEAgLTIyNiwxMiArMjI2LDEyIEBA
IHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJD
b25uZWN0aW9uSWRlbnRpZmllciBzZXJ2CiB7CiAgICAgYXV0byogc2VydmljZVdvcmtlclRocmVh
ZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVh
ZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eSkgewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRj
aElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRs
ZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAoIWlzVmFsaWRGZXRjaChyZXF1ZXN0LCBvcHRpb25zLCBzZXJ2aWNlV29ya2VyVGhyZWFkUHJv
eHktPnNjcmlwdFVSTCgpLCByZWZlcnJlcikpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90
SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCA2Y2U4M2QxZDA5
ZWFlZGNhZTRmZTg3M2YxOGVjNTJiNTllNGZhMTcyLi5mYmI2MzBlNGUxOWIzNTlkYzE3MGNjZWEw
MThhNDk4MzIxNjZkYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTUx
LDcgKzUxLDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAKIGNsYXNzIFdlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNXQ29udGV4dE1h
bmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6
Ci0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4m
JiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYpOworICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6
OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIH5XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToK
IAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7
CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRCB7IDAg
fTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICB1aW50NjRfdCBt
X3ByZXZpb3VzU2VydmljZVdvcmtlcklEIHsgMCB9OwogCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSB7IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsU3Rv
cmFnZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCA4YWVi
YWZmOTYyMjFlOTg2MzM3YzNkMjNlMDQwZjA1YjQ3NTVhNzU2Li4yNjQ0YzljMWQxMmI2Y2QwMWQ1
NjY5OWQxMzJiYzJlZjRjNjM2YTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdQogewogICAg
IGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb25uZWN0aW9uLT5z
ZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVkaXJlY3RS
ZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7
CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmCiAgICAgaWYgKG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
CiAgICAgICAgIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSA9
IHRydWU7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVE
aWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQpAQCAtODQsNyArODQsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgYnVmZmVyIH0sIHN0
YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBidWZmZXIgfSwgc3RhdGljX2Nhc3Q8aW50
NjRfdD4oYnVmZmVyLT5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBX
ZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5p
c2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgV2Vi
U2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNo
KFJlZjxGb3JtRGF0YT4mCiAgICAgLy8gRm9yIG5vdyBhbmQgZm9yIHRoZSBjYXNlIG9mIGJsb2Jz
LCB3ZSByZWFkIGl0IHRoZXJlIGFuZCBzZW5kIHRoZSBkYXRhIHRocm91Z2ggSVBDLgogICAgIFVS
TCBibG9iVVJMID0gZm9ybURhdGEtPmFzQmxvYlVSTCgpOwogICAgIGlmIChibG9iVVJMLmlzTnVs
bCgpKSB7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7
IFdURk1vdmUoZm9ybURhdGEpIH0gfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IFdURk1vdmUo
Zm9ybURhdGEpIH0gfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IGNoYXIqIGRhdGEsIHNpemUKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfSwgc3RhdGljX2Nhc3Q8
aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNl
aXZlRGF0YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUg
fSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQog
CiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2Fk
aW5nKCkKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OkRpZEZhaWwgeyBlcnJvciB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OkRpZEZhaWwgeyBlcnJvciB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAKICAgICBjbGVh
bnVwKCk7CiB9CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrQ2xpZW50OjpkaWRGaW5pc2goKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5p
c2ggeyB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24t
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZpbmlzaCB7IH0sIG1f
ZmV0Y2hJZGVudGlmaWVyKTsKIAogICAgIGNsZWFudXAoKTsKIH0KQEAgLTE3NCw3ICsxNzQsNyBA
QCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZE5vdEhhbmRsZSgpCiAg
ICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsg
fSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCmluZGV4IDQ5MzNjYTRjM2EwNjcyY2FjMzBmNzc5NTE5MGQyNTg1MjFjMGNm
MDIuLjJiMjg4NjRhOWFhMDk4NDQyZDYxNTMyYzY0MGY1YjkzYTg1OTk4MGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC04MiwxNCArODIsMTQgQEAgUmVmPFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShV
c2VyQ29udGVudEMKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6V2ViVXNlckNvbnRlbnRDb250
cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6
IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7Cisg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlm
aWVyLCAqdGhpcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6fldlYlVzZXJDb250
ZW50Q29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKHVzZXJDb250ZW50Q29udHJvbGxlcnMoKS5j
b250YWlucyhtX2lkZW50aWZpZXIpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIp
OwogCiAgICAgdXNlckNvbnRlbnRDb250cm9sbGVycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwog
fQpAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghd2ViUGFnZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJl
bnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlEKCksIHdlYkZyYW1lLT5p
bmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5kYXRhKCkpKSwg
bV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT5w
YWdlSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVu
Y2UodmFsdWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CiAgICAgfQog
CiAgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcAppbmRleCA0OTYyOTZmNmQ4ODEwNTIzOTI0NTE2MDEzMDU2NDZiYjZk
NmIxY2NhLi4wOGJlOGUwMTY4MzFhNDJlYWZjN2NhY2I1NDdjMzZkZjI2MDdlZmQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
Q2hyb21lQ2xpZW50LmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVx
dWVzCiAKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShm
cmFtZSk7CiAKLSAgICB1aW50NjRfdCBuZXdQYWdlSUQgPSAwOworICAgIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBuZXdQYWdlSUQ7CiAgICAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycz4gcGFyYW1ldGVyczsKICAgICBpZiAoIXdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZSh3
ZWJGcmFtZS0+aW5mbygpLCB3ZWJGcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSwgcmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKSwgd2luZG93RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6UmVwbHkobmV3UGFnZUlELCBwYXJh
bWV0ZXJzKSwgbV9wYWdlLnBhZ2VJRCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0y
OTksOCArMjk5LDggQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUm
IGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXMKICAgICBpZiAocGFyYW1ldGVy
cy0+c2Vzc2lvbklEID09IG1fcGFnZS5zZXNzaW9uSUQoKSkKICAgICAgICAgcGFyYW1ldGVycy0+
b2xkUGFnZUlEID0gbV9wYWdlLnBhZ2VJRCgpOwogCi0gICAgd2ViUHJvY2Vzcy5jcmVhdGVXZWJQ
YWdlKG5ld1BhZ2VJRCwgV1RGTW92ZSgqcGFyYW1ldGVycykpOwotICAgIHJldHVybiB3ZWJQcm9j
ZXNzLndlYlBhZ2UobmV3UGFnZUlEKS0+Y29yZVBhZ2UoKTsKKyAgICB3ZWJQcm9jZXNzLmNyZWF0
ZVdlYlBhZ2UoKm5ld1BhZ2VJRCwgV1RGTW92ZSgqcGFyYW1ldGVycykpOworICAgIHJldHVybiB3
ZWJQcm9jZXNzLndlYlBhZ2UoKm5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7CiB9CiAKIHZvaWQgV2Vi
Q2hyb21lQ2xpZW50OjpzaG93KCkKQEAgLTEzMTcsMTIgKzEzMTcsMTIgQEAgdm9pZCBXZWJDaHJv
bWVDbGllbnQ6OmRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkKIH0KIAogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6aGFz
U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3Vi
RnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGFnZS5oYXNTdG9yYWdlQWNjZXNzKFdURk1v
dmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVn
aXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0
X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkNo
cm9tZUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgbV9wYWdlLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3Vi
RnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGRkM2IyMjU0MzVk
OTI2MzQ0MTU5OWM4MDVjMzYzNzNjZjI2MjYxY2UuLjI5MWM1ZWRkYzhjM2VlYmZiMTQ4YzA1ZDY2
MjUzYmNmZTNkNDc0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM2OSw4ICszNjksOCBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSBmaW5h
bDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4s
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmKSBmaW5hbDsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RG
OjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
LCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKSBmaW5hbDsKKyAgICB2
b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vz
cyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2Fz
U2hvd24pPiYmKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggZjQyOGZkMjM5N2VkZGQ0ZDI0MTE3NzAzMjNl
YjNmYTI3OTAyZDg1Zi4uNzA1MjAyNWI5ZGNmOTI0MTRjYjZlNDg0MmRhZmE3NDhjMGUxZjc0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVk
aXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFdlYkVkaXRv
ckNsaWVudDo6cmVnaXN0ZXJVbmRvU3RlcChVbmRvU3RlcCYgc3RlcCkKICAgICBhdXRvIHN0ZXBJ
RCA9IHdlYlN0ZXAtPnN0ZXBJRCgpOwogCiAgICAgbV9wYWdlLT5hZGRXZWJVbmRvU3RlcChzdGVw
SUQsIFdURk1vdmUod2ViU3RlcCkpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyhzdGVwSUQsIHN0ZXAubGFiZWwoKSks
IG1fcGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oc3RlcElELCBzdGVwLmxhYmVsKCkp
LCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFVuZG9T
dGVwJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDUyOWMwNDY3MDMwMWIz
NTBiMTMyNTE4MzU0YTllNWE4NTViOWM0OGQuLjNkY2Q3ZTJlYzE5OTgxN2Q3NDk1ZWQwYTgzNjI1
MzY0MzY2MWNkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTEyLDcg
KzExMiw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp+V2ViRnJhbWVMb2FkZXJDbGllbnQoKQog
ewogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgp
IGNvbnN0CitPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBh
Z2VJRCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+cGFnZSgpKQogICAg
ICAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpLT5wYWdlSUQoKTsKQEAgLTU0MSw3ICs1NDEsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExv
YWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCksIG1fZnJh
bWUtPmZyYW1lSUQoKSk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZDogKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlE
KCkudG9VSW50NjQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAgIFJlZlB0cjxBUEk6Ok9i
amVjdD4gdXNlckRhdGE7CiAKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0coTmV0
d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQ6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBh
Z2UtPnBhZ2VJRCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOworICAgIFJFTEVBU0VfTE9HKE5ldHdv
cmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQYWdl
LT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOwogCiAgICAgUmVmUHRy
PEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIApAQCAtOTAxLDcgKzkwMSw5IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBOYXZpZ2F0CiAgICAgaWYgKHJlcXVlc3Rlci5mcmFtZUlEKCkgJiYgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViRnJhbWUocmVxdWVzdGVyLmZyYW1lSUQoKSkpCiAgICAgICAgIG9yaWdp
bmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID0gcmVxdWVzdGVyLmZyYW1lSUQoKTsKIAotICAg
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlEID0gcmVxdWVzdGVyLnBhZ2VJRCgpICYmIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJRCgpKSA/IHJlcXVlc3Rl
ci5wYWdlSUQoKSA6IDA7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlEOworICAgIGlmIChyZXF1ZXN0ZXIucGFnZUlEKCkgJiYgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShyZXF1ZXN0ZXIucGFnZUlEKCkpKQorICAgICAgICBvcmlnaW5hdGluZ1Bh
Z2VJRCA9IHJlcXVlc3Rlci5wYWdlSUQoKTsKIAogICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhIG5h
dmlnYXRpb25BY3Rpb25EYXRhOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25U
eXBlID0gYWN0aW9uLT5uYXZpZ2F0aW9uVHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCBmNzNhYjhjYTczZjE3OGJmMjY4ZmYyYjg0MWM0NTFjZGQ0OThmYWEzLi5jOGZiMmFm
MjEyNTY2YzY0Njg2MDc3YTBjODlhZjgxMDUzOTBhNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5VG9Eb2N1
bWVudExvYWRlcihXZWJzaXRlUG9saWNpZXNEYXRhJiYpOwogCi0gICAgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCgpIGNvbnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0
IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRl
eCBlMWU5M2E2ZGUzNDY3ZWYxNDA5NDUzNDZkOGRiNGZkZDI3Mzg2NzAzLi45ZTQ2ZDgwNzNiMzgw
ZTQyNTU0YmVjNWY0NDQ4MTNmNGU2ZjkzNmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAKQEAgLTM3LDE0ICszNywxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0
IHsKIAotdXNpbmcgUGFzc3dvcmRDYWxsYmFja01hcCA9IEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+PjsKK3VzaW5nIFBhc3N3b3JkQ2FsbGJhY2tNYXAgPSBI
YXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmlu
ZyYpPj47CiBzdGF0aWMgUGFzc3dvcmRDYWxsYmFja01hcCYgcGFzc3dvcmRDYWxsYmFja3MoKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYXNzd29yZENhbGxiYWNrTWFwPiBjYWxsYmFj
a01hcDsKICAgICByZXR1cm4gY2FsbGJhY2tNYXAuZ2V0KCk7CiB9CiAKLVdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiB1dGksIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKICAgICA6IG1fZmls
ZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7
IHBhZ2VJRCB9CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6
ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJl
cXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9maWxlTmFtZSks
IG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZl
UGFzc3dvcmQoY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUGFzc3dvcmQoY29uc3QgU3RyaW5nJiBw
YXNzd29yZCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIEFTU0VSVChw
YXNzd29yZENhbGxiYWNrcygpLmNvbnRhaW5zKHBhZ2VJRCkpOwogICAgIGF1dG8gY29tcGxldGlv
bkhhbmRsZXIgPSBwYXNzd29yZENhbGxiYWNrcygpLnRha2UocGFnZUlEKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xv
YWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggZjk5ODZlNDFjYTJmMjUxZGIyYzNlNWQ4
OGUwOGRmNTA2ODU0MDRlOC4uYmU4ODdhZDhhN2YwYjY1N2QxZmE0NTFkMTgzM2NmMWNkNDRiNTM3
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lv
cy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTM1LDE2ICsz
NSwxNiBAQCBjbGFzcyBXZWJGcmFtZTsKIAogY2xhc3MgV2ViUHJldmlld0xvYWRlckNsaWVudCBm
aW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQcmV2aWV3TG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFdlYlByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgdWludDY0X3QgcGFnZUlEKQorICAgIHN0YXRp
YyBSZWY8V2ViUHJldmlld0xvYWRlckNsaWVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAg
ICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
KGZpbGVOYW1lLCB1dGksIHBhZ2VJRCkpOwogICAgIH0KICAgICB+V2ViUHJldmlld0xvYWRlckNs
aWVudCgpOwogCi0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVBhc3N3b3JkKGNvbnN0IFN0cmlu
ZyYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVBhc3N3b3Jk
KGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKLSAg
ICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0
cmluZyYgdXRpLCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQo
Y29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
aWRGYWlsKCkgb3ZlcnJpZGU7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICBjb25z
dCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7Ci0gICAgY29uc3Qg
dWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9w
YWdlSUQ7CiAgICAgUXVpY2tMb29rRG9jdW1lbnREYXRhIG1fZGF0YTsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAppbmRleCAyNzZi
ODBiZjI4ZjFmNWZkNDlhNmYwZmI0OTlkMzM1MTJhZGMxMDEwLi5jMDczOTZmMDJmMWZhNjVmNDVh
Y2VlNzJmMTM0ZjRmYjJkOWU4OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC02OCw3ICs2OCw3IEBAIERyYXdpbmdBcmVhOjpE
cmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUgdHlwZSwgRHJhd2luZ0FyZWFJZGVudGlmaWVyIGlk
ZW50aWZpZXIsCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fd2ViUGFn
ZSh3ZWJQYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVu
dGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5h
ZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJO
YW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBEcmF3aW5nQXJlYTo6fkRyYXdpbmdB
cmVhKCkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBEcmF3aW5nQXJlYTo6cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVySWZOZWVkZWQoKQogICAgIGlmIChtX2hhc1JlbW92ZWRNZXNzYWdlUmVjZWl2ZXIpCiAg
ICAgICAgIHJldHVybjsKICAgICBtX2hhc1JlbW92ZWRNZXNzYWdlUmVjZWl2ZXIgPSB0cnVlOwot
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlm
aWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA2OTE4MzBiNTkz
YzY3YWQzM2Q3N2EwZTY4YzU0N2E2MzFjNWFiNmQ3Li40OWEyYzNiYjM3MDJiNmQ0MjM0MGY4MTY5
OTMxZGE4YzQ2YzdiNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBFdmVudERp
c3BhdGNoZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
bikKICAgICBjb25uZWN0aW9uLT5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OkV2ZW50RGlzcGF0Y2hlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0
aGlzKTsKIH0KIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0X3QgcGFn
ZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRB
dExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9w
LCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVl
bEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxF
dmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0
LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCiB7
CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgUGxh
dGZvcm1XaGVlbEV2ZW50IHBsYXRmb3JtV2hlZWxFdmVudCA9IHBsYXRmb3JtKHdoZWVsRXZlbnQp
OwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVuCiB9CiAKICNpZiBF
TkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotdm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1cmVF
dmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50JiBnZXN0
dXJlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2VzdHVyZUV2ZW50KFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkK
IHsKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcGFnZUlELCBnZXN0dXJlRXZlbnRdKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPmRpc3BhdGNoR2VzdHVyZUV2ZW50KHBhZ2VJRCwgZ2VzdHVyZUV2ZW50KTsKQEAg
LTE2Myw3ICsxNjMsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2V0UXVldWVkVG91Y2hFdmVu
dHNGb3JQYWdlKGNvbnN0IFdlYlBhZ2UmIHdlYlBhZ2UsIFRvdWNoRQogICAgIGRlc3RpbmF0aW9u
UXVldWUgPSBtX3RvdWNoRXZlbnRzLnRha2Uod2ViUGFnZS5wYWdlSUQoKSk7CiB9CiAKLXZvaWQg
RXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0
OjpXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OnRvdWNo
RXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQm
IHRvdWNoRXZlbnQpCiB7CiAgICAgYm9vbCB1cGRhdGVMaXN0V2FzRW1wdHk7CiAgICAgewpAQCAt
MjA3LDcgKzIwNyw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFRvdWNoRXZlbnRz
KCkKIH0KICNlbmRpZgogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50
KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK3ZvaWQg
RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
ZGlzcGF0Y2hXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYg
dwogfQogCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLXZvaWQgRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1
cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoR2Vz
dHVyZUV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBn
ZXN0dXJlRXZlbnQpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjMy
LDcgKzIzMiw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudCh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVuCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShBU1lOQ19TQ1JPTExJTkcpCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6c2VuZERpZFJlY2VpdmVF
dmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiBldmVudCwgYm9vbCBkaWRIYW5k
bGVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpzZW5kRGlkUmVjZWl2ZUV2ZW50KFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmIGV2ZW50LCBib29sIGRpZEhhbmRsZUV2
ZW50KQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRp
Y19jYXN0PHVpbnQzMl90PihldmVudC50eXBlKCkpLCBkaWRIYW5kbGVFdmVudCksIHBhZ2VJRCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERp
c3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0
Y2hlci5oCmluZGV4IDFkNDc3ODc3ZWFhZTQwNDUyNmEwNzQ1MWMwNzE4Njk5N2E1NTBlNTQuLmUx
YmJiZDQ3OTY5YmZiYjc1MmM2MWQyMWM2MWEyOWVlZmFkOTYyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9X
aGVlbEV2ZW50RGVsdGFGaWx0ZXIuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KQEAgLTc3LDM4ICs3OCwzOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAK
ICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCi0gICAgdm9pZCB3aGVlbEV2ZW50KHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9v
bCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2Fu
UnViYmVyQmFuZEF0Qm90dG9tKTsKKyAgICB2b2lkIHdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIGNvbnN0IFdlYldoZWVsRXZlbnQmLCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQs
IGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29s
IGNhblJ1YmJlckJhbmRBdEJvdHRvbSk7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0g
ICAgdm9pZCB0b3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViVG91Y2hFdmVudCYp
OworICAgIHZvaWQgdG91Y2hFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2Vi
VG91Y2hFdmVudCYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLSAg
ICB2b2lkIGdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCYpOworICAgIHZvaWQgZ2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBXZWJHZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBv
biB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnQodWludDY0X3Qg
cGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50Jik7CisgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZl
bnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKICNpZiBF
TkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICB2b2lkIGRpc3BhdGNoVG91Y2hFdmVudHMoKTsK
ICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi0gICAgdm9pZCBkaXNwYXRj
aEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwor
ICAgIHZvaWQgZGlzcGF0Y2hHZXN0dXJlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYkdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xM
SU5HKQotICAgIHZvaWQgc2VuZERpZFJlY2VpdmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYkV2ZW50JiwgYm9vbCBkaWRIYW5kbGVFdmVudCk7CisgICAgdm9pZCBzZW5kRGlkUmVjZWl2
ZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlk
SGFuZGxlRXZlbnQpOwogI2VuZGlmCiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogCiAj
aWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICAgICBMb2NrIG1fc2Nyb2xsaW5nVHJlZXNNdXRl
eDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxp
bmdUcmVlPj4gbV9zY3JvbGxpbmdUcmVlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxp
bmdUcmVlczsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXaGVlbEV2ZW50
RGVsdGFGaWx0ZXI+IG1fcmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyOwogI2lmIEVOQUJMRShJ
T1NfVE9VQ0hfRVZFTlRTKQogICAgIExvY2sgbV90b3VjaEV2ZW50c0xvY2s7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgVG91Y2hFdmVudFF1ZXVlPiBtX3RvdWNoRXZlbnRzOworICAgIEhhc2hNYXA8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCmluZGV4IDVlMTU0M2M5OGNjZmE0
MTQwMWMyNzUzOGM2Mjk5ZjlhNTgwZjM2N2IuLmFmOTA0YjQ1MTZhMTA5ODA4NTRjMWEzNDRlNjEy
MmNmZDcxNjRiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KQEAgLTIxLDExICsyMSwxMSBA
QAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBFdmVudERpc3BhdGNoZXIgewotICAgIFdo
ZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQsIGJv
b2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBj
YW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQorICAgIFdoZWVs
RXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYldoZWVsRXZl
bnQgZXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRS
aWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9t
KQogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgIFRvdWNoRXZlbnQodWludDY0X3Qg
cGFnZUlELCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCisgICAgVG91Y2hFdmVudChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkK
ICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi0gICAgR2VzdHVyZUV2ZW50
KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQgZXZlbnQpCisgICAgR2Vz
dHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJHZXN0
dXJlRXZlbnQgZXZlbnQpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9S
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBiNzUyYzFjNTRkNDZmMDhkZGE2NjVi
NWYzNTY0ZDU0MmE2NjVlY2Y2Li5iMjkxZGYwYjdkZmRmNzkzOWU3ZGFhZTcyMzQyMDI2NWRiMTlj
MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLm1tCkBAIC03NSw3ICs3NSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXCiAgICAg
Ly8gRklYTUU6IFdoaWxlIHVzaW5nIHRoZSBoaWdoIGVuZCBvZiB0aGUgcmFuZ2Ugb2YgRGlzcGxh
eUlEcyBtYWtlcyBhIGNvbGxpc2lvbiB3aXRoIHJlYWwsIG5vbi1SZW1vdGVMYXllclRyZWVEcmF3
aW5nQXJlYQogICAgIC8vIERpc3BsYXlJRHMgbGVzcyBsaWtlbHksIGl0IGlzIG5vdCBlbnRpcmVs
eSBzYWZlIHRvIGhhdmUgYSBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSBhbmQgVGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWEKICAgICAvLyBjb2VleGlzdCBpbiB0aGUgc2FtZSBwcm9jZXNz
LgotICAgIHdlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8
dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkpOworICAgIHdlYlBhZ2Uud2luZG93
U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdl
YlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoKQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICBSZWZQdHI8
QmFja2luZ1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0b3JlRmx1c2hlciA9IEJhY2tpbmdTdG9yZUZs
dXNoZXI6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLCBXVEZNb3ZlKGNvbW1pdEVuY29kZXIpLCBXVEZNb3ZlKGNvbnRleHRzVG9GbHVzaCkp
OwogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXIgPSBiYWNraW5nU3RvcmVGbHVzaGVy
OwogCi0gICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgpOworICAgIGF1dG8g
cGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgpOwogICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0
UXVldWUsIFtiYWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVy
KSwgcGFnZUlEXSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNw
YXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVE
aXNwYXRjaGVyLmNwcAppbmRleCBjM2E5NTI1NjUzMjZlNzQ5ZTUyNjExMzJiMDQ0YWE1ODg4MDJj
MDRmLi5jOTdlNmZjNzI1MTY0OGE4YWNiNjlhZDI3YzhhYzExMmFmM2JiOTY0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3Bh
dGNoZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6Omlu
aXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKICAgICBjb25u
ZWN0aW9uLT5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdVcGRhdGVE
aXNwYXRjaGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0KCksIHRoaXMpOwog
fQogCi12b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjp2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUo
dWludDY0X3QgcGFnZUlELCBjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKQordm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRl
SW5mbykKIHsKICAgICBib29sIHVwZGF0ZUxpc3RXYXNFbXB0eTsKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIu
aAppbmRleCBlNDdkYzRlMWQ0MTY4MjIzNDBhZmFkZWEyYTNjODA2MjBmNGIyMDg4Li5jYTdkMjAw
YzJiY2Y2NWU3N2I4MGEyOWRmYWMxOTQzZWMyZGQ0MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgKQEAgLTI5
LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKICNpbmNsdWRlICJWaXNpYmxl
Q29udGVudFJlY3RVcGRhdGVJbmZvLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvUmVmLmg+CkBAIC00Nyw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBD
OjpDb25uZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYpOworICAgIHZvaWQgdmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBWaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVJbmZvJik7CiAKICAgICB2b2lkIGRpc3BhdGNoVmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlKCk7CiAKQEAgLTU4LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxXb3JrUXVldWU+
IG1fcXVldWU7CiAgICAgTG9jayBtX2RhdGFNdXRleDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBV
cGRhdGVEYXRhPiBtX2xhdGVzdFVwZGF0ZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBVcGRhdGVEYXRhPiBtX2xhdGVzdFVwZGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmll
d1VwZGF0ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5tZXNzYWdlcy5pbgppbmRleCAxN2UyYzhkZDE4
NmFkMjc2ZTU1OGFjYzg4MGMyNjg4ZDUwMzU4ZmU2Li5kOTJlZWI4ODlkMDk1NzJhMWQyMjZlODNj
N2NlMTNmNTk2MTAyNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5tZXNzYWdlcy5pbgpAQCAt
MjEsNSArMjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBWaWV3VXBkYXRlRGlz
cGF0Y2hlciB7Ci0gICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwg
V2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvIHZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZUluZm8pCisgICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvIHZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZUluZm8pCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKaW5kZXgg
MjExZDYwMWVmMGI0NGY1MmFhMmRlOTYzZTg0NTNmODZjNTJmOGZkNC4uN2EwYzBjODBmZThjYzYw
MTE2OTNkN2I0NTI3YWJlYzdlOWU1ZTc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAt
NTUsNyArNTUsNyBAQCBzdGF0aWMgSURUb0hpc3RvcnlJdGVtTWFwJiBpZFRvSGlzdG9yeUl0ZW1N
YXAoKQogICAgIHJldHVybiBtYXA7CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6
OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0
ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCwgT3ZlcndyaXRl
RXhpc3RpbmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRM
aXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50
aWZpZXImIGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKIHsKICAg
ICAvLyBUaGlzIGl0ZW0vaXRlbUlEIHBhaXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0IGluIG91
ciBtYXAuCiAgICAgQVNTRVJUX1VOVVNFRChvdmVyd3JpdGVFeGlzdGluZ0l0ZW0sIG92ZXJ3cml0
ZUV4aXN0aW5nSXRlbSA9PSBPdmVyd3JpdGVFeGlzdGluZ0l0ZW06OlllcyB8fCAhaWRUb0hpc3Rv
cnlJdGVtTWFwKCkuY29udGFpbnMoaXRlbUlEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAppbmRleCBm
M2IxYzhhZjU0ODIzYzNlODI2OGQ2YWU1OGU0MGE2ZjYxNTRkMDgxLi5kMWJhYWRiOTFjNTU4NjFi
MTU0M2I5NzE3NjQ4NjJiNWQyMjM5Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKQEAgLTI2LDYg
KzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENs
aWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1
YmxpYzoKICAgICAgICAgWWVzLAogICAgICAgICBObwogICAgIH07Ci0gICAgdm9pZCBhZGRJdGVt
RnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwg
UmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCB1aW50NjRfdCBwYWdlSUQsIE92ZXJ3cml0ZUV4
aXN0aW5nSXRlbSk7CisgICAgdm9pZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3Jl
OjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYm
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKIAogICAg
IHZvaWQgY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkNvb2tpZUphci5jcHAKaW5kZXggMTYwZWRlZmQ1OWQxMGEwMjNlNGFmMjUxYmUyYjFhOWIy
YTk4YjJkNS4uMmQ5ZDA4NWUzYmM1YzkyZDdiMDA1MjEyZjYxNmQ1Y2M2NmUxMTg3ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBA
IC00OSw3ICs0OSw3IEBAIFdlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKCkKIFN0cmluZyBXZWJD
b29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwm
IHVybCkgY29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBm
cmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFn
ZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtNjYsNyArNjYsNyBA
QCBTdHJpbmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgVVJMJiB1cmwpIGNvbnN0CiB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhX
ZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZykKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBP
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAg
ICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAg
cGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtODMsNyArODMs
NyBAQCBib29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6RG9j
dW1lbnQmIGRvY3VtZW50KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFp
cjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYg
c2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVz
IGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6
U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwpAQCAtOTUsNyArOTUsNyBAQCBzdGQ6OnBhaXI8
U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29v
a2llUmVxdWVzdEhlYQogYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2Vi
Q29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1l
KCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlE
KCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUph
ci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5k
ZXggOTdkZDc2ZjY2NGMzZjU1M2FkZmM4ZTc2YmI4NWVhM2YxMTFlNTExZS4uNTU5YmQwZTUwYmJl
YzM1ZmZiMjU2YjkxMmI3YjQ2ZGE5OTRiMmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgog
ICAgIFN0cmluZyBjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJikgY29uc3Qg
ZmluYWw7CiAgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpIGZpbmFsOwogICAgIGJvb2wgY29va2llc0Vu
YWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnBh
aXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFdl
YkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVT
ZWN1cmVDb29raWVzKSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
V2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
IGNvbnN0IGZpbmFsOwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkRvY3Vt
ZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSBmaW5hbDsKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5k
ZXggODkwYzVlNTZhYzA0Y2U3M2Y0NWVlMDdkOTc4MzUxZmQzMWNhYTUyMS4uNGFmNDk1YTUxYjkw
MzcyNmYzYmI2NGMzYTRkZTMxNTFkOTlmYmI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyB1aW50
NjRfdCBnZW5lcmF0ZUxpc3RlbmVySUQoKQogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRl
V2l0aENvcmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFt
ZSkKIHsKICAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxv
YWRlckNsaWVudD4oc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPigmY29yZUZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKSkpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZENyZWF0ZU1haW5GcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlE
KCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFp
bkZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9IGNv
cmVGcmFtZTsKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPnRyZWUoKS5zZXROYW1lKFN0cmluZygp
KTsKQEAgLTEyMSw3ICsxMjEsNyBAQCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRo
Q29yZU1haW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogUmVmPFdlYkZy
YW1lPiBXZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5n
JiBmcmFtZU5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewogICAg
IGF1dG8gZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVu
dD4oKSk7Ci0gICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVT
dWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1l
SUQoKSkpOwogCiAgICAgYXV0byBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQ
YWdlKCksIG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwog
ICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFtZS5wdHIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAppbmRleCBjOTY1
MmU5NGFmODZiNjBlN2ZkZTczNjI1ZDExYjVhYmNlYTRjOWRhLi5iY2ZmOGUyYTg5NmZmMDJlODI1
MTY1Mjc4MTE5YmQxZmViNDYyMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYkluc3Bl
Y3RvclVJOjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlJiBwYWdlKQogI2VuZGlmCiB9CiAKLXZvaWQg
V2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVjdGVkUGFn
ZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCit2
b2lkIFdlYkluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKFBhZ2VJZGVudGlmaWVyIGlu
c3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlv
bkxldmVsKQogewogICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdl
SWRlbnRpZmllcjsKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci5yZXNldCgpOwpAQCAtMTY3
LDcgKzE2Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKICAgICBpZiAo
bV9mcm9udGVuZEhvc3QpCiAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50
KCk7CiAKLSAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBtX2luc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyID0geyB9OwogICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCmlu
ZGV4IDgzODFiZjFjZWRlY2I2NWM1ZDQ3NDc1YzIyYjdkM2RiNjJmYmZkOGUuLjk0MjRiZmUxZjI2
Y2ZkYzE2OTA3Yzc4MWZlZjRkNmQwNWM1ZWNlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIldlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3Bl
Y3RvckZyb250ZW5kSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKQEAgLTUy
LDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5j
ZSkgb3ZlcnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5z
cGVjdG9yVUkgbWVzc2FnZXMKLSAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24odWludDY0X3Qg
aW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0
aW9uTGV2ZWwpOworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVk
IGluc3BlY3Rpb25MZXZlbCk7CiAgICAgdm9pZCB1cGRhdGVDb25uZWN0aW9uKCk7CiAKICAgICB2
b2lkIHNob3dDb25zb2xlKCk7CkBAIC0xMzMsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBj
b3JlUGFnZSgpLCBzaW5jZSB3ZSBtYXkgbmVlZCBpdCBhZnRlciB0aGUgZnJvbnRlbmQncyBwYWdl
IGhhcyBzdGFydGVkIGRlc3RydWN0aW9uLgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXIqIG1fZnJvbnRlbmRDb250cm9sbGVyIHsgbnVsbHB0ciB9OwogCi0gICAgdWludDY0X3QgbV9p
bnNwZWN0ZWRQYWdlSWRlbnRpZmllciB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9kb2NraW5nVW5hdmFpbGFibGUgeyBmYWxzZSB9OwogICAgIGJvb2wg
bV9pc1Zpc2libGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgppbmRleCBkZWEwZmU1
ODRkNGVmMGY4NmZhOTcxNjYyYmI0N2I0MWE3ZjYxM2JmLi40MzE5MGFhODM0ZGNhYTY2OTY0YmJi
YTk1NTAwODIxZmI3ZDYxMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEs
NyBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSSB7Ci0gICAg
RXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9v
bCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKKyAgICBFc3RhYmxpc2hDb25u
ZWN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBi
b29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogICAgIFVwZGF0ZUNvbm5l
Y3Rpb24oKQogCiAgICAgQXR0YWNoZWRCb3R0b20oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAzYmFhZmQxODU0Y2JjOTk1Y2E0ZTg5ODAzZTNi
NDQxODIzZWI2MTY1Li4yYzEwMGI1OWI2YjE3MjJhNWYyYjI3MWE2ZWNmN2NmM2M0YjZmZWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzYw
LDcgKzM2MCw3IEBAIHByaXZhdGU6CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJl
ZkNvdW50ZWRMZWFrQ291bnRlciwgd2ViUGFnZUNvdW50ZXIsICgiV2ViUGFnZSIpKTsKIAotUmVm
PFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzKQogewogICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBh
Z2VJRCwgV1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogCkBAIC0zNzAsNyArMzcwLDcgQEAgUmVmPFdl
YlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWUKICAgICByZXR1cm4gcGFnZTsKIH0KIAotV2ViUGFnZTo6V2ViUGFn
ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJz
KQorV2ViUGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogbV9wYWdlSUQocGFnZUlEKQogICAgICwg
bV92aWV3U2l6ZShwYXJhbWV0ZXJzLnZpZXdTaXplKQogICAgICwgbV9hbHdheXNTaG93c0hvcml6
b250YWxTY3JvbGxlciB7IHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIg
fQpAQCAtODMxLDcgKzgzMSw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGFnZTo6bWVzc2FnZVNl
bmRlckNvbm5lY3Rpb24oKSBjb25zdAogCiB1aW50NjRfdCBXZWJQYWdlOjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2VJRCgpOworICAgIHJldHVy
biBwYWdlSUQoKS50b1VJbnQ2NCgpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBA
IC0xNjQ4LDcgKzE2NDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmdvVG9CYWNrRm9yd2FyZEl0ZW0odWlu
dDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZAogICAgIGlmICghaXRl
bSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HKExvYWRpbmcsICJJbiBXZWJQcm9jZXNzIHBp
ZCAlaSwgV2ViUGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZpZ2F0aW5nIHRvIGJhY2svZm9yd2FyZCBV
UkwgJXMiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIG1fcGFnZUlELCBpdGVtLT51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTG9hZGluZywgIkluIFdlYlByb2Nlc3MgcGlk
ICVpLCBXZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFjay9mb3J3YXJkIFVS
TCAlcyIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgaXRlbS0+
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBBU1NFUlQoIW1fcGVuZGluZ05h
dmlnYXRpb25JRCk7CiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbklEOwpA
QCAtMjA3Niw3ICsyMDc2LDcgQEAgYm9vbCBXZWJQYWdlOjpzZXRGaXhlZExheW91dFNpemUoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICBpZiAoIXZpZXcgfHwgdmlldy0+Zml4ZWRMYXlvdXRTaXpl
KCkgPT0gc2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTE9HX1dJVEhfU1RSRUFN
KFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQgPDwgIiBzZXRG
aXhlZExheW91dFNpemUgIiA8PCBzaXplKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJl
Y3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgc2V0
Rml4ZWRMYXlvdXRTaXplICIgPDwgc2l6ZSk7CiAgICAgdmlldy0+c2V0Rml4ZWRMYXlvdXRTaXpl
KHNpemUpOwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaXhlZExheW91dFNp
emVEaWRDaGFuZ2Uoc2l6ZSkpOwpAQCAtMjUwNCw3ICsyNTA0LDcgQEAgY29uc3QgV2ViRXZlbnQq
IFdlYlBhZ2U6OmN1cnJlbnRFdmVudCgpCiB2b2lkIFdlYlBhZ2U6OmZyZWV6ZUxheWVyVHJlZShM
YXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAiJXAgLSBXZWJQYWdlIChQYWdlSUQ9JWxsdSkgLSBBZGRpbmcgYSByZWFzb24g
JWQgdG8gZnJlZXplIGxheWVyIHRyZWU7IGN1cnJlbnQgcmVhc29ucyBhcmUgJWQiLAotICAgICAg
ICB0aGlzLCBtX3BhZ2VJRCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJU
cmVlRnJlZXplUmVhc29ucy50b1JhdygpKTsKKyAgICAgICAgdGhpcywgbV9wYWdlSUQudG9VSW50
NjQoKSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJlZXplUmVh
c29ucy50b1JhdygpKTsKICAgICBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMuYWRkKHJlYXNvbik7
CiAgICAgdXBkYXRlRHJhd2luZ0FyZWFMYXllclRyZWVGcmVlemVTdGF0ZSgpOwogfQpAQCAtMjUx
Miw3ICsyNTEyLDcgQEAgdm9pZCBXZWJQYWdlOjpmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJl
ZXplUmVhc29uIHJlYXNvbikKIHZvaWQgV2ViUGFnZTo6dW5mcmVlemVMYXllclRyZWUoTGF5ZXJU
cmVlRnJlZXplUmVhc29uIHJlYXNvbikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gV2ViUGFnZSAoUGFnZUlEPSVsbHUpIC0gUmVtb3ZpbmcgYSByZWFzb24gJWQg
dG8gZnJlZXplIGxheWVyIHRyZWU7IGN1cnJlbnQgcmVhc29ucyBhcmUgJWQiLAotICAgICAgICB0
aGlzLCBtX3BhZ2VJRCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVl
RnJlZXplUmVhc29ucy50b1JhdygpKTsKKyAgICAgICAgdGhpcywgbV9wYWdlSUQudG9VSW50NjQo
KSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29u
cy50b1JhdygpKTsKICAgICBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMucmVtb3ZlKHJlYXNvbik7
CiAgICAgdXBkYXRlRHJhd2luZ0FyZWFMYXllclRyZWVGcmVlemVTdGF0ZSgpOwogfQpAQCAtMzE2
OCw3ICszMTY4LDcgQEAgdm9pZCBXZWJQYWdlOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKCkKIAogdm9p
ZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFn
PiBhY3Rpdml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5n
ZUlELCBjb25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKQogewotICAgIExPR19X
SVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBwYWdlSUQo
KSA8PCAiIHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBhY3Rpdml0eVN0YXRlKTsKKyAgICBMT0df
V0lUSF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgcGFnZUlE
KCkudG9VSW50NjQoKSA8PCAiIHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBhY3Rpdml0eVN0YXRl
KTsKIAogICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7
CiAgICAgbV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsKQEAgLTMxNzYsNyArMzE3Niw3
IEBAIHZvaWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0
ZTo6RmxhZz4gYWN0aXZpdHlTdGF0ZSwgQWN0CiAgICAgaWYgKGNoYW5nZWQpCiAgICAgICAgIHVw
ZGF0ZVRocm90dGxlU3RhdGUoKTsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wYWdlLCAi
c2V0QWN0aXZpdHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJdTY0ICIgYnV0IFdlYkNvcmUgcGFnZSB3
YXMgbnVsbCIsIHBhZ2VJRCgpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcGFnZSwgInNl
dEFjdGl2aXR5U3RhdGUgY2FsbGVkIG9uICUiIFBSSXU2NCAiIGJ1dCBXZWJDb3JlIHBhZ2Ugd2Fz
IG51bGwiLCBwYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBpZiAobV9wYWdlKSB7CiAgICAgICAg
IFNldEZvclNjb3BlPE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPj4gY3VycmVudGx5Q2hh
bmdpbmdBY3Rpdml0eVN0YXRlIHsgbV9sYXN0QWN0aXZpdHlTdGF0ZUNoYW5nZXMsIGNoYW5nZWQg
fTsKICAgICAgICAgbV9wYWdlLT5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUpOwpAQCAt
NDMzOSw3ICs0MzM5LDcgQEAgdm9pZCBXZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQoKQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFp
bkZyYW1lVmlldygpKSB7CiAgICAgICAgIEludFNpemUgbmV3Q29udGVudFNpemUgPSBmcmFtZVZp
ZXctPmNvbnRlbnRzU2l6ZSgpOwotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3Rz
LCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIG1haW5GcmFtZURpZExheW91
dCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IG5ld0NvbnRlbnRTaXplKTsKKyAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9w
YWdlSUQudG9VSW50NjQoKSA8PCAiIG1haW5GcmFtZURpZExheW91dCBzZXR0aW5nIGNvbnRlbnQg
c2l6ZSB0byAiIDw8IG5ld0NvbnRlbnRTaXplKTsKICAgICAgICAgaWYgKG1fdmlld3BvcnRDb25m
aWd1cmF0aW9uLnNldENvbnRlbnRzU2l6ZShuZXdDb250ZW50U2l6ZSkpCiAgICAgICAgICAgICB2
aWV3cG9ydENvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7CiAgICAgfQpAQCAtNTc0Miw3ICs1NzQyLDcg
QEAgdm9pZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKICAgICAKICAg
ICBib29sIHZpZXdwb3J0Q2hhbmdlZCA9IGZhbHNlOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFZp
c2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQgPDwgIiBkaWRDb21t
aXRMb2FkIHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgY29yZUZyYW1lLT52aWV3KCktPmNv
bnRlbnRzU2l6ZSgpKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgZGlkQ29tbWl0TG9hZCBz
ZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IGNvcmVGcmFtZS0+dmlldygpLT5jb250ZW50c1Np
emUoKSk7CiAgICAgaWYgKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldENvbnRlbnRzU2l6ZShj
b3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkpKQogICAgICAgICB2aWV3cG9ydENoYW5n
ZWQgPSB0cnVlOwogCkBAIC02MDU2LDcgKzYwNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRFZGl0
b3JTdGF0ZVVwZGF0ZSgpCiAgICAgLy8gSWYgdGhhdCBpcyB0aGUgY2FzZSwganVzdCBzZW5kIHdo
YXQgd2UgaGF2ZSAoaS5lLiBkb24ndCBpbmNsdWRlIHBvc3QtbGF5b3V0IGRhdGEpIGFuZCB3YWl0
IHVudGlsIHRoZQogICAgIC8vIG5leHQgbGF5ZXIgdHJlZSBjb21taXQgdG8gY29tcHV0ZSBhbmQg
c2VuZCB0aGUgY29tcGxldGUgRWRpdG9yU3RhdGUgb3Zlci4KICAgICBhdXRvIHN0YXRlID0gZWRp
dG9yU3RhdGUoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRl
Q2hhbmdlZChzdGF0ZSksIHBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkVkaXRvclN0YXRlQ2hhbmdlZChzdGF0ZSkpOwogCiAgICAgaWYgKHN0YXRlLmlzTWlzc2lu
Z1Bvc3RMYXlvdXREYXRhKQogICAgICAgICBzY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgp
OwpAQCAtNjIzNyw3ICs2MjM3LDcgQEAgdm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiAKIHZvaWQgV2Vi
UGFnZTo6cG9zdE1lc3NhZ2VJZ25vcmluZ0Z1bGx5U3luY2hyb25vdXNNb2RlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2Fn
ZUJvZHkpKSksIHBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hyb25v
dXNNb2RlKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZU1lc3NhZ2Uo
bWVzc2FnZU5hbWUsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9i
amVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpKSksIElQQzo6U2VuZE9wdGlvbjo6SWdub3JlRnVs
bHlTeW5jaHJvbm91c01vZGUpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnBvc3RTeW5jaHJvbm91c01l
c3NhZ2VGb3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBt
ZXNzYWdlQm9keSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4NjhhZTkyZjJmYjMyOTM1MTAx
MTBiYWVlOGNjYjY3ODIzMWMzM2FkLi43N2Q4ZTRiMmRkY2VkYjUyYzU1YzQ3OWQzYTFhZmRmNWE3
MmU5YmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9JbnRTaXplSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVy
bGF5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Qb2ludGVySUQuaD4KQEAgLTI3Myw3ICsyNzQsOCBAQCB1c2luZyBXS0V2ZW50TW9kaWZpZXJz
ID0gdWludDMyX3Q7CiAKIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVy
LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGFn
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRlKHVpbnQ2NF90IHBh
Z2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBh
Z2U+IGNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmKTsKKwogICAgIHZpcnR1YWwgfldlYlBhZ2UoKTsKIAogICAgIHZvaWQgcmVpbml0aWFs
aXplV2ViUGFnZShXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMjgzLDcgKzI4NSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgV2ViUGFnZSogZnJvbUNvcmVQYWdlKFdlYkNvcmU6OlBh
Z2UqKTsKIAogICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9w
YWdlLmdldCgpOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdl
SUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VJRDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZS0+c2Vzc2lvbklEKCk7IH0KICAgICBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9u
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOyB9CiAKQEAg
LTExNjYsNyArMTE2OCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5ZWRS
ZXBseShUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKICAgICB7CiAgICAg
ICAgIGNhbmNlbEdlc3R1cmVzQmxvY2tlZE9uU3luY2hyb25vdXNSZXBsaWVzKCk7Ci0gICAgICAg
IHJldHVybiBzZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9wYWdl
SUQsIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRm
b3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKKyAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUo
bWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRT
eW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAgICAgfQogCiAg
ICAgV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3Mo
Y29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKQEAgLTExOTksNyArMTIwMSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFVzZXJJc0ludGVyYWN0aW5nKGJvb2wgdXNlcklzSW50ZXJhY3Rp
bmcpIHsgbV91c2VySXNJbnRlcmFjdGluZyA9IHVzZXJJc0ludGVyYWN0aW5nOyB9CiAKIHByaXZh
dGU6Ci0gICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJik7CisgICAgV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCkBA
IC0xNTg1LDcgKzE1ODcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVNb2NrQWNjZXNz
aWJpbGl0eUVsZW1lbnRBZnRlckNvbW1pdHRpbmdMb2FkKCk7CiAKLSAgICB1aW50NjRfdCBtX3Bh
Z2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBt
X21haW5GcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKaW5kZXggZDk2YTdkN2RkYTlmMjZkMWM2
NTZhMTVjYjgzZDAzY2YyMDRhN2EzOC4uYjc3OTliNGZiYjhiNTVjYjY2YjYyMjI3YTZhNjVmM2Fi
MTJjYTAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZUluc3BlY3RvclRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV2ViUGFn
ZUluc3BlY3RvclRhcmdldDo6V2ViUGFnZUluc3BlY3RvclRhcmdldChXZWJQYWdlJiBwYWdlKQog
CiBTdHJpbmcgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6aWRlbnRpZmllcigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5k
Q2hhbm5lbCYgY2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RC
YXNlLmgKaW5kZXggMzAxYjEzOWUxZDJjMTZkODlhMmFiODkzY2Y4NTU3MTA3M2Q4ZjUxYS4uNmI3
ZWM1YjE2ZjJjYTZhMDYyNjEzOGYxZmYwOTdkMGI1MjkxNTI4NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAgLTI2LDEzICsyNiwxNSBAQAogI2lmbmRl
ZiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZV9oCiAjZGVmaW5lIFdLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlX2gKIAorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogfQogCiBAaW50ZXJm
YWNlIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIDogTlNPYmplY3QgewogICAgIFdl
YktpdDo6V2ViUGFnZSogbV9wYWdlOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIGlkIG1fcGFyZW50OwogICAgIGJvb2wg
bV9oYXNNYWluRnJhbWVQbHVnaW47CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UubW0KaW5kZXggM2QzZjM1NTUzZTZkNGZiZWE1NTY1MzQ3ODA4ODgwNjkxMGYw
NTAwOS4uNjE2NWEwMWZlNjA4MjQ4ZmRlM2I5NjBmNzg5NDUxMzkyMzcxZGY4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMTQ4LDcgKzE0OCw3
IEBAIC0gKHZvaWQpc2V0V2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlKilwYWdlCiAgICAgICAgIGF1
dG8qIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgICAgIG1faGFzTWFpbkZyYW1lUGx1
Z2luID0gZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCkgPyBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNQ
bHVnaW5Eb2N1bWVudCgpIDogZmFsc2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9wYWdlSUQg
PSAwOworICAgICAgICBtX3BhZ2VJRCA9IHsgfTsKICAgICAgICAgbV9oYXNNYWluRnJhbWVQbHVn
aW4gPSBmYWxzZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5j
cHAKaW5kZXggNWNlNjljY2Y4MzM0YzlkOGQwODhjMjEyOGU0ZjM0YzZjZmFlYWRkOC4uNjE3NGIw
YTNiYjBiMzc0YWU5ODRkM2FiMWJkOGJmMjM3M2JkNTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIFdlYlByb2Nlc3M6OldlYlBy
b2Nlc3MoKQogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlc291
cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpLCAwKTsKICAgICB9
KTsKIAotICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Ms
IHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRv
bWFpbikgeworICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IG9wZW5lckRvbWFpbikgewogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoc2Vzc2lvbklELCBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7CiAgICAg
fSk7CiAjZW5kaWYKQEAgLTY2NywxNiArNjY3LDE2IEBAIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OmZv
Y3VzZWRXZWJQYWdlKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KICAgICAKLVdlYlBhZ2UqIFdl
YlByb2Nlc3M6OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdAorV2ViUGFnZSogV2ViUHJv
Y2Vzczo6d2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fcGFnZU1hcC5nZXQocGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQ
YWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCit2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICAvLyBJdCBp
cyBuZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5n
IGEgd2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBn
ZXRzIGNyZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0
aGUgbm9ybWFsIHdheS4gCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+Pjo6
QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKKyAgICBh
dXRvIHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKICAgICBhdXRvIG9s
ZFBhZ2VJRCA9IHBhcmFtZXRlcnMub2xkUGFnZUlEID8gcGFyYW1ldGVycy5vbGRQYWdlSUQudmFs
dWUoKSA6IHBhZ2VJRDsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgQVNT
RVJUKCFyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKQEAgLTY5Myw3ICs2OTMsNyBAQCB2b2lkIFdl
YlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYQogICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0K
IAotdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIEFTU0VS
VChtX3BhZ2VNYXAuY29udGFpbnMocGFnZUlEKSk7CiAKQEAgLTE0NTAsNyArMTQ1MCw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFz
b24pCiAKICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKHVpbnQ2NF90LCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hh
bmdlZCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoUGFnZUlk
ZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2Vk
KQogewogICAgIGlmIChjaGFuZ2VkICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxl
KQogICAgICAgICB1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbjo6
VmlzaWJpbGl0eUhhc0NoYW5nZWQpOwpAQCAtMTYyNCwxMyArMTYyNCwxMyBAQCB2b2lkIFdlYlBy
b2Nlc3M6OnNlbmRQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgVVJMJiB1cmwpCiAgICAgcGFyZW50
UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRD
b2xsZWN0UHJld2FybUluZm9ybWF0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpQcm9j
ZXNzV2FybWluZzo6Y29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpKSwgMCk7CiB9CiAKLXZvaWQg
V2ViUHJvY2Vzczo6cGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2Vi
UHJvY2Vzczo6cGFnZURpZEVudGVyV2luZG93KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAg
ICBtX3BhZ2VzSW5XaW5kb3dzLmFkZChwYWdlSUQpOwogICAgIG1fbm9uVmlzaWJsZVByb2Nlc3ND
bGVhbnVwVGltZXIuc3RvcCgpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVhdmVX
aW5kb3codWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlV2lsbExlYXZlV2lu
ZG93KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3BhZ2VzSW5XaW5kb3dzLnJlbW92
ZShwYWdlSUQpOwogCkBAIC0xNjczLDcgKzE2NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuYWJs
ZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGUpCiAgICAgaWYgKGVuYWJsZSkK
ICAgICAgICAgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nl
c3MoKTsKIAotICAgIFZlY3Rvcjx1aW50NjRfdD4gcGFnZUlEczsKKyAgICBWZWN0b3I8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRHM7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwKSB7CiAg
ICAgICAgIGlmIChwYWdlLnZhbHVlKQogICAgICAgICAgICAgcGFnZUlEcy5hcHBlbmQocGFnZS5r
ZXkpOwpAQCAtMTg1Myw3ICsxODUzLDcgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6
bGliV2ViUlRDTmV0d29yaygpCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lk
IFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQcmVm
ZXJlbmNlc1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKK3Zv
aWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lv
bklEKQogewogICAgIC8vIFdlIGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9j
ZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUg
TmV0d29yayBQcm9jZXNzCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uIFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlp
bmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmgKaW5kZXggNTI1ZGYxODNmMjI2MTVlNGQ4ZTg5OWY0ZTg5ZWY0ODVhN2JhNzgxYy4uMTg1N2Nl
YTBlZDlkOWZhOGMyMTA2OTZmMDk4NzY3OGJiYTQyOWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+
CiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5o
PgpAQCAtMTQ1LDkgKzE0Niw5IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJv
Y2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25u
ZWN0aW9uLmdldCgpOyB9CiAKLSAgICBXZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkg
Y29uc3Q7Ci0gICAgdm9pZCBjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9u
SUQsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV2ViUGFnZSogd2ViUGFnZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcikgY29uc3Q7CisgICAgdm9pZCBjcmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHZvaWQgcmVtb3Zl
V2ViUGFnZShQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIFdl
YlBhZ2UqIGZvY3VzZWRXZWJQYWdlKCkgY29uc3Q7CiAKICAgICBJbmplY3RlZEJ1bmRsZSogaW5q
ZWN0ZWRCdW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgpOyB9CkBA
IC0xOTksOCArMjAwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwogCi0gICAgdm9pZCBwYWdlRGlkRW50
ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3co
dWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyhXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXJG
aXJlZCgpOwogCkBAIC0yMTksNyArMjIwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVB
Y3RpdmVQYWdlcygpOwogICAgIHZvaWQgZ2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHBh
Z2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2NF90IHBhZ2VJRCwgT3B0aW9uU2V0PFdlYkNv
cmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3Jl
OjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKIAogICAgIHZvaWQgc2V0SGlkZGVuUGFn
ZURPTVRpbWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQoaW50IG1pbGxpc2Vjb25kcyk7CiAKQEAg
LTM1OSw3ICszNjAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFdv
cmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQ
QUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCk7
CiAjZW5kaWYKIApAQCAtNDYwLDcgKzQ2MSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2Vi
Q29ubmVjdGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKICAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+PiBtX3BhZ2VHcm91cE1hcDsKICAg
ICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IG1faW5qZWN0ZWRCdW5kbGU7CiAKQEAgLTUxNCw3ICs1
MTUsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3Byb2Nlc3NJc1N1c3BlbmRlZCB7IGZhbHNl
IH07CiAKLSAgICBIYXNoU2V0PHVpbnQ2NF90PiBtX3BhZ2VzSW5XaW5kb3dzOworICAgIEhhc2hT
ZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fcGFnZXNJbldpbmRvd3M7CiAgICAgV2ViQ29y
ZTo6VGltZXIgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lcjsKIAogICAgIFJlZlB0cjxX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4gbV9hcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4K
aW5kZXggYjM5YjM4YzE4M2M2NjMyN2Q0MmU2ZWRmZjE3NmJiYTFjOWNhYmIxMi4uNTdhMjY1NjM0
NWZiZTlkMzMwZGY2NTVlMzUyYzM5YmVhNTJiNDVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0V2Vic2l0ZURhdGFTdG9y
ZVBhcmFtZXRlcnMoc3RydWN0IFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMg
cGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlIGEgbmV3IHBhZ2UuCi0gICAgQ3JlYXRlV2ViUGFn
ZSh1aW50NjRfdCBuZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykKKyAgICBDcmVhdGVXZWJQYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG5ld1BhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBwYWdlQ3JlYXRpb25QYXJhbWV0ZXJzKQogCiAgICAgUHJld2FybUdsb2JhbGx5
KCk7CiAgICAgUHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViQ29yZTo6UHJl
d2FybUluZm9ybWF0aW9uIHByZXdhcm1JbmZvcm1hdGlvbikKQEAgLTExMSw3ICsxMTEsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBz
dHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBp
bml0aWFsU2Vzc2lvbklEKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6
OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNs
aWVudHMoKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAwYmQ5MGFmOTE4Nzg2NDQxMDQ1M2Vh
MWJhZjFlY2Y2MDIzM2NiMDk2Li4wZTk0Mjk2MDQ5ZTZjMDg3YWI2ZThmMGM1ZWJmZTRjMWEyZTJj
MDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1h
cDo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVh
SUQsIGMKIAogICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3Bh
Y2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIElEcwogICAgIC8vIHNvIHdlIGNhbiBnZXQg
dGhlIHJpZ2h0IHBhZ2UgaGVyZS4KLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgV2ViUGFnZSog
d2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50
aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1lc3BhY2VJRCkpOwogICAgIGlm
ICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5k
ZXggYjM5MDgxZTZlM2MxYmJhYjkyZGEyMWYyY2E5ZThhMTlkYjRmYmYxNS4uODA5NjIzNDI0NGZi
OGVlMzU3MWQyMDc4OTQyMmI4MjlkY2M5NGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApA
QCAtNDAsMTIgKzQwLDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBs
OjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNp
Z25lZCBxdW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlSWRlbnRpZmllciBp
ZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZp
ZXIsIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0
b3JhZ2VOYW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLnRvVUlu
dDY0KCksIG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFj
ZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VO
YW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVm
PFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2ln
bmVkIHF1b3RhSW5CeXRlcykKIHsKICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1l
c3BhY2UoaWRlbnRpZmllciwgcXVvdGFJbkJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmlu
ZGV4IDY3NTdlM2I4MTg4ODZjNGZmNTdiYzNlNzlmNGMxNTgwMGY3NWIxYmMuLjJlNGE0MjI2MGUw
NjQ4OGVlZmM4OGY3NTk2ZDEyYjQ0MDNlNzNmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAt
MjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
dG9yYWdlQXJlYS5oPgpAQCAtMzksOCArNDAsOCBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBT
dG9yYWdlTmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpOwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVt
ZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1bnNpZ25l
ZCBxdW90YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNy
ZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsPiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwg
dW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsPiBjcmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRp
ZmllciwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBx
dW90YUluQnl0ZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmluZGV4IGZjNjU5ODYzMjUyYmZlNGZhOGMx
ZTEyOWI5YWU4ZTgzMGZhZjc4OGEuLjc2NWVmZjQwNGIwOWVkMDBjY2UxZGQ5ZWE3YjU2MDU2Mjlj
YjVkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW0KICAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29u
dGV4dElkKTsKIAogICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsK
LSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
U2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRChtX2NvbnRyb2xzTWFuYWdlckNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0
aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCkBAIC0yOTEsNyArMjkx
LDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyKCkKICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CiAKICAgICBtX3Bh
Z2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9s
c01hbmFnZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoKSk7CiB9CiAKIHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNvbnRleHRJZEZv
ck1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCkBA
IC0zMTgsMjcgKzMxOCwyNyBAQCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpjdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1lbgogCiB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRv
dWJsZSBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pKTsK
IH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50VGltZUNoYW5nZWQodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50
VGltZSwgYW5jaG9yVGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1
ZmZlcmVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1l
KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpCdWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyUHJveHk6OkJ1ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1N0YXJ0ZWRUaW1l
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBsYXliYWNrU3RhcnRlZFRp
bWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY29udGV4
dElkLCBwbGF5YmFja1N0YXJ0ZWRUaW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6cmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxv
YXQgcGxheWJhY2tSYXRlKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0SWQsIGlzUGxheWluZywgcGxh
eWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQ
bGF5aW5nLCBwbGF5YmFja1JhdGUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3Jl
OjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91Ymxl
IGxpdmVVcGRhdGVJbnRlcnZhbCkKQEAgLTM0OSwzNyArMzQ5LDM3IEBAIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Y29uc3QgV2ViCiAgICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2VzLnJhbmdlcygpLmVuZChp
KS50b0RvdWJsZSgpOwogICAgICAgICByYW5nZXNWZWN0b3IuYXBwZW5kKHsgc3RhcnQsIGVuZCB9
KTsKICAgICB9Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUo
cmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdU
Rk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFs
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNl
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlGYXN0UmV2
ZXJzZUNoYW5nZWQoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDYW5QbGF5
RmFzdFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpKTsKIH0KIAogdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0
X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25z
LCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0No
YW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMs
IHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0
IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwg
b3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFT
ZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpleHRlcm5hbFBsYXliYWNrQ2hh
bmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgUGxheWJhY2tTZXNzaW9uTW9k
ZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6
ZWREZXZpY2VOYW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQoY29udGV4
dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxvY2FsaXpl
ZERldmljZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRp
ZXNDaGFuZ2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdl
dFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENo
YW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlv
TWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5k
ZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsK
LSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
TGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRl
eCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQo
Y29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vbCBkaXNhYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNWQ2MTEwYjc5MDlmMzRj
Y2UzZTc2MmJmZDM4ZDJiMmY3MjFkNTIxNi4uNzA2NjM5NzczNzliNWIxYmY1OTdjNWQ4ZGViMmFk
NDZjM2Y2YjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50
KEhUTUxWaWRlb0VsZW1lbgogICAgICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQo
KS0+c2V0Um9vdExheWVyKHZpZGVvTGF5ZXIpOwogICAgIH0KIAotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRo
SUQoY29udGV4dElkLCBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElE
KCksIHZpZGVvUmVjdCwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1
bGxzY3JlZW5Nb2RlKCksIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRleHRJZCwgaW50ZXJmYWNlLT5s
YXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRleHRJRCgpLCB2aWRlb1JlY3QsIG1fcGFnZS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSwgaW50ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxvd3NQaWN0
dXJlSW5QaWN0dXJlLCBzdGFuZGJ5KSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9F
bGVtZW50JiB2aWRlb0VsZW1lbnQpCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6
OkhUTUxWaWQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50ZXJmYWNlLnNldElzQW5pbWF0aW5n
KHRydWUpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGlubGluZVZpZGVvRnJhbWUodmlkZW9F
bGVtZW50KSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGlu
bGluZVZpZGVvRnJhbWUodmlkZW9FbGVtZW50KSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNv
cmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCkBAIC0zMjQsNyArMzI0
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9N
b2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjoKIAogICAgIGludGVyZmFjZS5zZXRUYXJnZXRJ
c0Z1bGxzY3JlZW4oZmFsc2UpOwogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9k
ZShjb250ZXh0SWQsIHRhcmdldE1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3Jl
ZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKGNvbnRleHRJZCwgdGFyZ2V0TW9kZSkpOwogI2Vsc2UK
ICAgICBVTlVTRURfUEFSQU0odmlkZW9FbGVtZW50KTsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0
TW9kZSk7CkBAIC0zMzYsMTMgKzMzNiwxMyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6Ogogdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpoYXNWaWRlb0NoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBib29sIGhhc1ZpZGVvKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlbyhj
b250ZXh0SWQsIGhhc1ZpZGVvKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlbyhj
b250ZXh0SWQsIGhhc1ZpZGVvKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IEZsb2F0U2l6
ZSYgdmlkZW9EaW1lbnNpb25zKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVu
c2lvbnMoY29udGV4dElkLCB2aWRlb0RpbWVuc2lvbnMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OlNldFZpZGVvRGltZW5zaW9ucyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucykpOwogfQogCiAj
cHJhZ21hIG1hcmsgTWVzc2FnZXMgZnJvbSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6CkBA
IC0zNjQsNyArMzY0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBk
YXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiAKICAgICBhdXRvJiBtb2RlbCA9IGVu
c3VyZU1vZGVsKGNvbnRleHRJZCk7CiAgICAgSW50UmVjdCBpbmxpbmVSZWN0ID0gaW5saW5lVmlk
ZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50KCkpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRJbmxpbmVSZWN0KGNvbnRleHRJZCwg
aW5saW5lUmVjdCwgaW5saW5lUmVjdCAhPSBJbnRSZWN0KDAsIDAsIDAsIDApKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OlNldElubGluZVJlY3QoY29udGV4dElkLCBpbmxpbmVSZWN0LCBpbmxpbmVSZWN0
ICE9IEludFJlY3QoMCwgMCwgMCwgMCkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQpAQCAtMzc4
LDcgKzM3OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29u
dGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIodmlkZW9MYXllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0
aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMt
Pm1fcGFnZSkKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCB0
cnVlKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhh
c1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgdHJ1ZSkpOwogICAgICAgICB9KTsKICAgICB9
KTsKIH0KQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJl
dHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICAgICAgICAgIG1v
ZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwsIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92
ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAg
ICAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgZmFsc2UpLCBwcm90ZWN0
ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRl
b0NvbnRlbnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElk
KQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlz
LCBjb250ZXh0SWRdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAg
ICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0pOwogI2Vs
c2UKICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250
ZXh0KCktPnJvb3RMYXllcigpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBt
b2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewogICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAg
ICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVu
KGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAg
ICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogI2Vu
ZGlmCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxs
RXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlz
KSwgdmlkZW9FbGVtZW50ID0gV1RGTW92ZSh2aWRlb0VsZW1lbnQpLCBjb250ZXh0SWRdIHsKICAg
ICAgICAgdmlkZW9FbGVtZW50LT53aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgaWYgKHBy
b3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhp
dEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKGNvbnRleHRJ
ZCkpOwogICAgIH0pOwogfQogCkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50
ZXJmYWNlXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3Jl
ZW4oY29udGV4dElkKSk7CiAgICAgfSk7CiAjZWxzZQogICAgIG1vZGVsLT53YWl0Rm9yUHJlcGFy
ZWRGb3JJbmxpbmVUaGVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4
dElkLCBpbnRlcmZhY2UsIG1vZGVsXSAoKSBtdXRhYmxlIHsKQEAgLTQ5OCw3ICs0OTgsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0
aW5nQ29udGV4dChudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMt
Pm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNs
ZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNTU1LDcgKzU1NSw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vCiAKICAgICBpZiAoIWlzUGFnZVZpc2libGUpCiAgICAgICAgIG1vZGVsLnZpZGVv
RWxlbWVudCgpLT5zY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9S
ZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLnZp
ZGVvRWxlbWVudCgpKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvUmV0dXJuVG9Jbmxp
bmUoY29udGV4dElkLCB0cnVlLCBpbmxpbmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1lbnQo
KSkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0Um91dGVTaGFy
aW5nUG9saWN5QW5kQ29udGV4dFVJRCh1aW50NjRfdCBjb250ZXh0SWQsIE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJ
RDo6QXN5bmNSZXBseSYmIHJlcGx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMmUxOTBiMDM1ZjcyODBiMWZiZWRiM2FmMDAx
ZTY5NThjNDIwMjExNi4uYjljZTc5ZDI3NGM0MTI3YmE3OGY1NGE1MmY2MzdlOTVlODUxZjZhYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29h
Lm1tCkBAIC01MzksNyArNTM5LDcgQEAgc3RhdGljIE5TVVJMICpvcmlnaW4oV2ViUGFnZSYgcGFn
ZSkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJldGFpblB0cjxOU0FycmF5
PE5TU3RyaW5nICo+PiBhY3RpdmVQYWdlc09yaWdpbnMoY29uc3QgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFdlYlBhZ2U+PiYgcGFnZU1hcCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxOU1N0
cmluZyAqPj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIs
IFJlZlB0cjxXZWJQYWdlPj4mIHBhZ2VNYXApCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PE5TU3RyaW5nICo+PiBhY3RpdmVPcmlnaW5zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5
IGFsbG9jXSBpbml0XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA5ODcy
YzMxYmE1ODRkNzFkYTE1OTExYjQ1OGY1MTExZDFhNzkxYzFmLi43OTYwMjRjOGNlNDlhNWFjZmE4
YjFmYjY1ODRmYWI4MzA1OTRjZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBA
IC0xMTEsNyArMTExLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGUKICAgICBSZXNvdXJjZUhh
bmRsZTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShmcmFtZUxvYWRlci5uZXR3b3JraW5nQ29u
dGV4dCgpLCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3Jl
ZGVudGlhbHM6Ok9taXQgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogfQogCi12
b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qg
Lyp3ZWJQYWdlSUQqLykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwYWdlTG9hZENv
bXBsZXRlZChQYWdlSWRlbnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgK
aW5kZXggNTViMzY5NzUzMDY1ODIxNGJjOTc5YTg3OTJiNjYwNzI2ZDgyOTZkZC4uNWY2MmY3Nzdh
YTc5YjAwNzU1NzNlNWFmY2NjNTZkMmU2MzU1MmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZFJlc291cmNlKFdl
YkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYm
KSBmaW5hbDsKICAgICB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6RnJh
bWVMb2FkZXImLCB1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBXZWJDb3JlOjpDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBXZWJDb3JlOjpGZXRjaE9w
dGlvbnMmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mKSBmaW5hbDsK
LSAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgZmluYWw7Cisg
ICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgZmluYWw7
CiAKICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAg
IHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMTM4NTU4M2FmMjlkMTc0NDEzZDUw
NTc5NWFmYTk1YjVjODg5NjZiYi4uYjE0MDNkMDU2MzkzYjM5N2QwMTdkMDkzZGU1ZmUwNGNkY2Nh
OGNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIGZpbmFsOwogICAgIGJvb2wgaGFz
V2ViVmlldygpIGNvbnN0IGZpbmFsOyAvLyBtYWlubHkgZm9yIGFzc2VydGlvbnMKIAotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3
Zjg2OWYxZGRjYjlhMTkwODBhYWIyMDA1ZjliZjczMmFlODdkZGRmLi43ZWJhM2E5OGFhM2RhOTA2
NmRmYjdjNWI5MjJkMTA5MTBiMTQyMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpA
QCAtMjA5LDcgKzIwOSw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNs
aWVudChXZWJGcmFtZSAqd2ViRnJhbWUpCiB7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVy
PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370618</attachid>
            <date>2019-05-24 19:02:13 -0700</date>
            <delta_ts>2019-05-24 19:22:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198206-20190524190211.patch</filename>
            <type>text/plain</type>
            <size>505484</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyNjVhYmRkMGVkYTI2ZTdmMWEyZDlk
NGZjNGVmMTJhYjVhM2M5OTguLjlmZGY2NjZiN2ZkMWY2NTkzZDI4M2E2NmFhMjg3YzQ0NDdkY2Uz
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZv
ciBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvT2JqZWN0SWRlbnRpZmllci5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KToKKwog
MjAxOS0wNS0yMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAg
ICAgIFtDTWFrZV0gVXNlIHRhcmdldCBvcmllbnRlZCBkZXNpZ24gZm9yIGJtYWxsb2MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxNWFiZmZhZjY1ZDkwM2MxOWNmNDk0OWE2Nzg1NDg0NDRkOGJmNDk0Li5jZTE2ZjA0
MmFjZDMxYjgyZmVmOWYzYjI3OTEzYzI1ZDIxYzA4MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZvciBwYWdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MjA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLyo6CisKIDIw
MTktMDUtMjMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE92ZXJsYXk6IHJ1bGVycyBzaG91bGQgc3dpdGNoIHNpZGVzIGlmIHRoZXkg
aW50ZXJzZWN0IHRoZSBoaWdobGlnaHRlZCBub2RlKHMpIHNvIHRoZXkgZG9uJ3Qgb2JzdHJ1Y3Qg
YW55IGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZjZjI0MDAwYWQ3NjMwZWM4ZWRkMjdkNGRlZDY5Y2Vh
NzVmYzM0ZS4uM2U2YjcwNWE4ZDI5MDMzMmE1ZWM1NTRjZjE1NzBjY2QxNzk0OTUwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBh
Z2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgy
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdC8qOgorCiAyMDE5LTA1LTIzICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255
LmNvbT4KIAogICAgICAgICBTb2NrZXQtYmFzZWQgUldJIHNob3VsZCBiZSBhYmxlIHRvIGluc3Bl
Y3QgYSBKU0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMWRkNTRlYWZhMzdmZDZiZDYx
NzY3OTI4N2EzODViYmE0MDk0NjU4NS4uOGFjYzQ2NjMyNDRkMjk0NjA4MDk0N2ZhZWU2NDQyYTE0
ZWZjYjg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0y
NCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9u
Z2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VMb2Fk
Q29tcGxldGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaDoKKwogMjAxOS0wNS0xNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgogCiAgICAgICAgIFtDTWFrZV0gVXNlIGJ1aWx0aW4gRmluZElDVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IGY5NzAwZjMxZmNkZjg3YTFiMTJmMDFjMWUyYTc0ZjUwNjc4NzFm
YWIuLjU2ZWU4YzNhYTkwNjczZmMwNzk2YTNkYTRjZDMyYzhmMTE0Nzc1NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlk
ZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEIGNvbnN0KToKKwogMjAxOS0wNS0yMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBJT1NN
QUMgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwN2EzYzA1
NTBhZTIzMjNjMWMxOWJiMjk1MzM5ZmQ4Li5iM2JjYWRkOWRkMTk1YWIzMGIxOGNmMWRhZDMzNTIz
MTE5MjUyNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
MTIyLDYgKzEyMywxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
T2JqZWN0SWRlbnRpZmllcjxUPj4gewogICAgIHR5cGVkZWYgT2JqZWN0SWRlbnRpZmllckhhc2g8
VD4gSGFzaDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBPYmplY3RJZGVudGlmaWVyPFQ+JiBpZGVudGlmaWVy
KQoreworICAgIHRzIDw8IGlkZW50aWZpZXIudG9VSW50NjQoKTsKKyAgICByZXR1cm4gdHM7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok9iamVjdElkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQppbmRleCBjMmM3YzIyNDllM2YxZWMwNzE2NGE5MzA5ODY1YjU3NTgyMzI4
OTEzLi40NDgyZDVkNDc1MDM5YmEwNmQ4OGJhOWUxNzNiMmMzZGY5NzM4ODM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKQEAgLTc3OSw2ICs3NzksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCiAgICAgcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5oCiAgICAgcGFnZS9QYWdlR3JvdXAuaAorICAgIHBhZ2UvUGFnZUlkZW50aWZp
ZXIuaAogICAgIHBhZ2UvUGFnZU92ZXJsYXkuaAogICAgIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9s
bGVyLmgKICAgICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTZhMWY1ZjFkNzE5YjRh
ZjYzZmQ5ZGRhN2UxYWZkNzQ1YTZkZTkwNy4uZWQ2MThmMDdiM2Q0OGMzNjllMDdhMzM1NzNkMzBh
YWRmZGJiMDIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTIxNyw2ICsxMjE3LDcgQEAKIAkJNDY4MkQyMDAxRjc5NzgzMDAw
Qzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERF
MUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBK
U0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3Rv
bS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
QjY1MEREMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0
IC8qIFBhZ2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2lu
ZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5
NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBB
N0QyREQgLyogQWJzdHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5
NTE5NzIwN0Q2MzQwMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAw
QTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzU5OSw2ICs3NjAwLDcgQEAKIAkJNDY4MzQ0
REQxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERPTVJlY3RMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUx
RURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdp
bmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRv
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0Qy
REQgLyogUmVtb3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4
RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDE5Nyw2ICsyMDE5OSw3IEBACiAJCQkJOTMwMkIwQkUwRDc5Rjgy
QzAwQzdFRTgzIC8qIFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5
OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwICovLAogCQkJCTdBNjc0QkRBMEY5RUJGNEUw
MDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLywKKwkJCQk0NkI2NTBEQjIyOTYy
NjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRDVDOUNGQjE5QzdCNTJF
MDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5Q0ZDMTlDN0I1MkUwMEIz
QzVDMSAvKiBQYWdlT3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAv
KiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovLApAQCAtMzA3NTUsNiArMzA3NTgsNyBAQAog
CQkJCTkzMDJCMEJGMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0M0MUZBQTQ0QkMwMDM3RDFFNiAvKiBQYWdlSGVh
cEFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyog
UGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Q0IwNTI0MUZCNTFGMzMwMDA4
OUI5NyAvKiBQYWdlTmV0d29ya0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwMDE5
QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUM5
RDAyMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IDc2OTEyY2FlYjhhNjQwZWQxMzNhYzRh
YWY0ZmE3ZDVjMjg5N2FmYTIuLjBlN2Q1NDIwNWM4MzU2N2FhNjVlMzYwZDQ3YWMwNTMzYTMxNTBl
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgUmVmPEFYSXNv
bGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQodWludDY0X3QgcGFnZUlELCBBWE9iamVj
dENhY2hlJiBjYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRp
YWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYg
Y2FjaGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8g
dHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0eVRyZWUoKTsKQEAgLTg3
LDcgKzg3LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZv
cklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogICAgIHJldHVybiB0cmVlSURDYWNoZSgpLmdl
dCh0cmVlSUQpOwogfQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJ
c29sYXRlZFRyZWU6OmNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIApAQCAtOTcsNyArOTcsNyBA
QCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVlRm9yUGFnZUlE
KHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gbmV3VHJlZTsKIH0KIAotUmVmUHRyPEFYSXNv
bGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQp
CitSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihzX2NhY2hlTG9j
ayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGMwNzVkNWIwMTY3ODEyNjBjNzYwMTliNTBl
MjZmNjA2MDE5ZGUwM2YuLjZlZWMyNjQ1MTk4NGY4ZWJhODg4NGY1OWM1MzM3Y2U1MjZjZDlhNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZU5vZGUu
aCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgpAQCAtNDMsOSArNDQsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBWElzb2xh
dGVkVHJlZT4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+QVhJc29sYXRlZFRyZWUoKTsKIAotICAg
IHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQodWludDY0X3Qg
cGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBp
bml0aWFsaXplUGFnZVRyZWVGb3JJRCh1aW50NjRfdCBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9y
UGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4g
Y3JlYXRlVHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlk
ZW50aWZpZXIsIEFYT2JqZWN0Q2FjaGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJ
c29sYXRlZFRyZWVJRCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZFRy
ZWVOb2RlPiByb290Tm9kZSgpOwpAQCAtNzAsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEFYSXNv
bGF0ZWRUcmVlKCk7CiAKICAgICBzdGF0aWMgSGFzaE1hcDxBWElzb2xhdGVkVHJlZUlELCBSZWY8
QVhJc29sYXRlZFRyZWU+PiYgdHJlZUlEQ2FjaGUoKTsKLSAgICBzdGF0aWMgSGFzaE1hcDx1aW50
NjRfdCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKTsKKyAgICBzdGF0aWMg
SGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2Fj
aGUoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNzIG9uIEFYIHRocmVhZCByZXF1ZXN0aW5nIGRhdGEu
CiAgICAgSGFzaE1hcDxBWElELCBSZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4gbV9yZWFkZXJUaHJl
YWROb2RlTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTcwYTlmN2ZlNTUxYWI1YjU1
NDY0NmZjMzY3N2QxOWU5MjFlMmVjZS4uZDM1NDE2NzNlYThkZDhlM2I3YzZiZTQ2MmM2MTU4NDVj
NDFmN2U1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03NzY2LDcgKzc3NjYsNyBAQCBM
b2dnZXImIERvY3VtZW50Ojpsb2dnZXIoKQogICAgIHJldHVybiAqbV9sb2dnZXI7CiB9CiAgICAg
Ci1PcHRpb25hbDx1aW50NjRfdD4gRG9jdW1lbnQ6OnBhZ2VJRCgpIGNvbnN0CitPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gRG9jdW1lbnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBjMDc2NTU2NTA2YTVjZjk5ODlkMzhjNDc4YmYzM2NmNzg2ZmFmZjA1Li5hMjQ4MWRmOGEz
NjY5YzIwNDE2NTE2MjhmOTg3YzgyM2Y1NzNjNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRlICJNdXRh
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgorI2luY2x1
ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1
ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBAIC02MzUsNyArNjM2
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0
Q2FjaGUoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQVhPYmplY3RDYWNoZSgpOwogCi0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQoKSBjb25zdDsKICAgICAvLyB0byBnZXQgdmlzdWFsbHkgb3JkZXJlZCBoZWJy
ZXcgYW5kIGFyYWJpYyBwYWdlcyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFsbHlPcmRlcmVkKCk7
CiAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBtX3Zpc3VhbGx5T3Jk
ZXJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBiMWJlZDhmMDMyZjlj
ZDI3ODE5M2VlZGNmZmM3Y2YxNTMxODk2YjI2Li4zM2UyNzg2MzgzNjU2OTBkMTZkNzJiM2Q3YjVi
ZTBiZTIwODViNmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IHNob3Vs
ZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpOwogCiAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3Vt
ZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5w
YWdlSUQoKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eSBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvYwogdm9p
ZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZy
YW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFt
ZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQo
KTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29u
c3QgRG9jdW1lbnQmKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJp
bmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9u
KCkpIHsKICAgICAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwpAQCAtMTQ1LDcgKzE0
NSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFy
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1CiBTdHJpbmcgQ29va2llSmFyOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1l
SUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQg
PSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAg
U3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBVUkwmIHUKIGJvb2wgQ29va2llSmFyOjpnZXRSYXdDb29raWVzKGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBj
b29raWVzKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAg
IGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBw
YWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29va2llSmFyLmgKaW5kZXggMGRiMDdjNmQxMmU4ZDliZGFmYzNjMGFiYTZlZTcxYTg5YmMxOTk0
Ny4uMjgxZjg0YzQ5MDA1MjY3ZWEwNTRkNTFkNzY4YTllYjczMmNiYzIzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db29raWVKYXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNTgsNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0cmluZyk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgRG9jdW1lbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIHN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
UEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgdmlydHVhbCBz
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmLCBjb25z
dCBVUkwmLCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCA0ZjBiYjg2ZGRkNTA5OWUzMTFkODlhNDliZTNhM2JlNDA3N2Y1ZTViLi4xZjdhMjlj
NGIzMDFhMzY1ODIyZTQyMzNiNDE1ZGQxYzAwMTkxMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRl
ckNsaWVudCB7CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQog
CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQog
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9v
bCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBtYWlubHkgZm9y
IGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggZWMzOTEyN2ExYWQ2YzI1ZTBkMzQ2YmU3YTQ2OGNiNmVhOThmM2ZjOS4uMDc0ODc2MTE4ZGM2
OTFhYTdjOGFkYTk3Yjc5NzEzNzMzYTI4YTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25lLmgiCiAjaW5jbHVkZSAiTGlua0lj
b24uaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAg
LTEyNiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2Vu
dGF0aW9uKERvY3VtZW50TG9hZGVyKikgPSAwOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlEKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmlu
ZGV4IDhhODIzODFmMDE4MTY1ZTY1M2UzYzRiMjU0ZTU2OTdiNjNjMDlmNzAuLjQ1ZmViNjM1Zjcw
YzM1Yzk5YzcxNmQzOTE0MTJhNWZkMmQxZGVkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkZldGNoT3B0aW9ucy5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMu
aCIKICNpbmNsdWRlICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIgpAQCAtNTcsNyArNTgsNyBA
QCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBMb2FkZXJTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRSZXNvdXJjZShGcmFtZSYsIENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNlTG9hZGVyJiwgYm9vbCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDc3NDUwMDFlNzhh
Yzk3YmUwMjRiMjNkNDExMGVjNGZkMjkwYjdkM2IuLmYyNmE5YWFmMmZkNzk3NGNkM2U3MWM4NTlh
YjQzZmVlMjBmODAzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlv
bi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmF2aWdhdGlvbkFj
dGlvbjo6UmVxdWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
IDogbV91cmwgeyBVUkwgeyBkb2N1bWVudC51cmwoKSB9IH0KICAgICAsIG1fb3JpZ2luIHsgbWFr
ZVJlZlB0cihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX3BhZ2VJREFuZEZy
YW1lSURQYWlyIHsgZG9jdW1lbnQuZnJhbWUoKSA/IHN0ZDo6bWFrZV9wYWlyKGRvY3VtZW50LmZy
YW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpLnZhbHVlT3IoMCksIGRvY3VtZW50LmZy
YW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKDApKSA6IHN0ZDo6bWFr
ZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9wYWdlSURBbmRGcmFt
ZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFt
ZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsg
fSksIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9y
KDApKSA6IHN0ZDo6bWFrZV9wYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4oeyB9LCAwKSB9
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDFh
NDRmOTFkMzY4MWI4MTQwMGU3MTEyN2VhNTI3MmM3NWJlNGJlMDcuLmVkN2QwOWNmMjg5MmJiODRk
ZjJmMjQ5YjA1MTQ3NWQ4ZGM3MzY3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5
b3V0UG9pbnQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTYzLDE0ICs2NCwxNCBAQCBwdWJsaWM6CiAgICAgTmF2
aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYpOwogICAgIE5hdmlnYXRpb25BY3Rpb24m
IG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwogCi0gICAgdXNpbmcgUGFnZUlEQW5kRnJh
bWVJRFBhaXIgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyogcGFnZUlEICovLCB1aW50NjRfdCAvKiBm
cmFtZUlEICovPjsKKyAgICB1c2luZyBQYWdlSURBbmRGcmFtZUlEUGFpciA9IHN0ZDo6cGFpcjxQ
YWdlSWRlbnRpZmllciwgdWludDY0X3QgLyogZnJhbWVJRCAqLz47CiAgICAgY2xhc3MgUmVxdWVz
dGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlcXVlc3Rlcihjb25zdCBEb2N1bWVudCYpOwog
CiAgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAg
ICAgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
Km1fb3JpZ2luOyB9Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KKyAgICAgICAgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5maXJzdDsgfQogICAg
ICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlE
UGFpci5zZWNvbmQ7IH0KICAgICBwcml2YXRlOgogICAgICAgICBVUkwgbV91cmw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRleCAxNGJjMmYz
YmVlZmEyYTYwMzJhMjZjN2Q2YWQyZmNmZDg3YjdjYjJiLi5mZmFkYTFjNDViZTQ2NmI3ZmFkY2Zk
MDY5MTAxMzI1ZWNhMzlkNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVj
dG8KICAgICBtX25vdGlmaWNhdGlvbkNhbGxiYWNrID0gV1RGTW92ZShub3RpZmljYXRpb25DYWxs
YmFjayk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFdURjo6RnVuY3Rpb248
dm9pZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKCFtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayk7CiAg
ICAgbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjps
b2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0IERvYwogfQog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkK
K3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERv
Y3VtZW50JiBvcGVuZXJEb2N1bWVudCkKIHsKICAgICBhdXRvIG9wZW5lclVybCA9IG9wZW5lckRv
Y3VtZW50LnVybCgpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbiB7IG9wZW5l
clVybCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApp
bmRleCBjNDY2MWIwNDc2MDczMjBmZDg3ZmJiM2RiYmI4MDNlNGQxMWQ0YTQxLi5kZTFjOTRhNzJj
ZDQ3MWNjZjdmODJiNWEyY2JiOTE3N2RiNTY4MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgorI2luY2x1ZGUgIlBhZ2VJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTczLDcgKzc0LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVS
TCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBkYXRlZENhbGxi
YWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
ckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9u
Q2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJTb2NrZXRMb2Fk
aW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1l
KT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dTdWJyZXNvdXJjZUxvYWRpbmdO
b3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiYm
KTsKQEAgLTk0LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Ms
IFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KTsK
ICNlbmRpZgogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3RyYWJs
ZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXA7
CiAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+IG1f
bm90aWZpY2F0aW9uQ2FsbGJhY2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1aW50NjRfdCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CisgICAgRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQYWdl
SWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmlj
YXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBt
X2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2
b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlmaWNh
dGlvbkNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjM1MzkwYzhj
M2FlMjc5ZjlkMzY5NWZhNmRlMmU3Zjc5NzY5YzdlZi4uNTJiMmU5NGI3ZWVlMWQxYzU1YTg4NGZk
ZDdiMDRlZGNmZDMyMDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC00ODYs
OCArNDg2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEljb24+IGNyZWF0ZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmlsZW5hbWVzICovKSA9IDA7CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZpcnR1YWwgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdp
c3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8s
IHVpbnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1
YkZyYW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1
aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYm
IC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWlu
Ki8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAv
KnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRpZmllciwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOjpObyk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCmluZGV4IDE1
NmM5Y2QyMDVkNGNmMzI0ZDY4MWY5NzYxMzJjMTZjZTJmMTc0ZDQuLjBkN2IzZGJmNzJmODFlNGZk
NjJhNzNmZWQyNTgxY2VhZWUxNjdiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxG
cmFtZUlkZW50aWZpZXIuaApAQCAtMjUsMTMgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBGcmFtZSBpZGVudGlmaWVyIHRoYXQgaXMgdW5pcXVl
IGFjcm9zcyBhbGwgV2ViQ29udGVudCBwcm9jZXNzZXMuCiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVu
dGlmaWVyIHsKLSAgICB1aW50NjRfdCBwYWdlSUQ7CisgICAgUGFnZUlkZW50aWZpZXIgcGFnZUlE
OwogICAgIHVpbnQ2NF90IGZyYW1lSUQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC00Nyw3ICs0OCw3IEBAIHZvaWQgR2xvYmFs
RnJhbWVJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+CiBPcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IEdsb2JhbEZy
YW1lSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwog
ICAgIGRlY29kZXIgPj4gcGFnZUlEOwogICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0ZDVmOGQyOTc1NjNlZTAyOWM0MTNlOWNkYTc0OTRjNWZhNGQ4YWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBhZ2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBQYWdlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDExNTkw
NTBjZDMyYzkzY2QzYjExY2YxMzIyNTY5ZDY0MWU1MGQ2MzYuLjRlNmI2YWNlMzE4MjljM2ViN2Nh
YWM0NzAyMjMzOGY1MmY5NTFkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCisj
aW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1lU2l0ZUluZm8uaCIKICNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzgsNyAr
MzksNyBAQCBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkgewogICAgIFNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm87CiAgICAgVVJMIHVybDsKICAgICBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMgeyBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm8gfTsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTcxLDgg
KzcyLDExIEBAIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiBDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eTo6ZGVjb2RlKERlCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZnJhbWVJRCkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGFn
ZUlEKSkKKyAgICBPcHRpb25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKKyAg
ICBkZWNvZGVyID4+IHBhZ2VJRDsKKyAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXN1bHQucGFnZUlEID0gV1RGTW92ZSgqcGFnZUlEKTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbmNsdWRlU2VjdXJlQ29va2llcykpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNw
cAppbmRleCAzYjE4ZTYyZmUzOTg3ZGI1ZmM4NjE5YmZmY2E2MmE0ODZmNDhhODA4Li42M2RmMDU4
OGRjOWZjYzY3YTRlOTEwOTU4ZTNkYTQ5YTg5NGYwZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBA
IC02NiwxMiArNjYsMTIgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4KICAgICByZXR1cm4gbV9y
ZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2ll
cyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKSBjb25zdAogewogICAgIHJldHVybiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCByZXF1ZXN0LnVybCgpLCBmcmFtZUlELCBwYWdlSUQpOwog
fQogICAgIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QK
K2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJM
JiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7
CiAgICAgUmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiB7IGZpcnN0UGFydHlGb3JD
b29raWVzIH07CiAgICAgaWYgKGZpcnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQpAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21h
aW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpCiAgICAgICAgIG1fcmVnaXN0cmFibGVE
b21haW5zVG9CbG9ja0Nvb2tpZUZvci5yZW1vdmUoZG9tYWluKTsKIH0KIAotYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFp
biwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lSUQpIHsKICAgICAgICAgYXV0byBmcmFtZXNH
cmFudGVkSXRlcmF0b3IgPSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlE
KTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3QKICAgICByZXR1cm4gZW50cmll
czsKIH0KICAgICAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIWZyYW1lSUQpIHsKICAg
ICAgICAgaWYgKGZpcnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQpAQCAtMTgyLDcgKzE4Miw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdl
QWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIGF1dG8gaXRlcmF0aW9uID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5k
KHBhZ2VJRCk7CiAgICAgaWYgKGl0ZXJhdGlvbiA9PSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNj
ZXNzLmVuZCgpKQpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0CiAg
ICAgaXRlcmF0aW9uLT52YWx1ZS5yZW1vdmUoZnJhbWVJRCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGVhclBh
Z2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7
CiAgICAgbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5yZW1vdmUocGFnZUlEKTsKQEAgLTIx
NSw3ICsyMTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpCiAgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyA9IFdURjo6bnVsbG9wdDsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0Rv
bWFpbiwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvbW1p
dHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlmIChzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
KGZyb21Eb21haW4pKQogICAgICAgICBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQ
cmV2YWxlbnRSZXNvdXJjZS5hZGQocGFnZUlELCB0b0RvbWFpbik7CkBAIC0yMjcsNyArMjI3LDcg
QEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKCkKICAgICBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRp
b25UZXN0TW9kZSA9IHRydWU7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK09wdGlvbmFsPFNlY29u
ZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkgY29uc3QKIHsKICAgICBpZiAoIW1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgfHwgIXBh
Z2VJRCB8fCBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJj
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKaW5kZXggMDMwMjAwZGY5YzQ0ZmQ0YmNmMmY1ODcyZGRkZmRhNTYzMjU5
ODUwYi4uM2YzOWM4YWNkOGIwZDNkMWU4NzUzOGFiODVlN2YyNmZlOWQxNTNlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJS
ZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
bWFpbkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJs
b2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2ll
cywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hv
dWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVu
dFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYg
ZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+
IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmlj
RGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9t
YWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFn
ZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
U2Vjb25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25k
cz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21t
aXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJ
ZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNX
aXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMs
MTQgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1
aW50NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVs
dEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVpbnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFn
ZUlkZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0
SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dWludDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBh
Z2VJZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFp
bj4+IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBt
X2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmln
YXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRU
b1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmln
YXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5kZXggNjdkZjc2NGQyYzRhZTQ1YTk2
ODU5NDRhYzQyMTVjZDU1M2EyYjI1MS4uMzMwYWE2MDg2NjE0MGIyNGQ5YjcwNTIzODNhODFjZWNm
OTBiOTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKQEAgLTE4
OSw3ICsxODksNyBAQCBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVDb29raWVzKENGRGljdGlvbmFy
eVJlZiBoZWFkZXJGaWVsZHMsIENGVVJMUmVmIHVybCkKICAgICByZXR1cm4gcGFyc2VkQ29va2ll
czsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTIy
NSw3ICsyMjUsNyBAQCBzdGF0aWMgYm9vbCBjb250YWluc1NlY3VyZUNvb2tpZXMoQ0ZBcnJheVJl
ZiBjb29raWVzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFN
KGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMjQwLDcgKzI0MCw3IEBA
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
ckRPTShjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAgcmV0dXJuIHsgY29va2llU3RyaW5nLCBkaWRB
Y2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfHwgcG9saWN5ID09IENG
SFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnRE
b21haW4gfHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lBbHdheXM7
CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA2Mzc0MDM1MmM0YTYyN2Vk
NmZlZWQ2OWZmZWIwOWQxOTdhODg3NGM3Li41NTdlOTc3YjRkNzJhYzgxOTdlOTllMjk2ZTRjMjEw
MDc2NzNjYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTI5
NCw3ICsyOTQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNB
cnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJl
ZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKQorc3RhdGljIE5TQXJyYXkg
KmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBpZiAoc2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFt
ZUlELCBwYWdlSUQpKQpAQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
CiB9CiAKIGVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwg
SW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
c0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpCitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQ
T25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpCiB7CiAgICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykpOwogCkBAIC0zNjMsMTIgKzM2MywxMiBAQCBzdGF0aWMgdm9pZCBkZWxldGVBbGxI
VFRQQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCiAgICAgQ0ZI
VFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZSk7CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBE
b05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVD
b29raWVzKTsKIH0KQEAgLTM3OCw3ICszNzgsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbgog
ICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJz
dFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51
cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIElu
Y2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9
CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogCkBAIC00NDMsNyArNDQz
LDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRS
YXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIHJhd0Nvb2tp
ZXMuY2xlYXIoKTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAK
aW5kZXggMmMxMTU2OGZjZTViMjg5MTI2MGRhM2JlOTFmODkxN2MwODUxMjdhOC4uZDYwZDcwYTgz
NjgzMDEzN2VlNjBkYjBlNzY0ZWRiZjUyNTc0ZjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtNTksNyAr
NTksNyBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3Ry
aW5nKCk7CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKK3ZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21IVFRQ
UmVzcG9uc2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzCiAgICAgY29va2llSmFy
REIuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6
Ok5ldHdvcmspOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpj
b29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFy
Q3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0o
ZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BB
UkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMTEzLDcgKzExMyw3
IEBAIGJvb2wgQ29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFi
YXNlKCkuaXNFbmFibGVkKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2ll
cyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKSBjb25zdAorYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5NGM4
NmFmZThmNzQwYWVkZDI4YWQ5NzI3Mjc1MWVlYmEzODQzMjMuLjY4NzJiMGFjOWIwMDE5ZGU1ODNl
YjI2OGM4Yzk0NTc5OWVmOTQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5j
cHAKQEAgLTgwLDcgKzgwLDcgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwogfQog
Ci12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKIHsKICAgICBjb29raWVTdG9yYWdlKCkuc2V0Q29va2llc0Zyb21ET00oKnRo
aXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHZhbHVl
KTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNFbmFi
bGVkKCp0aGlzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICByZXR1
cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0K
QEAgLTE1NCw3ICsxNTQsNyBAQCBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldENvb2tpZXMoY29uc3QgVVJMJikKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmdldFJhd0Nvb2tpZXMoKnRoaXMs
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJhd0Nvb2tp
ZXMpOwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpm
bHVzaENvb2tpZVN0b3JlKCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQgdG8g
dXNlLgogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9y
YWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDFmNzU4NzdhODJiMzE4Mzk0NzYxMTIzYmU2ZjU4NWE0
NzYxY2Y4OTYuLmY2NjQxZWZlYjQ0YzczNDM0ZTRkMTVhNGE1YWJlZGQ4NTZmMjBlNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29raWVz
LCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBWZWN0b3I8
Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwp
CiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAgICAg
VU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIuZ2V0
KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJB
TShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01MjIsNyArNTIy
LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Np
b24oKnRoaXMsIHVybCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0
eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDk2NjFiYzQz
N2U5ODU0MmI2YzVjMWQ2NjQ4OTZmNjAyODVhN2ZiM2QuLjU0MzkwMmZmNTM0ZWE1MGE0ZGViMDUx
NjJjMmVlYjM1YmEyZDdkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5k
ZWYgUmVzb3VyY2VSZXF1ZXN0X2gKICNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2luY2x1
ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgog
I2luY2x1ZGUgIlVSTFNvdXAuaCIKIApAQCAtMzgsNyArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlh
dGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDYsNyArNDYsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJs
LCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAg
ICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBG
bGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwgbV9p
bml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01NCw3ICs1Myw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFz
ZSh1cmwsIHBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAg
ICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkK
LSAgICAgICAgICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTYzLDcgKzYxLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNl
KFVSTCgpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBt
X3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAg
ICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03MSw3
ICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZShVUkwoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAg
ICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAg
ICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1
cGRhdGVGcm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CkBAIC04MCw3ICs3
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShzb3VwVVJJVG9VUkwoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3QpKSwgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlh
dGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9tU291cFJlcXVl
c3Qoc291cFJlcXVlc3QpOwogICAgICAgICB9CkBAIC0xMDAsOCArOTUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3Mgc291cE1lc3NhZ2VGbGFncygpIGNv
bnN0IHsgcmV0dXJuIG1fc291cEZsYWdzOyB9CiAgICAgICAgIHZvaWQgc2V0U291cE1lc3NhZ2VG
bGFncyhTb3VwTWVzc2FnZUZsYWdzIHNvdXBGbGFncykgeyBtX3NvdXBGbGFncyA9IHNvdXBGbGFn
czsgfQogCi0gICAgICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCB7IHJldHVy
biBtX2luaXRpYXRpbmdQYWdlSUQ7IH0KLSAgICAgICAgdm9pZCBzZXRJbml0aWF0aW5nUGFnZUlE
KHVpbnQ2NF90IHBhZ2VJRCkgeyBtX2luaXRpYXRpbmdQYWdlSUQgPSBwYWdlSUQ7IH0KKyAgICAg
ICAgUGFnZUlkZW50aWZpZXIgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dGlhdGluZ1BhZ2VJRDsgfQorICAgICAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlSUQoUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKSB7IG1faW5pdGlhdGluZ1BhZ2VJRCA9IHBhZ2VJRDsgfQogCiAgICAg
ICAgIEdVbmlxdWVQdHI8U291cFVSST4gY3JlYXRlU291cFVSSSgpIGNvbnN0OwogCkBAIC0xMTMs
NyArMTA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hY2NlcHRF
bmNvZGluZyA6IDE7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7Ci0gICAg
ICAgIHVpbnQ2NF90IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgUGFnZUlkZW50aWZpZXIg
bV9pbml0aWF0aW5nUGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VNZW1i
ZXJzKFNvdXBNZXNzYWdlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VC
b2R5KFNvdXBNZXNzYWdlKikgY29uc3Q7CkBAIC0xNjIsMTAgKzE1NywxMSBAQCBib29sIFJlc291
cmNlUmVxdWVzdDo6ZGVjb2RlV2l0aFBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zb3VwRmxhZ3MgPSBzdGF0aWNfY2FzdDxTb3VwTWVz
c2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKTsKIAotICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQ
YWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbml0aWF0aW5nUGFnZUlEKSkKKyAgICBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBkZWNvZGVyID4+
IGluaXRpYXRpbmdQYWdlSUQ7CisgICAgaWYgKCFpbml0aWF0aW5nUGFnZUlEKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2VJRDsK
KyAgICBtX2luaXRpYXRpbmdQYWdlSUQgPSAqaW5pdGlhdGluZ1BhZ2VJRDsKIAogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDBmNmVhMTk3ODdhNDZjNzQ3
NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUuLjBlZDI1YjM3ZDVmODA4NzY4MTI1Mzg3NzA4OTBhZjli
ODhlOTM2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBS
ZXF1ZXN0KSBjb25zdAogewogICAgIGlmIChtX2luaXRpYXRpbmdQYWdlSUQpIHsKICAgICAgICAg
dWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1aW50NjRfdCo+KGZh
c3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSkpOwotICAgICAgICAqaW5pdGlhdGluZ1BhZ2VJRFB0
ciA9IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgKmluaXRpYXRpbmdQYWdlSURQdHIgPSBt
X2luaXRpYXRpbmdQYWdlSUQudG9VSW50NjQoKTsKICAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGFf
ZnVsbChHX09CSkVDVChzb3VwUmVxdWVzdCksIGdfaW50ZXJuX3N0YXRpY19zdHJpbmcoZ1NvdXBS
ZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSksIGluaXRpYXRpbmdQYWdlSURQdHIsIGZhc3RGcmVl
KTsKICAgICB9CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBk
YXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0KSBjb25zdAogdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21Tb3VwUmVxdWVzdChTb3VwUmVxdWVzdCogc291cFJlcXVl
c3QpCiB7CiAgICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1
aW50NjRfdCo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBSZXF1ZXN0KSwgZ1NvdXBS
ZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSkpOwotICAgIG1faW5pdGlhdGluZ1BhZ2VJRCA9IGlu
aXRpYXRpbmdQYWdlSURQdHIgPyAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA6IDA7CisgICAgbV9pbml0
aWF0aW5nUGFnZUlEID0gbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihp
bml0aWF0aW5nUGFnZUlEUHRyID8gKmluaXRpYXRpbmdQYWdlSURQdHIgOiAwKTsKIH0KIAogdW5z
aWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApp
bmRleCA4NzljMGIxOWU5NjZmMjk2OWJhMGFmNDc4YjZlODNlNjMwNWI5NDBiLi5iNjg5YzNlMjVh
ZDgyM2VjZjZkMzA0ZWU3ODljYTlmMzQ1ZGEyZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3MTYsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3RvcmFnZUlt
bWVkaWF0ZWx5KCkKICAgICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQzLDcgKzc0
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgT3Bl
bmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWlu
JiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAg
LTgxNCw3ICs4MTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RG
TW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFp
biYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZN
b3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBh
Z2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21h
aW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJs
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNzYwZDJhM2UxZWNiZGU4
Yjc1ODUzNzU1ZTNhZTkwLi5iZmMyMzM5Njg1MzMyMDAyNjI2Nzg5NDMxYWUwNzNiMmQzOTc1ZjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlmTmVl
ZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9w
ZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9yRG9t
YWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpIG92ZXJyaWRlOwogCkBAIC05
MSw5ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVsZW1l
dHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3Qg
U3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+
LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFt
ZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wg
aXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3ICsx
NTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCBy
ZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21h
aW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBTdGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2YWxl
bnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOwog
ICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0gICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFt
ZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVy
bmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1By
ZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50
UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVEYXRhUmVj
b3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwZWU3Zjk2Mzg5NDYxNWRm
ZDEzNWIxODQwOTBiNTNmODFiZDlkZmY0Li5hNWYyNjI0ZTQzMzRjZTkwMzlmYWE1ZTJkMWU1YzQx
ZmQwZDA4N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAgICAgICAgbV9wZXJz
aXN0ZW50U3RvcmFnZS0+c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpZZXMpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFn
ZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgcwogICAgIH0pOwogfQogCi12b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFp
biwgRnJhbWVJRCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFp
biwgRnJhbWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3ViRnJhbWVEb21haW4mJiBzdQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9wZW5l
clBhZ2VJRCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBv
cGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAh
PSBvcGVuZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjg3
LDcgKzI4Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluCiAgICAgZ3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3Zl
KG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiBzdWJGCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJG
cmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHBy
b21wdFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZy
YW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdh
c1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oCmluZGV4IDQ0ZWZiZjRkZWMxNGYyMDI3MDJhY2FkMDc3NjhmNWFjODIwYjgwNWEu
LjQ1ZjdlMWI3NTk2OTNjMTEwM2EzZDY2MjczMTZkNmZjZTAyZTRjZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYm
LCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQp
PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BG
cmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
RnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRp
b24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0
IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9t
YWluJikgb3ZlcnJpZGU7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
Y3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVk
IHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbihj
b25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21haW4+
JiwgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBncmFu
dFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYm
LCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZy
YW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
Jik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudChS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVidWdN
b2RlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3OWNj
MWYxYjk0NTYyMWI5YTA1NTI0ODRjMDk2YzUuLmQ3Nzk4YjI1ZDFlM2JiYmI3OGE4N2FiM2UxYTVh
MzEzOWYxNGJhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
QEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3BlbmVy
RG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyUGFn
ZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcg
RnJhbWVJRCA9IHVpbnQ2NF90OwogICAgIAogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSgpOwpAQCAtMTEwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3Jh
Z2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdl
SUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZvaWQg
cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAg
ICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RlYnVn
TW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH07CiAgICAg
dm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0
ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURv
bWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDg3
MWIxOWQyZjA3NDg2ZTBmNGJiNzYzYzY5ZGFhMWFhZmY4N2M5OTIuLjYyMjQzMGNkOGU0ZjA5ZWNh
ZjhmYTM2OGEzODlmMGNhYjg3YzEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxXZWJDb3IKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoc3Vi
RnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CkBAIC0yOTgsMTIgKzI5OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcwogICAg
IH0pOwogfQogCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291
cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBtX25l
dHdvcmtTZXNzaW9uID8gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCku
aGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJ
RCwgcGFnZUlEKSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
cihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNh
bGxiYWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMxNSw3ICsz
MTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUgogICAgIGNhbGxiYWNrKGZhbHNlKTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
c3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duOjpObyk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWkK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVEb21h
aW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBSZWdp
c3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGUKICAg
ICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlz
b2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMzk2LDcgKzM5Niw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgfSk7CiB9CiAKLVN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5
RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQogewogICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00MDksNyArNDA5
LDcgQEAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QKICAgICByZXR1cm4gaXNTdG9yYWdlR3JhbnRl
ZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsR3Jh
bnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRs
ZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAppbmRleCA4NzU5ZDYwMTY2YTU1MGVlNjlhNjJiMTcxZGVhODZmZTNhNDFiOTJmLi43OWNm
MjQ2MDFjMzJlNzA1Y2Q4YjQ1M2Y5MjNiZmQzNjYzMTE0ZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04Miw4
ICs4Myw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVp
bnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQg
PSB1aW50NjRfdDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93biA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEwNCw3
ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwogCkBA
IC0xMTgsMTEgKzExNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlv
bihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFU
b1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0
cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBi
b29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lk
IHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGxv
Z1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VB
Y2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNz
SGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0
aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxs
VXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBWZWN0
b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+Jik7Ci0gICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxIYXNT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CiAKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlQ
YWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVz
b3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsKIAog
ICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBP
cGVuZXJEb21haW4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYs
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5NzE4
MzZhZGE1YWU4Mjk3YjViNTc5MDZiYzkwNWMxODNjZWI2ZC4uNGQzZDE2OWY2YWY5ZjQzYjc2MTA4
MWNmYmZlNjBhZmM1YTM5M2ZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgICAgICBTdHJpbmcgdXNl
ckFnZW50OwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7Ci0gICAgICAgIHVpbnQ2
NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAg
ICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCAzZDcxZjhmNmIxYjZjMjZkYjA1NTBmODhhYTVlZTExNDQyMTBhOTA2
Li45MmM4YjdhZTQ0ZmIzYjc3NGQ2YjA1OThjNDE5YzM4M2ZlYjA5MjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZp
ZXIKICAgICBBU1NFUlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVudGlm
aWVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBhZ2VMb2Fk
Q29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKIHsK
ICAgICBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHdlYlBhZ2VJRCk7CiB9
CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2kKICAgICBsb2FkZXIt
PmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNv
b2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CiAgICAgYXV0byByZXN1bHQgPSBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBAIC01MjUsNyArNTI1
LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Np
b24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24uc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKQEAgLTU0MiwxMyArNTQyLDEzIEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZVNlc3Npb24obmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5jb29raWVzRW5hYmxlZCgpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKG5l
dHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0
KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRS
YXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHJlc3VsdDsKICAg
ICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmdldFJhd0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0
KTsKQEAgLTYzOCwxMyArNjM4LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVTdG9y
YWdlQWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vz
c2lvbi0+Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdl
SUQpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlCiAgICAgfQog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAtNzA5LDcg
KzcwOSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50
ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBu
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKSB7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbkkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6WWVzLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIGlm
IChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKQEAgLTc0NSw3ICs3NDUs
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vz
c1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0X3Qg
cGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVz
b3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCitPcHRpb25hbDxOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRUcmFj
a2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9u
SUQmIHNlc3Npb25JRCkKIHsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCkK
ICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmNsZWFyKCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0Zv
clBhZ2UodWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQpCiB7CiAgICAgZm9yIChhdXRvJiBhY3Rpdml0eVRyYWNrZXIgOiBtX25ldHdvcmtBY3Rp
dml0eVRyYWNrZXJzKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVRyYWNrZXIucGFnZUlEID09IHBh
Z2VJRCkKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NAogICAgIH0p
OwogfQogCi1zaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290TmV0
d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCkKK3NpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQogewogICAgIHJldHVybiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmZpbmRNYXRjaGluZyhb
Jl0oY29uc3QgYXV0byYgaXRlbSkgewogICAgICAgICByZXR1cm4gaXRlbS5pc1Jvb3RBY3Rpdml0
eSAmJiBpdGVtLnBhZ2VJRCA9PSBwYWdlSUQ7CkBAIC05MDMsMTcgKzkwMywxNyBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRzKCkK
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6Q2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dlYlBy
b2Nlc3NJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7CiAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQoKSwg
c2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc1JlbW92ZWQobV9j
b25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Np
b25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VzKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBB
TDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYg
cGFnZXMpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2Vk
KG1fY29ubmVjdGlvbi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggY2JjN2JiZmU4ZjU3ZDc1NDEzMTU4MTA0Zjg4YTU0NDAwOTQyMDc2
Yi4uMDZkNTc5Njg4Mjg2NThlMTY4YzJjODFmNzI4MWYxZjk2MGM4MDRiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRNYXAuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzMsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBtX25l
dHdvcmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VM
b2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBi
b29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlvbmFs
PE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9v
bCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0b3BU
cmFja2luZ1Jlc291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6OkJs
b2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVhckNv
bm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQg
d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAg
dm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRk
ZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBvbGRQYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NT
ZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcik7CkBAIC0xNzAsMTYgKzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJl
Y29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVz
b3VyY2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRf
dCB3ZWJQYWdlSUQpOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnRE
b3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lk
IGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAot
ICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYm
KTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vz
c2VkKT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+
JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAgcHJp
dmF0ZToKICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZv
aWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRh
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlE
KTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2xl
YXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rp
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBs
b2dXZWJTb2NrZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IFdhbGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAg
ICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFy
Z2V0RG9tYWluKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5l
clBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAg
IHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bik+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQ
QUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2
b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIzOSwy
OSArMjQwLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KGNvbnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAgICAg
ICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlciYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcih1aW50NjRfdCBwYWdlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBhZ2VJ
RCB7IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAgICAg
ICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVs
OjpMb2FkUGFnZSB9CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlTmV0
d29ya0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgcmVzb3VyY2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNv
dXJjZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAgLCBy
ZXNvdXJjZUlEIHsgcmVzb3VyY2VJRCB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7
IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICB1aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciByZXNvdXJjZUlEIHsgMCB9OwogICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsgZmFs
c2UgfTsKICAgICAgICAgTmV0d29ya0FjdGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7CiAg
ICAgfTsKIAogICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0gICAg
dm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCk7Ci0gICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzaXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBmN2M5N2VlYmIyMTNjZDc4M2NhZjRlMjA0NjliZmEzY2UxOTRjOGNlLi44MzNl
NzRmY2Y2MDAzZWI4M2FjMWRlMmQ4YzZiZmMwZmYyNWI5ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDE4ICsyNiwxOCBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVy
Zm9ybVN5bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
IHJlc291cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4gZGF0YSkg
U3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCiAgICAgUmVtb3ZlTG9hZElkZW50aWZpZXIo
dWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKLSAgICBQYWdlTG9hZENvbXBsZXRlZCh1
aW50NjRfdCB3ZWJQYWdlSUQpCisgICAgUGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkKICAg
ICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAgU3Rh
cnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBk
b3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dl
c3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNG
b3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcg
Y29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCi0g
ICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQ
YXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBT
dHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgU2V0Q29v
a2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKLSAgICBDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJz
dFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2ll
cykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJ
bmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9u
b3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0UmF3
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIERl
bGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29r
aWVOYW1lKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0aCwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcg
Y29udGVudFR5cGUpCkBAIC01NiwxNiArNTYsMTYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEVuc3VyZUxlZ2FjeVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIENsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCk7CisgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQogICAgIExvZ1dlYlNv
Y2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZUxvYWRpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXRE
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGlt
ZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRp
c3RpY3MpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwotICAgIFJlcXVlc3RTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChlbnVtOmJvb2wgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKLSAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
LCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5l
ckRvbWFpbikKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisg
ICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQog
I2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNl
T3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC04Nyw3ICs4Nyw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
IAogICAgIFNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJZGVudGlmaWVyKQogCi0gICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCi0gICAgV2Vi
UGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQp
Ci0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25J
RCwgVmVjdG9yPHVpbnQ2NF90PiBwYWdlcykKKyAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKKyAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyAgICBX
ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBWZWN0
b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGQxNGIxZGU5
ZDkxYzAyMmI3ZTBlMDM4MjE3NGRhODgyMmI5M2EzMTguLjQwOTcxNGQ2NjcyNmE4NDc0YWZmMjlh
MTYwODE3ZjI0Nzk2N2IwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzU2FtZU9yaWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3RvY29s
SXNCbG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAotTmV0
d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYmIG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYm
IHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYg
cmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQorTmV0d29y
a0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQogICAg
IDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMzFkMTFj
M2E4YWVjYjJhYWZkNDllNWMzMTAzOThlMGFjMTZkZGVlNy4uNTdkZjFkYTQ2ODBkMjU4NGVlMjE2
YWFkZmYwOGRlODJhMTM2YmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtM
b2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwgT3Ro
ZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYg
cmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVlc3RM
b2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5ldHdv
cmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3Jl
OjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRl
RW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
cyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOwog
ICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRyaXBs
ZXQgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nl
c3M7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBIZWFk
ZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tz
LgogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAvLyBO
ZWVkZWQgZm9yIENPUlMgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggODk2Mzk5ZDEzMzI1ZDAxNGExNzRi
Zjc3YjRjYTYzNmNhZjJlMGM0Ni4uODk3MzBjZjlmZDI2OTliY2ZkMzJkZGMzOGVmOGNlMDM3NDZh
MzAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrQWN0
aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVuY2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTM4LDcgKzM5LDcgQEAgZW51
bSBjbGFzcyBQcmVjb25uZWN0T25seSB7IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgeyAwIH07CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEOwogICAgIHVpbnQ2NF90IHdlYkZyYW1l
SUQgeyAwIH07CiAgICAgV1RGOjpQcm9jZXNzSUQgcGFyZW50UElEIHsgMCB9OwogICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgpIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IGE1ZDZmNWNmY2M3YzQzMjVlOWFkNzMxMzZmMzZmZGEyOTlkMWRlMGIuLmFjNGQzMmJmMmQz
MTE3MTE4MDM1ZTIzY2Y4YjFkNWIxYmI2ZWI0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFBBTDo6U2Vzc2lvbklEIHNlcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb21taXR0ZWRDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9tYWluLCBwYWdlSUQpOwpAQCAt
MTk1NCw3ICsxOTU0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCBhbGxvd3MsIENvbXBsZXQKICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2Fn
ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNo
b3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTk2Miw3ICsxOTYyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3MKICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dE
aWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCBTaG91bGRT
YW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBl
IHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25v
c3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
IHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBs
aW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NzAsNyArMTk3MCw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50
NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgU2hvdWxk
U2FtcGxlOjpObyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWdu
aWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxk
TG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47CkBAIC0yNjE5
LDcgKzI2MTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5l
dHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNzaW9uLT5yZW1vdmVLZXB0
QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNB
ZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUGFnZUlkZW50aWZpZXIg
b2xkUGFnZUlEKQogewogICAgIGlmICghcGFnZUlEIHx8ICFvbGRQYWdlSUQpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDYW5ub3QgYWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjQ0LDcg
KzI2NDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRAogICAgICAgICBzdG9yYWdlTWFuYWdl
ci5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG9sZFBhZ2VJRCwgcGFnZUlEKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQp
CiB7CiAgICAgaWYgKCFwYWdlSUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgcmVtb3Zl
IHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjc0LDcgKzI2NzQsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKICAgICBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5zdG9yYWdlTWFuYWdlcigp
LnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgcGFnZUlEcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdl
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZUlEcykKIHsKICAgICBhdXRvIGNv
bm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKICAgICBBU1NFUlQobV9zZXNzaW9u
QnlDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDdhY2IzZjk2NzVjM2Q5NDg3Mzk4
YzdhN2QwY2YzNjNhOTk3NDU3YWEuLmViZjNiN2ZlNjUwMWQ1MjQzYmQyZGUwMzI2YmIzN2ZmNDgw
MjNiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURC
U2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMu
aD4KQEAgLTEzNiw4ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21h
aW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBP
cGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVu
ZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1
c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMTkwLDkgKzE4OSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gRGlhZ25vc3RpYyBtZXNzYWdlcyBs
b2dnaW5nLgotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1
bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZh
bHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJl
cywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZv
aWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3Vy
Y2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtMjU4LDcgKzI1Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJl
Y3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lkIGNv
bW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRz
V2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtMjcxLDEwICsyNzAsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25J
RCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6
U2Vzc2lvbklEKSBjb25zdDsKIAotICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVj
dGlvbiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJ
RCk7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChJUEM6
OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQQzo6
Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCB3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYpOwotICAg
IHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+Jik7CisgICAgdm9pZCB3ZWJQcm9jZXNzU2Vz
c2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mKTsKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9y
aWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQ5ZmVlMDc4
ZmU3MzUzNGJjZTQ2ZDUyMmFmM2NkMjRiNjM5YjdjNjIuLmY1ZWY1MzAxMzQwMjM3YzcyMmVkOTU3
NTViODNiZmQ1ZDE4YjBlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTMxLDcgKzEzMSw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVkaXJlY3RlZFRvRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0
ZWRGcm9tRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAg
IENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKSAtPiAoKSBBc3lu
YworICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEKSAtPiAoKSBBc3luYwogICAgIFNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21h
aW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIERl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+
ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDU4YWFjYjk5M2RiOThh
Y2NkYTY1MjJkOTU2NGM5ZWFhODk0YmRhODEuLjMzY2RjNGQxN2RiZTJlMDg2NmUzNjEyZWYyMjc2
MWEzODIzODA1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMDcsOCArMTA3
LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LndlYlBhZ2VJRCkpCisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHdlYlBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHdlYlBhZ2VJRDsKKyAgICBpZiAoIXdlYlBh
Z2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC53ZWJQYWdlSUQgPSAqd2Vi
UGFnZUlEOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViRnJhbWVJRCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBmZTI2NTM2ZjIxYzNlZTlhNzAx
ODk4Y2EwNTkzMmQ1NWQxNWQzNGIwLi4wZDRmOWEyYTFhZWE1Yzg4MDBhNWIxM2ZlMzdlMDE3YmJk
YzQ5NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNzQsMTggKzE3NCwxOCBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hl
Y2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChh
dXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwKICAgICAg
ICAgICAgICAgICBbdGhpc10gKFJlc291cmNlRXJyb3ImIGVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBlcnJvciBjaGVja2luZyAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVu
dFBJRCA9ICVkLCBlcnJvci5kb21haW4gPSAle3B1YmxpY31zLCBlcnJvci5jb2RlID0gJWQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9u
b3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgic3RhcnQ6IGVycm9yIGNoZWNraW5nIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQsIGVycm9yLmRv
bWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFn
ZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBt
X3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJv
ci5lcnJvckNvZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3IuaXNDYW5jZWxs
YXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmRpZEZhaWxMb2FkaW5nKGVy
cm9yKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoTmV0d29y
a0xvYWRDaGVja2VyOjpSZWRpcmVjdGlvblRyaXBsZXQmIHRyaXBsZXQpIHsKICAgICAgICAgICAg
ICAgICAgICAgdGhpcy0+bV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hl
ZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+d2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRyaXBsZXQucmVxdWVzdCksIFdURk1vdmUodHJpcGxldC5y
ZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQucmVkaXJlY3RSZXNwb25zZSkpOwotICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogc3ludGhldGlj
IHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVSTCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlz
U3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CisgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2Vu
dCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdhcyBtb2RpZmllZCAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5
bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRoaXMtPmNhblVzZUNhY2hlKHJlcXVlc3QpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogQ2hlY2tp
bmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQs
IGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0
aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVy
cy5wYXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlz
LT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy0+cmV0cmlldmVDYWNoZUVudHJ5KHJlcXVlc3QpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xOTgsNyAr
MTk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICB9CiAgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBvbmNlIG1fbmV0d29ya0xvYWRDaGVja2Vy
IGlzIHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgogICAgIGlmIChjYW5Vc2VDYWNoZShvcmln
aW5hbFJlcXVlc3QoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6
IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFy
ZW50UElEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5n
IGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBp
c1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5w
YXJlbnRQSUQpOwogICAgICAgICByZXRyaWV2ZUNhY2hlRW50cnkob3JpZ2luYWxSZXF1ZXN0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI3LDEzICsyMjcsMTMgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiAgICAgICAgIGxvYWRlci0+bG9nU2xvd0NhY2hlUmV0cmlldmVJZk5lZWRl
ZChpbmZvKTsKIAogICAgICAgICBpZiAoIWVudHJ5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIG5vdCBpbiBjYWNoZSAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNv
dXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNT
eW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdv
cmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgICAgIGlmIChlbnRyeS0+aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFz
IHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWlu
UmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAg
bV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbiA9IFdURk1vdmUoZW50cnkpOwogICAg
ICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRhdGlvblJlcXVlc3QgPSBvcmlnaW5hbFJl
cXVlc3QoKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJl
dmFsaWRhdGlvblJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CkBAIC0yNDEsMjEgKzI0MSwyMSBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGlmIChl
bnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJl
Y3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZv
ckNhY2hlRW50cnkoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShlbnRyeSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChsb2FkZXItPm1fcGFyYW1ldGVycy5u
ZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnktPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZv
KCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVF
bnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBk
b2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNlcnRpZmljYXRlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxv
YWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGVudHJ5LT5uZWVk
c1ZhbGlkYXRpb24oKSB8fCByZXF1ZXN0LmNhY2hlUG9saWN5KCkgPT0gV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlDYWNoZURhdGEpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogVmFsaWRhdGluZyBj
YWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNo
ZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291
cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRl
ci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNh
Y2hlRW50cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9tIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmV0cmlldmVkIHJlc291cmNlIGZyb20g
Y2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOwogICAgICAgICBsb2FkZXItPmRpZFJldHJpZXZlQ2FjaGVFbnRyeShXVEZN
b3ZlKGVudHJ5KSk7CiAgICAgfSk7CiB9CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYWQgbG9hZCkKIHsKICAgICBpZiAobG9h
ZCA9PSBGaXJzdExvYWQ6OlllcykgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdv
cmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3Vz
ID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlz
U3luY2hyb25vdXMoKSk7CiAKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgIH0KICAgICBp
ZiAoIW5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRv
IGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIChpZD0lIiBQUkl1NjQgIikgdGhh
dCBkb2VzIG5vdCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0
dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMg
bm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRv
IGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3Qg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklEPSUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgICAgIG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFs
RXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lv
bklES2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICBkaWRGYWlsTG9h
ZGluZyhpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
Mjk4LDcgKzI5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgp
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCi0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRp
b24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3Jp
cHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFy
dE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCku
dXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVw
KExvYWRSZXN1bHQgcmVzdWx0KQpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNv
dXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRo
aXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgIFJFTEVB
U0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBk
b3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93
bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgCiAgICAgLy8gVGhp
cyBjYW4gaGFwcGVuIGlmIHRoZSByZXNvdXJjZSBjYW1lIGZyb20gdGhlIGRpc2sgY2FjaGUuCiAg
ICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJvcnQ6IENhbmNlbGluZyByZXNvdXJjZSBs
b2FkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAgICAgaWYgKG1fcGFyYW1ldGVycy5vcHRp
b25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX2lzS2VwdEFsaXZlKSB7
CiAgICAgICAgIG1faXNLZXB0QWxpdmUgPSB0cnVlOwpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNl
c3RvcnNPclhGcmFtZU9wdGlvCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0
dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcmVj
ZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUi
IFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCByZWNlaXZlZFJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkpOwogCiAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAg
LTUwNSw3ICs1MDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bvbgogdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1Jl
Y2VpdmVkKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQnVmZmVy
OiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5zaXplKCk7CiAKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwpAQCAtNTM0LDcgKzUzNCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNS
ZWNlaXZlZCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5m
b3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTU2
OSw3ICs1NjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wg
PSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgZXJyb3IuaXNUaW1lb3V0KCks
IGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlzQWNjZXNzQ29udHJvbCgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0Fj
Y2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuaXNB
Y2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIGlmIChzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1v
dmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZpZXIoKSk7CkBAIC03MzEsNyArNzMxLDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOwogCiAgICAgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOwogCkBAIC05ODgsNiArOTg4LDExIEBAIHN0YXRp
YyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUp
CiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUudmFsdWUoKSkgOiBTdHJp
bmcoIk5vbmUiX3MpOwogfTsKIAorc3RhdGljIFN0cmluZyBlc2NhcGVJREZvckpTT04oY29uc3Qg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPyBT
dHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOworfTsK
Kwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9u
LCBzZXNzaW9uSUQoKSkpOwpAQCAtOTk4LDcgKzEwMDMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGxvZ0Nvb2tpZUluZm9y
bWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5h
bFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShv
cmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVl
c3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigpKTsK
IH0KIAotc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxv
Y2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDI1LDcgKzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBs
b2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXN0YXRpYyB2b2lk
IGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9i
amVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZv
cm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDg2LDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9p
ZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aQogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRp
ZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlv
biwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGE4
YTMwMDVjMTQyMzA2MTM4ODc2ODIxYTQzYTA1N2EwYjZmM2Q3ZmMuLmE4ZjZkMzE1Nzk4YzRhZGZm
Zjk5ZGE3ZTgyZmZjODMzYTk2NzY4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtODQsNyArODQsNyBAQCBwdWJs
aWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLnNlc3Npb25JRDsgfQogICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAgICAgdWludDY0
X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9Ci0g
ICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KIAogICAgIHN0cnVjdCBTeW5jaHJvbm91c0xvYWRE
YXRhOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwotICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgT3B0aW9uYWw8dWludDY0
X3Q+IGlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpc2FibGVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljc0NhcHR1cmUoKSB7IG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApp
bmRleCA5N2UwYjI0NDA3OGQ4MzJhZWRjZGQ4YTY3OTE4NDE0ZjI4NzBjNjAyLi41NTNjYmFkMTli
YzVhMTk3ZTA2MjUyNzUwZjI4MmNlM2IwNDE2ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCkBAIC00NSw0MCArNDUsNDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9u
c2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQog
ewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIu
ZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVu
Y29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsg
Zm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIHsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRjaDogZmV0Y2hJZGVudGlm
aWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsg
ZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
RmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmll
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAppbmRleCBkMzJjZDQ2Mzg5ZWMwMjJiZmM1MDE0NWI3MzdlZjRjYWFlYzkz
MjMxLi45MWZkYzcxNTk3MWQ3YjE5Y2JiOGI0MmM2NDdkYjMwYzNhZmUyOWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyIHNlcnZpCiAgICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29y
a2VyRnJvbVJlZ2lzdHJhdGlvbklEKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKICAgICBpZiAoIXdvcmtlcikgewogICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyAt
PiBEaWROb3RIYW5kbGUgYmVjYXVzZSBubyBhY3RpdmUgd29ya2VyIiwgZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9jb250ZW50Q29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5k
bGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29udGVudENv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90
SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7CkBA
IC0xNzAsMTMgKzE3MCwxMyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRj
aChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aQogCiAgICAgICAgIGlm
ICghc3VjY2VzcykgewogICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90
SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRpZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIGZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBtX2Nv
bnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6
OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAg
ICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndv
cmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXdvcmtlcikg
ewotICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRp
Zmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTkyLDcgKzE5Miw3
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKS5zdGFy
dEZldGNoKG1fc2Vzc2lvbklELCBtX2NvbnRlbnRDb25uZWN0aW9uLmdldCgpLCB0aGlzLT5pZGVu
dGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVl
c3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZlcnJlcik7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNh
dXNlIGZhaWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIiLCBmZXRjaElkZW50aWZpZXIubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgICAgIG1fY29udGVudENvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFu
ZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAgICAgIG1f
Y29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDAwMzk0NTA1M2Y1NTAz
NGMyMzA4N2U5MDc5OGJmOWI3ZGZiZTg2MjMuLjBiZWQ2OTc2OTVmYTVkOGIzNGJjMjhjNTA3MGEy
YWNjYzA2MjIxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNDk0LDcgKzQ5NCw3IEBAIFN0
b3JhZ2VNYW5hZ2VyOjp+U3RvcmFnZU1hbmFnZXIoKQogewogfQogCi12b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgcXVv
dGFJbkJ5dGVzXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9zZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRf
dCBzdG9yYWdlTmFtZXNwYWNlSUQsCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6
OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3Bh
Y2VJRF0gewogICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFp
bnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCkKICAgICB9KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dl
ZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbih1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIElQQzo6Q29ubmVjdGlvbiYgYWxsb3dlZENvbm5lY3Rpb24pCit2b2lkIFN0b3JhZ2VN
YW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKFBhZ2VJ
ZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29u
bmVjdGlvbikKIHsKICAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVj
dGlvbi51bmlxdWVJRCgpOwogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3Bh
Y2VJRF0oKSBtdXRhYmxlIHsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0
b3JhZwogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKK3ZvaWQgU3RvcmFnZU1hbmFn
ZXI6OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24oUGFnZUlk
ZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mIGFsbG93ZWRDb25u
ZWN0aW9uKQogewogICAgIGF1dG8gYWxsb3dlZENvbm5lY3Rpb25JRCA9IGFsbG93ZWRDb25uZWN0
aW9uLnVuaXF1ZUlEKCk7CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVzcGFj
ZUlEXSgpIG11dGFibGUgewpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6
OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qg
c3RvCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdTdG9y
YWdlTmFtZXNwYWNlSUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgUGFnZUlkZW50aWZp
ZXIgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgbmV3
U3RvcmFnZU5hbWVzcGFjZUlEXSB7CiAgICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChz
dG9yYWdlTmFtZXNwYWNlSUQpOwpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgU3RvcmFnZU1hbmFn
ZXI6OnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFp
cnNUb1JlbW92ZSkKICAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92
ZShwYWlyKTsKIAotICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHNlc3Npb25TdG9yYWdlTmFtZVNw
YWNlSURzVG9SZW1vdmU7CisgICAgICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4gc2Vzc2lvblN0
b3JhZ2VOYW1lU3BhY2VJRHNUb1JlbW92ZTsKICAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzKSB7CiAgICAgICAgICAg
ICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPmFsbG93ZWRDb25uZWN0aW9ucygp
LmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpCiAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UudmFsdWUtPnJlbW92ZUFsbG93ZWRDb25uZWN0aW9uKGNvbm5lY3Rpb25JRCk7CkBA
IC03NzksNyArNzc5LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKIAogdm9pZCBTdG9yYWdl
TWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhKQogewotICAgIG1fcXVldWUt
PmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbm5lY3Rp
b25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHNlY3VyaXR5T3JpZ2luRGF0YSA9IHNlY3VyaXR5T3JpZ2luRGF0YS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlE
KCksIHN0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZUlEID0gbWFrZU9iamVjdElkZW50aWZp
ZXI8UGFnZUlkZW50aWZpZXJUeXBlPihzdG9yYWdlTmFtZXNwYWNlSUQpLCBzZWN1cml0eU9yaWdp
bkRhdGEgPSBzZWN1cml0eU9yaWdpbkRhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChtX2lzRXBoZW1lcmFsKSB7CiAgICAgICAgICAgICBtX2VwaGVtZXJhbFN0b3Jh
Z2UuYWRkKHNlY3VyaXR5T3JpZ2luRGF0YSwgV2ViQ29yZTo6U3RvcmFnZU1hcDo6Y3JlYXRlKGxv
Y2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzKSk7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5oCmluZGV4IGE4ODgzMzJlZmNmYjU5NDEzMGIyNjA4ODQ2YWY0YTE4MjE4MmI3
OTAuLjVlNjVlNTAzOGZkZmY0MTcxMjY3ZDllMzJlZDE4ZTU0ZmMzOTU2YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTUwLDExICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFu
YWdlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB+
U3RvcmFnZU1hbmFnZXIoKTsKIAotICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwot
ICAgIHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCk7Ci0gICAgdm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VD
b25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7
Ci0gICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9u
KHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9p
ZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICB2b2lkIGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQp
OworICAgIHZvaWQgYWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlv
biYpOworICAgIHZvaWQgcmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVj
dGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29u
bmVjdGlvbiYpOworICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKICAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZUNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CiAgICAgdm9pZCB3YWl0VW50aWxXcml0ZXNGaW5p
c2hlZCgpOwpAQCAtMTA3LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxzdGQ6OnBh
aXI8dWludDY0X3QsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4sIFJlZlB0cjxUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZXM7CiAKICAgICBjbGFzcyBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdl
TmFtZXNwYWNlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKIAog
ICAgIEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90
PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmlu
ZGV4IGM3ZjM4NmIzZDdjMzE0NTU4MGYyYWMwZTBlMzUyZWE2Yjg3MTU1YzEuLjhiYmMxNjk3ODU2
MGU0NDYzMjIxZGY3M2FjYjEwODc2MmFiNzY5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFn
ZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KQEAgLTg0LDcgKzg1LDcgQEAgZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CiAgICAgTm9E
dWVUb0V4cGlyZWRSZWRpcmVjdAogfTsKIAotdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFp
cjx1aW50NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47Cit1c2lu
ZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCAvKndlYkZyYW1lSUQqLz47CiAKIGNsYXNzIENhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8
Q2FjaGU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCA5NjVjNmZhNjY0YmNkMTU1
Zjc2Y2RiM2I0ZDczMjZlZWUwM2U5MTg4Li4yZGQwZTdkNDZiYzcxOWU5NmZhMTUwNzRmZWQwMGIx
Yzg4NjY1NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIE5l
dHdvcmtTZXNzaW9uQ29jb2E7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1
YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNv
Y29hOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFU
YXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2
NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNv
bnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNo
b3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29j
b2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1Nu
aWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVj
b25uZWN0T25seSwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIG5ldHdvcmtBY3Rp
dml0eVRyYWNrZXIpKTsKICAgICB9CkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4g
bV9uZXR3b3JrTG9hZE1ldHJpY3M7IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lSUQ7IH07Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSUQ7IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlSUQ7IH07CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
KTsKKyAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRh
VGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50
RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1l
TmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOwogCiAgICAgYm9v
bCB0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQg
YXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9f
c3Ryb25nIE5TVVJMUmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZik7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIHVpbnQ2NF90IG1fZnJh
bWVJRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBtX3BhZ2VJRDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBtX2hhc0JlZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMzVlNDQzYjllZTkxODA1N2FkMzRkZWYwNjhhODk5YmVh
MDY3YWRmNi4uMjhhMDVlODBkYjY4NWFmNjdiMjg0Yzg0MjMxNzE5NGY5N2U4N2UzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFz
a1dpdGhGaXJzdFBhcnR5Rm9yU2FtZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0
YXMKICNlbmRpZgogfQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29j
b2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlm
ZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1Nu
aWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNv
bm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25h
bDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29y
a0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xp
Y3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1Bv
bGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVy
T25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25s
eSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtE
YXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFt
ZUlEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29r
aWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVs
dTogQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAo
dW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0
YXNrSUQgPSAlbHU6IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVy
XSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAg
ICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVz
IiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcu
VVRGOFN0cmluZyk7CiAjZW5kaWYKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJgogICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFs
c1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3Rh
dGVsZXNzQ29va2llbGVzcyB8fCBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNo
b3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZv
cm1hdGlvbigpKQotICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJ
RCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwg
dGhpcywgbV9wYWdlSUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRl
bnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2lu
ZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0
d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJ
bmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTog
JXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQo
KSwgbV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNo
b3VsZEJsb2NrQ29va2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vz
c2lvbiwgIiVsbHUgJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNr
SWRlbnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9j
a2luZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBA
IC0zNzksNyArMzc5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3Vs
ZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAo
bV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5l
dHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2ll
SW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6
IE5vdCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9w
YWdlSUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0s
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0
d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJ
bmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTog
Tm90IHBhcnRpdGlvbmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lk
ZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UK
ICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tp
ZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggYzRmYjAwYjA4M2M0MTEyYTIyYzgxZWM0NWYwODhk
YTA5Y2I4NjllOC4uM2VkZjgyYWRmM2I1YWUzYjI4NGM3ZGQ1OTE1Yjg4NWU3NTIzMTc2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTg2LDYgKzE4NiwzNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQm
JiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJl
cGx5RGlzcGF0Y2hlciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBl
PHR5cGVuYW1lIFQ6OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcik7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vj
b25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3Bh
dGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBP
cHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOworICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFU+CisgICAgdm9pZCBz
ZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgT2Jq
ZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklEID0geyB9KQorICAgIHsKKyAgICAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5PFQsIEM+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgIH0KKyAgICAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2Fn
ZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlv
bj4gc2VuZE9wdGlvbnMgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4gc2VuZDxUPihXVEZN
b3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKKyAg
ICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICB2b2lk
IHNlbmRXaXRoUmVwbHkoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgRnVuY3Rpb25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQo
T3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4m
JiByZXBseUhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gc2VuZFdpdGhSZXBseTxUPihX
VEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlcGx5RGlzcGF0Y2hl
ciwgV1RGTW92ZShyZXBseUhhbmRsZXIpKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNl
bmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CisgICAgfQorICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCB3YWl0Rm9yQW5kRGlz
cGF0Y2hJbW1lZGlhdGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+
KGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAg
IH0KIAogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRp
b25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRo
UmVwbHkodWludDY0X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIEZ1bmN0
aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPik+JiYgcmVwbHlIYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCBkNWY5ODFlNDUzNGIyYTliZDhiNGE1Y2M2MTRlODdj
YTQ0OTU2ZDRhLi4zZDZmMzQyODkyYmM4ODM5MDY3OGU4YzM2NDYzOTExMGRlNGY1NzI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC0zNCw5ICszNCw5
IEBAIGNsYXNzIE1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lc3NhZ2VT
ZW5kZXIoKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBt
ZXNzYWdlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNz
YWdlLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCiAgICAgewotICAg
ICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCB7
IH0pOworICAgICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlv
blNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTQ4LDYgKzQ4LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29k
ZXIpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFQ+CisgICAgYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9iamVjdElkZW50
aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25z
ID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KICAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25T
ZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKQEAgLTY1LDggKzcxLDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRp
bWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgorICAgIHZvaWQgc2VuZFdp
dGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewog
ICAgICAgICBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDUyNTE0OTAyYWJiZTFjYzcxNDZiNDNiZTdjZDhjNDZiYWI0OTA1ODguLjVi
OTc1MzAzMDViMDQ5OWRjOGYyZTg0ZWNjZTBmMzFlOGU2NWQ3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjA1LDYgKzIwNSw3IEBAIGRlZiBmb3J3YXJk
X2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICdTdHJpbmcnLAog
ICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OkZldGNoSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCmluZGV4IGE2YTAwOTk1
NTAwZTc2MzNlMGQ0NWIxOGE0NDdjNzQyYTY5MjIwYWIuLmU2MDVhNDU5NDZmZmM3ZjFkMDdjYjg0
ZThmNWNiOTg3YmJmMzY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElQYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhh
bmRsZS5jcHAKQEAgLTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBh
Z2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhh
bmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsK
IH0KIAotUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVp
bnQ2NF90IHBhZ2VJRCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29u
dmVydGluZyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6
UGFnZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VI
YW5kbGU6OlBhZ2VIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlz
QXV0b2NvbnZlcnRpbmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2Nv
bnZlcnRpbmcoaXNBdXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBh
Z2VIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFn
ZUhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJl
c3VsdCkKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YWdlSUQpKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7Cisg
ICAgZGVjb2RlciA+PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGlzQXV0b2NvbnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1
bHQgPSBpc0F1dG9jb252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNy
ZWF0ZShwYWdlSUQpOworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRv
Y29udmVydGluZygqcGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFm
YmRjMzFiNzkxYTlmYzBhYTYyNmZjOTBhNzQ4ZWYwODk0OC4uNmExY2ZiNjk4MjU5YmY0OGQ0ZDhl
ZDU4ZWNiODdiMGYyMjY3NDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSVBhZ2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhh
bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEFQSVBhZ2VIYW5kbGVfaAogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zOCwyMCArMzksMjAg
QEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFBhZ2VIYW5kbGUgOiBwdWJsaWMgT2JqZWN0SW1w
bDxPYmplY3Q6OlR5cGU6OlBhZ2VIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBh
Z2VIYW5kbGU+IGNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHN0YXRpYyBSZWY8UGFnZUhh
bmRsZT4gY3JlYXRlQXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMg
UmVmPFBhZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc3Rh
dGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7CiAgICAgdmlydHVhbCB+UGFnZUhhbmRsZSgpOwogCi0gICAgdWludDY0X3QgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIGJvb2wgaXNBdXRv
Y29udmVydGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvY29udmVydGluZzsgfQogCiAgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KElQQzo6RGVjb2RlciYsIFJlZlB0cjxPYmplY3Q+Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgUGFnZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZyk7Cisg
ICAgUGFnZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgYm9vbCBpc0F1dG9jb252ZXJ0
aW5nKTsKIAotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIGNvbnN0IGJvb2wgbV9pc0F1dG9jb252ZXJ0
aW5nOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaAppbmRleCA4NmY4MDQxNzA5YWJkNWMzY2Q2NGNkODIwZjg2MzUy
Y2FjMmE0ZDUxLi40MDQwODE3ODAwMmE5NDY3MWQzNTBkZjI2MWUwOGM5NTBlZWYyYjgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a09iakNQdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNzMsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9sYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVj
ZXNzYXJ5OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eVRva2VuPiBtX3BlbmRpbmdSZXBsaWVzOwogICAgIGJvb2wgbV9pc1JlZ2lzdGVy
ZWRBc01lc3NhZ2VSZWNlaXZlciB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9tZXNzYWdlUmVj
ZWl2ZXJJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX21lc3NhZ2VSZWNl
aXZlcklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KaW5k
ZXggNThjYjFkZDJiNWU3YzdjNmIwOTY1YWY2N2E1NTc2MmY0OTU5ODMwNi4uN2U5N2YxNzZjMDhh
NTg1YjFiOWMyNDMwZmU5NjEzYmQzYTM5MTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgs
NyArMjgsNyBAQAogCiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAot
LSAoaWQpX2luaXRXaXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBh
Z2VJRDooV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0g
KGlkKV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFz
aAogewotICAgIHJldHVybiBfcGFnZUlEOworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7
CiB9CiAKIC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJP
T0wpaXNFcXVhbDooaWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVy
ICopY29kZXIKIHsKLSAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdl
SUQiXTsKKyAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpA
InBhZ2VJRCJdOwogfQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAg
LTYxLDcgKzYxLDcgQEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBf
cGFnZUlEID0gW2NvZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJ
RCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2Nv
ZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0Nv
bnRleHRIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYTc0ZmI0Mjhj
MjBlOTdjYmVmNmFkN2UzNjU4OTQzLi40M2U0MWUyNGNkMzYzMzZiNTQ3ODRiMDAzY2YxN2JiYzE2
ZjY3YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKQEAgLTI0LDExICsyNCwx
MiBAQAogICovCiAKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlLmgiCisjaW1wb3J0
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRl
eHRIYW5kbGUgKCkKIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXIgPSBf
cGFnZUlEKSB1aW50NjRfdCBwYWdlSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGdldHRlcj1fcGFnZUlEKSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAKLS0gKGlk
KV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlEOworLSAoaWQpX2luaXRXaXRoUGFnZUlE
OihXZWJDb3JlOjpQYWdlSWRlbnRpZmllcilwYWdlSUQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LmNwcAppbmRleCBlYjhhMGI2NjE3YWU1M2I1MDk4Zjg4NjIwNmNkZjczZTg4NDIxNDM1Li5k
NGUxYzI1MDA4MTEyYmJiZGY1ODM2Zjk2N2YwYzgzYzBjNmY3MTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuY3BwCkBAIC02Niw3ICs2Niw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0
X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKm1fZGVzdGluYXRpb25JRDsKKyAgICByZXR1cm4gbV9k
ZXN0aW5hdGlvbklELT50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpjYW5NYWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBy
ZXBseSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmkKICAgICBwbGF0
Zm9ybU9wZW5QYXltZW50U2V0dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGlu
Z1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvJiBjb29yZGluYXRvciA9IGFjdGl2ZVBheW1lbnRDb29yZGluYXRvclByb3h5
KCkpCiAgICAgICAgIGNvb3JkaW5hdG9yLT5kaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgKaW5kZXggZDIzN2VhYjNkYWI4NzlhNWRhMzU3MWY4OTEwMWQ3ZWU5NzA1
OTZiMi4uNmU0YTg1Y2YyZTI3ZmU0NjVhYWQ3NWNlZTIzYmNhZTJkZTdmZTAyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3Bl
blBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBkb21haW5OYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2
b2lkIHNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBz
aG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
ICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAg
ICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBDbGllbnQmIG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBtX2Rlc3RpbmF0aW9uSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IG1fZGVzdGluYXRpb25JRDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAv
LyBJZGxlIC0gTm90aGluZydzIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggZGQzMTMxMjdiZjRhOGExYWEwYzZkZWNjNmQyMzRmOWJkYmFhYjdk
My4uMWRlNGNkZGNlNGIxMjYzZTJkMGI5NGJmYjkzMTkxNDhiYmMxODIzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhB
Y3RpdmVDYXJkKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGNhbk1ha2VQYXltZW50cykgQXN5bmMK
ICAgICBPcGVuUGF5bWVudFNldHVwKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBk
b21haW5OYW1lKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKLSAgICBTaG93UGF5bWVudFVJKHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAo
Ym9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdz
LCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkg
LT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uKFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lv
bikKICAgICBDb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6
OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRh
dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA2ZWIzMzVmMDdkM2NmZTYyOTAwMDcx
Y2RhYTc4OTNmMDQzMzViZWFhLi45ZGViNzZmZjEzMmM2Y2I1ZmRmNWViZjUyMjIzNGY2ZDQ0M2Vm
OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdWludDY0
X3QgQXV0aGVudGljYXRpb25NYW5hZ2VyOjphZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcChDaGFs
bGVuZ2UmJiBjaGFsbGVuZ2UKICAgICByZXR1cm4gY2hhbGxlbmdlSUQ7CiB9CiAKLWJvb2wgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlKSBjb25zdAorYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNob3VsZENvYWxl
c2NlQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQs
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0CiB7CiAgICAg
aWYgKCFjYW5Db2FsZXNjZUNoYWxsZW5nZShjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMDgsNyArMTA4LDcgQEAgVmVjdG9yPHVpbnQ2NF90PiBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmNvYWxlc2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWwKICAgICByZXR1
cm4gY2hhbGxlbmdlc1RvQ29hbGVzY2U7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChw
YWdlSUQpOwogICAgIEFTU0VSVChmcmFtZUlEKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVp
bnQ2NF90IHBhZ2VJRCwgdQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICB1aW50NjRfdCBkdW1teVBhZ2VJRCA9IDA7CisgICAgUGFnZUlkZW50aWZpZXIgZHVtbXlQ
YWdlSUQ7CiAgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5n
ZU1hcCh7IGR1bW15UGFnZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikgfSk7CiAgICAgCiAgICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0
aGUgc2FtZSBwcm90ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaAppbmRleCA3ZmUzOTllMGI3ZTk0NThiZDkxNzgyNTkzODQxZTRjNDQ5MzM1YWUx
Li44NmU3NDRjMTA4ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2YjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2
MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
Jik7CiAKICAgICB2b2lkIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
Y2hhbGxlbmdlSUQsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6
OkNyZWRlbnRpYWwmJik7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgQ2hhbGxlbmdlIHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKICAgICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXIgY29tcGxldGlvbkhhbmRsZXI7CiAgICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCiAgICAgdWludDY0X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VN
YXAoQ2hhbGxlbmdlJiYpOwotICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKKyAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50
NjRfdD4gY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0
NzVkYzJiYjhmZjc3ZmE0MTcyNWMwODNiMGY3NTA5OTUzOS4uMTkyNTNlMmJhYjZhMTdiZWY0NjYz
NjY3ZmQ0OGFiOWU5ZTA1MTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4
aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nl
c3MuaApAQCAtNjIsNiArNjIsMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNz
YWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
LCByZWNlaXZlcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7Cisg
ICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklELnRvVUludDY0KCkpOworICAgIH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4
dElucHV0Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5o
CmluZGV4IDRmNzVmZDgwNmY2OGQ2YTk5OWJiYTZhNDViMTQ1NzQ3NmZjYWI4OGMuLjU0ZDQyNzdi
ODUzOGZiYTQxNTZhYjgzZDZhZGI4OTU3ODI4YTBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
ZXh0SW5wdXRDb250ZXh0LmgKQEAgLTI5LDEzICsyOSwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRleHRJbnB1
dENvbnRleHQgewogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CiAKLSAgICB1
aW50NjRfdCB3ZWJQYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3
ZWJQYWdlSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1l
bnRJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVu
dGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwCmluZGV4IDlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdjZjRkODQyZGZmMzk2ZWQuLmQ5
MDBhMTY3MzNhOWNlNTNmNzZlOTdmODk1OWMxNDdhNzUwODk3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRf
dCBwYWdlSUQpCitSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0Zvcndh
cmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZN
b3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAg
ICAgLCBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oCmluZGV4IDg3MmVmMTgwOTVkMThjYzNhOWM1ZTc0NjNkMzBlN2Y2MTQ4NzJmNWUuLjQ0
YWY3YzY2NTkwNzQ2ZGY5ODJlMDVjMTNiZWVjZDA2YTc4NjRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQ2LDcgKzQ3LDcgQEAgY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6QmFja0ZvcndhcmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50
NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3Jl
YXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGljIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0
dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWludDY0
X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9jZXNz
SWRlbnRpZmllcihjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmllcikg
eyBtX2xhc3RQcm9jZXNzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4Miwx
MiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3VzcGVuZGVkUGFn
ZUZyb21Qcm9jZXNzUG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRl
bVN0YXRlOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nl
c3NJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRl
ZFBhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCBlOWRhNjBhZWViZWZmMWRhNjkxZTFlNDUzMzczNTc3YTNhOTQw
YTI1Li42OTk0ODI1ZDA4MWNiMDk5NDg0MmFjY2RjZTQ4NDZlM2RkYjBlOTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
NTMsNyArNTMsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1c2VyQWdlbnQ7CiAgICAg
ZW5jb2RlciA8PCBpdGVtU3RhdGVzOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbklEOwotICAgIGVu
Y29kZXIgPDwgdXNlckNvbnRlbnRDb250cm9sbGVySUQudG9VSW50NjQoKTsKKyAgICBlbmNvZGVy
IDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklEOwogICAgIGVuY29kZXIgPDwgdmlzaXRlZExpbmtU
YWJsZUlEOwogICAgIGVuY29kZXIgPDwgd2Vic2l0ZURhdGFTdG9yZUlEOwogICAgIGVuY29kZXIg
PDwgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwpAQCAtMTkzLDExICsxOTMsMTEgQEAg
T3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIE9wdGlv
bmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyOwogICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxl
cklEID0gbWFrZU9iamVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
clR5cGU+KCp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyAgICBwYXJhbWV0ZXJz
LnVzZXJDb250ZW50Q29udHJvbGxlcklEID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXI7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJs
ZUlEKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTM5Miw3ICszOTIsNyBAQCBP
cHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IHBhcmFtZXRlcnMuYmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsK
IAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVpbnQ2NF90Pj4gb2xkUGFnZUlEOworICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4g
b2xkUGFnZUlEOwogICAgIGlmICghb2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCmluZGV4IGMyYmU4NDE0NmIzNGVhNzU2MTk3MDc1YWM4YjJjYmMzOGJlYzQyZTAuLjkwMTI3
YmMzMTAzMGVlZTAzZjI2MjdlOTdjYWQ0NWY5YjdiNjljMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1p
bGVzdG9uZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29s
b3I+IGJhY2tncm91bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBE
YXRhLmNwcAppbmRleCA5NjM5ZDAxNWMyZjk0ZTY3Yjc2NzIyOGFkMjNiMWQ5YzQzYjM1MDA3Li40
ZDFjY2VhNjU2MzA5NmM1YWFhMmZmZmE2MzljYWJjOTMxOTIyYjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcApAQCAtMzQsNyArMzQsNyBAQCB2b2lkIFdlYlBh
Z2VHcm91cERhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBpZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwSUQ7Ci0gICAg
ZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLnRvVUludDY0KCk7Cisg
ICAgZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfQogCiBPcHRp
b25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQpAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VHcm91cERh
dGE+IFdlYlBhZ2VHcm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAg
aWYgKCFwYWdlR3JvdXBJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAg
ICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcjsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIHt7IFdURk1vdmUo
KmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpwYWdlR3JvdXBJRCksIG1ha2VPYmplY3RJZGVudGlmaWVy
PFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcikgfX07CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBX
VEZNb3ZlKCpwYWdlR3JvdXBJRCksICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH19
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
T2JqQ09iamVjdEdyYXBoLm1tCmluZGV4IGM2NTQ4NGY1NTEyMjBkZGJjOGI4NGI3OTZhY2IwNTk4
ODcyNmI4NzMuLmZlNjZkZTY1OTJhYTBhZjIzNDU4ODJkYjNkNDFhMTJjYTJiOWJjMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQpAQCAtMjk4LDExICsy
OTgsMTIgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICB9CiAKICAgICBjYXNlIE9iakNUeXBlOjpX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZTogewotICAgICAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFnZUlEKSkKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKKyAgICAgICAgZGVjb2RlciA+PiBwYWdlSUQ7Cisg
ICAgICAgIGlmICghcGFnZUlEKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHJlc3VsdCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRX
aXRoUGFnZUlEOnBhZ2VJRF0pOworICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2lu
Z0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDoqcGFnZUlEXSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRleCAxMDc1NzgxYWYyYzNm
OGE3ZWE3YzYxODZlYmNmNzljNzA4MWMxOTk3Li4yZjljZmU5NDI0MDI2MTcyZDkwNmRiZDFhMDNj
NGNkMDE1NDRiYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAtNTQsNiArNTQsNyBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7Cit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogU3RyaW5nIEF1dG9tYXRpb25Db21tYW5kRXJyb3I6OnRvUHJv
dG9jb2xTdHJpbmcoKQogewpAQCAtNTIyLDcgKzUyMyw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb246OndhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uRnJhbWUoV2ViRnJhbWVQcm94eSYg
ZnJhCiAgICAgfQogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpyZXNwb25kVG9QZW5k
aW5nUGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mIG1hcCkK
K3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlv
bkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQogewogICAgIElu
c3BlY3Rvcjo6RXJyb3JTdHJpbmcgdGltZW91dEVycm9yID0gU1RSSU5HX0ZPUl9QUkVERUZJTkVE
X0VSUk9SX05BTUUoVGltZW91dCk7CiAgICAgZm9yIChhdXRvIGlkIDogY29weVRvVmVjdG9yKG1h
cC5rZXlzKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRv
bWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggNjVlYjNlNDZlNWI4OGJhODJhYzJk
MTAyNGVjYWU2M2NiMzRkNzA4Ny4uZjM5YzA2MWI1Nzg5MmE5MjQ4ZmQwOWRmZmNmYTdiOGM1MGEw
NzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIlNo
YXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIgog
I2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTIyNSw3ICsyMjYsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPblBhZ2UoV2ViUGFn
ZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6UGFnZUxvYWRTdHJhdGVn
eSwgU2Vjb25kcywgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZT4mJik7CiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxldGVPbkZyYW1lKFdlYkZy
YW1lUHJveHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0
ZWd5LCBTZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tC
YXNlPiYmKTsKLSAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNr
c1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOworICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1Bh
Z2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZT4+Jik7CiAgICAgdm9pZCByZXNwb25kVG9QZW5kaW5nRnJhbWVOYXZpZ2F0aW9uQ2FsbGJhY2tz
V2l0aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCBsb2FkVGltZXJGaXJlZCgpOwog
CkBAIC0yODAsMjIgKzI4MSwyMiBAQCBwcml2YXRlOgogICAgIFJlZjxJbnNwZWN0b3I6OkF1dG9t
YXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRjaGVyOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXI+IG1fZG9tYWlu
Tm90aWZpZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+IG1fd2ViUGFnZUhhbmRs
ZU1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1faGFuZGxlV2ViUGFnZU1hcDsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdHJpbmc+IG1fd2ViUGFnZUhh
bmRsZU1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1f
aGFuZGxlV2ViUGFnZU1hcDsKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJG
cmFtZUhhbmRsZU1hcDsKICAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1faGFuZGxlV2Vi
RnJhbWVNYXA7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNr
ZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbklu
QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5k
aW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5C
cm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFj
a0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNr
c1BlclBhZ2U7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2Vu
ZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJy
b3dzaW5nQ29udGV4dENhbGxiYWNrc1BlckZyYW1lOwogICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRp
bmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlckZyYW1lOwotICAg
IEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpD
YWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQYWdlOworICAgIEhh
c2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQZXJQ
YWdlOwogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQotICAgIEhh
c2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRF
cnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsK
KyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKE9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ0tleWJvYXJkRXZlbnRzRmx1
c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCRFJJVkVSX01PVVNF
X0lOVEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKE9wdGlv
bmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hl
ZENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
RnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRp
bmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2VuZGlmCiAKICAgICB1aW50
NjRfdCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsgMSB9OwpAQCAtMzE5LDcg
KzMyMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyIEFQSXMg
dGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVybiB0aGVzZQogICAgIC8v
IHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVzZWQgYXMgaW5pdGlhbCBz
dGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCiAgICAgSGFzaFNldDxSZWY8U2ltdWxhdGVkSW5wdXRT
b3VyY2U+PiBtX2lucHV0U291cmNlczsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8U2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQYWdlOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+
PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CiAjZW5kaWYKICNpZiBFTkFCTEUoV0VCRFJJVkVS
X0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKICAgICAvLyBLZWVwIHRyYWNrIG9mIGN1cnJlbnRseSBh
Y3RpdmUgbW9kaWZpZXJzIGFjcm9zcyBtdWx0aXBsZSBrZXlzdHJva2VzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCA5ODkzZDM5OGI1
NzQ2MmFkOWI4ODgzOGUyMjcxMGZjYWYwNDYzMGQwLi42YjA5YmFkYjhkMGNlYmFiZjJjNjlmNjAw
OWIxYmQxZDIzYzA5ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlh
cnlQcm9jZXNzUHJveHkuaApAQCAtNTEsNiArNTEsMTggQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pOwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6
OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCA9IDFfcywg
T3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSk7CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4gdm9pZCBzZW5kV2l0aEFz
eW5jUmVwbHkoVCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3MuLi4pPiYmKTsKKyAgICAK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYg
bWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBD
OjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKKyAgICB7CisgICAgICAgIHJldHVybiBz
ZW5kPFQ+KFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgc2VuZE9w
dGlvbnMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBV
PgorICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVw
bHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0g
MV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdU
Rk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5j
T3B0aW9ucyk7CisgICAgfQogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uKCkgY29u
c3QKICAgICB7CkBAIC02Nyw2ICs3OSwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRNZXNzYWdl
UmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
LCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZl
cihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lKTsKKyAgICAKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRl
c3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAgICB7CisgICAg
ICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCksIHJlY2VpdmVyKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
KQorICAgIHsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CisgICAgfQogCiAgICAgZW51bSBjbGFzcyBT
dGF0ZSB7CiAgICAgICAgIExhdW5jaGluZywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQppbmRleCBm
MDVkNzljMGQwMWI4OWQ2YjY4NDhjYTI1MDZjY2Y5MWRjZmI3NjcxLi42NzA2NTk3Njg2MThlZDc1
Zjk4MGMxMWFkYWNhOTFiZTI5OWU0ZWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCkBAIC01
MjcsOTQgKzUyNyw5NCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6aGFuZGxl
Q29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90IGNvbgogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6UGxheShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBhdXNlKGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0X3QgY29udGV4dElkKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9n
Z2xlUGxheVN0YXRlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNv
bnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5T
Y3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmcoY29udGV4dElkKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRT
Y3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElk
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWVrVG9UaW1lKHVp
bnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xlcmFuY2VCZWZvcmUsIGRv
dWJsZSB0b2xlcmFuY2VBZnRlcikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xlcmFuY2VC
ZWZvcmUsIHRvbGVyYW5jZUFmdGVyKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVrVG9UaW1lKGNvbnRleHRJ
ZCwgdGltZSwgdG9sZXJhbmNlQmVmb3JlLCB0b2xlcmFuY2VBZnRlcikpOwogfQogCiB2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZmFzdFNlZWsodWludDY0X3QgY29udGV4dElkLCBk
b3VibGUgdGltZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OkZhc3RTZWVrKGNvbnRleHRJZCwgdGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNl
ZWsoY29udGV4dElkLCB0aW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjYW5uaW5n
Rm9yd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNv
bnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6YmVnaW5T
Y2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNrd2FyZChjb250ZXh0SWQp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjYW5uaW5nKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5k
U2Nhbm5pbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qg
aW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpTZWxlY3RBdWRpb01lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKHVp
bnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24o
Y29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9u
KGNvbnRleHRJZCwgaW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVy
ZUluUGljdHVyZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZVBpY3R1cmVJblBpY3R1
cmUoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0
b2dnbGVNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVNdXRlZChjb250ZXh0SWQpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6c2V0TXV0ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIG11dGVk
KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2V0TXV0ZWQoY29udGV4dElkLCBtdXRlZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4
dElkLCBtdXRlZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0
Vm9sdW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFZvbHVtZShjb250ZXh0
SWQsIHZvbHVtZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRQbGF5aW5nT25TZWNv
bmRTY3JlZW4odWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewogICAgIGlmIChtX3Bh
Z2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6U2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpTZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVxdWVzdENvbnRyb2xsZWRFbGVt
ZW50SUQoKQogewogICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkKLSAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpIYW5kbGVDb250
cm9sbGVkRWxlbWVudElEUmVxdWVzdChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OkhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNN
YW5hZ2VyQ29udGV4dElkKSk7CiB9CiAKIFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFuYWdlckludGVyZmFjZSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggNmJhNDc5ZTA2MGEwOTZjNDM5NTFlYTc0YmY4
OTdiYTY3MTY4OWY3ZS4uYzhkNjVjMzYyYWFjODJjNjQxMTk1MTE2NDk4YTExNzljNTMzZTQ0MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtNjIwLDQzICs2MjAsNDMgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbih1aW50NjRf
dCBjb250ZXh0SWQpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0
RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRp
YSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlh
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29udGV4dElkLCBtb2RlLCBm
aW5pc2hlZFdpdGhNZWRpYSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFVwZGF0
ZUlubGluZVJlY3QoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5saW5l
UmVjdChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VmlkZW9D
b250ZW50TGF5ZXIoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VmlkZW9Db250ZW50
TGF5ZXIoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXR1cm5WaWRlb0Nv
bnRlbnRMYXllcihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVudExh
eWVyKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZFNldHVwRnVsbHNjcmVlbihj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZFNldHVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OndpbGxFeGl0RnVsbHNjcmVl
bih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpXaWxsRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0
SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpEaWRFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxs
c2NyZWVuKGNvbnRleHRJZCkpOwogICAgIG1fcGFnZS0+ZGlkRXhpdEZ1bGxzY3JlZW4oKTsKIH0K
IAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVudGVyRnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgbV9wYWdlLT5kaWRFbnRl
ckZ1bGxzY3JlZW4oKTsKIH0KIApAQCAtNjcwLDcgKzY3MCw3IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwogICAgIFttb2RlbC0+bGF5ZXJIb3N0Vmlldygp
IHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIG1vZGVsLT5zZXRMYXllckhvc3RWaWV3KG51bGxw
dHIpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
RGlkQ2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRDbGVhbnVw
RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKIAogICAgIGludGVyZmFjZS0+c2V0TW9kZShIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICByZW1vdmVDbGll
bnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CkBAIC02ODgsMjUgKzY4OCwyNSBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckZyYW1lKHVpbnQ2NF90IGNvbnRl
eHRJZCwgV2ViQ29yZQogICAgICAgICBtYWNoX3BvcnRfbmFtZV90IGZlbmNlUG9ydCA9IGZlbmNl
U2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKTsKICNlbmRpZgogCi0gICAgICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVu
Y2VkKGNvbnRleHRJZCwgZnJhbWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNH
X1RZUEVfTU9WRV9TRU5EKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJGcmFtZUZl
bmNlZChjb250ZXh0SWQsIGZyYW1lLCBJUEM6OkF0dGFjaG1lbnQoZmVuY2VQb3J0LCBNQUNIX01T
R19UWVBFX01PVkVfU0VORCkpKTsKICAgICB9CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpzZXRWaWRlb0xheWVyR3Jhdml0eSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSBncmF2aXR5KQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckdy
YXZpdHlFbnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNl
dFZpZGVvTGF5ZXJHcmF2aXR5RW51bShjb250ZXh0SWQsICh1bnNpZ25lZClncmF2aXR5KSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTW9kZUNoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBtX3BhZ2UtPnVpQ2xpZW50KCkuaGFzVmlk
ZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UobV9wYWdlLCBtb2RlICYgTWVkaWFQbGF5ZXJF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOwotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1vZGVDaGFu
Z2VkKGNvbnRleHRJZCwgbW9kZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1vZGVDaGFuZ2Vk
KGNvbnRleHRJZCwgbW9kZSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKICAg
ICBib29sIGlzVmlld1Zpc2libGUgPSBtX3BhZ2UtPmlzVmlld1Zpc2libGUoKTsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1bGxzY3JlZW5NYXlS
ZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIGlzVmlld1Zpc2libGUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkZ1
bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIGlzVmlld1Zpc2libGUpKTsKIH0K
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJW
aWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
CmluZGV4IDJhYTc0OGYwMDRmMjIyYTAxZGRiN2FjOGVlZTcxMzJjYTc4ODkwY2EuLjA4YTNkMzA4
ZDNhNTBmMTk0NTQ0YzEzZTc5MWIzNmE3MTNiM2Q0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xOTk3LDEzICsxOTk3LDEzIEBAIGZsb2F0
IFdlYlZpZXdJbXBsOjppbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0CiAKIHZvaWQg
V2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZp
dHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2Ny
ZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJX
ZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9mZlNjcmVlbiIsIHRoaXMs
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlLCBXZWJDb3JlOjpB
Y3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6
d2luZG93RGlkT3JkZXJPblNjcmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJW
aWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAo
cGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJD
b3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oldp
bmRvd0lzQWN0aXZlIH0pOwogfQogCkBAIC0yMDcxLDcgKzIwNzEsNyBAQCB2b2lkIFdlYlZpZXdJ
bXBsOjp3aW5kb3dEaWRDaGFuZ2VMYXllckhvc3RpbmcoKQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3
aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUs
ICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0
ZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2Vi
Vmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdlT2NjbHVzaW9uU3RhdGUiLCB0
aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlT
dGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpOwogfQogCkBA
IC0yMjM0LDE5ICsyMjM0LDE5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRDaGFuZ2VCYWNr
aW5nUHJvcGVydGllcygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdEaWRIaWRlKCkKIHsKLSAg
ICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRI
aWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJX
ZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkSGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFn
ZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6
OnZpZXdEaWRVbmhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwg
JXAgKHBhZ2UgJWxsdSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0Rp
ZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdl
LT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJs
ZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlkQ2hhbmdlKCkKIHsKLSAg
ICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNw
YWNlRGlkQ2hhbmdlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5
U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSBhY3RpdmVTcGFjZURpZENoYW5nZSIs
IHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0
eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdpbmdBcmVhUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKaW5kZXggYjVi
NGUwYWQyMjE2MmM5ZDBjMDBjOThjZDgzOTM1MDlmY2Y2ZGY4MS4uZWNmNWRhMGE5MTBiNjM5NDgw
YWMzMmE1ZmIxYjBmYjBjZmZmZjZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBEcmF3aW5nQXJlYVByb3h5OjpE
cmF3aW5nQXJlYVByb3h5KERyYXdpbmdBcmVhVHlwZSB0eXBlLCBXZWJQYWdlUHJveHkmIHdlYlBh
Z2VQcgogICAgICwgbV92aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXIoUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmRHJhd2luZ0FyZWFQcm94eTo6dmlld0V4cG9zZWRSZWN0Q2hhbmdlZFRpbWVyRmly
ZWQpCiAjZW5kaWYKIHsKLSAgICBwcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
RHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9V
SW50NjQoKSwgKnRoaXMpOworICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwg
KnRoaXMpOwogfQogCiBEcmF3aW5nQXJlYVByb3h5Ojp+RHJhd2luZ0FyZWFQcm94eSgpCiB7Ci0g
ICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWFQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7Cisg
ICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWFQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIpOwogfQogCiBib29sIERy
YXdpbmdBcmVhUHJveHk6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgSW50U2l6
ZSYgc2Nyb2xsRGVsdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNDQzYjM4NWZhYzc0MWNkOGIyNGJh
Y2VlMDhiMDczNGQwN2UwMjcyLi4yZDk5NjZlM2M4M2ZiMWE0NDAzZTA3ZGY5YzU0YmJkYmQ0YjMw
OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IElQ
Qzo6QXR0YQogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjb3JlQ2hhbGxlbmdlLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjb3JlQ2hhbGxlbmdlLCB1
aW50NjRfdCBjaGFsbGVuZ2VJRCkKIHsKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAg
aWYgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBtX3Byb2Nlc3NQb29sLnNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKHBhZ2VJRCkpIHsKQEAgLTM3MSw3ICszNzEs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNz
TGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNvbgogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdu
b3N0aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxk
U2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2Vi
UGFnZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51bGwtY2hlY2sgYmVjYXVz
ZSBieSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUsIHRoZSBwYWdlIG1heSBi
ZSBnb25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywKQEAgLTM4Miw3ICszODIs
NyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZQogICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNz
YWdlKG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCBzaG91bGRTYW1wbGUpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
dWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3Vs
ZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBudWxsLWNoZWNrIGJlY2F1
c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRlLCB0aGUgcGFnZSBtYXkg
YmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMsCkBAIC0zOTMsNyArMzkz
LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQodWludDY0X3QgcGFnZUlELCBjb25zdAogICAgIHBhZ2UtPmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFJlc3VsdChtZXNzYWdlLCBkZXNjcmlwdGlvbiwgcmVzdWx0LCBzaG91bGRTYW1wbGUp
OwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJl
cywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRv
dWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nl
c3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51bGwt
Y2hlY2sgYmVjYXVzZSBieSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUsIHRo
ZSBwYWdlIG1heSBiZSBnb25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywKQEAg
LTczNiw3ICs3MzYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVy
ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpcwogICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEdyYW5kZmF0aGVyZWQoc2Vzc2lv
bklELCByZXNvdXJjZURvbWFpbiwgaXNHcmFuZGZhdGhlcmVkKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c0NvbmZpcm0oUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6
OndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTkwOCw3ICs5MDgsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxl
bWV0cnlGaW5pc2hlZCh1bnNpZ25lZAogICAgIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0
YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZShtZXNzYWdl
Qm9keSkucHRyKCkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbW1pdHRlZENy
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Y29tbWl0dGVk
Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2Uo
KSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAyMGE3OTk4
YzRkYzI0YWIxNjU2ZjM5Mzg3ZjU3MDBmYTNjZTlhNjhlLi4yYmVjNjhmZDg5N2ZhNTk5MjNmMzE5
ZTMxMDQ5MmY2OTg2ZmM4YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCArODEsNiBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
bjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2lu
ZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAg
ICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJik7CkBAIC0xMzEs
NyArMTI5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1
Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4gZG9tYWlucyk+
JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKFBhZ2VJRCwgRnJhbWVJ
RCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3ND
b25maXJtKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBjb25zdCBTdWJGcmFtZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxX
YWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQs
IGJvb2wgZGVidWdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoUEFMOjpT
ZXNzaW9uSUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBy
ZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRl
TG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJv
bURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5r
RGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNv
bnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVkRnJvbURv
bWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JU
ZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJpdmF0ZToKICAgICAvLyBN
ZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAgdm9pZCBkaWRDcmVh
dGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYs
IHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOwog
ICAgIHZvaWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBX
ZWJzaXRlRGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnModWludDY0
X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUp
OwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJs
ZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1w
bGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJl
c3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNh
bXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2Ny
aXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lk
IGxvZ1Rlc3RpbmdFdmVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBldmVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYzMGZhZDc5MDYxMDkyMGNl
Zjg1Mjc1ZGM5N2FkMWYxZC4uMjJmZmZkMTk4ODFiMjYzZTU3NDY5N2E5OWE0OWI0Y2NlMzIzNjE3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogbWVz
c2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGlkQ3Jl
YXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rp
b25JZGVudGlmaWVyKQogCi0gICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgY2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKKyAgICBEaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1
aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVu
Z2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogCiAgICAgRGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50
NjRfdCBjYWxsYmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0YSB3ZWJzaXRlRGF0YSkK
ICAgICBEaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtMzUsOSAr
MzUsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBTZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQog
CiAgICAgIyBEaWFnbm9zdGljIG1lc3NhZ2VzIGxvZ2dpbmcKLSAgICBMb2dEaWFnbm9zdGljTWVz
c2FnZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24s
IGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQotICAgIExvZ0Rp
YWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdl
LCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgZW51bTpib29sIFdlYkNvcmU6
OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAgTG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
VmFsdWUodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9u
LCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAgTG9nRGlhZ25vc3RpY01lc3Nh
Z2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5n
IGRlc2NyaXB0aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBs
ZSkKKyAgICBMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCB1aW50MzJf
dCByZXN1bHQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQor
ICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVl
LCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQogICAgIExvZ0dsb2JhbERpYWdub3N0aWNNZXNzYWdlV2l0aFZh
bHVlKFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5z
aWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCkBA
IC00Niw3ICs0Niw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIE5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFp
bnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21h
aW5zRmluaXNoZWQoKQogICAgIE5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlG
aW5pc2hlZCh1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgdG90YWxQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzU3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2lucykKLSAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0o
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVE
b21haW4pIC0+IChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgQXN5bmMKKyAgICBSZXF1ZXN0U3Rv
cmFnZUFjY2Vzc0NvbmZpcm0oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4pIC0+IChib29sIHVzZXJEaWRH
cmFudEFjY2VzcykgQXN5bmMKICAgICBEZWxldGVXZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVn
aXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktp
dDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVE
YXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgVmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluPiBkb21haW5zKSAtPiAoSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKSBBc3luYwogI2VuZGlmCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcAppbmRleCBmYWUxZjNmY2E4ODg3MTliZTdmNjI3MmQyMDU3MjBiYjg5MDE3N2ZlLi4yYWFm
ZjFlYzJhNjU0OTBkODg1NDM5OTZiZjgxMDJjMmQ0OWM1MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3Ry
aW5nJiB0aXRsCiB7CiAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0
ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBXZWJOb3Rp
ZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9y
aWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwotICAgIHN0ZDo6cGFpcjx1aW50NjRf
dCwgdWludDY0X3Q+IG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2Ut
PnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIHN0ZDo6cGFpcjxQYWdlSWRlbnRp
ZmllciwgdWludDY0X3Q+IG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBh
Z2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIG1fZ2xvYmFsTm90aWZpY2F0
aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uSURQYWlyKTsKICAg
ICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3RkOjptYWtlX3BhaXIo
Z2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpKTsKICAgICBtX3By
b3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwpAQCAtMTE5LDEyICsx
MTksMTIgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3Rp
ZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAogICAgIH0KIH0KIAotc3RhdGljIGJvb2wg
cGFnZUlEc01hdGNoKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QsIHVpbnQ2NF90IGRlc2lyZWRQ
YWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQorc3RhdGljIGJvb2wgcGFnZUlEc01hdGNo
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQ
YWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQogewogICAgIHJldHVybiBwYWdlSUQgPT0g
ZGVzaXJlZFBhZ2VJRDsKIH0KIAotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01h
dGNoKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCB1aW50NjRf
dCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlm
aWNhdGlvbklEcykKK3N0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgUGFnZUlkZW50
aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VO
b3RpZmljYXRpb25JRHMpCiB7CiAgICAgcmV0dXJuIHBhZ2VJRCA9PSBkZXNpcmVkUGFnZUlEICYm
IGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzLmNvbnRhaW5zKHBhZ2VOb3RpZmljYXRpb25JRCk7
CiB9CkBAIC0xNDEsMTMgKzE0MSwxMyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29ucwogCiB2b2lk
IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQ
cm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNhdGlvbklE
cywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24gZmlsdGVyRnVuY3Rpb24pCiB7Ci0gICAgdWlu
dDY0X3QgdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CisgICAgYXV0byB0YXJnZXRQ
YWdlSUQgPSB3ZWJQYWdlLT5wYWdlSUQoKTsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gZ2xvYmFs
Tm90aWZpY2F0aW9uSURzOwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5yZXNlcnZlQ2FwYWNp
dHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsKIAogICAgIGZvciAoYXV0byBpdCA9
IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpLCBlbmQgPSBtX25vdGlmaWNhdGlvbnMuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewotICAgICAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+a2V5LmZp
cnN0OworICAgICAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT5rZXkuZmlyc3Q7CiAgICAgICAgIHVp
bnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT5rZXkuc2Vjb25kOwogICAgICAgICBpZiAo
IWZpbHRlckZ1bmN0aW9uKHdlYlBhZ2VJRCwgcGFnZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdl
SUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xNzAs
NyArMTcwLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlk
U2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxOb3QKICAgICBpZiAoaXQgPT0gbV9nbG9i
YWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVpbnQ2NF90
IHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT52
YWx1ZS5maXJzdDsKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6
OndlYlBhZ2Uod2ViUGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsK
QEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJv
dmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxObwogICAgIGlmIChpdCA9
PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAot
ICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICBhdXRvIHdlYlBh
Z2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2Uod2ViUGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IGY3
MjdlZDQ3MmM1YmVmYTVhMjNmM2UwNDRlMGZkNDE5MDcwNDA0ZWYuLjExNTc4MWU0MzMzYzg1Njg0
ZmJjYTVjYTg0MTc2NTY0NGE4YzcxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgog
I2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3Rp
ZmljYXRpb25DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CiAKQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVkZWYg
Ym9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVj
dG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOworICAgIHR5cGVkZWYg
Ym9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VO
b3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94
eSosIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNh
dGlvbkZpbHRlckZ1bmN0aW9uKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CkBAIC04
OCw5ICs4OSw5IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmlj
YXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICAvLyBQYWlyIGNvbXByaXNlZCBvZiB3ZWIg
cGFnZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElECi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZp
Y2F0aW9uTWFwOworICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgdWludDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKICAgICAvLyBL
ZXkgcGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5v
dGlmaWNhdGlvbiBJRDsgdmFsdWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlv
biBJRCwgYW5kIG5vdGlmaWNhdGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50
NjRfdCwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRp
b24+Pj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5v
dGlmaWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cAppbmRleCA0NWExZjBmNWI1Y2I4MGNjYzlhMGNmYmExNjEzZTQ0Yzg3NGE1NjA3Li43ZDU0OGE1
MzIxZWVjYmZjNjRiYzE0ZTkxNjg4MWU5OTBjOTY5MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC00Nyw2ICs0Nyw4IEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogI2RlZmlu
ZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19J
RihtX3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFByb3Zp
c2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0df
RVJST1JfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAg
LSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKQEAg
LTYxLDcgKzYzLDcgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5
KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm8KICAgICAsIG1fc3VzcGVuc2lv
blRva2VuKG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSkK
ICNlbmRpZgogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiIG5hdmlnYXRp
b25JRCA9ICUiIFBSSXU2NCAiIHN1c3BlbmRlZFBhZ2U6ICVwIiwgbV9wYWdlLnBhZ2VJRCgpLCBu
YXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCAiIHN1c3BlbmRlZFBhZ2U6
ICVwIiwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCwgc3VzcGVuZGVk
UGFnZS5nZXQoKSk7CiAKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSwg
KnRoaXMpOwogICAgIG1fcHJvY2Vzcy0+YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoKnRoaXMpOwpA
QCAtMTE3LDcgKzExOSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNvbm5lY3Rpb25X
aWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLnByb3Zp
c2lvbmFsUHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogfQogCkBAIC0xMzIsNyArMTM0LDcgQEAgdm9p
ZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Y2FuY2VsKCkKICAgICBpZiAobV9wcm92aXNpb25hbExv
YWRVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92
aXNpb25hbExvYWRGb3JGcmFtZSBmb3IgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlE
KCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2Vs
OiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQobV9t
YWluRnJhbWUpOwogICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1fcmVx
dWVzdCk7CiAgICAgZXJyb3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpD
YW5jZWxsYXRpb24pOwpAQCAtMTUxLDE0ICsxNTMsMTQgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojps
b2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGlu
ZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFs
PFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6IHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKIAogICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVk
KG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGlu
ZywgYmFzZVVSTCwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1
ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICAvLyBJZiB0aGlzIGlz
IGEgY2xpZW50LXNpZGUgcmVkaXJlY3QgY29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVu
IHRoZSBuZXcgcHJvY2VzcyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRo
aXMgY2FzZSwKICAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgZnJvbUl0ZW0n
cyBwcm9jZXNzSWRlbnRpZmllciBhcyB3ZSB3YW50IGZ1dHVyZSBuYXZpZ2F0aW9ucyB0byB0aGlz
IEJhY2tGb3J3YXJkIGl0ZW0gdG8gaGFwcGVuIGluIHRoZQpAQCAtMTcxLDcgKzE3Myw3IEBAIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQ29yZTo6UmVzCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9C
YWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtJiBpdGVtLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQ
b2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywg
ImdvVG9CYWNrRm9yd2FyZEl0ZW06IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNr
Rm9yd2FyZEl0ZW06IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0
KCkpOwogCiAgICAgYXV0byBpdGVtU3RhdGVzID0gbV9wYWdlLmJhY2tGb3J3YXJkTGlzdCgpLmZp
bHRlcmVkSXRlbVN0YXRlcyhbdGhpcywgdGFyZ2V0SXRlbSA9ICZpdGVtXShhdXRvJiBpdGVtKSB7
CiAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gaXRlbS5zdXNwZW5kZWRQYWdlKCkpIHsKQEAgLTE5
Niw3ICsxOTgsNyBAQCBpbmxpbmUgYm9vbCBQcm92aXNpb25hbFBhZ2VQcm94eTo6dmFsaWRhdGVJ
bnB1dCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBPcHRpb25hbAogCiB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUodWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZU1haW5GcmFt
ZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdl
SUQoKSwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAgICAgQVNT
RVJUKCFtX21haW5GcmFtZSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNy
ZWF0ZShtX3BhZ2UsIGZyYW1lSUQpOwpAQCAtMjM0LDcgKzIzNiw3IEBAIHZvaWQgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWluCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBt
X3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0
aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBu
YXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsTG9hZFVSTC5pc051bGwoKSk7
CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB1cmw7CiAKQEAgLTI1NCw3ICsyNTYsNyBAQCB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgY29ucwogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBu
YXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlv
bklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7
CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRG
YWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgp
LnRvVUludDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAgQVNTRVJUKCFtX3Byb3Zp
c2lvbmFsTG9hZFVSTC5pc051bGwoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB7IH07
CiAKQEAgLTI3MCw3ICsyNzIsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21t
aXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aQogICAgIGlmICgh
dmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENvbW1pdExv
YWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
bmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmln
YXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJk
aWRDb21taXRMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUlu
dDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwg
PSB7IH07CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwogCkBA
IC0yOTUsNyArMjk3LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJv
dmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW4KIH0KIAogdm9pZCBQcm92
aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVp
bnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAg
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBpZiAoIXZhbGlkYXRlSW5w
dXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKQEAgLTM0MSw3ICszNDMsNyBAQCB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tG
b3J3YXJkSXRlbUlkZQogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZy
YW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCA2NDU2YzFmOTE2ZDU5
NzU1MDZjMTUyNzk0YWYyZTZiNjY4YzBiZjZjLi43ZDJmMzkwMjMxYWVhYjM3MGM3N2ZjMWFmMDJj
ZTRlZDUyNWE1ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNp
b25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFs
UGFnZVByb3h5LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2Vp
dmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1
ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCi0gICAg
ICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWlu
dDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0
cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTEwLDcg
KzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdl
YkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1l
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0g
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAg
ICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiBy
ZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAj
aWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xv
b2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCAwNTU5Yzk4NzRi
ZGMzMzVjZWE4YWQ0YTg3N2IyYWMyOTcwODA1ZjI2Li41YjAyZGRiMjQ4OWZlM2I5NzMxNjQxZWRi
M2JmYjM3MDM0NjU1YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eS5tbQpAQCAtMTE1LDcgKzExNSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3
CiAgICAgSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgpLnNldFBvb2xTaXplKDApOwogI2VuZGlm
CiAKLSAgICBwcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSwgKnRoaXMpOworICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogCiAgICAgaWYgKG1fd2ViUGFnZVByb3h5LnByZWZl
cmVuY2VzKCkudGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlKCkpCiAgICAgICAgIGluaXRp
YWxpemVEZWJ1Z0luZGljYXRvcigpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIFJlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFn
ZVByb3h5JiB3CiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp+UmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWFQcm94eSgpCiB7CiAgICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShDYWxs
YmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBwcm9jZXNzKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFttX2Rpc3BsYXlMaW5rSGFuZGxlciBp
bnZhbGlkYXRlXTsKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdAog
ICAgIH0oKTsKIAogICAgIGF1dG8gc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0g
ICAgd2hpbGUgKHByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRM
YXllclRyZWU+KG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBhY3Rpdml0eVN0YXRlVXBkYXRlVGlt
ZW91dCAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSksIElQQzo6V2FpdEZvck9w
dGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkgeworICAgIHdoaWxl
IChwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxN
ZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVl
PihtX2lkZW50aWZpZXIsIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0IC0gKE1vbm90b25pY1Rp
bWU6Om5vdygpIC0gc3RhcnRUaW1lKSwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0
aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVN0YXRlQ2hh
bmdlSUQgPT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCBhY3Rpdml0eVN0YXRl
Q2hhbmdlSUQgPD0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1YTE0ZmJlNGRjZDRiMzhjN2EwYmZkNWMyZjcwYTA2YzVj
NTc1Zjg2Li5iMmY3NzI5ZmQzOTM1ZjcyZTFiYzkxMTVhMzBhMThmNjRlMzlmZDI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
LmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnVw
ZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZQogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNl
c1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYgY2hhbGxl
bmdlKQordm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBS
ZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBjaGFsbGVuZ2UpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHBhZ2VJRCk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCmluZGV4
IDkzMjQ1ZjBkYzc2ZjI2NTc1N2VjMmJmZTcxNjNlOWVkYWFlOWMwZjAuLmU5MzY1YWZhYzRmNDdk
N2ZkNzQ3Zjk4OTgzYWQ5OTkwZThhYjk3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTQxLDE0ICs0MSwxNCBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29u
c3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7CiAKICAg
ICB2b2lkIHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBPcHRpb25hbDxQQUw6OlNl
c3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBy
ZWdpc3RyYWJsZURvbWFpbigpIHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KLSAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0K
KyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZpY2VXb3JrZXJQYWdlSUQ7IH0KIAogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNz
UHJveHkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUHJvY2Vz
c1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4m
LCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBt
X3JlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVpbnQ2NF90IG1fc2VydmljZVdvcmtlclBhZ2VJRCB7
IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDEzNDZmY2MwNWM1YTI5Y2RiMDg2ZjcyZWY0
OTY3ODJjYjJiMDA1YWUuLmY2ZDNiNTM2ZGY4YWFiMTk3ZDkxMWVkMTRkMmVhNDBmZWZmMmUxZGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApA
QCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwKIAogY29uc3QgY2hhciog
U3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykp
LCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgpLCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zdXNwZW5zaW9uU3RhdGUpLCAnKScpOworICAgIHJldHVy
biBkZWJ1Z1N0cmluZygiKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlz
KSksICIgcGFnZSBJRCAiLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgIiwgbV9zdXNwZW5z
aW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc3VzcGVuc2lvblN0YXRlKSwgJykn
KTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAK
aW5kZXggOTcxMWIyMzM3MjE1ODc5MTE2YzNkZDhiNDY2ZWY1NTg1YWU5ODU4Mi4uYWQ3ODFmNmY4
M2NlZDdmNjNiMDZkNDY4ZTA1ZDNlNGExYTk3ZTM0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmNwcApAQCAtNzMsNyArNzMsNyBAQCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKIHsKICAgICB3ZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiAgICAg
Zm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpIHsKLSAgICAgICAgcHJvY2Vzcy0+cmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
ICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsK
ICAgICAgICAgcHJvY2Vzcy0+ZGlkRGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
KCp0aGlzKTsKICAgICB9CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTg1LDcg
Kzg1LDcgQEAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6On5XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eSgpCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRQ
cm9jZXNzKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQoJndlYlBy
b2Nlc3NQcm94eSkuaXNOZXdFbnRyeSkKLSAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCksICp0aGlzKTsKKyAgICAg
ICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigp
LCAqdGhpcyk7CiAKICAgICBBU1NFUlQocGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcy5pc0Vt
cHR5KCkpOwogICAgIGZvciAoY29uc3QgYXV0byYgd29ybGQgOiBtX3VzZXJDb250ZW50V29ybGRz
KQpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZVByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiAgICAgQVNTRVJU
KG1fcHJvY2Vzc2VzLmNvbnRhaW5zKCZ3ZWJQcm9jZXNzUHJveHkpKTsKIAogICAgIG1fcHJvY2Vz
c2VzLnJlbW92ZSgmd2ViUHJvY2Vzc1Byb3h5KTsKLSAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgd2Vi
UHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsK
IH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRX
b3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQpAQCAtMTI2LDcgKzEyNiw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRV
c2UoQVBJOjpVc2VyQ29udGVudFdvcmxkCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3VzZXJDb250
ZW50V29ybGRzLmFkZCgmd29ybGQpOwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewog
ICAgICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAg
ICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpBZGRVc2VyQ29udGVudFdvcmxkcyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIo
KSwgd29ybGQubmFtZSgpKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRV
c2VyQ29udGVudFdvcmxkcyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwgd29y
bGQubmFtZSgpKSB9KSwgaWRlbnRpZmllcigpKTsKICAgICB9CiB9CiAKQEAgLTE1MCw3ICsxNTAs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVu
dFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50VwogewogICAgIGlmIChzaG91bGRTZW5kUmVtb3Zl
VXNlckNvbnRlbnRXb3JsZHNNZXNzYWdlKHdvcmxkLCBudW1iZXJPZlVzZXNUb1JlbW92ZSkpIHsK
ICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAg
ICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoeyB3b3Js
ZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAgICAgfQogfQogCkBAIC0xNjMsNyAr
MTYzLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNv
bnRlbnRXb3JsZFVzZXMoSGFzaENvdW50ZWRTZXQ8UmUKICAgICB9CiAKICAgICBmb3IgKFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29y
bGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVz
ZXJDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJT
Y3JpcHQmIHVzZXJTY3JpcHQsIEluamVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVs
eSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSQogICAgIG1fdXNl
clNjcmlwdHMtPmVsZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7
IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0
LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OkFkZFVzZXJTY3JpcHRzKHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlk
ZW50aWZpZXIoKSwgdXNlclNjcmlwdC51c2VyU2NyaXB0KCkgfSB9LCBpbW1lZGlhdGVseSksIGlk
ZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJl
bW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0KQpAQCAtMTgzLDcgKzE4
Myw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3Jp
cHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0CiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRX
b3JsZD4gd29ybGQgPSB1c2VyU2NyaXB0LnVzZXJDb250ZW50V29ybGQoKTsKIAogICAgIGZvciAo
V2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlw
dCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCks
IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclNj
cmlwdHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU2NyaXB0KTsKIApAQCAtMTkzLDcgKzE5
Myw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3Jp
cHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdv
cmxkKQogewogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZp
ZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIHVzZXJTY3JpcHRzUmVtb3Zl
ZCA9IG1fdXNlclNjcmlwdHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclNjcmlw
dD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTY3JpcHQpIHsKICAgICAgICAgcmV0dXJuICZ1c2VyU2Ny
aXB0LT51c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkK
ICAgICAgICAgd29ybGRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIu
a2V5LT5pZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mg
OiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh3b3JsZElkZW50aWZpZXJzKSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRl
bnRpZmllcnMpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMo
KS5jbGVhcigpOwogCkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6YWRkVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclMK
ICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTdHlsZVNoZWV0
KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0g
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
QWRkVXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxk
LT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IHsgdXNlclN0eWxl
U2hlZXQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC51
c2VyU3R5bGVTaGVldCgpIH0gfSksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxl
U2hlZXQmIHVzZXJTdHlsZVNoZWV0KQpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxl
U2hlZXQmIHVzCiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5
bGVTaGVldC51c2VyQ29udGVudFdvcmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSog
cHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVu
dGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2Vy
U3R5bGVTaGVldC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5
bGVTaGVldHMtPmVsZW1lbnRzKCkucmVtb3ZlQWxsKCZ1c2VyU3R5bGVTaGVldCk7CiAKQEAgLTI0
OCw3ICsyNDgsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVV
c2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1cwogdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKEFQSTo6VXNlckNvbnRl
bnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVy
KCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVl
dHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1bnNpZ25l
ZCB1c2VyU3R5bGVTaGVldHNSZW1vdmVkID0gbV91c2VyU3R5bGVTaGVldHMtPnJlbW92ZUFsbE9m
VHlwZU1hdGNoaW5nPEFQSTo6VXNlclN0eWxlU2hlZXQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU3R5
bGVTaGVldCkgewogICAgICAgICByZXR1cm4gJnVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdv
cmxkKCkgPT0gJndvcmxkOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cygpCiAgICAgICAgIHdvcmxk
SWRlbnRpZmllcnMudW5jaGVja2VkQXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmll
cigpKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVy
KCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHdvcmxkSWRlbnRpZmll
cnMpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCku
Y2xlYXIoKTsKIApAQCAtMjkwLDcgKzI5MCw3IEBAIGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OmFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlCiAg
ICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYWRkKGhhbmRsZXIuaWRlbnRpZmllcigpLCAmaGFu
ZGxlcik7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OkFkZFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB7IGhhbmRsZXIuaWRlbnRpZmllcigp
LCB3b3JsZC0+aWRlbnRpZmllcigpLCBoYW5kbGVyLm5hbWUoKSB9IH0pLCBpZGVudGlmaWVyKCku
dG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5p
ZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlk
ZW50aWZpZXIoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMDAsNyArMzAwLDcg
QEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VI
YW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1l
c3NhZ2VIYW5kbGVycy5iZWdpbigpLCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBu
YW1lICYmICZpdC0+dmFsdWUtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQpIHsKICAgICAg
ICAgICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXIod29ybGQuaWRlbnRpZmllcigpLCBp
dC0+dmFsdWUtPmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAg
ICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0
LT52YWx1ZS0+aWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpKTsKIAogICAgICAgICAgICAgbV9z
Y3JpcHRNZXNzYWdlSGFuZGxlcnMucmVtb3ZlKGl0KTsKIApAQCAtMzEzLDcgKzMxMyw3IEBAIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxl
ckZvck5hbWUoY29uc3QgU3RyaW5nCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29y
bGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigp
IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAg
IHVuc2lnbmVkIG51bWJlclJlbW92ZWQgPSAwOwogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJz
LnJlbW92ZUlmKFsmXShhdXRvJiBlbnRyeSkgewpAQCAtMzI3LDcgKzMyNyw3IEBAIHZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMo
QVBJOjpVc2VyQ29udGVuCiAgICAgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQsIG51
bWJlclJlbW92ZWQpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpk
aWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhh
bmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQordm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0Rh
dGEmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2Ug
PSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0z
NTEsNyArMzUxLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkQ29u
dGVudFJ1bGVMaXN0KEFQSTo6Q29udGVudFJ1bGVMaXN0JiBjb24KICAgICBhdXRvIHBhaXIgPSBz
dGQ6Om1ha2VfcGFpcihjb250ZW50UnVsZUxpc3QubmFtZSgpLCBjb250ZW50UnVsZUxpc3QuY29t
cGlsZWRSdWxlTGlzdCgpLmRhdGEoKSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3By
b2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpBZGRDb250ZW50UnVsZUxpc3RzKHsgcGFpciB9KSwgaWRlbnRpZmllcigpLnRv
VUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkp
OwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQogICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6
QWRkQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSwgeyBwYWlyIH0gfSwgMCk7CkBAIC0z
NjIsNyArMzYyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
Q29udGVudFJ1bGVMaXN0KGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICBtX2NvbnRlbnRSdWxlTGlz
dHMucmVtb3ZlKG5hbWUpOwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7
CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0KG5hbWUpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgZm9y
IChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlQ29udGVu
dFJ1bGVMaXN0IHsgaWRlbnRpZmllcigpLCBuYW1lIH0sIDApOwpAQCAtMzczLDcgKzM3Myw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxl
TGlzdHMoKQogICAgIG1fY29udGVudFJ1bGVMaXN0cy5jbGVhcigpOwogCiAgICAgZm9yIChhdXRv
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBp
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBp
ZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vz
c2VzKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVM
aXN0TWFuYWdlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSB9LCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDYyMzMwMTExNmVk
MWQ2NTRmMmEzNDg5YTdmMGY2MjQ3NzY2MTI0YWUuLjBlZDM2YTU5Y2MzYTcxZDlmMjE5ZTE5NDg0
MjljOGE3OTFkMGM2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgpAQCAtMTEwLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNz
YWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWlu
dDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAg
dm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogCiAgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxk
VXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRX
b3JsZFVzZXMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9S
ZW1vdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbgppbmRleCA4MTcxNDM1MWZjZTc3NWRhYmM0NzE4ZDQzZjg4ZTM2ZjVmNTBmZWU0Li4y
NWE0ZTI5MTI3NGVlMDM2OWZkZDE2ZWUwMDVjMmM5NWY5ZmFmMjc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSArMjQs
NSBAQAogICovCiAKIG1lc3NhZ2VzIC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IHsK
LURpZFBvc3RNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZv
RGF0YSBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFS
ZWZlcmVuY2UgbWVzc2FnZSkgV2FudHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJh
bWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNl
IG1lc3NhZ2UpIFdhbnRzQ29ubmVjdGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKaW5kZXggMjQ4MTgyZDgwOTIxZmUxYTE5ZTVj
NjM0YjE2YTI0YzdjN2QxNzZlZi4uMWU5MWFiYjZlZmRkMGNkNTk2Zjk0ZGFjZThmNzI2OGUzMTg0
YTVjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwCkBAIC02NiwxMCArNjYsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1T
Y3JvbGxFdmVudFJhdGlvRm9yU3dpcGUgPSAwLjU7CiBzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVT
bmFwc2hvdFJlbW92YWxSZW5kZXJUcmVlU2l6ZVRhcmdldEZyYWN0aW9uID0gMC41OwogI2VuZGlm
CiAKLXN0YXRpYyBIYXNoTWFwPHVpbnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmll
d0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkKK3N0YXRpYyBIYXNoTWFwPFBhZ2VJZGVu
dGlmaWVyLCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0Zv
ckFsbFBhZ2VzKCkKIHsKICAgICAvLyBUaGUga2V5IGluIHRoaXMgbWFwIGlzIHRoZSBhc3NvY2lh
dGVkIHBhZ2UgSUQuCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3Qs
IFZpZXdHZXN0dXJlQ29udHJvbGxlcio+PiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzOworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIqPj4gdmlld0dlc3R1cmVDb250cm9sbGVyczsKICAgICByZXR1cm4gdmlld0dlc3R1
cmVDb250cm9sbGVycy5nZXQoKTsKIH0KIApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgVmlld0dl
c3R1cmVDb250cm9sbGVyOjpjb25uZWN0VG9Qcm9jZXNzKCkKICAgICBtX2lzQ29ubmVjdGVkVG9Q
cm9jZXNzID0gdHJ1ZTsKIH0KIAotVmlld0dlc3R1cmVDb250cm9sbGVyKiBWaWV3R2VzdHVyZUNv
bnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JHZXN0dXJlKHVpbnQ2NF90IHBhZ2VJRCwgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpHZXN0dXJlSUQgZ2VzdHVyZUlEKQorVmlld0dlc3R1cmVDb250cm9sbGVy
KiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JHZXN0dXJlKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJlSUQgZ2VzdHVyZUlEKQog
ewogICAgIGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID0gdmlld0dlc3R1cmVDb250cm9sbGVy
c0ZvckFsbFBhZ2VzKCkuZmluZChwYWdlSUQpOwogICAgIGlmIChnZXN0dXJlQ29udHJvbGxlckl0
ZXIgPT0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZW5kKCkpCkBAIC01NDcs
NyArNTQ3LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmZvcmNlUmVwYWludElmTmVl
ZGVkKCkKIAogICAgIG1faGFzT3V0c3RhbmRpbmdSZXBhaW50UmVxdWVzdCA9IHRydWU7CiAKLSAg
ICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBhdXRvIHBh
Z2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJlSUQg
PSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgbV93ZWJQYWdlUHJveHkuZm9yY2VSZXBhaW50KFZv
aWRDYWxsYmFjazo6Y3JlYXRlKFtwYWdlSUQsIGdlc3R1cmVJRF0gKENhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXIgPSBjb250cm9s
bGVyRm9yR2VzdHVyZShwYWdlSUQsIGdlc3R1cmVJRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDQzMWMyNzY2ZDA4MjYxZTUyY2Vm
YjIwNmQ2Y2QyOTliMTJjZjEzOTQuLmMxNjcwZDNhOTRjZWYzZDkwNmFmNDk0OWNkNTQxMzYwNDk0
NzYzMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
bG9hdFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVk
ZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTE3NSw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIC8v
IElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgVmlld0dl
c3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyRm9yR2VzdHVyZSh1aW50NjRfdCBwYWdlSUQsIEdl
c3R1cmVJRCk7CisgICAgc3RhdGljIFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxlckZv
ckdlc3R1cmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEdlc3R1cmVJRCk7CiAKICAgICBzdGF0
aWMgR2VzdHVyZUlEIHRha2VOZXh0R2VzdHVyZUlEKCk7CiAgICAgdm9pZCB3aWxsQmVnaW5HZXN0
dXJlKFZpZXdHZXN0dXJlVHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9WaXNpdGVkTGlua1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRM
aW5rU3RvcmUuY3BwCmluZGV4IGYyZTdiOTM0MDU3NjZlYTVlOGM3NWVhYmY1YWM2YTRmZDRjMDRk
ZWUuLjk5MWRjMmZjZmY5ZDQzYzVlMDg3Njg2NGNjMjgwNDM4ZDllMzRhMTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDksNyArMTA5LDcg
QEAgdm9pZCBWaXNpdGVkTGlua1N0b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdl
YlByb2Nlc3NQcm94eSYsIElQQzo6Q29ubmUKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQog
Ci12b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgU2hhcmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkKK3ZvaWQgVmlzaXRlZExpbmtT
dG9yZTo6YWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBT
aGFyZWRTdHJpbmdIYXNoIGxpbmtIYXNoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkg
PSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKSkgewogICAgICAgICBpZiAoIXdlYlBh
Z2VQcm94eS0+YWRkc1Zpc2l0ZWRMaW5rcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZS5oCmluZGV4IDA2ZjIwYmE5MWNiZGJiYTI2Nzk1ZjM4YzYwYzgxYjY4ZDgx
NzU5YTUuLjAyYjQ5YmFjNTVlMjQ4NmJkM2U4OWE5ZWU4OGVhODgzMzZmMWVmYzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmgKQEAgLTY3LDcgKzY3LDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVTaGFyZWRNZW1vcnkoKSBmaW5hbDsKICAg
ICB2b2lkIGRpZFVwZGF0ZVNoYXJlZFN0cmluZ0hhc2hlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
U2hhcmVkU3RyaW5nSGFzaD4mIGFkZGVkSGFzaGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2hh
cmVkU3RyaW5nSGFzaD4mIHJlbW92ZWRIYXNoZXMpIGZpbmFsOwogCi0gICAgdm9pZCBhZGRWaXNp
dGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlNoYXJlZFN0cmlu
Z0hhc2gpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gpOwogCiAgICAgdm9pZCBzZW5k
U3RvcmVIYW5kbGVUb1Byb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCmluZGV4IGU3
ODYyZTM2NWIwZmZlMTM5MTQ2M2MwMDcwNjFkN2U3ZjhmOGQ1NGIuLjJlNjZjNDI4MDhlYmI3ZWJj
ZjM5MzE5YjEwODZhOTI3ZjMzMTM2MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbgpAQCAtMjEsNSArMjEsNSBAQAogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBWaXNpdGVkTGlua1N0b3JlIHsKLSAgICBBZGRWaXNp
dGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGxpbmtIYXNoKQor
ICAgIEFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgdWludDY0X3QgbGlua0hhc2gpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCA2NTZjOGRjYzU5YzRhZWJjZjEzNmQ3MGM3ZjQwMGY5Nzc2ODFkNTBj
Li4xZjMyMTAwM2M3ZjkyYmMxN2NmMWI3ODMyYjcxZDk5MjAyYTYxNmY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM4MSwxMiArMzgxLDEyIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpmb3JNb3N0VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFNlCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc2VsZWN0ZWRQYWdlKTsK
IH0KIAotUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUGFnZVBy
b3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9j
ZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNv
bmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJQYWdlUHJveHkocGFnZUNsaWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEZNb3ZlKGNvbmZp
Z3VyYXRpb24pKSk7CiB9CiAKLVdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBS
ZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQorV2ViUGFnZVByb3h5
OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBw
cm9jZXNzLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmIGNvbmZpZ3VyYXRpb24pCiAgICAgOiBtX3BhZ2VDbGllbnQobWFrZVdlYWtQdHIocGFnZUNs
aWVudCkpCiAgICAgLCBtX2NvbmZpZ3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKICAg
ICAsIG1fbmF2aWdhdGlvbkNsaWVudChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVu
dD4oKSkKQEAgLTQzNSw3ICs0MzUsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdl
Q2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogI2VuZGlm
CiAgICAgLCBtX3Jlc2V0UmVjZW50Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJldlYlBhZ2VQcm94eTo6cmVzZXRSZWNlbnRDcmFzaENvdW50KQogewotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb25zdHJ1Y3Rvcjogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5kcmF3
c0JhY2tncm91bmQoKSkKICAgICAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6
dHJhbnNwYXJlbnQpOwpAQCAtNDg5LDcgKzQ4OSw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVBy
b3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWlu
CiAKIFdlYlBhZ2VQcm94eTo6fldlYlBhZ2VQcm94eSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVChtX3Byb2Nlc3MtPndlYlBhZ2UobV9wYWdlSUQp
ICE9IHRoaXMpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKQEAgLTcwOCw3ICs3MDgsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVn
aXN0cmFibGVEb21haW4pCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBBU1NFUlQoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibGF1bmNoUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1By
b3h5OjpFbmRzVXNpbmdEYXRhU3RvcmU6Olllcyk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX3BhZ2VJRCk7CkBAIC03NjMsNyArNzYzLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3Bl
bmRDdXJyZW50UGFnZUlmUG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJy
ZW50UGFnZUlmUG9zc2libGU6IFN1c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBp
ZCAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgYXV0byBzdXNwZW5k
ZWRQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3By
b2Nlc3MuY29weVJlZigpLCAqbWFpbkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50
ZXJpbmdBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk7CiAKLSAgICBMT0coUHJvY2Vzc1N3YXBw
aW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMg
Zm9yIHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQo
KSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7
CisgICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVh
dGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0
ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCkudG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2lu
Z1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJv
bUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CiAKICAgICAvLyBJZiB0aGUgY2xpZW50
IGZvcmNlZCBhIHN3YXAgdGhlbiBpdCBtYXkgbm90IGJlIHdlYi1jb21wYXRpYmxlIHRvIGtlZXAg
dGhlIHByZXZpb3VzIHBhZ2UgYmVjYXVzZSBvdGhlciB3aW5kb3dzIG1heSBoYXZlIGFuIG9wZW5l
ciBsaW5rIHRvIGl0LiBXZSB0aHVzIGNsb3NlIGl0IGFzIHNvb24gYXMgd2UKICAgICAvLyBjYW4g
ZG8gc28gd2l0aG91dCBmbGFzaGluZy4KQEAgLTc4MSw3ICs3ODEsNyBAQCBib29sIFdlYlBhZ2VQ
cm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmln
YXRpb24sIE9wdAogdm9pZCBXZWJQYWdlUHJveHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4m
JiBkcmF3aW5nQXJlYSwgUmVmUHRyPFdlYkZyYW1lUHJveHk+JiYgbWFpbkZyYW1lKQogewogICAg
IEFTU0VSVCghbV9pc0Nsb3NlZCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAic3dhcFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAic3dhcFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKIAogICAgIG1fcHJvY2VzcyA9IFdURk1vdmUocHJvY2Vzcyk7CiAgICAgbV93
ZWJzaXRlRGF0YVN0b3JlID0gbV9wcm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CkBAIC04NzMs
MTAgKzg3MywxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2Vz
cygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vz
c0ZvclJlbG9hZCgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1
bmNoUHJvY2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2Ug
aXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQ6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICAKQEAgLTg4NSw3ICs4ODUsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQ
YWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogICAgIGxhdW5jaFByb2Nlc3MocmVn
aXN0cmFibGVEb21haW4pOwogCiAgICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0
ZW0oKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQ
cm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJv
Y2Vzc0ZvclJlbG9hZDogbm8gY3VycmVudCBpdGVtIHRvIHJlbG9hZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC05MDAs
MTAgKzkwMCwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5j
aFByb2Nlc3NGb3JSZWxvYWQoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxhdW5jaFByb2Nlc3NXaXRoSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRo
SXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiBwYWdlIGlzIGNsb3NlZDogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxh
dW5jaFByb2Nlc3NXaXRoSXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtOTU2LDcgKzk1
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNs
b3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJjbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1faXNDbG9z
ZWQgPSB0cnVlOwogCkBAIC0xMDMxLDcgKzEwMzEsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5
Q2xvc2UoKQogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5
Q2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICAvLyBDbG9zZSB3aXRo
b3V0IGRlbGF5IGlmIHRoZSBwcm9jZXNzIGFsbG93cyBpdC4gT3VyIGdvYWwgaXMgdG8gdGVybWlu
YXRlCiAgICAgLy8gdGhlIHByb2Nlc3MsIHNvIHdlIGNoZWNrIGEgcGVyLXByb2Nlc3Mgc3RhdHVz
IGJpdC4KQEAgLTEwNzcsNyArMTA3Nyw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAg
aWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICBsYXVuY2hQcm9jZXNzKFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC51cmwoKSB9
KTsKQEAgLTEwOTEsNyArMTA5MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3Bh
Z2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMTEyMCwxMCArMTEyMCwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2NlcwogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNs
b3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTMyLDcgKzEx
MzIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogCiAgICAgVVJMIGZpbGVVUkwgPSBVUkwo
VVJMKCksIGZpbGVVUkxTdHJpbmcpOwogICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgpKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxl
IGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC0xMTQyLDcgKzExNDIsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6
OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGVsc2Ugewog
ICAgICAgICByZXNvdXJjZURpcmVjdG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3Rv
cnlVUkxTdHJpbmcpOwogICAgICAgICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxG
aWxlKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNv
dXJjZSBVUkwgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAg
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTcyLDEwICsx
MTcyLDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUo
Y29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRh
LCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBT
dHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTE4OSw3ICsxMTg5LDcgQEAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmIGRhdGEsIGMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5h
dmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmln
YXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBi
YXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCBzaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0Rh
dGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAg
LTEyMTUsMTMgKzEyMTUsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmln
YXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1s
RGF0YSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBV
UkwmIHVucmVhY2hhYmxlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5h
dGVIVE1MOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgLy8gV2hlbiB0aGUg
VUlQcm9jZXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNp
b25hbCBsb2FkLCBkbyBub3QgYXR0ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVy
bmF0aXZlIEhUTUwgbG9hZCBhcyB0aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRl
IGZyb20gYmVpbmcKICAgICAvLyBoYW5kbGVkIHByb3Blcmx5LgogICAgIGlmIChtX2lzQ2xvc2Vk
IHx8IG1faXNMb2FkaW5nQWx0ZXJuYXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExv
YWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVy
bmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhlcik6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRN
TDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI1OCwxMCArMTI1OCwxMCBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBodG1sRGF0YSwgY29uc3QgUwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVE
YXRhKEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRXZWJBcmNoaXZlRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQp
OworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2
ZURhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjg1LDEwICsxMjg1LDEwIEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJ
OjpPYmplY3QqIHVzCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhT
aW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQ
b2ludCwgSW50UG9pbnQgc2NyZWVuUG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRl
VG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMg
Y2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMg
Y2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xMzA0LDEwICsxMzA0LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0
ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywKIAog
dm9pZCBXZWJQYWdlUHJveHk6OnN0b3BMb2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJzdG9wTG9hZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3RvcExvYWRpbmc6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRo
U2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtX
aXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzIxLDcgKzEzMjEsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OnJlbG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9u
PiBvcHRpb25zKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlbG9h
ZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAicmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGU7CiAKQEAgLTEzOTgsNyArMTM5
OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3
YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+
IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVt
JiBpdGVtLCBGcmFtZUxvYWRUeXBlIGZyYW1lTG9hZFR5cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJk
SXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBMT0coTG9hZGluZywgIldl
YlBhZ2VQcm94eSAlcCBnb1RvQmFja0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywg
aXRlbS51cmwoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3Mo
KSkKQEAgLTE0MjAsMTAgKzE0MjAsMTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlS
ZXN0b3JlU2Nyb2xsUG9zaXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxp
ZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1
NTAsNyArMTU1MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjbGVhckluc3BlY3RvclRhcmdldHMo
KQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCiB7Ci0gICAg
U3RyaW5nIHBhZ2VUYXJnZXRJZCA9IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQpOworICAg
IFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0
KHBhZ2VUYXJnZXRJZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0K
IApAQCAtMjg3Myw3ICsyODczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5
RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0
b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9j
dW1lbnQsIE9wdGlvbmFsPFdlYkNvcmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5z
ZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgQVNTRVJUKG1f
cHJvdmlzaW9uYWxQYWdlKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJj
b21taXRQcm92aXNpb25hbFBhZ2U6IHByZXZpb3VzUElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNp
b25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBw
cmV2aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBPcHRpb25hbDx1
aW50NjRfdD4gbWFpbkZyYW1lSURJblByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFr
ZU9wdGlvbmFsKG1fbWFpbkZyYW1lLT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OwogCkBAIC0y
OTEzLDcgKzI5MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdl
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Y29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgc3RkOjp1bmlxdWVfcHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQ
YWdlUHJveHksIFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBS
ZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBPcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNT
dXNwZW5kZWRQYWdlID0gJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94
eSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0
aW9uSW5OZXdQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIG5ld1By
b2Nlc3NQSUQgPSAlaSwgaGFzU3VzcGVuZGVkUGFnZSA9ICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250
aW51aW5nIG5hdmlnYXRpb24gJSIgUFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIs
IG5hdmlnYXRpb24ubmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsK
IAogICAgIGlmIChtX3Byb3Zpc2lvbmFsUGFnZSkgewpAQCAtMzA3NCw3ICszMDc0LDcgQEAgU2Vz
c2lvblN0YXRlIFdlYlBhZ2VQcm94eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAo
V2ViQmFja0ZvcndhcmRMaXN0SXQKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVBy
b3h5OjpyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlLCBi
b29sIG5hdmlnYXRlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJl
c3RvcmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fc2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVyVHJl
ZVNpemUgPSAwOwogICAgIG1faGl0UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQgPSBmYWxzZTsKQEAg
LTM5MzIsOCArMzkzMiw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICBpZiAoZnJhbWUt
PmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gbmF2
aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAgTE9HKExvYWRp
bmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQ
cm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9u
SUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIG1fcGFnZUlELCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBm
cmFtZUlEKTsKKyAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBw
cm9jZXNzIHBpZCAlaSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQg
JSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQu
dG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdh
dGlvbklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAog
ICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIApA
QCAtMzk4NSw3ICszOTg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGYKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFt
ZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZyYW1l
SUQsIG5hdmlnYXRpb25JRCwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVk
aXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwg
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJ
RCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC00MDE0LDcgKzQwMTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPAogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFN0cmluZyYgdXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNr
Rm9yd2FyZExpc3QpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2ls
bFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFn
ZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDAyNyw3ICs0
MDI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHIKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZv
ckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENhbmNlbENsaWVudFJl
ZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQwNzQsOCArNDA3NCw4IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U2VjdXJpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgZXJyb3IsIFdpbGxDb250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcp
IFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQsIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkp
OwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25h
bExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRh
dGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdl
YlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lIHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQudG9VSW50
NjQoKSwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgp
LmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9y
LmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQxNDEsOSArNDE0
MSw5IEBAIHN0YXRpYyBib29sIGlzTm9uVW5pcXVlTmF2aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlv
bihjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEgcmVxCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3Zp
ZGVyLCB1aW50MzJfdCBvcGFxdWVGcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZp
Y2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBP
cHRpb25hbDxIYXNJbnNlY3VyZUNvbnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQ
cm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQ
Ukl1NjQsIG1fcGFnZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRp
bmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2
aWdhdGlvbiAlIiBQUkl1NjQsIG1fcGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAg
ICAgTE9HKEJhY2tGb3J3YXJkLCAiKEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJh
Y2svZm9yd2FyZCBsaXN0IGlzIG5vdzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3Ry
aW5nKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENvbW1pdExv
YWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2Fk
Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VD
bGllbnQoKSk7CiAKQEAgLTQyNTQsNyArNDI1NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRD
b21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3Rv
ciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI3OCw3ICs0Mjc4LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IG5hdmkKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZEZpbmlz
aExvYWRGb3JGcmFtZSAtIFdlYlBhZ2VQcm94eSAlcCB3aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1
NjQgIiBkaWRGaW5pc2hMb2FkIiwgdGhpcywgbmF2aWdhdGlvbklEKTsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MzIzLDcg
KzQzMjMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JG
cmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELCBmcmFtZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBl
cnJvci5lcnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
ZGlkRmFpbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9y
LmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQzNjUsNyArNDM2
NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHVpbnQzMl90IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBV
UkwmJiB1cmwsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZv
ckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xp
ZW50KCkpOwogCkBAIC00NTM1LDcgKzQ1MzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5T
YWZlQnJvd3NpbmdDaGVjayhjb25zdCBVUkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxpc3Rlbgog
I2VuZGlmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwKLSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0
UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
IHsKICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQobV9wcm9j
ZXNzLmNvcHlSZWYoKSwgZnJhbWVJRCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgaWRl
bnRpZmllciwgbmF2aWdhdGlvbklELCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwKQEAg
LTQ1NDMsNyArNDU0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yCiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLAotICAgIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9E
YXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9y
aWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0
X3QgbGlzdGVuZXJJRCkKIHsKQEAgLTQ1NTksNyArNDU1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgV2ViRnJhbWVQcm94eSYgZnJh
bWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwKLSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisg
ICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZv
RGF0YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xp
Y3lEZWNpc2lvblNlbmRlcj4mJiBzZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMs
IGN1cnJlbnQgdGFyZ2V0IFVSTCAlcyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAt
NDY5OSw3ICs0Njk5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgaWYgKCFm
cm9tQVBJICYmIG9yaWdpbmF0aW5nRnJhbWUgPT0gJmZyYW1lKQogICAgICAgICAgICAgc291cmNl
RnJhbWVJbmZvID0gZGVzdGluYXRpb25GcmFtZUluZm8uY29weVJlZigpOwogICAgICAgICBlbHNl
IGlmICghZnJvbUFQSSkKLSAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJ
bmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/
IHByb2Nlc3MtPndlYlBhZ2Uob3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CisgICAgICAg
ICAgICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKCpvcmln
aW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyKTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRB
Y3Rpdml0eSA9IHByb2Nlc3MtPnVzZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9u
RGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgIGJvb2wgc2hvdWxkT3Bl
bkFwcExpbmtzID0gIW1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbgpAQCAtNDc3Miw3ICs0NzcyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ0Zy
YW1lTmF2aWdhdGlvbihjb25zdCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWcK
ICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlm
aWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
RGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0
aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRS
ZXBseSYmIHJlcGx5KQogewpAQCAtNDc5MCw3ICs0NzkwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJv
b2wgaXMKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3Qg
ZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0g
ICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3Jp
Z2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZv
RGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAg
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpA
QCAtNDkyMyw3ICs0OTIzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5h
dmlnYXRpb25EYXRhKGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUs
IHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTQzLDcgKzQ5
NDMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0
IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
UGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAK
ICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00
OTcwLDcgKzQ5NzAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGly
ZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9y
bVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMTgsMTQgKzUw
MTgsMTQgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzYKICNlbmRpZgog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRh
JiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVz
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0Zl
YXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKICAgICBNRVNTQUdFX0NIRUNLKG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCkpOwotICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFt
ZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
bV9wcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0aW5nUGFnZUlEKSk7CisgICAgYXV0byBvcmlnaW5h
dGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IG1fcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRp
bmdQYWdlSUQpIDogbnVsbHB0cik7CiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFt
ZSA/IG1fbWFpbkZyYW1lLT51cmwoKSA6IFVSTCgpOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkws
IHJlcXVlc3QsIHJlcGx5ID0gV1RGTW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVByb3h5PiBu
ZXdQYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0gICAgICAgICAgICBy
ZXBseSgwLCBXVEY6Om51bGxvcHQpOworICAgICAgICAgICAgcmVwbHkoV1RGOjpudWxsb3B0LCBX
VEY6Om51bGxvcHQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTU4MzQs
NyArNTgzNCw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRl
ckRlc3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX3BhZ2VJRDsKKyAgICByZXR1
cm4gbV9wYWdlSUQudG9VSW50NjQoKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hh
bmdlZEZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJ
bmRleCkKQEAgLTY3MTUsNyArNjcxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZVNldExh
cmdlc3RGcmFtZUNoYW5nZWQodWludDY0X3QgZnJhbWVJRCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRC
ZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBp
ZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY3MjcsNyArNjcy
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkK
IAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKCkKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9u
c2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNmM1YWQ2MjVkMTIwNGM3
YzBkODM5Njk5ZTdlMmY2NWE1YmE2NGUwMy4uYWIzZTU5N2Q2MDQzNjk3Mjc2M2EwYjg5MjlkYzI4
YzdhMzUxMTliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgy
LDYgKzgyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL01lZGlhUGxheWJhY2tUYXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVByb2R1Y2VyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1TY3JlZW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlLmg+CkBAIC0zODIsMTQgKzM4MywxNCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlPgogI2VuZGlmCiAgICAg
LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGFnZVByb3h5PiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5
JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAg
c3RhdGljIFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1By
b3h5JiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9u
PiYmKTsKICAgICB2aXJ0dWFsIH5XZWJQYWdlUHJveHkoKTsKIAogICAgIHN0YXRpYyB2b2lkIGZv
ck1vc3RWaXNpYmxlV2ViUGFnZUlmQW55KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlBhZ2VQcm94eSop
PiYmKTsKIAogICAgIGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24o
KSBjb25zdDsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSUQ7IH0KIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCkBA
IC0xNTAyLDcgKzE1MDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZp
Z2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJOYXZpZ2F0
aW9uRGF0YVN0b3JlJiwgdWludDY0X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92
aXNpb25hbFVSTEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKLSAgICAgICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9E
YXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCisg
ICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJh
bWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwKICAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAogICAgICAgICB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmKTsKQEAgLTE1MTEsNyArMTUxMiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRS
ZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpO
YXZpZ2F0aW9uJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hv
dWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
ID0gV1RGOjpudWxsb3B0KTsKICAgICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRp
ZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYp
PiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJh
bWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwK
LSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisg
ICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdp
bmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZl
cmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsK
ICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSk7CkBAIC0xNTUxLDcgKzE1NTIsNyBAQCBXRUJQQUdFUFJPWFlf
TE9BRE9QVElNSVpFUl9BRERJVElPTlNfMQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZSh1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBj
dXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVu
dERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFdURjo6Q29tcGxldGlvbkhh
bmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogCiBwcml2YXRlOgotICAgIFdlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQ
YWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQ
cm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb24+JiYpOwogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKICAgICB2b2lk
IG5vdGlmeVByb2Nlc3NQb29sVG9QcmV3YXJtKCk7CkBAIC0xNjI3LDEzICsxNjI4LDEzIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9u
SUQpOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQ
cm9jZXNzUHJveHk+JiYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmJiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAg
ICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAg
ICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3Jp
Z2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5j
ZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVk
aXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+
JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2
NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVz
dEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlz
dGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1
aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAg
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBV
c2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmLAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3Ry
aW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBA
IC0xNjU1LDcgKzE2NTYsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRp
dGxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBmcmFt
ZUlEKTsKIAogICAgIC8vIFVJIGNsaWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBG
cmFtZUluZm9EYXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVw
bHkmJik7CisgICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxh
eWVkUmVwbHkmJik7CiAgICAgdm9pZCBzaG93UGFnZSgpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlw
dEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRB
bGVydDo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0odWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3Qg
U3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRl
bGF5ZWRSZXBseSYmKTsKQEAgLTIzMjcsNyArMjMyOCw3IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BU
SU1JWkVSX0FERElUSU9OU18yCiAgICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU+
IG1fdmFsaWRhdGlvbkJ1YmJsZTsKICNlbmRpZgogCi0gICAgY29uc3QgdWludDY0X3QgbV9wYWdl
SUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBi
b29sIG1faXNQYWdlU3VzcGVuZGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zpc2l0ZWRM
aW5rcyB7IHRydWUgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5tZXNzYWdlcy5pbgppbmRleCA2ZmNlY2RjNmI2NWQ4OGM5Yzk4NTg1Mzk1YWI1OWU3ZDgxMjZi
YTA2Li5iMWU3OTkyMjNiZmM5OWMzZmQyYjUyNWZmN2U4OTI0NjQ5NTcxN2NhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw3
ICsyMiw3IEBACiAKIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBVSSBtZXNzYWdl
cwotICAgIENyZWF0ZU5ld1BhZ2Uoc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzIHdp
bmRvd0ZlYXR1cmVzLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSkgLT4gKHVpbnQ2NF90IG5ld1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpX
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXdQYWdlUGFyYW1ldGVycykgU3luY2hyb25vdXMK
KyAgICBDcmVhdGVOZXdQYWdlKHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2Vi
Q29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmln
YXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhKSAtPiAoT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzPiBuZXdQYWdlUGFyYW1ldGVycykgU3luY2hyb25vdXMKICAgICBTaG93
UGFnZSgpCiAgICAgQ2xvc2VQYWdlKGJvb2wgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIpCiAgICAg
UnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgp
IFN5bmNocm9ub3VzCkBAIC0xMDQsOCArMTA0LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCiAgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
dWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hl
Y2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVz
cG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNh
blNob3dNSU1FVHlwZSwgU3RyaW5nIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQotICAgIERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3Ry
dWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0
cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RS
ZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkK
LSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlE
LCBib29sIGlzTWFpbkZyYW1lLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lD
aGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2
aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZy
YW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVz
dEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBw
b2xpY3lDaGVja0lkZW50aWZpZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNp
dGVQb2xpY2llcykgU3luY2hyb25vdXMKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIg
cG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2Vi
S2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50
NjRfdCBsaXN0ZW5lcklEKQorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5j
KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBz
dHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwg
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkgLT4gKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50
aWZpZXIsIGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1
aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBP
cHRpb25hbDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgU3lu
Y2hyb25vdXMKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVy
LCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxl
VG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwCmluZGV4IGM4
MDIzZGU0MTYxNjQ3NTAxMGY0MjgyMzlhN2JlZDA3YjE3Zjg1ZDcuLmY0OTcxNTFkNzVjNWU2ZjFm
Mjg2YWFhNzllOGE2NDdjNmE5ZjM2YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAg
dm9pZCBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6YWRkV2ViUGFnZShXZWJQYWdlUHJveHkm
IHdlYlBhZ2VQcm94eSwgV2ViUHJvY2UKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvY2Vzcy5pc1By
ZXdhcm1lZCgpKTsKIAogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQoJnByb2Nlc3MpLmlzTmV3RW50
cnkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0
aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1l
T2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRo
aXMsIHByb2Nlc3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRv
VUludDY0KCkpOwogICAgICAgICB3ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHByb2Nlc3Ms
ICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAgICAgfQogCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQg
V2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3
ZWJQYWdlUHJveHksIFdlYlByCiAgICAgd2ViUGFnZURpZENsb3NlQ29ubmVjdGlvbih3ZWJQYWdl
UHJveHksICpwcm9jZXNzLmNvbm5lY3Rpb24oKSk7CiAKICAgICBpZiAobV9wcm9jZXNzZXMucmVt
b3ZlKCZwcm9jZXNzKSkgewotICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQ
cm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdl
UHJveHkucGFnZUlEKCkpOworICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQ
cm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdl
UHJveHkucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgICAgIHdlYlByb2Nlc3NEaWRDbG9zZUNv
bm5lY3Rpb24ocHJvY2VzcywgKnByb2Nlc3MuY29ubmVjdGlvbigpKTsKICAgICB9CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMGUxMzlmMzBkOWNl
ZjlmNjMyMzNjNjEzYjVlNDJiY2RkNTk4ZWU2OC4uMGI4YjM0NWVmOGVmMzIyZjJmMjc1N2Q0ZWUz
N2JlZjlkMjcwYmIzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcApAQCAtMTI5Niw5ICsxMjk2LDkgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJl
Z2lzdGVyZWRTZXJ2aWNlV29ya2Vycyhjb25zdCBXZWJzaXRlRGF0YVN0b3JlJiBzdG8KIH0KICNl
bmRpZgogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3Rv
cmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7Ci0gICAgYXV0byByZXN1
bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFz
aFNldDx1aW50NjRfdD4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOworICAgIGF1dG8g
cmVzdWx0ID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmFkZChkYXRhU3RvcmUuc2Vzc2lvbklEKCks
IEhhc2hTZXQ8UGFnZUlkZW50aWZpZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsK
ICAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgYXV0
byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CkBAIC0xMzE2LDcgKzEzMTYsNyBA
QCB2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWlu
dDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVE
YXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dl
YnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBk
YXRhU3RvcmUpCiB7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7
CiAgICAgYXV0byBpdGVyYXRvciA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Npb25J
RCk7CkBAIC0yMjExLDcgKzIyMTEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVO
ZXR3b3JrUHJvY2Vzc0Fzc2VydGlvblN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmCiB9CiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi1TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQ
cm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0X3Qg
cGFnZUlEKSBjb25zdAorU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Bvb2w6
OnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBmb3Ig
KGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZh
bHVlcygpKSB7CkBAIC0yNTE5LDcgKzI1MTksNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVh
ckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpCiAgICAgc2VuZFRvQWxsUHJvY2Vzc2Vz
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGlu
ZygpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdp
dGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4s
IHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNvbW1pdHRlZENyb3NzU2l0
ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
RG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBpZiAoIW1fbmV0d29ya1Byb2Nlc3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAxNjU1NDViMWEyZjg2ZWFhNGI4MzNjOTNh
YmU4MGRjOTBlZTUyNjMzLi4xN2UzZTgwMmJjNDUwMDhjMzg1MTBiYWY1ZDRlMTQzOTkzYzhiMWFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTE0OCw2ICsx
NDgsMTggQEAgcHVibGljOgogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CiAgICAgdm9pZCByZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+
CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVjZWl2
ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZl
cik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAgIHJl
bW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRv
VUludDY0KCkpOworICAgIH0KIAogICAgIGJvb2wgZGlzcGF0Y2hNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hTeW5jTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVy
PiYpOwpAQCAtMTkzLDggKzIwNSw4IEBAIHB1YmxpYzoKIAogICAgIFJlZjxXZWJQYWdlUHJveHk+
IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYm
KTsKIAotICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBh
Z2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYpOwotICAgIHZvaWQgcGFnZUVuZFVzaW5nV2Vic2l0ZURh
dGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICB2b2lkIHBh
Z2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
c2l0ZURhdGFTdG9yZSYpOworICAgIHZvaWQgcGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYpOwogICAgIGJvb2wgaGFz
UGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYpIGNvbnN0OwogCiAg
ICAgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Nv
bmZpZ3VyYXRpb24tPmluamVjdGVkQnVuZGxlUGF0aCgpOyB9CkBAIC0zNjUsNyArMzc3LDcgQEAg
cHVibGljOgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHZvaWQgZXN0YWJsaXNo
V29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzUHJv
eHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBPcHRpb25hbDxQQUw6OlNlc3Npb25J
RD4pOwotICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHlGcm9tUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CisgICAgU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIGNvbnN0IEhhc2hNYXA8V2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqPiYgc2VydmljZVdvcmtl
clByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXM7IH0KICAg
ICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcihib29sIGFs
bG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlciA9IGFsbG93
czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyKCkg
Y29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXI7
IH0KQEAgLTQ5Myw3ICs1MDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZW5kRGlzcGxheUNvbmZp
Z3VyYXRpb25DaGFuZ2VkTWVzc2FnZUZvclRlc3RpbmcoKTsKICAgICB2b2lkIGNsZWFyQ3VycmVu
dE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCk7CiAKLSAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0
ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBjb21taXR0ZWRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIHRvRG9tYWluLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFdQRSkKICAgICB2b2lkIHNldFNhbmRib3hFbmFibGVkKGJv
b2wgZW5hYmxlZCkgeyBtX3NhbmRib3hFbmFibGVkID0gZW5hYmxlZDsgfTsKQEAgLTc1OCw3ICs3
NzAsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGF0aHMgbV9yZXNvbHZlZFBhdGhzOwogCi0g
ICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDx1aW50NjRfdD4+IG1fc2Vzc2lvblRv
UGFnZUlEc01hcDsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBIYXNoU2V0PFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPj4gbV9zZXNzaW9uVG9QYWdlSURzTWFwOwogICAgIFJ1bkxvb3A6OlRp
bWVyPFdlYlByb2Nlc3NQb29sPiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXNUZXJtaW5hdGlvblRp
bWVyOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDgyMDM0NjVjYjI4MTRkMmNmYzMyOGZhNzk0NjYy
YTIwZTAyYjQzMmMuLjY3ODMxZTIwNzgwOWMwZWM1YjYyOGFlYzBkMzkxMTE4MzVmMzEwZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTEwLDEw
ICsxMTAsOSBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc0Zvcklk
ZW50aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZgogICAgIHJldHVybiBhbGxQcm9jZXNz
ZXMoKS5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXVpbnQ2NF90IFdlYlByb2Nlc3NQcm94eTo6Z2Vu
ZXJhdGVQYWdlSUQoKQorUGFnZUlkZW50aWZpZXIgV2ViUHJvY2Vzc1Byb3h5OjpnZW5lcmF0ZVBh
Z2VJRCgpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVBhZ2VJRDsKLSAgICByZXR1cm4g
Kyt1bmlxdWVQYWdlSUQ7CisgICAgcmV0dXJuIFBhZ2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwog
fQogCiBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJveHlNYXAmIGdsb2JhbFBhZ2VN
YXAoKQpAQCAtMzMwLDcgKzMyOSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzaHV0RG93bigp
CiAgICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3ModGhpcyk7CiB9CiAKLVdlYlBh
Z2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBh
Z2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdlSUQpOwogfQpAQCAtMzYzLDcg
KzM2Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVt
ZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAKIFJlZjxXZWJQYWdlUHJveHk+IFdl
YlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBSZWY8
QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJhdGlvbikKIHsKLSAgICB1aW50
NjRfdCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gZ2VuZXJh
dGVQYWdlSUQoKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiB3ZWJQYWdlID0gV2ViUGFnZVByb3h5
OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwgV1RGTW92ZShwYWdlQ29uZmlndXJh
dGlvbikpOwogCiAgICAgYWRkRXhpc3RpbmdXZWJQYWdlKHdlYlBhZ2UuZ2V0KCksIEJlZ2luc1Vz
aW5nRGF0YVN0b3JlOjpZZXMpOwpAQCAtNDE1LDEwICs0MTQsMTAgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCBFbmRzVXNpbmdEYXRh
U3RvcmUgZW4KICAgICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0
b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExp
bmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50
aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8mIHVzZXJzID0gbV92aXNpdGVkTGlua1N0b3Jlc1dp
dGhVc2Vycy5lbnN1cmUoJnZpc2l0ZWRMaW5rU3RvcmUsIFtdIHsKLSAgICAgICAgcmV0dXJuIEhh
c2hTZXQ8dWludDY0X3Q+IHsgfTsKKyAgICAgICAgcmV0dXJuIEhhc2hTZXQ8UGFnZUlkZW50aWZp
ZXI+IHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICBBU1NFUlQoIXVzZXJzLmNv
bnRhaW5zKHBhZ2VJRCkpOwpAQCAtNDI4LDcgKzQyNyw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0
b3JlCiAgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUuYWRkUHJvY2VzcygqdGhpcyk7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlu
a1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nl
c3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlz
aXRlZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8gaXQgPSBt
X3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmZpbmQoJnZpc2l0ZWRMaW5rU3RvcmUpOwogICAg
IGlmIChpdCA9PSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmVuZCgpKQpAQCAtNTQxLDcg
KzU0MCw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5Ym9hcmRBY2Nlc3NFbmFibGVk
KCkKIH0KICNlbmRpZgogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdl
V2l0aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jvb2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQ
cm92aXNpb25hbFBhZ2VXaXRoSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAg
IGZvciAoYXV0byogcHJvdmlzaW9uYWxQYWdlIDogbV9wcm92aXNpb25hbFBhZ2VzKSB7CiAgICAg
ICAgIGlmIChwcm92aXNpb25hbFBhZ2UtPnBhZ2UoKS5wYWdlSUQoKSA9PSBwYWdlSUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDlhNmNiZjFmNDYwOTlh
NWY2ZjlmYTJmMGVlOGE2ZmEyYzgxODE2YTguLmFkM2YwMzhkZDY1NDY1YzA0ODk5NzliNjdlNTg1
Yzg1NmY5MmRjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5o
CkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNzSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZFN0cmluZ0hhc2guaD4KQEAgLTk3LDcgKzk4LDcgQEAgZW51bSBjbGFzcyBBbGxvd1By
b2Nlc3NDYWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJvY2Vzc1Byb3h5IDogcHVibGlj
IEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNpdmVuZXNzVGltZXI6OkNsaWVu
dCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nlc3NQcm94eT4sIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJD
bGllbnQgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdl
YkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOworICAgIHR5cGVkZWYgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFw
OwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEFQSTo6VXNlckluaXRpYXRl
ZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKICAgICBlbnVtIGNsYXNzIElzUHJl
d2FybWVkIHsKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXZWJzaXRl
RGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIHN0YXRpYyBXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKLSAg
ICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3Rh
dGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAg
UmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50JiwgUmVmPEFQSTo6UGFn
ZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZW51bSBjbGFzcyBCZWdpbnNVc2luZ0RhdGFTdG9y
ZSA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0xNDksMTAgKzE1MCwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3ModWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nlc3MoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlu
a1N0b3JlJiwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgYWRk
VmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5r
U3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAgICB2b2lkIGFkZFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5JiwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGlkRGVzdHJveVdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Jik7CkBAIC0z
MTEsNyArMzEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ViUGFnZU1lZGlhU3RhdGVEaWRDaGFu
Z2UoV2ViUGFnZVByb3h5Jik7CiAKIHByb3RlY3RlZDoKLSAgICBzdGF0aWMgdWludDY0X3QgZ2Vu
ZXJhdGVQYWdlSUQoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZ2VuZXJh
dGVQYWdlSUQoKTsKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBXZWJzaXRl
RGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQpOwogCiAgICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
CkBAIC0zNTQsNyArMzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENyZWF0ZUNvbnRleHRG
b3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29udGV4dElEKTsKICNlbmRpZgog
Ci0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWludDY0X3QgcGFnZUlEKSBjb25z
dDsKKyAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0ZUJhY2tGb3J3YXJkSXRlbShX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7CiAKICAgICAvLyBQbHVnaW5zCkBAIC00NDcs
NyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFByb3Zpc2lvbmFsUGFnZVByb3h5Kj4g
bV9wcm92aXNpb25hbFBhZ2VzOwogICAgIFVzZXJJbml0aWF0ZWRBY3Rpb25NYXAgbV91c2VySW5p
dGlhdGVkQWN0aW9uTWFwOwogCi0gICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNl
dDx1aW50NjRfdC8qIHBhZ2VJRCAqLz4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7Cisg
ICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAgICAgSGFzaFNldDxXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGll
czsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJtaW5hdGlvbldhc0Rpc2FibGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcApp
bmRleCBlMzU1MzE5ZWE0YzRlZTY1MWM2YmVkZjdjODZmYmRkMjFmMjlkYzIzLi43ZDU3NWE0MDRi
MDQ1YjkxYWQ3YWM4ZTY2NzYwZDA4YmUzOGI5MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQg
V2ViVVJMU2NoZW1lSGFuZGxlcjo6dGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJiB0YXNr
KQogICAgIHBsYXRmb3JtVGFza0NvbXBsZXRlZCh0YXNrKTsKIH0KIAotdm9pZCBXZWJVUkxTY2hl
bWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBhZ2VNYXAodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCB0YXNrSUQpCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFnZU1h
cChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCkKIHsKICAgICBhdXRvIGl0
ZXJhdG9yID0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZmluZChwYWdlSUQpOwogICAgIEFTU0VS
VChpdGVyYXRvciAhPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5lbmQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKaW5kZXggODk5NzZjNjFmODNk
NTJiODFmMmM0NDA3YzJjNWJiZDczYmYyYWU0OS4uYjdhZjA3NTk3NWYzMmI4YWI4NWU4OGQxYmFm
ZmIwNWExNzA1YTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZUhhbmRsZXIuaApAQCAtNjYsMTMgKzY2LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lk
IHBsYXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiwgV2ViVVJMU2NoZW1lVGFzayYpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1UYXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2sm
KSA9IDA7CiAKLSAgICB2b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1hcCh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IHRhc2tJRCk7CisgICAgdm9pZCByZW1vdmVUYXNrRnJvbVBhZ2VNYXAoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJRCk7CiAgICAgV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzRm9yVGFza0lkZW50aWZpZXIodWludDY0X3QpIGNvbnN0OwogCiAgICAgdWludDY0
X3QgbV9pZGVudGlmaWVyOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmPFdlYlVSTFNjaGVt
ZVRhc2s+PiBtX3Rhc2tzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIEhhc2hTZXQ8dWludDY0X3Q+
PiBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllcjsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CiAgICAg
CiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAppbmRleCBi
ODcyMDczYmQyNzgxZmYwOWI5YmYyNTMzMTYyYzA1YWE2OWMwM2ViLi5hOTdmMTYwY2YyNTU2ZmEx
MzhmNTJiZDgxNWYyM2U4ZWE2YzdlYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFdlYlVSTFNjaGVtZVRhc2s+IGNyZWF0ZShXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVBy
b3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB1aW50
NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9Ci0gICAgdWlu
dDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQorICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50
aWZpZXI7IH0KICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBt
X3Byb2Nlc3MuZ2V0KCk7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQpAQCAtODcsNyArODcsNyBAQCBw
cml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAgIFJlZlB0cjxXZWJQcm9jZXNz
UHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7Ci0gICAgdWludDY0
X3QgbV9wYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJ
ZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7CiAgICAg
Ym9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXNwb25zZVNlbnQgeyBmYWxz
ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCAwYmY1MTEyYTllNGRiZTY0YjA3ODQ2NTBjMTkxMjkx
NmUwOTE5NTMzLi4wYThiMGMxMTIyNTViMDczZTBiNmJhYjg2NTMyYzQ4MzQ1YjNmOTEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcApAQCAtMTU3Niw3ICsxNTc2LDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZChib29sIHZhbHVlLCBDb21w
bGUKICAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCkuc2V0Tm90aWZ5
UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9zZXNzaW9uSUQsIHZhbHVlLCBbcHJvY2Vz
c1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdncmVnYXRvci5jb3B5UmVmKCld
IHsgfSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0Vu
dHJpZXModWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBh
Z2UocGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRleCA2NDJlMzMw
OWQwNzYyNDNlMzdkOGUxZDI3NDY1YjExZjcxMmRiMGM4Li44MjJjM2ZjNzYzN2Q3YzVlYjAwM2M2
OWNlOTQ3NDViZDM4MjU5M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlT3JpZW50YXRpb25Pck1vdGlvblBl
cm1pc3Npb25TdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgpAQCAtMTM1
LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZvaWQgbG9n
VGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9u
KGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBnZXRB
bGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7CisgICAgdm9pZCBnZXRBbGxTdG9y
YWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsKICAgICB2b2lkIGhhc0hhZFVz
ZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lzdGVyZWRBc1JlZGlyZWN0aW5n
VG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0
ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAppbmRleCBkYzhkNTNjYWZi
YjYzYjE2YTc4Y2E2ODVkZDc0ZmFiN2M0MWQyYWNmLi4yODkyMzczNTkxYTJlNjllMDFlNGMzZDJi
Njg5NWViMzY2YmFhZWIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2F5bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9X
YXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTM3Myw3ICszNzMsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry
dWN0IHdsX2NvbXBvc2l0b3JfaW50ZXJmYWNlIGNvbXBvc2l0b3JJbnRlcmZhY2UgPSB7CiAKIHN0
YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfd2Via2l0Z3RrX2ludGVyZmFjZSB3ZWJraXRndGtJbnRlcmZh
Y2UgPSB7CiAgICAgLy8gYmluZFN1cmZhY2VUb1BhZ2VDYWxsYmFjawotICAgIFtdKHN0cnVjdCB3
bF9jbGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1Y3Qgd2xfcmVzb3Vy
Y2UqIHN1cmZhY2VSZXNvdXJjZSwgdWludDMyX3QgcGFnZUlEKQorICAgIFtdKHN0cnVjdCB3bF9j
bGllbnQqLCBzdHJ1Y3Qgd2xfcmVzb3VyY2UqIHJlc291cmNlLCBzdHJ1Y3Qgd2xfcmVzb3VyY2Uq
IHN1cmZhY2VSZXNvdXJjZSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIHsK
ICAgICAgICAgYXV0byogc3VyZmFjZSA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yOjpT
dXJmYWNlKj4od2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShzdXJmYWNlUmVzb3VyY2UpKTsKICAg
ICAgICAgaWYgKCFzdXJmYWNlKQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIGJvb2wgV2F5bGFuZENvbXBv
c2l0b3I6OmdldFRleHR1cmUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCB1bnNpZ25lZCYgdGV4dHVy
ZSwgSW50CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdheWxhbmRDb21wb3NpdG9yOjpi
aW5kU3VyZmFjZVRvV2ViUGFnZShXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZSogc3VyZmFjZSwg
dWludDY0X3QgcGFnZUlEKQordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6YmluZFN1cmZhY2VUb1dl
YlBhZ2UoV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqIHN1cmZhY2UsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBudWxscHRy
OwogICAgIGZvciAoYXV0byogcGFnZSA6IG1fcGFnZU1hcC5rZXlzKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKaW5kZXggMTQ4MTlmOGZh
YzRlYzgwMjMwYmEyY2JiYjE4ZTZkMDk1OWI5Zjg0YS4uMmQ3ODBmZmIxMjU3ZDQ5ZjA4ZGVhOWEx
ODY4YThhNDMyYzYxYmU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1dheWxhbmRDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dh
eWxhbmRDb21wb3NpdG9yLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBp
c1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiAhIW1fZGlzcGxheTsgfQogICAgIFN0cmluZyBkaXNw
bGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0KIAotICAgIHZvaWQgYmlu
ZFN1cmZhY2VUb1dlYlBhZ2UoU3VyZmFjZSosIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBi
aW5kU3VyZmFjZVRvV2ViUGFnZShTdXJmYWNlKiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYpOwogICAgIHZvaWQgdW5yZWdp
c3RlcldlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCmluZGV4IDA4M2Q2ZmFm
MTUyMDFmOGNlYzRkMDI4YmEzMDk4OGI3YWNhNzUwZDQuLmNlZmRlNjFjNDliNTJhY2Q2ZjA4OTA4
ODIwNmI4ZDY2Yzc1NTAyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQpAQCAtMjUxLDcgKzI1MSw3IEBAIHZv
aWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVyZShfVUlOYXZpZ2F0aW9u
SW50ZXJhY3RpdmVUcmFuc2l0aW9uCiAgICAgICAgIGlmIChmaW5pc2gpCiAgICAgICAgICAgICBt
X3dlYlBhZ2VQcm94eUZvckJhY2tGb3J3YXJkTGlzdEZvckN1cnJlbnRTd2lwZS0+bmF2aWdhdGlv
bkdlc3R1cmVXaWxsRW5kKHRyYW5zaXRpb25Db21wbGV0ZWQsICp0YXJnZXRJdGVtKTsKICAgICB9
XTsKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBh
dXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwogICAgIEdlc3R1cmVJRCBnZXN0
dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgW21fc3dpcGVUcmFuc2l0aW9uQ29udGV4
dCBfc2V0Q29tcGxldGlvbkhhbmRsZXI6W3BhZ2VJRCwgZ2VzdHVyZUlELCB0YXJnZXRJdGVtXSAo
X1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4dCAqY29udGV4dCwgQk9PTCBkaWRDb21w
bGV0ZSkgewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxlciA9IGNvbnRyb2xsZXJG
b3JHZXN0dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKQEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIFZp
ZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kU3dpcGVHZXN0dXJlKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qIHRhcmdldEl0ZW0sCiAgICAgICAgIG1fd2ViUGFnZVByb3h5LmRpZENoYW5nZUJhY2tncm91
bmRDb2xvcigpOwogICAgIH0KIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAg
ICAgR2VzdHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBtX2xvYWRD
YWxsYmFjayA9IFt0aGlzLCBwYWdlSUQsIGdlc3R1cmVJRF0gewogICAgICAgICBhdXRvIGRyYXdp
bmdBcmVhID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxEcmF3aW5nQXJlYSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmNwcAppbmRleCBmZjQ0OTM0MWQ5ZTQ0MmZjMTYyZTQxNTQ0YjM4NWIxN2MwNTNh
MDM4Li41N2YzZmUxNzNjY2Q5NTE3MzY0MmExOTVlN2NmZDEwMTg4Njk4OGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5
bWVudENvb3JkaW5hdG9yOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2
NF90IFdlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBj
b25zdAogewotICAgIHJldHVybiBtX3dlYlBhZ2UucGFnZUlEKCk7CisgICAgcmV0dXJuIG1fd2Vi
UGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
cjo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBTdHJpbmcmIHZhbGlkYXRpb25VUkxTdHJpbmcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGIxY2JjOTYzYjBlZmNjODUyNDky
ZDk2OGQ5ZWFhYzMxODI4ZTE1MmIuLjQ1NGNhNmJjODQ0OTgzZjU5OThmZmVlNGRhMzc0Y2NmY2M2
MjI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCkBAIC0yMzEsNyArMjMx
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRDbGVhcldpbmRvd09iamVj
dEZvckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlv
blNlc3Npb246OkRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNhbGxiYWNrSUQsIGVycm9y
TWVzc2FnZSwgZXJyb3JUeXBlKSwgMCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVu
dHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGlt
ZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1
bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNr
VGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpA
QCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGlkRXZh
bHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgZnJhbWVJRCwKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJh
Y2tJRCwgcmVzdWx0LCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFs
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtMzUwLDcgKzM1
MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVX
aXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
OjpudWxsb3B0LCBjaGlsZEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRG
cmFtZVdpdGhOb2RlSGFuZGxlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQ
YWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAg
IGlmICghcGFnZSkgewpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQs
CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBmcmFtZUZyb21FbGVtZW50LT5m
cmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVD
aGlsZEZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
dWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdl
SUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNDI2LDcgKzQyNiw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBjaGlsZEZyYW1l
LT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29s
dmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJh
bWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNDUyLDcgKzQ1Miw3IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBwYXJl
bnRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojpmb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKK3ZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6Zm9jdXNGcmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpCkBAIC01MjcsNyArNTI3
LDcgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udmVydFBvaW50RnJvbUZyYW1lQ2xp
ZW50VG9Sb290VmlldyhXZWJDb3JlOjpGcmFtZVYKICAgICByZXR1cm4gY2xpZW50UG9pbnQ7CiB9
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9v
bCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0
ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50
UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlv
dXQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhh
bmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtIGNvb3Jk
aW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2Vi
Q29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNjM1LDcgKzYzNSw3
IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0ZUVsZW1lbnRMYXlvdXQo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpu
dWxsb3B0LCByZXN1bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdDZW50ZXJQb2ludCwgaXNP
YnNjdXJlZCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6c2VsZWN0T3B0
aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRp
b25FbGVtZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTcwMyw3ICs3
MDMsNyBAQCBzdGF0aWMgV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJlY3RGb3JTY3JlZW5zaG90
KFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6OkVsZW1lbgogICAgIHJldHVybiB7IH07CiB9CiAKLXZv
aWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdChQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNj
cm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFuZGxlOwogCkBAIC03NTEs
NyArNzUxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hv
dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQKICAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJRCwgaGFuZGxlLCB7IH0p
LCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9y
RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2ll
c0ZvckZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
Pik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTc3
Niw3ICs3NzYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNG
b3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYQogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bnVsbG9wdCwgZm91bmRDb29raWVzKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpkZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6ZGVsZXRlQ29va2llKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAppbmRleCA2Mjk1NDFkMjBiYTEwZGY2MmRhMWUyNjA5
MTY0ZWFjODkyYmEwZDEzLi4xMTY3NjQ1Mjc3ZGJjMTkzMGE1YTdhNTk3ZGNiYzJkZjNlY2Y1NWM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVTeXN0ZW0uaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTYwLDE3ICs2MSwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAg
ICAvLyBDYWxsZWQgYnkgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBtZXNzYWdlcwotICAgIHZv
aWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMs
IGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91
dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhP
cmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5h
bCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYp
OwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQg
cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgZm9jdXNGcmFtZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpOwotICAgIHZvaWQgY29tcHV0ZUVsZW1lbnRMYXlv
dXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwg
Ym9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFs
PFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYpOwotICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxl
bWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKLSAgICB2b2lk
IHRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3
cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRDb29raWVzRm9yRnJhbWUo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJik7Ci0gICAgdm9p
ZCBkZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
Y29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7
CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVjdG9yPFN0
cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGlu
dCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgcmVzb2x2
ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRo
Tm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1l
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3Qp
PiYmKTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgZm9jdXNGcmFtZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgdWludDY0X3QgZnJhbWVJRCk7CisgICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91
dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0ZVN5c3RlbSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBP
cHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmKTsKKyAgICB2b2lkIHNlbGVjdE9w
dGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4p
PiYmKTsKKyAgICB2b2lkIHRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1
aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2
b2lkIGdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
ZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CiAKICAgICBTdHJpbmcgbV9z
ZXNzaW9uSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggYWExMjE5ZTJlZjFmYzA3MDA0NTk2ZDI0YTFiNTcxNmQzMDZmNzhi
ZS4uZDcyZjg5ZDI2MzU5Y2YwMWNjZmQ1MzFlOTZlMDFmNDQ0MDlhYWY1OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlv
bi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMSwyMSArMjEsMjEg
QEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eSB7Ci0gICAgRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywg
Ym9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0
LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGZ1
bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2Fs
bGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
IAotICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRo
Tm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQp
IEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5
cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JU
eXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE9y
ZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1
aW50MzJfdCBvcmRpbmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90
IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQp
IEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8
U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZVBh
cmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3lu
YwogCi0gICAgRm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCisg
ICAgRm9jdXNGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQpCiAKLSAgICBDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVk
ZWQsIGVudW06dWludDhfdCBXZWJLaXQ6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3Rl
bSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3Qs
IE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCBpc09i
c2N1cmVkKSBBc3luYworICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0ZVN5
c3RlbSBjb29yZGluYXRlU3lzdGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdl
YkNvcmU6OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0Nl
bnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIEFzeW5jCiAKLSAgICBTZWxlY3RPcHRpb25FbGVt
ZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUp
IC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBTZWxlY3RPcHRpb25F
bGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMK
IAotICAgIFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlw
VG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBUYWtlU2NyZWVuc2hvdChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBHZXRDb29raWVzRm9yRnJhbWUodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIEFzeW5jCi0gICAgRGVsZXRlQ29va2ll
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+
IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBHZXRDb29raWVzRm9yRnJh
bWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAo
T3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tp
ZXMpIEFzeW5jCisgICAgRGVsZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+IChPcHRpb25hbDxTdHJp
bmc+IGVycm9yVHlwZSkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNw
cAppbmRleCBlNTdlMmU3N2U1NTg0OGU4YmE3MjVmOWQzMjI3NzA5ZmZmMTc4YWZmLi5jZmM1MDMx
ZWQ2ZTRhMjk1NGZlMDJhMDNkYTg3YTE2MWNkMmQzMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYlBhZ2UuY3BwCkBAIC03NjMsNyArNzYzLDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2ViX3Bh
Z2VfZ2V0X2lkKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpLCAwKTsKIAotICAgIHJldHVybiB3ZWJQ
YWdlLT5wcml2LT53ZWJQYWdlLT5wYWdlSUQoKTsKKyAgICByZXR1cm4gd2ViUGFnZS0+cHJpdi0+
d2ViUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uLmNwcAppbmRleCBhZTM4ODNkODZiNjg5ZTY2NmYxNmFjZWY5MDE2NzI5NGU1ZDI3ODdjLi44
YjFhZDVlZGYwZTZiOTBkNThjMjRlNjE1ZmFkYzljNzEwN2E1ZjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgSVAKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1l
KCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAg
ICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UoZGVj
b2Rlci5kZXN0aW5hdGlvbklEKCkpKQorICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAgICAgICAgd2ViUGFn
ZS0+ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IElQCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5t
ZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAg
ICAgICAgaWYgKGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2Uo
bWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0
aW9uSUQoKSkpKQogICAgICAgICAgICAgd2ViUGFnZS0+cGF5bWVudENvb3JkaW5hdG9yKCktPmRp
ZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uCiAKICNpZiBF
TkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2
ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAgaWYgKGF1
dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElk
ZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQog
ICAgICAgICAgICAgd2ViUGFnZS0+cGF5bWVudENvb3JkaW5hdG9yKCktPmRpZFJlY2VpdmVTeW5j
TWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVuY29kZXIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDA0YWUwZTQ1ZDVlOWQyOWNhMGYyNzBhMDY0MThh
NmFiMmQ1MDFmY2IuLjI3OGI2MDE4NDc5ZjM2NTkwMzQ4Yzg5NTE4NTVhY2Y0M2RjYjU5ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
Y2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQog
ICAgIGF1dG8mIGZyYW1lTG9hZGVyQ2xpZW50ID0gcmVzb3VyY2VMb2FkZXIuZnJhbWVMb2FkZXIo
KS0+Y2xpZW50KCk7CiAKICAgICBXZWJSZXNvdXJjZUxvYWRlcjo6VHJhY2tpbmdQYXJhbWV0ZXJz
IHRyYWNraW5nUGFyYW1ldGVyczsKLSAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJh
bWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVPcigwKTsKKyAgICB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRp
ZmllciB7IH0pOwogICAgIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlEID0gZnJhbWVMb2FkZXJD
bGllbnQuZnJhbWVJRCgpLnZhbHVlT3IoMCk7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291
cmNlSUQgPSBpZGVudGlmaWVyOwogICAgIGF1dG8gc2Vzc2lvbklEID0gZnJhbWVMb2FkZXJDbGll
bnQuc2Vzc2lvbklEKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVz
b3UKICAgICAvLyB0aGVuIHdlIHNob3VsZCByZW1lbWJlciB0aGUgUmVzb3VyY2VMb2FkZXIgaW4g
b3VyIHJlY29yZHMgYnV0IG5vdCBzY2hlZHVsZSBpdCBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAg
ICAgaWYgKHJlc291cmNlTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPnNjaGVkdWxlQXJjaGl2ZUxv
YWQocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSkpIHsKICAgICAgICAg
TE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
Y2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291
cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFyY2hpdmUgcmVzb3VyY2UgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6
IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNvdXJjZSAoZnJhbWUgPSAlcCwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZp
ZXIpOwogICAgICAgICBtX3dlYlJlc291cmNlTG9hZGVycy5zZXQoaWRlbnRpZmllciwgV2ViUmVz
b3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0ZXJzKSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNzUsMTQgKzE3NSwxNCBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVy
LCBDYWNoZWRSZXNvdQogCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLmRvY3VtZW50TG9hZGVyKCkt
PmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkUmVzb3VyY2UocmVzb3VyY2VMb2FkZXIs
IHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgp
KSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBsb2FkZWQgZnJvbSBh
cHBsaWNhdGlvbiBjYWNoZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwg
InNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGZyb20gYXBwbGljYXRpb24gY2FjaGUg
KGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRp
Zmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJz
Y2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlIChm
cmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgaWRlbnRpZmllcik7CiAgICAgICAgIG1fd2ViUmVzb3VyY2VMb2FkZXJzLnNldChpZGVudGlm
aWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHJlc291cmNlTG9hZGVyLCB0cmFja2luZ1Bh
cmFtZXRlcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChyZXNvdXJjZUxv
YWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0RhdGEoKSkgewogICAgICAgICBMT0coTmV0
d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxl
TG9hZCwgdXJsICclcycgd2lsbCBiZSBsb2FkZWQgYXMgZGF0YS4iLCByZXNvdXJjZUxvYWRlci51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGFz
IGRhdGEgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgp
LCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
aWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBhcyBkYXRhIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRp
Zmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNv
dQogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChpc1F1aWNrTG9va1ByZXZpZXdVUkwocmVz
b3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVk
dWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJs
ICclcycgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlLiIsIHJlc291cmNl
TG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBo
YW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBo
YW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJ
bnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAg
IHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQo
UmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIC8vIGh0dHBz
Oi8vYmxvZ3MuZ25vbWUub3JnL2FsZXhsLzIwMTIvMDEvMjYvcmVzb3VyY2VzLWluLWdsaWIvCiAg
ICAgaWYgKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzKCJyZXNvdXJj
ZSIpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMg
YSBHUmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hl
ZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6
IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAg
ICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMjExLDExICsyMTEsMTEgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICBX
ZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLmhhbmRsZUZldGNoKHJlc291cmNl
TG9hZGVyLCBzZXNzaW9uSUQsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJl
Y3QsIFt0aGlzLCB0cmFja2luZ1BhcmFtZXRlcnMsIGlkZW50aWZpZXIsIHNlc3Npb25JRCwgc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1Rp
bWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSksIHJlc291cmNlTG9hZGVyID0gbWFr
ZVJlZihyZXNvdXJjZUxvYWRlcildIChTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdCBy
ZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0ICE9IFNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpIHsKICAgICAgICAgICAgIExPRyhOZXR3b3JrU2No
ZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1
cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZl
dGNoIGFsZ29yaXRobSIsIHJlc291cmNlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5k
YXRhKCkpOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2Vy
dmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQs
IHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6
IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNo
IGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5m
cmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBpZiAocmVzb3VyY2VMb2FkZXItPm9wdGlvbnMoKS5zZXJ2aWNlV29ya2Vy
c01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2Fk
OiB1bmFibGUgdG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0
Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hl
ZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZy
YW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZXNvdXJjZUxv
YWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSB7CiAgICAgICAgICAgICAgICAgYXV0byBl
cnJvciA9IGludGVybmFsRXJyb3IocmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKS51cmwoKSk7CiAg
ICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxs
YXRpb24pOwpAQCAtMjI3LDEzICsyMjcsMTMgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2No
ZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAg
ICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVneSgpLnRy
eUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKQogICAgICAgICAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS5zY2hlZHVsZUxv
YWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIuZ2V0KCksIHJlc291cmNlTG9hZGVy
LT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2Vzc2lvbklELCBzaG91bGRDbGVhclJl
ZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZSk7CiAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMg
KGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRl
ci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAo
ZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBpZGVudGlmaWVyKTsKICAgICB9KTsKICNlbHNlCiAgICAgaWYgKCF0cnlMb2FkaW5nVXNp
bmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyKSkKICAgICAgICAgc2NoZWR1bGVMb2Fk
RnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0
KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25I
VFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSkpOwogICAg
IGVsc2UKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNj
aGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDog
VVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9V
SW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogI2VuZGlm
CiB9CiAKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogICAgIGlm
IChsb2FkUGFyYW1ldGVycy5vcHRpb25zLm1vZGUgIT0gRmV0Y2hPcHRpb25zOjpNb2RlOjpOYXZp
Z2F0ZSkgewogICAgICAgICBBU1NFUlQobG9hZFBhcmFtZXRlcnMuc291cmNlT3JpZ2luKTsKICAg
ICAgICAgaWYgKCFsb2FkUGFyYW1ldGVycy5zb3VyY2VPcmlnaW4pIHsKLSAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6
IG5vIHNvdXJjZU9yaWdpbiAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2Fk
ZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQ
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVk
dWxlTG9hZDogbm8gc291cmNlT3JpZ2luIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNv
dXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJ
RC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5p
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQocmVz
b3VyY2VMb2FkZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNDYsOSAr
MzQ2LDkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQ
cm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKIAogICAgIEFTU0VSVCgobG9hZFBhcmFt
ZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQpIHx8IGxvYWRQYXJh
bWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6
Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2No
ZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVk
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50
PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRp
Zmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVk
dWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9j
ZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VM
b2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCku
cHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFy
YW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICBpZiAo
IVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRlcnMpLCAwKSkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZy
YW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5m
cmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0
eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVk
dWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0
eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nh
c3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0
ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2Fk
UGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgZmFpbGVkIHRv
IHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyBiZWNhdXNlIGl0IGhh
ZCBjcmFzaGVkLgogICAgICAgICAvLyBUaGlzIGxvYWQgd2lsbCBuZXZlciBzdWNjZWVkIHNvIHdl
IHdpbGwgc2NoZWR1bGUgaXQgdG8gZmFpbCBhc3luY2hyb25vdXNseS4KICAgICAgICAgc2NoZWR1
bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChyZXNvdXJjZUxvYWRlcik7CkBAIC01MDcsMTkgKzUwNywx
OSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZy
YW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdl
YkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiBu
dWxscHRyOwogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdl
KCkgOiBudWxscHRyOwogCi0gICAgYXV0byBwYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+cGFn
ZUlEKCkgOiAwOworICAgIGF1dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgp
IDogUGFnZUlkZW50aWZpZXIgeyB9OwogICAgIGF1dG8gZnJhbWVJRCA9IHdlYkZyYW1lID8gd2Vi
RnJhbWUtPmZyYW1lSUQoKSA6IDA7CiAgICAgYXV0byBzZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2Vi
UGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOwog
CiAgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZUxvYWRlci5mcmFtZSgpLmRvY3VtZW50KCk7CiAg
ICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VE
KHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IG5vIGRvY3VtZW50IChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1
KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hy
b25vdXNseTogbm8gZG9jdW1lbnQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQs
IHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgICAgICBlcnJvciA9IGludGVybmFsRXJyb3Io
cmVxdWVzdC51cmwoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYXV0byBz
eW5jTG9hZFJlc3VsdCA9IHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5k
bGVyKGZyYW1lTG9hZGVyLCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCByZXF1ZXN0KSkgewotICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBjYWxsaW5nIHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNp
bmdVUkxTY2hlbWVIYW5kbGVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJWx1LCBlcnJvciA9ICVkKSIsIHBhZ2VJRCwgZnJhbWVJRCwg
cmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3luY0xvYWRSZXN1bHQtPmVycm9yLmVycm9yQ29kZSgp
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgY2FsbGluZyB0cnlMb2FkaW5nU3luY2hyb25v
dXNseVVzaW5nVVJMU2NoZW1lSGFuZGxlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSwgZXJyb3IgPSAlZCkiLCBwYWdlSUQudG9V
SW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3luY0xvYWRSZXN1bHQt
PmVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAgZXJyb3IgPSBXVEZNb3ZlKHN5bmNMb2FkUmVz
dWx0LT5lcnJvcik7CiAgICAgICAgIHJlc3BvbnNlID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+
cmVzcG9uc2UpOwogICAgICAgICBkYXRhID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+ZGF0YSk7
CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICBIYW5nRGV0
ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVyOwogCiAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0
aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQ
ZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkOjpSZXBseShlcnJv
ciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBzZW5k
aW5nIHN5bmNocm9ub3VzIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRCwg
ZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogZmFp
bGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwg
cGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAg
ICAgICBpZiAoYXV0byogcGFnZSA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5jb3JlUGFnZSgpIDogbnVs
bHB0cikKICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlh
Z25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVy
cm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6c3luY2hyb25vdXNNZXNz
YWdlRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICByZXNw
b25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKQEAgLTU2MSw3ICs1NjEsNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFt
ZUxvYWRlciwgdW5zaQogICAgIH0KIH0KIAotdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cGFnZUxv
YWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKQordm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogewogICAgIFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGFn
ZUxvYWRDb21wbGV0ZWQod2ViUGFnZUlEKSwgMCk7CiB9CkBAIC02NDgsMTAgKzY0OCwxMCBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXImIGZyYW1lTG9h
ZGVyLCBjb25zdCBVUkwmIHVybCwgUwogCiAgICAgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3Qg
eyB1cmwgfTsKLSAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5w
YWdlSUQoKSA6IDA7Ci0gICAgcGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2ViRnJhbWUgPyB3ZWJG
cmFtZS0+ZnJhbWVJRCgpIDogMDsKKyAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9IHdlYlBhZ2Ut
PnBhZ2VJRCgpOworICAgIHBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lLT5mcmFtZUlE
KCk7CiAgICAgcGFyYW1ldGVycy5wYXJlbnRQSUQgPSBwcmVzZW50aW5nQXBwbGljYXRpb25QSUQo
KTsKLSAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9u
SUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lvbklEKCk7CisgICAgcGFyYW1ldGVy
cy5zZXNzaW9uSUQgPSB3ZWJQYWdlLT5zZXNzaW9uSUQoKTsKICAgICBwYXJhbWV0ZXJzLnN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k7CiAgICAgcGFyYW1l
dGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RPbmx5OjpZZXM7CiAgICAgcGFy
YW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFjY2VzcyA9IHNob3VsZFBlcmZvcm1T
ZWN1cml0eUNoZWNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggNGFmNTk5NDFlMzRmNzJhZDI2ZTgxZWZiNTYw
NjA2NzUxODExZjhjNi4uYWM1MjQ5NjZhODUyMWUwZTNkNjVlYjYyYjlmNzBlODJmNzhjYzIxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3Ry
YXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGxvYWRS
ZXNvdXJjZShXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9u
cyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlN1YnJlc291cmNlTG9h
ZGVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdl
YkNvcmU6OkZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9uZyByZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDbGllbnRDcmVkZW50
aWFsUG9saWN5LCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBjb25zdCBXZWJDb3JlOjpI
VFRQSGVhZGVyTWFwJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpIGZpbmFsOwotICAgIHZvaWQgcGFnZUxvYWRD
b21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSBmaW5hbDsKKyAgICB2b2lkIHBhZ2VMb2FkQ29t
cGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBmaW5hbDsKIAogICAgIHZvaWQgcmVtb3Zl
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7CiAgICAgdm9pZCBzZXREZWZlcnNMb2Fk
aW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9vbCkgZmluYWw7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKaW5k
ZXggYmY4OGZkYTMwMDdlMTY0ZmYzOGE5NTIyYWJiODFmZWZkN2U5Zjg1Mi4uODhiZDUzYmYxZjhm
YjczNmViMTczZWY2NGYxZTMwM2QxYmIxMDBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtODgsMTYgKzg4
LDE2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJl
cXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIFJlc291CiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVy
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3Mp
IFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QgdG8gJyVzJyIsIHByb3Bvc2VkUmVx
dWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxT
ZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQu
dG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBpZiAobV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRl
cigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3Qo
bV9jb3JlTG9hZGVyLmdldCgpLCBwcm9wb3NlZFJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogZXhpdGlu
ZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3QgcmV0dXJuZWQgZmFs
c2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwor
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcg
ZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZhbHNl
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCks
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291
cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9jb3JlTG9hZGVyLT53aWxs
U2VuZFJlcXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyldKFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFtX2NvcmVMb2FkZXIgfHwgIW1fY29yZUxv
YWRlci0+aWRlbnRpZmllcigpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9hZGVyIG9y
IGlkZW50aWZpZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291
cmNlSUQpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1
ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBvciBpZGVudGlmaWVyIChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExMywxMiArMTEzLDEy
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKHVpbnQ2NF90IGJ5dGVzU2Vu
dCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvb2wgbmVl
ZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiB7CiAgICAgTE9HKE5ldHdvcmss
ICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZSBmb3Ig
JyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHN0YXR1cyA9ICVkKSIs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQu
dG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CiAKICAgICBSZWY8
V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKG1fY29y
ZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxv
YWRGYWxsYmFja0ZvclJlc3BvbnNlKG1fY29yZUxvYWRlci5nZXQoKSwgcmVzcG9uc2UpKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNv
bnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVhZHkgY2FjaGVkIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWlu
ZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMgYWxyZWFkeSBjYWNoZWQgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIGJvbwogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRlciAmJiBtX2NvcmVMb2FkZXItPmlk
ZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3Vy
Y2VMb2FkZXI6OkNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlKCkpOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNw
b25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTog
bm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVMb2FkZXIgb3Igbm8gSUQgKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7
CiAgICAgICAgIH07CiAgICAgfQogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBp
bnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtS
ZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90IHNlbmQgZGF0YSB1bnRpbCB3ZSd2
ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBpZiAoIW1fbnVtQnl0ZXNSZWNlaXZl
ZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgIH0KICAgICBtX251bUJ5
dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEsIGludDY0X3QgZQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3Vy
Y2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewog
ICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5p
c2hSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxh
dGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoUmVz
b3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGggPSAlemQpIiwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFy
YW1ldGVycy5yZXNvdXJjZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3Ro
ID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCBt
X251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nl
c3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3VsZCBub3QgYmUgYWJsZSB0byBmaW5pc2gg
YmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKICAgICBtX2NvcmVMb2FkZXIt
PmRpZEZpbmlzaExvYWRpbmcobmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTE2Nyw3ICsxNjcsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTAogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFp
bFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICBMT0coTmV0
d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9h
ZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgp
KTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsUmVzb3VyY2VMb2FkOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBB
U1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIkxvYWQg
c2hvdWxkIG5vdCBiZSBhYmxlIHRvIGZpbmlzaCBiZWZvcmUgd2UndmUgdmFsaWRhdGVkIHRoZSBy
ZXNwb25zZSIpOwogCkBAIC0xNzksNyArMTc5LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKQogewogICAg
IExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJp
bmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEJs
b2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIG1fY29yZUxvYWRlci0+
ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwogfQpAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
KQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNP
ckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRl
cjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURl
bmllZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdG9wTG9hZGluZ0FmdGVyWEZyYW1l
T3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkOiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGlj
eURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9V
SW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnN0
b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQo
bV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIHJlc3BvbnNlKTsKIH0KQEAgLTE5NiwxMyArMTk2
LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRp
b25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVzb3VyY2U6OkhhbmRsZSYgaGFuZGxl
KQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygp
LmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2
ZVJlc291cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlEKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IGhhbmRsZS50cnlXcmFw
SW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVmZmVyKSB7CiAgICAgICAgIExPR19FUlJP
UigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBTaGFyZWFibGVSZXNvdXJjZSBzZW50IGZy
b20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNy
ZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5w
YWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIGlmIChhdXRvKiBmcmFtZSA9IG1fY29y
ZUxvYWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS0+
cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNMb2dnaW5nQ2xpZW50KCku
bG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnRl
cm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6Y3JlYXRlU2hh
cmVkQnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
aW5kZXggN2ZkNzgzMjIzM2EzNjJjMjNhOTA0ZmMxNWVmMzRjYTY0YTk2N2VhZS4uNTg2NTQzNzE4
ZTVlODM4OGI4YjQxYWIwMjAzN2FjNzZlNzg2OTM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCkBAIC0yOCw2ICsyOCw3
IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIK
ICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIApAQCAtNTAsNyArNTEsNyBAQCB0eXBlZGVmIHVpbnQ2NF90IFJlc291cmNlTG9h
ZElkZW50aWZpZXI7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlJlc291cmNlTG9hZGVyPiwgcHVibGljIElQQzo6TWVzc2FnZVNlbmRlciB7CiBwdWJsaWM6
CiAgICAgc3RydWN0IFRyYWNraW5nUGFyYW1ldGVycyB7Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJ
RCB7IDAgfTsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAgICAg
ICB1aW50NjRfdCBmcmFtZUlEIHsgMCB9OwogICAgICAgICBSZXNvdXJjZUxvYWRJZGVudGlmaWVy
IHJlc291cmNlSUQgeyAwIH07CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
LmNwcAppbmRleCAzNGI1YTY0M2YwM2JkYTYxZmRhNGIzM2Q4ODdiNWQxZGI4OWRjNjA3Li5hZGM0
NzY2NTJlODA3YjIzNmFjYzExNjU0YTVmYzE3MTU3MzVjOTE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyBjb25zdCBTZWNvbmRz
IHN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQgeyAxMDBfbXMgfTsgLy8gT25seSB1c2VkIGJ5
IGxhCiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudCBmaW5hbCA6IHB1Ymxp
YyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBTZXJ2aWNlV29ya2VyRnJh
bWVMb2FkZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24s
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKKyAgICBTZXJ2aWNlV29ya2VyRnJhbWVMb2Fk
ZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKICAgICAgICAgOiBtX2Nvbm5l
Y3Rpb24oY29ubmVjdGlvbikKICAgICAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9uSUQpCiAgICAg
ICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtOTUsMTggKzk1LDE4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVk
IGxvbmcpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lvbklEOyB9Ci0gICAgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2ZyYW1lSUQ7IH0KICAgICBTdHJpbmcgdXNlckFnZW50KGNvbnN0
IFVSTCYpIGZpbmFsIHsgcmV0dXJuIG1fdXNlckFnZW50OyB9CiAKICAgICBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vz
c2lvbklEOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRCB7IDAgfTsKICAgICBT
dHJpbmcgbV91c2VyQWdlbnQ7CiB9OwogCi1XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmIGNvbm5l
Y3Rpb24sIHVpbnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIDogbV9jb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwgbV9wYWdlR3JvdXBJRChwYWdlR3Jv
dXBJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKQEAgLTIyNiwxMiArMjI2LDEyIEBAIHZvaWQg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciBzZXJ2CiB7CiAgICAgYXV0byogc2VydmljZVdvcmtlclRocmVhZFByb3h5
ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5
KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBpZiAoIXNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eSkgewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0s
IGZldGNoSWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIWlz
VmFsaWRGZXRjaChyZXF1ZXN0LCBvcHRpb25zLCBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnNj
cmlwdFVSTCgpLCByZWZlcnJlcikpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxl
IHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpE
aWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAppbmRleCA2Y2U4M2QxZDA5ZWFlZGNh
ZTRmZTg3M2YxOGVjNTJiNTllNGZhMTcyLi5mYmI2MzBlNGUxOWIzNTlkYzE3MGNjZWEwMThhNDk4
MzIxNjZkYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTUxLDcgKzUx
LDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAKIGNsYXNzIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6
OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWlu
dDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZSYpOworICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIH5XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbigpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0ZToKIAogICAg
IFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3M7CiAgICAg
dWludDY0X3QgbV9wYWdlR3JvdXBJRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRCB7IDAgfTsKKyAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICB1aW50NjRfdCBtX3ByZXZp
b3VzU2VydmljZVdvcmtlcklEIHsgMCB9OwogCiAgICAgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSB7IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3k6OkFsbG93QWxsU3RvcmFnZSB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAppbmRleCA4YWViYWZmOTYy
MjFlOTg2MzM3YzNkMjNlMDQwZjA1YjQ3NTVhNzU2Li4yNjQ0YzljMWQxMmI2Y2QwMWQ1NjY5OWQx
MzJiYzJlZjRjNjM2YTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNw
cApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdQogewogICAgIGlmICgh
bV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSB7IHJlc3BvbnNlIH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2
ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAKICAg
ICBjbGVhbnVwKCk7CiB9CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
CiAgICAgaWYgKG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UpCiAgICAg
ICAgIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSA9IHRydWU7
CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNl
aXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNw
b25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYg
YnVmZmVyKQpAQCAtODQsNyArODQsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tD
bGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgYnVmZmVyIH0sIHN0YXRpY19j
YXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBidWZmZXIgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
YnVmZmVyLT5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFBbmRGaW5pc2goUmVm
PEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgV2ViU2Vydmlj
ZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxG
b3JtRGF0YT4mCiAgICAgLy8gRm9yIG5vdyBhbmQgZm9yIHRoZSBjYXNlIG9mIGJsb2JzLCB3ZSBy
ZWFkIGl0IHRoZXJlIGFuZCBzZW5kIHRoZSBkYXRhIHRocm91Z2ggSVBDLgogICAgIFVSTCBibG9i
VVJMID0gZm9ybURhdGEtPmFzQmxvYlVSTCgpOwogICAgIGlmIChibG9iVVJMLmlzTnVsbCgpKSB7
Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNo
VGFzazo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IFdURk1v
dmUoZm9ybURhdGEpIH0gfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
UmVjZWl2ZUZvcm1EYXRhIHsgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSB7IFdURk1vdmUoZm9ybURh
dGEpIH0gfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0xMjksNyArMTI5LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50Ojpk
aWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IGNoYXIqIGRhdGEsIHNpemUKICAgICBpZiAoIW1fY29u
bmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRf
dD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0
YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUgfSwgc3Rh
dGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaEJsb2JMb2FkaW5nKCkK
QEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6
OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OkRpZEZhaWwgeyBlcnJvciB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OkRpZEZhaWwgeyBlcnJvciB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7
CiB9CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRGaW5pc2goKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2ggeyB9
LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZpbmlzaCB7IH0sIG1fZmV0Y2hJ
ZGVudGlmaWVyKTsKIAogICAgIGNsZWFudXAoKTsKIH0KQEAgLTE3NCw3ICsxNzQsNyBAQCB2b2lk
IFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZE5vdEhhbmRsZSgpCiAgICAgaWYg
KCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2Vu
ZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgbV9m
ZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBtX2ZldGNoSWRl
bnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXIuY3BwCmluZGV4IDQ5MzNjYTRjM2EwNjcyY2FjMzBmNzc5NTE5MGQyNTg1MjFjMGNmMDIuLjJi
Mjg4NjRhOWFhMDk4NDQyZDYxNTMyYzY0MGY1YjkzYTg1OTk4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuY3BwCkBAIC04MiwxNCArODIsMTQgQEAgUmVmPFdlYlVzZXJDb250ZW50
Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpnZXRPckNyZWF0ZShVc2VyQ29u
dGVudEMKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
KFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRlbnRpZmllcikKICAgICA6IG1faWRl
bnRpZmllcihpZGVudGlmaWVyKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAq
dGhpcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6fldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKHVzZXJDb250ZW50Q29udHJvbGxlcnMoKS5jb250YWlu
cyhtX2lkZW50aWZpZXIpKTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIpOwogCiAg
ICAgdXNlckNvbnRlbnRDb250cm9sbGVycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwogfQpAQCAt
MjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghd2ViUGFnZSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlEKCksIHdlYkZyYW1lLT5pbmZvKCks
IG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5kYXRhKCkpKSwgbV9jb250
cm9sbGVyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT5wYWdlSUQo
KSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFs
dWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKSk7CiAgICAgfQogCiAgICAg
UmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcAppbmRleCA0OTYyOTZmNmQ4ODEwNTIzOTI0NTE2MDEzMDU2NDZiYjZkNmIxY2Nh
Li4wOGJlOGUwMTY4MzFhNDJlYWZjN2NhY2I1NDdjMzZkZjI2MDdlZmQyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzCiAK
ICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZShmcmFtZSk7
CiAKLSAgICB1aW50NjRfdCBuZXdQYWdlSUQgPSAwOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBuZXdQYWdlSUQ7CiAgICAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4g
cGFyYW1ldGVyczsKICAgICBpZiAoIXdlYlByb2Nlc3MucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZSh3ZWJGcmFt
ZS0+aW5mbygpLCB3ZWJGcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSwgcmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKSwgd2luZG93RmVhdHVyZXMsIG5hdmlnYXRpb25BY3Rpb25EYXRhKSwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6UmVwbHkobmV3UGFnZUlELCBwYXJhbWV0ZXJz
KSwgbV9wYWdlLnBhZ2VJRCgpKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yOTksOCAr
Mjk5LDggQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1l
LCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXMKICAgICBpZiAocGFyYW1ldGVycy0+c2Vz
c2lvbklEID09IG1fcGFnZS5zZXNzaW9uSUQoKSkKICAgICAgICAgcGFyYW1ldGVycy0+b2xkUGFn
ZUlEID0gbV9wYWdlLnBhZ2VJRCgpOwogCi0gICAgd2ViUHJvY2Vzcy5jcmVhdGVXZWJQYWdlKG5l
d1BhZ2VJRCwgV1RGTW92ZSgqcGFyYW1ldGVycykpOwotICAgIHJldHVybiB3ZWJQcm9jZXNzLndl
YlBhZ2UobmV3UGFnZUlEKS0+Y29yZVBhZ2UoKTsKKyAgICB3ZWJQcm9jZXNzLmNyZWF0ZVdlYlBh
Z2UoKm5ld1BhZ2VJRCwgV1RGTW92ZSgqcGFyYW1ldGVycykpOworICAgIHJldHVybiB3ZWJQcm9j
ZXNzLndlYlBhZ2UoKm5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7CiB9CiAKIHZvaWQgV2ViQ2hyb21l
Q2xpZW50OjpzaG93KCkKQEAgLTEzMTcsMTIgKzEzMTcsMTIgQEAgdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OmRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkKIH0KIAogI2lmIEVOQUJMRShS
RVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFdlYkNocm9tZUNsaWVudDo6aGFzU3RvcmFn
ZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURv
bWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQ2hy
b21lQ2xpZW50OjpoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIG1fcGFnZS5oYXNTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3Vi
RnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFi
bGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkNocm9tZUNs
aWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURv
bWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CiAgICAgbV9wYWdlLnJlcXVlc3RTdG9yYWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVE
b21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJhbWVJRCwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmluZGV4IGRkM2IyMjU0MzVkOTI2MzQ0
MTU5OWM4MDVjMzYzNzNjZjI2MjYxY2UuLjI5MWM1ZWRkYzhjM2VlYmZiMTQ4YzA1ZDY2MjUzYmNm
ZTNkNDc0MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM2OSw4ICszNjksOCBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKSBmaW5hbDsKIAog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBm
aW5hbDsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxl
RG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9w
RnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKSBmaW5hbDsKKyAgICB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFp
biwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24p
PiYmKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKaW5kZXggZjQyOGZkMjM5N2VkZGQ0ZDI0MTE3NzAzMjNlYjNmYTI3
OTAyZDg1Zi4uNzA1MjAyNWI5ZGNmOTI0MTRjYjZlNDg0MmRhZmE3NDhjMGUxZjc0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5jcHAKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFdlYkVkaXRvckNsaWVu
dDo6cmVnaXN0ZXJVbmRvU3RlcChVbmRvU3RlcCYgc3RlcCkKICAgICBhdXRvIHN0ZXBJRCA9IHdl
YlN0ZXAtPnN0ZXBJRCgpOwogCiAgICAgbV9wYWdlLT5hZGRXZWJVbmRvU3RlcChzdGVwSUQsIFdU
Rk1vdmUod2ViU3RlcCkpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyhzdGVwSUQsIHN0ZXAubGFiZWwoKSksIG1fcGFn
ZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0
aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oc3RlcElELCBzdGVwLmxhYmVsKCkpLCBJUEM6
OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7
CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFVuZG9TdGVwJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDUyOWMwNDY3MDMwMWIzNTBiMTMy
NTE4MzU0YTllNWE4NTViOWM0OGQuLjNkY2Q3ZTJlYzE5OTgxN2Q3NDk1ZWQwYTgzNjI1MzY0MzY2
MWNkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAtMTEyLDcgKzExMiw3
IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp+V2ViRnJhbWVMb2FkZXJDbGllbnQoKQogewogfQog
Ci1PcHRpb25hbDx1aW50NjRfdD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0
CitPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgp
IGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICBy
ZXR1cm4gbV9mcmFtZS0+cGFnZSgpLT5wYWdlSUQoKTsKQEAgLTU0MSw3ICs1NDEsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYgZQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCksIG1fZnJhbWUtPmZy
YW1lSUQoKSk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCkudG9V
SW50NjQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4g
dXNlckRhdGE7CiAKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIGlm
ICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0coTmV0d29yaywg
IiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQ6IChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBh
Z2VJRCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIl
cCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkOiAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5wYWdl
SUQoKS50b1VJbnQ2NCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOwogCiAgICAgUmVmUHRyPEFQSTo6
T2JqZWN0PiB1c2VyRGF0YTsKIApAQCAtOTAxLDcgKzkwMSw5IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihjb25zdCBO
YXZpZ2F0CiAgICAgaWYgKHJlcXVlc3Rlci5mcmFtZUlEKCkgJiYgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViRnJhbWUocmVxdWVzdGVyLmZyYW1lSUQoKSkpCiAgICAgICAgIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YS5mcmFtZUlEID0gcmVxdWVzdGVyLmZyYW1lSUQoKTsKIAotICAgIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlEID0gcmVxdWVzdGVyLnBhZ2VJRCgpICYmIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJRCgpKSA/IHJlcXVlc3Rlci5wYWdl
SUQoKSA6IDA7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
OworICAgIGlmIChyZXF1ZXN0ZXIucGFnZUlEKCkgJiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViUGFnZShyZXF1ZXN0ZXIucGFnZUlEKCkpKQorICAgICAgICBvcmlnaW5hdGluZ1BhZ2VJRCA9
IHJlcXVlc3Rlci5wYWdlSUQoKTsKIAogICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRp
b25BY3Rpb25EYXRhOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlID0g
YWN0aW9uLT5uYXZpZ2F0aW9uVHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRl
eCBmNzNhYjhjYTczZjE3OGJmMjY4ZmYyYjg0MWM0NTFjZGQ0OThmYWEzLi5jOGZiMmFmMjEyNTY2
YzY0Njg2MDc3YTBjODlhZjgxMDUzOTBhNjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFwcGx5VG9Eb2N1bWVudExv
YWRlcihXZWJzaXRlUG9saWNpZXNEYXRhJiYpOwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgp
IGNvbnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IGZpbmFs
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
aW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAppbmRleCBlMWU5
M2E2ZGUzNDY3ZWYxNDA5NDUzNDZkOGRiNGZkZDI3Mzg2NzAzLi45ZTQ2ZDgwNzNiMzgwZTQyNTU0
YmVjNWY0NDQ4MTNmNGU2ZjkzNmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5jcHAKQEAgLTM3LDE0ICszNywxNCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAot
dXNpbmcgUGFzc3dvcmRDYWxsYmFja01hcCA9IEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+PjsKK3VzaW5nIFBhc3N3b3JkQ2FsbGJhY2tNYXAgPSBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPj47
CiBzdGF0aWMgUGFzc3dvcmRDYWxsYmFja01hcCYgcGFzc3dvcmRDYWxsYmFja3MoKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYXNzd29yZENhbGxiYWNrTWFwPiBjYWxsYmFja01hcDsK
ICAgICByZXR1cm4gY2FsbGJhY2tNYXAuZ2V0KCk7CiB9CiAKLVdlYlByZXZpZXdMb2FkZXJDbGll
bnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
U3RyaW5nJiB1dGksIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlByZXZpZXdMb2FkZXJDbGllbnQ6Oldl
YlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5n
JiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKICAgICA6IG1fZmlsZU5hbWUg
eyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAgICAgLCBtX3BhZ2VJRCB7IHBhZ2VJ
RCB9CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVx
dWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYKICAgICBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlcXVlc3RQ
YXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUobV9maWxlTmFtZSksIG1fcGFn
ZUlEKTsKIH0KIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUGFzc3dv
cmQoY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUGFzc3dvcmQoY29uc3QgU3RyaW5nJiBwYXNzd29y
ZCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIEFTU0VSVChwYXNzd29y
ZENhbGxiYWNrcygpLmNvbnRhaW5zKHBhZ2VJRCkpOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBwYXNzd29yZENhbGxiYWNrcygpLnRha2UocGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggZjk5ODZlNDFjYTJmMjUxZGIyYzNlNWQ4OGUwOGRm
NTA2ODU0MDRlOC4uYmU4ODdhZDhhN2YwYjY1N2QxZmE0NTFkMTgzM2NmMWNkNDRiNTM3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKQEAgLTM1LDE2ICszNSwxNiBA
QCBjbGFzcyBXZWJGcmFtZTsKIAogY2xhc3MgV2ViUHJldmlld0xvYWRlckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpQcmV2aWV3TG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYlByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGZpbGVO
YW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgdWludDY0X3QgcGFnZUlEKQorICAgIHN0YXRpYyBSZWY8
V2ViUHJldmlld0xvYWRlckNsaWVudD4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgewog
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGZpbGVO
YW1lLCB1dGksIHBhZ2VJRCkpOwogICAgIH0KICAgICB+V2ViUHJldmlld0xvYWRlckNsaWVudCgp
OwogCi0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVBhc3N3b3JkKGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVBhc3N3b3JkKGNvbnN0
IFN0cmluZyYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogcHJpdmF0ZToKLSAgICBXZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYg
dXRpLCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3Qg
U3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWls
KCkgb3ZlcnJpZGU7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAKICAgICBjb25zdCBTdHJp
bmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91dGk7Ci0gICAgY29uc3QgdWludDY0
X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7
CiAgICAgUXVpY2tMb29rRG9jdW1lbnREYXRhIG1fZGF0YTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAppbmRleCAyNzZiODBiZjI4
ZjFmNWZkNDlhNmYwZmI0OTlkMzM1MTJhZGMxMDEwLi5jMDczOTZmMDJmMWZhNjVmNDVhY2VlNzJm
MTM0ZjRmYjJkOWU4OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRHJhd2luZ0FyZWEuY3BwCkBAIC02OCw3ICs2OCw3IEBAIERyYXdpbmdBcmVhOjpEcmF3aW5n
QXJlYShEcmF3aW5nQXJlYVR5cGUgdHlwZSwgRHJhd2luZ0FyZWFJZGVudGlmaWVyIGlkZW50aWZp
ZXIsCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKICAgICAsIG1fd2ViUGFnZSh3ZWJQ
YWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVy
LnRvVUludDY0KCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBEcmF3aW5nQXJlYTo6fkRyYXdpbmdBcmVhKCkK
QEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBEcmF3aW5nQXJlYTo6cmVtb3ZlTWVzc2FnZVJlY2VpdmVy
SWZOZWVkZWQoKQogICAgIGlmIChtX2hhc1JlbW92ZWRNZXNzYWdlUmVjZWl2ZXIpCiAgICAgICAg
IHJldHVybjsKICAgICBtX2hhc1JlbW92ZWRNZXNzYWdlUmVjZWl2ZXIgPSB0cnVlOwotICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJh
d2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkp
OworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA2OTE4MzBiNTkzYzY3YWQz
M2Q3N2EwZTY4YzU0N2E2MzFjNWFiNmQ3Li40OWEyYzNiYjM3MDJiNmQ0MjM0MGY4MTY5OTMxZGE4
YzQ2YzdiNWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9F
dmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBFdmVudERpc3BhdGNo
ZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKICAg
ICBjb25uZWN0aW9uLT5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkV2ZW50
RGlzcGF0Y2hlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0aGlzKTsK
IH0KIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQs
IGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29s
IGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwg
Ym9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29s
IGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCiB7CiAjaWYg
UExBVEZPUk0oQ09DT0EpIHx8IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgUGxhdGZvcm1X
aGVlbEV2ZW50IHBsYXRmb3JtV2hlZWxFdmVudCA9IHBsYXRmb3JtKHdoZWVsRXZlbnQpOwpAQCAt
MTQyLDcgKzE0Miw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF90
IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVuCiB9CiAKICNpZiBFTkFCTEUo
TUFDX0dFU1RVUkVfRVZFTlRTKQotdm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1cmVFdmVudCh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZl
bnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2VzdHVyZUV2ZW50KFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAg
ICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgcGFnZUlELCBnZXN0dXJlRXZlbnRdKCkgbXV0YWJsZSB7CiAgICAgICAgIHByb3RlY3RlZFRo
aXMtPmRpc3BhdGNoR2VzdHVyZUV2ZW50KHBhZ2VJRCwgZ2VzdHVyZUV2ZW50KTsKQEAgLTE2Myw3
ICsxNjMsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2V0UXVldWVkVG91Y2hFdmVudHNGb3JQ
YWdlKGNvbnN0IFdlYlBhZ2UmIHdlYlBhZ2UsIFRvdWNoRQogICAgIGRlc3RpbmF0aW9uUXVldWUg
PSBtX3RvdWNoRXZlbnRzLnRha2Uod2ViUGFnZS5wYWdlSUQoKSk7CiB9CiAKLXZvaWQgRXZlbnRE
aXNwYXRjaGVyOjp0b3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJU
b3VjaEV2ZW50JiB0b3VjaEV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OnRvdWNoRXZlbnQo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIHRvdWNo
RXZlbnQpCiB7CiAgICAgYm9vbCB1cGRhdGVMaXN0V2FzRW1wdHk7CiAgICAgewpAQCAtMjA3LDcg
KzIwNyw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFRvdWNoRXZlbnRzKCkKIH0K
ICNlbmRpZgogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KHVpbnQ2
NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKK3ZvaWQgRXZlbnRE
aXNwYXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25z
dCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2hXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgdwogfQog
CiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpk
aXNwYXRjaEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVu
dCYgZ2VzdHVyZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoR2VzdHVyZUV2
ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJl
RXZlbnQpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjMyLDcgKzIz
Miw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudCh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVuCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6c2VuZERpZFJlY2VpdmVFdmVudCh1
aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiBldmVudCwgYm9vbCBkaWRIYW5kbGVFdmVu
dCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpzZW5kRGlkUmVjZWl2ZUV2ZW50KFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmIGV2ZW50LCBib29sIGRpZEhhbmRsZUV2ZW50KQog
ewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0
PHVpbnQzMl90PihldmVudC50eXBlKCkpLCBkaWRIYW5kbGVFdmVudCksIHBhZ2VJRCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNo
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5o
CmluZGV4IDFkNDc3ODc3ZWFhZTQwNDUyNmEwNzQ1MWMwNzE4Njk5N2E1NTBlNTQuLmUxYmJiZDQ3
OTY5YmZiYjc1MmM2MWQyMWM2MWEyOWVlZmFkOTYyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaGVlbEV2
ZW50RGVsdGFGaWx0ZXIuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KQEAgLTc3LDM4ICs3OCwzOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAv
LyBNZXNzYWdlIGhhbmRsZXJzCi0gICAgdm9pZCB3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgV2ViV2hlZWxFdmVudCYsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5S
dWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVy
QmFuZEF0Qm90dG9tKTsKKyAgICB2b2lkIHdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFdlYldoZWVsRXZlbnQmLCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wg
Y2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1
YmJlckJhbmRBdEJvdHRvbSk7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAgdm9p
ZCB0b3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViVG91Y2hFdmVudCYpOworICAg
IHZvaWQgdG91Y2hFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViVG91Y2hF
dmVudCYpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLSAgICB2b2lk
IGdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwor
ICAgIHZvaWQgZ2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJH
ZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBvbiB0aGUg
bWFpbiB0aHJlYWQuCi0gICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBXZWJXaGVlbEV2ZW50Jik7CisgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKICNpZiBFTkFCTEUo
SU9TX1RPVUNIX0VWRU5UUykKICAgICB2b2lkIGRpc3BhdGNoVG91Y2hFdmVudHMoKTsKICNlbmRp
ZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi0gICAgdm9pZCBkaXNwYXRjaEdlc3R1
cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOworICAgIHZv
aWQgZGlzcGF0Y2hHZXN0dXJlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdl
Ykdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQot
ICAgIHZvaWQgc2VuZERpZFJlY2VpdmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkV2
ZW50JiwgYm9vbCBkaWRIYW5kbGVFdmVudCk7CisgICAgdm9pZCBzZW5kRGlkUmVjZWl2ZUV2ZW50
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlkSGFuZGxl
RXZlbnQpOwogI2VuZGlmCiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogCiAjaWYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykKICAgICBMb2NrIG1fc2Nyb2xsaW5nVHJlZXNNdXRleDsKLSAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVl
Pj4gbV9zY3JvbGxpbmdUcmVlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBSZWZQdHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxpbmdUcmVl
czsKICNlbmRpZgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpXaGVlbEV2ZW50RGVsdGFG
aWx0ZXI+IG1fcmVjZW50V2hlZWxFdmVudERlbHRhRmlsdGVyOwogI2lmIEVOQUJMRShJT1NfVE9V
Q0hfRVZFTlRTKQogICAgIExvY2sgbV90b3VjaEV2ZW50c0xvY2s7Ci0gICAgSGFzaE1hcDx1aW50
NjRfdCwgVG91Y2hFdmVudFF1ZXVlPiBtX3RvdWNoRXZlbnRzOworICAgIEhhc2hNYXA8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsKICNlbmRp
ZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZl
bnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCmluZGV4IDVlMTU0M2M5OGNjZmE0MTQwMWMy
NzUzOGM2Mjk5ZjlhNTgwZjM2N2IuLmFmOTA0YjQ1MTZhMTA5ODA4NTRjMWEzNDRlNjEyMmNmZDcx
NjRiODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50
RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KQEAgLTIxLDExICsyMSwxMSBAQAogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBFdmVudERpc3BhdGNoZXIgewotICAgIFdoZWVsRXZl
bnQodWludDY0X3QgcGFnZUlELCBXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQsIGJvb2wgY2Fu
UnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJi
ZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQorICAgIFdoZWVsRXZlbnQo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZl
bnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwg
Ym9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQogI2lm
IEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgIFRvdWNoRXZlbnQodWludDY0X3QgcGFnZUlE
LCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCisgICAgVG91Y2hFdmVudChXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKICNlbmRp
ZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi0gICAgR2VzdHVyZUV2ZW50KHVpbnQ2
NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQgZXZlbnQpCisgICAgR2VzdHVyZUV2
ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJHZXN0dXJlRXZl
bnQgZXZlbnQpCiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYS5tbQppbmRleCBiNzUyYzFjNTRkNDZmMDhkZGE2NjViNWYzNTY0
ZDU0MmE2NjVlY2Y2Li5iMjkxZGYwYjdkZmRmNzkzOWU3ZGFhZTcyMzQyMDI2NWRiMTljMzYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
Lm1tCkBAIC03NSw3ICs3NSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVM
YXllclRyZWVEcmF3aW5nQXJlYShXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXCiAgICAgLy8gRklY
TUU6IFdoaWxlIHVzaW5nIHRoZSBoaWdoIGVuZCBvZiB0aGUgcmFuZ2Ugb2YgRGlzcGxheUlEcyBt
YWtlcyBhIGNvbGxpc2lvbiB3aXRoIHJlYWwsIG5vbi1SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YQogICAgIC8vIERpc3BsYXlJRHMgbGVzcyBsaWtlbHksIGl0IGlzIG5vdCBlbnRpcmVseSBzYWZl
IHRvIGhhdmUgYSBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSBhbmQgVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEKICAgICAvLyBjb2VleGlzdCBpbiB0aGUgc2FtZSBwcm9jZXNzLgotICAg
IHdlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMy
X3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkpOworICAgIHdlYlBhZ2Uud2luZG93U2NyZWVu
RGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2Uu
cGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoKQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6OmZsdXNoTGF5ZXJzKCkKICAgICBSZWZQdHI8QmFja2lu
Z1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0b3JlRmx1c2hlciA9IEJhY2tpbmdTdG9yZUZsdXNoZXI6
OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LCBXVEZNb3ZlKGNvbW1pdEVuY29kZXIpLCBXVEZNb3ZlKGNvbnRleHRzVG9GbHVzaCkpOwogICAg
IG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZsdXNoZXIgPSBiYWNraW5nU3RvcmVGbHVzaGVyOwogCi0g
ICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlE
ID0gbV93ZWJQYWdlLnBhZ2VJRCgpOwogICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUs
IFtiYWNraW5nU3RvcmVGbHVzaGVyID0gV1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFn
ZUlEXSB7CiAgICAgICAgIGJhY2tpbmdTdG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRj
aGVyLmNwcAppbmRleCBjM2E5NTI1NjUzMjZlNzQ5ZTUyNjExMzJiMDQ0YWE1ODg4MDJjMDRmLi5j
OTdlNmZjNzI1MTY0OGE4YWNiNjlhZDI3YzhhYzExMmFmM2JiOTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OmluaXRpYWxp
emVDb25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbikKICAgICBjb25uZWN0aW9u
LT5hZGRXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlZpZXdVcGRhdGVEaXNwYXRj
aGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUuZ2V0KCksIHRoaXMpOwogfQogCi12
b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjp2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUodWludDY0
X3QgcGFnZUlELCBjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNpYmxlQ29u
dGVudFJlY3RVcGRhdGVJbmZvKQordm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgVmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbykK
IHsKICAgICBib29sIHVwZGF0ZUxpc3RXYXNFbXB0eTsKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuaAppbmRl
eCBlNDdkYzRlMWQ0MTY4MjIzNDBhZmFkZWEyYTNjODA2MjBmNGIyMDg4Li5jYTdkMjAwYzJiY2Y2
NWU3N2I4MGEyOWRmYWMxOTQzZWMyZGQ0MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKICNpbmNsdWRlICJWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGVJbmZvLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CkBAIC00Nyw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpDb25u
ZWN0aW9uOjpXb3JrUXVldWVNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgVmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYpOworICAgIHZvaWQgdmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRh
dGVJbmZvJik7CiAKICAgICB2b2lkIGRpc3BhdGNoVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKCk7
CiAKQEAgLTU4LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVl
dWU7CiAgICAgTG9jayBtX2RhdGFNdXRleDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBVcGRhdGVE
YXRhPiBtX2xhdGVzdFVwZGF0ZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBVcGRhdGVEYXRhPiBtX2xhdGVzdFVwZGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0
ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5tZXNzYWdlcy5pbgppbmRleCAxN2UyYzhkZDE4NmFkMjc2
ZTU1OGFjYzg4MGMyNjg4ZDUwMzU4ZmU2Li5kOTJlZWI4ODlkMDk1NzJhMWQyMjZlODNjN2NlMTNm
NTk2MTAyNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3VXBkYXRlRGlzcGF0Y2hlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5tZXNzYWdlcy5pbgpAQCAtMjEsNSAr
MjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBWaWV3VXBkYXRlRGlzcGF0Y2hl
ciB7Ci0gICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0
OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUlu
Zm8pCisgICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViS2l0OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvIHZpc2libGVDb250
ZW50UmVjdFVwZGF0ZUluZm8pCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKaW5kZXggMjExZDYw
MWVmMGI0NGY1MmFhMmRlOTYzZTg0NTNmODZjNTJmOGZkNC4uN2EwYzBjODBmZThjYzYwMTE2OTNk
N2I0NTI3YWJlYzdlOWU1ZTc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtNTUsNyAr
NTUsNyBAQCBzdGF0aWMgSURUb0hpc3RvcnlJdGVtTWFwJiBpZFRvSGlzdG9yeUl0ZW1NYXAoKQog
ICAgIHJldHVybiBtYXA7CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0
ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwg
UmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3Rp
bmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
IGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVtPiYmIGl0ZW0sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
T3ZlcndyaXRlRXhpc3RpbmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKIHsKICAgICAvLyBU
aGlzIGl0ZW0vaXRlbUlEIHBhaXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0IGluIG91ciBtYXAu
CiAgICAgQVNTRVJUX1VOVVNFRChvdmVyd3JpdGVFeGlzdGluZ0l0ZW0sIG92ZXJ3cml0ZUV4aXN0
aW5nSXRlbSA9PSBPdmVyd3JpdGVFeGlzdGluZ0l0ZW06OlllcyB8fCAhaWRUb0hpc3RvcnlJdGVt
TWFwKCkuY29udGFpbnMoaXRlbUlEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAppbmRleCBmM2IxYzhh
ZjU0ODIzYzNlODI2OGQ2YWU1OGU0MGE2ZjYxNTRkMDgxLi5kMWJhYWRiOTFjNTU4NjFiMTU0M2I5
NzE3NjQ4NjJiNWQyMjM5Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENsaWVudC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgWWVzLAogICAgICAgICBObwogICAgIH07Ci0gICAgdm9pZCBhZGRJdGVtRnJvbVVJ
UHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgUmVmPFdl
YkNvcmU6Okhpc3RvcnlJdGVtPiYmLCB1aW50NjRfdCBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5n
SXRlbSk7CisgICAgdm9pZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKIAogICAgIHZvaWQg
Y2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQ29va2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNv
b2tpZUphci5jcHAKaW5kZXggMTYwZWRlZmQ1OWQxMGEwMjNlNGFmMjUxYmUyYjFhOWIyYTk4YjJk
NS4uMmQ5ZDA4NWUzYmM1YzkyZDdiMDA1MjEyZjYxNmQ1Y2M2NmUxMTg3ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC00OSw3
ICs0OSw3IEBAIFdlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKCkKIFN0cmluZyBXZWJDb29raWVK
YXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkg
Y29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtNjYsNyArNjYsNyBAQCBTdHJp
bmcgV2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3Jl
OjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7
CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFt
ZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtODMsNyArODMsNyBAQCBi
b29sIFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQm
IGRvY3VtZW50KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFpcjxTdHJp
bmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNp
dGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJl
Q29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYg
dXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIGNvbnN0CiB7CiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNv
b2tpZXNBY2Nlc3NlZCA9IGZhbHNlOwpAQCAtOTUsNyArOTUsNyBAQCBzdGQ6OnBhaXI8U3RyaW5n
LCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVx
dWVzdEhlYQogYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mIHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7
Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsK
ICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAg
ICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggOTdk
ZDc2ZjY2NGMzZjU1M2FkZmM4ZTc2YmI4NWVhM2YxMTFlNTExZS4uNTU5YmQwZTUwYmJlYzM1ZmZi
MjU2YjkxMmI3YjQ2ZGE5OTRiMmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIFN0
cmluZyBjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJikgY29uc3QgZmluYWw7
CiAgICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiBjb29raWVTdHJpbmcpIGZpbmFsOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnBhaXI8U3Ry
aW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6
OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29y
ZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50Jiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSBmaW5hbDsKIHByaXZhdGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggODkw
YzVlNTZhYzA0Y2U3M2Y0NWVlMDdkOTc4MzUxZmQzMWNhYTUyMS4uNGFmNDk1YTUxYjkwMzcyNmYz
YmI2NGMzYTRkZTMxNTFkOTlmYmI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyB1aW50NjRfdCBn
ZW5lcmF0ZUxpc3RlbmVySUQoKQogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENv
cmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSkKIHsK
ICAgICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRlckNs
aWVudD4oc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPigmY29yZUZyYW1lLT5sb2Fk
ZXIoKS5jbGllbnQoKSkpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZENyZWF0ZU1haW5GcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCkpOwor
ICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZyYW1l
KGZyYW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFt
ZTsKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPnRyZWUoKS5zZXROYW1lKFN0cmluZygpKTsKQEAg
LTEyMSw3ICsxMjEsNyBAQCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1h
aW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogUmVmPFdlYkZyYW1lPiBX
ZWJGcmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewogICAgIGF1dG8g
ZnJhbWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7
Ci0gICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJmcmFt
ZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkp
OwogCiAgICAgYXV0byBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdlKCks
IG93bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwogICAgIGZy
YW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFtZS5wdHIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAppbmRleCBjOTY1MmU5NGFm
ODZiNjBlN2ZkZTczNjI1ZDExYjVhYmNlYTRjOWRhLi5iY2ZmOGUyYTg5NmZmMDJlODI1MTY1Mjc4
MTE5YmQxZmViNDYyMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYkluc3BlY3RvclVJ
OjpXZWJJbnNwZWN0b3JVSShXZWJQYWdlJiBwYWdlKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViSW5z
cGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50
aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCit2b2lkIFdl
Ykluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKFBhZ2VJZGVudGlmaWVyIGluc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVs
KQogewogICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRp
ZmllcjsKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci5yZXNldCgpOwpAQCAtMTY3LDcgKzE2
Nyw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKICAgICBpZiAobV9mcm9u
dGVuZEhvc3QpCiAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50KCk7CiAK
LSAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBtX2luc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyID0geyB9OwogICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCmluZGV4IDgz
ODFiZjFjZWRlY2I2NWM1ZDQ3NDc1YzIyYjdkM2RiNjJmYmZkOGUuLjk0MjRiZmUxZjI2Y2ZkYzE2
OTA3Yzc4MWZlZjRkNmQwNWM1ZWNlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IldlYkluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZy
b250ZW5kSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKQEAgLTUyLDcgKzUz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkgb3Zl
cnJpZGUgeyBjbG9zZVdpbmRvdygpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9y
VUkgbWVzc2FnZXMKLSAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVj
dGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2
ZWwpOworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3Bl
Y3Rpb25MZXZlbCk7CiAgICAgdm9pZCB1cGRhdGVDb25uZWN0aW9uKCk7CiAKICAgICB2b2lkIHNo
b3dDb25zb2xlKCk7CkBAIC0xMzMsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBjb3JlUGFn
ZSgpLCBzaW5jZSB3ZSBtYXkgbmVlZCBpdCBhZnRlciB0aGUgZnJvbnRlbmQncyBwYWdlIGhhcyBz
dGFydGVkIGRlc3RydWN0aW9uLgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIG1f
ZnJvbnRlbmRDb250cm9sbGVyIHsgbnVsbHB0ciB9OwogCi0gICAgdWludDY0X3QgbV9pbnNwZWN0
ZWRQYWdlSWRlbnRpZmllciB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2lu
c3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9kb2NraW5nVW5hdmFpbGFibGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Zp
c2libGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgppbmRleCBkZWEwZmU1ODRkNGVm
MGY4NmZhOTcxNjYyYmI0N2I0MWE3ZjYxM2JmLi40MzE5MGFhODM0ZGNhYTY2OTY0YmJiYTk1NTAw
ODIxZmI3ZDYxMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAog
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSSB7Ci0gICAgRXN0YWJs
aXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRl
clRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKKyAgICBFc3RhYmxpc2hDb25uZWN0aW9u
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVu
ZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogICAgIFVwZGF0ZUNvbm5lY3Rpb24o
KQogCiAgICAgQXR0YWNoZWRCb3R0b20oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcAppbmRleCAzYmFhZmQxODU0Y2JjOTk1Y2E0ZTg5ODAzZTNiNDQxODIz
ZWI2MTY1Li4yYzEwMGI1OWI2YjE3MjJhNWYyYjI3MWE2ZWNmN2NmM2M0YjZmZWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzYwLDcgKzM2
MCw3IEBAIHByaXZhdGU6CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50
ZWRMZWFrQ291bnRlciwgd2ViUGFnZUNvdW50ZXIsICgiV2ViUGFnZSIpKTsKIAotUmVmPFdlYlBh
Z2U+IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQorUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQog
ewogICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJRCwg
V1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogCkBAIC0zNzAsNyArMzcwLDcgQEAgUmVmPFdlYlBhZ2U+
IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWUKICAgICByZXR1cm4gcGFnZTsKIH0KIAotV2ViUGFnZTo6V2ViUGFnZSh1aW50
NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorV2Vi
UGFnZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIDogbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV92aWV3
U2l6ZShwYXJhbWV0ZXJzLnZpZXdTaXplKQogICAgICwgbV9hbHdheXNTaG93c0hvcml6b250YWxT
Y3JvbGxlciB7IHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgfQpAQCAt
ODMxLDcgKzgzMSw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGFnZTo6bWVzc2FnZVNlbmRlckNv
bm5lY3Rpb24oKSBjb25zdAogCiB1aW50NjRfdCBXZWJQYWdlOjptZXNzYWdlU2VuZGVyRGVzdGlu
YXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2VJRCgpOworICAgIHJldHVybiBwYWdl
SUQoKS50b1VJbnQ2NCgpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0xNjQ4
LDcgKzE2NDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZAogICAgIGlmICghaXRlbSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgTE9HKExvYWRpbmcsICJJbiBXZWJQcm9jZXNzIHBpZCAlaSwg
V2ViUGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZpZ2F0aW5nIHRvIGJhY2svZm9yd2FyZCBVUkwgJXMi
LCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIG1fcGFnZUlELCBpdGVtLT51cmwoKS5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTG9hZGluZywgIkluIFdlYlByb2Nlc3MgcGlkICVpLCBX
ZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFjay9mb3J3YXJkIFVSTCAlcyIs
IGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgaXRlbS0+dXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBBU1NFUlQoIW1fcGVuZGluZ05hdmlnYXRp
b25JRCk7CiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbklEOwpAQCAtMjA3
Niw3ICsyMDc2LDcgQEAgYm9vbCBXZWJQYWdlOjpzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICBpZiAoIXZpZXcgfHwgdmlldy0+Zml4ZWRMYXlvdXRTaXplKCkgPT0g
c2l6ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFZpc2li
bGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQgPDwgIiBzZXRGaXhlZExh
eW91dFNpemUgIiA8PCBzaXplKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBz
dHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgc2V0Rml4ZWRM
YXlvdXRTaXplICIgPDwgc2l6ZSk7CiAgICAgdmlldy0+c2V0Rml4ZWRMYXlvdXRTaXplKHNpemUp
OwogCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaXhlZExheW91dFNpemVEaWRD
aGFuZ2Uoc2l6ZSkpOwpAQCAtMjUwNCw3ICsyNTA0LDcgQEAgY29uc3QgV2ViRXZlbnQqIFdlYlBh
Z2U6OmN1cnJlbnRFdmVudCgpCiB2b2lkIFdlYlBhZ2U6OmZyZWV6ZUxheWVyVHJlZShMYXllclRy
ZWVGcmVlemVSZWFzb24gcmVhc29uKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5z
aW9uLCAiJXAgLSBXZWJQYWdlIChQYWdlSUQ9JWxsdSkgLSBBZGRpbmcgYSByZWFzb24gJWQgdG8g
ZnJlZXplIGxheWVyIHRyZWU7IGN1cnJlbnQgcmVhc29ucyBhcmUgJWQiLAotICAgICAgICB0aGlz
LCBtX3BhZ2VJRCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJl
ZXplUmVhc29ucy50b1JhdygpKTsKKyAgICAgICAgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwg
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50
b1JhdygpKTsKICAgICBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMuYWRkKHJlYXNvbik7CiAgICAg
dXBkYXRlRHJhd2luZ0FyZWFMYXllclRyZWVGcmVlemVTdGF0ZSgpOwogfQpAQCAtMjUxMiw3ICsy
NTEyLDcgQEAgdm9pZCBXZWJQYWdlOjpmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVh
c29uIHJlYXNvbikKIHZvaWQgV2ViUGFnZTo6dW5mcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJl
ZXplUmVhc29uIHJlYXNvbikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gV2ViUGFnZSAoUGFnZUlEPSVsbHUpIC0gUmVtb3ZpbmcgYSByZWFzb24gJWQgdG8gZnJl
ZXplIGxheWVyIHRyZWU7IGN1cnJlbnQgcmVhc29ucyBhcmUgJWQiLAotICAgICAgICB0aGlzLCBt
X3BhZ2VJRCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJlZXpl
UmVhc29ucy50b1JhdygpKTsKKyAgICAgICAgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50b1Jh
dygpKTsKICAgICBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMucmVtb3ZlKHJlYXNvbik7CiAgICAg
dXBkYXRlRHJhd2luZ0FyZWFMYXllclRyZWVGcmVlemVTdGF0ZSgpOwogfQpAQCAtMzE2OCw3ICsz
MTY4LDcgQEAgdm9pZCBXZWJQYWdlOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKCkKIAogdm9pZCBXZWJQ
YWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rp
dml0eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBj
b25zdCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKQogewotICAgIExPR19XSVRIX1NU
UkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBwYWdlSUQoKSA8PCAi
IHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBhY3Rpdml0eVN0YXRlKTsKKyAgICBMT0dfV0lUSF9T
VFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgcGFnZUlEKCkudG9V
SW50NjQoKSA8PCAiIHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBhY3Rpdml0eVN0YXRlKTsKIAog
ICAgIGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7CiAgICAg
bV9hY3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsKQEAgLTMxNzYsNyArMzE3Niw3IEBAIHZv
aWQgV2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6Rmxh
Zz4gYWN0aXZpdHlTdGF0ZSwgQWN0CiAgICAgaWYgKGNoYW5nZWQpCiAgICAgICAgIHVwZGF0ZVRo
cm90dGxlU3RhdGUoKTsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wYWdlLCAic2V0QWN0
aXZpdHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJdTY0ICIgYnV0IFdlYkNvcmUgcGFnZSB3YXMgbnVs
bCIsIHBhZ2VJRCgpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcGFnZSwgInNldEFjdGl2
aXR5U3RhdGUgY2FsbGVkIG9uICUiIFBSSXU2NCAiIGJ1dCBXZWJDb3JlIHBhZ2Ugd2FzIG51bGwi
LCBwYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBpZiAobV9wYWdlKSB7CiAgICAgICAgIFNldEZv
clNjb3BlPE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPj4gY3VycmVudGx5Q2hhbmdpbmdB
Y3Rpdml0eVN0YXRlIHsgbV9sYXN0QWN0aXZpdHlTdGF0ZUNoYW5nZXMsIGNoYW5nZWQgfTsKICAg
ICAgICAgbV9wYWdlLT5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUpOwpAQCAtNDMzOSw3
ICs0MzM5LDcgQEAgdm9pZCBXZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQoKQogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1l
VmlldygpKSB7CiAgICAgICAgIEludFNpemUgbmV3Q29udGVudFNpemUgPSBmcmFtZVZpZXctPmNv
bnRlbnRzU2l6ZSgpOwotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJl
YW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIG1haW5GcmFtZURpZExheW91dCBzZXR0
aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IG5ld0NvbnRlbnRTaXplKTsKKyAgICAgICAgTE9HX1dJ
VEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQu
dG9VSW50NjQoKSA8PCAiIG1haW5GcmFtZURpZExheW91dCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0
byAiIDw8IG5ld0NvbnRlbnRTaXplKTsKICAgICAgICAgaWYgKG1fdmlld3BvcnRDb25maWd1cmF0
aW9uLnNldENvbnRlbnRzU2l6ZShuZXdDb250ZW50U2l6ZSkpCiAgICAgICAgICAgICB2aWV3cG9y
dENvbmZpZ3VyYXRpb25DaGFuZ2VkKCk7CiAgICAgfQpAQCAtNTc0Miw3ICs1NzQyLDcgQEAgdm9p
ZCBXZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKICAgICAKICAgICBib29s
IHZpZXdwb3J0Q2hhbmdlZCA9IGZhbHNlOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVS
ZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQgPDwgIiBkaWRDb21taXRMb2Fk
IHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgY29yZUZyYW1lLT52aWV3KCktPmNvbnRlbnRz
U2l6ZSgpKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldl
YlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgZGlkQ29tbWl0TG9hZCBzZXR0aW5n
IGNvbnRlbnQgc2l6ZSB0byAiIDw8IGNvcmVGcmFtZS0+dmlldygpLT5jb250ZW50c1NpemUoKSk7
CiAgICAgaWYgKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldENvbnRlbnRzU2l6ZShjb3JlRnJh
bWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkpKQogICAgICAgICB2aWV3cG9ydENoYW5nZWQgPSB0
cnVlOwogCkBAIC02MDU2LDcgKzYwNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRFZGl0b3JTdGF0
ZVVwZGF0ZSgpCiAgICAgLy8gSWYgdGhhdCBpcyB0aGUgY2FzZSwganVzdCBzZW5kIHdoYXQgd2Ug
aGF2ZSAoaS5lLiBkb24ndCBpbmNsdWRlIHBvc3QtbGF5b3V0IGRhdGEpIGFuZCB3YWl0IHVudGls
IHRoZQogICAgIC8vIG5leHQgbGF5ZXIgdHJlZSBjb21taXQgdG8gY29tcHV0ZSBhbmQgc2VuZCB0
aGUgY29tcGxldGUgRWRpdG9yU3RhdGUgb3Zlci4KICAgICBhdXRvIHN0YXRlID0gZWRpdG9yU3Rh
dGUoKTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdl
ZChzdGF0ZSksIHBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVk
aXRvclN0YXRlQ2hhbmdlZChzdGF0ZSkpOwogCiAgICAgaWYgKHN0YXRlLmlzTWlzc2luZ1Bvc3RM
YXlvdXREYXRhKQogICAgICAgICBzY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpOwpAQCAt
NjIzNyw3ICs2MjM3LDcgQEAgdm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiAKIHZvaWQgV2ViUGFnZTo6
cG9zdE1lc3NhZ2VJZ25vcmluZ0Z1bGx5U3luY2hyb25vdXNNb2RlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBzZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkhhbmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkp
KSksIHBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hyb25vdXNNb2Rl
KTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZU1lc3NhZ2UobWVzc2Fn
ZU5hbWUsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNU
b0hhbmRsZXMobWVzc2FnZUJvZHkpKSksIElQQzo6U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5j
aHJvbm91c01vZGUpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnBvc3RTeW5jaHJvbm91c01lc3NhZ2VG
b3JUZXN0aW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdl
Qm9keSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4NjhhZTkyZjJmYjMyOTM1MTAxMTBiYWVl
OGNjYjY3ODIzMWMzM2FkLi43N2Q4ZTRiMmRkY2VkYjUyYzU1YzQ3OWQzYTFhZmRmNWE3MmU5YmMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NCw2
ICs2NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9JbnRTaXplSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2lu
dGVySUQuaD4KQEAgLTI3Myw3ICsyNzQsOCBAQCB1c2luZyBXS0V2ZW50TW9kaWZpZXJzID0gdWlu
dDMyX3Q7CiAKIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2Jq
ZWN0OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJs
aWMgSVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGFnZT4gewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2U+IGNy
ZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
KTsKKwogICAgIHZpcnR1YWwgfldlYlBhZ2UoKTsKIAogICAgIHZvaWQgcmVpbml0aWFsaXplV2Vi
UGFnZShXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMjgzLDcgKzI4NSw3IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgV2ViUGFnZSogZnJvbUNvcmVQYWdlKFdlYkNvcmU6OlBhZ2UqKTsK
IAogICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdl
dCgpOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0K
KyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2VJRDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZS0+c2Vzc2lvbklEKCk7IH0KICAgICBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOyB9CiAKQEAgLTExNjYs
NyArMTE2OCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShU
JiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKICAgICB7CiAgICAgICAgIGNh
bmNlbEdlc3R1cmVzQmxvY2tlZE9uU3luY2hyb25vdXNSZXBsaWVzKCk7Ci0gICAgICAgIHJldHVy
biBzZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9wYWdlSUQsIFNl
Y29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJv
Y2Vzc1dpbGxTdXNwZW5kKTsKKyAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUobWVzc2Fn
ZSksIFdURk1vdmUocmVwbHkpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0
aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAgICAgfQogCiAgICAgV2Vi
Q29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKQEAgLTExOTksNyArMTIwMSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFVzZXJJc0ludGVyYWN0aW5nKGJvb2wgdXNlcklzSW50ZXJhY3RpbmcpIHsg
bV91c2VySXNJbnRlcmFjdGluZyA9IHVzZXJJc0ludGVyYWN0aW5nOyB9CiAKIHByaXZhdGU6Ci0g
ICAgV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7
CisgICAgV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYmKTsKIAogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCkBAIC0xNTg1
LDcgKzE1ODcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVNb2NrQWNjZXNzaWJpbGl0
eUVsZW1lbnRBZnRlckNvbW1pdHRpbmdMb2FkKCk7CiAKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsK
KyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5G
cmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VJbnNwZWN0b3JUYXJnZXQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKaW5kZXggZDk2YTdkN2RkYTlmMjZkMWM2NTZhMTVj
YjgzZDAzY2YyMDRhN2EzOC4uYjc3OTliNGZiYjhiNTVjYjY2YjYyMjI3YTZhNjVmM2FiMTJjYTAw
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUlu
c3BlY3RvclRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV2ViUGFnZUluc3Bl
Y3RvclRhcmdldDo6V2ViUGFnZUluc3BlY3RvclRhcmdldChXZWJQYWdlJiBwYWdlKQogCiBTdHJp
bmcgV2ViUGFnZUluc3BlY3RvclRhcmdldDo6aWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gbWFr
ZVN0cmluZygicGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZUluc3BlY3RvclRhcmdldDo6Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5l
bCYgY2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgK
aW5kZXggMzAxYjEzOWUxZDJjMTZkODlhMmFiODkzY2Y4NTU3MTA3M2Q4ZjUxYS4uNmI3ZWM1YjE2
ZjJjYTZhMDYyNjEzOGYxZmYwOTdkMGI1MjkxNTI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJp
bGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAgLTI2LDEzICsyNiwxNSBAQAogI2lmbmRlZiBXS0Fj
Y2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZV9oCiAjZGVmaW5lIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlX2gKIAorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
KwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogfQogCiBAaW50ZXJmYWNlIFdL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIDogTlNPYmplY3QgewogICAgIFdlYktpdDo6
V2ViUGFnZSogbV9wYWdlOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIGlkIG1fcGFyZW50OwogICAgIGJvb2wgbV9oYXNN
YWluRnJhbWVQbHVnaW47CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dEJhc2UubW0KaW5kZXggM2QzZjM1NTUzZTZkNGZiZWE1NTY1MzQ3ODA4ODgwNjkxMGYwNTAwOS4u
NjE2NWEwMWZlNjA4MjQ4ZmRlM2I5NjBmNzg5NDUxMzkyMzcxZGY4ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VP
YmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
S0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMTQ4LDcgKzE0OCw3IEBAIC0g
KHZvaWQpc2V0V2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlKilwYWdlCiAgICAgICAgIGF1dG8qIGZy
YW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0g
ZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCkgPyBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5E
b2N1bWVudCgpIDogZmFsc2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9wYWdlSUQgPSAwOwor
ICAgICAgICBtX3BhZ2VJRCA9IHsgfTsKICAgICAgICAgbV9oYXNNYWluRnJhbWVQbHVnaW4gPSBm
YWxzZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5k
ZXggNWNlNjljY2Y4MzM0YzlkOGQwODhjMjEyOGU0ZjM0YzZjZmFlYWRkOC4uNjE3NGIwYTNiYjBi
Mzc0YWU5ODRkM2FiMWJkOGJmMjM3M2JkNTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3Mo
KQogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpLCAwKTsKICAgICB9KTsKIAot
ICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2
NF90IG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbikg
eworICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBh
Z2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5l
ckRvbWFpbikgewogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoc2Vzc2lvbklELCBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7CiAgICAgfSk7CiAj
ZW5kaWYKQEAgLTY2NywxNiArNjY3LDE2IEBAIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OmZvY3VzZWRX
ZWJQYWdlKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KICAgICAKLVdlYlBhZ2UqIFdlYlByb2Nl
c3M6OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdAorV2ViUGFnZSogV2ViUHJvY2Vzczo6
d2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFn
ZU1hcC5nZXQocGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2
b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICAvLyBJdCBpcyBuZWNl
c3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5nIGEgd2lu
ZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNy
ZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9y
bWFsIHdheS4gCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+Pjo6QWRkUmVz
dWx0IHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKKyAgICBhdXRvIHJl
c3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKICAgICBhdXRvIG9sZFBhZ2VJ
RCA9IHBhcmFtZXRlcnMub2xkUGFnZUlEID8gcGFyYW1ldGVycy5vbGRQYWdlSUQudmFsdWUoKSA6
IHBhZ2VJRDsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKQEAgLTY5Myw3ICs2OTMsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJiYgcGFyYQogICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIAotdm9p
ZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWlu
dDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIEFTU0VSVChtX3Bh
Z2VNYXAuY29udGFpbnMocGFnZUlEKSk7CiAKQEAgLTE0NTAsNyArMTQ1MCw3IEBAIHZvaWQgV2Vi
UHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24pCiAK
ICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVp
bnQ2NF90LCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCkK
K3ZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoUGFnZUlkZW50aWZp
ZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQogewog
ICAgIGlmIChjaGFuZ2VkICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQogICAg
ICAgICB1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbjo6VmlzaWJp
bGl0eUhhc0NoYW5nZWQpOwpAQCAtMTYyNCwxMyArMTYyNCwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6
OnNlbmRQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgVVJMJiB1cmwpCiAgICAgcGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRDb2xsZWN0
UHJld2FybUluZm9ybWF0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpQcm9jZXNzV2Fy
bWluZzo6Y29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzczo6cGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vz
czo6cGFnZURpZEVudGVyV2luZG93KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3Bh
Z2VzSW5XaW5kb3dzLmFkZChwYWdlSUQpOwogICAgIG1fbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVw
VGltZXIuc3RvcCgpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVhdmVXaW5kb3co
dWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlV2lsbExlYXZlV2luZG93KFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3BhZ2VzSW5XaW5kb3dzLnJlbW92ZShwYWdl
SUQpOwogCkBAIC0xNjczLDcgKzE2NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuYWJsZVByaXZh
dGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGUpCiAgICAgaWYgKGVuYWJsZSkKICAgICAg
ICAgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsK
IAotICAgIFZlY3Rvcjx1aW50NjRfdD4gcGFnZUlEczsKKyAgICBWZWN0b3I8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRHM7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwKSB7CiAgICAgICAg
IGlmIChwYWdlLnZhbHVlKQogICAgICAgICAgICAgcGFnZUlEcy5hcHBlbmQocGFnZS5rZXkpOwpA
QCAtMTg1Myw3ICsxODUzLDcgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2Vi
UlRDTmV0d29yaygpCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlBy
b2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1
aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKK3ZvaWQgV2Vi
UHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
KHVpbnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQog
ewogICAgIC8vIFdlIGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFu
ZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29y
ayBQcm9jZXNzCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b24uIFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBD
OjpDb25uZWN0aW9uIGFzIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5k
ZXggNTI1ZGYxODNmMjI2MTVlNGQ4ZTg5OWY0ZTg5ZWY0ODVhN2JhNzgxYy4uMTg1N2NlYTBlZDlk
OWZhOGMyMTA2OTZmMDk4NzY3OGJiYTQyOWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaWYg
UExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgpAQCAt
MTQ1LDkgKzE0Niw5IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyog
d2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9u
LmdldCgpOyB9CiAKLSAgICBXZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7
Ci0gICAgdm9pZCBjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQsIHVp
bnQ2NF90IHBhZ2VJRCk7CisgICAgV2ViUGFnZSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllcikgY29uc3Q7CisgICAgdm9pZCBjcmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHZvaWQgcmVtb3ZlV2ViUGFn
ZShQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIFdlYlBhZ2Uq
IGZvY3VzZWRXZWJQYWdlKCkgY29uc3Q7CiAKICAgICBJbmplY3RlZEJ1bmRsZSogaW5qZWN0ZWRC
dW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgpOyB9CkBAIC0xOTks
OCArMjAwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwogCi0gICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5k
b3codWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0
X3QgcGFnZUlEKTsKKyAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyhXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7CisgICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyKTsKIAogICAgIHZvaWQgbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXJGaXJlZCgp
OwogCkBAIC0yMTksNyArMjIwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBY3RpdmVQ
YWdlcygpOwogICAgIHZvaWQgZ2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHBhZ2VBY3Rp
dml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2NF90IHBhZ2VJRCwgT3B0aW9uU2V0PFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rp
dml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKIAogICAgIHZvaWQgc2V0SGlkZGVuUGFnZURPTVRp
bWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQoaW50IG1pbGxpc2Vjb25kcyk7CiAKQEAgLTM1OSw3
ICszNjAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
Ci0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3ModWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNv
bnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNl
c3Npb25JRCk7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAjZW5k
aWYKIApAQCAtNDYwLDcgKzQ2MSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViQ29ubmVj
dGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90
LCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKICAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+PiBtX3BhZ2VHcm91cE1hcDsKICAgICBSZWZQ
dHI8SW5qZWN0ZWRCdW5kbGU+IG1faW5qZWN0ZWRCdW5kbGU7CiAKQEAgLTUxNCw3ICs1MTUsNyBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3Byb2Nlc3NJc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAK
LSAgICBIYXNoU2V0PHVpbnQ2NF90PiBtX3BhZ2VzSW5XaW5kb3dzOworICAgIEhhc2hTZXQ8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG1fcGFnZXNJbldpbmRvd3M7CiAgICAgV2ViQ29yZTo6VGlt
ZXIgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lcjsKIAogICAgIFJlZlB0cjxXZWJDb3Jl
OjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4gbV9hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXgg
YjM5YjM4YzE4M2M2NjMyN2Q0MmU2ZWRmZjE3NmJiYTFjOWNhYmIxMi4uNTdhMjY1NjM0NWZiZTlk
MzMwZGY2NTVlMzUyYzM5YmVhNTJiNDVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4g
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMoc3RydWN0IFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgcGFyYW1l
dGVycykKIAogICAgICMgQ3JlYXRlIGEgbmV3IHBhZ2UuCi0gICAgQ3JlYXRlV2ViUGFnZSh1aW50
NjRfdCBuZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
cGFnZUNyZWF0aW9uUGFyYW1ldGVycykKKyAgICBDcmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIG5ld1BhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyBwYWdlQ3JlYXRpb25QYXJhbWV0ZXJzKQogCiAgICAgUHJld2FybUdsb2JhbGx5KCk7CiAg
ICAgUHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViQ29yZTo6UHJld2FybUlu
Zm9ybWF0aW9uIHByZXdhcm1JbmZvcm1hdGlvbikKQEAgLTExMSw3ICsxMTEsNyBAQCBtZXNzYWdl
cyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3
b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBzdHJ1Y3Qg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFs
U2Vzc2lvbklEKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Np
b25JRCBpbml0aWFsU2Vzc2lvbklEKQogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMo
KQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9y
YWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAwYmQ5MGFmOTE4Nzg2NDQxMDQ1M2VhMWJhZjFl
Y2Y2MDIzM2NiMDk2Li4wZTk0Mjk2MDQ5ZTZjMDg3YWI2ZThmMGM1ZWJmZTRjMWEyZTJjMDc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZUFyZWFNYXAuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlz
cGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGMK
IAogICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFy
ZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIElEcwogICAgIC8vIHNvIHdlIGNhbiBnZXQgdGhlIHJp
Z2h0IHBhZ2UgaGVyZS4KLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgV2ViUGFnZSogd2ViUGFn
ZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8
UGFnZUlkZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1lc3BhY2VJRCkpOwogICAgIGlmICghd2Vi
UGFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggYjM5
MDgxZTZlM2MxYmJhYjkyZGEyMWYyY2E5ZThhMTlkYjRmYmYxNS4uODA5NjIzNDI0NGZiOGVlMzU3
MWQyMDc4OTQyMmI4MjlkY2M5NGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDAs
MTIgKzQwLDEyIEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpCitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJ
bXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlSWRlbnRpZmllciBpZGVudGlm
aWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
U3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51
bGxwdHIsIHF1b3RhSW5CeXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VO
YW1lc3BhY2VJbXBsKFN0b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLnRvVUludDY0KCks
IG51bGxwdHIsIHF1b3RhSW5CeXRlcykpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+
IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3Jh
Z2VOYW1lc3BhY2VJbXBsPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcykKIHsKICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
aWRlbnRpZmllciwgcXVvdGFJbkJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IDY3
NTdlM2I4MTg4ODZjNGZmNTdiYzNlNzlmNGMxNTgwMGY3NWIxYmMuLjJlNGE0MjI2MGUwNjQ4OGVl
ZmM4OGY3NTk2ZDEyYjQ0MDNlNzNmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMjUsNiAr
MjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZp
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdl
QXJlYS5oPgpAQCAtMzksOCArNDAsOCBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBTdG9yYWdl
TmFtZXNwYWNlSW1wbCA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMp
OwotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExv
Y2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUlu
Qnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90
YUluQnl0ZXMpOworICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVw
aGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdW5z
aWduZWQgcXVvdGFJbkJ5dGVzKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBjcmVhdGVMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWdu
ZWQgcXVvdGFJbkJ5dGVzKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBj
cmVhdGVUcmFuc2llbnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUlu
Qnl0ZXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmluZGV4IGZjNjU5ODYzMjUyYmZlNGZhOGMxZTEyOWI5
YWU4ZTgzMGZhZjc4OGEuLjc2NWVmZjQwNGIwOWVkMDBjY2UxZGQ5ZWE3YjU2MDU2MjljYjVkOWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Np
b25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW0KICAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElk
KTsKIAogICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0VXBQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1f
Y29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCkBAIC0yOTEsNyArMjkxLDcgQEAg
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2Vy
KCkKICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CiAKICAgICBtX3BhZ2UtPnZp
ZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFn
ZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSk7
CiB9CiAKIHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNvbnRleHRJZEZvck1lZGlh
RWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCkBAIC0zMTgs
MjcgKzMxOCwyNyBAQCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpjdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1lbgogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBk
dXJhdGlvbikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50VGltZUNoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDdXJy
ZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwg
YW5jaG9yVGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1ZmZlcmVk
VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQogewot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpC
dWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OkJ1ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5
YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBsYXliYWNrU3RhcnRlZFRpbWUpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY29udGV4dElkLCBw
bGF5YmFja1N0YXJ0ZWRUaW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
cmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxh
eWJhY2tSYXRlKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0SWQsIGlzUGxheWluZywgcGxheWJhY2tS
YXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5aW5n
LCBwbGF5YmFja1JhdGUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVr
YWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpUaW1l
UmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxpdmVV
cGRhdGVJbnRlcnZhbCkKQEAgLTM0OSwzNyArMzQ5LDM3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3Qg
V2ViCiAgICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2VzLnJhbmdlcygpLmVuZChpKS50b0Rv
dWJsZSgpOwogICAgICAgICByYW5nZXNWZWN0b3IuYXBwZW5kKHsgc3RhcnQsIGVuZCB9KTsKICAg
ICB9Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFuZ2Vz
VmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUo
cmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSk7CiB9
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlGYXN0UmV2ZXJzZUNo
YW5nZWQoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDYW5QbGF5RmFzdFJl
dmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29u
dGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50
NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
Y29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1
ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVj
dGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3Rv
cjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
CiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9u
cywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4
dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZp
Y2VOYW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQoY29udGV4dElkLCBl
bmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxvY2FsaXplZERldmlj
ZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFu
Z2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdldFR5cGUp
LCBsb2NhbGl6ZWREZXZpY2VOYW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIHVp
bnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQo
Y29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFT
ZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJs
ZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4
dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vbCBkaXNhYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNWQ2MTEwYjc5MDlmMzRjY2UzZTc2
MmJmZDM4ZDJiMmY3MjFkNTIxNi4uNzA2NjM5NzczNzliNWIxYmY1OTdjNWQ4ZGViMmFkNDZjM2Y2
YjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVs
bHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Zp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxW
aWRlb0VsZW1lbgogICAgICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+c2V0
Um9vdExheWVyKHZpZGVvTGF5ZXIpOwogICAgIH0KIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29u
dGV4dElkLCBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZp
ZGVvUmVjdCwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3Jl
ZW5Nb2RlKCksIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6U2V0dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRleHRJZCwgaW50ZXJmYWNlLT5sYXllckhv
c3RpbmdDb250ZXh0KCktPmNvbnRleHRJRCgpLCB2aWRlb1JlY3QsIG1fcGFnZS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSwgaW50ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxvd3NQaWN0dXJlSW5Q
aWN0dXJlLCBzdGFuZGJ5KSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhp
dFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
JiB2aWRlb0VsZW1lbnQpCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxW
aWQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50ZXJmYWNlLnNldElzQW5pbWF0aW5nKHRydWUp
OwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGlubGluZVZpZGVvRnJhbWUodmlkZW9FbGVtZW50
KSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGlubGluZVZp
ZGVvRnJhbWUodmlkZW9FbGVtZW50KSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhU
TUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCkBAIC0zMjQsNyArMzI0LDcgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0
aG91dEFuaW1hdGlvbihXZWJDb3JlOjoKIAogICAgIGludGVyZmFjZS5zZXRUYXJnZXRJc0Z1bGxz
Y3JlZW4oZmFsc2UpOwogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShjb250
ZXh0SWQsIHRhcmdldE1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW5XaXRo
b3V0QW5pbWF0aW9uVG9Nb2RlKGNvbnRleHRJZCwgdGFyZ2V0TW9kZSkpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0odmlkZW9FbGVtZW50KTsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0TW9kZSk7
CkBAIC0zMzYsMTMgKzMzNiwxMyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRW
aWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6Ogogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpoYXNWaWRlb0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBi
b29sIGhhc1ZpZGVvKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlbyhjb250ZXh0
SWQsIGhhc1ZpZGVvKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlbyhjb250ZXh0
SWQsIGhhc1ZpZGVvKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6dmlkZW9E
aW1lbnNpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IEZsb2F0U2l6ZSYgdmlk
ZW9EaW1lbnNpb25zKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMo
Y29udGV4dElkLCB2aWRlb0RpbWVuc2lvbnMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZp
ZGVvRGltZW5zaW9ucyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucykpOwogfQogCiAjcHJhZ21h
IG1hcmsgTWVzc2FnZXMgZnJvbSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6CkBAIC0zNjQs
NyArMzY0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiAKICAgICBhdXRvJiBtb2RlbCA9IGVuc3VyZU1v
ZGVsKGNvbnRleHRJZCk7CiAgICAgSW50UmVjdCBpbmxpbmVSZWN0ID0gaW5saW5lVmlkZW9GcmFt
ZSgqbW9kZWwudmlkZW9FbGVtZW50KCkpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRJbmxpbmVSZWN0KGNvbnRleHRJZCwgaW5saW5l
UmVjdCwgaW5saW5lUmVjdCAhPSBJbnRSZWN0KDAsIDAsIDAsIDApKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OlNldElubGluZVJlY3QoY29udGV4dElkLCBpbmxpbmVSZWN0LCBpbmxpbmVSZWN0ICE9IElu
dFJlY3QoMCwgMCwgMCwgMCkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpy
ZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQpAQCAtMzc4LDcgKzM3
OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29udGVudExh
eWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5
ZXIodmlkZW9MYXllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBj
b250ZXh0SWRdICgpIG11dGFibGUgewogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFn
ZSkKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCB0cnVlKSwg
cHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVv
Q29udGVudExheWVyKGNvbnRleHRJZCwgdHJ1ZSkpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0K
QEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJldHVyblZp
ZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICAgICAgICAgIG1vZGVsLT5z
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwsIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAg
ICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgZmFsc2UpLCBwcm90ZWN0ZWRUaGlz
LT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRl
bnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfSk7CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250
ZXh0SWRdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRl
ckZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0pOwogI2Vsc2UKICAg
ICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCkt
PnJvb3RMYXllcigpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBtb2RlbC0+
c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewogICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgaWYg
KHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRl
eHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRl
ckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogI2VuZGlmCkBA
IC00NDIsNyArNDQyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1
bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlk
ZW9FbGVtZW50ID0gV1RGTW92ZSh2aWRlb0VsZW1lbnQpLCBjb250ZXh0SWRdIHsKICAgICAgICAg
dmlkZW9FbGVtZW50LT53aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgaWYgKHByb3RlY3Rl
ZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1bGxz
Y3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwog
ICAgIH0pOwogfQogCkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNl
XSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29u
dGV4dElkKSk7CiAgICAgfSk7CiAjZWxzZQogICAgIG1vZGVsLT53YWl0Rm9yUHJlcGFyZWRGb3JJ
bmxpbmVUaGVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElkLCBp
bnRlcmZhY2UsIG1vZGVsXSAoKSBtdXRhYmxlIHsKQEAgLTQ5OCw3ICs0OTgsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29u
dGV4dChudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJv
dGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBG
dWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0pOwpAQCAtNTU1LDcgKzU1NSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCwg
Ym9vCiAKICAgICBpZiAoIWlzUGFnZVZpc2libGUpCiAgICAgICAgIG1vZGVsLnZpZGVvRWxlbWVu
dCgpLT5zY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9SZXR1cm5U
b0lubGluZShjb250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxl
bWVudCgpKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoY29u
dGV4dElkLCB0cnVlLCBpbmxpbmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSkpKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0Um91dGVTaGFyaW5nUG9s
aWN5QW5kQ29udGV4dFVJRCh1aW50NjRfdCBjb250ZXh0SWQsIE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpSZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRDo6QXN5
bmNSZXBseSYmIHJlcGx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9X
ZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMmUxOTBiMDM1ZjcyODBiMWZiZWRiM2FmMDAxZTY5NThj
NDIwMjExNi4uYjljZTc5ZDI3NGM0MTI3YmE3OGY1NGE1MmY2MzdlOTVlODUxZjZhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBA
IC01MzksNyArNTM5LDcgQEAgc3RhdGljIE5TVVJMICpvcmlnaW4oV2ViUGFnZSYgcGFnZSkKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PE5TU3Ry
aW5nICo+PiBhY3RpdmVQYWdlc09yaWdpbnMoY29uc3QgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PFdlYlBhZ2U+PiYgcGFnZU1hcCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAq
Pj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0
cjxXZWJQYWdlPj4mIHBhZ2VNYXApCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PE5T
U3RyaW5nICo+PiBhY3RpdmVPcmlnaW5zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBv
cnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2Vi
Q29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA5ODcyYzMxYmE1
ODRkNzFkYTE1OTExYjQ1OGY1MTExZDFhNzkxYzFmLi43OTYwMjRjOGNlNDlhNWFjZmE4YjFmYjY1
ODRmYWI4MzA1OTRjZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVT
dXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0xMTEs
NyArMTExLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGUKICAgICBSZXNvdXJjZUhhbmRsZTo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShmcmFtZUxvYWRlci5uZXR3b3JraW5nQ29udGV4dCgp
LCByZXF1ZXN0LCBvcHRpb25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlh
bHM6Ok9taXQgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6VXNlLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogfQogCi12b2lkIFdl
YlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3QgLyp3ZWJQ
YWdlSUQqLykKK3ZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwYWdlTG9hZENvbXBsZXRl
ZChQYWdlSWRlbnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXgg
NTViMzY5NzUzMDY1ODIxNGJjOTc5YTg3OTJiNjYwNzI2ZDgyOTZkZC4uNWY2MmY3NzdhYTc5YjAw
NzU1NzNlNWFmY2NjNTZkMmU2MzU1MmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZFJlc291cmNlKFdlYkNvcmU6
OkZyYW1lJiwgV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmKSBmaW5h
bDsKICAgICB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXImLCB1bnNpZ25lZCBsb25nLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJD
b3JlOjpDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMm
LCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mKSBmaW5hbDsKLSAgICB2
b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgZmluYWw7CisgICAgdm9p
ZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgZmluYWw7CiAKICAg
ICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQg
c2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggMTM4NTU4M2FmMjlkMTc0NDEzZDUwNTc5NWFm
YTk1YjVjODg5NjZiYi4uYjE0MDNkMDU2MzkzYjM5N2QwMTdkMDkzZGU1ZmUwNGNkY2NhOGNjZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIGZpbmFsOwogICAgIGJvb2wgaGFzV2ViVmll
dygpIGNvbnN0IGZpbmFsOyAvLyBtYWlubHkgZm9yIGFzc2VydGlvbnMKIAotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQoKSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQo
KSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3Zjg2OWYx
ZGRjYjlhMTkwODBhYWIyMDA1ZjliZjczMmFlODdkZGRmLi43ZWJhM2E5OGFhM2RhOTA2NmRmYjdj
NWI5MjJkMTA5MTBiMTQyMTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjA5
LDcgKzIwOSw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudChX
ZWJGcmFtZSAqd2ViRnJhbWUpCiB7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJGcmFtZUxv
YWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJG
cmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370619</attachid>
            <date>2019-05-24 19:22:26 -0700</date>
            <delta_ts>2019-05-24 19:51:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198206-20190524192225.patch</filename>
            <type>text/plain</type>
            <size>508345</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyNjVhYmRkMGVkYTI2ZTdmMWEyZDlk
NGZjNGVmMTJhYjVhM2M5OTguLjlmZGY2NjZiN2ZkMWY2NTkzZDI4M2E2NmFhMjg3YzQ0NDdkY2Uz
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZv
ciBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvT2JqZWN0SWRlbnRpZmllci5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KToKKwog
MjAxOS0wNS0yMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAg
ICAgIFtDTWFrZV0gVXNlIHRhcmdldCBvcmllbnRlZCBkZXNpZ24gZm9yIGJtYWxsb2MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxNWFiZmZhZjY1ZDkwM2MxOWNmNDk0OWE2Nzg1NDg0NDRkOGJmNDk0Li5jZTE2ZjA0
MmFjZDMxYjgyZmVmOWYzYjI3OTEzYzI1ZDIxYzA4MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZvciBwYWdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MjA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLyo6CisKIDIw
MTktMDUtMjMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE92ZXJsYXk6IHJ1bGVycyBzaG91bGQgc3dpdGNoIHNpZGVzIGlmIHRoZXkg
aW50ZXJzZWN0IHRoZSBoaWdobGlnaHRlZCBub2RlKHMpIHNvIHRoZXkgZG9uJ3Qgb2JzdHJ1Y3Qg
YW55IGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZjZjI0MDAwYWQ3NjMwZWM4ZWRkMjdkNGRlZDY5Y2Vh
NzVmYzM0ZS4uM2U2YjcwNWE4ZDI5MDMzMmE1ZWM1NTRjZjE1NzBjY2QxNzk0OTUwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBh
Z2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgy
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdC8qOgorCiAyMDE5LTA1LTIzICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255
LmNvbT4KIAogICAgICAgICBTb2NrZXQtYmFzZWQgUldJIHNob3VsZCBiZSBhYmxlIHRvIGluc3Bl
Y3QgYSBKU0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMWRkNTRlYWZhMzdmZDZiZDYx
NzY3OTI4N2EzODViYmE0MDk0NjU4NS4uOGFjYzQ2NjMyNDRkMjk0NjA4MDk0N2ZhZWU2NDQyYTE0
ZWZjYjg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0y
NCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9u
Z2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VMb2Fk
Q29tcGxldGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaDoKKwogMjAxOS0wNS0xNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgogCiAgICAgICAgIFtDTWFrZV0gVXNlIGJ1aWx0aW4gRmluZElDVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IGY5NzAwZjMxZmNkZjg3YTFiMTJmMDFjMWUyYTc0ZjUwNjc4NzFm
YWIuLjU2ZWU4YzNhYTkwNjczZmMwNzk2YTNkYTRjZDMyYzhmMTE0Nzc1NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlk
ZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEIGNvbnN0KToKKwogMjAxOS0wNS0yMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBJT1NN
QUMgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwN2EzYzA1
NTBhZTIzMjNjMWMxOWJiMjk1MzM5ZmQ4Li5iM2JjYWRkOWRkMTk1YWIzMGIxOGNmMWRhZDMzNTIz
MTE5MjUyNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
MTIyLDYgKzEyMywxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
T2JqZWN0SWRlbnRpZmllcjxUPj4gewogICAgIHR5cGVkZWYgT2JqZWN0SWRlbnRpZmllckhhc2g8
VD4gSGFzaDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBPYmplY3RJZGVudGlmaWVyPFQ+JiBpZGVudGlmaWVy
KQoreworICAgIHRzIDw8IGlkZW50aWZpZXIudG9VSW50NjQoKTsKKyAgICByZXR1cm4gdHM7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok9iamVjdElkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQppbmRleCBjMmM3YzIyNDllM2YxZWMwNzE2NGE5MzA5ODY1YjU3NTgyMzI4
OTEzLi40NDgyZDVkNDc1MDM5YmEwNmQ4OGJhOWUxNzNiMmMzZGY5NzM4ODM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKQEAgLTc3OSw2ICs3NzksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCiAgICAgcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5oCiAgICAgcGFnZS9QYWdlR3JvdXAuaAorICAgIHBhZ2UvUGFnZUlkZW50aWZp
ZXIuaAogICAgIHBhZ2UvUGFnZU92ZXJsYXkuaAogICAgIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9s
bGVyLmgKICAgICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTZhMWY1ZjFkNzE5YjRh
ZjYzZmQ5ZGRhN2UxYWZkNzQ1YTZkZTkwNy4uZWQ2MThmMDdiM2Q0OGMzNjllMDdhMzM1NzNkMzBh
YWRmZGJiMDIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTIxNyw2ICsxMjE3LDcgQEAKIAkJNDY4MkQyMDAxRjc5NzgzMDAw
Qzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERF
MUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBK
U0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3Rv
bS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
QjY1MEREMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0
IC8qIFBhZ2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2lu
ZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5
NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBB
N0QyREQgLyogQWJzdHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5
NTE5NzIwN0Q2MzQwMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAw
QTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzU5OSw2ICs3NjAwLDcgQEAKIAkJNDY4MzQ0
REQxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERPTVJlY3RMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUx
RURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdp
bmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRv
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0Qy
REQgLyogUmVtb3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4
RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDE5Nyw2ICsyMDE5OSw3IEBACiAJCQkJOTMwMkIwQkUwRDc5Rjgy
QzAwQzdFRTgzIC8qIFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5
OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwICovLAogCQkJCTdBNjc0QkRBMEY5RUJGNEUw
MDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLywKKwkJCQk0NkI2NTBEQjIyOTYy
NjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRDVDOUNGQjE5QzdCNTJF
MDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5Q0ZDMTlDN0I1MkUwMEIz
QzVDMSAvKiBQYWdlT3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAv
KiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovLApAQCAtMzA3NTUsNiArMzA3NTgsNyBAQAog
CQkJCTkzMDJCMEJGMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0M0MUZBQTQ0QkMwMDM3RDFFNiAvKiBQYWdlSGVh
cEFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyog
UGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Q0IwNTI0MUZCNTFGMzMwMDA4
OUI5NyAvKiBQYWdlTmV0d29ya0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwMDE5
QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUM5
RDAyMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IDc2OTEyY2FlYjhhNjQwZWQxMzNhYzRh
YWY0ZmE3ZDVjMjg5N2FmYTIuLjBlN2Q1NDIwNWM4MzU2N2FhNjVlMzYwZDQ3YWMwNTMzYTMxNTBl
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgUmVmPEFYSXNv
bGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQodWludDY0X3QgcGFnZUlELCBBWE9iamVj
dENhY2hlJiBjYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRp
YWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYg
Y2FjaGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8g
dHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0eVRyZWUoKTsKQEAgLTg3
LDcgKzg3LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZv
cklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogICAgIHJldHVybiB0cmVlSURDYWNoZSgpLmdl
dCh0cmVlSUQpOwogfQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJ
c29sYXRlZFRyZWU6OmNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIApAQCAtOTcsNyArOTcsNyBA
QCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVlRm9yUGFnZUlE
KHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gbmV3VHJlZTsKIH0KIAotUmVmUHRyPEFYSXNv
bGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQp
CitSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihzX2NhY2hlTG9j
ayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGMwNzVkNWIwMTY3ODEyNjBjNzYwMTliNTBl
MjZmNjA2MDE5ZGUwM2YuLjZlZWMyNjQ1MTk4NGY4ZWJhODg4NGY1OWM1MzM3Y2U1MjZjZDlhNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZU5vZGUu
aCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgpAQCAtNDMsOSArNDQsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBWElzb2xh
dGVkVHJlZT4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+QVhJc29sYXRlZFRyZWUoKTsKIAotICAg
IHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQodWludDY0X3Qg
cGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBp
bml0aWFsaXplUGFnZVRyZWVGb3JJRCh1aW50NjRfdCBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9y
UGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4g
Y3JlYXRlVHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlk
ZW50aWZpZXIsIEFYT2JqZWN0Q2FjaGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJ
c29sYXRlZFRyZWVJRCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZFRy
ZWVOb2RlPiByb290Tm9kZSgpOwpAQCAtNzAsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEFYSXNv
bGF0ZWRUcmVlKCk7CiAKICAgICBzdGF0aWMgSGFzaE1hcDxBWElzb2xhdGVkVHJlZUlELCBSZWY8
QVhJc29sYXRlZFRyZWU+PiYgdHJlZUlEQ2FjaGUoKTsKLSAgICBzdGF0aWMgSGFzaE1hcDx1aW50
NjRfdCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKTsKKyAgICBzdGF0aWMg
SGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2Fj
aGUoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNzIG9uIEFYIHRocmVhZCByZXF1ZXN0aW5nIGRhdGEu
CiAgICAgSGFzaE1hcDxBWElELCBSZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4gbV9yZWFkZXJUaHJl
YWROb2RlTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTcwYTlmN2ZlNTUxYWI1YjU1
NDY0NmZjMzY3N2QxOWU5MjFlMmVjZS4uZDM1NDE2NzNlYThkZDhlM2I3YzZiZTQ2MmM2MTU4NDVj
NDFmN2U1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03NzY2LDcgKzc3NjYsNyBAQCBM
b2dnZXImIERvY3VtZW50Ojpsb2dnZXIoKQogICAgIHJldHVybiAqbV9sb2dnZXI7CiB9CiAgICAg
Ci1PcHRpb25hbDx1aW50NjRfdD4gRG9jdW1lbnQ6OnBhZ2VJRCgpIGNvbnN0CitPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gRG9jdW1lbnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBjMDc2NTU2NTA2YTVjZjk5ODlkMzhjNDc4YmYzM2NmNzg2ZmFmZjA1Li5hMjQ4MWRmOGEz
NjY5YzIwNDE2NTE2MjhmOTg3YzgyM2Y1NzNjNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRlICJNdXRh
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgorI2luY2x1
ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1
ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBAIC02MzUsNyArNjM2
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0
Q2FjaGUoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQVhPYmplY3RDYWNoZSgpOwogCi0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQoKSBjb25zdDsKICAgICAvLyB0byBnZXQgdmlzdWFsbHkgb3JkZXJlZCBoZWJy
ZXcgYW5kIGFyYWJpYyBwYWdlcyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFsbHlPcmRlcmVkKCk7
CiAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBtX3Zpc3VhbGx5T3Jk
ZXJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBiMWJlZDhmMDMyZjlj
ZDI3ODE5M2VlZGNmZmM3Y2YxNTMxODk2YjI2Li4zM2UyNzg2MzgzNjU2OTBkMTZkNzJiM2Q3YjVi
ZTBiZTIwODViNmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IHNob3Vs
ZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpOwogCiAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3Vt
ZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5w
YWdlSUQoKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eSBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvYwogdm9p
ZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZy
YW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFt
ZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQo
KTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29u
c3QgRG9jdW1lbnQmKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJp
bmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9u
KCkpIHsKICAgICAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwpAQCAtMTQ1LDcgKzE0
NSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFy
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1CiBTdHJpbmcgQ29va2llSmFyOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1l
SUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQg
PSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAg
U3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBVUkwmIHUKIGJvb2wgQ29va2llSmFyOjpnZXRSYXdDb29raWVzKGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBj
b29raWVzKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAg
IGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBw
YWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29va2llSmFyLmgKaW5kZXggMGRiMDdjNmQxMmU4ZDliZGFmYzNjMGFiYTZlZTcxYTg5YmMxOTk0
Ny4uMjgxZjg0YzQ5MDA1MjY3ZWEwNTRkNTFkNzY4YTllYjczMmNiYzIzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db29raWVKYXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNTgsNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0cmluZyk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgRG9jdW1lbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIHN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
UEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgdmlydHVhbCBz
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmLCBjb25z
dCBVUkwmLCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCA0ZjBiYjg2ZGRkNTA5OWUzMTFkODlhNDliZTNhM2JlNDA3N2Y1ZTViLi4xZjdhMjlj
NGIzMDFhMzY1ODIyZTQyMzNiNDE1ZGQxYzAwMTkxMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRl
ckNsaWVudCB7CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQog
CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQog
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9v
bCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBtYWlubHkgZm9y
IGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggZWMzOTEyN2ExYWQ2YzI1ZTBkMzQ2YmU3YTQ2OGNiNmVhOThmM2ZjOS4uMDc0ODc2MTE4ZGM2
OTFhYTdjOGFkYTk3Yjc5NzEzNzMzYTI4YTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25lLmgiCiAjaW5jbHVkZSAiTGlua0lj
b24uaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAg
LTEyNiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2Vu
dGF0aW9uKERvY3VtZW50TG9hZGVyKikgPSAwOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlEKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmlu
ZGV4IDhhODIzODFmMDE4MTY1ZTY1M2UzYzRiMjU0ZTU2OTdiNjNjMDlmNzAuLjQ1ZmViNjM1Zjcw
YzM1Yzk5YzcxNmQzOTE0MTJhNWZkMmQxZGVkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkZldGNoT3B0aW9ucy5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMu
aCIKICNpbmNsdWRlICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIgpAQCAtNTcsNyArNTgsNyBA
QCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBMb2FkZXJTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRSZXNvdXJjZShGcmFtZSYsIENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNlTG9hZGVyJiwgYm9vbCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDc3NDUwMDFlNzhh
Yzk3YmUwMjRiMjNkNDExMGVjNGZkMjkwYjdkM2IuLmYyNmE5YWFmMmZkNzk3NGNkM2U3MWM4NTlh
YjQzZmVlMjBmODAzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlv
bi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmF2aWdhdGlvbkFj
dGlvbjo6UmVxdWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
IDogbV91cmwgeyBVUkwgeyBkb2N1bWVudC51cmwoKSB9IH0KICAgICAsIG1fb3JpZ2luIHsgbWFr
ZVJlZlB0cihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX3BhZ2VJREFuZEZy
YW1lSURQYWlyIHsgZG9jdW1lbnQuZnJhbWUoKSA/IHN0ZDo6bWFrZV9wYWlyKGRvY3VtZW50LmZy
YW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpLnZhbHVlT3IoMCksIGRvY3VtZW50LmZy
YW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKDApKSA6IHN0ZDo6bWFr
ZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9wYWdlSURBbmRGcmFt
ZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFt
ZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsg
fSksIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9y
KDApKSA6IHN0ZDo6bWFrZV9wYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4oeyB9LCAwKSB9
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDFh
NDRmOTFkMzY4MWI4MTQwMGU3MTEyN2VhNTI3MmM3NWJlNGJlMDcuLmVkN2QwOWNmMjg5MmJiODRk
ZjJmMjQ5YjA1MTQ3NWQ4ZGM3MzY3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5
b3V0UG9pbnQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTYzLDE0ICs2NCwxNCBAQCBwdWJsaWM6CiAgICAgTmF2
aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYpOwogICAgIE5hdmlnYXRpb25BY3Rpb24m
IG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwogCi0gICAgdXNpbmcgUGFnZUlEQW5kRnJh
bWVJRFBhaXIgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyogcGFnZUlEICovLCB1aW50NjRfdCAvKiBm
cmFtZUlEICovPjsKKyAgICB1c2luZyBQYWdlSURBbmRGcmFtZUlEUGFpciA9IHN0ZDo6cGFpcjxQ
YWdlSWRlbnRpZmllciwgdWludDY0X3QgLyogZnJhbWVJRCAqLz47CiAgICAgY2xhc3MgUmVxdWVz
dGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlcXVlc3Rlcihjb25zdCBEb2N1bWVudCYpOwog
CiAgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAg
ICAgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
Km1fb3JpZ2luOyB9Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KKyAgICAgICAgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5maXJzdDsgfQogICAg
ICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlE
UGFpci5zZWNvbmQ7IH0KICAgICBwcml2YXRlOgogICAgICAgICBVUkwgbV91cmw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRleCAxNGJjMmYz
YmVlZmEyYTYwMzJhMjZjN2Q2YWQyZmNmZDg3YjdjYjJiLi5mZmFkYTFjNDViZTQ2NmI3ZmFkY2Zk
MDY5MTAxMzI1ZWNhMzlkNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVj
dG8KICAgICBtX25vdGlmaWNhdGlvbkNhbGxiYWNrID0gV1RGTW92ZShub3RpZmljYXRpb25DYWxs
YmFjayk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFdURjo6RnVuY3Rpb248
dm9pZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKCFtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayk7CiAg
ICAgbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjps
b2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0IERvYwogfQog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkK
K3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERv
Y3VtZW50JiBvcGVuZXJEb2N1bWVudCkKIHsKICAgICBhdXRvIG9wZW5lclVybCA9IG9wZW5lckRv
Y3VtZW50LnVybCgpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbiB7IG9wZW5l
clVybCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApp
bmRleCBjNDY2MWIwNDc2MDczMjBmZDg3ZmJiM2RiYmI4MDNlNGQxMWQ0YTQxLi5kZTFjOTRhNzJj
ZDQ3MWNjZjdmODJiNWEyY2JiOTE3N2RiNTY4MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgorI2luY2x1ZGUgIlBhZ2VJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTczLDcgKzc0LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVS
TCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBkYXRlZENhbGxi
YWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
ckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9u
Q2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJTb2NrZXRMb2Fk
aW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1l
KT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dTdWJyZXNvdXJjZUxvYWRpbmdO
b3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiYm
KTsKQEAgLTk0LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Ms
IFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KTsK
ICNlbmRpZgogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3RyYWJs
ZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXA7
CiAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+IG1f
bm90aWZpY2F0aW9uQ2FsbGJhY2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1aW50NjRfdCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CisgICAgRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQYWdl
SWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmlj
YXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBt
X2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2
b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlmaWNh
dGlvbkNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjM1MzkwYzhj
M2FlMjc5ZjlkMzY5NWZhNmRlMmU3Zjc5NzY5YzdlZi4uNTJiMmU5NGI3ZWVlMWQxYzU1YTg4NGZk
ZDdiMDRlZGNmZDMyMDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC00ODYs
OCArNDg2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEljb24+IGNyZWF0ZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmlsZW5hbWVzICovKSA9IDA7CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZpcnR1YWwgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdp
c3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8s
IHVpbnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1
YkZyYW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1
aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYm
IC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWlu
Ki8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAv
KnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRpZmllciwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOjpObyk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCmluZGV4IDE1
NmM5Y2QyMDVkNGNmMzI0ZDY4MWY5NzYxMzJjMTZjZTJmMTc0ZDQuLjBkN2IzZGJmNzJmODFlNGZk
NjJhNzNmZWQyNTgxY2VhZWUxNjdiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxG
cmFtZUlkZW50aWZpZXIuaApAQCAtMjUsMTMgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBGcmFtZSBpZGVudGlmaWVyIHRoYXQgaXMgdW5pcXVl
IGFjcm9zcyBhbGwgV2ViQ29udGVudCBwcm9jZXNzZXMuCiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVu
dGlmaWVyIHsKLSAgICB1aW50NjRfdCBwYWdlSUQ7CisgICAgUGFnZUlkZW50aWZpZXIgcGFnZUlE
OwogICAgIHVpbnQ2NF90IGZyYW1lSUQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC00Nyw3ICs0OCw3IEBAIHZvaWQgR2xvYmFs
RnJhbWVJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+CiBPcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IEdsb2JhbEZy
YW1lSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwog
ICAgIGRlY29kZXIgPj4gcGFnZUlEOwogICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0ZDVmOGQyOTc1NjNlZTAyOWM0MTNlOWNkYTc0OTRjNWZhNGQ4YWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBhZ2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBQYWdlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDExNTkw
NTBjZDMyYzkzY2QzYjExY2YxMzIyNTY5ZDY0MWU1MGQ2MzYuLjRlNmI2YWNlMzE4MjljM2ViN2Nh
YWM0NzAyMjMzOGY1MmY5NTFkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCisj
aW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1lU2l0ZUluZm8uaCIKICNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzgsNyAr
MzksNyBAQCBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkgewogICAgIFNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm87CiAgICAgVVJMIHVybDsKICAgICBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMgeyBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm8gfTsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTcxLDgg
KzcyLDExIEBAIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiBDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eTo6ZGVjb2RlKERlCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZnJhbWVJRCkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGFn
ZUlEKSkKKyAgICBPcHRpb25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKKyAg
ICBkZWNvZGVyID4+IHBhZ2VJRDsKKyAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXN1bHQucGFnZUlEID0gV1RGTW92ZSgqcGFnZUlEKTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbmNsdWRlU2VjdXJlQ29va2llcykpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNw
cAppbmRleCAzYjE4ZTYyZmUzOTg3ZGI1ZmM4NjE5YmZmY2E2MmE0ODZmNDhhODA4Li42M2RmMDU4
OGRjOWZjYzY3YTRlOTEwOTU4ZTNkYTQ5YTg5NGYwZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBA
IC02NiwxMiArNjYsMTIgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4KICAgICByZXR1cm4gbV9y
ZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2ll
cyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKSBjb25zdAogewogICAgIHJldHVybiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCByZXF1ZXN0LnVybCgpLCBmcmFtZUlELCBwYWdlSUQpOwog
fQogICAgIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QK
K2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJM
JiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7
CiAgICAgUmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiB7IGZpcnN0UGFydHlGb3JD
b29raWVzIH07CiAgICAgaWYgKGZpcnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQpAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21h
aW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpCiAgICAgICAgIG1fcmVnaXN0cmFibGVE
b21haW5zVG9CbG9ja0Nvb2tpZUZvci5yZW1vdmUoZG9tYWluKTsKIH0KIAotYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFp
biwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lSUQpIHsKICAgICAgICAgYXV0byBmcmFtZXNH
cmFudGVkSXRlcmF0b3IgPSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlE
KTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3QKICAgICByZXR1cm4gZW50cmll
czsKIH0KICAgICAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIWZyYW1lSUQpIHsKICAg
ICAgICAgaWYgKGZpcnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQpAQCAtMTgyLDcgKzE4Miw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdl
QWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIGF1dG8gaXRlcmF0aW9uID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5k
KHBhZ2VJRCk7CiAgICAgaWYgKGl0ZXJhdGlvbiA9PSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNj
ZXNzLmVuZCgpKQpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0CiAg
ICAgaXRlcmF0aW9uLT52YWx1ZS5yZW1vdmUoZnJhbWVJRCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGVhclBh
Z2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7
CiAgICAgbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5yZW1vdmUocGFnZUlEKTsKQEAgLTIx
NSw3ICsyMTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpCiAgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyA9IFdURjo6bnVsbG9wdDsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0Rv
bWFpbiwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvbW1p
dHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlmIChzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
KGZyb21Eb21haW4pKQogICAgICAgICBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQ
cmV2YWxlbnRSZXNvdXJjZS5hZGQocGFnZUlELCB0b0RvbWFpbik7CkBAIC0yMjcsNyArMjI3LDcg
QEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKCkKICAgICBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRp
b25UZXN0TW9kZSA9IHRydWU7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK09wdGlvbmFsPFNlY29u
ZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkgY29uc3QKIHsKICAgICBpZiAoIW1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgfHwgIXBh
Z2VJRCB8fCBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJj
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKaW5kZXggMDMwMjAwZGY5YzQ0ZmQ0YmNmMmY1ODcyZGRkZmRhNTYzMjU5
ODUwYi4uM2YzOWM4YWNkOGIwZDNkMWU4NzUzOGFiODVlN2YyNmZlOWQxNTNlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJS
ZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
bWFpbkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJs
b2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2ll
cywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hv
dWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVu
dFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYg
ZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+
IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmlj
RGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9t
YWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFn
ZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
U2Vjb25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25k
cz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21t
aXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJ
ZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNX
aXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMs
MTQgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1
aW50NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVs
dEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVpbnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFn
ZUlkZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0
SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dWludDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBh
Z2VJZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFp
bj4+IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBt
X2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmln
YXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRU
b1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmln
YXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5kZXggNjdkZjc2NGQyYzRhZTQ1YTk2
ODU5NDRhYzQyMTVjZDU1M2EyYjI1MS4uMzMwYWE2MDg2NjE0MGIyNGQ5YjcwNTIzODNhODFjZWNm
OTBiOTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKQEAgLTE4
OSw3ICsxODksNyBAQCBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVDb29raWVzKENGRGljdGlvbmFy
eVJlZiBoZWFkZXJGaWVsZHMsIENGVVJMUmVmIHVybCkKICAgICByZXR1cm4gcGFyc2VkQ29va2ll
czsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTIy
NSw3ICsyMjUsNyBAQCBzdGF0aWMgYm9vbCBjb250YWluc1NlY3VyZUNvb2tpZXMoQ0ZBcnJheVJl
ZiBjb29raWVzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFN
KGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMjQwLDcgKzI0MCw3IEBA
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
ckRPTShjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAgcmV0dXJuIHsgY29va2llU3RyaW5nLCBkaWRB
Y2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfHwgcG9saWN5ID09IENG
SFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnRE
b21haW4gfHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lBbHdheXM7
CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA2Mzc0MDM1MmM0YTYyN2Vk
NmZlZWQ2OWZmZWIwOWQxOTdhODg3NGM3Li41NTdlOTc3YjRkNzJhYzgxOTdlOTllMjk2ZTRjMjEw
MDc2NzNjYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTI5
NCw3ICsyOTQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNB
cnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJl
ZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKQorc3RhdGljIE5TQXJyYXkg
KmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBpZiAoc2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFt
ZUlELCBwYWdlSUQpKQpAQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
CiB9CiAKIGVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwg
SW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
c0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpCitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQ
T25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpCiB7CiAgICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykpOwogCkBAIC0zNjMsMTIgKzM2MywxMiBAQCBzdGF0aWMgdm9pZCBkZWxldGVBbGxI
VFRQQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCiAgICAgQ0ZI
VFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZSk7CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBE
b05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVD
b29raWVzKTsKIH0KQEAgLTM3OCw3ICszNzgsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbgog
ICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJz
dFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51
cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIElu
Y2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9
CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogCkBAIC00NDMsNyArNDQz
LDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRS
YXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIHJhd0Nvb2tp
ZXMuY2xlYXIoKTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAK
aW5kZXggMmMxMTU2OGZjZTViMjg5MTI2MGRhM2JlOTFmODkxN2MwODUxMjdhOC4uZDYwZDcwYTgz
NjgzMDEzN2VlNjBkYjBlNzY0ZWRiZjUyNTc0ZjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtNTksNyAr
NTksNyBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3Ry
aW5nKCk7CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKK3ZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21IVFRQ
UmVzcG9uc2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzCiAgICAgY29va2llSmFy
REIuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6
Ok5ldHdvcmspOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpj
b29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFy
Q3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0o
ZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BB
UkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMTEzLDcgKzExMyw3
IEBAIGJvb2wgQ29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFi
YXNlKCkuaXNFbmFibGVkKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2ll
cyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKSBjb25zdAorYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5NGM4
NmFmZThmNzQwYWVkZDI4YWQ5NzI3Mjc1MWVlYmEzODQzMjMuLjY4NzJiMGFjOWIwMDE5ZGU1ODNl
YjI2OGM4Yzk0NTc5OWVmOTQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5j
cHAKQEAgLTgwLDcgKzgwLDcgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwogfQog
Ci12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKIHsKICAgICBjb29raWVTdG9yYWdlKCkuc2V0Q29va2llc0Zyb21ET00oKnRo
aXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHZhbHVl
KTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNFbmFi
bGVkKCp0aGlzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICByZXR1
cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0K
QEAgLTE1NCw3ICsxNTQsNyBAQCBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldENvb2tpZXMoY29uc3QgVVJMJikKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmdldFJhd0Nvb2tpZXMoKnRoaXMs
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJhd0Nvb2tp
ZXMpOwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpm
bHVzaENvb2tpZVN0b3JlKCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQgdG8g
dXNlLgogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9y
YWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDFmNzU4NzdhODJiMzE4Mzk0NzYxMTIzYmU2ZjU4NWE0
NzYxY2Y4OTYuLmY2NjQxZWZlYjQ0YzczNDM0ZTRkMTVhNGE1YWJlZGQ4NTZmMjBlNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29raWVz
LCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBWZWN0b3I8
Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwp
CiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAgICAg
VU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIuZ2V0
KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJB
TShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01MjIsNyArNTIy
LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Np
b24oKnRoaXMsIHVybCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0
eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDk2NjFiYzQz
N2U5ODU0MmI2YzVjMWQ2NjQ4OTZmNjAyODVhN2ZiM2QuLjU0MzkwMmZmNTM0ZWE1MGE0ZGViMDUx
NjJjMmVlYjM1YmEyZDdkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5k
ZWYgUmVzb3VyY2VSZXF1ZXN0X2gKICNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2luY2x1
ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgog
I2luY2x1ZGUgIlVSTFNvdXAuaCIKIApAQCAtMzgsNyArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlh
dGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDYsNyArNDYsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJs
LCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAg
ICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBG
bGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwgbV9p
bml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01NCw3ICs1Myw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFz
ZSh1cmwsIHBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAg
ICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkK
LSAgICAgICAgICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTYzLDcgKzYxLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNl
KFVSTCgpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBt
X3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAg
ICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03MSw3
ICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZShVUkwoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAg
ICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAg
ICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1
cGRhdGVGcm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CkBAIC04MCw3ICs3
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShzb3VwVVJJVG9VUkwoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3QpKSwgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlh
dGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9tU291cFJlcXVl
c3Qoc291cFJlcXVlc3QpOwogICAgICAgICB9CkBAIC0xMDAsOCArOTUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3Mgc291cE1lc3NhZ2VGbGFncygpIGNv
bnN0IHsgcmV0dXJuIG1fc291cEZsYWdzOyB9CiAgICAgICAgIHZvaWQgc2V0U291cE1lc3NhZ2VG
bGFncyhTb3VwTWVzc2FnZUZsYWdzIHNvdXBGbGFncykgeyBtX3NvdXBGbGFncyA9IHNvdXBGbGFn
czsgfQogCi0gICAgICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCB7IHJldHVy
biBtX2luaXRpYXRpbmdQYWdlSUQ7IH0KLSAgICAgICAgdm9pZCBzZXRJbml0aWF0aW5nUGFnZUlE
KHVpbnQ2NF90IHBhZ2VJRCkgeyBtX2luaXRpYXRpbmdQYWdlSUQgPSBwYWdlSUQ7IH0KKyAgICAg
ICAgUGFnZUlkZW50aWZpZXIgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dGlhdGluZ1BhZ2VJRDsgfQorICAgICAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlSUQoUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKSB7IG1faW5pdGlhdGluZ1BhZ2VJRCA9IHBhZ2VJRDsgfQogCiAgICAg
ICAgIEdVbmlxdWVQdHI8U291cFVSST4gY3JlYXRlU291cFVSSSgpIGNvbnN0OwogCkBAIC0xMTMs
NyArMTA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hY2NlcHRF
bmNvZGluZyA6IDE7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7Ci0gICAg
ICAgIHVpbnQ2NF90IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgUGFnZUlkZW50aWZpZXIg
bV9pbml0aWF0aW5nUGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VNZW1i
ZXJzKFNvdXBNZXNzYWdlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VC
b2R5KFNvdXBNZXNzYWdlKikgY29uc3Q7CkBAIC0xNjIsMTAgKzE1NywxMSBAQCBib29sIFJlc291
cmNlUmVxdWVzdDo6ZGVjb2RlV2l0aFBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zb3VwRmxhZ3MgPSBzdGF0aWNfY2FzdDxTb3VwTWVz
c2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKTsKIAotICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQ
YWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbml0aWF0aW5nUGFnZUlEKSkKKyAgICBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBkZWNvZGVyID4+
IGluaXRpYXRpbmdQYWdlSUQ7CisgICAgaWYgKCFpbml0aWF0aW5nUGFnZUlEKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2VJRDsK
KyAgICBtX2luaXRpYXRpbmdQYWdlSUQgPSAqaW5pdGlhdGluZ1BhZ2VJRDsKIAogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDBmNmVhMTk3ODdhNDZjNzQ3
NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUuLjBlZDI1YjM3ZDVmODA4NzY4MTI1Mzg3NzA4OTBhZjli
ODhlOTM2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBS
ZXF1ZXN0KSBjb25zdAogewogICAgIGlmIChtX2luaXRpYXRpbmdQYWdlSUQpIHsKICAgICAgICAg
dWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1aW50NjRfdCo+KGZh
c3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSkpOwotICAgICAgICAqaW5pdGlhdGluZ1BhZ2VJRFB0
ciA9IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgKmluaXRpYXRpbmdQYWdlSURQdHIgPSBt
X2luaXRpYXRpbmdQYWdlSUQudG9VSW50NjQoKTsKICAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGFf
ZnVsbChHX09CSkVDVChzb3VwUmVxdWVzdCksIGdfaW50ZXJuX3N0YXRpY19zdHJpbmcoZ1NvdXBS
ZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSksIGluaXRpYXRpbmdQYWdlSURQdHIsIGZhc3RGcmVl
KTsKICAgICB9CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBk
YXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0KSBjb25zdAogdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21Tb3VwUmVxdWVzdChTb3VwUmVxdWVzdCogc291cFJlcXVl
c3QpCiB7CiAgICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1
aW50NjRfdCo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBSZXF1ZXN0KSwgZ1NvdXBS
ZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSkpOwotICAgIG1faW5pdGlhdGluZ1BhZ2VJRCA9IGlu
aXRpYXRpbmdQYWdlSURQdHIgPyAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA6IDA7CisgICAgbV9pbml0
aWF0aW5nUGFnZUlEID0gbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihp
bml0aWF0aW5nUGFnZUlEUHRyID8gKmluaXRpYXRpbmdQYWdlSURQdHIgOiAwKTsKIH0KIAogdW5z
aWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApp
bmRleCA4NzljMGIxOWU5NjZmMjk2OWJhMGFmNDc4YjZlODNlNjMwNWI5NDBiLi5iNjg5YzNlMjVh
ZDgyM2VjZjZkMzA0ZWU3ODljYTlmMzQ1ZGEyZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3MTYsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3RvcmFnZUlt
bWVkaWF0ZWx5KCkKICAgICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQzLDcgKzc0
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgT3Bl
bmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWlu
JiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAg
LTgxNCw3ICs4MTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RG
TW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFp
biYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZN
b3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBh
Z2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21h
aW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJs
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNzYwZDJhM2UxZWNiZGU4
Yjc1ODUzNzU1ZTNhZTkwLi5iZmMyMzM5Njg1MzMyMDAyNjI2Nzg5NDMxYWUwNzNiMmQzOTc1ZjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlmTmVl
ZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9w
ZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9yRG9t
YWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpIG92ZXJyaWRlOwogCkBAIC05
MSw5ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVsZW1l
dHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3Qg
U3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+
LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFt
ZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wg
aXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3ICsx
NTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCBy
ZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21h
aW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBTdGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2YWxl
bnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOwog
ICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0gICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFt
ZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVy
bmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1By
ZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50
UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVEYXRhUmVj
b3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwZWU3Zjk2Mzg5NDYxNWRm
ZDEzNWIxODQwOTBiNTNmODFiZDlkZmY0Li5hNWYyNjI0ZTQzMzRjZTkwMzlmYWE1ZTJkMWU1YzQx
ZmQwZDA4N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAgICAgICAgbV9wZXJz
aXN0ZW50U3RvcmFnZS0+c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpZZXMpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFn
ZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgcwogICAgIH0pOwogfQogCi12b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFp
biwgRnJhbWVJRCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFp
biwgRnJhbWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3ViRnJhbWVEb21haW4mJiBzdQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9wZW5l
clBhZ2VJRCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBv
cGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAh
PSBvcGVuZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjg3
LDcgKzI4Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluCiAgICAgZ3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3Zl
KG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiBzdWJGCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJG
cmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHBy
b21wdFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZy
YW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdh
c1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oCmluZGV4IDQ0ZWZiZjRkZWMxNGYyMDI3MDJhY2FkMDc3NjhmNWFjODIwYjgwNWEu
LjQ1ZjdlMWI3NTk2OTNjMTEwM2EzZDY2MjczMTZkNmZjZTAyZTRjZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYm
LCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQp
PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BG
cmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
RnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRp
b24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0
IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9t
YWluJikgb3ZlcnJpZGU7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
Y3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVk
IHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbihj
b25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21haW4+
JiwgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBncmFu
dFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYm
LCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZy
YW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
Jik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudChS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVidWdN
b2RlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3OWNj
MWYxYjk0NTYyMWI5YTA1NTI0ODRjMDk2YzUuLmQ3Nzk4YjI1ZDFlM2JiYmI3OGE4N2FiM2UxYTVh
MzEzOWYxNGJhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
QEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3BlbmVy
RG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyUGFn
ZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcg
RnJhbWVJRCA9IHVpbnQ2NF90OwogICAgIAogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSgpOwpAQCAtMTEwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3Jh
Z2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdl
SUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZvaWQg
cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAg
ICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RlYnVn
TW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH07CiAgICAg
dm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0
ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURv
bWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDg3
MWIxOWQyZjA3NDg2ZTBmNGJiNzYzYzY5ZGFhMWFhZmY4N2M5OTIuLjYyMjQzMGNkOGU0ZjA5ZWNh
ZjhmYTM2OGEzODlmMGNhYjg3YzEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxXZWJDb3IKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoc3Vi
RnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CkBAIC0yOTgsMTIgKzI5OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcwogICAg
IH0pOwogfQogCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291
cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBtX25l
dHdvcmtTZXNzaW9uID8gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCku
aGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJ
RCwgcGFnZUlEKSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
cihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNh
bGxiYWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMxNSw3ICsz
MTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUgogICAgIGNhbGxiYWNrKGZhbHNlKTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
c3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duOjpObyk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWkK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVEb21h
aW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBSZWdp
c3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGUKICAg
ICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlz
b2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMzk2LDcgKzM5Niw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgfSk7CiB9CiAKLVN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5
RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQogewogICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00MDksNyArNDA5
LDcgQEAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QKICAgICByZXR1cm4gaXNTdG9yYWdlR3JhbnRl
ZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsR3Jh
bnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRs
ZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAppbmRleCA4NzU5ZDYwMTY2YTU1MGVlNjlhNjJiMTcxZGVhODZmZTNhNDFiOTJmLi43OWNm
MjQ2MDFjMzJlNzA1Y2Q4YjQ1M2Y5MjNiZmQzNjYzMTE0ZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04Miw4
ICs4Myw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVp
bnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQg
PSB1aW50NjRfdDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93biA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEwNCw3
ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwogCkBA
IC0xMTgsMTEgKzExNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlv
bihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFU
b1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0
cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBi
b29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lk
IHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGxv
Z1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VB
Y2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNz
SGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0
aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxs
VXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBWZWN0
b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+Jik7Ci0gICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxIYXNT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CiAKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlQ
YWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVz
b3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsKIAog
ICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBP
cGVuZXJEb21haW4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYs
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5NzE4
MzZhZGE1YWU4Mjk3YjViNTc5MDZiYzkwNWMxODNjZWI2ZC4uNGQzZDE2OWY2YWY5ZjQzYjc2MTA4
MWNmYmZlNjBhZmM1YTM5M2ZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgICAgICBTdHJpbmcgdXNl
ckFnZW50OwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7Ci0gICAgICAgIHVpbnQ2
NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAg
ICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCAzZDcxZjhmNmIxYjZjMjZkYjA1NTBmODhhYTVlZTExNDQyMTBhOTA2
Li45MmM4YjdhZTQ0ZmIzYjc3NGQ2YjA1OThjNDE5YzM4M2ZlYjA5MjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZp
ZXIKICAgICBBU1NFUlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVudGlm
aWVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBhZ2VMb2Fk
Q29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKIHsK
ICAgICBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHdlYlBhZ2VJRCk7CiB9
CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2kKICAgICBsb2FkZXIt
PmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNv
b2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CiAgICAgYXV0byByZXN1bHQgPSBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBAIC01MjUsNyArNTI1
LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Np
b24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24uc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKQEAgLTU0MiwxMyArNTQyLDEzIEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZVNlc3Npb24obmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5jb29raWVzRW5hYmxlZCgpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKG5l
dHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0
KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRS
YXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHJlc3VsdDsKICAg
ICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmdldFJhd0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0
KTsKQEAgLTYzOCwxMyArNjM4LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVTdG9y
YWdlQWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vz
c2lvbi0+Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdl
SUQpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlCiAgICAgfQog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAtNzA5LDcg
KzcwOSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50
ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBu
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKSB7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbkkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6WWVzLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIGlm
IChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKQEAgLTc0NSw3ICs3NDUs
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vz
c1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0X3Qg
cGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVz
b3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCitPcHRpb25hbDxOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRUcmFj
a2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9u
SUQmIHNlc3Npb25JRCkKIHsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCkK
ICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmNsZWFyKCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0Zv
clBhZ2UodWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQpCiB7CiAgICAgZm9yIChhdXRvJiBhY3Rpdml0eVRyYWNrZXIgOiBtX25ldHdvcmtBY3Rp
dml0eVRyYWNrZXJzKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVRyYWNrZXIucGFnZUlEID09IHBh
Z2VJRCkKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NAogICAgIH0p
OwogfQogCi1zaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290TmV0
d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCkKK3NpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQogewogICAgIHJldHVybiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmZpbmRNYXRjaGluZyhb
Jl0oY29uc3QgYXV0byYgaXRlbSkgewogICAgICAgICByZXR1cm4gaXRlbS5pc1Jvb3RBY3Rpdml0
eSAmJiBpdGVtLnBhZ2VJRCA9PSBwYWdlSUQ7CkBAIC05MDMsMTcgKzkwMywxNyBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRzKCkK
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6Q2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dlYlBy
b2Nlc3NJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7CiAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQoKSwg
c2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc1JlbW92ZWQobV9j
b25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Np
b25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VzKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBB
TDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYg
cGFnZXMpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2Vk
KG1fY29ubmVjdGlvbi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggY2JjN2JiZmU4ZjU3ZDc1NDEzMTU4MTA0Zjg4YTU0NDAwOTQyMDc2
Yi4uMDZkNTc5Njg4Mjg2NThlMTY4YzJjODFmNzI4MWYxZjk2MGM4MDRiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRNYXAuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzMsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBtX25l
dHdvcmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VM
b2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBi
b29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlvbmFs
PE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9v
bCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0b3BU
cmFja2luZ1Jlc291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6OkJs
b2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVhckNv
bm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQg
d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAg
dm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRk
ZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBvbGRQYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NT
ZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcik7CkBAIC0xNzAsMTYgKzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJl
Y29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVz
b3VyY2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRf
dCB3ZWJQYWdlSUQpOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnRE
b3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lk
IGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAot
ICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYm
KTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vz
c2VkKT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+
JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAgcHJp
dmF0ZToKICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZv
aWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRh
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlE
KTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2xl
YXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rp
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBs
b2dXZWJTb2NrZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IFdhbGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAg
ICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFy
Z2V0RG9tYWluKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5l
clBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAg
IHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bik+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQ
QUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2
b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIzOSwy
OSArMjQwLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KGNvbnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAgICAg
ICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlciYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcih1aW50NjRfdCBwYWdlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBhZ2VJ
RCB7IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAgICAg
ICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVs
OjpMb2FkUGFnZSB9CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlTmV0
d29ya0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgcmVzb3VyY2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNv
dXJjZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAgLCBy
ZXNvdXJjZUlEIHsgcmVzb3VyY2VJRCB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7
IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICB1aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciByZXNvdXJjZUlEIHsgMCB9OwogICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsgZmFs
c2UgfTsKICAgICAgICAgTmV0d29ya0FjdGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7CiAg
ICAgfTsKIAogICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0gICAg
dm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCk7Ci0gICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzaXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBmN2M5N2VlYmIyMTNjZDc4M2NhZjRlMjA0NjliZmEzY2UxOTRjOGNlLi44MzNl
NzRmY2Y2MDAzZWI4M2FjMWRlMmQ4YzZiZmMwZmYyNWI5ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDE4ICsyNiwxOCBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVy
Zm9ybVN5bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
IHJlc291cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4gZGF0YSkg
U3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCiAgICAgUmVtb3ZlTG9hZElkZW50aWZpZXIo
dWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKLSAgICBQYWdlTG9hZENvbXBsZXRlZCh1
aW50NjRfdCB3ZWJQYWdlSUQpCisgICAgUGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkKICAg
ICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAgU3Rh
cnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBk
b3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dl
c3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNG
b3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcg
Y29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCi0g
ICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQ
YXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBT
dHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgU2V0Q29v
a2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKLSAgICBDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJz
dFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2ll
cykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJ
bmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9u
b3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0UmF3
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIERl
bGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29r
aWVOYW1lKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0aCwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcg
Y29udGVudFR5cGUpCkBAIC01NiwxNiArNTYsMTYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEVuc3VyZUxlZ2FjeVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIENsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCk7CisgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQogICAgIExvZ1dlYlNv
Y2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZUxvYWRpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXRE
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGlt
ZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRp
c3RpY3MpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwotICAgIFJlcXVlc3RTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChlbnVtOmJvb2wgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKLSAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
LCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5l
ckRvbWFpbikKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisg
ICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQog
I2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNl
T3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC04Nyw3ICs4Nyw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
IAogICAgIFNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJZGVudGlmaWVyKQogCi0gICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCi0gICAgV2Vi
UGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQp
Ci0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25J
RCwgVmVjdG9yPHVpbnQ2NF90PiBwYWdlcykKKyAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKKyAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyAgICBX
ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBWZWN0
b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGQxNGIxZGU5
ZDkxYzAyMmI3ZTBlMDM4MjE3NGRhODgyMmI5M2EzMTguLjQwOTcxNGQ2NjcyNmE4NDc0YWZmMjlh
MTYwODE3ZjI0Nzk2N2IwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzU2FtZU9yaWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3RvY29s
SXNCbG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAotTmV0
d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYmIG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYm
IHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYg
cmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQorTmV0d29y
a0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQogICAg
IDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMzFkMTFj
M2E4YWVjYjJhYWZkNDllNWMzMTAzOThlMGFjMTZkZGVlNy4uNTdkZjFkYTQ2ODBkMjU4NGVlMjE2
YWFkZmYwOGRlODJhMTM2YmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtM
b2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwgT3Ro
ZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYg
cmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVlc3RM
b2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5ldHdv
cmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3Jl
OjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRl
RW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
cyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOwog
ICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRyaXBs
ZXQgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nl
c3M7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBIZWFk
ZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tz
LgogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAvLyBO
ZWVkZWQgZm9yIENPUlMgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggODk2Mzk5ZDEzMzI1ZDAxNGExNzRi
Zjc3YjRjYTYzNmNhZjJlMGM0Ni4uODk3MzBjZjlmZDI2OTliY2ZkMzJkZGMzOGVmOGNlMDM3NDZh
MzAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrQWN0
aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVuY2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTM4LDcgKzM5LDcgQEAgZW51
bSBjbGFzcyBQcmVjb25uZWN0T25seSB7IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgeyAwIH07CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEOwogICAgIHVpbnQ2NF90IHdlYkZyYW1l
SUQgeyAwIH07CiAgICAgV1RGOjpQcm9jZXNzSUQgcGFyZW50UElEIHsgMCB9OwogICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgpIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IGE1ZDZmNWNmY2M3YzQzMjVlOWFkNzMxMzZmMzZmZGEyOTlkMWRlMGIuLmFjNGQzMmJmMmQz
MTE3MTE4MDM1ZTIzY2Y4YjFkNWIxYmI2ZWI0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFBBTDo6U2Vzc2lvbklEIHNlcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb21taXR0ZWRDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9tYWluLCBwYWdlSUQpOwpAQCAt
MTk1NCw3ICsxOTU0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCBhbGxvd3MsIENvbXBsZXQKICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2Fn
ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNo
b3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTk2Miw3ICsxOTYyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3MKICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dE
aWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCBTaG91bGRT
YW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBl
IHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25v
c3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
IHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBs
aW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NzAsNyArMTk3MCw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50
NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgU2hvdWxk
U2FtcGxlOjpObyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWdu
aWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxk
TG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47CkBAIC0yNjE5
LDcgKzI2MTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5l
dHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNzaW9uLT5yZW1vdmVLZXB0
QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNB
ZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUGFnZUlkZW50aWZpZXIg
b2xkUGFnZUlEKQogewogICAgIGlmICghcGFnZUlEIHx8ICFvbGRQYWdlSUQpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDYW5ub3QgYWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjQ0LDcg
KzI2NDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRAogICAgICAgICBzdG9yYWdlTWFuYWdl
ci5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG9sZFBhZ2VJRCwgcGFnZUlEKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQp
CiB7CiAgICAgaWYgKCFwYWdlSUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgcmVtb3Zl
IHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjc0LDcgKzI2NzQsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKICAgICBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5zdG9yYWdlTWFuYWdlcigp
LnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgcGFnZUlEcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdl
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZUlEcykKIHsKICAgICBhdXRvIGNv
bm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKICAgICBBU1NFUlQobV9zZXNzaW9u
QnlDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDdhY2IzZjk2NzVjM2Q5NDg3Mzk4
YzdhN2QwY2YzNjNhOTk3NDU3YWEuLmViZjNiN2ZlNjUwMWQ1MjQzYmQyZGUwMzI2YmIzN2ZmNDgw
MjNiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURC
U2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMu
aD4KQEAgLTEzNiw4ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21h
aW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBP
cGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVu
ZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1
c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMTkwLDkgKzE4OSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gRGlhZ25vc3RpYyBtZXNzYWdlcyBs
b2dnaW5nLgotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1
bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZh
bHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJl
cywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZv
aWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3Vy
Y2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtMjU4LDcgKzI1Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJl
Y3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lkIGNv
bW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRz
V2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtMjcxLDEwICsyNzAsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25J
RCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6
U2Vzc2lvbklEKSBjb25zdDsKIAotICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVj
dGlvbiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJ
RCk7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChJUEM6
OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQQzo6
Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCB3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYpOwotICAg
IHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+Jik7CisgICAgdm9pZCB3ZWJQcm9jZXNzU2Vz
c2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mKTsKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9y
aWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQ5ZmVlMDc4
ZmU3MzUzNGJjZTQ2ZDUyMmFmM2NkMjRiNjM5YjdjNjIuLmY1ZWY1MzAxMzQwMjM3YzcyMmVkOTU3
NTViODNiZmQ1ZDE4YjBlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTMxLDcgKzEzMSw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVkaXJlY3RlZFRvRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0
ZWRGcm9tRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAg
IENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKSAtPiAoKSBBc3lu
YworICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEKSAtPiAoKSBBc3luYwogICAgIFNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21h
aW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIERl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+
ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDU4YWFjYjk5M2RiOThh
Y2NkYTY1MjJkOTU2NGM5ZWFhODk0YmRhODEuLjMzY2RjNGQxN2RiZTJlMDg2NmUzNjEyZWYyMjc2
MWEzODIzODA1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMDcsOCArMTA3
LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LndlYlBhZ2VJRCkpCisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHdlYlBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHdlYlBhZ2VJRDsKKyAgICBpZiAoIXdlYlBh
Z2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC53ZWJQYWdlSUQgPSAqd2Vi
UGFnZUlEOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViRnJhbWVJRCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBmZTI2NTM2ZjIxYzNlZTlhNzAx
ODk4Y2EwNTkzMmQ1NWQxNWQzNGIwLi4wZDRmOWEyYTFhZWE1Yzg4MDBhNWIxM2ZlMzdlMDE3YmJk
YzQ5NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNzQsMTggKzE3NCwxOCBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hl
Y2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChh
dXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwKICAgICAg
ICAgICAgICAgICBbdGhpc10gKFJlc291cmNlRXJyb3ImIGVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBlcnJvciBjaGVja2luZyAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVu
dFBJRCA9ICVkLCBlcnJvci5kb21haW4gPSAle3B1YmxpY31zLCBlcnJvci5jb2RlID0gJWQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9u
b3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgic3RhcnQ6IGVycm9yIGNoZWNraW5nIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQsIGVycm9yLmRv
bWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFn
ZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBt
X3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJv
ci5lcnJvckNvZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3IuaXNDYW5jZWxs
YXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmRpZEZhaWxMb2FkaW5nKGVy
cm9yKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoTmV0d29y
a0xvYWRDaGVja2VyOjpSZWRpcmVjdGlvblRyaXBsZXQmIHRyaXBsZXQpIHsKICAgICAgICAgICAg
ICAgICAgICAgdGhpcy0+bV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hl
ZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+d2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRyaXBsZXQucmVxdWVzdCksIFdURk1vdmUodHJpcGxldC5y
ZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQucmVkaXJlY3RSZXNwb25zZSkpOwotICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogc3ludGhldGlj
IHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVSTCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlz
U3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CisgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2Vu
dCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdhcyBtb2RpZmllZCAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5
bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRoaXMtPmNhblVzZUNhY2hlKHJlcXVlc3QpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogQ2hlY2tp
bmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQs
IGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0
aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVy
cy5wYXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlz
LT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy0+cmV0cmlldmVDYWNoZUVudHJ5KHJlcXVlc3QpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xOTgsNyAr
MTk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICB9CiAgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBvbmNlIG1fbmV0d29ya0xvYWRDaGVja2Vy
IGlzIHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgogICAgIGlmIChjYW5Vc2VDYWNoZShvcmln
aW5hbFJlcXVlc3QoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6
IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFy
ZW50UElEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5n
IGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBp
c1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5w
YXJlbnRQSUQpOwogICAgICAgICByZXRyaWV2ZUNhY2hlRW50cnkob3JpZ2luYWxSZXF1ZXN0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI3LDEzICsyMjcsMTMgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiAgICAgICAgIGxvYWRlci0+bG9nU2xvd0NhY2hlUmV0cmlldmVJZk5lZWRl
ZChpbmZvKTsKIAogICAgICAgICBpZiAoIWVudHJ5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIG5vdCBpbiBjYWNoZSAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNv
dXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNT
eW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdv
cmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgICAgIGlmIChlbnRyeS0+aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFz
IHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWlu
UmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAg
bV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbiA9IFdURk1vdmUoZW50cnkpOwogICAg
ICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRhdGlvblJlcXVlc3QgPSBvcmlnaW5hbFJl
cXVlc3QoKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJl
dmFsaWRhdGlvblJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CkBAIC0yNDEsMjEgKzI0MSwyMSBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGlmIChl
bnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJl
Y3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZv
ckNhY2hlRW50cnkoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShlbnRyeSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChsb2FkZXItPm1fcGFyYW1ldGVycy5u
ZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnktPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZv
KCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVF
bnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBk
b2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNlcnRpZmljYXRlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxv
YWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGVudHJ5LT5uZWVk
c1ZhbGlkYXRpb24oKSB8fCByZXF1ZXN0LmNhY2hlUG9saWN5KCkgPT0gV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlDYWNoZURhdGEpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogVmFsaWRhdGluZyBj
YWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNo
ZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291
cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRl
ci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNh
Y2hlRW50cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9tIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmV0cmlldmVkIHJlc291cmNlIGZyb20g
Y2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOwogICAgICAgICBsb2FkZXItPmRpZFJldHJpZXZlQ2FjaGVFbnRyeShXVEZN
b3ZlKGVudHJ5KSk7CiAgICAgfSk7CiB9CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYWQgbG9hZCkKIHsKICAgICBpZiAobG9h
ZCA9PSBGaXJzdExvYWQ6OlllcykgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdv
cmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3Vz
ID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlz
U3luY2hyb25vdXMoKSk7CiAKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgIH0KICAgICBp
ZiAoIW5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRv
IGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIChpZD0lIiBQUkl1NjQgIikgdGhh
dCBkb2VzIG5vdCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0
dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMg
bm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRv
IGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3Qg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklEPSUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgICAgIG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFs
RXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lv
bklES2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICBkaWRGYWlsTG9h
ZGluZyhpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
Mjk4LDcgKzI5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgp
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCi0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRp
b24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3Jp
cHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFy
dE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCku
dXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVw
KExvYWRSZXN1bHQgcmVzdWx0KQpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNv
dXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRo
aXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgIFJFTEVB
U0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBk
b3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93
bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgCiAgICAgLy8gVGhp
cyBjYW4gaGFwcGVuIGlmIHRoZSByZXNvdXJjZSBjYW1lIGZyb20gdGhlIGRpc2sgY2FjaGUuCiAg
ICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJvcnQ6IENhbmNlbGluZyByZXNvdXJjZSBs
b2FkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAgICAgaWYgKG1fcGFyYW1ldGVycy5vcHRp
b25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX2lzS2VwdEFsaXZlKSB7
CiAgICAgICAgIG1faXNLZXB0QWxpdmUgPSB0cnVlOwpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNl
c3RvcnNPclhGcmFtZU9wdGlvCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0
dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcmVj
ZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUi
IFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCByZWNlaXZlZFJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkpOwogCiAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAg
LTUwNSw3ICs1MDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bvbgogdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1Jl
Y2VpdmVkKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQnVmZmVy
OiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5zaXplKCk7CiAKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwpAQCAtNTM0LDcgKzUzNCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNS
ZWNlaXZlZCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5m
b3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTU2
OSw3ICs1NjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wg
PSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgZXJyb3IuaXNUaW1lb3V0KCks
IGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlzQWNjZXNzQ29udHJvbCgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0Fj
Y2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuaXNB
Y2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIGlmIChzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1v
dmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZpZXIoKSk7CkBAIC03MzEsNyArNzMxLDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOwogCiAgICAgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOwogCkBAIC05ODgsNiArOTg4LDExIEBAIHN0YXRp
YyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUp
CiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUudmFsdWUoKSkgOiBTdHJp
bmcoIk5vbmUiX3MpOwogfTsKIAorc3RhdGljIFN0cmluZyBlc2NhcGVJREZvckpTT04oY29uc3Qg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPyBT
dHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOworfTsK
Kwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9u
LCBzZXNzaW9uSUQoKSkpOwpAQCAtOTk4LDcgKzEwMDMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGxvZ0Nvb2tpZUluZm9y
bWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5h
bFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShv
cmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVl
c3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigpKTsK
IH0KIAotc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxv
Y2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDI1LDcgKzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBs
b2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXN0YXRpYyB2b2lk
IGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9i
amVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZv
cm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDg2LDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9p
ZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aQogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRp
ZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlv
biwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGE4
YTMwMDVjMTQyMzA2MTM4ODc2ODIxYTQzYTA1N2EwYjZmM2Q3ZmMuLmE4ZjZkMzE1Nzk4YzRhZGZm
Zjk5ZGE3ZTgyZmZjODMzYTk2NzY4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtODQsNyArODQsNyBAQCBwdWJs
aWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLnNlc3Npb25JRDsgfQogICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAgICAgdWludDY0
X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9Ci0g
ICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KIAogICAgIHN0cnVjdCBTeW5jaHJvbm91c0xvYWRE
YXRhOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwotICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgT3B0aW9uYWw8dWludDY0
X3Q+IGlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpc2FibGVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljc0NhcHR1cmUoKSB7IG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApp
bmRleCA5N2UwYjI0NDA3OGQ4MzJhZWRjZGQ4YTY3OTE4NDE0ZjI4NzBjNjAyLi41NTNjYmFkMTli
YzVhMTk3ZTA2MjUyNzUwZjI4MmNlM2IwNDE2ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCkBAIC00NSw0MCArNDUsNDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9u
c2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQog
ewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIu
ZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVu
Y29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsg
Zm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIHsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRjaDogZmV0Y2hJZGVudGlm
aWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsg
ZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
RmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmll
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAppbmRleCBkMzJjZDQ2Mzg5ZWMwMjJiZmM1MDE0NWI3MzdlZjRjYWFlYzkz
MjMxLi45MWZkYzcxNTk3MWQ3YjE5Y2JiOGI0MmM2NDdkYjMwYzNhZmUyOWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyIHNlcnZpCiAgICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29y
a2VyRnJvbVJlZ2lzdHJhdGlvbklEKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKICAgICBpZiAoIXdvcmtlcikgewogICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyAt
PiBEaWROb3RIYW5kbGUgYmVjYXVzZSBubyBhY3RpdmUgd29ya2VyIiwgZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9jb250ZW50Q29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5k
bGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29udGVudENv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90
SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7CkBA
IC0xNzAsMTMgKzE3MCwxMyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRj
aChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aQogCiAgICAgICAgIGlm
ICghc3VjY2VzcykgewogICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90
SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRpZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIGZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBtX2Nv
bnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6
OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAg
ICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndv
cmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXdvcmtlcikg
ewotICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRp
Zmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTkyLDcgKzE5Miw3
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKS5zdGFy
dEZldGNoKG1fc2Vzc2lvbklELCBtX2NvbnRlbnRDb25uZWN0aW9uLmdldCgpLCB0aGlzLT5pZGVu
dGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVl
c3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZlcnJlcik7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNh
dXNlIGZhaWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIiLCBmZXRjaElkZW50aWZpZXIubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgICAgIG1fY29udGVudENvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFu
ZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAgICAgIG1f
Y29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDAwMzk0NTA1M2Y1NTAz
NGMyMzA4N2U5MDc5OGJmOWI3ZGZiZTg2MjMuLjBiZWQ2OTc2OTVmYTVkOGIzNGJjMjhjNTA3MGEy
YWNjYzA2MjIxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNDk0LDcgKzQ5NCw3IEBAIFN0
b3JhZ2VNYW5hZ2VyOjp+U3RvcmFnZU1hbmFnZXIoKQogewogfQogCi12b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgcXVv
dGFJbkJ5dGVzXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9zZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRf
dCBzdG9yYWdlTmFtZXNwYWNlSUQsCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6
OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3Bh
Y2VJRF0gewogICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFp
bnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCkKICAgICB9KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dl
ZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbih1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIElQQzo6Q29ubmVjdGlvbiYgYWxsb3dlZENvbm5lY3Rpb24pCit2b2lkIFN0b3JhZ2VN
YW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKFBhZ2VJ
ZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29u
bmVjdGlvbikKIHsKICAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVj
dGlvbi51bmlxdWVJRCgpOwogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3Bh
Y2VJRF0oKSBtdXRhYmxlIHsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0
b3JhZwogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKK3ZvaWQgU3RvcmFnZU1hbmFn
ZXI6OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24oUGFnZUlk
ZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mIGFsbG93ZWRDb25u
ZWN0aW9uKQogewogICAgIGF1dG8gYWxsb3dlZENvbm5lY3Rpb25JRCA9IGFsbG93ZWRDb25uZWN0
aW9uLnVuaXF1ZUlEKCk7CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVzcGFj
ZUlEXSgpIG11dGFibGUgewpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6
OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qg
c3RvCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdTdG9y
YWdlTmFtZXNwYWNlSUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgUGFnZUlkZW50aWZp
ZXIgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgbmV3
U3RvcmFnZU5hbWVzcGFjZUlEXSB7CiAgICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChz
dG9yYWdlTmFtZXNwYWNlSUQpOwpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgU3RvcmFnZU1hbmFn
ZXI6OnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFp
cnNUb1JlbW92ZSkKICAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92
ZShwYWlyKTsKIAotICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHNlc3Npb25TdG9yYWdlTmFtZVNw
YWNlSURzVG9SZW1vdmU7CisgICAgICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4gc2Vzc2lvblN0
b3JhZ2VOYW1lU3BhY2VJRHNUb1JlbW92ZTsKICAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzKSB7CiAgICAgICAgICAg
ICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPmFsbG93ZWRDb25uZWN0aW9ucygp
LmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpCiAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UudmFsdWUtPnJlbW92ZUFsbG93ZWRDb25uZWN0aW9uKGNvbm5lY3Rpb25JRCk7CkBA
IC03NzksNyArNzc5LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKIAogdm9pZCBTdG9yYWdl
TWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhKQogewotICAgIG1fcXVldWUt
PmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbm5lY3Rp
b25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHNlY3VyaXR5T3JpZ2luRGF0YSA9IHNlY3VyaXR5T3JpZ2luRGF0YS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlE
KCksIHN0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZUlEID0gbWFrZU9iamVjdElkZW50aWZp
ZXI8UGFnZUlkZW50aWZpZXJUeXBlPihzdG9yYWdlTmFtZXNwYWNlSUQpLCBzZWN1cml0eU9yaWdp
bkRhdGEgPSBzZWN1cml0eU9yaWdpbkRhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChtX2lzRXBoZW1lcmFsKSB7CiAgICAgICAgICAgICBtX2VwaGVtZXJhbFN0b3Jh
Z2UuYWRkKHNlY3VyaXR5T3JpZ2luRGF0YSwgV2ViQ29yZTo6U3RvcmFnZU1hcDo6Y3JlYXRlKGxv
Y2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzKSk7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5oCmluZGV4IGE4ODgzMzJlZmNmYjU5NDEzMGIyNjA4ODQ2YWY0YTE4MjE4MmI3
OTAuLjVlNjVlNTAzOGZkZmY0MTcxMjY3ZDllMzJlZDE4ZTU0ZmMzOTU2YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTUwLDExICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFu
YWdlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB+
U3RvcmFnZU1hbmFnZXIoKTsKIAotICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwot
ICAgIHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCk7Ci0gICAgdm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VD
b25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7
Ci0gICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9u
KHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9p
ZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICB2b2lkIGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQp
OworICAgIHZvaWQgYWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlv
biYpOworICAgIHZvaWQgcmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVj
dGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29u
bmVjdGlvbiYpOworICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKICAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZUNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CiAgICAgdm9pZCB3YWl0VW50aWxXcml0ZXNGaW5p
c2hlZCgpOwpAQCAtMTA3LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxzdGQ6OnBh
aXI8dWludDY0X3QsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4sIFJlZlB0cjxUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZXM7CiAKICAgICBjbGFzcyBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdl
TmFtZXNwYWNlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKIAog
ICAgIEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90
PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmlu
ZGV4IGM3ZjM4NmIzZDdjMzE0NTU4MGYyYWMwZTBlMzUyZWE2Yjg3MTU1YzEuLjhiYmMxNjk3ODU2
MGU0NDYzMjIxZGY3M2FjYjEwODc2MmFiNzY5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFn
ZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KQEAgLTg0LDcgKzg1LDcgQEAgZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CiAgICAgTm9E
dWVUb0V4cGlyZWRSZWRpcmVjdAogfTsKIAotdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFp
cjx1aW50NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47Cit1c2lu
ZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCAvKndlYkZyYW1lSUQqLz47CiAKIGNsYXNzIENhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8
Q2FjaGU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCA5NjVjNmZhNjY0YmNkMTU1
Zjc2Y2RiM2I0ZDczMjZlZWUwM2U5MTg4Li4yZGQwZTdkNDZiYzcxOWU5NmZhMTUwNzRmZWQwMGIx
Yzg4NjY1NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIE5l
dHdvcmtTZXNzaW9uQ29jb2E7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1
YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNv
Y29hOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFU
YXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2
NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNv
bnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNo
b3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29j
b2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1Nu
aWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVj
b25uZWN0T25seSwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIG5ldHdvcmtBY3Rp
dml0eVRyYWNrZXIpKTsKICAgICB9CkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4g
bV9uZXR3b3JrTG9hZE1ldHJpY3M7IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lSUQ7IH07Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSUQ7IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlSUQ7IH07CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
KTsKKyAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRh
VGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50
RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1l
TmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOwogCiAgICAgYm9v
bCB0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQg
YXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9f
c3Ryb25nIE5TVVJMUmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZik7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIHVpbnQ2NF90IG1fZnJh
bWVJRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBtX3BhZ2VJRDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBtX2hhc0JlZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMzVlNDQzYjllZTkxODA1N2FkMzRkZWYwNjhhODk5YmVh
MDY3YWRmNi4uMjhhMDVlODBkYjY4NWFmNjdiMjg0Yzg0MjMxNzE5NGY5N2U4N2UzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFz
a1dpdGhGaXJzdFBhcnR5Rm9yU2FtZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0
YXMKICNlbmRpZgogfQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29j
b2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlm
ZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1Nu
aWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNv
bm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25h
bDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29y
a0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xp
Y3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1Bv
bGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVy
T25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25s
eSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtE
YXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFt
ZUlEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29r
aWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVs
dTogQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAo
dW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0
YXNrSUQgPSAlbHU6IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVy
XSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAg
ICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVz
IiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcu
VVRGOFN0cmluZyk7CiAjZW5kaWYKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJgogICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFs
c1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3Rh
dGVsZXNzQ29va2llbGVzcyB8fCBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNo
b3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZv
cm1hdGlvbigpKQotICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJ
RCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwg
dGhpcywgbV9wYWdlSUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRl
bnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2lu
ZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0
d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJ
bmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTog
JXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQo
KSwgbV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNo
b3VsZEJsb2NrQ29va2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vz
c2lvbiwgIiVsbHUgJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNr
SWRlbnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9j
a2luZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBA
IC0zNzksNyArMzc5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3Vs
ZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAo
bV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5l
dHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2ll
SW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6
IE5vdCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9w
YWdlSUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0s
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0
d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJ
bmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTog
Tm90IHBhcnRpdGlvbmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lk
ZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UK
ICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tp
ZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggYzRmYjAwYjA4M2M0MTEyYTIyYzgxZWM0NWYwODhk
YTA5Y2I4NjllOC4uM2VkZjgyYWRmM2I1YWUzYjI4NGM3ZGQ1OTE1Yjg4NWU3NTIzMTc2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTg2LDYgKzE4NiwzNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQm
JiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJl
cGx5RGlzcGF0Y2hlciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBl
PHR5cGVuYW1lIFQ6OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcik7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vj
b25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3Bh
dGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBP
cHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOworICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFU+CisgICAgdm9pZCBz
ZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgT2Jq
ZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklEID0geyB9KQorICAgIHsKKyAgICAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5PFQsIEM+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgIH0KKyAgICAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2Fn
ZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlv
bj4gc2VuZE9wdGlvbnMgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4gc2VuZDxUPihXVEZN
b3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKKyAg
ICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICB2b2lk
IHNlbmRXaXRoUmVwbHkoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgRnVuY3Rpb25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQo
T3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4m
JiByZXBseUhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gc2VuZFdpdGhSZXBseTxUPihX
VEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlcGx5RGlzcGF0Y2hl
ciwgV1RGTW92ZShyZXBseUhhbmRsZXIpKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNl
bmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CisgICAgfQorICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCB3YWl0Rm9yQW5kRGlz
cGF0Y2hJbW1lZGlhdGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+
KGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAg
IH0KIAogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRp
b25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRo
UmVwbHkodWludDY0X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIEZ1bmN0
aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPik+JiYgcmVwbHlIYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCBkNWY5ODFlNDUzNGIyYTliZDhiNGE1Y2M2MTRlODdj
YTQ0OTU2ZDRhLi4zZDZmMzQyODkyYmM4ODM5MDY3OGU4YzM2NDYzOTExMGRlNGY1NzI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC0zNCw5ICszNCw5
IEBAIGNsYXNzIE1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lc3NhZ2VT
ZW5kZXIoKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBt
ZXNzYWdlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNz
YWdlLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCiAgICAgewotICAg
ICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCB7
IH0pOworICAgICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlv
blNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTQ4LDYgKzQ4LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29k
ZXIpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFQ+CisgICAgYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9iamVjdElkZW50
aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25z
ID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KICAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25T
ZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKQEAgLTY1LDggKzcxLDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRp
bWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgorICAgIHZvaWQgc2VuZFdp
dGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewog
ICAgICAgICBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDUyNTE0OTAyYWJiZTFjYzcxNDZiNDNiZTdjZDhjNDZiYWI0OTA1ODguLjVi
OTc1MzAzMDViMDQ5OWRjOGYyZTg0ZWNjZTBmMzFlOGU2NWQ3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjA1LDYgKzIwNSw3IEBAIGRlZiBmb3J3YXJk
X2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICdTdHJpbmcnLAog
ICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OkZldGNoSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCmluZGV4IGE2YTAwOTk1
NTAwZTc2MzNlMGQ0NWIxOGE0NDdjNzQyYTY5MjIwYWIuLmU2MDVhNDU5NDZmZmM3ZjFkMDdjYjg0
ZThmNWNiOTg3YmJmMzY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElQYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhh
bmRsZS5jcHAKQEAgLTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBh
Z2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhh
bmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsK
IH0KIAotUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVp
bnQ2NF90IHBhZ2VJRCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29u
dmVydGluZyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6
UGFnZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VI
YW5kbGU6OlBhZ2VIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlz
QXV0b2NvbnZlcnRpbmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2Nv
bnZlcnRpbmcoaXNBdXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBh
Z2VIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFn
ZUhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJl
c3VsdCkKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YWdlSUQpKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7Cisg
ICAgZGVjb2RlciA+PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGlzQXV0b2NvbnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1
bHQgPSBpc0F1dG9jb252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNy
ZWF0ZShwYWdlSUQpOworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRv
Y29udmVydGluZygqcGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFm
YmRjMzFiNzkxYTlmYzBhYTYyNmZjOTBhNzQ4ZWYwODk0OC4uNmExY2ZiNjk4MjU5YmY0OGQ0ZDhl
ZDU4ZWNiODdiMGYyMjY3NDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSVBhZ2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhh
bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEFQSVBhZ2VIYW5kbGVfaAogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zOCwyMCArMzksMjAg
QEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFBhZ2VIYW5kbGUgOiBwdWJsaWMgT2JqZWN0SW1w
bDxPYmplY3Q6OlR5cGU6OlBhZ2VIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBh
Z2VIYW5kbGU+IGNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHN0YXRpYyBSZWY8UGFnZUhh
bmRsZT4gY3JlYXRlQXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMg
UmVmPFBhZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc3Rh
dGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7CiAgICAgdmlydHVhbCB+UGFnZUhhbmRsZSgpOwogCi0gICAgdWludDY0X3QgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIGJvb2wgaXNBdXRv
Y29udmVydGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvY29udmVydGluZzsgfQogCiAgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KElQQzo6RGVjb2RlciYsIFJlZlB0cjxPYmplY3Q+Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgUGFnZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZyk7Cisg
ICAgUGFnZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgYm9vbCBpc0F1dG9jb252ZXJ0
aW5nKTsKIAotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIGNvbnN0IGJvb2wgbV9pc0F1dG9jb252ZXJ0
aW5nOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaAppbmRleCA4NmY4MDQxNzA5YWJkNWMzY2Q2NGNkODIwZjg2MzUy
Y2FjMmE0ZDUxLi40MDQwODE3ODAwMmE5NDY3MWQzNTBkZjI2MWUwOGM5NTBlZWYyYjgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a09iakNQdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNzMsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9sYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVj
ZXNzYXJ5OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eVRva2VuPiBtX3BlbmRpbmdSZXBsaWVzOwogICAgIGJvb2wgbV9pc1JlZ2lzdGVy
ZWRBc01lc3NhZ2VSZWNlaXZlciB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9tZXNzYWdlUmVj
ZWl2ZXJJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX21lc3NhZ2VSZWNl
aXZlcklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KaW5k
ZXggNThjYjFkZDJiNWU3YzdjNmIwOTY1YWY2N2E1NTc2MmY0OTU5ODMwNi4uN2U5N2YxNzZjMDhh
NTg1YjFiOWMyNDMwZmU5NjEzYmQzYTM5MTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgs
NyArMjgsNyBAQAogCiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAot
LSAoaWQpX2luaXRXaXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBh
Z2VJRDooV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0g
KGlkKV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFz
aAogewotICAgIHJldHVybiBfcGFnZUlEOworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7
CiB9CiAKIC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJP
T0wpaXNFcXVhbDooaWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVy
ICopY29kZXIKIHsKLSAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdl
SUQiXTsKKyAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpA
InBhZ2VJRCJdOwogfQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAg
LTYxLDcgKzYxLDcgQEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBf
cGFnZUlEID0gW2NvZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJ
RCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2Nv
ZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0Nv
bnRleHRIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYTc0ZmI0Mjhj
MjBlOTdjYmVmNmFkN2UzNjU4OTQzLi40M2U0MWUyNGNkMzYzMzZiNTQ3ODRiMDAzY2YxN2JiYzE2
ZjY3YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKQEAgLTI0LDExICsyNCwx
MiBAQAogICovCiAKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlLmgiCisjaW1wb3J0
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRl
eHRIYW5kbGUgKCkKIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXIgPSBf
cGFnZUlEKSB1aW50NjRfdCBwYWdlSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGdldHRlcj1fcGFnZUlEKSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAKLS0gKGlk
KV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlEOworLSAoaWQpX2luaXRXaXRoUGFnZUlE
OihXZWJDb3JlOjpQYWdlSWRlbnRpZmllcilwYWdlSUQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LmNwcAppbmRleCBlYjhhMGI2NjE3YWU1M2I1MDk4Zjg4NjIwNmNkZjczZTg4NDIxNDM1Li5k
NGUxYzI1MDA4MTEyYmJiZGY1ODM2Zjk2N2YwYzgzYzBjNmY3MTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuY3BwCkBAIC02Niw3ICs2Niw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0
X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKm1fZGVzdGluYXRpb25JRDsKKyAgICByZXR1cm4gbV9k
ZXN0aW5hdGlvbklELT50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpjYW5NYWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBy
ZXBseSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmkKICAgICBwbGF0
Zm9ybU9wZW5QYXltZW50U2V0dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGlu
Z1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvJiBjb29yZGluYXRvciA9IGFjdGl2ZVBheW1lbnRDb29yZGluYXRvclByb3h5
KCkpCiAgICAgICAgIGNvb3JkaW5hdG9yLT5kaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgKaW5kZXggZDIzN2VhYjNkYWI4NzlhNWRhMzU3MWY4OTEwMWQ3ZWU5NzA1
OTZiMi4uNmU0YTg1Y2YyZTI3ZmU0NjVhYWQ3NWNlZTIzYmNhZTJkZTdmZTAyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3Bl
blBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBkb21haW5OYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2
b2lkIHNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBz
aG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
ICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAg
ICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBDbGllbnQmIG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBtX2Rlc3RpbmF0aW9uSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IG1fZGVzdGluYXRpb25JRDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAv
LyBJZGxlIC0gTm90aGluZydzIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggZGQzMTMxMjdiZjRhOGExYWEwYzZkZWNjNmQyMzRmOWJkYmFhYjdk
My4uMWRlNGNkZGNlNGIxMjYzZTJkMGI5NGJmYjkzMTkxNDhiYmMxODIzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhB
Y3RpdmVDYXJkKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGNhbk1ha2VQYXltZW50cykgQXN5bmMK
ICAgICBPcGVuUGF5bWVudFNldHVwKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBk
b21haW5OYW1lKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKLSAgICBTaG93UGF5bWVudFVJKHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAo
Ym9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdz
LCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkg
LT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uKFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lv
bikKICAgICBDb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6
OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRh
dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA2ZWIzMzVmMDdkM2NmZTYyOTAwMDcx
Y2RhYTc4OTNmMDQzMzViZWFhLi45ZGViNzZmZjEzMmM2Y2I1ZmRmNWViZjUyMjIzNGY2ZDQ0M2Vm
OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdWludDY0
X3QgQXV0aGVudGljYXRpb25NYW5hZ2VyOjphZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcChDaGFs
bGVuZ2UmJiBjaGFsbGVuZ2UKICAgICByZXR1cm4gY2hhbGxlbmdlSUQ7CiB9CiAKLWJvb2wgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlKSBjb25zdAorYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNob3VsZENvYWxl
c2NlQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQs
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0CiB7CiAgICAg
aWYgKCFjYW5Db2FsZXNjZUNoYWxsZW5nZShjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMDgsNyArMTA4LDcgQEAgVmVjdG9yPHVpbnQ2NF90PiBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmNvYWxlc2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWwKICAgICByZXR1
cm4gY2hhbGxlbmdlc1RvQ29hbGVzY2U7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChw
YWdlSUQpOwogICAgIEFTU0VSVChmcmFtZUlEKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVp
bnQ2NF90IHBhZ2VJRCwgdQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICB1aW50NjRfdCBkdW1teVBhZ2VJRCA9IDA7CisgICAgUGFnZUlkZW50aWZpZXIgZHVtbXlQ
YWdlSUQ7CiAgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5n
ZU1hcCh7IGR1bW15UGFnZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikgfSk7CiAgICAgCiAgICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0
aGUgc2FtZSBwcm90ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaAppbmRleCA3ZmUzOTllMGI3ZTk0NThiZDkxNzgyNTkzODQxZTRjNDQ5MzM1YWUx
Li44NmU3NDRjMTA4ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2YjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2
MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
Jik7CiAKICAgICB2b2lkIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
Y2hhbGxlbmdlSUQsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6
OkNyZWRlbnRpYWwmJik7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgQ2hhbGxlbmdlIHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKICAgICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXIgY29tcGxldGlvbkhhbmRsZXI7CiAgICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCiAgICAgdWludDY0X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VN
YXAoQ2hhbGxlbmdlJiYpOwotICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKKyAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50
NjRfdD4gY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0
NzVkYzJiYjhmZjc3ZmE0MTcyNWMwODNiMGY3NTA5OTUzOS4uMTkyNTNlMmJhYjZhMTdiZWY0NjYz
NjY3ZmQ0OGFiOWU5ZTA1MTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4
aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nl
c3MuaApAQCAtNjIsNiArNjIsMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNz
YWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
LCByZWNlaXZlcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7Cisg
ICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklELnRvVUludDY0KCkpOworICAgIH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4
dElucHV0Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5o
CmluZGV4IDRmNzVmZDgwNmY2OGQ2YTk5OWJiYTZhNDViMTQ1NzQ3NmZjYWI4OGMuLjU0ZDQyNzdi
ODUzOGZiYTQxNTZhYjgzZDZhZGI4OTU3ODI4YTBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
ZXh0SW5wdXRDb250ZXh0LmgKQEAgLTI5LDEzICsyOSwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRleHRJbnB1
dENvbnRleHQgewogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CiAKLSAgICB1
aW50NjRfdCB3ZWJQYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3
ZWJQYWdlSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1l
bnRJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVu
dGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwCmluZGV4IDlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdjZjRkODQyZGZmMzk2ZWQuLmQ5
MDBhMTY3MzNhOWNlNTNmNzZlOTdmODk1OWMxNDdhNzUwODk3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRf
dCBwYWdlSUQpCitSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0Zvcndh
cmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZN
b3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAg
ICAgLCBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oCmluZGV4IDg3MmVmMTgwOTVkMThjYzNhOWM1ZTc0NjNkMzBlN2Y2MTQ4NzJmNWUuLjQ0
YWY3YzY2NTkwNzQ2ZGY5ODJlMDVjMTNiZWVjZDA2YTc4NjRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQ2LDcgKzQ3LDcgQEAgY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6QmFja0ZvcndhcmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50
NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3Jl
YXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGljIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0
dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWludDY0
X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9jZXNz
SWRlbnRpZmllcihjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmllcikg
eyBtX2xhc3RQcm9jZXNzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4Miwx
MiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3VzcGVuZGVkUGFn
ZUZyb21Qcm9jZXNzUG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRl
bVN0YXRlOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nl
c3NJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRl
ZFBhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCBlOWRhNjBhZWViZWZmMWRhNjkxZTFlNDUzMzczNTc3YTNhOTQw
YTI1Li42OTk0ODI1ZDA4MWNiMDk5NDg0MmFjY2RjZTQ4NDZlM2RkYjBlOTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
NTMsNyArNTMsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1c2VyQWdlbnQ7CiAgICAg
ZW5jb2RlciA8PCBpdGVtU3RhdGVzOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbklEOwotICAgIGVu
Y29kZXIgPDwgdXNlckNvbnRlbnRDb250cm9sbGVySUQudG9VSW50NjQoKTsKKyAgICBlbmNvZGVy
IDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklEOwogICAgIGVuY29kZXIgPDwgdmlzaXRlZExpbmtU
YWJsZUlEOwogICAgIGVuY29kZXIgPDwgd2Vic2l0ZURhdGFTdG9yZUlEOwogICAgIGVuY29kZXIg
PDwgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwpAQCAtMTkzLDExICsxOTMsMTEgQEAg
T3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIE9wdGlv
bmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyOwogICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxl
cklEID0gbWFrZU9iamVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
clR5cGU+KCp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyAgICBwYXJhbWV0ZXJz
LnVzZXJDb250ZW50Q29udHJvbGxlcklEID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXI7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJs
ZUlEKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTM5Miw3ICszOTIsNyBAQCBP
cHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IHBhcmFtZXRlcnMuYmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsK
IAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVpbnQ2NF90Pj4gb2xkUGFnZUlEOworICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4g
b2xkUGFnZUlEOwogICAgIGlmICghb2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCmluZGV4IGMyYmU4NDE0NmIzNGVhNzU2MTk3MDc1YWM4YjJjYmMzOGJlYzQyZTAuLjkwMTI3
YmMzMTAzMGVlZTAzZjI2MjdlOTdjYWQ0NWY5YjdiNjljMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1p
bGVzdG9uZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29s
b3I+IGJhY2tncm91bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBE
YXRhLmNwcAppbmRleCA5NjM5ZDAxNWMyZjk0ZTY3Yjc2NzIyOGFkMjNiMWQ5YzQzYjM1MDA3Li40
ZDFjY2VhNjU2MzA5NmM1YWFhMmZmZmE2MzljYWJjOTMxOTIyYjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcApAQCAtMzQsNyArMzQsNyBAQCB2b2lkIFdlYlBh
Z2VHcm91cERhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBpZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwSUQ7Ci0gICAg
ZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLnRvVUludDY0KCk7Cisg
ICAgZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfQogCiBPcHRp
b25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQpAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VHcm91cERh
dGE+IFdlYlBhZ2VHcm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAg
aWYgKCFwYWdlR3JvdXBJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAg
ICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcjsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIHt7IFdURk1vdmUo
KmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpwYWdlR3JvdXBJRCksIG1ha2VPYmplY3RJZGVudGlmaWVy
PFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcikgfX07CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBX
VEZNb3ZlKCpwYWdlR3JvdXBJRCksICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH19
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
T2JqQ09iamVjdEdyYXBoLm1tCmluZGV4IGM2NTQ4NGY1NTEyMjBkZGJjOGI4NGI3OTZhY2IwNTk4
ODcyNmI4NzMuLmZlNjZkZTY1OTJhYTBhZjIzNDU4ODJkYjNkNDFhMTJjYTJiOWJjMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQpAQCAtMjk4LDExICsy
OTgsMTIgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICB9CiAKICAgICBjYXNlIE9iakNUeXBlOjpX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZTogewotICAgICAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFnZUlEKSkKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKKyAgICAgICAgZGVjb2RlciA+PiBwYWdlSUQ7Cisg
ICAgICAgIGlmICghcGFnZUlEKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHJlc3VsdCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRX
aXRoUGFnZUlEOnBhZ2VJRF0pOworICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2lu
Z0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDoqcGFnZUlEXSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAyYzFmM2U5NzdiMmU1MmRiZjljNTk1NDc5
YzE2NGM5NmI1MTNmMjQ4Li45MzU2ZWUzZTRiMjE4NTBkNDkxZjA1NWVhNWQzMTIyNWI0YzAwODBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcApAQCAtMTc0OSw1ICsxNzQ5LDUgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0
V2ViVmlld0Rlc3Ryb3llZChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3
KgogCiBXZWJLaXRXZWJWaWV3KiB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UoV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIHJldHVy
biBwYWdlID8gY29udGV4dC0+cHJpdi0+d2ViVmlld3MuZ2V0KHBhZ2UtPnBhZ2VJRCgpKSA6IDA7
CisgICAgcmV0dXJuIHBhZ2UgPyBjb250ZXh0LT5wcml2LT53ZWJWaWV3cy5nZXQocGFnZS0+cGFn
ZUlEKCkudG9VSW50NjQoKSkgOiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAppbmRl
eCAxMDc1NzgxYWYyYzNmOGE3ZWE3YzYxODZlYmNmNzljNzA4MWMxOTk3Li4yZjljZmU5NDI0MDI2
MTcyZDkwNmRiZDFhMDNjNGNkMDE1NDRiYjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcApAQCAt
NTQsNiArNTQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7Cit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogU3RyaW5nIEF1dG9tYXRpb25Db21t
YW5kRXJyb3I6OnRvUHJvdG9jb2xTdHJpbmcoKQogewpAQCAtNTIyLDcgKzUyMyw3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OndhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uRnJhbWUo
V2ViRnJhbWVQcm94eSYgZnJhCiAgICAgfQogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
OjpyZXNwb25kVG9QZW5kaW5nUGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlPj4mIG1hcCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRp
bmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8UGFnZUlkZW50aWZp
ZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYg
bWFwKQogewogICAgIEluc3BlY3Rvcjo6RXJyb3JTdHJpbmcgdGltZW91dEVycm9yID0gU1RSSU5H
X0ZPUl9QUkVERUZJTkVEX0VSUk9SX05BTUUoVGltZW91dCk7CiAgICAgZm9yIChhdXRvIGlkIDog
Y29weVRvVmVjdG9yKG1hcC5rZXlzKCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKaW5kZXggNjVlYjNl
NDZlNWI4OGJhODJhYzJkMTAyNGVjYWU2M2NiMzRkNzA4Ny4uZjM5YzA2MWI1Nzg5MmE5MjQ4ZmQw
OWRmZmNmYTdiOGM1MGEwNzUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaApAQCAtMzQsNiArMzQsNyBA
QAogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgogI2luY2x1ZGUgIlNpbXVsYXRlZElucHV0
RGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KQEAgLTIyNSw3
ICsyMjYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxl
dGVPblBhZ2UoV2ViUGFnZVByb3h5JiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6QXV0b21hdGlvbjo6
UGFnZUxvYWRTdHJhdGVneSwgU2Vjb25kcywgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZT4mJik7CiAgICAgdm9pZCB3YWl0Rm9yTmF2aWdhdGlvblRvQ29tcGxl
dGVPbkZyYW1lKFdlYkZyYW1lUHJveHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpQYWdlTG9hZFN0cmF0ZWd5LCBTZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlPiYmKTsKLSAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2
aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYpOworICAgIHZvaWQgcmVz
cG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNo
ZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCByZXNwb25kVG9QZW5kaW5nRnJhbWVOYXZp
Z2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CiAgICAgdm9pZCBsb2Fk
VGltZXJGaXJlZCgpOwogCkBAIC0yODAsMjIgKzI4MSwyMiBAQCBwcml2YXRlOgogICAgIFJlZjxJ
bnNwZWN0b3I6OkF1dG9tYXRpb25CYWNrZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5EaXNwYXRjaGVy
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkF1dG9tYXRpb25Gcm9udGVuZERpc3Bh
dGNoZXI+IG1fZG9tYWluTm90aWZpZXI7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBTdHJpbmc+
IG1fd2ViUGFnZUhhbmRsZU1hcDsKLSAgICBIYXNoTWFwPFN0cmluZywgdWludDY0X3Q+IG1faGFu
ZGxlV2ViUGFnZU1hcDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdHJp
bmc+IG1fd2ViUGFnZUhhbmRsZU1hcDsKKyAgICBIYXNoTWFwPFN0cmluZywgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXI+IG1faGFuZGxlV2ViUGFnZU1hcDsKIAogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFN0cmluZz4gbV93ZWJGcmFtZUhhbmRsZU1hcDsKICAgICBIYXNoTWFwPFN0cmluZywgdWludDY0
X3Q+IG1faGFuZGxlV2ViRnJhbWVNYXA7CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9y
bWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJh
Y2tCYXNlPj4gbV9wZW5kaW5nRWFnZXJOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFj
a3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJ
bnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3Jt
YWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5n
Q29udGV4dENhbGxiYWNrc1BlclBhZ2U7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1h
bE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlckZyYW1lOwogICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFj
a0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNr
c1BlckZyYW1lOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNwZWN0b3JDYWxsYmFja3NQ
ZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxJbnNw
ZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdJbnNwZWN0
b3JDYWxsYmFja3NQZXJQYWdlOwogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJB
Q1RJT05TKQotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0
b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5j
dGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ0tl
eWJvYXJkRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKICNpZiBFTkFCTEUo
V0VCRFJJVkVSX01PVVNFX0lOVEVSQUNUSU9OUykKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBGdW5j
dGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ01v
dXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVy
cm9yPik+PiBtX3BlbmRpbmdNb3VzZUV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOwogI2Vu
ZGlmCiAKICAgICB1aW50NjRfdCBtX25leHRFdmFsdWF0ZUphdmFTY3JpcHRDYWxsYmFja0lEIHsg
MSB9OwpAQCAtMzE5LDcgKzMyMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyIEFQSXMgdGFrZSBhIHNldCBvZiBpbnB1dCBzb3VyY2VzLiBXZSBhbHNvIGludGVy
biB0aGVzZQogICAgIC8vIHNvIHRoYXQgcHJldmlvdXMgaW5wdXQgc291cmNlIHN0YXRlIGlzIHVz
ZWQgYXMgaW5pdGlhbCBzdGF0ZSBmb3IgbGF0ZXIgY29tbWFuZHMuCiAgICAgSGFzaFNldDxSZWY8
U2ltdWxhdGVkSW5wdXRTb3VyY2U+PiBtX2lucHV0U291cmNlczsKLSAgICBIYXNoTWFwPHVpbnQ2
NF90LCBSZWY8U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyPj4gbV9pbnB1dERpc3BhdGNoZXJzQnlQ
YWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZjxTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI+PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CiAjZW5kaWYKICNpZiBF
TkFCTEUoV0VCRFJJVkVSX0tFWUJPQVJEX0lOVEVSQUNUSU9OUykKICAgICAvLyBLZWVwIHRyYWNr
IG9mIGN1cnJlbnRseSBhY3RpdmUgbW9kaWZpZXJzIGFjcm9zcyBtdWx0aXBsZSBrZXlzdHJva2Vz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApp
bmRleCA5ODkzZDM5OGI1NzQ2MmFkOWI4ODgzOGUyMjcxMGZjYWYwNDYzMGQwLi42YjA5YmFkYjhk
MGNlYmFiZjJjNjlmNjAwOWIxYmQxZDIzYzA5ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaApAQCAtNTEsNiArNTEsMTggQEAgcHVibGlj
OgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMg
PSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYmIG1lc3Nh
Z2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMg
dGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0
aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4g
dm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEFyZ3Mu
Li4pPiYmKTsKKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAg
IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklE
LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzZW5kPFQ+KFdURk1vdmUobWVzc2FnZSksIGRlc3RpbmF0aW9uSUQudG9V
SW50NjQoKSwgc2VuZE9wdGlvbnMpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZFN5bmMoVCYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFQ6OlJlcGx5JiYgcmVwbHksIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgU2Vj
b25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5
bmNPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdURk1v
dmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHRp
bWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CisgICAgfQogCiAgICAgSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uKCkgY29uc3QKICAgICB7CkBAIC02Nyw2ICs3OSwxOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2Vp
dmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsK
ICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNz
YWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKICAgICB2b2lkIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1l
KTsKKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFkZE1lc3NhZ2VS
ZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJ
ZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZl
cikKKyAgICB7CisgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1l
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKKyAgICB9CisgICAgCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBD
OjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxU
PiBkZXN0aW5hdGlvbklEKQorICAgIHsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CisgICAgfQogCiAg
ICAgZW51bSBjbGFzcyBTdGF0ZSB7CiAgICAgICAgIExhdW5jaGluZywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eS5tbQppbmRleCBmMDVkNzljMGQwMWI4OWQ2YjY4NDhjYTI1MDZjY2Y5MWRjZmI3NjcxLi42
NzA2NTk3Njg2MThlZDc1Zjk4MGMxMWFkYWNhOTFiZTI5OWU0ZWQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tCkBAIC01MjcsOTQgKzUyNyw5NCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2NF90IGNvbgog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGxheSh1aW50NjRfdCBjb250ZXh0
SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpQbGF5KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGxheShjb250ZXh0SWQpKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnBhdXNlKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlBhdXNlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojp0b2dnbGVQbGF5U3RhdGUodWludDY0
X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6VG9nZ2xlUGxheVN0YXRlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9n
Z2xlUGxheVN0YXRlKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6YmVnaW5TY3J1YmJpbmcodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY3J1YmJpbmco
Y29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250ZXh0SWQpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmVuZFNjcnViYmluZyh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpFbmRTY3J1YmJpbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY3J1
YmJpbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpzZWVrVG9UaW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHRpbWUsIGRvdWJsZSB0b2xl
cmFuY2VCZWZvcmUsIGRvdWJsZSB0b2xlcmFuY2VBZnRlcikKIHsKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0
aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFmdGVyKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWVr
VG9UaW1lKGNvbnRleHRJZCwgdGltZSwgdG9sZXJhbmNlQmVmb3JlLCB0b2xlcmFuY2VBZnRlcikp
OwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZmFzdFNlZWsodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgdGltZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkZhc3RTZWVrKGNvbnRleHRJZCwgdGltZSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5nRm9yd2FyZCh1aW50NjRfdCBjb250ZXh0
SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpCZWdpblNjYW5uaW5nRm9yd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nh
bm5pbmdGb3J3YXJkKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6YmVnaW5TY2FubmluZ0JhY2t3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nh
bm5pbmdCYWNrd2FyZChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdCYWNr
d2FyZChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OmVuZFNjYW5uaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjYW5uaW5nKGNvbnRleHRJZCksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RBdWRpb01lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRl
eHRJZCwgdWludDY0X3QgaW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RBdWRpb01lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5k
ZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRl
eCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2VsZWN0TGVnaWJs
ZU1lZGlhT3B0aW9uKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3QgaW5kZXgpCiB7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdp
YmxlTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0TGVn
aWJsZU1lZGlhT3B0aW9uKGNvbnRleHRJZCwgaW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUodWludDY0X3QgY29udGV4
dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2ds
ZVBpY3R1cmVJblBpY3R1cmUoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5Ojp0b2dnbGVNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVNdXRlZChj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJZCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6c2V0TXV0ZWQodWludDY0X3QgY29udGV4
dElkLCBib29sIG11dGVkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6U2V0TXV0ZWQoY29udGV4dElkLCBtdXRlZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2V0TXV0ZWQoY29udGV4dElkLCBtdXRlZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6c2V0Vm9sdW1lKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHZvbHVtZSkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNl
dFZvbHVtZShjb250ZXh0SWQsIHZvbHVtZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRl
eHRJZCwgdm9sdW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojpz
ZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4odWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQog
ewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6U2V0UGxheWluZ09uU2Vjb25kU2NyZWVuKGNvbnRleHRJZCwgdmFs
dWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElk
LCB2YWx1ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cmVxdWVz
dENvbnRyb2xsZWRFbGVtZW50SUQoKQogewogICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRl
eHRJZCkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdChtX2NvbnRyb2xzTWFuYWdlckNv
bnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1
ZXN0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7CiB9CiAKIFBsYXRmb3JtUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlKiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNvbnRyb2xzTWFu
YWdlckludGVyZmFjZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KaW5kZXggNmJhNDc5ZTA2MGEw
OTZjNDM5NTFlYTc0YmY4OTdiYTY3MTY4OWY3ZS4uYzhkNjVjMzYyYWFjODJjNjQxMTk1MTE2NDk4
YTExNzljNTMzZTQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQpAQCAtNjIwLDQzICs2MjAs
NDMgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnByZXBhcmVkVG9FeGl0RnVs
bHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBm
aW5pc2hlZFdpdGhNZWRpYSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZp
bmlzaGVkV2l0aE1lZGlhKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0RnVsbHNjcmVlbk1vZGUoY29u
dGV4dElkLCBtb2RlLCBmaW5pc2hlZFdpdGhNZWRpYSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4
dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6UmVxdWVzdFVwZGF0ZUlubGluZVJlY3QoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1
ZXN0VXBkYXRlSW5saW5lUmVjdChjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0
SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpSZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1
ZXN0VmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0
SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpSZXR1cm5WaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVy
blZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsK
LSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZFNl
dHVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZFNldHVwRnVsbHNjcmVl
bihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6Ondp
bGxFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxzY3JlZW4oY29u
dGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpXaWxsRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRFeGl0RnVsbHNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpEaWRFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OkRpZEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIG1fcGFnZS0+ZGlkRXhpdEZ1
bGxzY3JlZW4oKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEVu
dGVyRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4
dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAg
bV9wYWdlLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKIH0KIApAQCAtNjcwLDcgKzY3MCw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRDbGVhbnVwRnVsbHNjcmVlbih1aW50
NjRfdCBjb250ZXh0SWQpCiAgICAgW0NBVHJhbnNhY3Rpb24gZmx1c2hdOwogICAgIFttb2RlbC0+
bGF5ZXJIb3N0VmlldygpIHJlbW92ZUZyb21TdXBlcnZpZXddOwogICAgIG1vZGVsLT5zZXRMYXll
ckhvc3RWaWV3KG51bGxwdHIpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6RGlkQ2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpEaWRDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKIAogICAgIGludGVyZmFjZS0+
c2V0TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsK
ICAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CkBAIC02ODgsMjUgKzY4OCwy
NSBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6c2V0VmlkZW9MYXllckZyYW1l
KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZQogICAgICAgICBtYWNoX3BvcnRfbmFtZV90IGZl
bmNlUG9ydCA9IGZlbmNlU2VuZFJpZ2h0LmxlYWtTZW5kUmlnaHQoKTsKICNlbmRpZgogCi0gICAg
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0Vmlk
ZW9MYXllckZyYW1lRmVuY2VkKGNvbnRleHRJZCwgZnJhbWUsIElQQzo6QXR0YWNobWVudChmZW5j
ZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlNldFZp
ZGVvTGF5ZXJGcmFtZUZlbmNlZChjb250ZXh0SWQsIGZyYW1lLCBJUEM6OkF0dGFjaG1lbnQoZmVu
Y2VQb3J0LCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpKTsKICAgICB9CiB9CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyR3Jhdml0eSh1aW50NjRfdCBj
b250ZXh0SWQsIFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlZpZGVvR3Jhdml0eSBncmF2aXR5
KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
U2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OlNldFZpZGVvTGF5ZXJHcmF2aXR5RW51bShjb250ZXh0SWQsICh1bnNpZ25l
ZClncmF2aXR5KSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpmdWxs
c2NyZWVuTW9kZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSkKIHsKICAgICBtX3BhZ2UtPnVp
Q2xpZW50KCkuaGFzVmlkZW9JblBpY3R1cmVJblBpY3R1cmVEaWRDaGFuZ2UobV9wYWdlLCBtb2Rl
ICYgTWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUp
OwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKGNvbnRleHRJZCwgbW9kZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNj
cmVlbk1vZGVDaGFuZ2VkKGNvbnRleHRJZCwgbW9kZSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNv
bnRleHRJZCkKIHsKICAgICBib29sIGlzVmlld1Zpc2libGUgPSBtX3BhZ2UtPmlzVmlld1Zpc2li
bGUoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OkZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIGlzVmlld1Zpc2libGUpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OkZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIGlzVmll
d1Zpc2libGUpKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlZpZXdJbXBsLm1tCmluZGV4IDJhYTc0OGYwMDRmMjIyYTAxZGRiN2FjOGVlZTcxMzJjYTc4
ODkwY2EuLjA4YTNkMzA4ZDNhNTBmMTk0NTQ0YzEzZTc5MWIzNmE3MTNiM2Q0YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCkBAIC0xOTk3LDEzICsx
OTk3LDEzIEBAIGZsb2F0IFdlYlZpZXdJbXBsOjppbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rvcigp
IGNvbnN0CiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuKCkKIHsK
LSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRv
d0RpZE9yZGVyT2ZmU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFj
dGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9m
ZlNjcmVlbiIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdl
LT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHsgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNp
YmxlLCBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpXaW5kb3dJc0FjdGl2ZSB9KTsKIH0KIAogdm9p
ZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkT3JkZXJPblNjcmVlbigpCiB7Ci0gICAgTE9HKEFjdGl2
aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2Ny
ZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJX
ZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRPcmRlck9uU2NyZWVuIiwgdGhpcywg
bV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFj
dGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCkBAIC0yMDcxLDcgKzIwNzEsNyBA
QCB2b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRDaGFuZ2VMYXllckhvc3RpbmcoKQogCiB2b2lk
IFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSgpCiB7Ci0gICAgTE9H
KEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFu
Z2VPY2NsdXNpb25TdGF0ZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rp
dml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkQ2hhbmdlT2Nj
bHVzaW9uU3RhdGUiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1f
cGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUpOwogfQogCkBAIC0yMjM0LDE5ICsyMjM0LDE5IEBAIHZvaWQgV2ViVmlld0ltcGw6OnZp
ZXdEaWRDaGFuZ2VCYWNraW5nUHJvcGVydGllcygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OnZpZXdE
aWRIaWRlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdl
ICVsbHUpIHZpZXdEaWRIaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFj
dGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkSGlkZSIsIHRo
aXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZv
aWQgV2ViVmlld0ltcGw6OnZpZXdEaWRVbmhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRl
LCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBh
Z2UgJWxsdSkgdmlld0RpZFVuaGlkZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQo
KSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2ViVmlld0ltcGw6OmFjdGl2ZVNwYWNlRGlk
Q2hhbmdlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdl
ICVsbHUpIGFjdGl2ZVNwYWNlRGlkQ2hhbmdlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSBhY3RpdmVT
cGFjZURpZENoYW5nZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAg
bV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0RyYXdp
bmdBcmVhUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94
eS5jcHAKaW5kZXggYjViNGUwYWQyMjE2MmM5ZDBjMDBjOThjZDgzOTM1MDlmY2Y2ZGY4MS4uZWNm
NWRhMGE5MTBiNjM5NDgwYWMzMmE1ZmIxYjBmYjBjZmZmZjZlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAKQEAgLTQ4LDEyICs0OCwxMiBAQCBEcmF3
aW5nQXJlYVByb3h5OjpEcmF3aW5nQXJlYVByb3h5KERyYXdpbmdBcmVhVHlwZSB0eXBlLCBXZWJQ
YWdlUHJveHkmIHdlYlBhZ2VQcgogICAgICwgbV92aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXIo
UnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmRHJhd2luZ0FyZWFQcm94eTo6dmlld0V4cG9zZWRSZWN0
Q2hhbmdlZFRpbWVyRmlyZWQpCiAjZW5kaWYKIHsKLSAgICBwcm9jZXNzLmFkZE1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBEcmF3aW5nQXJlYVByb3h5Ojp+RHJhd2luZ0Fy
ZWFQcm94eSgpCiB7Ci0gICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6RHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6RHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIp
OwogfQogCiBib29sIERyYXdpbmdBcmVhUHJveHk6OnNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6
ZSwgY29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNDQzYjM4
NWZhYzc0MWNkOGIyNGJhY2VlMDhiMDczNGQwN2UwMjcyLi4yZDk5NjZlM2M4M2ZiMWE0NDAzZTA3
ZGY5YzU0YmJkYmQ0YjMwOTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzKGNvbnN0IElQQzo6QXR0YQogI2VuZGlmCiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjb3Jl
Q2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBj
b3JlQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKIHsKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkgPSBtX3By
b2Nlc3NQb29sLnNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKHBhZ2VJRCkpIHsK
QEAgLTM3MSw3ICszNzEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZEZpbmlzaExh
dW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqIGxhdW5jaGVyLCBJUEM6OkNvbgogI2VuZGlmCiB9CiAK
LXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24s
IFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91
bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlBy
b2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51
bGwtY2hlY2sgYmVjYXVzZSBieSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUs
IHRoZSBwYWdlIG1heSBiZSBnb25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywK
QEAgLTM4Miw3ICszODIsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0
aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZQogICAgIHBhZ2UtPmxv
Z0RpYWdub3N0aWNNZXNzYWdlKG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCBzaG91bGRTYW1wbGUpOwog
fQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJl
c3VsdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hv
dWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2Fn
ZVdpdGhSZXN1bHQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hv
dWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICAvLyBGSVhNRTogV2UgZG8gdGhpcyBu
dWxsLWNoZWNrIGJlY2F1c2UgYnkgdGhlIHRpbWUgdGhlIGRlY2lzaW9uIHRvIGxvZyBpcyBtYWRl
LCB0aGUgcGFnZSBtYXkgYmUgZ29uZS4gV2Ugc2hvdWxkIHJlZmFjdG9yIHRvIGF2b2lkIHRoaXMs
CkBAIC0zOTMsNyArMzkzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9z
dGljTWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBjb25zdAogICAgIHBhZ2UtPmxv
Z0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChtZXNzYWdlLCBkZXNjcmlwdGlvbiwgcmVzdWx0
LCBzaG91bGRTYW1wbGUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSog
cGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBX
ZSBkbyB0aGlzIG51bGwtY2hlY2sgYmVjYXVzZSBieSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8g
bG9nIGlzIG1hZGUsIHRoZSBwYWdlIG1heSBiZSBnb25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8g
YXZvaWQgdGhpcywKQEAgLTczNiw3ICs3MzYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpcwog
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEdyYW5k
ZmF0aGVyZWQoc2Vzc2lvbklELCByZXNvdXJjZURvbWFpbiwgaXNHcmFuZGZhdGhlcmVkKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBX
ZWJQcm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTkw
OCw3ICs5MDgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5vdGlmeVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZAogICAgIFdlYlByb2Nlc3NQcm94
eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6OkRpY3Rpb25hcnk6
OmNyZWF0ZShtZXNzYWdlQm9keSkucHRyKCkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICgh
Y2FuU2VuZE1lc3NhZ2UoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAppbmRleCAyMGE3OTk4YzRkYzI0YWIxNjU2ZjM5Mzg3ZjU3MDBmYTNjZTlhNjhlLi4yYmVjNjhm
ZDg5N2ZhNTk5MjNmMzE5ZTMxMDQ5MmY2OTg2ZmM4YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtODEsOCAr
ODEsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21haW4gPSBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Mg
PSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBPcGVuZXJEb21haW4gPSBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVuZXJQYWdlSUQgPSB1aW50
NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBGcmFtZUlEID0g
dWludDY0X3Q7CiAKICAgICBleHBsaWNpdCBOZXR3b3JrUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQ
b29sJik7CkBAIC0xMzEsNyArMTI5LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJldmFsZW50
UmVzb3VyY2VGb3JEZWJ1Z01vZGUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFZlcnlQcmV2
YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vz
c0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0
cmluZz4gZG9tYWlucyk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJt
KFBhZ2VJRCwgRnJhbWVJRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NDb25maXJtKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGcmFtZUlELCBj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCByZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRW
YWx1ZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAg
dm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBT
aG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lv
bklELCBPcHRpb25hbDxXYWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJT
dGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMTQ1LDcgKzE0Myw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUo
UEFMOjpTZXNzaW9uSUQsIGJvb2wgZGVidWdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jk
c1JlbW92YWwoUEFMOjpTZXNzaW9uSUQsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBB
TDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgY29t
bWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29u
c3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgUGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NT
aXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Npb25JRCwgY29uc3QgTmF2aWdhdGVk
RnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDcm9zc1Np
dGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3Qg
TmF2aWdhdGVkRnJvbURvbWFpbiYsIGNvbnN0IE5hdmlnYXRlZFRvRG9tYWluJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgYm9vbCBpbmNsdWRlSHR0cE9ubHlDb29raWVz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjA3LDEzICsyMDUsMTMgQEAgcHJp
dmF0ZToKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlTmV0d29y
a1Byb2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAg
ICAgdm9pZCBkaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcyhjb25zdCBJUEM6
OkF0dGFjaG1lbnQmKTsKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0
X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3Qg
Y2hhbGxlbmdlSUQpOwogICAgIHZvaWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxs
YmFja0lELCBjb25zdCBXZWJzaXRlRGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURh
dGEodWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVz
c2FnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGUpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUo
dWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJD
b3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aFJlc3VsdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhW
YWx1ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25z
dCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50
RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICAgICB2b2lkIGxvZ0dsb2JhbERpYWdu
b3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMs
IFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChQQUw6OlNlc3Npb25JRCwgY29uc3QgU3Ry
aW5nJiBldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYmU5OGU2NjYz
MGZhZDc5MDYxMDkyMGNlZjg1Mjc1ZGM5N2FkMWYxZC4uMjJmZmZkMTk4ODFiMjYzZTU3NDY5N2E5
OWE0OWI0Y2NlMzIzNjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMs
NyArMjMsNyBAQAogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZl
ciB7CiAgICAgRGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoSVBDOjpBdHRh
Y2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQogCi0gICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkK
KyAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogCiAgICAgRGlkRmV0Y2hX
ZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlRGF0
YSB3ZWJzaXRlRGF0YSkKICAgICBEaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFj
a0lEKQpAQCAtMzUsOSArMzUsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExl
Z2FjeVJlY2VpdmVyIHsKICAgICBTZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGlu
Z0xvY2tlZEZpbGVzKQogCiAgICAgIyBEaWFnbm9zdGljIG1lc3NhZ2VzIGxvZ2dpbmcKLSAgICBM
b2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJp
bmcgZGVzY3JpcHRpb24sIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2Ft
cGxlKQotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQs
IFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgZW51
bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCi0gICAgTG9nRGlhZ25v
c3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3Ry
aW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJl
cywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAgTG9n
RGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdHJpbmcg
bWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2Ny
aXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRTYW1wbGUg
c2hvdWxkU2FtcGxlKQorICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlv
biwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogICAgIExvZ0dsb2JhbERpYWdub3N0
aWNNZXNzYWdlV2l0aFZhbHVlKFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRv
dWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29y
ZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCkBAIC00Niw3ICs0Niw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
UHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIE5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JS
ZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9y
UmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKQogICAgIE5vdGlmeVJlc291cmNlTG9hZFN0YXRp
c3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlcywg
dW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNp
Z25lZCB0b3AzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucykKLSAgICBSZXF1ZXN0U3RvcmFn
ZUFjY2Vzc0NvbmZpcm0odWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9wRnJhbWVEb21haW4pIC0+IChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgQXN5bmMK
KyAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJG
cmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4pIC0+
IChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgQXN5bmMKICAgICBEZWxldGVXZWJzaXRlRGF0YUlu
VUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgVmVjdG9yPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSAtPiAoSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKSBBc3luYwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCBmYWUxZjNmY2E4ODg3MTliZTdmNjI3MmQyMDU3MjBi
Yjg5MDE3N2ZlLi4yYWFmZjFlYzJhNjU0OTBkODg1NDM5OTZiZjgxMDJjMmQ0OWM1MDQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCkBAIC05Nyw3ICs5Nyw3IEBA
IHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2Vi
UGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsCiB7CiAgICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0
aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNhdGlvbklEKCk7CiAgICAgYXV0byBub3RpZmlj
YXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFn
LCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xvYmFsTm90aWZpY2F0aW9uSUQpOwotICAgIHN0
ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFr
ZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpOworICAgIHN0ZDo6
cGFpcjxQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+IG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6
bWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdlTm90aWZpY2F0aW9uSUQpOwogICAgIG1f
Z2xvYmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0
aW9uSURQYWlyKTsKICAgICBtX25vdGlmaWNhdGlvbnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwg
c3RkOjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVm
KCkpKTsKICAgICBtX3Byb3ZpZGVyLT5zaG93KCp3ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkp
OwpAQCAtMTE5LDEyICsxMTksMTIgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6
OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFnZVByb3h5KiB3ZWJQYWdlLAogICAgIH0KIH0K
IAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QsIHVp
bnQ2NF90IGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQorc3RhdGljIGJv
b2wgcGFnZUlEc01hdGNoKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QsIFBhZ2VJZGVu
dGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKQogewogICAgIHJl
dHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRDsKIH0KIAotc3RhdGljIGJvb2wgcGFnZUFuZE5v
dGlmaWNhdGlvbklEc01hdGNoKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNh
dGlvbklELCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBk
ZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKK3N0YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRp
b25JRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRp
b25JRCwgUGFnZUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCiB7CiAgICAgcmV0dXJuIHBhZ2VJRCA9PSBk
ZXNpcmVkUGFnZUlEICYmIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzLmNvbnRhaW5zKHBhZ2VO
b3RpZmljYXRpb25JRCk7CiB9CkBAIC0xNDEsMTMgKzE0MSwxMyBAQCB2b2lkIFdlYk5vdGlmaWNh
dGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFn
ZSwgY29ucwogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmlj
YXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFn
ZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24gZmlsdGVyRnVuY3Rp
b24pCiB7Ci0gICAgdWludDY0X3QgdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7Cisg
ICAgYXV0byB0YXJnZXRQYWdlSUQgPSB3ZWJQYWdlLT5wYWdlSUQoKTsKIAogICAgIFZlY3Rvcjx1
aW50NjRfdD4gZ2xvYmFsTm90aWZpY2F0aW9uSURzOwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklE
cy5yZXNlcnZlQ2FwYWNpdHkobV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2l6ZSgpKTsKIAogICAg
IGZvciAoYXV0byBpdCA9IG1fbm90aWZpY2F0aW9ucy5iZWdpbigpLCBlbmQgPSBtX25vdGlmaWNh
dGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICB1aW50NjRfdCB3ZWJQYWdl
SUQgPSBpdC0+a2V5LmZpcnN0OworICAgICAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT5rZXkuZmly
c3Q7CiAgICAgICAgIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCA9IGl0LT5rZXkuc2Vjb25k
OwogICAgICAgICBpZiAoIWZpbHRlckZ1bmN0aW9uKHdlYlBhZ2VJRCwgcGFnZU5vdGlmaWNhdGlv
bklELCB0YXJnZXRQYWdlSUQsIHBhZ2VOb3RpZmljYXRpb25JRHMpKQogICAgICAgICAgICAgY29u
dGludWU7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxOb3QKICAgICBp
ZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICBhdXRvIHdl
YlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBX
ZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uod2ViUGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAg
ICAgICAgIHJldHVybjsKQEAgLTE4NSw3ICsxODUsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05vdGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxO
bwogICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsK
KyAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKICAgICBXZWJQYWdlUHJveHkq
IHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uod2ViUGFnZUlEKTsKICAgICBpZiAo
IXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eS5oCmluZGV4IGY3MjdlZDQ3MmM1YmVmYTVhMjNmM2UwNDRlMGZkNDE5MDcwNDA0ZWYuLjEx
NTc4MWU0MzMzYzg1Njg0ZmJjYTVjYTg0MTc2NTY0NGE4YzcxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25DbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTc4LDcgKzc5LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAg
ICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsK
IAotICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBh
Z2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMp
OworICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRp
b25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRp
b25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uKTsKIAogICAgIC8vIFdlYkNvbnRleHRT
dXBwbGVtZW50CkBAIC04OCw5ICs4OSw5IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4gbV9wcm92aWRlcjsKICAgICAvLyBQYWlyIGNv
bXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhlIHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9u
IElECi0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+
IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOworICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFp
cjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlv
bk1hcDsKICAgICAvLyBLZXkgcGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3
ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsgdmFsdWUgcGFpciBjb21wcmlzZWQgb2YgZ2xv
YmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlmaWNhdGlvbiBvYmplY3QKLSAgICBIYXNoTWFw
PHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0
cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmljYXRpb25zOworICAgIEhhc2hNYXA8c3RkOjpw
YWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRf
dCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1By
b3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lv
bmFsUGFnZVByb3h5LmNwcAppbmRleCA0NWExZjBmNWI1Y2I4MGNjYzlhMGNmYmExNjEzZTQ0Yzg3
NGE1NjA3Li43ZDU0OGE1MzIxZWVjYmZjNjRiYzE0ZTkxNjg4MWU5OTBjOTY5MGQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC00
Nyw2ICs0Nyw4IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKwogI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4u
KSBSRUxFQVNFX0xPR19JRihtX3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5u
ZWwsICIlcCAtIFByb3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1Nf
XykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4u
LikgUkVMRUFTRV9MT0dfRVJST1JfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBjaGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsICMjX19W
QV9BUkdTX18pCiAKQEAgLTYxLDcgKzYzLDcgQEAgUHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zp
c2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYgcGFnZSwgUmVmPFdlYlByb2Nlc3NQcm8KICAg
ICAsIG1fc3VzcGVuc2lvblRva2VuKG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFj
dGl2aXR5VG9rZW4oKSkKICNlbmRpZgogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VJRCA9ICUiIFBS
SXU2NCAiIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCAiIHN1c3BlbmRlZFBhZ2U6ICVwIiwgbV9w
YWdlLnBhZ2VJRCgpLCBuYXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOworICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQ
YWdlUHJveHk6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCAi
IHN1c3BlbmRlZFBhZ2U6ICVwIiwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIG5hdmlnYXRp
b25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAKICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZS5wYWdlSUQoKSwgKnRoaXMpOwogICAgIG1fcHJvY2Vzcy0+YWRkUHJvdmlzaW9uYWxQYWdl
UHJveHkoKnRoaXMpOwpAQCAtMTE3LDcgKzExOSw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJv
eHk6OmNvbm5lY3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKIHZv
aWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnByb2Nlc3NEaWRUZXJtaW5hdGUoKQogewotICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRl
cm1pbmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVB
U0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1p
bmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAg
ICAgbV9wYWdlLnByb3Zpc2lvbmFsUHJvY2Vzc0RpZFRlcm1pbmF0ZSgpOwogfQogCkBAIC0xMzIs
NyArMTM0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6Y2FuY2VsKCkKICAgICBpZiAo
bV9wcm92aXNpb25hbExvYWRVUkwuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGlu
ZyBhIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSBmb3IgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiY2FuY2VsOiBTaW11bGF0aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lIGZvciBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsK
ICAgICBBU1NFUlQobV9tYWluRnJhbWUpOwogICAgIGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNl
bGxlZEVycm9yKG1fcmVxdWVzdCk7CiAgICAgZXJyb3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwpAQCAtMTUxLDE0ICsxNTMsMTQgQEAgdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6ZVdlYlBhZ2UoKQogCiB2b2lkIFByb3Zpc2lv
bmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3Qg
U3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNl
ckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQog
ewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhO
YXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1J
TUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0
QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5h
dmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlNo
b3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwg
QVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdl
YnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2Fw
cGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVz
dDogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAg
ICAvLyBJZiB0aGlzIGlzIGEgY2xpZW50LXNpZGUgcmVkaXJlY3QgY29udGludWluZyBpbiBhIG5l
dyBwcm9jZXNzLCB0aGVuIHRoZSBuZXcgcHJvY2VzcyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0
ZW0ncyBVUkwuIEluIHRoaXMgY2FzZSwKICAgICAvLyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1
cGRhdGUgZnJvbUl0ZW0ncyBwcm9jZXNzSWRlbnRpZmllciBhcyB3ZSB3YW50IGZ1dHVyZSBuYXZp
Z2F0aW9ucyB0byB0aGlzIEJhY2tGb3J3YXJkIGl0ZW0gdG8gaGFwcGVuIGluIHRoZQpAQCAtMTcx
LDcgKzE3Myw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6
TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzCiAKIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNE
YXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2Fw
cGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBh
Z2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgYXV0byBpdGVtU3RhdGVzID0gbV9wYWdlLmJhY2tG
b3J3YXJkTGlzdCgpLmZpbHRlcmVkSXRlbVN0YXRlcyhbdGhpcywgdGFyZ2V0SXRlbSA9ICZpdGVt
XShhdXRvJiBpdGVtKSB7CiAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gaXRlbS5zdXNwZW5kZWRQ
YWdlKCkpIHsKQEAgLTE5Niw3ICsxOTgsNyBAQCBpbmxpbmUgYm9vbCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6dmFsaWRhdGVJbnB1dCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBPcHRpb25hbAogCiB2
b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDcmVhdGVNYWluRnJhbWUodWludDY0X3QgZnJh
bWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRp
ZENyZWF0ZU1haW5GcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJh
bWVJRCk7CiAgICAgQVNTRVJUKCFtX21haW5GcmFtZSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdl
YkZyYW1lUHJveHk6OmNyZWF0ZShtX3BhZ2UsIGZyYW1lSUQpOwpAQCAtMjM0LDcgKzIzNiw3IEBA
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWluCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQs
IG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklE
ID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2
NCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOwogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsTG9h
ZFVSTC5pc051bGwoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB1cmw7CiAKQEAgLTI1
NCw3ICsyNTYsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29ucwogICAgIGlmICghdmFsaWRhdGVJ
bnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQs
IG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwg
bV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAg
QVNTRVJUKCFtX3Byb3Zpc2lvbmFsTG9hZFVSTC5pc051bGwoKSk7CiAgICAgbV9wcm92aXNpb25h
bExvYWRVUkwgPSB7IH07CiAKQEAgLTI3MCw3ICsyNzIsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFn
ZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aQogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGlu
ZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCks
IGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdl
LnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAgbV9wcm92
aXNpb25hbExvYWRVUkwgPSB7IH07CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2Uu
cGFnZUlEKCkpOwogCkBAIC0yOTUsNyArMjk3LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW4K
IH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRp
b25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFt
ZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAogICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiBy
ZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2Us
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBp
ZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKQEAgLTM0MSw3ICszNDMs
NyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZQogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlE
LCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwK
LSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBv
cmlnaW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAg
ICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRl
eCA2NDU2YzFmOTE2ZDU5NzU1MDZjMTUyNzk0YWYyZTZiNjY4YzBiZjZjLi43ZDJmMzkwMjMxYWVh
YjM3MGM3N2ZjMWFmMDJjZTRlZDUyNWE1ZGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCiAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUlu
Zm9EYXRhJiYsCi0gICAgICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAg
ICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0
IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsCiAgICAgICAgIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0
YSYpOwpAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydFVSTFNjaGVt
ZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdv
VG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4mJik7CiAgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBi
b29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRp
bmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxh
eWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFz
c3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpp
bmRleCAwNTU5Yzk4NzRiZGMzMzVjZWE4YWQ0YTg3N2IyYWMyOTcwODA1ZjI2Li41YjAyZGRiMjQ4
OWZlM2I5NzMxNjQxZWRiM2JmYjM3MDM0NjU1YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpAQCAtMTE1LDcgKzExNSw3IEBAIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHko
V2ViUGFnZVByb3h5JiB3CiAgICAgSU9TdXJmYWNlUG9vbDo6c2hhcmVkUG9vbCgpLnNldFBvb2xT
aXplKDApOwogI2VuZGlmCiAKLSAgICBwcm9jZXNzLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIHByb2Nlc3MuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogCiAgICAgaWYgKG1fd2Vi
UGFnZVByb3h5LnByZWZlcmVuY2VzKCkudGlsZWRTY3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlKCkp
CiAgICAgICAgIGluaXRpYWxpemVEZWJ1Z0luZGljYXRvcigpOwpAQCAtMTI0LDcgKzEyNCw3IEBA
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkoV2ViUGFnZVByb3h5JiB3CiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
Ojp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eSgpCiB7CiAgICAgbV9jYWxsYmFja3Mu
aW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9yOjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAg
ICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKKyAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faWRlbnRpZmllcik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFttX2Rpc3Bs
YXlMaW5rSGFuZGxlciBpbnZhbGlkYXRlXTsKQEAgLTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OndhaXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRl
KEFjdGl2aXR5U3RhdAogICAgIH0oKTsKIAogICAgIGF1dG8gc3RhcnRUaW1lID0gTW9ub3Rvbmlj
VGltZTo6bm93KCk7Ci0gICAgd2hpbGUgKHByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JB
bmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5OjpDb21taXRMYXllclRyZWU+KG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCBhY3Rpdml0
eVN0YXRlVXBkYXRlVGltZW91dCAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSks
IElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVz
KSkgeworICAgIHdoaWxlIChwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0
Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6
Q29tbWl0TGF5ZXJUcmVlPihtX2lkZW50aWZpZXIsIGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0
IC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1lKSwgSVBDOjpXYWl0Rm9yT3B0aW9u
OjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKSB7CiAgICAgICAgIGlmIChh
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQgPT0gQWN0aXZpdHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8
fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPD0gbV9hY3Rpdml0eVN0YXRlQ2hhbmdlSUQpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA1YTE0ZmJlNGRjZDRiMzhjN2Ew
YmZkNWMyZjcwYTA2YzVjNTc1Zjg2Li5iMmY3NzI5ZmQzOTM1ZjcyZTFiYzkxMTVhMzBhMThmNjRl
MzlmZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHk6OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNT
dG9yZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpV
cGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUgfSwgMCk7CiB9CiAKLXZvaWQgU2VydmljZVdv
cmtlclByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHk+JiYgY2hhbGxlbmdlKQordm9pZCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBjaGFsbGVu
Z2UpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1l
SUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclBy
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eS5oCmluZGV4IDkzMjQ1ZjBkYzc2ZjI2NTc1N2VjMmJmZTcxNjNlOWVkYWFlOWMwZjAu
LmU5MzY1YWZhYzRmNDdkN2ZkNzQ3Zjk4OTgzYWQ5OTkwZThhYjk3NTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTQx
LDE0ICs0MSwxNCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgYm9vbCBoYXNSZWdpc3RlcmVkU2Vy
dmljZVdvcmtlcnMoY29uc3QgU3RyaW5nJiBzZXJ2aWNlV29ya2VyRGlyZWN0b3J5KTsKIAotICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eT4mJik7CiAKICAgICB2b2lkIHN0YXJ0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBP
cHRpb25hbDxQQUw6OlNlc3Npb25JRD4gaW5pdGlhbFNlc3Npb25JRCk7CiAgICAgdm9pZCBzZXRV
c2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3Jl
KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIHsgcmV0dXJuIG1fcmVnaXN0cmFibGVE
b21haW47IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VX
b3JrZXJQYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25z
dCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0KIAogcHJpdmF0ZToKICAgICAvLyBB
dXhpbGlhcnlQcm9jZXNzUHJveHkKQEAgLTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0b3JlJik7CiAKICAgICBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVpbnQ2NF90IG1fc2Vydmlj
ZVdvcmtlclBhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3NlcnZp
Y2VXb3JrZXJQYWdlSUQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCmluZGV4IDEzNDZmY2MwNWM1
YTI5Y2RiMDg2ZjcyZWY0OTY3ODJjYjJiMDA1YWUuLmY2ZDNiNTM2ZGY4YWFiMTk3ZDkxMWVkMTRk
MmVhNDBmZWZmMmUxZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVk
UGFnZVByb3h5LmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5
OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwK
IAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVByb3h5Ojpsb2dnaW5nU3RyaW5nKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVycHJldF9jYXN0PHVp
bnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgpLCAiLCBtX3N1c3Bl
bnNpb25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zdXNwZW5zaW9uU3RhdGUpLCAn
KScpOworICAgIHJldHVybiBkZWJ1Z1N0cmluZygiKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pih0aGlzKSksICIgcGFnZSBJRCAiLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQo
KSwgIiwgbV9zdXNwZW5zaW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc3VzcGVu
c2lvblN0YXRlKSwgJyknKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5jcHAKaW5kZXggOTcxMWIyMzM3MjE1ODc5MTE2YzNkZDhiNDY2ZWY1NTg1YWU5
ODU4Mi4uODM0ZGI3YWUwNzkyYWNiNTQ1OTM4MDA4MDZjOTJiMmZmYTVjYzMxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcApAQCAtNDksNiArNDksOCBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIHN0YXRpYyBI
YXNoTWFwPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5Kj4mIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKQogewogICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFwPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50
aWZpZXIsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4+IHByb3hpZXM7CkBAIC03Myw3
ICs3NSw3IEBAIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojp+V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkoKQogewogICAgIHdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMo
KS5yZW1vdmUobV9pZGVudGlmaWVyKTsKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nl
c3NlcykgewotICAgICAgICBwcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogICAgICAgICBwcm9jZXNzLT5kaWREZXN0cm95
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKnRoaXMpOwogICAgIH0KICNpZiBFTkFCTEUo
Q09OVEVOVF9FWFRFTlNJT05TKQpAQCAtODUsNyArODcsNyBAQCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCkKIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFByb2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQ
cm9jZXNzUHJveHksIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAg
ICAgaWYgKG1fcHJvY2Vzc2VzLmFkZCgmd2ViUHJvY2Vzc1Byb3h5KS5pc05ld0VudHJ5KQotICAg
ICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVy
KCkudG9VSW50NjQoKSwgKnRoaXMpOworICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCksICp0aGlzKTsKIAogICAgIEFTU0VSVChwYXJh
bWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1wdHkoKSk7CiAgICAgZm9yIChjb25zdCBhdXRv
JiB3b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMpCkBAIC0xMTUsNyArMTE3LDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJv
eHkmIHdlYlByb2Nlc3NQcm8KICAgICBBU1NFUlQobV9wcm9jZXNzZXMuY29udGFpbnMoJndlYlBy
b2Nlc3NQcm94eSkpOwogCiAgICAgbV9wcm9jZXNzZXMucmVtb3ZlKCZ3ZWJQcm9jZXNzUHJveHkp
OwotICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJl
Y2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRXb3Js
ZCYgd29ybGQpCkBAIC0xMjYsNyArMTI4LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQKICAg
ICBhdXRvIGFkZFJlc3VsdCA9IG1fdXNlckNvbnRlbnRXb3JsZHMuYWRkKCZ3b3JsZCk7CiAgICAg
aWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5
KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsgc3Rk
OjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJDb250ZW50V29ybGRzKHsgc3RkOjptYWtl
X3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVudGlmaWVyKCkp
OwogICAgIH0KIH0KIApAQCAtMTUwLDcgKzE1Miw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRX
CiB7CiAgICAgaWYgKHNob3VsZFNlbmRSZW1vdmVVc2VyQ29udGVudFdvcmxkc01lc3NhZ2Uod29y
bGQsIG51bWJlck9mVXNlc1RvUmVtb3ZlKSkgewogICAgICAgICBmb3IgKFdlYlByb2Nlc3NQcm94
eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7
IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmll
cigpKTsKICAgICB9CiB9CiAKQEAgLTE2Myw3ICsxNjUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNl
dDxSZQogICAgIH0KIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9j
ZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlm
aWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1v
dmUpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSW5qZWN0VXNl
clNjcmlwdEltbWVkaWF0ZWx5IGltbWVkaWF0ZWx5KQpAQCAtMTc1LDcgKzE3Nyw3IEBAIHZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2Ny
aXB0JiB1c2VyU2NyaXB0LCBJCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBlbmQo
JnVzZXJTY3JpcHQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3By
b2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdv
cmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNlclNjcmlwdCgpIH0gfSwgaW1tZWRpYXRl
bHkpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJT
Y3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJT
Y3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3Jp
cHQmIHVzZXJTY3JpcHQpCkBAIC0xODMsNyArMTg1LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3Jp
cHQKICAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQudXNl
ckNvbnRlbnRXb3JsZCgpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBt
X3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJT
Y3JpcHQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVz
ZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBp
ZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwo
JnVzZXJTY3JpcHQpOwogCkBAIC0xOTMsNyArMTk1LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3Jp
cHQKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3Jp
cHRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdv
cmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFs
bFVzZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAg
ICAgdW5zaWduZWQgdXNlclNjcmlwdHNSZW1vdmVkID0gbV91c2VyU2NyaXB0cy0+cmVtb3ZlQWxs
T2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU2NyaXB0PihbJl0oY29uc3QgYXV0byYgdXNlclNjcmlw
dCkgewogICAgICAgICByZXR1cm4gJnVzZXJTY3JpcHQtPnVzZXJDb250ZW50V29ybGQoKSA9PSAm
d29ybGQ7CkBAIC0yMTQsNyArMjE2LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoKQogICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVu
Y2hlY2tlZEFwcGVuZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBm
b3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVz
ZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7Cisg
ICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6
UmVtb3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7CiAK
ICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTIzMCw3ICsyMzIs
NyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVl
dChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyUwogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVt
ZW50cygpLmFwcGVuZCgmdXNlclN0eWxlU2hlZXQpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVzZXJT
dHlsZVNoZWV0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hl
ZXQudXNlclN0eWxlU2hlZXQoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRk
VXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5p
ZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRp
ZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
VXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCkBAIC0y
MzgsNyArMjQwLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3Zl
VXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXMKICAgICBSZWY8QVBJOjpVc2Vy
Q29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTdHlsZVNoZWV0LnVzZXJDb250ZW50V29ybGQoKTsK
IAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlVXNlclN0eWxlU2hlZXQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQuaWRl
bnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNo
ZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlk
ZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5yZW1vdmVB
bGwoJnVzZXJTdHlsZVNoZWV0KTsKIApAQCAtMjQ4LDcgKzI1MCw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxl
U2hlZXQmIHVzCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3Ig
KFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJT
dHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwg
aWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIHVzZXJTdHlsZVNoZWV0c1JlbW92ZWQgPSBt
X3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU3R5bGVT
aGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTdHlsZVNoZWV0KSB7CiAgICAgICAgIHJldHVybiAm
dXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0yNjksNyAr
MjcxLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNl
clN0eWxlU2hlZXRzKCkKICAgICAgICAgd29ybGRJZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQo
d29ybGRDb3VudFBhaXIua2V5LT5pZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChXZWJQcm9jZXNz
UHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMo
d29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKSk7CiAKICAgICBt
X3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCkBAIC0yOTAsNyArMjkyLDcg
QEAgYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2UKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5h
ZGQoaGFuZGxlci5pZGVudGlmaWVyKCksICZoYW5kbGVyKTsKIAogICAgIGZvciAoV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5k
bGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIGhhbmRs
ZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZp
ZXIoKSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpKTsKICAgICAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTMwMCw3ICszMDIsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZwog
ICAgIGZvciAoYXV0byBpdCA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmJlZ2luKCksIGVuZCA9
IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAg
ICAgaWYgKGl0LT52YWx1ZS0+bmFtZSgpID09IG5hbWUgJiYgJml0LT52YWx1ZS0+dXNlckNvbnRl
bnRXb3JsZCgpID09ICZ3b3JsZCkgewogICAgICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkq
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0LT52YWx1ZS0+aWRlbnRpZmllcigpKSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VI
YW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBpZGVu
dGlmaWVyKCkpOwogCiAgICAgICAgICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmUo
aXQpOwogCkBAIC0zMTMsNyArMzE1LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBTdHJpbmcKIHZvaWQg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxl
cnMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdl
SGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgp
KTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9s
bGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmll
cigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgbnVtYmVyUmVtb3ZlZCA9IDA7
CiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMucmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5KSB7
CkBAIC0zMjcsNyArMzI5LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhBUEk6OlVzZXJDb250ZW4KICAgICByZW1vdmVV
c2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgbnVtYmVyUmVtb3ZlZCk7CiB9CiAKLXZvaWQgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFt
ZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
bWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNl
KQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShw
YWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTM1MSw3ICszNTMsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250ZW50UnVsZUxpc3QoQVBJOjpDb250ZW50UnVs
ZUxpc3QmIGNvbgogICAgIGF1dG8gcGFpciA9IHN0ZDo6bWFrZV9wYWlyKGNvbnRlbnRSdWxlTGlz
dC5uYW1lKCksIGNvbnRlbnRSdWxlTGlzdC5jb21waWxlZFJ1bGVMaXN0KCkuZGF0YSgpKTsKIAog
ICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlz
dHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1bGVM
aXN0cyh7IHBhaXIgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3Mg
OiBtX25ldHdvcmtQcm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpBZGRDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRp
ZmllcigpLCB7IHBhaXIgfSB9LCAwKTsKQEAgLTM2Miw3ICszNjQsNyBAQCB2b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVDb250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5n
JiBuYW1lKQogICAgIG1fY29udGVudFJ1bGVMaXN0cy5yZW1vdmUobmFtZSk7CiAKICAgICBmb3Ig
KGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QobmFt
ZSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QobmFt
ZSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQ
cm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50
UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVDb250ZW50UnVsZUxpc3QgeyBpZGVudGlmaWVyKCksIG5h
bWUgfSwgMCk7CkBAIC0zNzMsNyArMzc1LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6cmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpCiAgICAgbV9jb250ZW50UnVsZUxp
c3RzLmNsZWFyKCk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKGF1
dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVBbGxDb250ZW50
UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpIH0sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5LmgKaW5kZXggNjIzMzAxMTE2ZWQxZDY1NGYyYTM0ODlhN2YwZjYyNDc3NjYxMjRh
ZS4uMGVkMzZhNTljYzNhNzFkOWYyMTllMTk0ODQyOWM4YTc5MWQwYzYyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiVXNl
ckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
Q291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0xMTAsNyArMTExLDcg
QEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJl
Y2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwog
Ci0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBGcmFtZUluZm9EYXRhJiwg
dWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAK
ICAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJik7
CiAgICAgdm9pZCByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJDb250ZW50V29y
bGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1JlbW92ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDgxNzE0MzUxZmNlNzc1
ZGFiYzQ3MThkNDNmODhlMzZmNWY1MGZlZTQuLjI1YTRlMjkxMjc0ZWUwMzY5ZmRkMTZlZTAwNWMy
Yzk1ZjlmYWYyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCw1ICsyNCw1IEBACiAgKi8KIAogbWVzc2FnZXMgLT4gV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgewotRGlkUG9zdE1lc3NhZ2UodWludDY0X3QgcGFn
ZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG1lc3NhZ2VIYW5kbGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5l
Y3Rpb24KK0RpZFBvc3RNZXNzYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdl
SGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2FudHNDb25uZWN0aW9uCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNw
cAppbmRleCAyNDgxODJkODA5MjFmZTFhMTllNWM2MzRiMTZhMjRjN2M3ZDE3NmVmLi4xZTkxYWJi
NmVmZGQwY2Q1OTZmOTRkYWNlOGY3MjY4ZTMxODRhNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKQEAgLTY2LDEwICs2NiwxMCBA
QCBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bVNjcm9sbEV2ZW50UmF0aW9Gb3JTd2lwZSA9IDAu
NTsKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNuYXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXpl
VGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiAjZW5kaWYKIAotc3RhdGljIEhhc2hNYXA8dWludDY0X3Qs
IFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFn
ZXMoKQorc3RhdGljIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxl
cio+JiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKQogewogICAgIC8vIFRoZSBr
ZXkgaW4gdGhpcyBtYXAgaXMgdGhlIGFzc29jaWF0ZWQgcGFnZSBJRC4KLSAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8SGFzaE1hcDx1aW50NjRfdCwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4+IHZp
ZXdHZXN0dXJlQ29udHJvbGxlcnM7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8
UGFnZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+PiB2aWV3R2VzdHVyZUNvbnRy
b2xsZXJzOwogICAgIHJldHVybiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzLmdldCgpOwogfQogCkBA
IC0xMTYsNyArMTE2LDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbm5lY3RUb1By
b2Nlc3MoKQogICAgIG1faXNDb25uZWN0ZWRUb1Byb2Nlc3MgPSB0cnVlOwogfQogCi1WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1
cmUodWludDY0X3QgcGFnZUlELCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBnZXN0
dXJlSUQpCitWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29u
dHJvbGxlckZvckdlc3R1cmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBWaWV3R2VzdHVyZUNvbnRy
b2xsZXI6Okdlc3R1cmVJRCBnZXN0dXJlSUQpCiB7CiAgICAgYXV0byBnZXN0dXJlQ29udHJvbGxl
ckl0ZXIgPSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKS5maW5kKHBhZ2VJRCk7
CiAgICAgaWYgKGdlc3R1cmVDb250cm9sbGVySXRlciA9PSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJz
Rm9yQWxsUGFnZXMoKS5lbmQoKSkKQEAgLTU0Nyw3ICs1NDcsNyBAQCB2b2lkIFZpZXdHZXN0dXJl
Q29udHJvbGxlcjo6Zm9yY2VSZXBhaW50SWZOZWVkZWQoKQogCiAgICAgbV9oYXNPdXRzdGFuZGlu
Z1JlcGFpbnRSZXF1ZXN0ID0gdHJ1ZTsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFn
ZVByb3h5LnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlE
KCk7CiAgICAgR2VzdHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBt
X3dlYlBhZ2VQcm94eS5mb3JjZVJlcGFpbnQoVm9pZENhbGxiYWNrOjpjcmVhdGUoW3BhZ2VJRCwg
Z2VzdHVyZUlEXSAoQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewogICAgICAgICBpZiAoYXV0
byBnZXN0dXJlQ29udHJvbGxlciA9IGNvbnRyb2xsZXJGb3JHZXN0dXJlKHBhZ2VJRCwgZ2VzdHVy
ZUlEKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVy
LmgKaW5kZXggNDMxYzI3NjZkMDgyNjFlNTJjZWZiMjA2ZDZjZDI5OWIxMmNmMTM5NC4uYzE2NzBk
M2E5NGNlZjNkOTA2YWY0OTQ5Y2Q1NDEzNjA0OTQ3NjMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMTc1
LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBv
dmVycmlkZTsKIAotICAgIHN0YXRpYyBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJG
b3JHZXN0dXJlKHVpbnQ2NF90IHBhZ2VJRCwgR2VzdHVyZUlEKTsKKyAgICBzdGF0aWMgVmlld0dl
c3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyRm9yR2VzdHVyZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgR2VzdHVyZUlEKTsKIAogICAgIHN0YXRpYyBHZXN0dXJlSUQgdGFrZU5leHRHZXN0dXJl
SUQoKTsKICAgICB2b2lkIHdpbGxCZWdpbkdlc3R1cmUoVmlld0dlc3R1cmVUeXBlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKaW5kZXggZjJlN2I5MzQw
NTc2NmVhNWU4Yzc1ZWFiZjVhYzZhNGZkNGMwNGRlZS4uOTkxZGMyZmNmZjlkNDNjNWUwODc2ODY0
Y2MyODA0MzhkOWUzNGExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlz
aXRlZExpbmtTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6Ondl
YlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZQog
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CiAKLXZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRk
VmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UodWludDY0X3QgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNo
IGxpbmtIYXNoKQordm9pZCBWaXNpdGVkTGlua1N0b3JlOjphZGRWaXNpdGVkTGlua0hhc2hGcm9t
UGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFNoYXJlZFN0cmluZ0hhc2ggbGlua0hhc2gpCiB7
CiAgICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94eSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShw
YWdlSUQpKSB7CiAgICAgICAgIGlmICghd2ViUGFnZVByb3h5LT5hZGRzVmlzaXRlZExpbmtzKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmgKaW5kZXggMDZmMjBi
YTkxY2JkYmJhMjY3OTVmMzhjNjBjODFiNjhkODE3NTlhNS4uMDJiNDliYWM1NWUyNDg2YmQzZTg5
YTllZTg4ZWE4ODMzNmYxZWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRM
aW5rU3RvcmUuaApAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkSW52YWxp
ZGF0ZVNoYXJlZE1lbW9yeSgpIGZpbmFsOwogICAgIHZvaWQgZGlkVXBkYXRlU2hhcmVkU3RyaW5n
SGFzaGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoPiYgYWRkZWRIYXNo
ZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoPiYgcmVtb3ZlZEhhc2hl
cykgZmluYWw7CiAKLSAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90
IHBhZ2VJRCwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCk7CisgICAgdm9pZCBhZGRWaXNpdGVk
TGlua0hhc2hGcm9tUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVk
U3RyaW5nSGFzaCk7CiAKICAgICB2b2lkIHNlbmRTdG9yZUhhbmRsZVRvUHJvY2VzcyhXZWJQcm9j
ZXNzUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRl
ZExpbmtTdG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRM
aW5rU3RvcmUubWVzc2FnZXMuaW4KaW5kZXggZTc4NjJlMzY1YjBmZmUxMzkxNDYzYzAwNzA2MWQ3
ZTdmOGY4ZDU0Yi4uMmU2NmM0MjgwOGViYjdlYmNmMzkzMTliMTA4NmE5MjdmMzMxMzYxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3Nh
Z2VzLmluCkBAIC0yMSw1ICsyMSw1IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFZp
c2l0ZWRMaW5rU3RvcmUgewotICAgIEFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgbGlua0hhc2gpCisgICAgQWRkVmlzaXRlZExpbmtIYXNoRnJvbVBh
Z2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBsaW5rSGFzaCkKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDY1NmM4ZGNjNTlj
NGFlYmNmMTM2ZDcwYzdmNDAwZjk3NzY4MWQ1MGMuLjFmMzIxMDAzYzdmOTJiYzE3Y2YxYjc4MzJi
NzFkOTkyMDJhNjE2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cApAQCAtMzgxLDEyICszODEsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZvck1vc3RWaXNpYmxl
V2ViUGFnZUlmQW55KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU2UKICAgICBjb21w
bGV0aW9uSGFuZGxlcihzZWxlY3RlZFBhZ2UpOwogfQogCi1SZWY8V2ViUGFnZVByb3h5PiBXZWJQ
YWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkm
IHByb2Nlc3MsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYg
Y29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJveHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBh
Z2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9u
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlBhZ2VQcm94eShwYWdlQ2xpZW50LCBw
cm9jZXNzLCBwYWdlSUQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVBy
b3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5
JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYm
IGNvbmZpZ3VyYXRpb24pCitXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKICAgICA6IG1f
cGFnZUNsaWVudChtYWtlV2Vha1B0cihwYWdlQ2xpZW50KSkKICAgICAsIG1fY29uZmlndXJhdGlv
bihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQogICAgICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VV
bmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50PigpKQpAQCAtNDM1LDcgKzQzNSw3IEBAIFdl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgdWluCiAjZW5kaWYKICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENv
dW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2Vu
dENyYXNoQ291bnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29u
c3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAg
ICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmRyYXdzQmFja2dyb3VuZCgpKQogICAgICAgICBtX2Jh
Y2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CkBAIC00ODksNyArNDg5
LDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwg
V2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KIAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVBy
b3h5KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVjdG9y
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkZXN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgQVNTRVJU
KG1fcHJvY2Vzcy0+d2ViUGFnZShtX3BhZ2VJRCkgIT0gdGhpcyk7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRApAQCAtNzA4LDcgKzcwOCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbikKICAgICBBU1NFUlQo
IW1faXNDbG9zZWQpOwogICAgIEFTU0VSVCghaGFzUnVubmluZ1Byb2Nlc3MoKSk7CiAKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9j
ZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9wcm9jZXNzLT5yZW1v
dmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9jZXNzUHJveHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVz
KTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZUlEKTsKQEAgLTc2Myw3ICs3NjMs
NyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6
Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJlbnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGlu
ZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlkICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpKTsKICAgICBhdXRvIHN1c3BlbmRlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1
c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJvY2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJ
RCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRlcmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKTsKIAotICAgIExPRyhQcm9jZXNzU3dhcHBpbmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0
ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9y
d2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3Ry
aW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRl
bS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKKyAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAi
V2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHBy
b2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKS50b1VJ
bnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkg
OiAwKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQgZm9yY2VkIGEgc3dhcCB0aGVuIGl0IG1heSBu
b3QgYmUgd2ViLWNvbXBhdGlibGUgdG8ga2VlcCB0aGUgcHJldmlvdXMgcGFnZSBiZWNhdXNlIG90
aGVyIHdpbmRvd3MgbWF5IGhhdmUgYW4gb3BlbmVyIGxpbmsgdG8gaXQuIFdlIHRodXMgY2xvc2Ug
aXQgYXMgc29vbiBhcyB3ZQogICAgIC8vIGNhbiBkbyBzbyB3aXRob3V0IGZsYXNoaW5nLgpAQCAt
NzgxLDcgKzc4MSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBv
c3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiB2b2lkIFdlYlBhZ2VQcm94
eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHN0ZDo6
dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYmIGRyYXdpbmdBcmVhLCBSZWZQdHI8V2ViRnJh
bWVQcm94eT4mJiBtYWluRnJhbWUpCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzd2FwVG9XZWJQcm9jZXNzOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzd2FwVG9X
ZWJQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9wcm9jZXNz
ID0gV1RGTW92ZShwcm9jZXNzKTsKICAgICBtX3dlYnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3Mt
PndlYnNpdGVEYXRhU3RvcmUoKTsKQEAgLTg3MywxMCArODczLDEwIEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNzKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQ
cm9jZXNzRm9yUmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYg
KG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQp
OworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNz
Rm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtODg1LDcgKzg4NSw3IEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJl
bG9hZCgpCiAgICAgbGF1bmNoUHJvY2VzcyhyZWdpc3RyYWJsZURvbWFpbik7CiAKICAgICBpZiAo
IW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRlbSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1cnJlbnQg
aXRlbSB0byByZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0
ZW0gdG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTkwMCwxMCArOTAwLDEwIEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAKIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc1dpdGhJdGVtKFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0
aEl0ZW06IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJdGVtOiBwYWdlIGlz
IGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCkBAIC05NTYsNyArOTU2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNs
b3NlKCkKICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOwogCiAgICAgbV9pc0Nsb3NlZCA9IHRydWU7CiAKQEAgLTEwMzEsNyArMTAz
MSw3IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp0cnlDbG9zZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5n
UHJvY2VzcygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgInRyeUNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKIAogICAgIC8vIENsb3NlIHdpdGhvdXQgZGVsYXkgaWYgdGhlIHByb2Nlc3MgYWxs
b3dzIGl0LiBPdXIgZ29hbCBpcyB0byB0ZXJtaW5hdGUKICAgICAvLyB0aGUgcHJvY2Vzcywgc28g
d2UgY2hlY2sgYSBwZXItcHJvY2VzcyBzdGF0dXMgYml0LgpAQCAtMTA3Nyw3ICsxMDc3LDcgQEAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAgICBpZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2Fk
UmVxdWVzdDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZFJlcXVlc3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIGxhdW5jaFByb2Nlc3MoUmVnaXN0
cmFibGVEb21haW4geyByZXF1ZXN0LnVybCgpIH0pOwpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXMKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCi0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlv
bjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwog
CiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwog
CkBAIC0xMTIwLDEwICsxMTIwLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdp
dGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiAKIFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBm
aWxlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZEZpbGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwog
CiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZEZpbGU6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHBhZ2UgaXMg
Y2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICB9CiAKQEAgLTExMzIsNyArMTEzMiw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBj
b25zCiAKICAgICBVUkwgZmlsZVVSTCA9IFVSTChVUkwoKSwgZmlsZVVSTFN0cmluZyk7CiAgICAg
aWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6
IGZpbGUgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTExNDIsNyArMTE0Miw3IEBAIFJlZlB0cjxB
UEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxl
VVJMU3RyaW5nLCBjb25zCiAgICAgZWxzZSB7CiAgICAgICAgIHJlc291cmNlRGlyZWN0b3J5VVJM
ID0gVVJMKFVSTCgpLCByZXNvdXJjZURpcmVjdG9yeVVSTFN0cmluZyk7CiAgICAgICAgIGlmICgh
cmVzb3VyY2VEaXJlY3RvcnlVUkwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHJlc291cmNlIFVSTCBpcyBub3Qg
bG9jYWw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHJlc291cmNlIFVSTCBpcyBub3QgbG9jYWw6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQogICAgIH0KQEAgLTExNzIsMTAgKzExNzIsMTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcs
IGNvbnMKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNv
bnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3Qq
IHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRE
YXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICht
X2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC0xMTg5LDcgKzExODksNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdl
UHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBD
OjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJp
bmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0
YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2FkIHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9h
ZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlv
bjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWREYXRhV2l0aE5hdmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAg
ICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAtMTIxNSwxMyArMTIxNSwxMyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2Nlc3MsCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTdHJpbmcmIGVuY29kaW5n
LCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVSTCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2Jq
ZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJs
b2FkQWx0ZXJuYXRlSFRNTDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAKICAgICAvLyBXaGVuIHRoZSBVSVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mg
b2YgaGFuZGxpbmcgYSBmYWlsaW5nIHByb3Zpc2lvbmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0IHRv
CiAgICAgLy8gc3RhcnQgYSBzZWNvbmQgYWx0ZXJuYXRpdmUgSFRNTCBsb2FkIGFzIHRoaXMgd2ls
bCBwcmV2ZW50IHRoZSBwYWdlIGxvYWQgc3RhdGUgZnJvbSBiZWluZwogICAgIC8vIGhhbmRsZWQg
cHJvcGVybHkuCiAgICAgaWYgKG1faXNDbG9zZWQgfHwgbV9pc0xvYWRpbmdBbHRlcm5hdGVIVE1M
U3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9hZCkgewotICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9y
IG90aGVyKTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNsb3NlZCAob3Igb3RoZXIp
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMjU4LDEwICsxMjU4LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRl
SFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxEYXRhLCBjb25zdCBTCiAKIHZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0
YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdl
IGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEy
ODUsMTAgKzEyODUsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShB
UEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6Ok9iamVjdCogdXMKIAogdm9pZCBXZWJQYWdl
UHJveHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYg
dXJsU3RyaW5nLCBJbnRQb2ludCBkb2N1bWVudFBvaW50LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljazogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMDQsMTAgKzEzMDQsMTAg
QEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNr
KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRp
bmcoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5n
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJzdG9wTG9hZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBub3Qg
dmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBu
b3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTEzMjEsNyArMTMyMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTG9h
ZGluZygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKE9w
dGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+IG9wdGlvbnMpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdl
SUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQu
dG9VSW50NjQoKSk7CiAKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVu
c2lvbkhhbmRsZTsKIApAQCAtMTM5OCw3ICsxMzk4LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0KIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIEZyYW1lTG9hZFR5cGUgZnJhbWVM
b2FkVHlwZSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFj
a0ZvcndhcmRJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICVwIGdvVG9CYWNrRm9yd2Fy
ZEl0ZW0gdG8gaXRlbSBVUkwgJXMiLCB0aGlzLCBpdGVtLnVybCgpLnV0ZjgoKS5kYXRhKCkpOwog
CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQpAQCAtMTQyMCwxMCArMTQyMCwxMCBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0o
V2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dHJ5UmVzdG9yZVNj
cm9sbFBvc2l0aW9uKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0
cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Ny
b2xsUG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0
aW9uOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU1MCw3ICsxNTUwLDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmNsZWFySW5zcGVjdG9yVGFyZ2V0cygpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVh
dGVJbnNwZWN0b3JUYXJnZXRzKCkKIHsKLSAgICBTdHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0
cmluZygicGFnZS0iLCBtX3BhZ2VJRCk7CisgICAgU3RyaW5nIHBhZ2VUYXJnZXRJZCA9IG1ha2VT
dHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgbV9pbnNwZWN0b3JDb250
cm9sbGVyLT5jcmVhdGVJbnNwZWN0b3JUYXJnZXQocGFnZVRhcmdldElkLCBJbnNwZWN0b3I6Oklu
c3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOwogfQogCkBAIC0yODczLDcgKzI4NzMsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9u
LCBBUEk6Ok5hdmlnYXRpb24qCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQ
YWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3Qg
ZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0
ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFz
SW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKIHsKICAgICBBU1NFUlQobV9wcm92aXNpb25hbFBhZ2UpOwotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbW1pdFByb3Zpc2lvbmFsUGFnZTogcHJldmlv
dXNQSUQgPSAlaSwgbmV3UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IHByZXZpb3VzUElEID0gJWksIG5ld1BJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
cm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtYWluRnJhbWVJREluUHJldmlv
dXNQcm9jZXNzID0gbV9tYWluRnJhbWUgPyBtYWtlT3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1l
SUQoKSkgOiBXVEY6Om51bGxvcHQ7CiAKQEAgLTI5MTMsNyArMjkxMyw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2UodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
bmF2aWdhdGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5l
d1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3Vz
cGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBhZ2VQcm94eSwgUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0
ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnRp
bnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBuZXdQcm9jZXNzUElEID0gJWksIGhhc1N1c3BlbmRlZFBhZ2UgPSAlaSIsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQ
YWdlID0gJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCksIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVBy
b3h5KTsKICAgICBMT0coTG9hZGluZywgIkNvbnRpbnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQg
IiAnJXMnIGluIGEgbmV3IHdlYiBwcm9jZXNzIiwgbmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwg
bmF2aWdhdGlvbi5sb2dnaW5nU3RyaW5nKCkpOwogCiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdl
KSB7CkBAIC0zMDc0LDcgKzMwNzQsNyBAQCBTZXNzaW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNz
aW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxib29sIChXZWJCYWNrRm9yd2FyZExpc3RJdAogCiBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRl
KFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUsIGJvb2wgbmF2aWdhdGUpCiB7Ci0gICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVzdG9yZUZyb21TZXNzaW9uU3RhdGU6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3Rv
cmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAg
bV9zZXNzaW9uUmVzdG9yYXRpb25SZW5kZXJUcmVlU2l6ZSA9IDA7CiAgICAgbV9oaXRSZW5kZXJU
cmVlU2l6ZVRocmVzaG9sZCA9IGZhbHNlOwpAQCAtMzkzMiw4ICszOTMyLDggQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJgogICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9u
SUQpCiAgICAgICAgIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5h
dmlnYXRpb25JRCk7CiAKLSAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQg
IiBpbiBwcm9jZXNzIHBpZCAlaSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZy
YW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9w
YWdlSUQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyYW1lSUQsIG5hdmlnYXRpb25J
RCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIExPRyhMb2FkaW5nLCAi
V2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUi
IFBSSXU2NCAiLCB1cmwgJXMiLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFn
ZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC0zOTg1LDcgKzM5ODUsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUodWludDY0X3QgZgogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
TE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25J
RCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCByZXF1ZXN0LnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZy
YW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0
b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQwMTQsNyArNDAxNCw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZVNoYXJlZChSZWY8CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVu
dFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRv
dWJsZSBkZWxheSwgV2ViQ29yZTo6TG9ja0JhY2tGb3J3YXJkTGlzdCkKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJh
bWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC00MDI3LDcgKzQwMjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFN0cgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAg
UGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDA3NCw4
ICs0MDc0LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cmkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcm
IHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVl
TG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7
Ci0gICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGlu
IHdlYiBwcm9jZXNzIHBpZCAlaSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJv
dmlzaW9uYWxVUkwgJXMiLCBtX3BhZ2VJRCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
cHJvdmlzaW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMs
IGNvZGUgPSAlZCIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7Cisg
ICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdl
YiBwcm9jZXNzIHBpZCAlaSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlz
aW9uYWxVUkwgJXMiLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21h
aW4gPSAlcywgY29kZSA9ICVkIiwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJy
b3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFn
ZUNsaWVudCgpKTsKIApAQCAtNDE0MSw5ICs0MTQxLDkgQEAgc3RhdGljIGJvb2wgaXNOb25Vbmlx
dWVOYXZpZ2F0aW9uV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSBy
ZXEKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJv
b2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9h
ZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBi
b29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4g
aGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgTE9H
KExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExv
YWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9wYWdlSUQsIG5hdmlnYXRpb25J
RCk7CisgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAi
IGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBSSXU2NCwgbV9wYWdlSUQu
dG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAgICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9G
b3J3YXJkKSBBZnRlciBsb2FkIGNvbW1pdCwgYmFjay9mb3J3YXJkIGxpc3QgaXMgbm93OiVzIiwg
bV9iYWNrRm9yd2FyZExpc3QtPmxvZ2dpbmdTdHJpbmcoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDI1NCw3ICs0MjU0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJ
RCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwog
CkBAIC00Mjc4LDcgKzQyNzgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aQogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9h
ZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lIC0gV2ViUGFnZVByb3h5
ICVwIHdpdGggbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiIGRpZEZpbmlzaExvYWQiLCB0aGlzLCBu
YXZpZ2F0aW9uSUQpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZp
bmlzaExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5p
c2hMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQzMjMsNyArNDMyMyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAl
ZCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQsIGVy
cm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZyYW1lOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWlu
ID0gJXMsIGNvZGUgPSAlZCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJy
b3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFn
ZUNsaWVudCgpKTsKIApAQCAtNDM2NSw3ICs0MzY1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklE
LAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1l
KHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgb3BhcXVl
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFVSTCYmIHVybCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGll
bnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ1MzUsNyArNDUzNSw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNhZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYs
IGJvb2wsIFdlYkZyYW1lUG9saWN5TGlzdGVuCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELAotICAgIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJl
cXVlc3QsCiAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogewogICAgIGRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZN
b3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1v
dmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLApAQCAtNDU0Myw3ICs0NTQzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBm
cmFtZUlELCBXZWJDb3IKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3Ms
IHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sCi0gICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0
aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELAorICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVu
dGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogewpAQCAtNDU1OSw3
ICs0NTU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3gKIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELAotICAgIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKKyAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5h
dmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9E
YXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0
Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0
IFVzZXJEYXRhJiB1c2VyRGF0YSwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikK
IHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbiAtIE9yaWdpbmFsIFVSTCAlcywgY3VycmVudCB0YXJnZXQgVVJMICVzIiwgb3Jp
Z2luYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHJlcXVlc3QudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC00Njk5LDcgKzQ2OTksNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIHByb2NlcwogICAgICAgICBpZiAoIWZyb21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9
PSAmZnJhbWUpCiAgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8gPSBkZXN0aW5hdGlvbkZyYW1l
SW5mby5jb3B5UmVmKCk7CiAgICAgICAgIGVsc2UgaWYgKCFmcm9tQVBJKQotICAgICAgICAgICAg
c291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZShvcmlnaW5hdGlu
Z1BhZ2VJRCkgOiBudWxscHRyKTsKKyAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1Bh
Z2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6IG51bGxwdHIpOwog
CiAgICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFjdGl2aXR5ID0gcHJvY2Vzcy0+dXNlckluaXRp
YXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25EYXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlm
aWVyKTsKICAgICAgICAgYm9vbCBzaG91bGRPcGVuQXBwTGlua3MgPSAhbV9zaG91bGRTdXBwcmVz
c0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uCkBAIC00NzcyLDcgKzQ3NzIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1l
UHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZwogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBi
b29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNl
ckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CkBAIC00NzkwLDcg
KzQ3OTAsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpcwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CkBAIC00OTIzLDcgKzQ5MjMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdh
dGlvbkRhdGFTdG9yZSYgcwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBX
ZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzdG9yZSwgdWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9u
RGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBh
Z2VDbGllbnQoKSk7CiAKQEAgLTQ5NDMsNyArNDk0Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNv
bnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0
cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgdWludDY0X3QgZnJhbWVJ
RCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQs
IGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZv
cm1DbGllbnRSZWRpcmVjdFNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ5NzAsNyArNDk3MCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxT
dHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJl
Y3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblVSTFN0cmluZywgdWludDY0
X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQ
ZXJmb3JtU2VydmVyUmVkaXJlY3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHBy
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFn
ZUNsaWVudCgpKTsKIApAQCAtNTAxOCwxNCArNTAxOCwxNCBAQCBXRUJQQUdFUFJPWFlfTE9BRE9Q
VElNSVpFUl9BRERJVElPTlNfNgogI2VuZGlmCiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjcmVh
dGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdp
bmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6
OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2Uo
Y29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFdpbmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRh
JiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5l
d1BhZ2U6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9j
ZXNzLCBtX3Byb2Nlc3MtPndlYkZyYW1lKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlE
KSk7Ci0gICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVh
dGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBtX3Byb2Nlc3MtPndlYlBhZ2Uob3JpZ2luYXRp
bmdQYWdlSUQpKTsKKyAgICBhdXRvIG9yaWdpbmF0aW5nRnJhbWVJbmZvID0gQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8g
bV9wcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyKTsKICAgICBh
dXRvIG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1lID8gbV9tYWluRnJhbWUtPnVybCgpIDogVVJM
KCk7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIG1haW5GcmFtZVVSTCwgcmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJl
cGx5KV0gKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UpIG11dGFibGUgewogICAgICAgICBp
ZiAoIW5ld1BhZ2UpIHsKLSAgICAgICAgICAgIHJlcGx5KDAsIFdURjo6bnVsbG9wdCk7CisgICAg
ICAgICAgICByZXBseShXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtNTgzNCw3ICs1ODM0LDcgQEAgSVBDOjpDb25uZWN0aW9u
KiBXZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0
X3QgV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcGFnZUlEOworICAgIHJldHVybiBtX3BhZ2VJRC50b1VJbnQ2NCgpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVu
dVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KQpAQCAtNjcxNSw3ICs2NzE1LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lU2V0TGFyZ2VzdEZyYW1lQ2hhbmdlZCh1aW50NjRfdCBm
cmFtZUlEKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2
ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJl
Y29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNjcyNyw3ICs2NzI3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnBy
b2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vz
c0RpZEJlY29tZVJlc3BvbnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJv
Y2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9u
c2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA2YzVhZDYyNWQxMjA0YzdjMGQ4Mzk2OTllN2UyZjY1YTViYTY0ZTAzLi5h
YjNlNTk3ZDYwNDM2OTcyNzYzYTBiODkyOWRjMjhjN2EzNTExOWI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODIsNiArODIsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvTGF5b3V0U2l6ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENv
bnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUHJvZHVjZXIuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVNjcmVlbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UuaD4KQEAgLTM4MiwxNCArMzgzLDE0
IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmpl
Y3Q6OlR5cGU6OlBhZ2U+CiAjZW5kaWYKICAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQ
YWdlUHJveHk+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRl
KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6
OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3Jl
YXRlKFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZpcnR1YWwgfldlYlBhZ2VQ
cm94eSgpOwogCiAgICAgc3RhdGljIHZvaWQgZm9yTW9zdFZpc2libGVXZWJQYWdlSWZBbnkoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViUGFnZVByb3h5Kik+JiYpOwogCiAgICAgY29uc3QgQVBJOjpQYWdl
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbigpIGNvbnN0OwogCi0gICAgdWludDY0X3QgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKQEAgLTE1MDIsNyArMTUwMyw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYsIGNvbnN0IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFt
ZUlEKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBVUkwmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5
bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLAotICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmln
YXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwKKyAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LAogICAgICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVp
bnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFy
ZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xp
Y3lDaGVja0lkZW50aWZpZXIsCiAgICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRl
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTUxMSw3ICsxNTEy
LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBBUEk6Ok5hdmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9w
dGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgPSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQg
YmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWlu
dDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNl
ckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZv
aWQgZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKQEAgLTE1
NTEsNyArMTU1Miw3IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU18xCiAg
ICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0
cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVu
dE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhw
ZWN0ZWRVc2FnZSwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAK
IHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkm
LCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKKyAgICBX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0
Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZvaWQgbm90aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0o
KTsKQEAgLTE2MjcsMTMgKzE2MjgsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lO
YXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgV2ViRnJhbWVQcm94
eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3Jp
Z2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0
YSYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9E
YXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0
YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5
LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwg
Y29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBv
bGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWlu
RnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHks
CisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYm
KTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCiAgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE2NTUsNyArMTY1Niw3IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29u
c3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGZyYW1lSUQpOwogCiAgICAgLy8gVUkgY2xpZW50Ci0g
ICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRv
d0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ld1Bh
Z2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
PiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6
OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIHNob3dQ
YWdlKCk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0OjpEZWxheWVkUmVwbHkmJik7CiAgICAg
dm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVsYXllZFJlcGx5JiYpOwpAQCAtMjMyNyw3ICsy
MzI4LDcgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzIKICAgICBSZWZQ
dHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4gbV92YWxpZGF0aW9uQnViYmxlOwogI2VuZGlm
CiAKLSAgICBjb25zdCB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBjb25zdCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3BhZ2VJRDsKIAogICAgIGJvb2wgbV9pc1BhZ2VTdXNwZW5kZWQgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9hZGRzVmlzaXRlZExpbmtzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDZmY2VjZGM2
YjY1ZDg4YzljOTg1ODUzOTVhYjU5ZTdkODEyNmJhMDYuLmIxZTc5OTIyM2JmYzk5YzNmZDJiNTI1
ZmY3ZTg5MjQ2NDk1NzE3Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDcgKzIyLDcgQEAKIAogbWVzc2FnZXMgLT4gV2Vi
UGFnZVByb3h5IHsKICAgICAjIFVJIG1lc3NhZ2VzCi0gICAgQ3JlYXRlTmV3UGFnZShzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1
Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXMsIHN0cnVjdCBXZWJLaXQ6
Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhKSAtPiAodWludDY0X3Qg
bmV3UGFnZUlELCBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IG5l
d1BhZ2VQYXJhbWV0ZXJzKSBTeW5jaHJvbm91cworICAgIENyZWF0ZU5ld1BhZ2Uoc3RydWN0IFdl
YktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dG
ZWF0dXJlcywgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFj
dGlvbkRhdGEpIC0+IChPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlE
LCBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IG5ld1BhZ2VQYXJh
bWV0ZXJzKSBTeW5jaHJvbm91cwogICAgIFNob3dQYWdlKCkKICAgICBDbG9zZVBhZ2UoYm9vbCBz
dG9wUmVzcG9uc2l2ZW5lc3NUaW1lcikKICAgICBSdW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3Qg
ZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5
T3JpZ2luLCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkgU3luY2hyb25vdXMKQEAgLTEwNCw4ICsxMDQs
OCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMK
ICAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxv
YWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZy
YW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9y
aWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmll
ciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9u
RGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1l
SW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoV2Vi
Q29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgZW51bTp1
aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05h
dmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIE9wdGlvbmFsPFdlYktp
dDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBTeW5jaHJvbm91cworICAg
IERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2lu
YXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAgRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01h
aW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5
T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJl
c3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoV2ViQ29yZTo6UG9saWN5Q2hl
Y2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6
OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2Vi
S2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGlj
aWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBTeW5jaHJvbm91cwogICAgIERlY2lkZVBvbGljeUZv
ck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25B
Y3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpV
c2VyRGF0YSB1c2VyRGF0YSkKICAgICBVbmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBm
cmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
TGlmZXRpbWVPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNz
TGlmZXRpbWVPYnNlcnZlci5jcHAKaW5kZXggYzgwMjNkZTQxNjE2NDc1MDEwZjQyODIzOWE3YmVk
MDdiMTdmODVkNy4uZjQ5NzE1MWQ3NWM1ZTZmMWYyODZhYWE3OWU4YTY0N2M2YTlmMzZjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZU9i
c2VydmVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIFdlYlByb2Nlc3NMaWZldGltZU9ic2Vy
dmVyOjphZGRXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJQcm9jZQogICAg
IFJFTEVBU0VfQVNTRVJUKCFwcm9jZXNzLmlzUHJld2FybWVkKCkpOwogCiAgICAgaWYgKG1fcHJv
Y2Vzc2VzLmFkZCgmcHJvY2VzcykuaXNOZXdFbnRyeSkgewotICAgICAgICBSRUxFQVNFX0xPRyhM
b2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6YWRkV2ViUGFnZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRp
ZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAgICAgICBSRUxFQVNFX0xPRyhMb2Fk
aW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6YWRkV2ViUGFnZTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmll
cigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgICAgIHdlYlByb2Nl
c3NXaWxsT3BlbkNvbm5lY3Rpb24ocHJvY2VzcywgKnByb2Nlc3MuY29ubmVjdGlvbigpKTsKICAg
ICB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6
cmVtb3ZlV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHIKICAgICB3ZWJQ
YWdlRGlkQ2xvc2VDb25uZWN0aW9uKHdlYlBhZ2VQcm94eSwgKnByb2Nlc3MuY29ubmVjdGlvbigp
KTsKIAogICAgIGlmIChtX3Byb2Nlc3Nlcy5yZW1vdmUoJnByb2Nlc3MpKSB7Ci0gICAgICAgIFJF
TEVBU0VfTE9HKExvYWRpbmcsICIlcCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjpyZW1v
dmVXZWJQYWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNz
LnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgICAgIFJF
TEVBU0VfTE9HKExvYWRpbmcsICIlcCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjpyZW1v
dmVXZWJQYWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNz
LnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQcm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsK
ICAgICAgICAgd2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihwcm9jZXNzLCAqcHJvY2Vzcy5j
b25uZWN0aW9uKCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCAwZTEzOWYzMGQ5Y2VmOWY2MzIzM2M2MTNiNWU0MmJjZGQ1OThlZTY4
Li4wYjhiMzQ1ZWY4ZWYzMjJmMmYyNzU3ZDRlZTM3YmVmOWQyNzBiYjM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0xMjk2LDkgKzEyOTYsOSBAQCBi
b29sIFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVnaXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0
IFdlYnNpdGVEYXRhU3RvcmUmIHN0bwogfQogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6
OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVE
YXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5n
V2Vic2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUm
IGRhdGFTdG9yZSkKIHsKLSAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5h
ZGQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PHVpbnQ2NF90PigpKS5pdGVyYXRvci0+
dmFsdWUuYWRkKHBhZ2VJRCk7CisgICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNN
YXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDxQYWdlSWRlbnRpZmllcj4oKSku
aXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCBy
ZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNz
aW9uSUQoKTsKQEAgLTEzMTYsNyArMTMxNiw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VC
ZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhCiAg
ICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQordm9pZCBX
ZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKICAgICBhdXRvIHNlc3Np
b25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXNz
aW9uVG9QYWdlSURzTWFwLmZpbmQoc2Vzc2lvbklEKTsKQEAgLTIyMTEsNyArMjIxMSw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Bvb2w6OnJlaW5zdGF0ZU5ldHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUo
TmV0d29ya1Byb2Nlc3NQcm94eSYKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CitTZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZy
b21QYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBU
aGlzIGlzIGluZWZmaWNpZW50LgogICAgIGZvciAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3Mg
OiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFsdWVzKCkpIHsKQEAgLTI1MTksNyArMjUxOSw3
IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFyQ3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0
aW5nKCkKICAgICBzZW5kVG9BbGxQcm9jZXNzZXMoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFy
Q3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQ
b29sOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQ
cm9jZXNzUG9vbDo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICghbV9u
ZXR3b3JrUHJvY2VzcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmlu
ZGV4IDE2NTU0NWIxYTJmODZlYWE0YjgzM2M5M2FiZTgwZGM5MGVlNTI2MzMuLjE3ZTNlODAyYmM0
NTAwOGMzODUxMGJhZjVkNGUxNDM5OTNjOGIxYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaApAQCAtMTQ4LDYgKzE0OCwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
ZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFt
ZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImKTsKICAgICB2
b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lKTsKICAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1Jl
ZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEKTsKKyAg
ICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZl
cihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlm
aWVyPFQ+IGRlc3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJiByZWNlaXZlcikKKyAg
ICB7CisgICAgICAgIGFkZE1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0
aW5hdGlvbklELnRvVUludDY0KCksIHJlY2VpdmVyKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJp
bmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0
aW5hdGlvbklEKQorICAgIHsKKyAgICAgICAgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSk7CisgICAgfQogCiAgICAgYm9v
bCBkaXNwYXRjaE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJik7CiAgICAg
Ym9vbCBkaXNwYXRjaFN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYs
IHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jik7CkBAIC0xOTMsOCArMjA1LDggQEAgcHVi
bGljOgogCiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50Jiwg
UmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCi0gICAgdm9pZCBwYWdlQmVnaW5Vc2lu
Z1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7Ci0g
ICAgdm9pZCBwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
c2l0ZURhdGFTdG9yZSYpOworICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3Jl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBw
YWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJz
aXRlRGF0YVN0b3JlJik7CiAgICAgYm9vbCBoYXNQYWdlc1VzaW5nV2Vic2l0ZURhdGFTdG9yZShX
ZWJzaXRlRGF0YVN0b3JlJikgY29uc3Q7CiAKICAgICBjb25zdCBTdHJpbmcmIGluamVjdGVkQnVu
ZGxlUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlndXJhdGlvbi0+aW5qZWN0ZWRCdW5kbGVQ
YXRoKCk7IH0KQEAgLTM2NSw3ICszNzcsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCiAgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYsIE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPik7Ci0gICAgU2VydmljZVdvcmtlclByb2Nl
c3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0X3QgcGFn
ZUlEKSBjb25zdDsKKyAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAg
ICAgY29uc3QgSGFzaE1hcDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiwgU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eSo+JiBzZXJ2aWNlV29ya2VyUHJveGllcygpIGNvbnN0IHsgcmV0dXJuIG1f
c2VydmljZVdvcmtlclByb2Nlc3NlczsgfQogICAgIHZvaWQgc2V0QWxsb3dzQW55U1NMQ2VydGlm
aWNhdGVGb3JTZXJ2aWNlV29ya2VyKGJvb2wgYWxsb3dzKSB7IG1fYWxsb3dzQW55U1NMQ2VydGlm
aWNhdGVGb3JTZXJ2aWNlV29ya2VyID0gYWxsb3dzOyB9CiAgICAgYm9vbCBhbGxvd3NBbnlTU0xD
ZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0FueVNT
TENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcjsgfQpAQCAtNDkzLDcgKzUwNSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNlbmREaXNwbGF5Q29uZmlndXJhdGlvbkNoYW5nZWRNZXNzYWdlRm9yVGVz
dGluZygpOwogICAgIHZvaWQgY2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoKTsK
IAotICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6
OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4s
IGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgdWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24o
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9t
YWluLCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQog
ICAgIHZvaWQgc2V0U2FuZGJveEVuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fc2FuZGJveEVuYWJs
ZWQgPSBlbmFibGVkOyB9OwpAQCAtNzU4LDcgKzc3MCw3IEBAIHByaXZhdGU6CiAgICAgfTsKICAg
ICBQYXRocyBtX3Jlc29sdmVkUGF0aHM7CiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklELCBI
YXNoU2V0PHVpbnQ2NF90Pj4gbV9zZXNzaW9uVG9QYWdlSURzTWFwOworICAgIEhhc2hNYXA8UEFM
OjpTZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBtX3Nlc3Npb25U
b1BhZ2VJRHNNYXA7CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUHJvY2Vzc1Bvb2w+IG1fc2Vydmlj
ZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0aW9uVGltZXI7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXgg
ODIwMzQ2NWNiMjgxNGQyY2ZjMzI4ZmE3OTQ2NjJhMjBlMDJiNDMyYy4uNjc4MzFlMjA3ODA5YzBl
YzViNjI4YWVjMGQzOTExMTgzNWYzMTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xMTAsMTAgKzExMCw5IEBAIFdlYlByb2Nlc3NQcm94eSog
V2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihQcm9jZXNzSWRlbnRpZmllciBp
ZGVudGlmCiAgICAgcmV0dXJuIGFsbFByb2Nlc3NlcygpLmdldChpZGVudGlmaWVyKTsKIH0KIAot
dWludDY0X3QgV2ViUHJvY2Vzc1Byb3h5OjpnZW5lcmF0ZVBhZ2VJRCgpCitQYWdlSWRlbnRpZmll
ciBXZWJQcm9jZXNzUHJveHk6OmdlbmVyYXRlUGFnZUlEKCkKIHsKLSAgICBzdGF0aWMgdWludDY0
X3QgdW5pcXVlUGFnZUlEOwotICAgIHJldHVybiArK3VuaXF1ZVBhZ2VJRDsKKyAgICByZXR1cm4g
UGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKIHN0YXRpYyBXZWJQcm9jZXNzUHJveHk6
OldlYlBhZ2VQcm94eU1hcCYgZ2xvYmFsUGFnZU1hcCgpCkBAIC0zMzAsNyArMzI5LDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNodXREb3duKCkKICAgICBtX3Byb2Nlc3NQb29sLT5kaXNjb25u
ZWN0UHJvY2Vzcyh0aGlzKTsKIH0KIAotV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UodWludDY0X3QgcGFnZUlEKQorV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBnbG9iYWxQYWdlTWFw
KCkuZ2V0KHBhZ2VJRCk7CiB9CkBAIC0zNjMsNyArMzYyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpPYmplY3QqIG1l
c3NhZ2UKIAogUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVhdGVXZWJQYWdl
KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIHBh
Z2VDb25maWd1cmF0aW9uKQogewotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlE
KCk7CisgICAgYXV0byBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOwogICAgIFJlZjxXZWJQYWdl
UHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNyZWF0ZShwYWdlQ2xpZW50LCAqdGhpcywg
cGFnZUlELCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBhZGRFeGlzdGluZ1dl
YlBhZ2Uod2ViUGFnZS5nZXQoKSwgQmVnaW5zVXNpbmdEYXRhU3RvcmU6Olllcyk7CkBAIC00MTUs
MTAgKzQxNCwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFnZShXZWJQYWdl
UHJveHkmIHdlYlBhZ2UsIEVuZHNVc2luZ0RhdGFTdG9yZSBlbgogICAgIG1heWJlU2h1dERvd24o
KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZp
c2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3Jl
JiB2aXNpdGVkTGlua1N0b3JlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgYXV0byYg
dXNlcnMgPSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmVuc3VyZSgmdmlzaXRlZExpbmtT
dG9yZSwgW10gewotICAgICAgICByZXR1cm4gSGFzaFNldDx1aW50NjRfdD4geyB9OworICAgICAg
ICByZXR1cm4gSGFzaFNldDxQYWdlSWRlbnRpZmllcj4geyB9OwogICAgIH0pLml0ZXJhdG9yLT52
YWx1ZTsKIAogICAgIEFTU0VSVCghdXNlcnMuY29udGFpbnMocGFnZUlEKSk7CkBAIC00MjgsNyAr
NDI3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZp
c2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUKICAgICAgICAgdmlzaXRlZExpbmtTdG9y
ZS5hZGRQcm9jZXNzKCp0aGlzKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVZp
c2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIHVp
bnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVWaXNpdGVkTGlua1N0
b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgYXV0byBpdCA9IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnMu
ZmluZCgmdmlzaXRlZExpbmtTdG9yZSk7CiAgICAgaWYgKGl0ID09IG1fdmlzaXRlZExpbmtTdG9y
ZXNXaXRoVXNlcnMuZW5kKCkpCkBAIC01NDEsNyArNTQwLDcgQEAgYm9vbCBXZWJQcm9jZXNzUHJv
eHk6OmZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKQogfQogI2VuZGlmCiAKLWJvb2wgV2ViUHJv
Y2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWludDY0X3QgcGFnZUlEKSBjb25z
dAorYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChQYWdlSWRl
bnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvKiBwcm92aXNpb25hbFBhZ2Ug
OiBtX3Byb3Zpc2lvbmFsUGFnZXMpIHsKICAgICAgICAgaWYgKHByb3Zpc2lvbmFsUGFnZS0+cGFn
ZSgpLnBhZ2VJRCgpID09IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKaW5kZXggOWE2Y2JmMWY0NjA5OWE1ZjZmOWZhMmYwZWU4YTZmYTJjODE4MTZhOC4u
YWQzZjAzOGRkNjU0NjVjMDQ4OTk3OWI2N2U1ODVjODU2ZjkyZGM0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0SWRlbnRp
Zmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJs
ZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkU3RyaW5nSGFzaC5oPgpAQCAtOTcs
NyArOTgsNyBAQCBlbnVtIGNsYXNzIEFsbG93UHJvY2Vzc0NhY2hpbmcgeyBObywgWWVzIH07CiBj
bGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwdWJs
aWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50
ZWQ8V2ViUHJvY2Vzc1Byb3h5PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlByb2Nlc3NQcm94
eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJhbWVQcm94eT4+IFdlYkZyYW1lUHJveHlN
YXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdlUHJveHkqPiBXZWJQYWdl
UHJveHlNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBX
ZWJQYWdlUHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPj4gVXNlckluaXRpYXRlZEFjdGlv
bk1hcDsKIAogICAgIGVudW0gY2xhc3MgSXNQcmV3YXJtZWQgewpAQCAtMTI4LDcgKzEyOSw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9yZSYp
OwogCiAgICAgc3RhdGljIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0ZvcklkZW50aWZpZXIoV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBh
Z2UodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQ
YWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAKICAgICBl
bnVtIGNsYXNzIEJlZ2luc1VzaW5nRGF0YVN0b3JlIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTE0
OSwxMCArMTUwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgZGlkQ3JlYXRl
V2ViUGFnZUluUHJvY2Vzcyh1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgZGlkQ3JlYXRlV2Vi
UGFnZUluUHJvY2VzcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKLSAgICB2b2lkIGFkZFZp
c2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBwYWdlSUQpOwot
ICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIHVp
bnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVk
TGlua1N0b3JlJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVtb3ZlVmlz
aXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyKTsKIAogICAgIHZvaWQgYWRkV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkmLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAg
ICAgdm9pZCBkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkmKTsKQEAgLTMxMSw3ICszMTIsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCB3ZWJQYWdlTWVkaWFTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHkmKTsKIAogcHJvdGVj
dGVkOgotICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VJRCgpOworICAgIHN0YXRpYyBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBnZW5lcmF0ZVBhZ2VJRCgpOwogICAgIFdlYlByb2Nlc3NQ
cm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdhcm1lZCk7CiAK
ICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKQEAgLTM1NCw3ICszNTUsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdhdGlvbihMYXll
ckhvc3RpbmdDb250ZXh0SUQpOwogI2VuZGlmCiAKLSAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFn
ZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIGJvb2wgaGFzUHJvdmlzaW9uYWxQ
YWdlV2l0aElEKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBjb25zdDsKICAgICBib29sIGlzQWxs
b3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBjb25z
dDsKIAogICAgIC8vIFBsdWdpbnMKQEAgLTQ0Nyw3ICs0NDgsNyBAQCBwcml2YXRlOgogICAgIEhh
c2hTZXQ8UHJvdmlzaW9uYWxQYWdlUHJveHkqPiBtX3Byb3Zpc2lvbmFsUGFnZXM7CiAgICAgVXNl
ckluaXRpYXRlZEFjdGlvbk1hcCBtX3VzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKLSAgICBIYXNo
TWFwPFZpc2l0ZWRMaW5rU3RvcmUqLCBIYXNoU2V0PHVpbnQ2NF90LyogcGFnZUlEICovPj4gbV92
aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2VyczsKKyAgICBIYXNoTWFwPFZpc2l0ZWRMaW5rU3RvcmUq
LCBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gbV92aXNpdGVkTGlua1N0b3Jlc1dp
dGhVc2VyczsKICAgICBIYXNoU2V0PFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4gbV93
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzOwogCiAgICAgaW50IG1fbnVtYmVyT2ZUaW1l
c1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4IGUzNTUzMTllYTRjNGVlNjUxYzZiZWRm
N2M4NmZiZGQyMWYyOWRjMjMuLjdkNTc1YTQwNGIwNDViOTFhZDdhYzhlNjY3NjBkMDhiZTM4Yjkx
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIu
Y3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjp0YXNrQ29t
cGxldGVkKFdlYlVSTFNjaGVtZVRhc2smIHRhc2spCiAgICAgcGxhdGZvcm1UYXNrQ29tcGxldGVk
KHRhc2spOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJlbW92ZVRhc2tGcm9tUGFn
ZU1hcCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCkKK3ZvaWQgV2ViVVJMU2NoZW1l
SGFuZGxlcjo6cmVtb3ZlVGFza0Zyb21QYWdlTWFwKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QgdGFza0lEKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rhc2tzQnlQYWdlSWRlbnRp
Zmllci5maW5kKHBhZ2VJRCk7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdGFza3NCeVBhZ2VJ
ZGVudGlmaWVyLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZUhhbmRsZXIuaAppbmRleCA4OTk3NmM2MWY4M2Q1MmI4MWYyYzQ0MDdjMmM1YmJkNzNiZjJhZTQ5
Li5iN2FmMDc1OTc1ZjMyYjhhYjg1ZTg4ZDFiYWZmYjA1YTE3MDVhN2JhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCkBAIC02NiwxMyArNjYsMTMg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TdG9wVGFzayhXZWJQYWdlUHJv
eHkmLCBXZWJVUkxTY2hlbWVUYXNrJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVRh
c2tDb21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYpID0gMDsKIAotICAgIHZvaWQgcmVtb3ZlVGFz
a0Zyb21QYWdlTWFwKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKTsKKyAgICB2b2lk
IHJlbW92ZVRhc2tGcm9tUGFnZU1hcChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
dGFza0lEKTsKICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JUYXNrSWRlbnRpZmllcih1
aW50NjRfdCkgY29uc3Q7CiAKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAKICAgICBIYXNo
TWFwPHVpbnQ2NF90LCBSZWY8V2ViVVJMU2NoZW1lVGFzaz4+IG1fdGFza3M7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgSGFzaFNldDx1aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyOwor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEhhc2hTZXQ8dWludDY0X3Q+PiBt
X3Rhc2tzQnlQYWdlSWRlbnRpZmllcjsKICAgICAKICAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5k
bGVyIG1fc3luY0xvYWRDb21wbGV0aW9uSGFuZGxlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGI4NzIwNzNiZDI3ODFmZjA5YjliZjI1MzMxNjJj
MDVhYTY5YzAzZWIuLmE5N2YxNjBjZjI1NTZmYTEzOGY1MmJkODE1ZjIzZThlYTZjN2VhNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFzaz4gY3JlYXRlKFdl
YlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21w
bGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2VJZGVudGlmaWVyOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQogICAgIFdlYlByb2Nlc3NQcm94
eSogcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQogCiAgICAgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9y
ZXF1ZXN0OyB9CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGFnZVByb3h5KiBt
X3BhZ2U7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOwogICAgIHVpbnQ2
NF90IG1faWRlbnRpZmllcjsKLSAgICB1aW50NjRfdCBtX3BhZ2VJZGVudGlmaWVyOworICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBib29sIG1fc3RvcHBlZCB7IGZhbHNlIH07CiAg
ICAgYm9vbCBtX3Jlc3BvbnNlU2VudCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDBi
ZjUxMTJhOWU0ZGJlNjRiMDc4NDY1MGMxOTEyOTE2ZTA5MTk1MzMuLjBhOGIwYzExMjI1NWIwNzNl
MGI2YmFiODY1MzJjNDgzNDViM2Y5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0xNTc2LDcgKzE1
NzYsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRy
eVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUsIENvbXBsZQogICAgICAgICBwcm9jZXNzUG9vbC0+ZW5z
dXJlTmV0d29ya1Byb2Nlc3MoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dyZWdhdG9yID0g
Y2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJp
ZXMoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxT
dHJpbmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgYXV0byogd2Vi
UGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghd2ViUGFn
ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vi
c2l0ZURhdGFTdG9yZS5oCmluZGV4IDY0MmUzMzA5ZDA3NjI0M2UzN2Q4ZTFkMjc0NjViMTFmNzEy
ZGIwYzguLjgyMmMzZmM3NjM3ZDdjNWViMDAzYzY5Y2U5NDc0NWJkMzgyNTkzZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlQ29uZmln
dXJhdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KICNpbmNs
dWRlIDxwYWwvU2Vzc2lvbklELmg+CkBAIC0xMzUsNyArMTM2LDcgQEAgcHVibGljOgogICAgIHZv
aWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29uc3QgU3RyaW5nJik7
CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHVpbnQ2
NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFp
bnMpPiYmKTsKKyAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9t
YWlucyk+JiYpOwogICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNQcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2
b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhjb25zdCBVUkwmIGhvc3RSZWRpcmVjdGVk
RnJvbSwgY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXls
YW5kQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENv
bXBvc2l0b3IuY3BwCmluZGV4IGRjOGQ1M2NhZmJiNjNiMTZhNzhjYTY4NWRkNzRmYWI3YzQxZDJh
Y2YuLjI4OTIzNzM1OTFhMmU2OWUwMWU0YzNkMmI2ODk1ZWIzNjZiYWFlYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcApAQCAtMzcz
LDcgKzM3Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfY29tcG9zaXRvcl9pbnRlcmZhY2Ug
Y29tcG9zaXRvckludGVyZmFjZSA9IHsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCB3bF93ZWJraXRn
dGtfaW50ZXJmYWNlIHdlYmtpdGd0a0ludGVyZmFjZSA9IHsKICAgICAvLyBiaW5kU3VyZmFjZVRv
UGFnZUNhbGxiYWNrCi0gICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJj
ZSogcmVzb3VyY2UsIHN0cnVjdCB3bF9yZXNvdXJjZSogc3VyZmFjZVJlc291cmNlLCB1aW50MzJf
dCBwYWdlSUQpCisgICAgW10oc3RydWN0IHdsX2NsaWVudCosIHN0cnVjdCB3bF9yZXNvdXJjZSog
cmVzb3VyY2UsIHN0cnVjdCB3bF9yZXNvdXJjZSogc3VyZmFjZVJlc291cmNlLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgewogICAgICAgICBhdXRvKiBzdXJmYWNlID0gc3Rh
dGljX2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqPih3bF9yZXNvdXJjZV9nZXRfdXNl
cl9kYXRhKHN1cmZhY2VSZXNvdXJjZSkpOwogICAgICAgICBpZiAoIXN1cmZhY2UpCkBAIC01NDcs
NyArNTQ3LDcgQEAgYm9vbCBXYXlsYW5kQ29tcG9zaXRvcjo6Z2V0VGV4dHVyZShXZWJQYWdlUHJv
eHkmIHdlYlBhZ2UsIHVuc2lnbmVkJiB0ZXh0dXJlLCBJbnQKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgV2F5bGFuZENvbXBvc2l0b3I6OmJpbmRTdXJmYWNlVG9XZWJQYWdlKFdheWxhbmRD
b21wb3NpdG9yOjpTdXJmYWNlKiBzdXJmYWNlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdheWxh
bmRDb21wb3NpdG9yOjpiaW5kU3VyZmFjZVRvV2ViUGFnZShXYXlsYW5kQ29tcG9zaXRvcjo6U3Vy
ZmFjZSogc3VyZmFjZSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIFdl
YlBhZ2VQcm94eSogd2ViUGFnZSA9IG51bGxwdHI7CiAgICAgZm9yIChhdXRvKiBwYWdlIDogbV9w
YWdlTWFwLmtleXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3Rr
L1dheWxhbmRDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFu
ZENvbXBvc2l0b3IuaAppbmRleCAxNDgxOWY4ZmFjNGVjODAyMzBiYTJjYmJiMThlNmQwOTU5Yjlm
ODRhLi4yZDc4MGZmYjEyNTdkNDlmMDhkZWE5YTE4NjhhOGE0MzJjNjFiZTk2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaApAQCAtMTAzLDcg
KzEwMyw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuICEh
bV9kaXNwbGF5OyB9CiAgICAgU3RyaW5nIGRpc3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9k
aXNwbGF5TmFtZTsgfQogCi0gICAgdm9pZCBiaW5kU3VyZmFjZVRvV2ViUGFnZShTdXJmYWNlKiwg
dWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIGJpbmRTdXJmYWNlVG9XZWJQYWdlKFN1cmZhY2Uq
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2Vi
UGFnZVByb3h5Jik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlUHJveHkmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNv
bnRyb2xsZXJJT1MubW0KaW5kZXggMDgzZDZmYWYxNTIwMWY4Y2VjNGQwMjhiYTMwOTg4YjdhY2E3
NTBkNC4uY2VmZGU2MWM0OWI1MmFjZDZmMDg5MDg4MjA2YjhkNjZjNzU1MDI1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tCkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJl
Z2luU3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRpb25JbnRlcmFjdGl2ZVRyYW5zaXRpb24KICAgICAg
ICAgaWYgKGZpbmlzaCkKICAgICAgICAgICAgIG1fd2ViUGFnZVByb3h5Rm9yQmFja0ZvcndhcmRM
aXN0Rm9yQ3VycmVudFN3aXBlLT5uYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQodHJhbnNpdGlvbkNv
bXBsZXRlZCwgKnRhcmdldEl0ZW0pOwogICAgIH1dOwotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1f
d2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHku
cGFnZUlEKCk7CiAgICAgR2VzdHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsK
ICAgICBbbV9zd2lwZVRyYW5zaXRpb25Db250ZXh0IF9zZXRDb21wbGV0aW9uSGFuZGxlcjpbcGFn
ZUlELCBnZXN0dXJlSUQsIHRhcmdldEl0ZW1dIChfVUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25D
b250ZXh0ICpjb250ZXh0LCBCT09MIGRpZENvbXBsZXRlKSB7CiAgICAgICAgIGlmIChhdXRvIGdl
c3R1cmVDb250cm9sbGVyID0gY29udHJvbGxlckZvckdlc3R1cmUocGFnZUlELCBnZXN0dXJlSUQp
KQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lw
ZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogdGFyZ2V0SXRlbSwKICAgICAgICAgbV93
ZWJQYWdlUHJveHkuZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCk7CiAgICAgfQogCi0gICAgdWlu
dDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQg
PSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9j
dXJyZW50R2VzdHVyZUlEOwogICAgIG1fbG9hZENhbGxiYWNrID0gW3RoaXMsIHBhZ2VJRCwgZ2Vz
dHVyZUlEXSB7CiAgICAgICAgIGF1dG8gZHJhd2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5wcm92
aXNpb25hbERyYXdpbmdBcmVhKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCmluZGV4IGZmNDQ5MzQx
ZDllNDQyZmMxNjJlNDE1NDRiMzg1YjE3YzA1M2EwMzguLjU3ZjNmZTE3M2NjZDk1MTczNjQyYTE5
NWU3Y2ZkMTAxODg2OTg4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwCkBAIC0xNjgsNyArMTY4
LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yOjpt
ZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFn
ZS5wYWdlSUQoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7CiB9
CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yOjp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFN0
cmluZyYgdmFsaWRhdGlvblVSTFN0cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5j
cHAKaW5kZXggYjFjYmM5NjNiMGVmY2M4NTI0OTJkOTY4ZDllYWFjMzE4MjhlMTUyYi4uNDU0Y2E2
YmM4NDQ5ODNmNTk5OGZmZWU0ZGEzNzRjY2ZjYzYyMjVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eS5jcHAKQEAgLTIzMSw3ICsyMzEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OmRpZENsZWFyV2luZG93T2JqZWN0Rm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQog
ICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2Ny
aXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgZXJyb3JNZXNzYWdlLCBlcnJvclR5cGUpLCAwKTsKIH0K
IAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVu
Y3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxs
YmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQor
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bihQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
ZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRD
YWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50
NjRfdCBmcmFtZUlELAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFs
dWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxsYmFja0lELCByZXN1bHQsIGVycm9yVHlwZSksIDAp
OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1l
V2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBv
cmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6
cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdl
YlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAg
ICAgaWYgKCFwYWdlKSB7CkBAIC0zNTAsNyArMzUwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwg
dWkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1l
SUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxk
RnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zODgsNyArMzg4
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQsIGZyYW1lRnJvbUVsZW1lbnQtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0
aE5hbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00
MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hp
bGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDYKICAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJp
bmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
dWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7
CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNv
bHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmEKICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHBhcmVudEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpmb2N1
c0ZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKIHsKICAgICBX
ZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwog
ICAgIGlmICghcGFnZSkKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQ
b2ludCBjb252ZXJ0UG9pbnRGcm9tRnJhbWVDbGllbnRUb1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1l
VgogICAgIHJldHVybiBjbGllbnRQb2ludDsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENv
b3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChP
cHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQ
b2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZO
ZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJD
b3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBh
Z2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAg
aWYgKCFwYWdlKSB7CkBAIC02MzUsNyArNjM1LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Ojpjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGYK
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMs
IHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBpc09ic2N1cmVkKTsKIH0KIAotdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBX
ZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwog
ICAgIGlmICghcGFnZSkgewpAQCAtNzAzLDcgKzcwMyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRS
ZWN0IHNuYXBzaG90UmVjdEZvclNjcmVlbnNob3QoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6RWxl
bWVuCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmll
d3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OnRha2VTY3JlZW5zaG90KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBj
bGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBTaGFyZWFibGVCaXRt
YXA6OkhhbmRsZSBoYW5kbGU7CiAKQEAgLTc1MSw3ICs3NTEsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVu
c2hvdChjYWxsYmFja0lELCBoYW5kbGUsIHsgfSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdl
SUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzc2LDcgKzc3Niw3IEBAIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBmb3VuZENvb2tp
ZXMpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkZWxldGVDb29raWUoUGFnZUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShw
YWdlSUQpOwogICAgIGlmICghcGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCmlu
ZGV4IDYyOTU0MWQyMGJhMTBkZjYyZGExZTI2MDkxNjRlYWM4OTJiYTBkMTMuLjExNjc2NDUyNzdk
YmMxOTMwYTVhN2E1OTdkY2JjMmRmM2VjZjU1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVk
ZSAiQ29vcmRpbmF0ZVN5c3RlbS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjAsMTcgKzYxLDE3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5IG1lc3NhZ2VzCi0gICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlv
bih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rp
b24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFj
a0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAg
ICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
U3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmlu
Zz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAg
dm9pZCByZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7
Ci0gICAgdm9pZCBmb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCk7
Ci0gICAgdm9pZCBjb21wdXRlRWxlbWVudExheW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQs
IENvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
PiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4m
Jik7Ci0gICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPik+JiYpOwotICAgIHZvaWQgdGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsK
LSAgICB2b2lkIGdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4pPiYmKTsKLSAgICB2b2lkIGRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKKyAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlw
dEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0
c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Cisg
ICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2
b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZVBhcmVu
dEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9p
ZCBmb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlEKTsK
KyAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1
aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lm
TmVlZGVkLCBDb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50Piwg
Ym9vbCk+JiYpOworICAgIHZvaWQgc2VsZWN0T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOworICAgIHZvaWQgdGFrZVNjcmVlbnNo
b3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+KT4mJik7CisgICAg
dm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4pPiYmKTsKIAogICAgIFN0cmluZyBtX3Nlc3Npb25JZGVudGlmaWVyOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgppbmRleCBhYTEyMTllMmVm
MWZjMDcwMDQ1OTZkMjRhMWI1NzE2ZDMwNmY3OGJlLi5kNzJmODlkMjYzNTljZjAxY2NmZDUzMWU5
NmUwMWY0NDQwOWFhZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHku
bWVzc2FnZXMuaW4KQEAgLTIxLDIxICsyMSwyMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdl
cyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IHsKLSAgICBFdmFsdWF0ZUphdmFTY3JpcHRG
dW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBmdW5jdGlv
biwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNr
QXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAg
RXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3Vt
ZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tU
aW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRo
T3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGlu
YWwpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5
bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+
IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUp
IC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMK
LSAgICBSZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
KSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5j
CisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZl
Q2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+
IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIG5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3Qg
ZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlUGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCiAKLSAgICBGb2N1c0ZyYW1lKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKKyAgICBGb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkKIAotICAgIENvbXB1dGVFbGVtZW50
TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29v
cmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+
IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIEFzeW5jCisgICAgQ29tcHV0ZUVs
ZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVt
OnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChP
cHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgV2ViQ29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25h
bDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkg
QXN5bmMKIAotICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JU
eXBlKSBBc3luYworICAgIFNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYwogCi0gICAgVGFrZVNjcmVlbnNob3QodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3Jv
bGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFj
a0lEKQorICAgIFRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAg
IEdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+
IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29v
a2llcykgQXN5bmMKLSAgICBEZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBl
KSBBc3luYworICAgIEdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKKyAgICBEZWxldGVDb29raWUo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
Y29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGli
L1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAppbmRleCAwODJkNjA5YTg3
YmYzN2M3ZWYyZjRiNGRlOGUyNGNkZGEyNTEzNjZkLi40YTIzYmY1NjAxMDdjMzFmMWE0ZGUyYzk2
MTI5OWE3MDEwODE3NTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5z
aW9uLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIFdlYktpdFdlYlBhZ2UqIHdlYmtpdF93ZWJfZXh0
ZW5zaW9uX2dldF9wYWdlKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBndWluCiAgICAg
V2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZSogcHJpdiA9IGV4dGVuc2lvbi0+cHJpdjsKICAgICBX
ZWJQYWdlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBwcml2LT5wYWdlcy5lbmQoKTsKICAgICBm
b3IgKFdlYlBhZ2VNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcHJpdi0+cGFnZXMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpZiAoaXQtPmtleS0+cGFnZUlEKCkgPT0gcGFnZUlE
KQorICAgICAgICBpZiAoaXQtPmtleS0+cGFnZUlEKCkudG9VSW50NjQoKSA9PSBwYWdlSUQpCiAg
ICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIv
V2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKaW5kZXggZTU3ZTJlNzdlNTU4NDhlOGJhNzI1
ZjlkMzIyNzcwOWZmZjE3OGFmZi4uY2ZjNTAzMWVkNmU0YTI5NTRmZTAyYTAzZGE4N2ExNjFjZDJk
MzA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcApAQCAtNzYzLDcgKzc2
Myw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl9wYWdlX2dldF9pZChXZWJLaXRXZWJQYWdlKiB3ZWJQ
YWdlKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfUEFHRSh3ZWJQ
YWdlKSwgMCk7CiAKLSAgICByZXR1cm4gd2ViUGFnZS0+cHJpdi0+d2ViUGFnZS0+cGFnZUlEKCk7
CisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCk7
CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggYWUzODgzZDg2YjY4OWU2
NjZmMTZhY2VmOTAxNjcyOTRlNWQyNzg3Yy4uOGIxYWQ1ZWRmMGU2YjkwZDU4YzI0ZTYxNWZhZGM5
YzcxMDdhNWY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC04OSw3ICs4OSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYg
KGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAg
ICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1h
a2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlv
bklEKCkpKSkKICAgICAgICAgICAgIHdlYlBhZ2UtPmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShj
b25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0OSw3ICsx
NDksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9S
RU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3Nh
Z2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAg
ICAgICBpZiAoYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShk
ZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpCisgICAgICAgIGlmIChhdXRvIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVu
dGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAgIHdlYlBh
Z2UtPnBheW1lbnRDb29yZGluYXRvcigpLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBk
ZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYgY29ubmVjdGlvbgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAg
ICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0
byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShkZWNvZGVyLmRlc3Rp
bmF0aW9uSUQoKSkpCisgICAgICAgIGlmIChhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4o
ZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAgIHdlYlBhZ2UtPnBheW1lbnRD
b29yZGluYXRvcigpLT5kaWRSZWNlaXZlU3luY01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlciwg
cmVwbHlFbmNvZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAw
NGFlMGU0NWQ1ZTlkMjljYTBmMjcwYTA2NDE4YTZhYjJkNTAxZmNiLi4yNzhiNjAxODQ3OWYzNjU5
MDM0OGM4OTUxODU1YWNmNDNkY2I1OWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0xNTcsNyArMTU3LDcg
QEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiBy
ZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICBhdXRvJiBmcmFtZUxvYWRlckNsaWVudCA9
IHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVyKCktPmNsaWVudCgpOwogCiAgICAgV2ViUmVzb3Vy
Y2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVycyB0cmFja2luZ1BhcmFtZXRlcnM7Ci0gICAgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LnBhZ2VJRCgpLnZhbHVl
T3IoMCk7CisgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCA9IGZyYW1lTG9hZGVyQ2xpZW50
LnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50aWZpZXIgeyB9KTsKICAgICB0cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LmZyYW1lSUQoKS52YWx1ZU9yKDApOwog
ICAgIHRyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEID0gaWRlbnRpZmllcjsKICAgICBhdXRv
IHNlc3Npb25JRCA9IGZyYW1lTG9hZGVyQ2xpZW50LnNlc3Npb25JRCgpOwpAQCAtMTY3LDcgKzE2
Nyw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRl
ciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcmVt
ZW1iZXIgdGhlIFJlc291cmNlTG9hZGVyIGluIG91ciByZWNvcmRzIGJ1dCBub3Qgc2NoZWR1bGUg
aXQgaW4gdGhlIE5ldHdvcmtQcm9jZXNzLgogICAgIGlmIChyZXNvdXJjZUxvYWRlci5kb2N1bWVu
dExvYWRlcigpLT5zY2hlZHVsZUFyY2hpdmVMb2FkKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxv
YWRlci5yZXF1ZXN0KCkpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQ
cm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJl
IGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNvdXJjZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChy
ZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBh
cmNoaXZlIHJlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2Fk
ZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJl
c291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFy
Y2hpdmUgcmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRl
ci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgbV93ZWJSZXNvdXJjZUxv
YWRlcnMuc2V0KGlkZW50aWZpZXIsIFdlYlJlc291cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VM
b2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTc1LDE0ICsxNzUsMTQgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJl
c291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKIAogICAgIGlmIChyZXNv
dXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJl
TG9hZFJlc291cmNlKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hl
ZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVy
bCAnJXMnIHdpbGwgYmUgbG9hZGVkIGZyb20gYXBwbGljYXRpb24gY2FjaGUuIiwgcmVzb3VyY2VM
b2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxv
YWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
cmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2Fk
ZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJl
c291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICBtX3dl
YlJlc291cmNlTG9hZGVycy5zZXQoaWRlbnRpZmllciwgV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0
ZShyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQYXJhbWV0ZXJzKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29s
SXNEYXRhKCkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3Mp
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgbG9hZGVk
IGFzIGRhdGEuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVs
ZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBhcyBkYXRhIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwg
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBi
ZSBsb2FkZWQgYXMgZGF0YSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9h
ZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICBzdGFydExvY2FsTG9h
ZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xOTAsNyArMTkw
LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVy
JiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBp
ZiAoaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKSkp
IHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRl
clN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhIFF1
aWNrTG9vayByZXNvdXJjZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwg
InNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJj
ZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRy
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVu
dGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwg
InNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJj
ZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRy
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZy
YW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRl
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRl
ciwgQ2FjaGVkUmVzb3UKICAgICAvLyBodHRwczovL2Jsb2dzLmdub21lLm9yZy9hbGV4bC8yMDEy
LzAxLzI2L3Jlc291cmNlcy1pbi1nbGliLwogICAgIGlmIChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0
KCkudXJsKCkucHJvdG9jb2xJcygicmVzb3VyY2UiKSkgewogICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFzIGEgR1Jlc291cmNlLiIsIHJlc291cmNlTG9hZGVy
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVk
IGFzIGEgR1Jlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2Fk
ZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJl
c291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgR1Jl
c291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRl
cnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNl
TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIxMSwxMSArMjExLDExIEBAIHZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3Vy
Y2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgV2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5n
bGV0b24oKS5oYW5kbGVGZXRjaChyZXNvdXJjZUxvYWRlciwgc2Vzc2lvbklELCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBbdGhpcywgdHJhY2tpbmdQYXJhbWV0ZXJz
LCBpZGVudGlmaWVyLCBzZXNzaW9uSUQsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVz
b3VyY2UpLCByZXNvdXJjZUxvYWRlciA9IG1ha2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQgcmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KHJlc3VsdCAhPSBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7
CiAgICAgICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhy
b3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRl
ci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCB3
aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29y
aXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgp
LCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
aWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNl
TG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3Vn
aCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQ
Ukl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHJlc291cmNlTG9h
ZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtlcnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6
T25seSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJj
ZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogdW5hYmxlIHRvIHNjaGVkdWxlIFVSTCB0aHJv
dWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAi
c2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtl
ciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbcmVzb3VyY2VMb2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVy
KV0gewogICAgICAgICAgICAgICAgIGF1dG8gZXJyb3IgPSBpbnRlcm5hbEVycm9yKHJlc291cmNl
TG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkpOwogICAgICAgICAgICAgICAgIGVycm9yLnNldFR5cGUo
UmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsKQEAgLTIyNywxMyArMjI3LDEzIEBA
IHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVz
b3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS50cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVy
KHJlc291cmNlTG9hZGVyKSkKICAgICAgICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YkxvYWRlclN0cmF0ZWd5KCkuc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNl
TG9hZGVyLmdldCgpLCByZXNvdXJjZUxvYWRlci0+cmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRl
cnMsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwg
bWF4aW11bUJ1ZmZlcmluZ1RpbWUpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwg
bm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
cmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCBu
b3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBy
ZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2
NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAj
ZWxzZQogICAgIGlmICghdHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxv
YWRlcikpCiAgICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxv
YWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNlc3Np
b25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1
ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKICAgICBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBi
eSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRl
ci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVz
b3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxl
cnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBpZGVudGlmaWVyKTsKICNlbmRpZgogfQogCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291
cmNlTG9hZGVyJiByZXNvdXJjZUwKICAgICBpZiAobG9hZFBhcmFtZXRlcnMub3B0aW9ucy5tb2Rl
ICE9IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2aWdhdGUpIHsKICAgICAgICAgQVNTRVJUKGxvYWRQ
YXJhbWV0ZXJzLnNvdXJjZU9yaWdpbik7CiAgICAgICAgIGlmICghbG9hZFBhcmFtZXRlcnMuc291
cmNlT3JpZ2luKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJl
c291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBubyBzb3VyY2VPcmlnaW4gKGZyYW1lID0gJXAs
IHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBz
dGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9h
ZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFy
YW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAoZnJh
bWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZy
YW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5
KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgICAgICAgICBzY2hl
ZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtMzQ2LDkgKzM0Niw5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3Vy
Y2VMCiAKICAgICBBU1NFUlQoKGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2FkUGFyYW1l
dGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5
ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxz
KTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVs
ZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2Vz
cyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9h
ZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnBy
aW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNj
aGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAl
ZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGlu
dD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53
ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFt
ZXRlcnMuaWRlbnRpZmllcik7CiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQ
YXJhbWV0ZXJzKSwgMCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChy
ZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNl
IHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNv
dXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7
CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJz
Y2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3Jr
UHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291
cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9h
ZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAg
ICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUg
TmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBoYWQgY3Jhc2hlZC4KICAgICAgICAgLy8gVGhpcyBs
b2FkIHdpbGwgbmV2ZXIgc3VjY2VlZCBzbyB3ZSB3aWxsIHNjaGVkdWxlIGl0IHRvIGZhaWwgYXN5
bmNocm9ub3VzbHkuCiAgICAgICAgIHNjaGVkdWxlSW50ZXJuYWxseUZhaWxlZExvYWQocmVzb3Vy
Y2VMb2FkZXIpOwpAQCAtNTA3LDE5ICs1MDcsMTkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2kK
ICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1l
TG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKICAgICBXZWJQYWdlKiB3ZWJQYWdl
ID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKIAotICAgIGF1dG8gcGFn
ZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogMDsKKyAgICBhdXRvIHBhZ2VJRCA9
IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IFBhZ2VJZGVudGlmaWVyIHsgfTsKICAgICBh
dXRvIGZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwOwogICAgIGF1
dG8gc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNz
aW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsKIAogICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWVM
b2FkZXIuZnJhbWUoKS5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5OiBubyBkb2N1bWVudCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQsIGZyYW1lSUQsIHJlc291cmNl
TG9hZElkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNl
c3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IG5vIGRvY3VtZW50IChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIs
IHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAg
ICAgICAgZXJyb3IgPSBpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKGF1dG8gc3luY0xvYWRSZXN1bHQgPSB0cnlMb2FkaW5nU3lu
Y2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFuZGxlcihmcmFtZUxvYWRlciwgcmVzb3VyY2VMb2Fk
SWRlbnRpZmllciwgcmVxdWVzdCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgY2FsbGlu
ZyB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFuZGxlciAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSwgZXJy
b3IgPSAlZCkiLCBwYWdlSUQsIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHN5bmNM
b2FkUmVzdWx0LT5lcnJvci5lcnJvckNvZGUoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVk
IGNhbGxpbmcgdHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
bHUsIGVycm9yID0gJWQpIiwgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9h
ZElkZW50aWZpZXIsIHN5bmNMb2FkUmVzdWx0LT5lcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAg
IGVycm9yID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+ZXJyb3IpOwogICAgICAgICByZXNwb25z
ZSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQtPnJlc3BvbnNlKTsKICAgICAgICAgZGF0YSA9IFdU
Rk1vdmUoc3luY0xvYWRSZXN1bHQtPmRhdGEpOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgV2Vi
TG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZy
YW1lTG9hZGVyLCB1bnNpCiAgICAgSGFuZ0RldGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25E
aXNhYmxlcjsKIAogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFy
YW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9y
bVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJyb3IsIHJlc3BvbnNlLCBkYXRhKSwgMCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgc2VuZGluZyBzeW5jaHJvbm91cyBuZXR3b3JrIHByb2Nl
c3MgbWVzc2FnZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQsIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZp
ZXIpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5ldHdv
cmsgcHJvY2VzcyBtZXNzYWdlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCBy
ZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB3ZWJQYWdl
ID8gd2ViUGFnZS0+Y29yZVBhZ2UoKSA6IG51bGxwdHIpCiAgICAgICAgICAgICBwYWdlLT5kaWFn
bm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdu
b3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OnN5bmNocm9ub3VzTWVzc2FnZUZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91
bGRTYW1wbGU6Ok5vKTsKICAgICAgICAgcmVzcG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CkBA
IC01NjEsNyArNTYxLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICB9CiB9CiAKLXZv
aWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJ
RCkKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlm
aWVyIHdlYlBhZ2VJRCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBhZ2VMb2FkQ29tcGxldGVkKHdlYlBhZ2VJRCksIDAp
OwogfQpAQCAtNjQ4LDEwICs2NDgsMTAgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29u
bmVjdFRvKEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgY29uc3QgVVJMJiB1cmwsIFMKIAogICAg
IE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVy
cy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgdXJsIH07Ci0gICAgcGFyYW1ldGVycy53ZWJQ
YWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+cGFnZUlEKCkgOiAwOwotICAgIHBhcmFtZXRlcnMu
d2ViRnJhbWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CisgICAgcGFy
YW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlLT5wYWdlSUQoKTsKKyAgICBwYXJhbWV0ZXJzLndl
YkZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJRCgpOwogICAgIHBhcmFtZXRlcnMucGFyZW50UElE
ID0gcHJlc2VudGluZ0FwcGxpY2F0aW9uUElEKCk7Ci0gICAgcGFyYW1ldGVycy5zZXNzaW9uSUQg
PSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVs
dFNlc3Npb25JRCgpOworICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZS0+c2Vzc2lv
bklEKCk7CiAgICAgcGFyYW1ldGVycy5zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5OwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQ
cmVjb25uZWN0T25seTo6WWVzOwogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVz
cG9uc2VBY2Nlc3MgPSBzaG91bGRQZXJmb3JtU2VjdXJpdHlDaGVja3MoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4
IDRhZjU5OTQxZTM0ZjcyYWQyNmU4MWVmYjU2MDYwNjc1MTgxMWY4YzYuLmFjNTI0OTY2YTg1MjFl
MGUzZDY1ZWI2MmI5ZjcwZTgyZjc4Y2MyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAgICAgCiAgICAgdm9pZCBsb2FkUmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
ZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQg
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShXZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVk
IGxvbmcgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0
Y2hPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRh
KSBmaW5hbDsKLSAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkg
ZmluYWw7CisgICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cikgZmluYWw7CiAKICAgICB2b2lkIHJlbW92ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZp
bmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYs
IGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGJmODhmZGEzMDA3ZTE2NGZmMzhhOTUyMmFi
YjgxZmVmZDdlOWY4NTIuLjg4YmQ1M2JmMWY4ZmI3MzZlYjE3M2VmNjRmMWUzMDNkMWJiMTAwYzEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTg4LDE2ICs4OCwxNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBSZXNv
dQogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0IHRvICclcyciLCBwcm9wb3NlZFJlcXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgaWYg
KG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5t
YXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0KG1fY29yZUxvYWRlci5nZXQoKSwgcHJvcG9zZWRS
ZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxs
YmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJh
Y2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIG1fY29yZUxvYWRlci0+d2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUocHJvcG9zZWRS
ZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3Zl
KHByb3RlY3RlZFRoaXMpXShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSB7CiAgICAgICAgIGlm
ICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkgewotICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVh
cmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBvciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG5v
IGNvcmVsb2FkZXIgb3IgaWRlbnRpZmllciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogCkBAIC0xMTMsMTIgKzExMywxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1NlbnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlUwog
dm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9yICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2Fk
ZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291
cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc3RhdHVzID0gJWQpIiwg
bV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0
dHBTdGF0dXNDb2RlKCkpOwogCiAgICAgUmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAogICAgIGlmIChtX2NvcmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFw
cGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZXNwb25zZShtX2NvcmVM
b2FkZXIuZ2V0KCksIHJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSB0aGUgY29u
dGVudCBpcyBhbHJlYWR5IGNhY2hlZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlz
IGFscmVhZHkgY2FjaGVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzUs
NyArMTM1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib28KICAgICAgICAgICAgIGlmIChtX2Nv
cmVMb2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAg
c2VuZChNZXNzYWdlczo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZSgpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVj
YXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBu
byBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICB9OwogICAgIH0KIApAQCAtMTQ4
LDcgKzE0OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hv
dWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwog
CiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0
YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEKTsKICAgICB9CiAgICAgbV9udW1CeXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwog
CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJp
Y3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNz
KSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9j
b3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVu
Z3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRl
c1JlY2VpdmVkKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hSZXNvdXJj
ZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRlc1JlY2VpdmVkKTsKIAogICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTG9hZCBz
aG91bGQgbm90IGJlIGFibGUgdG8gZmluaXNoIGJlZm9yZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJl
c3BvbnNlIik7CiAgICAgbV9jb3JlTG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKG5ldHdvcmtMb2Fk
TWV0cmljcyk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
RmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0wKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVy
bCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxS
ZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nl
c3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3VsZCBub3QgYmUgYWJsZSB0byBmaW5pc2gg
YmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIApAQCAtMTc5LDcgKzE3OSw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBmb3IgJyVz
JyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXItPmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKTsKIH0KQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0
b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQo
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIo
V2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRp
b25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXIt
PnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGlj
eURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVP
cHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgbV9jb3Jl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5zdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09y
Q29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCBy
ZXNwb25zZSk7CiB9CkBAIC0xOTYsMTMgKzE5NiwxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVy
OjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVu
aQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJl
YWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRsZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQ
cm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwg
bV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
bV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3JhcEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAo
IWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJST1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZy
b20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBmcm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxl
IHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRS
ZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hhcmVkQnVmZmVyIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAg
ICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2NvcmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAg
ICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdl
LT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6
OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFn
bm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNoYXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCmluZGV4IDdmZDc4MzIyMzNhMzYyYzIzYTkwNGZj
MTVlZjM0Y2E2NGE5NjdlYWUuLjU4NjU0MzcxOGU1ZTgzODhiOGI0MWFiMDIwMzdhYzc2ZTc4Njkz
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291
cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2Uu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTUwLDcgKzUxLDcgQEAg
dHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOwogY2xhc3MgV2ViUmVzb3Vy
Y2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHN0cnVjdCBUcmFja2luZ1BhcmFtZXRl
cnMgewotICAgICAgICB1aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgdWludDY0X3QgZnJhbWVJRCB7IDAgfTsKICAg
ICAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlEIHsgMCB9OwogICAgIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggMzRiNWE2NDNmMDNiZGE2MWZk
YTRiMzNkODg3YjVkMWRiODlkYzYwNy4uYWRjNDc2NjUyZTgwN2IyMzZhY2MxMTY1NGE1ZmMxNzE1
NzM1YzkxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApAQCAtNzMsNyAr
NzMsNyBAQCBzdGF0aWMgY29uc3QgU2Vjb25kcyBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0
IHsgMTAwX21zIH07IC8vIE9ubHkgdXNlZCBieSBsYQogCiBjbGFzcyBTZXJ2aWNlV29ya2VyRnJh
bWVMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgRW1wdHlGcmFtZUxvYWRlckNsaWVudCB7CiBw
dWJsaWM6Ci0gICAgU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50KFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
CisgICAgU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50KFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQpCiAgICAgICAgIDogbV9jb25uZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgICAgICwg
bV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAgICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKQEAgLTk1
LDE4ICs5NSwxOCBAQCBwcml2YXRlOgogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3Jh
Z2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3Nlc3Npb25JRDsgfQotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9mcmFtZUlEOyB9
CiAgICAgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBVUkwmKSBmaW5hbCB7IHJldHVybiBtX3VzZXJB
Z2VudDsgfQogCiAgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24mIG1fY29ubmVjdGlv
bjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJ
RCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICB1aW50
NjRfdCBtX2ZyYW1lSUQgeyAwIH07CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwogfTsKIAotV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUdyb3VwSUQs
IHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCitXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24o
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkK
ICAgICA6IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uKSkK
ICAgICAsIG1fcGFnZUdyb3VwSUQocGFnZUdyb3VwSUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQp
CkBAIC0yMjYsMTIgKzIyNiwxMiBAQCB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgc2VydgogewogICAgIGF1
dG8qIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAg
ICAgaWYgKCFzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkpIHsKLSAgICAgICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBt
X2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFpc1ZhbGlkRmV0Y2gocmVxdWVzdCwgb3B0aW9ucywg
c2VydmljZVdvcmtlclRocmVhZFByb3h5LT5zY3JpcHRVUkwoKSwgcmVmZXJyZXIpKSB7Ci0gICAg
ICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlm
aWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKaW5kZXggNmNlODNkMWQwOWVhZWRjYWU0ZmU4NzNmMThlYzUyYjU5ZTRmYTE3Mi4uZmJi
NjMwZTRlMTliMzU5ZGMxNzBjY2VhMDE4YTQ5ODMyMTY2ZGFmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0
b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1Ymxp
YyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNz
YWdlUmVjZWl2ZXIgewogcHVibGljOgotICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
KFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKKyAgICBXZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25uZWN0aW9uPiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsK
ICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC05
Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzOwogICAgIHVpbnQ2NF90IG1fcGFnZUdyb3VwSUQ7Ci0gICAg
dWludDY0X3QgbV9wYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9w
YWdlSUQ7CiAgICAgdWludDY0X3QgbV9wcmV2aW91c1NlcnZpY2VXb3JrZXJJRCB7IDAgfTsKIAog
ICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9y
YWdlQmxvY2tpbmdQb2xpY3kgeyBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2Nr
aW5nUG9saWN5OjpBbGxvd0FsbFN0b3JhZ2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAKaW5kZXggOGFlYmFmZjk2MjIxZTk4NjMzN2MzZDIzZTA0MGYwNWI0NzU1YTc1
Ni4uMjY0NGM5YzFkMTJiNmNkMDFkNTY2OTlkMTMyYmMyZWY0YzYzNmExOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFz
a0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3Qg
V2ViQ29yZTo6UmVzb3UKIHsKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJu
OwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFz
azo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9LCBtX2ZldGNoSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2Ug
fSwgbV9mZXRjaElkZW50aWZpZXIpOwogCiAgICAgY2xlYW51cCgpOwogfQpAQCAtNjgsNyArNjgs
NyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJgogICAgIGlmIChtX25lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogICAgICAgICBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJl
Y2VpdmVSZXNwb25zZU1lc3NhZ2UgPSB0cnVlOwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1l
c3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNw
b25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNo
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBt
X25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNl
aXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKQEAgLTg0LDcgKzg0LDcgQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2
ZURhdGEgeyB7IGJ1ZmZlciB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkg
fSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgYnVm
ZmVyIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlk
UmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTEw
MSw3ICsxMDEsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJl
Y2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JgogICAgIC8vIEZvciBub3cgYW5k
IGZvciB0aGUgY2FzZSBvZiBibG9icywgd2UgcmVhZCBpdCB0aGVyZSBhbmQgc2VuZCB0aGUgZGF0
YSB0aHJvdWdoIElQQy4KICAgICBVUkwgYmxvYlVSTCA9IGZvcm1EYXRhLT5hc0Jsb2JVUkwoKTsK
ICAgICBpZiAoYmxvYlVSTC5pc051bGwoKSkgewotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZNb3ZlKGZvcm1EYXRhKSB9IH0sIG1fZmV0Y2hJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IElQQzo6Rm9ybURh
dGFSZWZlcmVuY2UgeyBXVEZNb3ZlKGZvcm1EYXRhKSB9IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFy
KiBkYXRhLCBzaXplCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkUmVjZWl2ZURhdGEgeyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEp
LCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1f
ZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygpCkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3Im
IGVycm9yKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9m
ZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOwogCiAgICAgY2xlYW51cCgpOwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQg
V2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNoKCkKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckZldGNoVGFzazo6RGlkRmluaXNoIHsgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpEaWRGaW5pc2ggeyB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7
CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xp
ZW50OjpkaWROb3RIYW5kbGUoKQogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1
cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkTm90SGFuZGxlIHsgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogCiAgICAgY2xlYW51cCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAppbmRleCA0OTMzY2E0YzNhMDY3MmNh
YzMwZjc3OTUxOTBkMjU4NTIxYzBjZjAyLi4yYjI4ODY0YTlhYTA5ODQ0MmQ2MTUzMmM2NDBmNWI5
M2E4NTk5ODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcApAQCAtODIsMTQg
KzgyLDE0IEBAIFJlZjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6Z2V0T3JDcmVhdGUoVXNlckNvbnRlbnRDCiBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcihVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKQogewogICAgIEFTU0VSVCh1c2Vy
Q29udGVudENvbnRyb2xsZXJzKCkuY29udGFpbnMobV9pZGVudGlmaWVyKSk7CiAKLSAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKIAogICAgIHVzZXJDb250ZW50Q29udHJvbGxlcnMoKS5y
ZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KQEAgLTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2Ut
PnBhZ2VJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBtX2lkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVy
ZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29udHJvbGxlci0+aWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlk
UG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlEKCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRp
ZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZhbHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5p
ZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAgIFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI+IG1fY29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKaW5kZXggNDk2Mjk2ZjZkODgx
MDUyMzkyNDUxNjAxMzA1NjQ2YmI2ZDZiMWNjYS4uMDhiZThlMDE2ODMxYTQyZWFmYzdjYWNiNTQ3
YzM2ZGYyNjA3ZWZkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKQEAgLTI4OCw3ICsyODgsNyBA
QCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0
IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlcwogCiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2Vi
RnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUpOwogCi0gICAgdWludDY0X3QgbmV3UGFnZUlEID0g
MDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlEOwogICAgIE9wdGlvbmFs
PFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CiAgICAgaWYgKCF3ZWJQcm9j
ZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJhbWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2UoKS0+
cGFnZUlEKCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHdpbmRvd0ZlYXR1cmVzLCBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6
OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVycyksIG1fcGFnZS5wYWdlSUQoKSkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMjk5LDggKzI5OSw4IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVu
dDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVx
dWVzCiAgICAgaWYgKHBhcmFtZXRlcnMtPnNlc3Npb25JRCA9PSBtX3BhZ2Uuc2Vzc2lvbklEKCkp
CiAgICAgICAgIHBhcmFtZXRlcnMtPm9sZFBhZ2VJRCA9IG1fcGFnZS5wYWdlSUQoKTsKIAotICAg
IHdlYlByb2Nlc3MuY3JlYXRlV2ViUGFnZShuZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMp
KTsKLSAgICByZXR1cm4gd2ViUHJvY2Vzcy53ZWJQYWdlKG5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7
CisgICAgd2ViUHJvY2Vzcy5jcmVhdGVXZWJQYWdlKCpuZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFt
ZXRlcnMpKTsKKyAgICByZXR1cm4gd2ViUHJvY2Vzcy53ZWJQYWdlKCpuZXdQYWdlSUQpLT5jb3Jl
UGFnZSgpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2hvdygpCkBAIC0xMzE3LDEyICsx
MzE3LDEyIEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJr
ZXJSZWN0cygpCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBz
dWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhS
ZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2Uu
aGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFt
ZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWlu
JiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJl
Z2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9w
RnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGFnZS5yZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFp
biksIGZyYW1lSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAppbmRleCBkZDNiMjI1NDM1ZDkyNjM0NDE1OTljODA1YzM2MzczY2YyNjI2MWNlLi4yOTFj
NWVkZGM4YzNlZWJmYjE0OGMwNWQ2NjI1M2JjZmUzZDQ3NDAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5o
CkBAIC0zNjksOCArMzY5LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1
bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJikgZmluYWw7CisgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlv
bkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6
U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGY0Mjhm
ZDIzOTdlZGRkNGQyNDExNzcwMzIzZWIzZmEyNzkwMmQ4NWYuLjcwNTIwMjViOWRjZjkyNDE0Y2I2
ZTQ4NDJkYWZhNzQ4YzBlMWY3NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0zMDksNyAr
MzA5LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyVW5kb1N0ZXAoVW5kb1N0ZXAm
IHN0ZXApCiAgICAgYXV0byBzdGVwSUQgPSB3ZWJTdGVwLT5zdGVwSUQoKTsKIAogICAgIG1fcGFn
ZS0+YWRkV2ViVW5kb1N0ZXAoc3RlcElELCBXVEZNb3ZlKHdlYlN0ZXApKTsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8o
c3RlcElELCBzdGVwLmxhYmVsKCkpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246
OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRv
KHN0ZXBJRCwgc3RlcC5sYWJlbCgpKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VF
dmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6
cmVnaXN0ZXJSZWRvU3RlcChVbmRvU3RlcCYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAppbmRleCA1MjljMDQ2NzAzMDFiMzUwYjEzMjUxODM1NGE5ZTVhODU1YjljNDhkLi4zZGNkN2Uy
ZWMxOTk4MTdkNzQ5NWVkMGE4MzYyNTM2NDM2NjFjZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6fldl
YkZyYW1lTG9hZGVyQ2xpZW50KCkKIHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lICYm
IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+cGFnZUlE
KCk7CkBAIC01NDEsNyArNTQxLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGUKICAgICBpZiAo
IXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIl
cCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQ6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdl
YlBhZ2UtPnBhZ2VJRCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOworICAgIFJFTEVBU0VfTE9HKE5l
dHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIs
IHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7
CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCkBAIC01NzcsNyArNTc3LDcg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZhaWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsK
KyAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRGYWlsTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgbV9mcmFtZS0+ZnJh
bWVJRCgpKTsKIAogICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKQEAgLTkwMSw3
ICs5MDEsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3QgTmF2aWdhdAogICAgIGlmIChyZXF1ZXN0ZXIuZnJh
bWVJRCgpICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKHJlcXVlc3Rlci5mcmFt
ZUlEKCkpKQogICAgICAgICBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IHJlcXVl
c3Rlci5mcmFtZUlEKCk7CiAKLSAgICB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCA9IHJlcXVl
c3Rlci5wYWdlSUQoKSAmJiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rl
ci5wYWdlSUQoKSkgPyByZXF1ZXN0ZXIucGFnZUlEKCkgOiAwOworICAgIE9wdGlvbmFsPFBhZ2VJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRDsKKyAgICBpZiAocmVxdWVzdGVyLnBhZ2VJRCgp
ICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJRCgpKSkK
KyAgICAgICAgb3JpZ2luYXRpbmdQYWdlSUQgPSByZXF1ZXN0ZXIucGFnZUlEKCk7CiAKICAgICBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YTsKICAgICBuYXZpZ2F0aW9u
QWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSA9IGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggZjczYWI4Y2E3M2YxNzhiZjI2OGZmMmI4NDFj
NDUxY2RkNDk4ZmFhMy4uYzhmYjJhZjIxMjU2NmM2NDY4NjA3N2EwYzg5YWY4MTA1MzkwYTY4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmKTsK
IAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAg
T3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmll
d0xvYWRlckNsaWVudC5jcHAKaW5kZXggZTFlOTNhNmRlMzQ2N2VmMTQwOTQ1MzQ2ZDhkYjRmZGQy
NzM4NjcwMy4uOWU0NmQ4MDczYjM4MGU0MjU1NGJlYzVmNDQ0ODEzZjRlNmY5MzZjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2
aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwCkBAIC0zNywxNCArMzcsMTQg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXVzaW5nIFBhc3N3b3JkQ2FsbGJhY2tNYXAgPSBI
YXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPj47Cit1c2luZyBQ
YXNzd29yZENhbGxiYWNrTWFwID0gSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4+Owogc3RhdGljIFBhc3N3b3JkQ2FsbGJhY2tNYXAm
IHBhc3N3b3JkQ2FsbGJhY2tzKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UGFzc3dv
cmRDYWxsYmFja01hcD4gY2FsbGJhY2tNYXA7CiAgICAgcmV0dXJuIGNhbGxiYWNrTWFwLmdldCgp
OwogfQogCi1XZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCB1aW50NjRfdCBwYWdlSUQp
CitXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0
cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiAgICAgOiBtX2ZpbGVOYW1lIHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1
dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdlSUQgfQpAQCAtODUsNyArODUsNyBAQCB2b2lkIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlcXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudElu
TWFpbkZyYW1lKG1fZmlsZU5hbWUpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUHJldmlld0xv
YWRlckNsaWVudDo6ZGlkUmVjZWl2ZVBhc3N3b3JkKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIHVp
bnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVBh
c3N3b3JkKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICBBU1NFUlQocGFzc3dvcmRDYWxsYmFja3MoKS5jb250YWlucyhwYWdlSUQp
KTsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gcGFzc3dvcmRDYWxsYmFja3MoKS50YWtl
KHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IGY5
OTg2ZTQxY2EyZjI1MWRiMmMzZTVkODhlMDhkZjUwNjg1NDA0ZTguLmJlODg3YWQ4YTdmMGI2NTdk
MWZhNDUxZDE4MzNjZjFjZDQ0YjUzNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRl
ckNsaWVudC5oCkBAIC0zNSwxNiArMzUsMTYgQEAgY2xhc3MgV2ViRnJhbWU7CiAKIGNsYXNzIFdl
YlByZXZpZXdMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6UHJldmlld0xvYWRl
ckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJQcmV2aWV3TG9hZGVyQ2xpZW50
PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIHVpbnQ2
NF90IHBhZ2VJRCkKKyAgICBzdGF0aWMgUmVmPFdlYlByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViUHJldmlld0xvYWRlckNsaWVudChmaWxlTmFtZSwgdXRpLCBwYWdlSUQpKTsKICAgICB9CiAg
ICAgfldlYlByZXZpZXdMb2FkZXJDbGllbnQoKTsKIAotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2Vp
dmVQYXNzd29yZChjb25zdCBTdHJpbmcmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyB2
b2lkIGRpZFJlY2VpdmVQYXNzd29yZChjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7CiAKIHByaXZhdGU6Ci0gICAgV2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJp
bmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0
YUFycmF5KENGQXJyYXlSZWYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbCgpIG92ZXJyaWRlOwpAQCAtNTMsNyArNTMsNyBA
QCBwcml2YXRlOgogCiAgICAgY29uc3QgU3RyaW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3Ry
aW5nIG1fdXRpOwotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIFF1aWNrTG9va0RvY3VtZW50RGF0YSBt
X2RhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3
aW5nQXJlYS5jcHAKaW5kZXggMjc2YjgwYmYyOGYxZjVmZDQ5YTZmMGZiNDk5ZDMzNTEyYWRjMTAx
MC4uYzA3Mzk2ZjAyZjFmYTY1ZjQ1YWNlZTcyZjEzNGY0ZmIyZDllODkwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtNjgsNyAr
NjgsNyBAQCBEcmF3aW5nQXJlYTo6RHJhd2luZ0FyZWEoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIERy
YXdpbmdBcmVhSWRlbnRpZmllciBpZGVudGlmaWVyLAogICAgICwgbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5n
QXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIH0KIAog
RHJhd2luZ0FyZWE6On5EcmF3aW5nQXJlYSgpCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgRHJhd2lu
Z0FyZWE6OnJlbW92ZU1lc3NhZ2VSZWNlaXZlcklmTmVlZGVkKCkKICAgICBpZiAobV9oYXNSZW1v
dmVkTWVzc2FnZVJlY2VpdmVyKQogICAgICAgICByZXR1cm47CiAgICAgbV9oYXNSZW1vdmVkTWVz
c2FnZVJlY2VpdmVyID0gdHJ1ZTsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hl
ci5jcHAKaW5kZXggNjkxODMwYjU5M2M2N2FkMzNkNzdhMGU2OGM1NDdhNjMxYzVhYjZkNy4uY2Fj
MTg4YjM0YTJiNzU0MDI0MjkwN2MwNWMzOWY4MjMzNzcxZTBhOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC04Nyw3
ICs4Nyw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAgICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFdmVudERpc3BhdGNoZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9xdWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjp3
aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVu
dCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBi
b29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCit2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9v
bCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2Fu
UnViYmVyQmFuZEF0Qm90dG9tKQogewogI2lmIFBMQVRGT1JNKENPQ09BKSB8fCBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQogICAgIFBsYXRmb3JtV2hlZWxFdmVudCBwbGF0Zm9ybVdoZWVsRXZlbnQg
PSBwbGF0Zm9ybSh3aGVlbEV2ZW50KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEV2ZW50RGlz
cGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQm
IHdoZWVsRXZlbgogfQogCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLXZvaWQgRXZl
bnREaXNwYXRjaGVyOjpnZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJLaXQ6
OldlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6Omdl
c3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVy
ZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSgpIG11
dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaXNwYXRjaEdlc3R1cmVFdmVudChwYWdl
SUQsIGdlc3R1cmVFdmVudCk7CkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBFdmVudERpc3BhdGNo
ZXI6OmdldFF1ZXVlZFRvdWNoRXZlbnRzRm9yUGFnZShjb25zdCBXZWJQYWdlJiB3ZWJQYWdlLCBU
b3VjaEUKICAgICBkZXN0aW5hdGlvblF1ZXVlID0gbV90b3VjaEV2ZW50cy50YWtlKHdlYlBhZ2Uu
cGFnZUlEKCkpOwogfQogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgdG91Y2hFdmVudCkKK3ZvaWQg
RXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3Qg
V2ViS2l0OjpXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQogewogICAgIGJvb2wgdXBkYXRlTGlz
dFdhc0VtcHR5OwogICAgIHsKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6dG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVu
dCYgdAogCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cygpCiB7Ci0g
ICAgSGFzaE1hcDx1aW50NjRfdCwgVG91Y2hFdmVudFF1ZXVlPiBsb2NhbENvcHk7CisgICAgSGFz
aE1hcDxQYWdlSWRlbnRpZmllciwgVG91Y2hFdmVudFF1ZXVlPiBsb2NhbENvcHk7CiAgICAgewog
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigmbV90b3VjaEV2ZW50c0xvY2spOwogICAgICAgICBs
b2NhbENvcHkuc3dhcChtX3RvdWNoRXZlbnRzKTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cygpCiB9CiAjZW5kaWYKIAotdm9pZCBF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0
IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0
Y2hXaGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYg
d2hlZWxFdmVudCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMTks
NyArMjE5LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHcKIH0KIAogI2lmIEVOQUJMRShNQUNf
R0VTVFVSRV9FVkVOVFMpCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZl
bnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkK
K3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJHZXN0dXJlRXZlbgogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotdm9p
ZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRSZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJFdmVudCYgZXZlbnQsIGJvb2wgZGlkSGFuZGxlRXZlbnQpCit2b2lkIEV2ZW50RGlz
cGF0Y2hlcjo6c2VuZERpZFJlY2VpdmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IFdlYkV2ZW50JiBldmVudCwgYm9vbCBkaWRIYW5kbGVFdmVudCkKIHsKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVudChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXZlbnQu
dHlwZSgpKSwgZGlkSGFuZGxlRXZlbnQpLCBwYWdlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAppbmRleCAxZDQ3Nzg3N2Vh
YWU0MDQ1MjZhMDc0NTFjMDcxODY5OTdhNTUwZTU0Li5lMWJiYmQ0Nzk2OWJmYmI3NTJjNjFkMjFj
NjFhMjllZWZhZDk2MmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9FdmVudERpc3BhdGNoZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKIAogI2luY2x1ZGUgIldlYkV2ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvV2hlZWxFdmVudERlbHRhRmlsdGVyLmg+
CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC03NywzOCAr
NzgsMzggQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cwotICAgIHZvaWQgd2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZl
bnQmLCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQs
IGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSk7Cisg
ICAgdm9pZCB3aGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVl
bEV2ZW50JiwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJp
Z2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20p
OwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgIHZvaWQgdG91Y2hFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKKyAgICB2b2lkIHRvdWNoRXZlbnQo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgog
I2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi0gICAgdm9pZCBnZXN0dXJlRXZlbnQodWlu
dDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKKyAgICB2b2lkIGdlc3R1cmVF
dmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAj
ZW5kaWYKIAogCiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAg
IHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxF
dmVudCYpOworICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50Jik7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMp
CiAgICAgdm9pZCBkaXNwYXRjaFRvdWNoRXZlbnRzKCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUFD
X0dFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQgZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3Qg
cGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKKyAgICB2b2lkIGRpc3BhdGNoR2VzdHVy
ZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLSAgICB2b2lkIHNlbmREaWRS
ZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlkSGFu
ZGxlRXZlbnQpOworICAgIHZvaWQgc2VuZERpZFJlY2VpdmVFdmVudChXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgY29uc3QgV2ViRXZlbnQmLCBib29sIGRpZEhhbmRsZUV2ZW50KTsKICNlbmRpZgog
CiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpCiAgICAgTG9jayBtX3Njcm9sbGluZ1RyZWVzTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZT4+IG1fc2Nyb2xsaW5nVHJl
ZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6
OlRocmVhZGVkU2Nyb2xsaW5nVHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXM7CiAjZW5kaWYKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2hlZWxFdmVudERlbHRhRmlsdGVyPiBtX3JlY2VudFdo
ZWVsRXZlbnREZWx0YUZpbHRlcjsKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBM
b2NrIG1fdG91Y2hFdmVudHNMb2NrOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFRvdWNoRXZlbnRR
dWV1ZT4gbV90b3VjaEV2ZW50czsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBUb3VjaEV2ZW50UXVldWU+IG1fdG91Y2hFdmVudHM7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hl
ci5tZXNzYWdlcy5pbgppbmRleCA1ZTE1NDNjOThjY2ZhNDE0MDFjMjc1MzhjNjI5OWY5YTU4MGYz
NjdiLi5hZjkwNGI0NTE2YTEwOTgwODU0YzFhMzQ0ZTYxMjJjZmQ3MTY0Yjg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRj
aGVyLm1lc3NhZ2VzLmluCkBAIC0yMSwxMSArMjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVz
c2FnZXMgLT4gRXZlbnREaXNwYXRjaGVyIHsKLSAgICBXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJ
RCwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQs
IGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29s
IGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKKyAgICBXaGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJl
ckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFu
ZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKICNpZiBFTkFCTEUoSU9TX1RPVUNI
X0VWRU5UUykKLSAgICBUb3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJUb3Vj
aEV2ZW50IGV2ZW50KQorICAgIFRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQgZXZlbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUFD
X0dFU1RVUkVfRVZFTlRTKQotICAgIEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktp
dDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQorICAgIEdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVM
YXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEubW0KaW5kZXggYjc1MmMxYzU0ZDQ2ZjA4ZGRhNjY1YjVmMzU2NGQ1NDJhNjY1ZWNmNi4uYjI5
MWRmMGI3ZGZkZjc5MzllN2RhYWU3MjM0MjAyNjVkYjE5YzM2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJl
ZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Jl
bW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpAQCAtNzUsNyArNzUs
NyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3QgVwogICAgIC8vIEZJWE1FOiBXaGlsZSB1c2luZyB0
aGUgaGlnaCBlbmQgb2YgdGhlIHJhbmdlIG9mIERpc3BsYXlJRHMgbWFrZXMgYSBjb2xsaXNpb24g
d2l0aCByZWFsLCBub24tUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEKICAgICAvLyBEaXNwbGF5
SURzIGxlc3MgbGlrZWx5LCBpdCBpcyBub3QgZW50aXJlbHkgc2FmZSB0byBoYXZlIGEgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEgYW5kIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhCiAg
ICAgLy8gY29lZXhpc3QgaW4gdGhlIHNhbWUgcHJvY2Vzcy4KLSAgICB3ZWJQYWdlLndpbmRvd1Nj
cmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSB3ZWJQ
YWdlLnBhZ2VJRCgpKTsKKyAgICB3ZWJQYWdlLndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6Om51
bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSB3ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0
KCkpOwogfQogCiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6flJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhKCkKQEAgLTQzNCw3ICs0MzQsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhOjpmbHVzaExheWVycygpCiAgICAgUmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IGJh
Y2tpbmdTdG9yZUZsdXNoZXIgPSBCYWNraW5nU3RvcmVGbHVzaGVyOjpjcmVhdGUoV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgV1RGTW92ZShjb21taXRF
bmNvZGVyKSwgV1RGTW92ZShjb250ZXh0c1RvRmx1c2gpKTsKICAgICBtX3BlbmRpbmdCYWNraW5n
U3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3JlRmx1c2hlcjsKIAotICAgIHVpbnQ2NF90IHBhZ2VJ
RCA9IG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdl
SUQoKTsKICAgICBkaXNwYXRjaF9hc3luYyhtX2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1
c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3JlRmx1c2hlciksIHBhZ2VJRF0gewogICAgICAgICBi
YWNraW5nU3RvcmVGbHVzaGVyLT5mbHVzaCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKaW5kZXggYzNh
OTUyNTY1MzI2ZTc0OWU1MjYxMTMyYjA0NGFhNTg4ODAyYzA0Zi4uNWNmNDQ0MDdlM2ZiM2Y2N2Ew
MzQ3MDAzZDA0NzhkNzQxOTkzMjQzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcApAQCAtNTQsNyArNTQs
NyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6
OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAgICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6bWVzc2FnZVJlY2Vp
dmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0aGlzKTsKIH0KIAotdm9pZCBWaWV3VXBkYXRlRGlz
cGF0Y2hlcjo6dmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5m
bykKK3ZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZUluZm8mIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8pCiB7CiAgICAgYm9vbCB1cGRh
dGVMaXN0V2FzRW1wdHk7CiAgICAgewpAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFZpZXdVcGRhdGVE
aXNwYXRjaGVyOjp2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUodWludDY0X3QgcGFnZUlELCBjb25z
dCBWaXNpYgogCiB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjpkaXNwYXRjaFZpc2libGVDb250
ZW50UmVjdFVwZGF0ZSgpCiB7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgVXBkYXRlRGF0YT4gdXBk
YXRlOworICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFVwZGF0ZURhdGE+IHVwZGF0ZTsKICAg
ICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKCZtX2RhdGFNdXRleCk7CiAgICAgICAgIHVw
ZGF0ZSA9IFdURk1vdmUobV9sYXRlc3RVcGRhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgKaW5kZXggZTQ3ZGM0
ZTFkNDE2ODIyMzQwYWZhZGVhMmEzYzgwNjIwZjRiMjA4OC4uY2E3ZDIwMGMyYmNmNjVlNzdiODBh
MjlkZmFjMTk0M2VjMmRkNDE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCiAjaW5jbHVkZSAiVmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlSW5mby5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgpAQCAtNDcsNyArNDgsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6
V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8mKTsKKyAgICB2b2lkIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYp
OwogCiAgICAgdm9pZCBkaXNwYXRjaFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSgpOwogCkBAIC01
OCw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAg
IExvY2sgbV9kYXRhTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgVXBkYXRlRGF0YT4gbV9s
YXRlc3RVcGRhdGU7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVXBkYXRl
RGF0YT4gbV9sYXRlc3RVcGRhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRj
aGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1Vw
ZGF0ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4KaW5kZXggMTdlMmM4ZGQxODZhZDI3NmU1NThhY2M4
ODBjMjY4OGQ1MDM1OGZlNi4uZDkyZWViODg5ZDA5NTcyYTFkMjI2ZTgzYzdjZTEzZjU5NjEwMjZj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0
ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4KQEAgLTIxLDUgKzIxLDUgQEAK
ICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gVmlld1VwZGF0ZURpc3BhdGNoZXIgewotICAg
IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6VmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKQorICAg
IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyB2aXNpYmxlQ29udGVudFJlY3RV
cGRhdGVJbmZvKQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCmluZGV4IDIxMWQ2MDFlZjBiNDRm
NTJhYTJkZTk2M2U4NDUzZjg2YzUyZjhmZDQuLjdhMGMwYzgwZmU4Y2M2MDExNjkzZDdiNDUyN2Fi
ZWM3ZTllNWU3NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAg
c3RhdGljIElEVG9IaXN0b3J5SXRlbU1hcCYgaWRUb0hpc3RvcnlJdGVtTWFwKCkKICAgICByZXR1
cm4gbWFwOwogfQogCi12b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJ
UHJvY2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0
b3J5SXRlbT4mJiBpdGVtLCB1aW50NjRfdCBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBv
dmVyd3JpdGVFeGlzdGluZ0l0ZW0pCit2b2lkIFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJ
dGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQs
IFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIE92ZXJ3cml0
ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0pCiB7CiAgICAgLy8gVGhpcyBpdGVt
L2l0ZW1JRCBwYWlyIHNob3VsZCBub3QgYWxyZWFkeSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFT
U0VSVF9VTlVTRUQob3ZlcndyaXRlRXhpc3RpbmdJdGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0g
PT0gT3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZZXMgfHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNv
bnRhaW5zKGl0ZW1JRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKaW5kZXggZjNiMWM4YWY1NDgyM2Mz
ZTgyNjhkNmFlNThlNDBhNmY2MTU0ZDA4MS4uZDFiYWFkYjkxYzU1ODYxYjE1NDNiOTcxNzY0ODYy
YjVkMjIzOTc3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRDbGllbnQuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAg
IFllcywKICAgICAgICAgTm8KICAgICB9OwotICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3Mo
Y29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpI
aXN0b3J5SXRlbT4mJiwgdWludDY0X3QgcGFnZUlELCBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0pOwor
ICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7CiAKICAgICB2b2lkIGNsZWFyKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tp
ZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
Y3BwCmluZGV4IDE2MGVkZWZkNTlkMTBhMDIzZTRhZjI1MWJlMmIxYTliMmE5OGIyZDUuLjczOGJl
OTJiOTJkYzczZDJkZjY3N2VlMzRlYzEzMDgxYTYwZjFhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcApAQCAtMzgsNiArMzgsOCBA
QAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIGNs
YXNzIFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNl
c3Npb25Qcm92aWRlciB7CiAgICAgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9ucyBhcmUgYWNjZXNz
ZWQgb25seSBpbiB0aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7
IH0KQEAgLTQ5LDcgKzUxLDcgQEAgV2ViQ29va2llSmFyOjpXZWJDb29raWVKYXIoKQogU3RyaW5n
IFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+
IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAg
ICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAg
ICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC02Niw3ICs2
OCw3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29r
aWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llU3RyaW5nKQogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwot
ICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAg
ICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAg
ICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC04Myw3
ICs4NSw3IEBAIGJvb2wgV2ViQ29va2llSmFyOjpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3Jl
OjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3Rk
OjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVK
YXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBXZWJD
b3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJv
b2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0gZmFsc2U7CkBAIC05NSw3ICs5Nyw3IEBAIHN0ZDo6
cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFy
Ojpjb29raWVSZXF1ZXN0SGVhCiBib29sIFdlYkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25z
dCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQu
ZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZy
YW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJ
RCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29v
a2llSmFyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
aAppbmRleCA5N2RkNzZmNjY0YzNmNTUzYWRmYzhlNzZiYjg1ZWEzZjExMWU1MTFlLi41NTliZDBl
NTBiYmVjMzVmZmIyNTZiOTEyYjdiNDZkYTk5NGIyZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJs
aWM6CiAgICAgU3RyaW5nIGNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHNldENvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25z
dCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykgZmluYWw7CiAgICAgYm9vbCBjb29r
aWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYpIGNvbnN0IGZpbmFsOwotICAgIHN0
ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmlu
ZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6
RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAppbmRleCA4OTBjNWU1NmFjMDRjZTczZjQ1ZWUwN2Q5NzgzNTFmZDMxY2FhNTIxLi40YWY0OTVh
NTFiOTAzNzI2ZjNiYjY0YzNhNGRlMzE1MWQ5OWZiYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGlj
IHVpbnQ2NF90IGdlbmVyYXRlTGlzdGVuZXJJRCgpCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpj
cmVhdGVXaXRoQ29yZU1haW5GcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogY29y
ZUZyYW1lKQogewogICAgIGF1dG8gZnJhbWUgPSBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYkZy
YW1lTG9hZGVyQ2xpZW50PihzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCZjb3Jl
RnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSkpOwotICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBwYWdlLT5w
YWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVh
dGVNYWluRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwogCiAgICAgZnJhbWUtPm1fY29yZUZyYW1l
ID0gY29yZUZyYW1lOwogICAgIGZyYW1lLT5tX2NvcmVGcmFtZS0+dHJlZSgpLnNldE5hbWUoU3Ry
aW5nKCkpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0
ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjCiBSZWY8
V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVTdWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7
CiAgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVy
Q2xpZW50PigpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENy
ZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFn
ZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+
ZnJhbWVJRCgpKSk7CiAKICAgICBhdXRvIGNvcmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUocGFnZS0+
Y29yZVBhZ2UoKSwgb3duZXJFbGVtZW50LCBmcmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudC5nZXQo
KSk7CiAgICAgZnJhbWUtPm1fY29yZUZyYW1lID0gY29yZUZyYW1lLnB0cigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4
IGM5NjUyZTk0YWY4NmI2MGU3ZmRlNzM2MjVkMTFiNWFiY2VhNGM5ZGEuLmJjZmY4ZTJhODk2ZmYw
MmU4MjUxNjUyNzgxMTliZDFmZWI0NjIxZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV2Vi
SW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJKFdlYlBhZ2UmIHBhZ2UpCiAjZW5kaWYKIH0KIAot
dm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0
ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZl
bCkKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24oUGFnZUlkZW50aWZp
ZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNw
ZWN0aW9uTGV2ZWwpCiB7CiAgICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3Rl
ZFBhZ2VJZGVudGlmaWVyOwogICAgIG1fZnJvbnRlbmRBUElEaXNwYXRjaGVyLnJlc2V0KCk7CkBA
IC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQogICAg
IGlmIChtX2Zyb250ZW5kSG9zdCkKICAgICAgICAgbV9mcm9udGVuZEhvc3QtPmRpc2Nvbm5lY3RD
bGllbnQoKTsKIAotICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSAwOworICAgIG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIgPSB7IH07CiAgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
LmgKaW5kZXggODM4MWJmMWNlZGVjYjY1YzVkNDc0NzVjMjJiN2QzZGI2MmZiZmQ4ZS4uOTQyNGJm
ZTFmMjZjZmRjMTY5MDdjNzgxZmVmNGQ2ZDA1YzVlY2UyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwpA
QCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpTdHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVm
ZXJlbmNlKSBvdmVycmlkZSB7IGNsb3NlV2luZG93KCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBX
ZWJJbnNwZWN0b3JVSSBtZXNzYWdlcwotICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbih1aW50
NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGlu
c3BlY3Rpb25MZXZlbCk7CisgICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5z
aWduZWQgaW5zcGVjdGlvbkxldmVsKTsKICAgICB2b2lkIHVwZGF0ZUNvbm5lY3Rpb24oKTsKIAog
ICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKQEAgLTEzMyw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAg
IC8vIGNvcmVQYWdlKCksIHNpbmNlIHdlIG1heSBuZWVkIGl0IGFmdGVyIHRoZSBmcm9udGVuZCdz
IHBhZ2UgaGFzIHN0YXJ0ZWQgZGVzdHJ1Y3Rpb24uCiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ29u
dHJvbGxlciogbV9mcm9udGVuZENvbnRyb2xsZXIgeyBudWxscHRyIH07CiAKLSAgICB1aW50NjRf
dCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyIHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXI7CiAgICAgYm9vbCBtX3VuZGVyVGVzdCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvY2tpbmdVbmF2YWlsYWJsZSB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2lzVmlzaWJsZSB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCmluZGV4IGRl
YTBmZTU4NGQ0ZWYwZjg2ZmE5NzE2NjJiYjQ3YjQxYTdmNjEzYmYuLjQzMTkwYWE4MzRkY2FhNjY5
NjRiYmJhOTU1MDA4MjFmYjdkNjEwMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluCkBAIC0yMSw3
ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJIHsK
LSAgICBFc3RhYmxpc2hDb25uZWN0aW9uKHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVy
LCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQorICAgIEVzdGFibGlz
aENvbm5lY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiAgICAgVXBkYXRl
Q29ubmVjdGlvbigpCiAKICAgICBBdHRhY2hlZEJvdHRvbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDNiYWFmZDE4NTRjYmM5OTVjYTRlODk4
MDNlM2I0NDE4MjNlYjYxNjUuLjJjMTAwYjU5YjZiMTcyMmE1ZjJiMjcxYTZlY2Y3Y2YzYzRiNmZl
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBA
IC0zNjAsNyArMzYwLDcgQEAgcHJpdmF0ZToKIAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdU
Rjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCB3ZWJQYWdlQ291bnRlciwgKCJXZWJQYWdlIikpOwog
Ci1SZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3Jl
YXRlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZXRlcnMpCiB7CiAgICAgUmVmPFdlYlBhZ2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBh
Z2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiAKQEAgLTM3MCw3ICszNzAsNyBAQCBS
ZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogICAgIHJldHVybiBwYWdlOwogfQogCi1XZWJQYWdlOjpX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCitXZWJQYWdlOjpXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAg
ICAgLCBtX3ZpZXdTaXplKHBhcmFtZXRlcnMudmlld1NpemUpCiAgICAgLCBtX2Fsd2F5c1Nob3dz
SG9yaXpvbnRhbFNjcm9sbGVyIHsgcGFyYW1ldGVycy5hbHdheXNTaG93c0hvcml6b250YWxTY3Jv
bGxlciB9CkBAIC04MzEsNyArODMxLDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYWdlOjptZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gcGFnZUlEKCk7CisgICAg
cmV0dXJuIHBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZvaWQgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkCiAgICAgaWYg
KCFpdGVtKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coTG9hZGluZywgIkluIFdlYlByb2Nl
c3MgcGlkICVpLCBXZWJQYWdlICUiIFBSSXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFjay9mb3J3
YXJkIFVSTCAlcyIsIGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9wYWdlSUQsIGl0ZW0tPnVybCgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhMb2FkaW5nLCAiSW4gV2ViUHJvY2Vz
cyBwaWQgJWksIFdlYlBhZ2UgJSIgUFJJdTY0ICIgaXMgbmF2aWdhdGluZyB0byBiYWNrL2Zvcndh
cmQgVVJMICVzIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBp
dGVtLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIEFTU0VSVCghbV9wZW5k
aW5nTmF2aWdhdGlvbklEKTsKICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9u
SUQ7CkBAIC0yMDc2LDcgKzIwNzYsNyBAQCBib29sIFdlYlBhZ2U6OnNldEZpeGVkTGF5b3V0U2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAgIGlmICghdmlldyB8fCB2aWV3LT5maXhlZExheW91
dFNpemUoKSA9PSBzaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9T
VFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAi
IHNldEZpeGVkTGF5b3V0U2l6ZSAiIDw8IHNpemUpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNp
YmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwg
IiBzZXRGaXhlZExheW91dFNpemUgIiA8PCBzaXplKTsKICAgICB2aWV3LT5zZXRGaXhlZExheW91
dFNpemUoc2l6ZSk7CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpeGVkTGF5
b3V0U2l6ZURpZENoYW5nZShzaXplKSk7CkBAIC0yNTA0LDcgKzI1MDQsNyBAQCBjb25zdCBXZWJF
dmVudCogV2ViUGFnZTo6Y3VycmVudEV2ZW50KCkKIHZvaWQgV2ViUGFnZTo6ZnJlZXplTGF5ZXJU
cmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbiByZWFzb24pCiB7CiAgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlBhZ2UgKFBhZ2VJRD0lbGx1KSAtIEFkZGluZyBhIHJl
YXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJlZTsgY3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0g
ICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9s
YXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVl
emVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy5hZGQocmVh
c29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBA
IC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFdlYlBhZ2U6OmZyZWV6ZUxheWVyVHJlZShMYXllclRy
ZWVGcmVlemVSZWFzb24gcmVhc29uKQogdm9pZCBXZWJQYWdlOjp1bmZyZWV6ZUxheWVyVHJlZShM
YXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAiJXAgLSBXZWJQYWdlIChQYWdlSUQ9JWxsdSkgLSBSZW1vdmluZyBhIHJlYXNv
biAlZCB0byBmcmVlemUgbGF5ZXIgdHJlZTsgY3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0gICAg
ICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXll
clRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVS
ZWFzb25zLnRvUmF3KCkpOwogICAgIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy5yZW1vdmUocmVh
c29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJlYUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBA
IC0zMTY4LDcgKzMxNjgsNyBAQCB2b2lkIFdlYlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQog
CiB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6
OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRl
Q2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxsYmFja0lEPiYgY2FsbGJhY2tJRHMpCiB7Ci0gICAg
TE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IHBh
Z2VJRCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOworICAg
IExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBw
YWdlSUQoKS50b1VJbnQ2NCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5
U3RhdGUpOwogCiAgICAgYXV0byBjaGFuZ2VkID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlT
dGF0ZTsKICAgICBtX2FjdGl2aXR5U3RhdGUgPSBhY3Rpdml0eVN0YXRlOwpAQCAtMzE3Niw3ICsz
MTc2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0
eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRlLCBBY3QKICAgICBpZiAoY2hhbmdlZCkKICAgICAg
ICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCi0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3Bh
Z2UsICJzZXRBY3Rpdml0eVN0YXRlIGNhbGxlZCBvbiAlIiBQUkl1NjQgIiBidXQgV2ViQ29yZSBw
YWdlIHdhcyBudWxsIiwgcGFnZUlEKCkpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wYWdl
LCAic2V0QWN0aXZpdHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJdTY0ICIgYnV0IFdlYkNvcmUgcGFn
ZSB3YXMgbnVsbCIsIHBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIGlmIChtX3BhZ2UpIHsKICAg
ICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+PiBjdXJyZW50
bHlDaGFuZ2luZ0FjdGl2aXR5U3RhdGUgeyBtX2xhc3RBY3Rpdml0eVN0YXRlQ2hhbmdlcywgY2hh
bmdlZCB9OwogICAgICAgICBtX3BhZ2UtPnNldEFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZSk7
CkBAIC00MzM5LDcgKzQzMzksNyBAQCB2b2lkIFdlYlBhZ2U6Om1haW5GcmFtZURpZExheW91dCgp
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSBtYWluRnJhbWVWaWV3KCkpIHsKICAgICAgICAgSW50U2l6ZSBuZXdDb250ZW50U2l6ZSA9IGZy
YW1lVmlldy0+Y29udGVudHNTaXplKCk7Ci0gICAgICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxl
UmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlEIDw8ICIgbWFpbkZyYW1lRGlk
TGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVudFNpemUpOworICAg
ICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8
PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29u
dGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVudFNpemUpOwogICAgICAgICBpZiAobV92aWV3cG9y
dENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNTaXplKG5ld0NvbnRlbnRTaXplKSkKICAgICAgICAg
ICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNoYW5nZWQoKTsKICAgICB9CkBAIC01NzQyLDcgKzU3
NDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAg
IAogICAgIGJvb2wgdmlld3BvcnRDaGFuZ2VkID0gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9TVFJF
QU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIGRp
ZENvbW1pdExvYWQgc2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBjb3JlRnJhbWUtPnZpZXco
KS0+Y29udGVudHNTaXplKCkpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0
cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBkaWRDb21taXRM
b2FkIHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgY29yZUZyYW1lLT52aWV3KCktPmNvbnRl
bnRzU2l6ZSgpKTsKICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNT
aXplKGNvcmVGcmFtZS0+dmlldygpLT5jb250ZW50c1NpemUoKSkpCiAgICAgICAgIHZpZXdwb3J0
Q2hhbmdlZCA9IHRydWU7CiAKQEAgLTYwNTYsNyArNjA1Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2Vu
ZEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICAvLyBJZiB0aGF0IGlzIHRoZSBjYXNlLCBqdXN0IHNl
bmQgd2hhdCB3ZSBoYXZlIChpLmUuIGRvbid0IGluY2x1ZGUgcG9zdC1sYXlvdXQgZGF0YSkgYW5k
IHdhaXQgdW50aWwgdGhlCiAgICAgLy8gbmV4dCBsYXllciB0cmVlIGNvbW1pdCB0byBjb21wdXRl
IGFuZCBzZW5kIHRoZSBjb21wbGV0ZSBFZGl0b3JTdGF0ZSBvdmVyLgogICAgIGF1dG8gc3RhdGUg
PSBlZGl0b3JTdGF0ZSgpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9y
U3RhdGVDaGFuZ2VkKHN0YXRlKSwgcGFnZUlEKCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSk7CiAKICAgICBpZiAoc3RhdGUuaXNN
aXNzaW5nUG9zdExheW91dERhdGEpCiAgICAgICAgIHNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBk
YXRlKCk7CkBAIC02MjM3LDcgKzYyMzcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBvc3RNZXNzYWdlKGNv
bnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIAogdm9p
ZCBXZWJQYWdlOjpwb3N0TWVzc2FnZUlnbm9yaW5nRnVsbHlTeW5jaHJvbm91c01vZGUoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogewotICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNl
ckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyht
ZXNzYWdlQm9keSkpKSwgcGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5j
aHJvbm91c01vZGUpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVz
c2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkpKSwgSVBDOjpTZW5kT3B0aW9uOjpJZ25v
cmVGdWxseVN5bmNocm9ub3VzTW9kZSk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cG9zdFN5bmNocm9u
b3VzTWVzc2FnZUZvclRlc3RpbmcoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmpl
Y3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJOjpPYmplY3Q+JiByZXR1cm5EYXRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDg2OGFlOTJmMmZiMzI5
MzUxMDExMGJhZWU4Y2NiNjc4MjMxYzMzYWQuLjc3ZDhlNGIyZGRjZWRiNTJjNTVjNDc5ZDNhMWFm
ZGY1YTcyZTliYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ludFNpemVIYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZU92ZXJsYXkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BvaW50ZXJJRC5oPgpAQCAtMjczLDcgKzI3NCw4IEBAIHVzaW5nIFdLRXZlbnRNb2Rp
ZmllcnMgPSB1aW50MzJfdDsKIAogY2xhc3MgV2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxX
ZWJQYWdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWludDY0
X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyBSZWY8
V2ViUGFnZT4gY3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOworCiAgICAgdmlydHVhbCB+V2ViUGFnZSgpOwogCiAgICAgdm9pZCByZWlu
aXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CkBAIC0yODMsNyAr
Mjg1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXZWJQYWdlKiBmcm9tQ29yZVBhZ2UoV2ViQ29y
ZTo6UGFnZSopOwogCiAgICAgV2ViQ29yZTo6UGFnZSogY29yZVBhZ2UoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2UuZ2V0KCk7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQoKTsgfQogICAgIGJvb2wgdXNlc0VwaGVtZXJhbFNl
c3Npb24oKSBjb25zdCB7IHJldHVybiBtX3BhZ2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7IH0K
IApAQCAtMTE2Niw3ICsxMTY4LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2VuZFN5bmNXaXRoRGVs
YXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsK
ICAgICAgICAgY2FuY2VsR2VzdHVyZXNCbG9ja2VkT25TeW5jaHJvbm91c1JlcGxpZXMoKTsKLSAg
ICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBt
X3BhZ2VJRCwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3Jt
UGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOworICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6
U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKICAgICB9
CiAKICAgICBXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFj
Y2Vzcyhjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIpOwpAQCAtMTE5OSw3ICsxMjAxLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNlcklzSW50ZXJhY3RpbmcoYm9vbCB1c2VySXNJbnRl
cmFjdGluZykgeyBtX3VzZXJJc0ludGVyYWN0aW5nID0gdXNlcklzSW50ZXJhY3Rpbmc7IH0KIAog
cHJpdmF0ZToKLSAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycyYmKTsKKyAgICBXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCiAgICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7
CiAKQEAgLTE1ODUsNyArMTU4Nyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZU1vY2tB
Y2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29tbWl0dGluZ0xvYWQoKTsKIAotICAgIHVpbnQ2NF90
IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogCiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBhZ2U+IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViRnJh
bWU+IG1fbWFpbkZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcAppbmRleCBkOTZhN2Q3ZGRhOWYy
NmQxYzY1NmExNWNiODNkMDNjZjIwNGE3YTM4Li5iNzc5OWI0ZmJiOGI1NWNiNjZiNjIyMjdhNmE2
NWYzYWIxMmNhMDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcApAQCAtNDEsNyArNDEsNyBAQCBX
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjpXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0KFdlYlBhZ2UmIHBh
Z2UpCiAKIFN0cmluZyBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjppZGVudGlmaWVyKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkpOworICAg
IHJldHVybiBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsK
IH0KIAogdm9pZCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJv
bnRlbmRDaGFubmVsJiBjaGFubmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9i
amVjdEJhc2UuaAppbmRleCAzMDFiMTM5ZTFkMmMxNmQ4OWEyYWI4OTNjZjg1NTcxMDczZDhmNTFh
Li42YjdlYzViMTZmMmNhNmEwNjI2MTM4ZjFmZjA5N2QwYjUyOTE1Mjg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaApAQCAtMjYsMTMgKzI2LDE1IEBACiAj
aWZuZGVmIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlX2gKICNkZWZpbmUgV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2VfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRl
bnRpZmllci5oPgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiB9CiAKIEBp
bnRlcmZhY2UgV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UgOiBOU09iamVjdCB7CiAg
ICAgV2ViS2l0OjpXZWJQYWdlKiBtX3BhZ2U7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgaWQgbV9wYXJlbnQ7CiAgICAg
Ym9vbCBtX2hhc01haW5GcmFtZVBsdWdpbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5tbQppbmRleCAzZDNmMzU1NTNlNmQ0ZmJlYTU1NjUzNDc4MDg4ODA2
OTEwZjA1MDA5Li42MTY1YTAxZmU2MDgyNDhmZGUzYjk2MGY3ODk0NTEzOTIzNzFkZjhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdEJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgLSAodm9pZClzZXRXZWJQYWdlOihXZWJLaXQ6OldlYlBhZ2UqKXBhZ2UKICAgICAg
ICAgYXV0byogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsKICAgICAgICAgbV9oYXNNYWluRnJh
bWVQbHVnaW4gPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKSA/IGZyYW1lLT5kb2N1bWVudCgp
LT5pc1BsdWdpbkRvY3VtZW50KCkgOiBmYWxzZTsKICAgICB9IGVsc2UgewotICAgICAgICBtX3Bh
Z2VJRCA9IDA7CisgICAgICAgIG1fcGFnZUlEID0geyB9OwogICAgICAgICBtX2hhc01haW5GcmFt
ZVBsdWdpbiA9IGZhbHNlOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcAppbmRleCA1Y2U2OWNjZjgzMzRjOWQ4ZDA4OGMyMTI4ZTRmMzRjNmNmYWVhZGQ4Li42
MTc0YjBhM2JiMGIzNzRhZTk4NGQzYWIxYmQ4YmYyMzczYmQ1N2FmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgV2ViUHJvY2Vzczo6
V2ViUHJvY2VzcygpCiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0aWNzKSksIDApOwog
ICAgIH0pOwogCi0gICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RT
dG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2VzcywgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3Bl
bmVyRG9tYWluKSB7CisgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgb3BlbmVyRG9tYWluKSB7CiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihzZXNzaW9uSUQsIGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsK
ICAgICB9KTsKICNlbmRpZgpAQCAtNjY3LDE2ICs2NjcsMTYgQEAgV2ViUGFnZSogV2ViUHJvY2Vz
czo6Zm9jdXNlZFdlYlBhZ2UoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogICAgIAotV2ViUGFn
ZSogV2ViUHJvY2Vzczo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CitXZWJQYWdlKiBX
ZWJQcm9jZXNzOjp3ZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9wYWdlTWFwLmdldChwYWdlSUQpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmNyZWF0
ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFy
YW1ldGVycykKK3ZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIC8v
IEl0IGlzIG5lY2Vzc2FyeSB0byBjaGVjayBmb3IgcGFnZSBleGlzdGVuY2UgaGVyZSBzaW5jZSBk
dXJpbmcgYSB3aW5kb3cub3BlbigpIChvciB0YXJnZXRlZAogICAgIC8vIGxpbmspIHRoZSBXZWJQ
YWdlIGdldHMgY3JlYXRlZCBib3RoIGluIHRoZSBzeW5jaHJvbm91cyBoYW5kbGVyIGFuZCB0aHJv
dWdoIHRoZSBub3JtYWwgd2F5LiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFn
ZT4+OjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOwogICAgIGF1
dG8gb2xkUGFnZUlEID0gcGFyYW1ldGVycy5vbGRQYWdlSUQgPyBwYXJhbWV0ZXJzLm9sZFBhZ2VJ
RC52YWx1ZSgpIDogcGFnZUlEOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAg
ICBBU1NFUlQoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHZv
aWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJiBwYXJhCiAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUp
OwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2Uo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAg
QVNTRVJUKG1fcGFnZU1hcC5jb250YWlucyhwYWdlSUQpKTsKIApAQCAtMTQ1MCw3ICsxNDUwLDcg
QEAgdm9pZCBXZWJQcm9jZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0
ZVJlYXNvbikKIAogI2VuZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVE
aWRDaGFuZ2UodWludDY0X3QsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFn
PiBjaGFuZ2VkKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShQ
YWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNo
YW5nZWQpCiB7CiAgICAgaWYgKGNoYW5nZWQgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUpCiAgICAgICAgIHVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVh
c29uOjpWaXNpYmlsaXR5SGFzQ2hhbmdlZCk7CkBAIC0xNjI0LDEzICsxNjI0LDEzIEBAIHZvaWQg
V2ViUHJvY2Vzczo6c2VuZFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBVUkwmIHVybCkKICAgICBw
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24ocmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6
OlByb2Nlc3NXYXJtaW5nOjpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkpLCAwKTsKIH0KIAot
dm9pZCBXZWJQcm9jZXNzOjpwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKQordm9p
ZCBXZWJQcm9jZXNzOjpwYWdlRGlkRW50ZXJXaW5kb3coUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIG1fcGFnZXNJbldpbmRvd3MuYWRkKHBhZ2VJRCk7CiAgICAgbV9ub25WaXNpYmxlUHJv
Y2Vzc0NsZWFudXBUaW1lci5zdG9wKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZVdpbGxM
ZWF2ZVdpbmRvdyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVh
dmVXaW5kb3coUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fcGFnZXNJbldpbmRvd3Mu
cmVtb3ZlKHBhZ2VJRCk7CiAKQEAgLTE2NzMsNyArMTY3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
ZW5hYmxlUHJpdmF0ZUJyb3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZSkKICAgICBpZiAoZW5h
YmxlKQogICAgICAgICBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3Jr
UHJvY2VzcygpOwogCi0gICAgVmVjdG9yPHVpbnQ2NF90PiBwYWdlSURzOworICAgIFZlY3RvcjxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEczsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXAp
IHsKICAgICAgICAgaWYgKHBhZ2UudmFsdWUpCiAgICAgICAgICAgICBwYWdlSURzLmFwcGVuZChw
YWdlLmtleSk7CkBAIC0xODUzLDcgKzE4NTMsNyBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9j
ZXNzOjpsaWJXZWJSVENOZXR3b3JrKCkKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LXZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklE
KQordm9pZCBXZWJQcm9jZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0
d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxT
ZXNzaW9uSUQpCiB7CiAgICAgLy8gV2UgYXJlIGluIHRoZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0
IHByb2Nlc3MgYW5kIHRoZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRv
IHRoZSBOZXR3b3JrIFByb2Nlc3MKICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbi4gU1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5k
ZXJseWluZyBJUEM6OkNvbm5lY3Rpb24gYXMgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAppbmRleCA1MjVkZjE4M2YyMjYxNWU0ZDhlODk5ZjRlODllZjQ4NWE3YmE3ODFjLi4x
ODU3Y2VhMGVkOWQ5ZmE4YzIxMDY5NmYwOTg3Njc4YmJhNDI5ZmRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21h
aW4uaD4KICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0
aWVzLmg+CkBAIC0xNDUsOSArMTQ2LDkgQEAgcHVibGljOgogCiAgICAgV2ViQ29ubmVjdGlvblRv
VUlQcm9jZXNzKiB3ZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3dl
YkNvbm5lY3Rpb24uZ2V0KCk7IH0KIAotICAgIFdlYlBhZ2UqIHdlYlBhZ2UodWludDY0X3QgcGFn
ZUlEKSBjb25zdDsKLSAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwotICAgIHZvaWQgcmVtb3ZlV2ViUGFnZShQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgdm9pZCBy
ZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgV2ViUGFnZSogZm9jdXNlZFdlYlBhZ2UoKSBjb25zdDsKIAogICAgIEluamVjdGVkQnVuZGxl
KiBpbmplY3RlZEJ1bmRsZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7
IH0KQEAgLTE5OSw4ICsyMDAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuc3VyZUxlZ2FjeVBy
aXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAKLSAgICB2b2lkIHBhZ2VE
aWRFbnRlcldpbmRvdyh1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdp
bmRvdyh1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3coV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBU
aW1lckZpcmVkKCk7CiAKQEAgLTIxOSw3ICsyMjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVw
ZGF0ZUFjdGl2ZVBhZ2VzKCk7CiAgICAgdm9pZCBnZXRBY3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZv
aWQgcGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0X3QgcGFnZUlELCBPcHRpb25TZXQ8
V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCk7CisgICAgdm9pZCBwYWdlQWN0
aXZpdHlTdGF0ZURpZENoYW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdl
YkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpOwogCiAgICAgdm9pZCBzZXRIaWRk
ZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nSW5jcmVhc2VMaW1pdChpbnQgbWlsbGlzZWNvbmRzKTsK
IApAQCAtMzU5LDcgKzM2MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKLSAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VH
cm91cElELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYsIFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVu
dHMoKTsKICNlbmRpZgogCkBAIC00NjAsNyArNDYxLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0
cjxXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAotICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOworICAgIEhhc2hNYXA8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOwogICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4+IG1fcGFnZUdyb3VwTWFw
OwogICAgIFJlZlB0cjxJbmplY3RlZEJ1bmRsZT4gbV9pbmplY3RlZEJ1bmRsZTsKIApAQCAtNTE0
LDcgKzUxNSw3IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fcHJvY2Vzc0lzU3VzcGVuZGVkIHsg
ZmFsc2UgfTsKIAotICAgIEhhc2hTZXQ8dWludDY0X3Q+IG1fcGFnZXNJbldpbmRvd3M7CisgICAg
SGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbV9wYWdlc0luV2luZG93czsKICAgICBX
ZWJDb3JlOjpUaW1lciBtX25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyOwogCiAgICAgUmVm
UHRyPFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiBtX2FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBiMzliMzhjMTgzYzY2MzI3ZDQyZTZlZGZmMTc2YmJhMWM5Y2FiYjEyLi41N2Ey
NjU2MzQ1ZmJlOWQzMzBkZjY1NWUzNTJjMzliZWE1MmI0NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBt
ZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRXZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyhzdHJ1Y3QgV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1l
dGVycyBwYXJhbWV0ZXJzKQogCiAgICAgIyBDcmVhdGUgYSBuZXcgcGFnZS4KLSAgICBDcmVhdGVX
ZWJQYWdlKHVpbnQ2NF90IG5ld1BhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBwYWdlQ3JlYXRpb25QYXJhbWV0ZXJzKQorICAgIENyZWF0ZVdlYlBhZ2UoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIgbmV3UGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzIHBhZ2VDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICBQcmV3YXJtR2xv
YmFsbHkoKTsKICAgICBQcmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJDb3Jl
OjpQcmV3YXJtSW5mb3JtYXRpb24gcHJld2FybUluZm9ybWF0aW9uKQpAQCAtMTExLDcgKzExMSw3
IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdl
SUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFBBTDo6U2Vzc2lv
bklEIGluaXRpYWxTZXNzaW9uSUQpCisgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUs
IFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiAgICAgUmVnaXN0ZXJTZXJ2aWNlV29y
a2VyQ2xpZW50cygpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDBiZDkwYWY5MTg3ODY0NDEw
NDUzZWExYmFmMWVjZjYwMjMzY2IwOTYuLjBlOTQyOTYwNDllNmMwODdhYjZlOGYwYzVlYmZlNGMx
YTJlMmMwNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VBcmVhTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIFN0b3JhZ2VB
cmVhTWFwOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFn
ZUFyZWFJRCwgYwogCiAgICAgLy8gTmFtZXNwYWNlIElEcyBmb3Igc2Vzc2lvbiBzdG9yYWdlIG5h
bWVzcGFjZXMgYXJlIGVxdWl2YWxlbnQgdG8gd2ViIHBhZ2UgSURzCiAgICAgLy8gc28gd2UgY2Fu
IGdldCB0aGUgcmlnaHQgcGFnZSBoZXJlLgotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBXZWJQ
YWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0
SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KG1fc3RvcmFnZU5hbWVzcGFjZUlEKSk7CiAg
ICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNw
cAppbmRleCBiMzkwODFlNmUzYzFiYmFiOTJkYTIxZjJjYTllOGExOWRiNGZiZjE1Li44MDk2MjM0
MjQ0ZmI4ZWUzNTcxZDIwNzg5NDIyYjgyOWRjYzk0YjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwu
Y3BwCkBAIC00MCwxMiArNDAsMTIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLVJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFj
ZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIs
IHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK1JlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gU3RvcmFn
ZU5hbWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlm
aWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChTdG9yYWdlVHlwZTo6U2Vzc2lvbiwgaWRl
bnRpZmllciwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIu
dG9VSW50NjQoKSwgbnVsbHB0ciwgcXVvdGFJbkJ5dGVzKSk7CiB9CiAKLVJlZjxTdG9yYWdlTmFt
ZXNwYWNlSW1wbD4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMp
CitSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVF
cGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoUGFnZUlkZW50aWZpZXIgaWRlbnRpZmllciwg
dW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewogICAgIHJldHVybiBjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZShpZGVudGlmaWVyLCBxdW90YUluQnl0ZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBs
LmgKaW5kZXggNjc1N2UzYjgxODg4NmM0ZmY1N2JjM2U3OWY0YzE1ODAwZjc1YjFiYy4uMmU0YTQy
MjYwZTA2NDg4ZWVmYzg4Zjc1OTZkMTJiNDQwM2U3M2Y5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5o
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2guaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1N0b3JhZ2VBcmVhLmg+CkBAIC0zOSw4ICs0MCw4IEBAIGNsYXNzIFdlYlBhZ2U7CiAKIGNs
YXNzIFN0b3JhZ2VOYW1lc3BhY2VJbXBsIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VOYW1lc3Bh
Y2UgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1
b3RhSW5CeXRlcyk7Ci0gICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4gY3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IGlkZW50aWZpZXIsIHVuc2ln
bmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1wbD4g
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVu
c2lnbmVkIHF1b3RhSW5CeXRlcyk7CisgICAgc3RhdGljIFJlZjxTdG9yYWdlTmFtZXNwYWNlSW1w
bD4gY3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5h
bWVzcGFjZUltcGw+IGNyZWF0ZUxvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlm
aWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwogICAgIHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVz
cGFjZUltcGw+IGNyZWF0ZVRyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBp
ZGVudGlmaWVyLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgdG9wTGV2ZWxPcmlnaW4sIHVpbnQ2
NF90IHF1b3RhSW5CeXRlcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KaW5kZXggZmM2NTk4NjMyNTJiZmU0
ZmE4YzFlMTI5YjlhZThlODMwZmFmNzg4YS4uNzY1ZWZmNDA0YjA5ZWQwMGNjZTFkZDllYTdiNTYw
NTYyOWNiNWQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0KQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXIoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbQogICAgIGFkZENsaWVudEZvckNvbnRleHQobV9jb250cm9sc01hbmFn
ZXJDb250ZXh0SWQpOwogCiAgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5n
ZSgpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1fY29udHJvbHNNYW5hZ2Vy
Q29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNldFVwUGxheWJhY2tDb250cm9sc01hbmFn
ZXJXaXRoSUQobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKQEAgLTI5MSw3
ICsyOTEsNyBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNsZWFyUGxheWJhY2tDb250
cm9sc01hbmFnZXIoKQogICAgIG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkID0gMDsKIAogICAg
IG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2xlYXJQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcigpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2xlYXJQbGF5YmFja0NvbnRyb2xz
TWFuYWdlcigpKTsKIH0KIAogdWludDY0X3QgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y29udGV4
dElkRm9yTWVkaWFFbGVtZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVu
dCkKQEAgLTMxOCwyNyArMzE4LDI3IEBAIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRQbGF5YmFja0NvbnRyb2xzRWxlbWVuCiAKIHZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZHVyYXRpb25DaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgZG91YmxlIGR1cmF0aW9uKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpEdXJhdGlvbkNoYW5nZWQoY29udGV4dElkLCBkdXJhdGlv
biksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpEdXJhdGlvbkNoYW5nZWQoY29udGV4dElkLCBkdXJhdGlv
bikpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmN1cnJlbnRUaW1lQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRp
bWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OkN1cnJlbnRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGN1cnJlbnRUaW1lLCBhbmNob3JU
aW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkN1cnJlbnRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGN1
cnJlbnRUaW1lLCBhbmNob3JUaW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6YnVmZmVyZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBidWZmZXJl
ZFRpbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkJ1ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6QnVmZmVyZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGJ1ZmZlcmVk
VGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnBsYXliYWNrU3RhcnRl
ZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIHBsYXliYWNrU3RhcnRlZFRp
bWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OlBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgcGxheWJhY2tTdGFy
dGVkVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChj
b250ZXh0SWQsIHBsYXliYWNrU3RhcnRlZFRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpyYXRlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgaXNQbGF5aW5n
LCBmbG9hdCBwbGF5YmFja1JhdGUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5aW5n
LCBwbGF5YmFja1JhdGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UmF0ZUNoYW5nZWQoY29udGV4dElk
LCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdl
YkNvcmU6OlRpbWVSYW5nZXMmIHRpbWVSYW5nZXMsIGRvdWJsZSBsYXN0TW9kaWZpZWRUaW1lLCBk
b3VibGUgbGl2ZVVwZGF0ZUludGVydmFsKQpAQCAtMzQ5LDM3ICszNDksMzcgQEAgdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBjb25zdCBXZWIKICAgICAgICAgZG91YmxlIGVuZCA9IHRpbWVSYW5nZXMucmFuZ2VzKCku
ZW5kKGkpLnRvRG91YmxlKCk7CiAgICAgICAgIHJhbmdlc1ZlY3Rvci5hcHBlbmQoeyBzdGFydCwg
ZW5kIH0pOwogICAgIH0KLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6U2Vla2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKGNvbnRleHRJZCwgV1RG
TW92ZShyYW5nZXNWZWN0b3IpLCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWwp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6U2Vla2FibGVSYW5nZXNWZWN0b3JDaGFuZ2VkKGNvbnRleHRJ
ZCwgV1RGTW92ZShyYW5nZXNWZWN0b3IpLCBsYXN0TW9kaWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50
ZXJ2YWwpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjYW5QbGF5RmFzdFJl
dmVyc2VDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSkKIHsKLSAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2FuUGxheUZh
c3RSZXZlcnNlQ2hhbmdlZChjb250ZXh0SWQsIHZhbHVlKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNh
blBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY29udGV4dElkLCB2YWx1ZSkpOwogfQogCiB2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0
aW9ucywgc2VsZWN0ZWRJbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OmxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwg
Y29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2Vs
ZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4
dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJ
bmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmV4dGVybmFsUGxheWJh
Y2tDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBlbmFibGVkLCBQbGF5YmFja1Nlc3Np
b25Nb2RlbDo6RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdGFyZ2V0VHlwZSwgU3RyaW5nIGxv
Y2FsaXplZERldmljZU5hbWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OkV4dGVybmFsUGxheWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZChj
b250ZXh0SWQsIGVuYWJsZWQsIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0YXJnZXRUeXBlKSwgbG9j
YWxpemVkRGV2aWNlTmFtZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJv
cGVydGllc0NoYW5nZWQoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
dGFyZ2V0VHlwZSksIGxvY2FsaXplZERldmljZU5hbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNv
bnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbklu
ZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
QXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVjdGVkSW5kZXgp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rp
b25JbmRleENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3Rl
ZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hh
bmdlZChjb250ZXh0SWQsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjp3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBib29sIGRpc2FibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQppbmRleCA1ZDYxMTBiNzkw
OWYzNGNjZTNlNzYyYmZkMzhkMmIyZjcyMWQ1MjE2Li43MDY2Mzk3NzM3OWI1YjFiZjU5N2M1ZDhk
ZWIyYWQ0NmMzZjZiNWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZW50ZXJWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0Vs
ZW1lbnQoSFRNTFZpZGVvRWxlbWVuCiAgICAgICAgIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29u
dGV4dCgpLT5zZXRSb290TGF5ZXIodmlkZW9MYXllcik7CiAgICAgfQogCi0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldHVwRnVsbHNjcmVl
bldpdGhJRChjb250ZXh0SWQsIGludGVyZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5jb250
ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCksIGludGVyZmFj
ZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSwgc3RhbmRieSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4dElkLCBpbnRlcmZh
Y2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZpZGVvUmVjdCwgbV9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCksIGFsbG93
c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxW
aWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCkKQEAgLTMwOCw3ICszMDgsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2Vi
Q29yZTo6SFRNTFZpZAogICAgICAgICByZXR1cm47CiAKICAgICBpbnRlcmZhY2Uuc2V0SXNBbmlt
YXRpbmcodHJ1ZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCwgaW5saW5lVmlkZW9GcmFtZSh2
aWRlb0VsZW1lbnQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuKGNvbnRleHRJ
ZCwgaW5saW5lVmlkZW9GcmFtZSh2aWRlb0VsZW1lbnQpKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24o
V2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50LCBXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgdGFyZ2V0TW9kZSkKQEAgLTMyNCw3
ICszMjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3Jl
ZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OgogCiAgICAgaW50ZXJmYWNlLnNldFRh
cmdldElzRnVsbHNjcmVlbihmYWxzZSk7CiAKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9u
VG9Nb2RlKGNvbnRleHRJZCwgdGFyZ2V0TW9kZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVs
bHNjcmVlbldpdGhvdXRBbmltYXRpb25Ub01vZGUoY29udGV4dElkLCB0YXJnZXRNb2RlKSk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTSh2aWRlb0VsZW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTSh0
YXJnZXRNb2RlKTsKQEAgLTMzNiwxMyArMzM2LDEzIEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6Omhhc1ZpZGVvQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgaGFzVmlkZW8pCiB7CiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1Zp
ZGVvKGNvbnRleHRJZCwgaGFzVmlkZW8pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1Zp
ZGVvKGNvbnRleHRJZCwgaGFzVmlkZW8pKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjp2aWRlb0RpbWVuc2lvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgRmxv
YXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCiB7CiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZpZGVv
RGltZW5zaW9ucyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucyksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6U2V0VmlkZW9EaW1lbnNpb25zKGNvbnRleHRJZCwgdmlkZW9EaW1lbnNpb25zKSk7CiB9
CiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eToKQEAgLTM2NCw3ICszNjQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVl
c3RVcGRhdGVJbmxpbmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCkKIAogICAgIGF1dG8mIG1vZGVs
ID0gZW5zdXJlTW9kZWwoY29udGV4dElkKTsKICAgICBJbnRSZWN0IGlubGluZVJlY3QgPSBpbmxp
bmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldElubGluZVJlY3QoY29udGV4
dElkLCBpbmxpbmVSZWN0LCBpbmxpbmVSZWN0ICE9IEludFJlY3QoMCwgMCwgMCwgMCkpLCBtX3Bh
Z2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6U2V0SW5saW5lUmVjdChjb250ZXh0SWQsIGlubGluZVJlY3QsIGlubGlu
ZVJlY3QgIT0gSW50UmVjdCgwLCAwLCAwLCAwKSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCkBA
IC0zNzgsNyArMzc4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0Vmlk
ZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogICAgIG1vZGVsLT5zZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhp
cyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAgICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAgICAgICBpZiAocHJvdGVjdGVk
VGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0
SWQsIHRydWUpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCB0cnVlKSk7CiAgICAgICAgIH0pOwog
ICAgIH0pOwogfQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6cmV0dXJuVmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQogICAgICAgICAg
ICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCwgW3Byb3RlY3RlZFRoaXMgPSBX
VEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7
CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCBmYWxzZSksIHBy
b3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgICAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhh
c1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgZmFsc2UpKTsKICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTQxMyw3ICs0MTMsNyBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250
ZXh0SWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQot
ICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgfSk7
CiAjZWxzZQogICAgIENBTGF5ZXIqIHZpZGVvTGF5ZXIgPSBpbnRlcmZhY2UtPmxheWVySG9zdGlu
Z0NvbnRleHQoKS0+cm9vdExheWVyKCk7CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQog
ICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcih2aWRlb0xheWVyLCBbcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSB7CiAgICAg
ICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxz
Y3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
ICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICAgICAgfSk7CiAgICAgfSk7
CiAjZW5kaWYKQEAgLTQ0Miw3ICs0NDIsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OndpbGxFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRy
KHRoaXMpLCB2aWRlb0VsZW1lbnQgPSBXVEZNb3ZlKHZpZGVvRWxlbWVudCksIGNvbnRleHRJZF0g
ewogICAgICAgICB2aWRlb0VsZW1lbnQtPndpbGxFeGl0RnVsbHNjcmVlbigpOwogICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVk
VG9FeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oY29u
dGV4dElkKSk7CiAgICAgfSk7CiB9CiAKQEAgLTQ4Niw3ICs0ODYsNyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElk
LCBpbnRlcmZhY2VdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVs
bHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsKICNlbHNlCiAgICAgbW9kZWwtPndhaXRGb3JQ
cmVwYXJlZEZvcklubGluZVRoZW4oW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBj
b250ZXh0SWQsIGludGVyZmFjZSwgbW9kZWxdICgpIG11dGFibGUgewpAQCAtNDk4LDcgKzQ5OCw3
IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0
X3QgY29udGV4dElkKQogICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlLT5zZXRMYXll
ckhvc3RpbmdDb250ZXh0KG51bGxwdHIpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVk
VGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC01NTUsNyArNTU1LDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3Qg
Y29udGV4dElkLCBib28KIAogICAgIGlmICghaXNQYWdlVmlzaWJsZSkKICAgICAgICAgbW9kZWwu
dmlkZW9FbGVtZW50KCktPnNjcm9sbEludG9WaWV3SWZOb3RWaXNpYmxlKGZhbHNlKTsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFy
ZWRUb1JldHVyblRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5saW5lVmlkZW9GcmFtZSgqbW9k
ZWwudmlkZW9FbGVtZW50KCkpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9SZXR1cm5U
b0lubGluZShjb250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxl
bWVudCgpKSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RSb3V0
ZVNoYXJpbmdQb2xpY3lBbmRDb250ZXh0VUlEKHVpbnQ2NF90IGNvbnRleHRJZCwgTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RSb3V0ZVNoYXJpbmdQb2xpY3lBbmRDb250
ZXh0VUlEOjpBc3luY1JlcGx5JiYgcmVwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQppbmRleCAyZTE5MGIwMzVmNzI4MGIxZmJlZGIz
YWYwMDFlNjk1OGM0MjAyMTE2Li5iOWNlNzlkMjc0YzQxMjdiYTc4ZjU0YTUyZjYzN2U5NWU4NTFm
NmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0KQEAgLTUzOSw3ICs1MzksNyBAQCBzdGF0aWMgTlNVUkwgKm9yaWdpbihXZWJQYWdl
JiBwYWdlKQogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi1zdGF0aWMgUmV0YWluUHRyPE5T
QXJyYXk8TlNTdHJpbmcgKj4+IGFjdGl2ZVBhZ2VzT3JpZ2lucyhjb25zdCBIYXNoTWFwPHVpbnQ2
NF90LCBSZWZQdHI8V2ViUGFnZT4+JiBwYWdlTWFwKQorc3RhdGljIFJldGFpblB0cjxOU0FycmF5
PE5TU3RyaW5nICo+PiBhY3RpdmVQYWdlc09yaWdpbnMoY29uc3QgSGFzaE1hcDxQYWdlSWRlbnRp
ZmllciwgUmVmUHRyPFdlYlBhZ2U+PiYgcGFnZU1hcCkKIHsKICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk8TlNTdHJpbmcgKj4+IGFjdGl2ZU9yaWdpbnMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4
IDk4NzJjMzFiYTU4NGQ3MWRhMTU5MTFiNDU4ZjUxMTFkMWE3OTFjMWYuLjc5NjAyNGM4Y2U0OWE1
YWNmYThiMWZiNjU4NGZhYjgzMDU5NGNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZQogICAgIFJlc291
cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGZyYW1lTG9hZGVyLm5ldHdvcmtp
bmdDb250ZXh0KCksIHJlcXVlc3QsIG9wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25z
OjpDcmVkZW50aWFsczo6T21pdCA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwYWdlTG9hZENvbXBsZXRlZCh1aW50
NjRfdCAvKndlYlBhZ2VJRCovKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VM
b2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaAppbmRleCA1NWIzNjk3NTMwNjU4MjE0YmM5NzlhODc5MmI2NjA3MjZkODI5NmRkLi41ZjYy
Zjc3N2FhNzliMDA3NTU3M2U1YWZjY2M1NmQyZTYzNTUyZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkUmVzb3Vy
Y2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4m
Jik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXZWJDb3Jl
OjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYpIGZp
bmFsOwotICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSBmaW5h
bDsKKyAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBm
aW5hbDsKIAogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7
CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9v
bCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxMzg1NTgzYWYyOWQxNzQ0
MTNkNTA1Nzk1YWZhOTViNWM4ODk2NmJiLi5iMTQwM2QwNTYzOTNiMzk3ZDAxN2QwOTNkZTVmZTA0
Y2RjY2E4Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCkgZmluYWw7CiAgICAgYm9v
bCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWw7IC8vIG1haW5seSBmb3IgYXNzZXJ0aW9ucwogCi0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IDdmODY5ZjFkZGNiOWExOTA4MGFhYjIwMDVmOWJmNzMyYWU4N2RkZGYuLjdlYmEzYTk4YWEz
ZGE5MDY2ZGZiN2M1YjkyMmQxMDkxMGIxNDIxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCkBAIC0yMDksNyArMjA5LDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50KFdlYkZyYW1lICp3ZWJGcmFtZSkKIHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370621</attachid>
            <date>2019-05-24 19:51:16 -0700</date>
            <delta_ts>2019-05-27 10:29:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198206-20190524195115.patch</filename>
            <type>text/plain</type>
            <size>510696</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyNjVhYmRkMGVkYTI2ZTdmMWEyZDlk
NGZjNGVmMTJhYjVhM2M5OTguLjlmZGY2NjZiN2ZkMWY2NTkzZDI4M2E2NmFhMjg3YzQ0NDdkY2Uz
OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZv
ciBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvT2JqZWN0SWRlbnRpZmllci5oOgorICAgICAgICAoV1RGOjpvcGVyYXRvcjw8KToKKwog
MjAxOS0wNS0yMyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAg
ICAgIFtDTWFrZV0gVXNlIHRhcmdldCBvcmllbnRlZCBkZXNpZ24gZm9yIGJtYWxsb2MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAxNWFiZmZhZjY1ZDkwM2MxOWNmNDk0OWE2Nzg1NDg0NDRkOGJmNDk0Li5jZTE2ZjA0
MmFjZDMxYjgyZmVmOWYzYjI3OTEzYzI1ZDIxYzA4MDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTIgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAg
ICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZvciBwYWdlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk4MjA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLyo6CisKIDIw
MTktMDUtMjMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE92ZXJsYXk6IHJ1bGVycyBzaG91bGQgc3dpdGNoIHNpZGVzIGlmIHRoZXkg
aW50ZXJzZWN0IHRoZSBoaWdobGlnaHRlZCBub2RlKHMpIHNvIHRoZXkgZG9uJ3Qgb2JzdHJ1Y3Qg
YW55IGNvbnRlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzZjZjI0MDAwYWQ3NjMwZWM4ZWRkMjdkNGRlZDY5Y2Vh
NzVmYzM0ZS4uM2U2YjcwNWE4ZDI5MDMzMmE1ZWM1NTRjZjE1NzBjY2QxNzk0OTUwOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxMiBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBh
Z2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgy
MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YktpdC8qOgorCiAyMDE5LTA1LTIzICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255
LmNvbT4KIAogICAgICAgICBTb2NrZXQtYmFzZWQgUldJIHNob3VsZCBiZSBhYmxlIHRvIGluc3Bl
Y3QgYSBKU0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMWRkNTRlYWZhMzdmZDZiZDYx
NzY3OTI4N2EzODViYmE0MDk0NjU4NS4uOGFjYzQ2NjMyNDRkMjk0NjA4MDk0N2ZhZWU2NDQyYTE0
ZWZjYjg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0y
NCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9u
Z2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHA6CisgICAgICAgIChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VMb2Fk
Q29tcGxldGVkKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaDoKKwogMjAxOS0wNS0xNyAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnku
Y29tPgogCiAgICAgICAgIFtDTWFrZV0gVXNlIGJ1aWx0aW4gRmluZElDVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCmluZGV4IGY5NzAwZjMxZmNkZjg3YTFiMTJmMDFjMWUyYTc0ZjUwNjc4NzFm
YWIuLjU2ZWU4YzNhYTkwNjczZmMwNzk2YTNkYTRjZDMyYzhmMTE0Nzc1NzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlk
ZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEIGNvbnN0KToKKwogMjAxOS0wNS0yMSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBJT1NN
QUMgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaCBi
L1NvdXJjZS9XVEYvd3RmL09iamVjdElkZW50aWZpZXIuaAppbmRleCA0MDg5N2I1OWQwN2EzYzA1
NTBhZTIzMjNjMWMxOWJiMjk1MzM5ZmQ4Li5iM2JjYWRkOWRkMTk1YWIzMGIxOGNmMWRhZDMzNTIz
MTE5MjUyNmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmgK
KysrIGIvU291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0hhc2hUcmFpdHMuaD4KICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0U3RyZWFtLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
MTIyLDYgKzEyMywxMyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhhc2g8
T2JqZWN0SWRlbnRpZmllcjxUPj4gewogICAgIHR5cGVkZWYgT2JqZWN0SWRlbnRpZmllckhhc2g8
VD4gSGFzaDsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBPYmplY3RJZGVudGlmaWVyPFQ+JiBpZGVudGlmaWVy
KQoreworICAgIHRzIDw8IGlkZW50aWZpZXIudG9VSW50NjQoKTsKKyAgICByZXR1cm4gdHM7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6Ok9iamVjdElkZW50aWZpZXI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQppbmRleCBjMmM3YzIyNDllM2YxZWMwNzE2NGE5MzA5ODY1YjU3NTgyMzI4
OTEzLi40NDgyZDVkNDc1MDM5YmEwNmQ4OGJhOWUxNzNiMmMzZGY5NzM4ODM5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKQEAgLTc3OSw2ICs3NzksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGFnZS9QYWdlQ29uZmlndXJhdGlvbi5oCiAgICAgcGFnZS9QYWdlQ29u
c29sZUNsaWVudC5oCiAgICAgcGFnZS9QYWdlR3JvdXAuaAorICAgIHBhZ2UvUGFnZUlkZW50aWZp
ZXIuaAogICAgIHBhZ2UvUGFnZU92ZXJsYXkuaAogICAgIHBhZ2UvUGFnZU92ZXJsYXlDb250cm9s
bGVyLmgKICAgICBwYWdlL1BlcmZvcm1hbmNlTG9nZ2luZy5oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTZhMWY1ZjFkNzE5YjRh
ZjYzZmQ5ZGRhN2UxYWZkNzQ1YTZkZTkwNy4uZWQ2MThmMDdiM2Q0OGMzNjllMDdhMzM1NzNkMzBh
YWRmZGJiMDIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTIxNyw2ICsxMjE3LDcgQEAKIAkJNDY4MkQyMDAxRjc5NzgzMDAw
Qzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjgzNDRFMDFFRERGQUFBMDBCNzc5NUIgLyogRE9NUmVjdExpc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODM0NERF
MUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2QjYzRjZDMUM2RThEMTkwMDJFOTE0QiAvKiBK
U0V2ZW50VGFyZ2V0Q3VzdG9tLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3Rv
bS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTQ2
QjY1MEREMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0
IC8qIFBhZ2VJZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTUyMDdENjMzNDAwQTdEMkREIC8qIEFic3RyYWN0RE9NV2lu
ZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkI5
NTE4QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5NTE5NjIwN0Q2MzNBMDBB
N0QyREQgLyogQWJzdHJhY3RGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDZCOTUxOEYyMDdENjMyQjAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NkI5
NTE5NzIwN0Q2MzQwMDBBN0QyREQgLyogR2xvYmFsV2luZG93SWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOTAyMDdENjMyQzAw
QTdEMkREIC8qIEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzU5OSw2ICs3NjAwLDcgQEAKIAkJNDY4MzQ0
REQxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERPTVJlY3RMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REUx
RURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVJlY3RM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2QjYzRjZCMUM2RThDREYwMDJF
OTE0QiAvKiBKU0V2ZW50VGFyZ2V0Q3VzdG9tLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRXZlbnRUYXJnZXRDdXN0b20uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2Qjk1MThBMjA3RDYzMjgwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdp
bmRvdy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdERPTVdpbmRv
dy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4QzIwN0Q2MzI5MDBBN0Qy
REQgLyogUmVtb3RlRnJhbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUmVtb3RlRnJhbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4
RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2luZG93LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZURPTVdpbmRvdy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMDE5Nyw2ICsyMDE5OSw3IEBACiAJCQkJOTMwMkIwQkUwRDc5Rjgy
QzAwQzdFRTgzIC8qIFBhZ2VHcm91cC5oICovLAogCQkJCTdBNjc0QkQ5MEY5RUJGNEUwMDZDRjA5
OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwICovLAogCQkJCTdBNjc0QkRBMEY5RUJGNEUw
MDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIuaCAqLywKKwkJCQk0NkI2NTBEQjIyOTYy
NjI3MDBGRDhBQTQgLyogUGFnZUlkZW50aWZpZXIuaCAqLywKIAkJCQkyRDVDOUNGQjE5QzdCNTJF
MDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuY3BwICovLAogCQkJCTJENUM5Q0ZDMTlDN0I1MkUwMEIz
QzVDMSAvKiBQYWdlT3ZlcmxheS5oICovLAogCQkJCTJENUM5Q0ZEMTlDN0I1MkUwMEIzQzVDMSAv
KiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwICovLApAQCAtMzA3NTUsNiArMzA3NTgsNyBAQAog
CQkJCTkzMDJCMEJGMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdBNjc0QkRDMEY5RUJGNEUwMDZDRjA5OSAvKiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0M0MUZBQTQ0QkMwMDM3RDFFNiAvKiBQYWdlSGVh
cEFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQgLyog
UGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1Q0IwNTI0MUZCNTFGMzMwMDA4
OUI5NyAvKiBQYWdlTmV0d29ya0FnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwMDE5
QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENUM5
RDAyMTlDN0I1MkUwMEIzQzVDMSAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRy
ZWUvQVhJc29sYXRlZFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29s
YXRlZHRyZWUvQVhJc29sYXRlZFRyZWUuY3BwCmluZGV4IDc2OTEyY2FlYjhhNjQwZWQxMzNhYzRh
YWY0ZmE3ZDVjMjg5N2FmYTIuLjBlN2Q1NDIwNWM4MzU2N2FhNjVlMzYwZDQ3YWMwNTMzYTMxNTBl
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVl
L0FYSXNvbGF0ZWRUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lz
b2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgUmVmPEFYSXNv
bGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlKCkKICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBBWElzb2xhdGVkVHJlZSgpKTsKIH0KIAotUmVmPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xh
dGVkVHJlZTo6aW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQodWludDY0X3QgcGFnZUlELCBBWE9iamVj
dENhY2hlJiBjYWNoZSkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRp
YWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYg
Y2FjaGUpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGF1dG8g
dHJlZSA9IGNhY2hlLT5nZW5lcmF0ZUlzb2xhdGVkQWNjZXNzaWJpbGl0eVRyZWUoKTsKQEAgLTg3
LDcgKzg3LDcgQEAgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZv
cklEKEFYSXNvbGF0ZWRUcmVlSUQgdHJlZUlEKQogICAgIHJldHVybiB0cmVlSURDYWNoZSgpLmdl
dCh0cmVlSUQpOwogfQogCi1SZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVh
dGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkKK1JlZjxBWElzb2xhdGVkVHJlZT4gQVhJ
c29sYXRlZFRyZWU6OmNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIExvY2tIb2xkZXIgbG9ja2VyKHNfY2FjaGVMb2NrKTsKIApAQCAtOTcsNyArOTcsNyBA
QCBSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVlRm9yUGFnZUlE
KHVpbnQ2NF90IHBhZ2VJRCkKICAgICByZXR1cm4gbmV3VHJlZTsKIH0KIAotUmVmUHRyPEFYSXNv
bGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQp
CitSZWZQdHI8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjp0cmVlRm9yUGFnZUlEKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tlcihzX2NhY2hlTG9j
ayk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0
cmVlL0FYSXNvbGF0ZWRUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xh
dGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCmluZGV4IGMwNzVkNWIwMTY3ODEyNjBjNzYwMTliNTBl
MjZmNjA2MDE5ZGUwM2YuLjZlZWMyNjQ1MTk4NGY4ZWJhODg4NGY1OWM1MzM3Y2U1MjZjZDlhNGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FY
SXNvbGF0ZWRUcmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRl
ZHRyZWUvQVhJc29sYXRlZFRyZWUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpCiAKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZU5vZGUu
aCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPgpAQCAtNDMsOSArNDQsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxBWElzb2xh
dGVkVHJlZT4gY3JlYXRlKCk7CiAgICAgdmlydHVhbCB+QVhJc29sYXRlZFRyZWUoKTsKIAotICAg
IHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQodWludDY0X3Qg
cGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRUcmVlPiBp
bml0aWFsaXplUGFnZVRyZWVGb3JJRCh1aW50NjRfdCBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9y
UGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4g
Y3JlYXRlVHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQoUGFnZUlk
ZW50aWZpZXIsIEFYT2JqZWN0Q2FjaGUmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVm
UHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlPiB0cmVlRm9ySUQoQVhJ
c29sYXRlZFRyZWVJRCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8QVhJc29sYXRlZFRy
ZWVOb2RlPiByb290Tm9kZSgpOwpAQCAtNzAsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIEFYSXNv
bGF0ZWRUcmVlKCk7CiAKICAgICBzdGF0aWMgSGFzaE1hcDxBWElzb2xhdGVkVHJlZUlELCBSZWY8
QVhJc29sYXRlZFRyZWU+PiYgdHJlZUlEQ2FjaGUoKTsKLSAgICBzdGF0aWMgSGFzaE1hcDx1aW50
NjRfdCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2FjaGUoKTsKKyAgICBzdGF0aWMg
SGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVQYWdlQ2Fj
aGUoKTsKIAogICAgIC8vIE9ubHkgYWNjZXNzIG9uIEFYIHRocmVhZCByZXF1ZXN0aW5nIGRhdGEu
CiAgICAgSGFzaE1hcDxBWElELCBSZWY8QVhJc29sYXRlZFRyZWVOb2RlPj4gbV9yZWFkZXJUaHJl
YWROb2RlTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTcwYTlmN2ZlNTUxYWI1YjU1
NDY0NmZjMzY3N2QxOWU5MjFlMmVjZS4uZDM1NDE2NzNlYThkZDhlM2I3YzZiZTQ2MmM2MTU4NDVj
NDFmN2U1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC03NzY2LDcgKzc3NjYsNyBAQCBM
b2dnZXImIERvY3VtZW50Ojpsb2dnZXIoKQogICAgIHJldHVybiAqbV9sb2dnZXI7CiB9CiAgICAg
Ci1PcHRpb25hbDx1aW50NjRfdD4gRG9jdW1lbnQ6OnBhZ2VJRCgpIGNvbnN0CitPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gRG9jdW1lbnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApp
bmRleCBjMDc2NTU2NTA2YTVjZjk5ODlkMzhjNDc4YmYzM2NmNzg2ZmFmZjA1Li5hMjQ4MWRmOGEz
NjY5YzIwNDE2NTE2MjhmOTg3YzgyM2Y1NzNjNWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAt
NDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1lZGlhUHJvZHVjZXIuaCIKICNpbmNsdWRlICJNdXRh
dGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiT3JpZW50YXRpb25Ob3RpZmllci5oIgorI2luY2x1
ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1FdmVudC5oIgogI2luY2x1
ZGUgIlJlZmVycmVyUG9saWN5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCkBAIC02MzUsNyArNjM2
LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0
Q2FjaGUoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyQVhPYmplY3RDYWNoZSgpOwogCi0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQoKSBjb25zdDsKICAgICAvLyB0byBnZXQgdmlzdWFsbHkgb3JkZXJlZCBoZWJy
ZXcgYW5kIGFyYWJpYyBwYWdlcyByaWdodAogICAgIHZvaWQgc2V0VmlzdWFsbHlPcmRlcmVkKCk7
CiAgICAgYm9vbCB2aXN1YWxseU9yZGVyZWQoKSBjb25zdCB7IHJldHVybiBtX3Zpc3VhbGx5T3Jk
ZXJlZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAppbmRleCBiMWJlZDhmMDMyZjlj
ZDI3ODE5M2VlZGNmZmM3Y2YxNTMxODk2YjI2Li4zM2UyNzg2MzgzNjU2OTBkMTZkNzJiM2Q3YjVi
ZTBiZTIwODViNmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcApAQCAtNzIsNyAr
NzIsNyBAQCBTdHJpbmcgQ29va2llSmFyOjpjb29raWVzKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgYXV0byBpbmNsdWRlU2VjdXJlQ29va2llcyA9IHNob3Vs
ZEluY2x1ZGVTZWN1cmVDb29raWVzKGRvY3VtZW50LCB1cmwpOwogCiAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3Vt
ZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5w
YWdlSUQoKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94
eSBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5KGNvbnN0IERvYwogdm9p
ZCBDb29raWVKYXI6OnNldENvb2tpZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQ7Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZy
YW1lKCkpIHsKICAgICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFt
ZUlEKCk7CiAgICAgICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQo
KTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBib29sIENvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29u
c3QgRG9jdW1lbnQmKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgU2VjdXJlQ29va2llc0FjY2Vzc2VkPiBDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJp
bmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgaWYg
KGF1dG8qIHNlc3Npb24gPSBtX3N0b3JhZ2VTZXNzaW9uUHJvdmlkZXItPnN0b3JhZ2VTZXNzaW9u
KCkpIHsKICAgICAgICAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gcmVzdWx0ID0gc2Vzc2lvbi0+
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1
cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwpAQCAtMTQ1LDcgKzE0
NSw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gQ29va2llSmFy
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1CiBTdHJpbmcgQ29va2llSmFyOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJs
KSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1l
SUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQg
PSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xNjAsNyArMTYwLDcgQEAg
U3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBVUkwmIHUKIGJvb2wgQ29va2llSmFyOjpnZXRSYXdDb29raWVzKGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBj
b29raWVzKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAg
IGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBw
YWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Q29va2llSmFyLmgKaW5kZXggMGRiMDdjNmQxMmU4ZDliZGFmYzNjMGFiYTZlZTcxYTg5YmMxOTk0
Ny4uMjgxZjg0YzQ5MDA1MjY3ZWEwNTRkNTFkNzY4YTllYjczMmNiYzIzOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Db29raWVKYXIuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2lu
Y2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNTgsNyArNTksNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXMoRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0cmluZyk7CiAKICAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgRG9jdW1lbnQmKSBjb25zdDsKLSAgICB2aXJ0dWFsIHN0ZDo6cGFpcjxTdHJpbmcsIFNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
UEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgdmlydHVhbCBz
dGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgRG9jdW1lbnQmLCBjb25z
dCBVUkwmLCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVD
b29raWUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQu
aAppbmRleCA0ZjBiYjg2ZGRkNTA5OWUzMTFkODlhNDliZTNhM2JlNDA3N2Y1ZTViLi4xZjdhMjlj
NGIzMDFhMzY1ODIyZTQyMzNiNDE1ZGQxYzAwMTkxMzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3Mg
V0VCQ09SRV9FWFBPUlQgRW1wdHlGcmFtZUxvYWRlckNsaWVudCA6IHB1YmxpYyBGcmFtZUxvYWRl
ckNsaWVudCB7CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIG92ZXJyaWRlIHsgfQog
CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBXVEY6Om51bGxvcHQ7IH0KLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9CisgICAgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6bnVsbG9wdDsgfQog
ICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgYm9v
bCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfSAvLyBtYWlubHkgZm9y
IGFzc2VydGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggZWMzOTEyN2ExYWQ2YzI1ZTBkMzQ2YmU3YTQ2OGNiNmVhOThmM2ZjOS4uMDc0ODc2MTE4ZGM2
OTFhYTdjOGFkYTk3Yjc5NzEzNzMzYTI4YTY5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRl
clR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5b3V0TWlsZXN0b25lLmgiCiAjaW5jbHVkZSAiTGlua0lj
b24uaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KQEAg
LTEyNiw3ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgbWFrZVJlcHJlc2Vu
dGF0aW9uKERvY3VtZW50TG9hZGVyKikgPSAwOwogCi0gICAgdmlydHVhbCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlEKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IHBhZ2VJRCgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKCkgY29uc3QgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9h
ZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCmlu
ZGV4IDhhODIzODFmMDE4MTY1ZTY1M2UzYzRiMjU0ZTU2OTdiNjNjMDlmNzAuLjQ1ZmViNjM1Zjcw
YzM1Yzk5YzcxNmQzOTE0MTJhNWZkMmQxZGVkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Mb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Mb2Fk
ZXJTdHJhdGVneS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkZldGNoT3B0aW9ucy5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VMb2FkUHJpb3JpdHkuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlck9wdGlvbnMu
aCIKICNpbmNsdWRlICJTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIgpAQCAtNTcsNyArNTgsNyBA
QCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBMb2FkZXJTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGxvYWRSZXNvdXJjZShGcmFtZSYsIENhY2hlZFJlc291cmNlJiwgUmVzb3VyY2VS
ZXF1ZXN0JiYsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiYmKT4mJikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBDbGllbnRDcmVkZW50aWFsUG9s
aWN5LCBjb25zdCBGZXRjaE9wdGlvbnMmLCBjb25zdCBIVFRQSGVhZGVyTWFwJiwgUmVzb3VyY2VF
cnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyKSA9IDA7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFJlc291cmNlTG9hZGVyKikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFJlc291cmNlTG9hZGVyJiwgYm9vbCkgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCmluZGV4IDc3NDUwMDFlNzhh
Yzk3YmUwMjRiMjNkNDExMGVjNGZkMjkwYjdkM2IuLmYyNmE5YWFmMmZkNzk3NGNkM2U3MWM4NTlh
YjQzZmVlMjBmODAzZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0
aW9uQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlv
bi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogTmF2aWdhdGlvbkFj
dGlvbjo6UmVxdWVzdGVyOjpSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
IDogbV91cmwgeyBVUkwgeyBkb2N1bWVudC51cmwoKSB9IH0KICAgICAsIG1fb3JpZ2luIHsgbWFr
ZVJlZlB0cihkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpKSB9Ci0gICAgLCBtX3BhZ2VJREFuZEZy
YW1lSURQYWlyIHsgZG9jdW1lbnQuZnJhbWUoKSA/IHN0ZDo6bWFrZV9wYWlyKGRvY3VtZW50LmZy
YW1lKCktPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpLnZhbHVlT3IoMCksIGRvY3VtZW50LmZy
YW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKDApKSA6IHN0ZDo6bWFr
ZV9wYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4oMCwgMCkgfQorICAgICwgbV9wYWdlSURBbmRGcmFt
ZUlEUGFpciB7IGRvY3VtZW50LmZyYW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFt
ZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9yKFBhZ2VJZGVudGlmaWVyIHsg
fSksIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9y
KDApKSA6IHN0ZDo6bWFrZV9wYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4oeyB9LCAwKSB9
CiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCmluZGV4IDFh
NDRmOTFkMzY4MWI4MTQwMGU3MTEyN2VhNTI3MmM3NWJlNGJlMDcuLmVkN2QwOWNmMjg5MmJiODRk
ZjJmMjQ5YjA1MTQ3NWQ4ZGM3MzY3OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uQWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRp
b25BY3Rpb24uaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkJhY2tGb3J3YXJkSXRlbUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiTGF5
b3V0UG9pbnQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVXNl
ckdlc3R1cmVJbmRpY2F0b3IuaCIKQEAgLTYzLDE0ICs2NCwxNCBAQCBwdWJsaWM6CiAgICAgTmF2
aWdhdGlvbkFjdGlvbihOYXZpZ2F0aW9uQWN0aW9uJiYpOwogICAgIE5hdmlnYXRpb25BY3Rpb24m
IG9wZXJhdG9yPShOYXZpZ2F0aW9uQWN0aW9uJiYpOwogCi0gICAgdXNpbmcgUGFnZUlEQW5kRnJh
bWVJRFBhaXIgPSBzdGQ6OnBhaXI8dWludDY0X3QgLyogcGFnZUlEICovLCB1aW50NjRfdCAvKiBm
cmFtZUlEICovPjsKKyAgICB1c2luZyBQYWdlSURBbmRGcmFtZUlEUGFpciA9IHN0ZDo6cGFpcjxQ
YWdlSWRlbnRpZmllciwgdWludDY0X3QgLyogZnJhbWVJRCAqLz47CiAgICAgY2xhc3MgUmVxdWVz
dGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFJlcXVlc3Rlcihjb25zdCBEb2N1bWVudCYpOwog
CiAgICAgICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3QgeyByZXR1cm4gbV91cmw7IH0KICAgICAg
ICAgY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
Km1fb3JpZ2luOyB9Ci0gICAgICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KKyAgICAgICAgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlEUGFpci5maXJzdDsgfQogICAg
ICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSURBbmRGcmFtZUlE
UGFpci5zZWNvbmQ7IH0KICAgICBwcml2YXRlOgogICAgICAgICBVUkwgbV91cmw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAppbmRleCAxNGJjMmYz
YmVlZmEyYTYwMzJhMjZjN2Q2YWQyZmNmZDg3YjdjYjJiLi5mZmFkYTFjNDViZTQ2NmI3ZmFkY2Zk
MDY5MTAxMzI1ZWNhMzlkNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVz
b3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRPYnNlcnZlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNl
cnZlcjo6c2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoVmVj
dG8KICAgICBtX25vdGlmaWNhdGlvbkNhbGxiYWNrID0gV1RGTW92ZShub3RpZmljYXRpb25DYWxs
YmFjayk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQordm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6
c2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrKFdURjo6RnVuY3Rpb248
dm9pZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbik+JiYgY2FsbGJhY2spCiB7CiAg
ICAgQVNTRVJUKCFtX3JlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayk7CiAg
ICAgbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjps
b2dVc2VySW50ZXJhY3Rpb25XaXRoUmVkdWNlZFRpbWVSZXNvbHV0aW9uKGNvbnN0IERvYwogfQog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCkK
K3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVu
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9t
YWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIERv
Y3VtZW50JiBvcGVuZXJEb2N1bWVudCkKIHsKICAgICBhdXRvIG9wZW5lclVybCA9IG9wZW5lckRv
Y3VtZW50LnVybCgpOwogICAgIFJlZ2lzdHJhYmxlRG9tYWluIG9wZW5lckRvbWFpbiB7IG9wZW5l
clVybCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApp
bmRleCBjNDY2MWIwNDc2MDczMjBmZDg3ZmJiM2RiYmI4MDNlNGQxMWQ0YTQxLi5kZTFjOTRhNzJj
ZDQ3MWNjZjdmODJiNWEyY2JiOTE3N2RiNTY4MGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJDYW52YXNBY3Rpdml0eVJlY29yZC5oIgorI2luY2x1ZGUgIlBhZ2VJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oIgogI2luY2x1ZGUg
IlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTczLDcgKzc0LDcgQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBzdGF0aXN0aWNzRm9yVVJMKGNvbnN0IFVS
TCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTdGF0aXN0aWNzVXBkYXRlZENhbGxi
YWNrKFdURjo6RnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+
JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
ckNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0TG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9u
Q2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mKT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dXZWJTb2NrZXRMb2Fk
aW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1l
KT4mJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRMb2dTdWJyZXNvdXJjZUxvYWRpbmdO
b3RpZmljYXRpb25DYWxsYmFjayhGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiYm
KTsKQEAgLTk0LDEzICs5NSwxMyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzPiB0YWtlU3RhdGlzdGljcygpOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50
KTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3Ms
IFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgRG9jdW1lbnQmIG9wZW5lckRvY3VtZW50KTsK
ICNlbmRpZgogCiAgICAgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcz4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXA7CiAgICAgSGFzaE1hcDxSZWdpc3RyYWJs
ZURvbWFpbiwgV1RGOjpXYWxsVGltZT4gbV9sYXN0UmVwb3J0ZWRVc2VySW50ZXJhY3Rpb25NYXA7
CiAgICAgRnVuY3Rpb248dm9pZChWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJik+IG1f
bm90aWZpY2F0aW9uQ2FsbGJhY2s7Ci0gICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCB1aW50NjRfdCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CisgICAgRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBQYWdl
SWRlbnRpZmllciwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9yZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25J
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mKT4gbV9sb2dVc2VySW50ZXJhY3Rpb25Ob3RpZmlj
YXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBt
X2xvZ1dlYlNvY2tldExvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKICAgICBGdW5jdGlvbjx2
b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiwgV2FsbFRpbWUpPiBtX2xvZ1N1YnJlc291cmNlTG9hZGluZ05vdGlmaWNh
dGlvbkNhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKaW5kZXggZjM1MzkwYzhj
M2FlMjc5ZjlkMzY5NWZhNmRlMmU3Zjc5NzY5YzdlZi4uNTJiMmU5NGI3ZWVlMWQxYzU1YTg4NGZk
ZDdiMDRlZGNmZDMyMDc5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCkBAIC00ODYs
OCArNDg2LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgUmVmUHRyPEljb24+IGNyZWF0ZUljb25G
b3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgLyogZmlsZW5hbWVzICovKSA9IDA7CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZpcnR1YWwgdm9pZCBoYXNT
dG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdp
c3RyYWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8s
IHVpbnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1
YkZyYW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1
aW50NjRfdCAvKmZyYW1lSUQqLywgdWludDY0X3QgLypwYWdlSUQqLywgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObyk7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYm
IC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZyYW1lRG9tYWlu
Ki8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsgfQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAv
KnRvcEZyYW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCBQYWdlSWRlbnRpZmllciwg
V1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRp
b25IYW5kbGVyKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpObywgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOjpObyk7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oCmluZGV4IDE1
NmM5Y2QyMDVkNGNmMzI0ZDY4MWY5NzYxMzJjMTZjZTJmMTc0ZDQuLjBkN2IzZGJmNzJmODFlNGZk
NjJhNzNmZWQyNTgxY2VhZWUxNjdiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HbG9iYWxG
cmFtZUlkZW50aWZpZXIuaApAQCAtMjUsMTMgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAvLyBGcmFtZSBpZGVudGlmaWVyIHRoYXQgaXMgdW5pcXVl
IGFjcm9zcyBhbGwgV2ViQ29udGVudCBwcm9jZXNzZXMuCiBzdHJ1Y3QgR2xvYmFsRnJhbWVJZGVu
dGlmaWVyIHsKLSAgICB1aW50NjRfdCBwYWdlSUQ7CisgICAgUGFnZUlkZW50aWZpZXIgcGFnZUlE
OwogICAgIHVpbnQ2NF90IGZyYW1lSUQ7CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2
b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC00Nyw3ICs0OCw3IEBAIHZvaWQgR2xvYmFs
RnJhbWVJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHRlbXBsYXRl
PGNsYXNzIERlY29kZXI+CiBPcHRpb25hbDxHbG9iYWxGcmFtZUlkZW50aWZpZXI+IEdsb2JhbEZy
YW1lSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEOwog
ICAgIGRlY29kZXIgPj4gcGFnZUlEOwogICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRp
Zmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjQ0ZDVmOGQyOTc1NjNlZTAyOWM0MTNlOWNkYTc0OTRjNWZhNGQ4YWUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VJZGVudGlmaWVyLmgKQEAgLTAsMCArMSwzNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIFBhZ2VJZGVudGlmaWVyVHlw
ZSB7IH07Cit1c2luZyBQYWdlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50
aWZpZXJUeXBlPjsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9Db29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCmluZGV4IDExNTkw
NTBjZDMyYzkzY2QzYjExY2YxMzIyNTY5ZDY0MWU1MGQ2MzYuLjRlNmI2YWNlMzE4MjljM2ViN2Nh
YWM0NzAyMjMzOGY1MmY5NTFkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5LmgKQEAg
LTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCisj
aW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJTYW1lU2l0ZUluZm8uaCIKICNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL1VSTC5oPgpAQCAtMzgsNyAr
MzksNyBAQCBzdHJ1Y3QgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkgewogICAgIFNhbWVT
aXRlSW5mbyBzYW1lU2l0ZUluZm87CiAgICAgVVJMIHVybDsKICAgICBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMgeyBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm8gfTsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTcxLDgg
KzcyLDExIEBAIE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiBDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRQcm94eTo6ZGVjb2RlKERlCiAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuZnJhbWVJRCkpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucGFn
ZUlEKSkKKyAgICBPcHRpb25hbDxPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4+IHBhZ2VJRDsKKyAg
ICBkZWNvZGVyID4+IHBhZ2VJRDsKKyAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKKyAgICByZXN1bHQucGFnZUlEID0gV1RGTW92ZSgqcGFnZUlEKTsKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5pbmNsdWRlU2VjdXJlQ29va2llcykpCiAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmNw
cAppbmRleCAzYjE4ZTYyZmUzOTg3ZGI1ZmM4NjE5YmZmY2E2MmE0ODZmNDhhODA4Li42M2RmMDU4
OGRjOWZjYzY3YTRlOTEwOTU4ZTNkYTQ5YTg5NGYwZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uY3BwCkBA
IC02NiwxMiArNjYsMTIgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2Nr
VGhpcmRQYXJ0eUNvb2tpZXMoY29uc3QgUmVnaXN0cmFibGVEb21haW4KICAgICByZXR1cm4gbV9y
ZWdpc3RyYWJsZURvbWFpbnNUb0Jsb2NrQ29va2llRm9yLmNvbnRhaW5zKHJlZ2lzdHJhYmxlRG9t
YWluKTsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2ll
cyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKSBjb25zdAogewogICAgIHJldHVybiBzaG91bGRCbG9ja0Nvb2tpZXMocmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLCByZXF1ZXN0LnVybCgpLCBmcmFtZUlELCBwYWdlSUQpOwog
fQogICAgIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNob3VsZEJsb2NrQ29va2llcyhj
b25zdCBVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBVUkwmIHJlc291cmNlLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QK
K2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJM
JiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQpIGNvbnN0CiB7
CiAgICAgUmVnaXN0cmFibGVEb21haW4gZmlyc3RQYXJ0eURvbWFpbiB7IGZpcnN0UGFydHlGb3JD
b29raWVzIH07CiAgICAgaWYgKGZpcnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQpAQCAtMTE1LDcg
KzExNSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVQcmV2YWxlbnREb21h
aW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpCiAgICAgICAgIG1fcmVnaXN0cmFibGVE
b21haW5zVG9CbG9ja0Nvb2tpZUZvci5yZW1vdmUoZG9tYWluKTsKIH0KIAotYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFp
biwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jv
b2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0
UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBw
YWdlSUQpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lSUQpIHsKICAgICAgICAgYXV0byBmcmFtZXNH
cmFudGVkSXRlcmF0b3IgPSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzLmZpbmQocGFnZUlE
KTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3QKICAgICByZXR1cm4gZW50cmll
czsKIH0KICAgICAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3Jh
Z2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIWZyYW1lSUQpIHsKICAg
ICAgICAgaWYgKGZpcnN0UGFydHlEb21haW4uaXNFbXB0eSgpKQpAQCAtMTgyLDcgKzE4Miw3IEBA
IHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpyZW1vdmVTdG9yYWdl
QWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIGF1dG8gaXRlcmF0aW9uID0gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5maW5k
KHBhZ2VJRCk7CiAgICAgaWYgKGl0ZXJhdGlvbiA9PSBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNj
ZXNzLmVuZCgpKQpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpyZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0CiAg
ICAgaXRlcmF0aW9uLT52YWx1ZS5yZW1vdmUoZnJhbWVJRCk7CiB9CiAKLXZvaWQgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjbGVhclBhZ2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzKHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjbGVhclBh
Z2VTcGVjaWZpY0RhdGFGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3MucmVtb3ZlKHBhZ2VJRCk7
CiAgICAgbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5yZW1vdmUocGFnZUlEKTsKQEAgLTIx
NSw3ICsyMTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcygpCiAgICAgbV9jYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyA9IFdURjo6bnVsbG9wdDsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0Rv
bWFpbiwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvbW1p
dHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlmIChzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVz
KGZyb21Eb21haW4pKQogICAgICAgICBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQ
cmV2YWxlbnRSZXNvdXJjZS5hZGQocGFnZUlELCB0b0RvbWFpbik7CkBAIC0yMjcsNyArMjI3LDcg
QEAgdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlu
a0RlY29yYXRpb25Gb3JUZXN0aW5nKCkKICAgICBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRp
b25UZXN0TW9kZSA9IHRydWU7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK09wdGlvbmFsPFNlY29u
ZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCkgY29uc3QKIHsKICAgICBpZiAoIW1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgfHwgIXBh
Z2VJRCB8fCBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJj
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgKaW5kZXggMDMwMjAwZGY5YzQ0ZmQ0YmNmMmY1ODcyZGRkZmRhNTYzMjU5
ODUwYi4uM2YzOWM4YWNkOGIwZDNkMWU4NzUzOGFiODVlN2YyNmZlOWQxNTNlZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRl
bnRpYWxTdG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJS
ZWdpc3RyYWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29va2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYg
bWFpbkRvY3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJM
JiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IGNvbnN0IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2ll
c0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+LCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwyOSArMTM1LDI5IEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3Qg
VmVjdG9yPFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7
CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7
CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25z
dDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdG5hbWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9S
VCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBX
RUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJs
b2NrQ29va2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2ll
cywgY29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hv
dWxkQmxvY2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9yKGNvbnN0IFZlY3RvcjxSZWdpc3Ry
YWJsZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFnZUNhcEZvckNsaWVu
dFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYg
ZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+
IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291cmNl
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmlj
RGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWludDY0X3QgcGFnZUlEKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9t
YWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFn
ZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUGFnZUlkZW50aWZpZXIpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcygpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
U2Vjb25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25k
cz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjb21t
aXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJ
ZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNX
aXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMs
MTQgQEAgcHJpdmF0ZToKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgYm9vbCBzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJikgY29uc3Q7Ci0gICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCkgY29uc3Q7CisgICAgT3B0aW9uYWw8U2Vjb25kcz4gY2xpZW50U2lkZUNvb2tpZUNhcChj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+KSBjb25zdDsKICAgICBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiBtX3JlZ2lzdHJhYmxl
RG9tYWluc1RvQmxvY2tDb29raWVGb3I7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDx1
aW50NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+LCBEZWZhdWx0SGFz
aDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWlu
dDY0X3Q+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwotICAgIEhhc2hNYXA8dWludDY0
X3QsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluPiwgRGVmYXVs
dEhhc2g8dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PHVpbnQ2NF90Pj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOworICAgIEhhc2hNYXA8UGFn
ZUlkZW50aWZpZXIsIEhhc2hNYXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0
SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
dWludDY0X3Q+Pj4gbV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKKyAgICBIYXNoTWFwPFBh
Z2VJZGVudGlmaWVyLCBIYXNoTWFwPFJlZ2lzdHJhYmxlRG9tYWluLCBSZWdpc3RyYWJsZURvbWFp
bj4+IG1fcGFnZXNHcmFudGVkU3RvcmFnZUFjY2VzczsKICAgICBPcHRpb25hbDxTZWNvbmRzPiBt
X2NhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzIHsgfTsKICAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzIHsgfTsKICAgICBPcHRpb25hbDxT
ZWNvbmRzPiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzU2hvcnQgeyB9OwotICAgIEhhc2hN
YXA8dWludDY0X3QsIFJlZ2lzdHJhYmxlRG9tYWluLCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhh
c2gsIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX25hdmln
YXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWdpc3RyYWJsZURvbWFpbj4gbV9uYXZpZ2F0ZWRU
b1dpdGhMaW5rRGVjb3JhdGlvbkJ5UHJldmFsZW50UmVzb3VyY2U7CiAgICAgYm9vbCBtX25hdmln
YXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0TW9kZSA9IGZhbHNlOwogI2VuZGlmCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ0ZOZXRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKaW5kZXggNjdkZjc2NGQyYzRhZTQ1YTk2
ODU5NDRhYzQyMTVjZDU1M2EyYjI1MS4uMzMwYWE2MDg2NjE0MGIyNGQ5YjcwNTIzODNhODFjZWNm
OTBiOTlmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAKQEAgLTE4
OSw3ICsxODksNyBAQCBzdGF0aWMgQ0ZBcnJheVJlZiBjcmVhdGVDb29raWVzKENGRGljdGlvbmFy
eVJlZiBoZWFkZXJGaWVsZHMsIENGVVJMUmVmIHVybCkKICAgICByZXR1cm4gcGFyc2VkQ29va2ll
czsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBj
b25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAg
IFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTIy
NSw3ICsyMjUsNyBAQCBzdGF0aWMgYm9vbCBjb250YWluc1NlY3VyZUNvb2tpZXMoQ0ZBcnJheVJl
ZiBjb29raWVzKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29v
a2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFN
KGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMjQwLDcgKzI0MCw3IEBA
IHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0Zv
ckRPTShjb25zdCBVUkwmIGZpcnN0UGFyCiAgICAgcmV0dXJuIHsgY29va2llU3RyaW5nLCBkaWRB
Y2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmlu
ZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdl
SUQpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIGJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRW5hYmxlZCgpIGNvbnN0CiAgICAgcmV0dXJuIHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4gfHwgcG9saWN5ID09IENG
SFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lFeGNsdXNpdmVseUZyb21NYWluRG9jdW1lbnRE
b21haW4gfHwgcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lBbHdheXM7
CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtT
dG9yYWdlU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
b2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Npb25Db2NvYS5tbQppbmRleCA2Mzc0MDM1MmM0YTYyN2Vk
NmZlZWQ2OWZmZWIwOWQxOTdhODg3NGM3Li41NTdlOTc3YjRkNzJhYzgxOTdlOTllMjk2ZTRjMjEw
MDc2NzNjYzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nv
Y29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KQEAgLTI5
NCw3ICsyOTQsNyBAQCBzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoTlNB
cnJheSAqdW5maWx0ZXJlZENvb2tpZXMsIE9wdGlvbmFsPFNlYwogICAgIHJldHVybiBmaWx0ZXJl
ZENvb2tpZXM7CiB9CiAKLXN0YXRpYyBOU0FycmF5ICpjb29raWVzRm9yVVJMKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKQorc3RhdGljIE5TQXJyYXkg
KmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBpZiAoc2Vzc2lvbi5zaG91bGRCbG9ja0Nvb2tpZXMoZmlyc3RQYXJ0eSwgdXJsLCBmcmFt
ZUlELCBwYWdlSUQpKQpAQCAtMzA3LDcgKzMwNyw3IEBAIHN0YXRpYyBOU0FycmF5ICpjb29raWVz
Rm9yVVJMKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBm
CiB9CiAKIGVudW0gSW5jbHVkZUhUVFBPbmx5T3JOb3QgeyBEb05vdEluY2x1ZGVIVFRQT25seSwg
SW5jbHVkZUhUVFBPbmx5IH07Ci1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gY29va2ll
c0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQT25seSwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpCitzdGF0aWMgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llc0ZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVIVFRQT25seU9yTm90IGluY2x1ZGVIVFRQ
T25seSwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpCiB7CiAgICAg
QVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2UoUHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3
Q29va2llcykpOwogCkBAIC0zNjMsMTIgKzM2MywxMiBAQCBzdGF0aWMgdm9pZCBkZWxldGVBbGxI
VFRQQ29va2llcyhDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCiAgICAgQ0ZI
VFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZSk7CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRP
TShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVz
KSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9u
KCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBE
b05vdEluY2x1ZGVIVFRQT25seSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQogCi1zdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJ
RCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBmaXJzdFBhcnR5LCBzYW1lU2l0ZUlu
Zm8sIHVybCwgZnJhbWVJRCwgcGFnZUlELCBJbmNsdWRlSFRUUE9ubHksIGluY2x1ZGVTZWN1cmVD
b29raWVzKTsKIH0KQEAgLTM3OCw3ICszNzgsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbgog
ICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbigqdGhpcywgaGVhZGVyRmllbGRQcm94eS5maXJz
dFBhcnR5LCBoZWFkZXJGaWVsZFByb3h5LnNhbWVTaXRlSW5mbywgaGVhZGVyRmllbGRQcm94eS51
cmwsIGhlYWRlckZpZWxkUHJveHkuZnJhbWVJRCwgaGVhZGVyRmllbGRQcm94eS5wYWdlSUQsIElu
Y2x1ZGVIVFRQT25seSwgaGVhZGVyRmllbGRQcm94eS5pbmNsdWRlU2VjdXJlQ29va2llcyk7CiB9
CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHIpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGhhc1Byb2Nlc3NQcml2aWxlZ2Uo
UHJvY2Vzc1ByaXZpbGVnZTo6Q2FuQWNjZXNzUmF3Q29va2llcykpOwogCkBAIC00NDMsNyArNDQz
LDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRS
YXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIHJhd0Nvb2tp
ZXMuY2xlYXIoKTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAK
aW5kZXggMmMxMTU2OGZjZTViMjg5MTI2MGRhM2JlOTFmODkxN2MwODUxMjdhOC4uZDYwZDcwYTgz
NjgzMDEzN2VlNjBkYjBlNzY0ZWRiZjUyNTc0ZjQ5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcApAQCAtNTksNyAr
NTksNyBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJldHVybiBjb29raWVzLnRvU3Ry
aW5nKCk7CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29u
c3QKK3ZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgY29uc3QK
IHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7
CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21IVFRQ
UmVzcG9uc2UoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzCiAgICAgY29va2llSmFy
REIuc2V0Q29va2llKGZpcnN0UGFydHksIHVybCwgdmFsdWUsIENvb2tpZUphckRCOjpTb3VyY2U6
Ok5ldHdvcmspOwogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpj
b29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFy
Q3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0o
ZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC04Myw3ICs4Myw3IEBAIHN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uCiAgICAgcmV0dXJuIHsgY29va2llc0ZvclNlc3Npb24oc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBmYWxzZSksIGZhbHNlIH07CiB9CiAKLXN0ZDo6cGFpcjxT
dHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29r
aWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2llSmFyQ3VybDo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BB
UkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwpAQCAtMTEzLDcgKzExMyw3
IEBAIGJvb2wgQ29va2llSmFyQ3VybDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uKSBjb25zdAogICAgIHJldHVybiBzZXNzaW9uLmNvb2tpZURhdGFi
YXNlKCkuaXNFbmFibGVkKCk7CiB9CiAKLWJvb2wgQ29va2llSmFyQ3VybDo6Z2V0UmF3Q29va2ll
cyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKSBjb25zdAorYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5NGM4
NmFmZThmNzQwYWVkZDI4YWQ5NzI3Mjc1MWVlYmEzODQzMjMuLjY4NzJiMGFjOWIwMDE5ZGU1ODNl
YjI2OGM4Yzk0NTc5OWVmOTQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5j
cHAKQEAgLTgwLDcgKzgwLDcgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwogfQog
Ci12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJM
JiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkgY29uc3QKIHsKICAgICBjb29raWVTdG9yYWdlKCkuc2V0Q29va2llc0Zyb21ET00oKnRo
aXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHZhbHVl
KTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tp
ZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNFbmFi
bGVkKCp0aGlzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNs
dWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICByZXR1
cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVT
aXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0K
QEAgLTE1NCw3ICsxNTQsNyBAQCBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmdldENvb2tpZXMoY29uc3QgVVJMJikKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVT
aXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmdldFJhd0Nvb2tpZXMoKnRoaXMs
IGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJhd0Nvb2tp
ZXMpOwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpm
bHVzaENvb2tpZVN0b3JlKCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQgdG8g
dXNlLgogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8s
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFn
ZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNv
b2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9y
YWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDFmNzU4NzdhODJiMzE4Mzk0NzYxMTIzYmU2ZjU4NWE0
NzYxY2Y4OTYuLmY2NjQxZWZlYjQ0YzczNDM0ZTRkMTVhNGE1YWJlZGQ4NTZmMjBlNmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3Nv
dXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29raWVz
LCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBj
b25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlE
KTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBWZWN0b3I8
Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1cmwp
CiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpn
ZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAgICAg
VU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIuZ2V0
KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29s
PiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJB
TShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01MjIsNyArNTIy
LDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Np
b24oKnRoaXMsIHVybCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0
eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDk2NjFiYzQz
N2U5ODU0MmI2YzVjMWQ2NjQ4OTZmNjAyODVhN2ZiM2QuLjU0MzkwMmZmNTM0ZWE1MGE0ZGViMDUx
NjJjMmVlYjM1YmEyZDdkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5k
ZWYgUmVzb3VyY2VSZXF1ZXN0X2gKICNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2luY2x1
ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIgog
I2luY2x1ZGUgIlVSTFNvdXAuaCIKIApAQCAtMzgsNyArMzksNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlh
dGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDYsNyArNDYsNiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UodXJs
LCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAg
ICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3NvdXBG
bGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwgbV9p
bml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01NCw3ICs1Myw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0QmFz
ZSh1cmwsIHBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAg
ICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkK
LSAgICAgICAgICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAg
ICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTYzLDcgKzYxLDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RCYXNl
KFVSTCgpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGlj
eSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBt
X3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAg
ICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03MSw3
ICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZShVUkwoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAg
ICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAg
ICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1
cGRhdGVGcm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CkBAIC04MCw3ICs3
Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZShzb3VwVVJJVG9VUkwoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3QpKSwgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAgICAg
ICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxhZ3Mo
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5pdGlh
dGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9tU291cFJlcXVl
c3Qoc291cFJlcXVlc3QpOwogICAgICAgICB9CkBAIC0xMDAsOCArOTUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3Mgc291cE1lc3NhZ2VGbGFncygpIGNv
bnN0IHsgcmV0dXJuIG1fc291cEZsYWdzOyB9CiAgICAgICAgIHZvaWQgc2V0U291cE1lc3NhZ2VG
bGFncyhTb3VwTWVzc2FnZUZsYWdzIHNvdXBGbGFncykgeyBtX3NvdXBGbGFncyA9IHNvdXBGbGFn
czsgfQogCi0gICAgICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCB7IHJldHVy
biBtX2luaXRpYXRpbmdQYWdlSUQ7IH0KLSAgICAgICAgdm9pZCBzZXRJbml0aWF0aW5nUGFnZUlE
KHVpbnQ2NF90IHBhZ2VJRCkgeyBtX2luaXRpYXRpbmdQYWdlSUQgPSBwYWdlSUQ7IH0KKyAgICAg
ICAgUGFnZUlkZW50aWZpZXIgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1faW5p
dGlhdGluZ1BhZ2VJRDsgfQorICAgICAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlSUQoUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKSB7IG1faW5pdGlhdGluZ1BhZ2VJRCA9IHBhZ2VJRDsgfQogCiAgICAg
ICAgIEdVbmlxdWVQdHI8U291cFVSST4gY3JlYXRlU291cFVSSSgpIGNvbnN0OwogCkBAIC0xMTMs
NyArMTA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hY2NlcHRF
bmNvZGluZyA6IDE7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7Ci0gICAg
ICAgIHVpbnQ2NF90IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgUGFnZUlkZW50aWZpZXIg
bV9pbml0aWF0aW5nUGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VNZW1i
ZXJzKFNvdXBNZXNzYWdlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VC
b2R5KFNvdXBNZXNzYWdlKikgY29uc3Q7CkBAIC0xNjIsMTAgKzE1NywxMSBAQCBib29sIFJlc291
cmNlUmVxdWVzdDo6ZGVjb2RlV2l0aFBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zb3VwRmxhZ3MgPSBzdGF0aWNfY2FzdDxTb3VwTWVz
c2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKTsKIAotICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQ
YWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbml0aWF0aW5nUGFnZUlEKSkKKyAgICBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBkZWNvZGVyID4+
IGluaXRpYXRpbmdQYWdlSUQ7CisgICAgaWYgKCFpbml0aWF0aW5nUGFnZUlEKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2VJRDsK
KyAgICBtX2luaXRpYXRpbmdQYWdlSUQgPSAqaW5pdGlhdGluZ1BhZ2VJRDsKIAogICAgIHJldHVy
biB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDBmNmVhMTk3ODdhNDZjNzQ3
NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUuLjBlZDI1YjM3ZDVmODA4NzY4MTI1Mzg3NzA4OTBhZjli
ODhlOTM2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2
b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBS
ZXF1ZXN0KSBjb25zdAogewogICAgIGlmIChtX2luaXRpYXRpbmdQYWdlSUQpIHsKICAgICAgICAg
dWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1aW50NjRfdCo+KGZh
c3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSkpOwotICAgICAgICAqaW5pdGlhdGluZ1BhZ2VJRFB0
ciA9IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgKmluaXRpYXRpbmdQYWdlSURQdHIgPSBt
X2luaXRpYXRpbmdQYWdlSUQudG9VSW50NjQoKTsKICAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGFf
ZnVsbChHX09CSkVDVChzb3VwUmVxdWVzdCksIGdfaW50ZXJuX3N0YXRpY19zdHJpbmcoZ1NvdXBS
ZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSksIGluaXRpYXRpbmdQYWdlSURQdHIsIGZhc3RGcmVl
KTsKICAgICB9CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBk
YXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0KSBjb25zdAogdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21Tb3VwUmVxdWVzdChTb3VwUmVxdWVzdCogc291cFJlcXVl
c3QpCiB7CiAgICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1
aW50NjRfdCo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBSZXF1ZXN0KSwgZ1NvdXBS
ZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSkpOwotICAgIG1faW5pdGlhdGluZ1BhZ2VJRCA9IGlu
aXRpYXRpbmdQYWdlSURQdHIgPyAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA6IDA7CisgICAgbV9pbml0
aWF0aW5nUGFnZUlEID0gbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihp
bml0aWF0aW5nUGFnZUlEUHRyID8gKmluaXRpYXRpbmdQYWdlSURQdHIgOiAwKTsKIH0KIAogdW5z
aWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApp
bmRleCA4NzljMGIxOWU5NjZmMjk2OWJhMGFmNDc4YjZlODNlNjMwNWI5NDBiLi5iNjg5YzNlMjVh
ZDgyM2VjZjZkMzA0ZWU3ODljYTlmMzQ1ZGEyZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3MTYsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3RvcmFnZUlt
bWVkaWF0ZWx5KCkKICAgICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhj
b25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQzLDcgKzc0
Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3Jh
Z2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgT3Bl
bmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWlu
JiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nl
c3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKQEAg
LTgxNCw3ICs4MTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
OjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50U3RvcmFn
ZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwgV1RG
TW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7
CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFp
biYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChXVEZN
b3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIHBh
Z2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21h
aW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJs
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+
IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNzYwZDJhM2UxZWNiZGU4
Yjc1ODUzNzU1ZTNhZTkwLi5iZmMyMzM5Njg1MzMyMDAyNjI2Nzg5NDMxYWUwNzNiMmQzOTc1ZjQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlmTmVl
ZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5O
ZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92ZXJy
aWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9w
ZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9yRG9t
YWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpIG92ZXJyaWRlOwogCkBAIC05
MSw5ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVsZW1l
dHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3Qg
U3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+
LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFt
ZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJvb2wg
aXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3ICsx
NTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25lZCBy
ZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNEb21h
aW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBTdGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2YWxl
bnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMpOwog
ICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0gICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFt
ZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVy
bmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNH
cmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1By
ZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFsZW50
UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVEYXRhUmVj
b3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwZWU3Zjk2Mzg5NDYxNWRm
ZDEzNWIxODQwOTBiNTNmODFiZDlkZmY0Li5hNWYyNjI0ZTQzMzRjZTkwMzlmYWE1ZTJkMWU1YzQx
ZmQwZDA4N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc01lbW9yeVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAgICAgICAgbV9wZXJz
aXN0ZW50U3RvcmFnZS0+c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpZZXMpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIyNCw3ICsy
MjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFn
ZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgcwogICAgIH0pOwogfQogCi12b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFp
biwgRnJhbWVJRCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURvbWFp
biwgRnJhbWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
U3ViRnJhbWVEb21haW4mJiBzdQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9wZW5l
clBhZ2VJRCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3ZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1Vu
ZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3Rv
cmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4mJiBv
cGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyAh
PSBvcGVuZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMjg3
LDcgKzI4Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluCiAgICAgZ3JhbnRTdG9yYWdlQWNj
ZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZNb3Zl
KG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZy
YW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vz
c1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVE
b21haW4mJiBzdWJGCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShzdWJG
cmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQsIHBy
b21wdFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5h
bChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRvcEZy
YW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBTdG9y
YWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZy
YW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdh
c1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oCmluZGV4IDQ0ZWZiZjRkZWMxNGYyMDI3MDJhY2FkMDc3NjhmNWFjODIwYjgwNWEu
LjQ1ZjdlMWI3NTk2OTNjMTEwM2EzZDY2MjczMTZkNmZjZTAyZTRjZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcwLDcg
QEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwogICAg
IHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYm
LCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAKICAg
ICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQp
PiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVE
b21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BG
cmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwg
RnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmlnYXRp
b24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0
IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUp
IG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1lRG9t
YWluJikgb3ZlcnJpZGU7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
Y3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFibGVE
b21haW4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2lnbmVk
IHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFpbihj
b25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21haW4+
JiwgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBncmFu
dFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYm
LCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0
V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZy
YW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
Jik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVudChS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVidWdN
b2RlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3OWNj
MWYxYjk0NTYyMWI5YTA1NTI0ODRjMDk2YzUuLmQ3Nzk4YjI1ZDFlM2JiYmI3OGE4N2FiM2UxYTVh
MzEzOWYxNGJhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
QEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWluID0g
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZTdG9y
YWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3BlbmVy
RG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVyUGFn
ZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNpbmcg
RnJhbWVJRCA9IHVpbnQ2NF90OwogICAgIAogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZSgpOwpAQCAtMTEwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0b3Jh
Z2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQYWdl
SUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9yYWdl
QWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZvaWQg
cmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCiAg
ICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0RlYnVn
TW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH07CiAgICAg
dm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NT
dGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikg
PSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0
ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURv
bWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDg3
MWIxOWQyZjA3NDg2ZTBmNGJiNzYzYzY5ZGFhMWFhZmY4N2M5OTIuLjYyMjQzMGNkOGU0ZjA5ZWNh
ZjhmYTM2OGEzODlmMGNhYjg3YzEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxXZWJDb3IKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9t
YWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoc3Vi
RnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CkBAIC0yOTgsMTIgKzI5OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcwogICAg
IH0pOwogfQogCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3RvcmFn
ZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHBhZ2VJRCkKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlc291
cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBtX25l
dHdvcmtTZXNzaW9uID8gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9uKCku
aGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJ
RCwgcGFnZUlEKSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
cihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNh
bGxiYWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMxNSw3ICsz
MTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUgogICAgIGNhbGxiYWNrKGZhbHNlKTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBw
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAo
c3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duOjpObyk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWkK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVEb21h
aW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRvbWFp
bkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBSZWdp
c3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGUKICAg
ICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VB
Y2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZy
YW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWluLmlz
b2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVkQ29w
eSgpLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMzk2LDcgKzM5Niw3
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgfSk7CiB9CiAKLVN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5
RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQogewogICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00MDksNyArNDA5
LDcgQEAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QKICAgICByZXR1cm4gaXNTdG9yYWdlR3JhbnRl
ZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsR3Jh
bnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hhbmRs
ZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaAppbmRleCA4NzU5ZDYwMTY2YTU1MGVlNjlhNjJiMTcxZGVhODZmZTNhNDFiOTJmLi43OWNm
MjQ2MDFjMzJlNzA1Y2Q4YjQ1M2Y5MjNiZmQzNjYzMTE0ZDgwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNs
dWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04Miw4
ICs4Myw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVp
bnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQg
PSB1aW50NjRfdDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93biA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEwNCw3
ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0Jl
Zm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBT
dWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwogCkBA
IC0xMTgsMTEgKzExNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFjdGlv
bihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8
V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURhdGFU
b1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0
cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBi
b29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxSZWdp
c3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJh
bWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwog
ICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25h
bDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAg
ICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVlc3RT
dG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgaGFz
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3Mo
Y29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2b2lk
IHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2
b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lkIGxv
Z1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3JhZ2VB
Y2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4m
LCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNjZXNz
SGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0
aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVBbGxT
dG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBjYWxs
VXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBWZWN0
b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+Jik7Ci0gICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihj
b25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxIYXNT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3Qg
VG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtQ
cm9jZXNzKCk7CiAKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3RpZnlQ
YWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVz
b3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsKIAog
ICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNlTG9h
ZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlELCBP
cGVuZXJEb21haW4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
KERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBv
cGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYs
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5NzE4
MzZhZGE1YWU4Mjk3YjViNTc5MDZiYzkwNWMxODNjZWI2ZC4uNGQzZDE2OWY2YWY5ZjQzYjc2MTA4
MWNmYmZlNjBhZmM1YTM5M2ZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC00OSw3ICs0OSw3
IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgICAgICBTdHJpbmcgdXNl
ckFnZW50OwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7Ci0gICAgICAgIHVpbnQ2
NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwogICAg
ICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNwcAppbmRleCAzZDcxZjhmNmIxYjZjMjZkYjA1NTBmODhhYTVlZTExNDQyMTBhOTA2
Li45MmM4YjdhZTQ0ZmIzYjc3NGQ2YjA1OThjNDE5YzM4M2ZlYjA5MjBlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50aWZp
ZXIKICAgICBBU1NFUlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVudGlm
aWVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBhZ2VMb2Fk
Q29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKIHsK
ICAgICBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHdlYlBhZ2VJRCk7CiB9
CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2kKICAgICBsb2FkZXIt
PmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KIAot
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNv
b2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9u
KG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CiAgICAgYXV0byByZXN1bHQgPSBuZXR3b3Jr
U3RvcmFnZVNlc3Npb24uY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8sIHVy
bCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBAIC01MjUsNyArNTI1
LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0
ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Np
b24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFnZVNlc3Np
b24uc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1l
SUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKQEAgLTU0MiwxMyArNTQyLDEzIEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZVNlc3Npb24obmV0
d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5jb29raWVzRW5hYmxlZCgpKTsKIH0KIAotdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVD
b29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmlu
ZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9uKG5l
dHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Zmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZpcnN0
KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRS
YXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHJlc3VsdDsKICAg
ICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmdldFJhd0Nvb2tp
ZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVzdWx0
KTsKQEAgLTYzOCwxMyArNjM4LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQogCiAjaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0b3Jh
Z2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVTdG9y
YWdlQWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0YUZv
clJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29y
a1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdlU2Vz
c2lvbi0+Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhwYWdl
SUQpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlCiAgICAgfQog
fQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZy
YW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAtNzA5LDcg
KzcwOSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3JhZ2VB
Y2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjCiAgICAgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBXZWJD
b3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVz
dFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFt
ZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dyYW50
ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24gPSBu
ZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKSB7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbkkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6WWVzLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
JiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdl
SUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIGlm
IChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lvbihz
ZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKQEAgLTc0NSw3ICs3NDUs
NyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFjY2Vz
c1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0X3Qg
cGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWluUmVz
b3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCitPcHRpb25hbDxOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRUcmFj
a2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9u
SUQmIHNlc3Npb25JRCkKIHsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCkK
ICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmNsZWFyKCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2luZ0Zv
clBhZ2UodWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShQYWdlSWRlbnRpZmllciBw
YWdlSUQpCiB7CiAgICAgZm9yIChhdXRvJiBhY3Rpdml0eVRyYWNrZXIgOiBtX25ldHdvcmtBY3Rp
dml0eVRyYWNrZXJzKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVRyYWNrZXIucGFnZUlEID09IHBh
Z2VJRCkKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NAogICAgIH0p
OwogfQogCi1zaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290TmV0
d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCkKK3NpemVfdCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoUGFnZUlkZW50aWZpZXIgcGFnZUlE
KQogewogICAgIHJldHVybiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmZpbmRNYXRjaGluZyhb
Jl0oY29uc3QgYXV0byYgaXRlbSkgewogICAgICAgICByZXR1cm4gaXRlbS5pc1Jvb3RBY3Rpdml0
eSAmJiBpdGVtLnBhZ2VJRCA9PSBwYWdlSUQ7CkBAIC05MDMsMTcgKzkwMywxNyBAQCB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRzKCkK
ICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6Q2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dlYlBy
b2Nlc3NJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7CiAg
ICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQoKSwg
c2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc1JlbW92ZWQobV9j
b25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Np
b25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VzKQordm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBB
TDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYg
cGFnZXMpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2Vk
KG1fY29ubmVjdGlvbi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgKaW5kZXggY2JjN2JiZmU4ZjU3ZDc1NDEzMTU4MTA0Zjg4YTU0NDAwOTQyMDc2
Yi4uMDZkNTc5Njg4Mjg2NThlMTY4YzJjODFmNzI4MWYxZjk2MGM4MDRiYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJj
ZUxvYWRNYXAuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzMsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBtX25l
dHdvcmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAKLSAg
ICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3VyY2VM
b2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlELCBi
b29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlvbmFs
PE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9v
bCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0b3BU
cmFja2luZ1Jlc291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIE5l
dHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6OkJs
b2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldENvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVhckNv
bm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZvaWQg
d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAg
dm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklE
LCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2FzQWRk
ZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBvbGRQYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpT
ZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NT
ZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllcik7CkBAIC0xNzAsMTYgKzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcHJl
Y29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIoUmVz
b3VyY2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRf
dCB3ZWJQYWdlSUQpOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3RhcnRE
b3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2b2lk
IGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAot
ICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+
IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tpZVN0
cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYpOwog
ICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2Ft
ZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlv
bmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2ll
c0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFn
ZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYm
KTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vz
c2VkKT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+
JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJM
KGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
JiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAgcHJp
dmF0ZToKICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25u
ZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZv
aWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNEYXRh
Rm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlE
KTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCwg
dWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgY2xl
YXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rp
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9pZCBs
b2dXZWJTb2NrZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4s
IFdhbGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQQUw6
OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7CiAg
ICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFy
Z2V0RG9tYWluKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3Rv
cjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFt
ZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5l
clBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOworICAg
IHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4s
IGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRX
YXNTaG93bik+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQ
QUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAgICB2
b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNlT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIzOSwy
OSArMjQwLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KGNvbnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAgICAg
ICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlciYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcih1aW50NjRfdCBwYWdlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBhZ2VJ
RCB7IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAgICAg
ICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVs
OjpMb2FkUGFnZSB9CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNlTmV0
d29ya0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50aWZp
ZXIgcmVzb3VyY2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNv
dXJjZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAgLCBy
ZXNvdXJjZUlEIHsgcmVzb3VyY2VJRCB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7
IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAgICB7
CiAgICAgICAgIH0KIAotICAgICAgICB1aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAgIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRp
ZmllciByZXNvdXJjZUlEIHsgMCB9OwogICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsgZmFs
c2UgfTsKICAgICAgICAgTmV0d29ya0FjdGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7CiAg
ICAgfTsKIAogICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0gICAg
dm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBhZ2VJ
RCk7Ci0gICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzaXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5VHJh
Y2tlcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxFKEFQ
UExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgppbmRleCBmN2M5N2VlYmIyMTNjZDc4M2NhZjRlMjA0NjliZmEzY2UxOTRjOGNlLi44MzNl
NzRmY2Y2MDAzZWI4M2FjMWRlMmQ4YzZiZmMwZmYyNWI5ZmMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDE4ICsyNiwxOCBAQCBtZXNzYWdlcyAt
PiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUGVy
Zm9ybVN5bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
IHJlc291cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9y
LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4gZGF0YSkg
U3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCiAgICAgUmVtb3ZlTG9hZElkZW50aWZpZXIo
dWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKLSAgICBQYWdlTG9hZENvbXBsZXRlZCh1
aW50NjRfdCB3ZWJQYWdlSUQpCisgICAgUGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkKICAg
ICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktpdDo6
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAgU3Rh
cnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBk
b3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dl
c3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tpZXNG
b3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdl
YkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29y
ZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcg
Y29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCi0g
ICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQ
YXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBT
dHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgU2V0Q29v
a2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3Ry
dWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKLSAgICBDb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJz
dFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29va2ll
cykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJ
bmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0
X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNocm9u
b3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1l
U2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVk
ZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2llU3Ry
aW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0UmF3
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQp
IC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAgIERl
bGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBjb29r
aWVOYW1lKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0aCwg
V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJpbmcg
Y29udGVudFR5cGUpCkBAIC01NiwxNiArNTYsMTYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEVuc3VyZUxlZ2FjeVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIENsZWFyUGFnZVNw
ZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCk7CisgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQogICAgIExvZ1dlYlNv
Y2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZUxvYWRpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXRE
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxsVGlt
ZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0YXRp
c3RpY3MpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwotICAgIFJlcXVlc3RTdG9yYWdl
QWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChlbnVtOmJvb2wgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMKLSAg
ICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
LCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9wZW5l
ckRvbWFpbikKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5jCisg
ICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWluKQog
I2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291cmNl
T3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC04Nyw3ICs4Nyw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsK
IAogICAgIFNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJZGVudGlmaWVyKQogCi0gICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCi0gICAgV2Vi
UGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQp
Ci0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25J
RCwgVmVjdG9yPHVpbnQ2NF90PiBwYWdlcykKKyAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKKyAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyAgICBX
ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBWZWN0
b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGQxNGIxZGU5
ZDkxYzAyMmI3ZTBlMDM4MjE3NGRhODgyMmI5M2EzMTguLjQwOTcxNGQ2NjcyNmE4NDc0YWZmMjlh
MTYwODE3ZjI0Nzk2N2IwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzU2FtZU9yaWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU2VjdXJpdHlPcmlnaW4q
IG9yaWdpbikKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3RvY29s
SXNCbG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAotTmV0
d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYmIG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiYm
IHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYg
cmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1cmVF
eHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQorTmV0d29y
a0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQ
cm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQogICAg
IDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNzaW9u
SUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMzFkMTFj
M2E4YWVjYjJhYWZkNDllNWMzMTAzOThlMGFjMTZkZGVlNy4uNTdkZjFkYTQ2ODBkMjU4NGVlMjE2
YWFkZmYwOGRlODJhMTM2YmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdvcmtM
b2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+IHsK
IHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwgT3Ro
ZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNvcmU6
OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5nJiYg
cmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hvdWxk
Q2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVlc3RM
b2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5ldHdv
cmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJDb3Jl
OjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdyYWRl
RW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmlj
cyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIpOwog
ICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRyaXBs
ZXQgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nl
c3M7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBIZWFk
ZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hlY2tz
LgogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAvLyBO
ZWVkZWQgZm9yIENPUlMgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggODk2Mzk5ZDEzMzI1ZDAxNGExNzRi
Zjc3YjRjYTYzNmNhZjJlMGM0Ni4uODk3MzBjZjlmZDI2OTliY2ZkMzJkZGMzOGVmOGNlMDM3NDZh
MzAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9h
ZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrQWN0
aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVuY2Uu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVx
dWVzdC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTM4LDcgKzM5LDcgQEAgZW51
bSBjbGFzcyBQcmVjb25uZWN0T25seSB7IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgeyAwIH07CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEOwogICAgIHVpbnQ2NF90IHdlYkZyYW1l
SUQgeyAwIH07CiAgICAgV1RGOjpQcm9jZXNzSUQgcGFyZW50UElEIHsgMCB9OwogICAgIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgpIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmlu
ZGV4IGE1ZDZmNWNmY2M3YzQzMjVlOWFkNzMxMzZmMzZmZGEyOTlkMWRlMGIuLmFjNGQzMmJmMmQz
MTE3MTE4MDM1ZTIzY2Y4YjFkNWIxYmI2ZWI0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFBBTDo6U2Vzc2lvbklEIHNlcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3M6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURv
bWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0
d29ya1Byb2Nlc3M6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoYXV0byogbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKICAgICAgICAgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLT5jb21taXR0ZWRDcm9zc1NpdGVM
b2FkV2l0aExpbmtEZWNvcmF0aW9uKGZyb21Eb21haW4sIHRvRG9tYWluLCBwYWdlSUQpOwpAQCAt
MTk1NCw3ICsxOTU0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0QWxsb3dzQW55U1NMQ2Vy
dGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCBhbGxvd3MsIENvbXBsZXQKICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2Fn
ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1By
b2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBTaG91bGRTYW1w
bGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ6OnNo
b3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTk2Miw3ICsxOTYyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9nRGlhZ25vc3RpY01lc3Nh
Z2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3MKICAgICBwYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpMb2dE
aWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCBTaG91bGRT
YW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBl
IHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25v
c3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
IHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91bGRMb2dBZnRlclNhbXBs
aW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NzAsNyArMTk3MCw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50
NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0CiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRpb24sIHJlc3VsdCwgU2hvdWxk
U2FtcGxlOjpObyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWdu
aWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdlSWRlbnRpZmllciB3ZWJQ
YWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2luZ0NsaWVudDo6c2hvdWxk
TG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICByZXR1cm47CkBAIC0yNjE5
LDcgKzI2MTksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVLZXB0QWxpdmVMb2FkKE5l
dHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNzaW9uLT5yZW1vdmVLZXB0
QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNB
ZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCit2b2lkIE5ldHdvcmtQcm9j
ZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUGFnZUlkZW50aWZpZXIg
b2xkUGFnZUlEKQogewogICAgIGlmICghcGFnZUlEIHx8ICFvbGRQYWdlSUQpIHsKICAgICAgICAg
TE9HX0VSUk9SKCJDYW5ub3QgYWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjQ0LDcg
KzI2NDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRAogICAgICAgICBzdG9yYWdlTWFuYWdl
ci5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG9sZFBhZ2VJRCwgcGFnZUlEKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBj
b25uZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3Zv
aWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQp
CiB7CiAgICAgaWYgKCFwYWdlSUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgcmVtb3Zl
IHBhZ2Ugd2l0aCBpbnZhbGlkIGlkIik7CkBAIC0yNjc0LDcgKzI2NzQsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYgY29u
bmVjdGlvbikKICAgICBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5zdG9yYWdlTWFuYWdlcigp
LnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0d29y
a1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90
PiYgcGFnZUlEcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdl
ZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25J
RCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZUlEcykKIHsKICAgICBhdXRvIGNv
bm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKICAgICBBU1NFUlQobV9zZXNzaW9u
QnlDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDdhY2IzZjk2NzVjM2Q5NDg3Mzk4
YzdhN2QwY2YzNjNhOTk3NDU3YWEuLmViZjNiN2ZlNjUwMWQ1MjQzYmQyZGUwMzI2YmIzN2ZmNDgw
MjNiMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmllci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURC
U2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlwZXMu
aD4KQEAgLTEzNiw4ICsxMzcsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9Eb21h
aW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5lZWRP
ZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBP
cGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBPcGVu
ZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAgICB1
c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQ
cm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMTkwLDkgKzE4OSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gRGlhZ25vc3RpYyBtZXNzYWdlcyBs
b2dnaW5nLgotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlE
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1
bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZh
bHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJl
cywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6RGlh
Z25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZv
aWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBzb3Vy
Y2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtMjU4LDcgKzI1Nyw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCwg
Y29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVj
dEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJl
Y3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
cmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lkIGNv
bW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIGNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRz
V2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICNlbmRpZgpAQCAtMjcxLDEwICsyNzAsMTAgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6OlNlc3Npb25J
RCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6
U2Vzc2lvbklEKSBjb25zdDsKIAotICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQQzo6Q29ubmVj
dGlvbiYsIFBBTDo6U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IG9sZFBhZ2VJ
RCk7Ci0gICAgdm9pZCB3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNl
c3Npb25JRCwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChJUEM6
OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQQzo6
Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgdm9pZCB3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYpOwotICAg
IHZvaWQgd2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vz
c2lvbklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+Jik7CisgICAgdm9pZCB3ZWJQcm9jZXNzU2Vz
c2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mKTsKICAgICB2b2lkIGdldExvY2FsU3RvcmFnZU9y
aWdpbkRldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWlscz4mJik+JiYpOwogCiAj
aWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGQ5ZmVlMDc4
ZmU3MzUzNGJjZTQ2ZDUyMmFmM2NkMjRiNjM5YjdjNjIuLmY1ZWY1MzAxMzQwMjM3YzcyMmVkOTU3
NTViODNiZmQ1ZDE4YjBlMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTMxLDcgKzEzMSw3IEBAIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVkaXJlY3RlZFRvRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RGcm9tKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gdG9wRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlZGlyZWN0
ZWRGcm9tRG9tYWluKSAtPiAoKSBBc3luYwogICAgIFJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwotICAg
IENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgdWludDY0X3QgcGFnZUlEKSAtPiAoKSBBc3lu
YworICAgIENvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEKSAtPiAoKSBBc3luYwogICAgIFNldENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9Eb21h
aW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIERl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+
ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDU4YWFjYjk5M2RiOThh
Y2NkYTY1MjJkOTU2NGM5ZWFhODk0YmRhODEuLjMzY2RjNGQxN2RiZTJlMDg2NmUzNjEyZWYyMjc2
MWEzODIzODA1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC0xMDcsOCArMTA3
LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghZGVj
b2Rlci5kZWNvZGUocmVzdWx0LndlYlBhZ2VJRCkpCisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IHdlYlBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHdlYlBhZ2VJRDsKKyAgICBpZiAoIXdlYlBh
Z2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJlc3VsdC53ZWJQYWdlSUQgPSAqd2Vi
UGFnZUlEOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQud2ViRnJhbWVJRCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCBmZTI2NTM2ZjIxYzNlZTlhNzAx
ODk4Y2EwNTkzMmQ1NWQxNWQzNGIwLi4wZDRmOWEyYTFhZWE1Yzg4MDBhNWIxM2ZlMzdlMDE3YmJk
YzQ5NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNzQsMTggKzE3NCwxOCBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hl
Y2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChh
dXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBXVEY6OnN3aXRjaE9uKHJlc3VsdCwKICAgICAg
ICAgICAgICAgICBbdGhpc10gKFJlc291cmNlRXJyb3ImIGVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBlcnJvciBjaGVja2luZyAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVu
dFBJRCA9ICVkLCBlcnJvci5kb21haW4gPSAle3B1YmxpY31zLCBlcnJvci5jb2RlID0gJWQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9u
b3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgic3RhcnQ6IGVycm9yIGNoZWNraW5nIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQsIGVycm9yLmRv
bWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNvZGUgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFn
ZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwgdGhpcy0+aXNTeW5jaHJvbm91cygpLCBt
X3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJv
ci5lcnJvckNvZGUoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyb3IuaXNDYW5jZWxs
YXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMtPmRpZEZhaWxMb2FkaW5nKGVy
cm9yKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIFt0aGlzXSAoTmV0d29y
a0xvYWRDaGVja2VyOjpSZWRpcmVjdGlvblRyaXBsZXQmIHRyaXBsZXQpIHsKICAgICAgICAgICAg
ICAgICAgICAgdGhpcy0+bV9pc1dhaXRpbmdDb250aW51ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hl
ZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+d2lsbFNlbmRSZWRp
cmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRyaXBsZXQucmVxdWVzdCksIFdURk1vdmUodHJpcGxldC5y
ZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQucmVkaXJlY3RSZXNwb25zZSkpOwotICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogc3ludGhldGlj
IHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVSTCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkLCBwYXJlbnRQSUQg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlzTWFpblJlc291cmNlKCksIHRoaXMtPmlz
U3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVudFBJRCk7CisgICAgICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2Vu
dCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdhcyBtb2RpZmllZCAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFy
YW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5
bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICAgICAgICAgIH0s
CiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIHsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKHRoaXMtPmNhblVzZUNhY2hlKHJlcXVlc3QpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydDogQ2hlY2tp
bmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQs
IGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBh
Z2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0
aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVy
cy5wYXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlz
LT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy0+cmV0cmlldmVDYWNoZUVudHJ5KHJlcXVlc3QpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC0xOTgsNyAr
MTk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KCkKICAgICB9CiAgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBvbmNlIG1fbmV0d29ya0xvYWRDaGVja2Vy
IGlzIHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgogICAgIGlmIChjYW5Vc2VDYWNoZShvcmln
aW5hbFJlcXVlc3QoKSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6
IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJj
ZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFy
ZW50UElEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5n
IGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBp
c1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5w
YXJlbnRQSUQpOwogICAgICAgICByZXRyaWV2ZUNhY2hlRW50cnkob3JpZ2luYWxSZXF1ZXN0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI3LDEzICsyMjcsMTMgQEAgdm9pZCBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiAgICAgICAgIGxvYWRlci0+bG9nU2xvd0NhY2hlUmV0cmlldmVJZk5lZWRl
ZChpbmZvKTsKIAogICAgICAgICBpZiAoIWVudHJ5KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJlc291cmNlIG5vdCBpbiBjYWNoZSAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1l
dGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNv
dXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNT
eW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNv
dXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5zdGFydE5ldHdv
cmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9hZDo6WWVzKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgICAgIGlmIChlbnRyeS0+aGFzUmVhY2hlZFByZXZhbGVudFJlc291cmNlQWdlQ2FwKCkpIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1l
dGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRl
bnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFz
IHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAi
LCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWlu
UmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAg
bV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlvbiA9IFdURk1vdmUoZW50cnkpOwogICAg
ICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRhdGlvblJlcXVlc3QgPSBvcmlnaW5hbFJl
cXVlc3QoKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJl
dmFsaWRhdGlvblJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CkBAIC0yNDEsMjEgKzI0MSwyMSBA
QCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIGlmIChl
bnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxpbmcgcmVkaXJl
Y3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5kaXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZv
ckNhY2hlRW50cnkoV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShlbnRyeSkpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChsb2FkZXItPm1fcGFyYW1ldGVycy5u
ZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnktPnJlc3BvbnNlKCkuY2VydGlmaWNhdGVJbmZv
KCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVF
bnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJh
bWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBk
b2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNlcnRpZmljYXRlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJl
c291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxv
YWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJlcXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGVudHJ5LT5uZWVk
c1ZhbGlkYXRpb24oKSB8fCByZXF1ZXN0LmNhY2hlUG9saWN5KCkgPT0gV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlDYWNoZURhdGEpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogVmFsaWRhdGluZyBj
YWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9u
b3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9u
b3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmlldmVDYWNo
ZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291
cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRv
VUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91cygpKTsKICAgICAgICAgICAgIGxvYWRl
ci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdURk1vdmUoZW50cnkpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNh
Y2hlRW50cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9tIGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlz
TWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2Vi
UGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIs
IGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmV0cmlldmVkIHJlc291cmNlIGZyb20g
Y2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9
ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOwogICAgICAgICBsb2FkZXItPmRpZFJldHJpZXZlQ2FjaGVFbnRyeShXVEZN
b3ZlKGVudHJ5KSk7CiAgICAgfSk7CiB9CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QpCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYWQgbG9hZCkKIHsKICAgICBpZiAobG9h
ZCA9PSBGaXJzdExvYWQ6OlllcykgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdv
cmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3Vz
ID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMu
d2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlz
U3luY2hyb25vdXMoKSk7CiAKICAgICAgICAgY29uc3VtZVNhbmRib3hFeHRlbnNpb25zKCk7CiAK
QEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3
b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExvYQogICAgIH0KICAgICBp
ZiAoIW5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIFdURkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRv
IGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIChpZD0lIiBQUkl1NjQgIikgdGhh
dCBkb2VzIG5vdCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0
dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMg
bm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25JRD0lIiBQUkl1NjQgIikiLCBtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlk
ZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNlc3Npb25JRCgpKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRv
IGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNzaW9uIHRoYXQgZG9lcyBub3QgZXhpc3Qg
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklEPSUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQ
YWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5zZXNzaW9uSUQoKSk7CiAgICAgICAgIG1f
Y29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShtX3BhcmFt
ZXRlcnMud2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmludGVybmFs
RXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lv
bklES2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6Tm8pOwogICAgICAgICBkaWRGYWlsTG9h
ZGluZyhpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkpKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
Mjk4LDcgKzI5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtM
b2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZpcnN0TG9hCiAgICAgcGFyYW1ldGVycy5y
ZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBtX25ldHdvcmtMb2FkID0gc3RkOjptYWtl
X3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nvbm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgp
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nlc3Npb24pOwogCi0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRp
b24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53
ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3Jp
cHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFy
dE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNjcmlwdGlvbiA9ICV7cHVibGljfXMpIiwg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0d29ya0xvYWQtPmRlc2NyaXB0aW9uKCku
dXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVw
KExvYWRSZXN1bHQgcmVzdWx0KQpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKQogewotICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNv
dXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRo
aXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgIFJFTEVB
U0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBk
b3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93
bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgCiAgICAgLy8gVGhp
cyBjYW4gaGFwcGVuIGlmIHRoZSByZXNvdXJjZSBjYW1lIGZyb20gdGhlIGRpc2sgY2FjaGUuCiAg
ICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7CkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBOZXR3b3Jr
UmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwog
CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJvcnQ6IENhbmNlbGluZyByZXNvdXJjZSBs
b2FkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAg
bV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAgICAgaWYgKG1fcGFyYW1ldGVycy5vcHRp
b25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX2lzS2VwdEFsaXZlKSB7
CiAgICAgICAgIG1faXNLZXB0QWxpdmUgPSB0cnVlOwpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNl
c3RvcnNPclhGcmFtZU9wdGlvCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNl
aXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJlY2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNl
Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0
dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgcmVj
ZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCByZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVk
Q29udGVudExlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUi
IFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCByZWNlaXZlZFJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9uc2UuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCkpOwogCiAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUocmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAg
LTUwNSw3ICs1MDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZlZFJlc3Bvbgogdm9pZCBOZXR3b3JrUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIs
IGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQogewogICAgIGlmICghbV9udW1CeXRlc1Jl
Y2VpdmVkKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQnVmZmVy
OiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3Rh
cnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gYnVmZmVyLT5zaXplKCk7CiAKICAg
ICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRpb24pOwpAQCAtNTM0LDcgKzUzNCw3IEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRC
dWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRy
aWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3Bh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNS
ZWNlaXZlZCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgaWYgKHNob3VsZENhcHR1cmVFeHRyYU5ldHdv
cmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5lY3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5m
b3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0d29ya0xvYWRNZXRyaWNzKTsKQEAgLTU2
OSw3ICs1NjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMbwogCiB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wg
PSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVy
cy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgZXJyb3IuaXNUaW1lb3V0KCks
IGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlzQWNjZXNzQ29udHJvbCgpLCBlcnJvci5l
cnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlvbiA9ICVkLCBpc0Fj
Y2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQu
dG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlm
aWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXNDYW5jZWxsYXRpb24oKSwgZXJyb3IuaXNB
Y2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIGlmIChzaG91bGRDYXB0
dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1v
dmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZpZXIoKSk7CkBAIC03MzEsNyArNzMxLDcg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJl
c291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY29udGlu
dWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOwogCiAgICAgbV9pc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscyA9IGlzQWxs
b3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOwogCkBAIC05ODgsNiArOTg4LDExIEBAIHN0YXRp
YyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUp
CiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1iZXIodmFsdWUudmFsdWUoKSkgOiBTdHJp
bmcoIk5vbmUiX3MpOwogfTsKIAorc3RhdGljIFN0cmluZyBlc2NhcGVJREZvckpTT04oY29uc3Qg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUgPyBT
dHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOworfTsK
Kwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmxvZ0Nvb2tpZUluZm9ybWF0aW9uKCkgY29u
c3QKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24obV9jb25uZWN0aW9u
LCBzZXNzaW9uSUQoKSkpOwpAQCAtOTk4LDcgKzEwMDMsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBjb25zdAogICAgIGxvZ0Nvb2tpZUluZm9y
bWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNvdXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5h
bFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0ZUluZm86OmNyZWF0ZShv
cmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpLCBvcmlnaW5hbFJlcXVl
c3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBwYWdlSUQoKSwgaWRlbnRpZmllcigpKTsK
IH0KIAotc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQorc3RhdGljIHZvaWQgbG9nQmxv
Y2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25u
ZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9u
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZv
LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6
OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vz
c2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDI1LDcgKzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBs
b2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXN0YXRpYyB2b2lk
IGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9i
amVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFn
ZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVy
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZv
cm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9u
LCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VSVChOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDg2LDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9p
ZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzJiBjb25uZWN0aQogI3VuZGVmIExPQ0FMX0xPR19JRl9BTExPV0VECiB9CiAKLXZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25h
bDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dD
b29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlv
biwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRp
ZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oY29ubmVjdGlv
biwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25JRCgpKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5oCmluZGV4IGE4
YTMwMDVjMTQyMzA2MTM4ODc2ODIxYTQzYTA1N2EwYjZmM2Q3ZmMuLmE4ZjZkMzE1Nzk4YzRhZGZm
Zjk5ZGE3ZTgyZmZjODMzYTk2NzY4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuaApAQCAtODQsNyArODQsNyBAQCBwdWJs
aWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJh
bWV0ZXJzLnNlc3Npb25JRDsgfQogICAgIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyOyB9CiAgICAgdWludDY0
X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlEOyB9Ci0g
ICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KIAogICAgIHN0cnVjdCBTeW5jaHJvbm91c0xvYWRE
YXRhOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgc3RhdGljIGJv
b2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwotICAgIHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUlu
Zm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgY29uc3QgU3RyaW5nJiBs
YWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVT
aXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50
NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZvaWQgbG9nQ29va2llSW5mb3JtYXRpb24o
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgT3B0aW9uYWw8dWludDY0
X3Q+IGlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpc2FibGVFeHRyYU5ldHdvcmtM
b2FkTWV0cmljc0NhcHR1cmUoKSB7IG1fc2hvdWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRy
aWNzID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcApp
bmRleCA5N2UwYjI0NDA3OGQ4MzJhZWRjZGQ4YTY3OTE4NDE0ZjI4NzBjNjAyLi41NTNjYmFkMTli
YzVhMTk3ZTA2MjUyNzUwZjI4MmNlM2IwNDE2ZmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlckZldGNoVGFzay5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwCkBAIC00NSw0MCArNDUsNDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlOiAlcyIsIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9u
c2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQog
ewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZl
dGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbmVlZHNDb250aW51ZURpZFJlY2Vp
dmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwog
fQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlbmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIu
ZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVu
Y29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2
b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJlY2VpdmVGb3JtRGF0YShjb25zdCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsg
Zm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6
RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkRmluaXNoKCkKIHsK
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hGZXRjaDogZmV0Y2hJZGVudGlm
aWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGYWlsIHsg
ZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBt
X2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlk
RmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lk
IFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhhbmRsZSgpCiB7CiAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMiLCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJD
bGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmll
cik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAppbmRleCBkMzJjZDQ2Mzg5ZWMwMjJiZmM1MDE0NWI3MzdlZjRjYWFlYzkz
MjMxLi45MWZkYzcxNTk3MWQ3YjE5Y2JiOGI0MmM2NDdkYjMwYzNhZmUyOWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQg
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRp
b25JZGVudGlmaWVyIHNlcnZpCiAgICAgYXV0byogd29ya2VyID0gc2VydmVyKCkuYWN0aXZlV29y
a2VyRnJvbVJlZ2lzdHJhdGlvbklEKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
KTsKICAgICBpZiAoIXdvcmtlcikgewogICAgICAgICBTV1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyAt
PiBEaWROb3RIYW5kbGUgYmVjYXVzZSBubyBhY3RpdmUgd29ya2VyIiwgZmV0Y2hJZGVudGlmaWVy
LmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9jb250ZW50Q29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5k
bGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29udGVudENv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90
SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7CkBA
IC0xNzAsMTMgKzE3MCwxMyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRj
aChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciBzZXJ2aQogCiAgICAgICAgIGlm
ICghc3VjY2VzcykgewogICAgICAgICAgICAgU1dTRVJWRVJDT05ORUNUSU9OX1JFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZldGNoSWRlbnRpZmllcjogJXMgRGlkTm90
SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRpZCBub3QgYmVjb21lIGFjdGl2YXRlZCIsIGZldGNoSWRl
bnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBtX2Nv
bnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6
OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAg
ICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGll
bnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1dG8qIHdvcmtlciA9IHNlcnZlcigpLndv
cmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgICAgICBpZiAoIXdvcmtlcikg
ewotICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2Vz
OjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRp
Zmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTkyLDcgKzE5Miw3
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4oKmNvbnRleHRDb25uZWN0aW9uKS5zdGFy
dEZldGNoKG1fc2Vzc2lvbklELCBtX2NvbnRlbnRDb25uZWN0aW9uLmdldCgpLCB0aGlzLT5pZGVu
dGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIHJlcXVl
c3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZlcnJlcik7CiAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElPTl9SRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZpZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNh
dXNlIGZhaWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIiLCBmZXRjaElkZW50aWZpZXIubG9nZ2lu
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICAgICAgICAgIG1fY29udGVudENvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFu
ZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICAgICAgICAgIG1f
Y29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDAwMzk0NTA1M2Y1NTAz
NGMyMzA4N2U5MDc5OGJmOWI3ZGZiZTg2MjMuLjBiZWQ2OTc2OTVmYTVkOGIzNGJjMjhjNTA3MGEy
YWNjYzA2MjIxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNDk0LDcgKzQ5NCw3IEBAIFN0
b3JhZ2VNYW5hZ2VyOjp+U3RvcmFnZU1hbmFnZXIoKQogewogfQogCi12b2lkIFN0b3JhZ2VNYW5h
Z2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKK3ZvaWQgU3RvcmFnZU1hbmFnZXI6OmNyZWF0
ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgcXVv
dGFJbkJ5dGVzXSgpIG11dGFibGUgewogICAgICAgICBpZiAobV9zZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZXMuY29udGFpbnMoc3RvcmFnZU5hbWVzcGFjZUlEKSkKQEAgLTUwNCw3ICs1MDQsNyBAQCB2
b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRf
dCBzdG9yYWdlTmFtZXNwYWNlSUQsCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6
OmRlc3Ryb3lTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1aW50NjRfdCBzdG9yYWdlTmFtZXNwYWNl
SUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpkZXN0cm95U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2Uo
UGFnZUlkZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAgIG1fcXVldWUtPmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3Bh
Y2VJRF0gewogICAgICAgICBBU1NFUlQobV9zZXNzaW9uU3RvcmFnZU5hbWVzcGFjZXMuY29udGFp
bnMoc3RvcmFnZU5hbWVzcGFjZUlEKSk7CkBAIC01MTMsNyArNTEzLDcgQEAgdm9pZCBTdG9yYWdl
TWFuYWdlcjo6ZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCkKICAgICB9KTsKIH0KIAotdm9pZCBTdG9yYWdlTWFuYWdlcjo6YWRkQWxsb3dl
ZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbih1aW50NjRfdCBzdG9yYWdlTmFtZXNw
YWNlSUQsIElQQzo6Q29ubmVjdGlvbiYgYWxsb3dlZENvbm5lY3Rpb24pCit2b2lkIFN0b3JhZ2VN
YW5hZ2VyOjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKFBhZ2VJ
ZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29u
bmVjdGlvbikKIHsKICAgICBhdXRvIGFsbG93ZWRDb25uZWN0aW9uSUQgPSBhbGxvd2VkQ29ubmVj
dGlvbi51bmlxdWVJRCgpOwogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZigqdGhpcyksIGFsbG93ZWRDb25uZWN0aW9uSUQsIHN0b3JhZ2VOYW1lc3Bh
Y2VJRF0oKSBtdXRhYmxlIHsKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIFN0b3JhZ2VNYW5hZ2Vy
OjphZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0
b3JhZwogICAgIH0pOwogfQogCi12b2lkIFN0b3JhZ2VNYW5hZ2VyOjpyZW1vdmVBbGxvd2VkU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgSVBDOjpDb25uZWN0aW9uJiBhbGxvd2VkQ29ubmVjdGlvbikKK3ZvaWQgU3RvcmFnZU1hbmFn
ZXI6OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24oUGFnZUlk
ZW50aWZpZXIgc3RvcmFnZU5hbWVzcGFjZUlELCBJUEM6OkNvbm5lY3Rpb24mIGFsbG93ZWRDb25u
ZWN0aW9uKQogewogICAgIGF1dG8gYWxsb3dlZENvbm5lY3Rpb25JRCA9IGFsbG93ZWRDb25uZWN0
aW9uLnVuaXF1ZUlEKCk7CiAgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgYWxsb3dlZENvbm5lY3Rpb25JRCwgc3RvcmFnZU5hbWVzcGFj
ZUlEXSgpIG11dGFibGUgewpAQCAtNTMzLDcgKzUzMyw3IEBAIHZvaWQgU3RvcmFnZU1hbmFnZXI6
OnJlbW92ZUFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24odWludDY0X3Qg
c3RvCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmFnZU1hbmFnZXI6OmNsb25lU2Vzc2lvblN0b3Jh
Z2VOYW1lc3BhY2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1aW50NjRfdCBuZXdTdG9y
YWdlTmFtZXNwYWNlSUQpCit2b2lkIFN0b3JhZ2VNYW5hZ2VyOjpjbG9uZVNlc3Npb25TdG9yYWdl
TmFtZXNwYWNlKFBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3BhY2VJRCwgUGFnZUlkZW50aWZp
ZXIgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKQogewogICAgIG1fcXVldWUtPmRpc3BhdGNoKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN0b3JhZ2VOYW1lc3BhY2VJRCwgbmV3
U3RvcmFnZU5hbWVzcGFjZUlEXSB7CiAgICAgICAgIFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKiBz
ZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSA9IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzLmdldChz
dG9yYWdlTmFtZXNwYWNlSUQpOwpAQCAtNTY2LDcgKzU2Niw3IEBAIHZvaWQgU3RvcmFnZU1hbmFn
ZXI6OnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBjb25uZWN0aW9uQW5kU3RvcmFnZU1hcElEUGFp
cnNUb1JlbW92ZSkKICAgICAgICAgICAgIG1fc3RvcmFnZUFyZWFzQnlDb25uZWN0aW9uLnJlbW92
ZShwYWlyKTsKIAotICAgICAgICBWZWN0b3I8dWludDY0X3Q+IHNlc3Npb25TdG9yYWdlTmFtZVNw
YWNlSURzVG9SZW1vdmU7CisgICAgICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4gc2Vzc2lvblN0
b3JhZ2VOYW1lU3BhY2VJRHNUb1JlbW92ZTsKICAgICAgICAgZm9yIChhdXRvJiBzZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZSA6IG1fc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VzKSB7CiAgICAgICAgICAg
ICBpZiAoc2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UudmFsdWUtPmFsbG93ZWRDb25uZWN0aW9ucygp
LmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpCiAgICAgICAgICAgICAgICAgc2Vzc2lvblN0b3JhZ2VO
YW1lc3BhY2UudmFsdWUtPnJlbW92ZUFsbG93ZWRDb25uZWN0aW9uKGNvbm5lY3Rpb25JRCk7CkBA
IC03NzksNyArNzc5LDcgQEAgdm9pZCBTdG9yYWdlTWFuYWdlcjo6Y3JlYXRlVHJhbnNpZW50TG9j
YWxTdG9yYWdlTWFwKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwKIAogdm9pZCBTdG9yYWdl
TWFuYWdlcjo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VNYXAoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCB1aW50NjRfdCBzdG9yYWdlTWFwSUQsIHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwg
U2VjdXJpdHlPcmlnaW5EYXRhJiYgc2VjdXJpdHlPcmlnaW5EYXRhKQogewotICAgIG1fcXVldWUt
PmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbm5lY3Rp
b25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKSwgc3RvcmFnZU1hcElELCBzdG9yYWdlTmFtZXNw
YWNlSUQsIHNlY3VyaXR5T3JpZ2luRGF0YSA9IHNlY3VyaXR5T3JpZ2luRGF0YS5pc29sYXRlZENv
cHkoKV0oKSBtdXRhYmxlIHsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb25uZWN0aW9uSUQgPSBjb25uZWN0aW9uLnVuaXF1ZUlE
KCksIHN0b3JhZ2VNYXBJRCwgc3RvcmFnZU5hbWVzcGFjZUlEID0gbWFrZU9iamVjdElkZW50aWZp
ZXI8UGFnZUlkZW50aWZpZXJUeXBlPihzdG9yYWdlTmFtZXNwYWNlSUQpLCBzZWN1cml0eU9yaWdp
bkRhdGEgPSBzZWN1cml0eU9yaWdpbkRhdGEuaXNvbGF0ZWRDb3B5KCldKCkgbXV0YWJsZSB7CiAg
ICAgICAgIGlmIChtX2lzRXBoZW1lcmFsKSB7CiAgICAgICAgICAgICBtX2VwaGVtZXJhbFN0b3Jh
Z2UuYWRkKHNlY3VyaXR5T3JpZ2luRGF0YSwgV2ViQ29yZTo6U3RvcmFnZU1hcDo6Y3JlYXRlKGxv
Y2FsU3RvcmFnZURhdGFiYXNlUXVvdGFJbkJ5dGVzKSk7CiAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFn
ZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9y
YWdlTWFuYWdlci5oCmluZGV4IGE4ODgzMzJlZmNmYjU5NDEzMGIyNjA4ODQ2YWY0YTE4MjE4MmI3
OTAuLjVlNjVlNTAzOGZkZmY0MTcxMjY3ZDllMzJlZDE4ZTU0ZmMzOTU2YjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFuYWdlci5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTWFu
YWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTUwLDExICs1MSwxMSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTdG9yYWdlTWFu
YWdlcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbG9jYWxTdG9yYWdlRGlyZWN0b3J5KTsKICAgICB+
U3RvcmFnZU1hbmFnZXIoKTsKIAotICAgIHZvaWQgY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3Bh
Y2UodWludDY0X3Qgc3RvcmFnZU5hbWVzcGFjZUlELCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwot
ICAgIHZvaWQgZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VO
YW1lc3BhY2VJRCk7Ci0gICAgdm9pZCBhZGRBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VD
b25uZWN0aW9uKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7
Ci0gICAgdm9pZCByZW1vdmVBbGxvd2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9u
KHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJRCwgSVBDOjpDb25uZWN0aW9uJik7Ci0gICAgdm9p
ZCBjbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHVpbnQ2NF90IHN0b3JhZ2VOYW1lc3BhY2VJ
RCwgdWludDY0X3QgbmV3U3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICB2b2lkIGNyZWF0ZVNlc3Np
b25TdG9yYWdlTmFtZXNwYWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHN0b3JhZ2VOYW1lc3Bh
Y2VJRCwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKTsKKyAgICB2b2lkIGRlc3Ryb3lTZXNzaW9uU3Rv
cmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQp
OworICAgIHZvaWQgYWRkQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVjdGlvbihX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29ubmVjdGlv
biYpOworICAgIHZvaWQgcmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNwYWNlQ29ubmVj
dGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIElQQzo6Q29u
bmVjdGlvbiYpOworICAgIHZvaWQgY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBzdG9yYWdlTmFtZXNwYWNlSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG5ld1N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKICAgICB2b2lkIHByb2Nlc3NEaWRDbG9zZUNv
bm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uJik7CiAgICAgdm9pZCB3YWl0VW50aWxXcml0ZXNGaW5p
c2hlZCgpOwpAQCAtMTA3LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxzdGQ6OnBh
aXI8dWludDY0X3QsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4sIFJlZlB0cjxUcmFuc2ll
bnRMb2NhbFN0b3JhZ2VOYW1lc3BhY2U+PiBtX3RyYW5zaWVudExvY2FsU3RvcmFnZU5hbWVzcGFj
ZXM7CiAKICAgICBjbGFzcyBTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZTsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBSZWZQdHI8U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdl
TmFtZXNwYWNlczsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8
U2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2U+PiBtX3Nlc3Npb25TdG9yYWdlTmFtZXNwYWNlczsKIAog
ICAgIEhhc2hNYXA8c3RkOjpwYWlyPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVlSUQsIHVpbnQ2NF90
PiwgUmVmUHRyPFN0b3JhZ2VBcmVhPj4gbV9zdG9yYWdlQXJlYXNCeUNvbm5lY3Rpb247CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmlu
ZGV4IGM3ZjM4NmIzZDdjMzE0NTU4MGYyYWMwZTBlMzUyZWE2Yjg3MTU1YzEuLjhiYmMxNjk3ODU2
MGU0NDYzMjIxZGY3M2FjYjEwODc2MmFiNzY5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIk5ldHdvcmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFn
ZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgog
I2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25T
ZXQuaD4KQEAgLTg0LDcgKzg1LDcgQEAgZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CiAgICAgTm9E
dWVUb0V4cGlyZWRSZWRpcmVjdAogfTsKIAotdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFp
cjx1aW50NjRfdCAvKndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47Cit1c2lu
ZyBHbG9iYWxGcmFtZUlEID0gc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCAvKndlYkZyYW1lSUQqLz47CiAKIGNsYXNzIENhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8
Q2FjaGU+IHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCA5NjVjNmZhNjY0YmNkMTU1
Zjc2Y2RiM2I0ZDczMjZlZWUwM2U5MTg4Li4yZGQwZTdkNDZiYzcxOWU5NmZhMTUwNzRmZWQwMGIx
Yzg4NjY1NjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIE5l
dHdvcmtTZXNzaW9uQ29jb2E7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1
YmxpYyBOZXR3b3JrRGF0YVRhc2sgewogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNv
Y29hOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250
ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENv
bnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQ
UmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFU
YXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFU
YXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVu
dCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2
NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNv
bnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRF
bmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNo
b3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9u
LCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29j
b2Eoc2Vzc2lvbiwgY2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRl
bnRpYWxzUG9saWN5LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1Nu
aWZmLCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVj
b25uZWN0T25seSwgZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIG5ldHdvcmtBY3Rp
dml0eVRyYWNrZXIpKTsKICAgICB9CkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIFdl
YkNvcmU6Ok5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4g
bV9uZXR3b3JrTG9hZE1ldHJpY3M7IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7
IHJldHVybiBtX2ZyYW1lSUQ7IH07Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdlSUQ7IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlSUQ7IH07CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3Jr
U2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZl
cnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJ
c0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+
KTsKKyAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRh
VGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZy
YW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50
RW5jb2RpbmdTbmlmZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1Rv
SFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1l
TmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOwogCiAgICAgYm9v
bCB0cnlQYXNzd29yZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQg
YXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9f
c3Ryb25nIE5TVVJMUmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91
bGRDb250ZW50RW5jb2RpbmdTbmlmZik7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPE5TVVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6TmV0
d29ya0xvYWRNZXRyaWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIHVpbnQ2NF90IG1fZnJh
bWVJRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBtX3BhZ2VJRDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
Ym9vbCBtX2hhc0JlZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0
YVRhc2tDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a0RhdGFUYXNrQ29jb2EubW0KaW5kZXggMzVlNDQzYjllZTkxODA1N2FkMzRkZWYwNjhhODk5YmVh
MDY3YWRmNi4uMjhhMDVlODBkYjY4NWFmNjdiMjg0Yzg0MjMxNzE5NGY5N2U4N2UzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtE
YXRhVGFza0NvY29hLm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFz
a1dpdGhGaXJzdFBhcnR5Rm9yU2FtZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0
YXMKICNlbmRpZgogfQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29j
b2EoTmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMs
IHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlm
ZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1Nu
aWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFy
UmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNv
bm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25h
bDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29y
a0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNz
aW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xp
Y3kgc2hvdWxkQ29udGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1Bv
bGljeSBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVy
T25IVFRQU1RvSFRUUFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25s
eSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29y
a0FjdGl2aXR5VHJhY2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtE
YXRhVGFzayhzZXNzaW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFt
ZUlEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lv
biwgTmV0d29ya0RhdGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJ
bmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dp
bmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29r
aWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVs
dTogQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAo
dW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNv
bHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6bG9nQ29va2llSW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0
YXNrSUQgPSAlbHU6IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVy
XSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAg
ICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVz
IiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcu
VVRGOFN0cmluZyk7CiAjZW5kaWYKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRh
VGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJgogICAgIGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFs
c1BvbGljeSA9PSBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3Rh
dGVsZXNzQ29va2llbGVzcyB8fCBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNo
b3VsZEJsb2NrQ29va2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZv
cm1hdGlvbigpKQotICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRU
UFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJ
RCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwg
dGhpcywgbV9wYWdlSUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRl
bnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2lu
ZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0
d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJ
bmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTog
JXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQo
KSwgbV9mcmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNo
b3VsZEJsb2NrQ29va2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vz
c2lvbiwgIiVsbHUgJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNr
SWRlbnRpZmllcl0sIChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9j
a2luZyIpLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBA
IC0zNzksNyArMzc5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3Vs
ZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAo
bV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5l
dHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2ll
SW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6
IE5vdCBwYXJ0aXRpb25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9w
YWdlSUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0s
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxF
QVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0
d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJ
bmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTog
Tm90IHBhcnRpdGlvbmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lk
ZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UK
ICAgICAgICAgTE9HKE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tp
ZXMgZm9yIHJlZGlyZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggYzRmYjAwYjA4M2M0MTEyYTIyYzgxZWM0NWYwODhk
YTA5Y2I4NjllOC4uM2VkZjgyYWRmM2I1YWUzYjI4NGM3ZGQ1OTE1Yjg4NWU3NTIzMTc2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTg2LDYgKzE4NiwzNiBA
QCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQm
JiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJl
cGx5RGlzcGF0Y2hlciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBl
PHR5cGVuYW1lIFQ6OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcik7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiByZXBseSwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vj
b25kczo6aW5maW5pdHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3Bh
dGNoSW1tZWRpYXRlbHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBP
cHRpb25TZXQ8V2FpdEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOworICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFU+CisgICAgdm9pZCBz
ZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgT2Jq
ZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklEID0geyB9KQorICAgIHsKKyAgICAgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5PFQsIEM+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgIH0KKyAgICAKKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2Fn
ZSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlv
bj4gc2VuZE9wdGlvbnMgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4gc2VuZDxUPihXVEZN
b3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKKyAg
ICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICB2b2lk
IHNlbmRXaXRoUmVwbHkoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRp
b25JRCwgRnVuY3Rpb25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQo
T3B0aW9uYWw8dHlwZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4m
JiByZXBseUhhbmRsZXIpCisgICAgeworICAgICAgICByZXR1cm4gc2VuZFdpdGhSZXBseTxUPihX
VEZNb3ZlKG1lc3NhZ2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlcGx5RGlzcGF0Y2hl
ciwgV1RGTW92ZShyZXBseUhhbmRsZXIpKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQs
IFNlY29uZHMgdGltZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3lu
Y09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNl
bmRTeW5jPFQ+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklE
LnRvVUludDY0KCksIHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CisgICAgfQorICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCB3YWl0Rm9yQW5kRGlz
cGF0Y2hJbW1lZGlhdGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29u
ZHMgdGltZW91dCwgT3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+
KGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAg
IH0KIAogICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRp
b25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRo
UmVwbHkodWludDY0X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIEZ1bmN0
aW9uRGlzcGF0Y2hlciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVl
X3B0cjxEZWNvZGVyPik+JiYgcmVwbHlIYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaAppbmRleCBkNWY5ODFlNDUzNGIyYTliZDhiNGE1Y2M2MTRlODdj
YTQ0OTU2ZDRhLi4zZDZmMzQyODkyYmM4ODM5MDY3OGU4YzM2NDYzOTExMGRlNGY1NzI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC0zNCw5ICszNCw5
IEBAIGNsYXNzIE1lc3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lc3NhZ2VT
ZW5kZXIoKTsKIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBt
ZXNzYWdlKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNz
YWdlLCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCiAgICAgewotICAg
ICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCB7
IH0pOworICAgICAgICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4g
Ym9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlv
blNldDxTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTQ4LDYgKzQ4LDEyIEBAIHB1
YmxpYzoKICAgICAgICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29k
ZXIpLCBzZW5kT3B0aW9ucyk7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUs
IHR5cGVuYW1lIFQ+CisgICAgYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9iamVjdElkZW50
aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25z
ID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRp
b25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KICAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBTZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25T
ZXQ8U2VuZFN5bmNPcHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKQEAgLTY1LDggKzcxLDgg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRp
bWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUuLi4gQXJncz4KLSAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgorICAgIHZvaWQgc2VuZFdp
dGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewog
ICAgICAgICBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1lc3NhZ2VTZW5kZXJE
ZXN0aW5hdGlvbklEKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3Nh
Z2VzLnB5CmluZGV4IDUyNTE0OTAyYWJiZTFjYzcxNDZiNDNiZTdjZDhjNDZiYWI0OTA1ODguLjVi
OTc1MzAzMDViMDQ5OWRjOGYyZTg0ZWNjZTBmMzFlOGU2NWQ3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9T
Y3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQpAQCAtMjA1LDYgKzIwNSw3IEBAIGRlZiBmb3J3YXJk
X2RlY2xhcmF0aW9uc19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICdTdHJpbmcnLAog
ICAgICAgICAnV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6
OkZldGNoSWRlbnRpZmllcicsCisgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAg
ICAgICAgICdXZWJDb3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lk
ZW50aWZpZXInLAogICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCmluZGV4IGE2YTAwOTk1
NTAwZTc2MzNlMGQ0NWIxOGE0NDdjNzQyYTY5MjIwYWIuLmU2MDVhNDU5NDZmZmM3ZjFkMDdjYjg0
ZThmNWNiOTg3YmJmMzY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9B
UElQYWdlSGFuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhh
bmRsZS5jcHAKQEAgLTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBh
Z2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhh
bmRsZT4gUGFnZUhhbmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsK
IH0KIAotUmVmPFBhZ2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVp
bnQ2NF90IHBhZ2VJRCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29u
dmVydGluZyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6
UGFnZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VI
YW5kbGU6OlBhZ2VIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlz
QXV0b2NvbnZlcnRpbmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2Nv
bnZlcnRpbmcoaXNBdXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBh
Z2VIYW5kbGU6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFn
ZUhhbmRsZTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJl
c3VsdCkKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YWdlSUQpKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7Cisg
ICAgZGVjb2RlciA+PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKGlzQXV0b2NvbnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1
bHQgPSBpc0F1dG9jb252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNy
ZWF0ZShwYWdlSUQpOworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRv
Y29udmVydGluZygqcGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFm
YmRjMzFiNzkxYTlmYzBhYTYyNmZjOTBhNzQ4ZWYwODk0OC4uNmExY2ZiNjk4MjU5YmY0OGQ0ZDhl
ZDU4ZWNiODdiMGYyMjY3NDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSVBhZ2VIYW5kbGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhh
bmRsZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEFQSVBhZ2VIYW5kbGVfaAogCiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zOCwyMCArMzksMjAg
QEAgbmFtZXNwYWNlIEFQSSB7CiAKIGNsYXNzIFBhZ2VIYW5kbGUgOiBwdWJsaWMgT2JqZWN0SW1w
bDxPYmplY3Q6OlR5cGU6OlBhZ2VIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBh
Z2VIYW5kbGU+IGNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHN0YXRpYyBSZWY8UGFnZUhh
bmRsZT4gY3JlYXRlQXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMg
UmVmPFBhZ2VIYW5kbGU+IGNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc3Rh
dGljIFJlZjxQYWdlSGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcik7CiAgICAgdmlydHVhbCB+UGFnZUhhbmRsZSgpOwogCi0gICAgdWludDY0X3QgcGFn
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIGJvb2wgaXNBdXRv
Y29udmVydGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvY29udmVydGluZzsgfQogCiAgICAg
dm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KElQQzo6RGVjb2RlciYsIFJlZlB0cjxPYmplY3Q+Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgUGFnZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZyk7Cisg
ICAgUGFnZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgYm9vbCBpc0F1dG9jb252ZXJ0
aW5nKTsKIAotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIGNvbnN0IGJvb2wgbV9pc0F1dG9jb252ZXJ0
aW5nOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVt
b3RlT2JqZWN0UmVnaXN0cnkuaAppbmRleCA4NmY4MDQxNzA5YWJkNWMzY2Q2NGNkODIwZjg2MzUy
Y2FjMmE0ZDUxLi40MDQwODE3ODAwMmE5NDY3MWQzNTBkZjI2MWUwOGM5NTBlZWYyYjgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0
cnkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a09iakNQdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNzMsNyArNzQsNyBAQCBw
cml2YXRlOgogICAgIEZ1bmN0aW9uPHZvaWQoKT4gbV9sYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVj
ZXNzYXJ5OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91
bmRBY3Rpdml0eVRva2VuPiBtX3BlbmRpbmdSZXBsaWVzOwogICAgIGJvb2wgbV9pc1JlZ2lzdGVy
ZWRBc01lc3NhZ2VSZWNlaXZlciB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9tZXNzYWdlUmVj
ZWl2ZXJJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX21lc3NhZ2VSZWNl
aXZlcklEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KaW5k
ZXggNThjYjFkZDJiNWU3YzdjNmIwOTY1YWY2N2E1NTc2MmY0OTU5ODMwNi4uN2U5N2YxNzZjMDhh
NTg1YjFiOWMyNDMwZmU5NjEzYmQzYTM5MTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgs
NyArMjgsNyBAQAogCiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAot
LSAoaWQpX2luaXRXaXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBh
Z2VJRDooV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0g
KGlkKV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFz
aAogewotICAgIHJldHVybiBfcGFnZUlEOworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7
CiB9CiAKIC0gKEJPT0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJP
T0wpaXNFcXVhbDooaWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVy
ICopY29kZXIKIHsKLSAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdl
SUQiXTsKKyAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpA
InBhZ2VJRCJdOwogfQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAg
LTYxLDcgKzYxLDcgQEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBf
cGFnZUlEID0gW2NvZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJ
RCA9IG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2Nv
ZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0Nv
bnRleHRIYW5kbGVJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dL
QnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYTc0ZmI0Mjhj
MjBlOTdjYmVmNmFkN2UzNjU4OTQzLi40M2U0MWUyNGNkMzYzMzZiNTQ3ODRiMDAzY2YxN2JiYzE2
ZjY3YTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93
c2luZ0NvbnRleHRIYW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKQEAgLTI0LDExICsyNCwx
MiBAQAogICovCiAKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlLmgiCisjaW1wb3J0
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRl
eHRIYW5kbGUgKCkKIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXIgPSBf
cGFnZUlEKSB1aW50NjRfdCBwYWdlSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IGdldHRlcj1fcGFnZUlEKSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAKLS0gKGlk
KV9pbml0V2l0aFBhZ2VJRDoodWludDY0X3QpcGFnZUlEOworLSAoaWQpX2luaXRXaXRoUGFnZUlE
OihXZWJDb3JlOjpQYWdlSWRlbnRpZmllcilwYWdlSUQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LmNwcAppbmRleCBlYjhhMGI2NjE3YWU1M2I1MDk4Zjg4NjIwNmNkZjczZTg4NDIxNDM1Li5k
NGUxYzI1MDA4MTEyYmJiZGY1ODM2Zjk2N2YwYzgzYzBjNmY3MTNkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuY3BwCkBAIC02Niw3ICs2Niw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0
X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gKm1fZGVzdGluYXRpb25JRDsKKyAgICByZXR1cm4gbV9k
ZXN0aW5hdGlvbklELT50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpjYW5NYWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBy
ZXBseSkKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
b3BlblBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmkKICAgICBwbGF0
Zm9ybU9wZW5QYXltZW50U2V0dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpzaG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0
aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGlu
Z1VSTFN0cmluZywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvJiBjb29yZGluYXRvciA9IGFjdGl2ZVBheW1lbnRDb29yZGluYXRvclByb3h5
KCkpCiAgICAgICAgIGNvb3JkaW5hdG9yLT5kaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgKaW5kZXggZDIzN2VhYjNkYWI4NzlhNWRhMzU3MWY4OTEwMWQ3ZWU5NzA1
OTZiMi4uNmU0YTg1Y2YyZTI3ZmU0NjVhYWQ3NWNlZTIzYmNhZTJkZTdmZTAyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVy
LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2
YXRlOgogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwogICAgIHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3Ry
aW5nJiBtZXJjaGFudElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpT
ZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3Bl
blBheW1lbnRTZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBkb21haW5OYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2
b2lkIHNob3dQYXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBsaW5rSWNvblVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBz
aG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6
U2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwog
ICAgIHZvaWQgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVj
dGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAg
ICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICAgICBDbGllbnQmIG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBtX2Rlc3RpbmF0aW9uSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IG1fZGVzdGluYXRpb25JRDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAv
LyBJZGxlIC0gTm90aGluZydzIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggZGQzMTMxMjdiZjRhOGExYWEwYzZkZWNjNmQyMzRmOWJkYmFhYjdk
My4uMWRlNGNkZGNlNGIxMjYzZTJkMGI5NGJmYjkzMTkxNDhiYmMxODIzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhB
Y3RpdmVDYXJkKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lLCBQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGNhbk1ha2VQYXltZW50cykgQXN5bmMK
ICAgICBPcGVuUGF5bWVudFNldHVwKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBk
b21haW5OYW1lKSAtPiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKLSAgICBTaG93UGF5bWVudFVJKHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAo
Ym9vbCByZXN1bHQpIFN5bmNocm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBkZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmlu
ZyBvcmlnaW5hdGluZ1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdz
LCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkg
LT4gKGJvb2wgcmVzdWx0KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uKFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lv
bikKICAgICBDb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6
OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb24oT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRh
dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRp
b24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA2ZWIzMzVmMDdkM2NmZTYyOTAwMDcx
Y2RhYTc4OTNmMDQzMzViZWFhLi45ZGViNzZmZjEzMmM2Y2I1ZmRmNWViZjUyMjIzNGY2ZDQ0M2Vm
OTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRo
ZW50aWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRp
Y2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdWludDY0
X3QgQXV0aGVudGljYXRpb25NYW5hZ2VyOjphZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcChDaGFs
bGVuZ2UmJiBjaGFsbGVuZ2UKICAgICByZXR1cm4gY2hhbGxlbmdlSUQ7CiB9CiAKLWJvb2wgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZSh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
Y2hhbGxlbmdlKSBjb25zdAorYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNob3VsZENvYWxl
c2NlQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQs
IGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0CiB7CiAgICAg
aWYgKCFjYW5Db2FsZXNjZUNoYWxsZW5nZShjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0xMDgsNyArMTA4LDcgQEAgVmVjdG9yPHVpbnQ2NF90PiBBdXRoZW50aWNhdGlvbk1h
bmFnZXI6OmNvYWxlc2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWwKICAgICByZXR1
cm4gY2hhbGxlbmdlc1RvQ29hbGVzY2U7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2Vy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChw
YWdlSUQpOwogICAgIEFTU0VSVChmcmFtZUlEKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVp
bnQ2NF90IHBhZ2VJRCwgdQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICB1aW50NjRfdCBkdW1teVBhZ2VJRCA9IDA7CisgICAgUGFnZUlkZW50aWZpZXIgZHVtbXlQ
YWdlSUQ7CiAgICAgdWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5n
ZU1hcCh7IGR1bW15UGFnZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikgfSk7CiAgICAgCiAgICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0
aGUgc2FtZSBwcm90ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5h
Z2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaAppbmRleCA3ZmUzOTllMGI3ZTk0NThiZDkxNzgyNTkzODQxZTRjNDQ5MzM1YWUx
Li44NmU3NDRjMTA4ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2YjE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3Vw
cGxlbWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2
MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgp
OwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIm
Jik7CiAKICAgICB2b2lkIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3Qg
Y2hhbGxlbmdlSUQsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6
OkNyZWRlbnRpYWwmJik7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICBzdHJ1Y3QgQ2hhbGxlbmdlIHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZTsKICAgICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhh
bmRsZXIgY29tcGxldGlvbkhhbmRsZXI7CiAgICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCiAgICAgdWludDY0X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VN
YXAoQ2hhbGxlbmdlJiYpOwotICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKKyAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2Vi
Q29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50
NjRfdD4gY29hbGVzY2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNv
bnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNz
LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0
NzVkYzJiYjhmZjc3ZmE0MTcyNWMwODNiMGY3NTA5OTUzOS4uMTkyNTNlMmJhYjZhMTdiZWY0NjYz
NjY3ZmQ0OGFiOWU5ZTA1MTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4
aWxpYXJ5UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nl
c3MuaApAQCAtNjIsNiArNjIsMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJl
Y2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgCisgICAgdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVu
Y2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklE
LCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNz
YWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgp
LCByZWNlaXZlcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7Cisg
ICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5h
dGlvbklELnRvVUludDY0KCkpOworICAgIH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNz
aW9uRW5hYmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4
dElucHV0Q29udGV4dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5o
CmluZGV4IDRmNzVmZDgwNmY2OGQ2YTk5OWJiYTZhNDViMTQ1NzQ3NmZjYWI4OGMuLjU0ZDQyNzdi
ODUzOGZiYTQxNTZhYjgzZDZhZGI4OTU3ODI4YTBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1RleHRJbnB1dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9U
ZXh0SW5wdXRDb250ZXh0LmgKQEAgLTI5LDEzICsyOSwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RG9jdW1lbnRJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRleHRJbnB1
dENvbnRleHQgewogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CiAKLSAgICB1
aW50NjRfdCB3ZWJQYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3
ZWJQYWdlSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1l
bnRJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVu
dGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0uY3BwCmluZGV4IDlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdjZjRkODQyZGZmMzk2ZWQuLmQ5
MDBhMTY3MzNhOWNlNTNmNzZlOTdmODk1OWMxNDdhNzUwODk3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxX
ZWJCYWNrRm9yd2FyZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFj
a0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRf
dCBwYWdlSUQpCitSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0
SXRlbTo6Y3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0
ZW1TdGF0ZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUpLCBwYWdlSUQpKTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0Zvcndh
cmRMaXN0SXRlbShCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVt
U3RhdGUsIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZN
b3ZlKGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAg
ICAgLCBtX2xhc3RQcm9jZXNzSWRlbnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nl
c3NJZGVudGlmaWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0Zv
cndhcmRMaXN0SXRlbS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0
SXRlbS5oCmluZGV4IDg3MmVmMTgwOTVkMThjYzNhOWM1ZTc0NjNkMzBlN2Y2MTQ4NzJmNWUuLjQ0
YWY3YzY2NTkwNzQ2ZGY5ODJlMDVjMTNiZWVjZDA2YTc4NjRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAog
I2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAg
LTQ2LDcgKzQ3LDcgQEAgY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6QmFja0ZvcndhcmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50
NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3Jl
YXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
CiAgICAgdmlydHVhbCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGljIFdl
YkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2Fy
ZEl0ZW1JZGVudGlmaWVyJik7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0
dXJuIG1faXRlbVN0YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJ
dGVtU3RhdGUmIGl0ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWludDY0
X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgV2Vi
Q29yZTo6UHJvY2Vzc0lkZW50aWZpZXIgbGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXN0UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9jZXNz
SWRlbnRpZmllcihjb25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmllcikg
eyBtX2xhc3RQcm9jZXNzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4Miwx
MiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3VzcGVuZGVkUGFn
ZUZyb21Qcm9jZXNzUG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRl
bVN0YXRlOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nl
c3NJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRl
ZFBhZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcAppbmRleCBlOWRhNjBhZWViZWZmMWRhNjkxZTFlNDUzMzczNTc3YTNhOTQw
YTI1Li42OTk0ODI1ZDA4MWNiMDk5NDg0MmFjY2RjZTQ4NDZlM2RkYjBlOTIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAt
NTMsNyArNTMsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6
OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1c2VyQWdlbnQ7CiAgICAg
ZW5jb2RlciA8PCBpdGVtU3RhdGVzOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbklEOwotICAgIGVu
Y29kZXIgPDwgdXNlckNvbnRlbnRDb250cm9sbGVySUQudG9VSW50NjQoKTsKKyAgICBlbmNvZGVy
IDw8IHVzZXJDb250ZW50Q29udHJvbGxlcklEOwogICAgIGVuY29kZXIgPDwgdmlzaXRlZExpbmtU
YWJsZUlEOwogICAgIGVuY29kZXIgPDwgd2Vic2l0ZURhdGFTdG9yZUlEOwogICAgIGVuY29kZXIg
PDwgY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsOwpAQCAtMTkzLDExICsxOTMsMTEgQEAg
T3B0aW9uYWw8V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVyczo6ZGVjb2RlKElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRl
cnMuc2Vzc2lvbklEKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIE9wdGlv
bmFsPFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxl
cklkZW50aWZpZXI7CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlm
aWVyOwogICAgIGlmICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLSAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxl
cklEID0gbWFrZU9iamVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
clR5cGU+KCp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyAgICBwYXJhbWV0ZXJz
LnVzZXJDb250ZW50Q29udHJvbGxlcklEID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZp
ZXI7CiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJs
ZUlEKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTM5Miw3ICszOTIsNyBAQCBP
cHRpb25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAg
IHBhcmFtZXRlcnMuYmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsK
IAotICAgIE9wdGlvbmFsPE9wdGlvbmFsPHVpbnQ2NF90Pj4gb2xkUGFnZUlEOworICAgIE9wdGlv
bmFsPE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4g
b2xkUGFnZUlEOwogICAgIGlmICghb2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5oCmluZGV4IGMyYmU4NDE0NmIzNGVhNzU2MTk3MDc1YWM4YjJjYmMzOGJlYzQyZTAuLjkwMTI3
YmMzMTAzMGVlZTAzZjI2MjdlOTdjYWQ0NWY5YjdiNjljMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1p
bGVzdG9uZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24u
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9V
c2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29s
b3I+IGJhY2tncm91bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUdyb3VwRGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBE
YXRhLmNwcAppbmRleCA5NjM5ZDAxNWMyZjk0ZTY3Yjc2NzIyOGFkMjNiMWQ5YzQzYjM1MDA3Li40
ZDFjY2VhNjU2MzA5NmM1YWFhMmZmZmE2MzljYWJjOTMxOTIyYjQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcApAQCAtMzQsNyArMzQsNyBAQCB2b2lkIFdlYlBh
Z2VHcm91cERhdGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAg
ZW5jb2RlciA8PCBpZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwSUQ7Ci0gICAg
ZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLnRvVUludDY0KCk7Cisg
ICAgZW5jb2RlciA8PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfQogCiBPcHRp
b25hbDxXZWJQYWdlR3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQpAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VHcm91cERh
dGE+IFdlYlBhZ2VHcm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAg
aWYgKCFwYWdlR3JvdXBJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAg
ICBPcHRpb25hbDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENv
bnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVy
SWRlbnRpZmllcjsKICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIHt7IFdURk1vdmUo
KmlkZW50aWZpZXIpLCBXVEZNb3ZlKCpwYWdlR3JvdXBJRCksIG1ha2VPYmplY3RJZGVudGlmaWVy
PFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNlckNvbnRlbnRDb250cm9s
bGVySWRlbnRpZmllcikgfX07CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCBX
VEZNb3ZlKCpwYWdlR3JvdXBJRCksICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH19
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMv
T2JqQ09iamVjdEdyYXBoLm1tCmluZGV4IGM2NTQ4NGY1NTEyMjBkZGJjOGI4NGI3OTZhY2IwNTk4
ODcyNmI4NzMuLmZlNjZkZTY1OTJhYTBhZjIzNDU4ODJkYjNkNDFhMTJjYTJiOWJjMTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaC5tbQpAQCAtMjk4LDExICsy
OTgsMTIgQEAgYm9vbCBPYmpDT2JqZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29k
ZXIsIFJldGFpblB0cjxpZD4mIHJlc3VsdCkKICAgICB9CiAKICAgICBjYXNlIE9iakNUeXBlOjpX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZTogewotICAgICAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFnZUlEKSkKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKKyAgICAgICAgZGVjb2RlciA+PiBwYWdlSUQ7Cisg
ICAgICAgIGlmICghcGFnZUlEKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAg
IHJlc3VsdCA9IGFkb3B0TlMoW1tXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRX
aXRoUGFnZUlEOnBhZ2VJRF0pOworICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2lu
Z0NvbnRleHRIYW5kbGUgYWxsb2NdIF9pbml0V2l0aFBhZ2VJRDoqcGFnZUlEXSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Z2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAppbmRleCAyYzFmM2U5NzdiMmU1MmRiZjljNTk1NDc5
YzE2NGM5NmI1MTNmMjQ4Li45MzU2ZWUzZTRiMjE4NTBkNDkxZjA1NWVhNWQzMTIyNWI0YzAwODBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJD
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRX
ZWJDb250ZXh0LmNwcApAQCAtMTc0OSw1ICsxNzQ5LDUgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0
V2ViVmlld0Rlc3Ryb3llZChXZWJLaXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3
KgogCiBXZWJLaXRXZWJWaWV3KiB3ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UoV2Vi
S2l0V2ViQ29udGV4dCogY29udGV4dCwgV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIHJldHVy
biBwYWdlID8gY29udGV4dC0+cHJpdi0+d2ViVmlld3MuZ2V0KHBhZ2UtPnBhZ2VJRCgpKSA6IDA7
CisgICAgcmV0dXJuIHBhZ2UgPyBjb250ZXh0LT5wcml2LT53ZWJWaWV3cy5nZXQocGFnZS0+cGFn
ZUlEKCkudG9VSW50NjQoKSkgOiBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA4ODdmN2IzMWMwZTZkM2Fl
ZDEyZmMxMDNkNDkwZWE1ZWEwYjM3OTczLi5jZWI5MGQ3M2Q4M2Y3MmUxZWI2OWIwYjhhMmRjZmY5
YTlkYTIxYWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9X
ZWJLaXRXZWJWaWV3LmNwcApAQCAtMjgxOCw3ICsyODE4LDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2Vi
X3ZpZXdfZ2V0X3BhZ2VfaWQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwogCi0gICAgcmV0
dXJuIGdldFBhZ2Uod2ViVmlldykucGFnZUlEKCk7CisgICAgcmV0dXJuIGdldFBhZ2Uod2ViVmll
dykucGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmlu
ZGV4IDEwNzU3ODFhZjJjM2Y4YTdlYTdjNjE4NmViY2Y3OWM3MDgxYzE5OTcuLjJmOWNmZTk0MjQw
MjYxNzJkOTA2ZGJkMWEwM2M0Y2QwMTU0NGJiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBA
IC01NCw2ICs1NCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBTdHJpbmcgQXV0b21hdGlvbkNv
bW1hbmRFcnJvcjo6dG9Qcm90b2NvbFN0cmluZygpCiB7CkBAIC01MjIsNyArNTIzLDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFt
ZShXZWJGcmFtZVByb3h5JiBmcmEKICAgICB9CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b246OnJlc3BvbmRUb1BlbmRpbmdQYWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2U+PiYgbWFwKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVu
ZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxQYWdlSWRlbnRp
ZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+
JiBtYXApCiB7CiAgICAgSW5zcGVjdG9yOjpFcnJvclN0cmluZyB0aW1lb3V0RXJyb3IgPSBTVFJJ
TkdfRk9SX1BSRURFRklORURfRVJST1JfTkFNRShUaW1lb3V0KTsKICAgICBmb3IgKGF1dG8gaWQg
OiBjb3B5VG9WZWN0b3IobWFwLmtleXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCA2NWVi
M2U0NmU1Yjg4YmE4MmFjMmQxMDI0ZWNhZTYzY2IzNGQ3MDg3Li5mMzljMDYxYjU3ODkyYTkyNDhm
ZDA5ZGZmY2ZhN2I4YzUwYTA3NTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMjI1
LDcgKzIyNiw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21w
bGV0ZU9uUGFnZShXZWJQYWdlUHJveHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9u
OjpQYWdlTG9hZFN0cmF0ZWd5LCBTZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlPiYmKTsKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21w
bGV0ZU9uRnJhbWUoV2ViRnJhbWVQcm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRp
b246OlBhZ2VMb2FkU3RyYXRlZ3ksIFNlY29uZHMsIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyOjpDYWxsYmFja0Jhc2U+JiYpOwotICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VO
YXZpZ2F0aW9uQ2FsbGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CisgICAgdm9pZCBy
ZXNwb25kVG9QZW5kaW5nUGFnZU5hdmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mKTsKICAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdGcmFtZU5h
dmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mKTsKICAgICB2b2lkIGxv
YWRUaW1lckZpcmVkKCk7CiAKQEAgLTI4MCwyMiArMjgxLDIyIEBAIHByaXZhdGU6CiAgICAgUmVm
PEluc3BlY3Rvcjo6QXV0b21hdGlvbkJhY2tlbmREaXNwYXRjaGVyPiBtX2RvbWFpbkRpc3BhdGNo
ZXI7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkZyb250ZW5kRGlz
cGF0Y2hlcj4gbV9kb21haW5Ob3RpZmllcjsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmlu
Zz4gbV93ZWJQYWdlSGFuZGxlTWFwOwotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9o
YW5kbGVXZWJQYWdlTWFwOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0
cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gbV9oYW5kbGVXZWJQYWdlTWFwOwogCiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgU3RyaW5nPiBtX3dlYkZyYW1lSGFuZGxlTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50
NjRfdD4gbV9oYW5kbGVXZWJGcmFtZU1hcDsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdO
b3JtYWxOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwotICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxs
YmFja0Jhc2U+PiBtX3BlbmRpbmdFYWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxi
YWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRy
PEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05v
cm1hbE5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFz
aE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3Np
bmdDb250ZXh0Q2FsbGJhY2tzUGVyUGFnZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8
SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9y
bWFsTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7CiAgICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZT4+IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJh
Y2tzUGVyRnJhbWU7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFj
a2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNr
c1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0luc3Bl
Y3RvckNhbGxiYWNrc1BlclBhZ2U7CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRF
UkFDVElPTlMpCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxB
dXRvbWF0aW9uQ29tbWFuZEVycm9yPik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRD
YWxsYmFja3NQZXJQYWdlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1
bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5n
S2V5Ym9hcmRFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsKICNlbmRpZgogI2lmIEVOQUJM
RShXRUJEUklWRVJfTU9VU0VfSU5URVJBQ1RJT05TKQotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1
bmN0aW9uPHZvaWQoT3B0aW9uYWw8QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5n
TW91c2VFdmVudHNGbHVzaGVkQ2FsbGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBGdW5jdGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5k
RXJyb3I+KT4+IG1fcGVuZGluZ01vdXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAj
ZW5kaWYKIAogICAgIHVpbnQ2NF90IG1fbmV4dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQg
eyAxIH07CkBAIC0zMTksNyArMzIwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBTaW11bGF0ZWRJbnB1
dERpc3BhdGNoZXIgQVBJcyB0YWtlIGEgc2V0IG9mIGlucHV0IHNvdXJjZXMuIFdlIGFsc28gaW50
ZXJuIHRoZXNlCiAgICAgLy8gc28gdGhhdCBwcmV2aW91cyBpbnB1dCBzb3VyY2Ugc3RhdGUgaXMg
dXNlZCBhcyBpbml0aWFsIHN0YXRlIGZvciBsYXRlciBjb21tYW5kcy4KICAgICBIYXNoU2V0PFJl
ZjxTaW11bGF0ZWRJbnB1dFNvdXJjZT4+IG1faW5wdXRTb3VyY2VzOwotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZjxTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXI+PiBtX2lucHV0RGlzcGF0Y2hlcnNC
eVBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPFNpbXVsYXRl
ZElucHV0RGlzcGF0Y2hlcj4+IG1faW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKICNlbmRpZgogI2lm
IEVOQUJMRShXRUJEUklWRVJfS0VZQk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIEtlZXAgdHJh
Y2sgb2YgY3VycmVudGx5IGFjdGl2ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9r
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNz
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5o
CmluZGV4IDk4OTNkMzk4YjU3NDYyYWQ5Yjg4ODM4ZTIyNzEwZmNhZjA0NjMwZDAuLjZiMDliYWRi
OGQwY2ViYWJmMmM2OWY2MDA5YjFiZDFkMjNjMDllNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC01MSw2ICs1MSwxOCBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50
NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9u
cyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVz
c2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25k
cyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNP
cHRpb25zID0geyB9KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdz
PiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJn
cy4uLik+JiYpOworICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cisg
ICAgYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9u
SUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHNlbmQ8VD4oV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRC50
b1VJbnQ2NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5h
bWUgVDo6UmVwbHkmJiByZXBseSwgT2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBT
ZWNvbmRzIHRpbWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5k
U3luY09wdGlvbnMgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RG
TW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwg
dGltZW91dCwgc2VuZFN5bmNPcHRpb25zKTsKKyAgICB9CiAKICAgICBJUEM6OkNvbm5lY3Rpb24q
IGNvbm5lY3Rpb24oKSBjb25zdAogICAgIHsKQEAgLTY3LDYgKzc5LDE4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVj
ZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYp
OwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5h
bWUpOworICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgYWRkTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVj
dElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2Vp
dmVyKQorICAgIHsKKyAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5h
bWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOworICAgIH0KKyAgICAKKyAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJ
UEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVy
PFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgeworICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKKyAgICB9CiAK
ICAgICBlbnVtIGNsYXNzIFN0YXRlIHsKICAgICAgICAgTGF1bmNoaW5nLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5Lm1tCmluZGV4IGYwNWQ3OWMwZDAxYjg5ZDZiNjg0OGNhMjUwNmNjZjkxZGNmYjc2NzEu
LjY3MDY1OTc2ODYxOGVkNzVmOTgwYzExYWRhY2E5MWJlMjk5ZTRlZDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHkubW0KQEAgLTUyNyw5NCArNTI3LDk0IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpoYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9uc2UodWludDY0X3QgY29u
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRl
eHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OlBsYXkoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCkpOwogfQog
CiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGF1c2UodWludDY0X3QgY29udGV4
dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6UGF1c2UoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBsYXlTdGF0ZSh1aW50
NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpU
b2dnbGVQbGF5U3RhdGUoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpiZWdpblNjcnViYmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjcnViYmlu
Zyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2NydWJiaW5nKGNvbnRleHRJZCkpOwog
fQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2NydWJiaW5nKHVpbnQ2
NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OkVuZFNjcnViYmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNj
cnViYmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIHRv
bGVyYW5jZUJlZm9yZSwgZG91YmxlIHRvbGVyYW5jZUFmdGVyKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2Vla1RvVGltZShjb250ZXh0SWQs
IHRpbWUsIHRvbGVyYW5jZUJlZm9yZSwgdG9sZXJhbmNlQWZ0ZXIpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNl
ZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFmdGVy
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpmYXN0U2Vlayh1aW50
NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB0aW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1lKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyOjpGYXN0U2Vlayhjb250ZXh0SWQsIHRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRl
eHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OkJlZ2luU2Nhbm5pbmdGb3J3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5T
Y2FubmluZ0ZvcndhcmQoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQogewot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5T
Y2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0Jh
Y2t3YXJkKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6ZW5kU2Nhbm5pbmcodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpFbmRTY2FubmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29u
dGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBp
bmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6U2VsZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGlu
ZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdp
YmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExl
Z2libGVNZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RM
ZWdpYmxlTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6dG9nZ2xlUGljdHVyZUluUGljdHVyZSh1aW50NjRfdCBjb250
ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpUb2dnbGVQaWN0dXJlSW5QaWN0dXJlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9n
Z2xlUGljdHVyZUluUGljdHVyZShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnRvZ2dsZU11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11dGVk
KGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlTXV0ZWQoY29udGV4dElkKSk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRNdXRlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wgbXV0ZWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpTZXRNdXRlZChjb250ZXh0SWQsIG11dGVkKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpTZXRNdXRlZChjb250ZXh0SWQsIG11dGVkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpzZXRWb2x1bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdm9sdW1l
KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRWb2x1bWUoY29u
dGV4dElkLCB2b2x1bWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNldFBsYXlpbmdPblNlY29uZFNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUp
CiB7CiAgICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2
YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNldFBsYXlpbmdPblNlY29uZFNjcmVlbihjb250ZXh0
SWQsIHZhbHVlKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXF1
ZXN0Q29udHJvbGxlZEVsZW1lbnRJRCgpCiB7CiAgICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29u
dGV4dElkKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5hZ2Vy
Q29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6SGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJl
cXVlc3QobV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQpKTsKIH0KIAogUGxhdGZvcm1QbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UqIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNN
YW5hZ2VySW50ZXJmYWNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCA2YmE0NzllMDYw
YTA5NmM0Mzk1MWVhNzRiZjg5N2JhNjcxNjg5ZjdlLi5jOGQ2NWMzNjJhYWM4MmM2NDExOTUxMTY0
OThhMTE3OWM1MzNlNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC02MjAsNDMgKzYy
MCw0MyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cHJlcGFyZWRUb0V4aXRG
dWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHk6OnJlcXVlc3RGdWxsc2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29s
IGZpbmlzaGVkV2l0aE1lZGlhKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKGNvbnRleHRJZCwgbW9kZSwg
ZmluaXNoZWRXaXRoTWVkaWEpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShj
b250ZXh0SWQsIG1vZGUsIGZpbmlzaGVkV2l0aE1lZGlhKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250
ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpSZXF1ZXN0VXBkYXRlSW5saW5lUmVjdChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJl
cXVlc3RVcGRhdGVJbmxpbmVSZWN0KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRl
eHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJl
cXVlc3RWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OnJldHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRl
eHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OlJldHVyblZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmV0
dXJuVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlk
U2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2Ny
ZWVuKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbHNjcmVlbihj
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVu
KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OkRpZEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6RGlkRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgbV9wYWdlLT5kaWRFeGl0
RnVsbHNjcmVlbigpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlk
RW50ZXJGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250
ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAg
ICBtX3BhZ2UtPmRpZEVudGVyRnVsbHNjcmVlbigpOwogfQogCkBAIC02NzAsNyArNjcwLDcgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCkKICAgICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAgICAgW21vZGVs
LT5sYXllckhvc3RWaWV3KCkgcmVtb3ZlRnJvbVN1cGVydmlld107CiAgICAgbW9kZWwtPnNldExh
eWVySG9zdFZpZXcobnVsbHB0cik7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpEaWRDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OkRpZENsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogCiAgICAgaW50ZXJmYWNl
LT5zZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUp
OwogICAgIHJlbW92ZUNsaWVudEZvckNvbnRleHQoY29udGV4dElkKTsKQEAgLTY4OCwyNSArNjg4
LDI1IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJh
bWUodWludDY0X3QgY29udGV4dElkLCBXZWJDb3JlCiAgICAgICAgIG1hY2hfcG9ydF9uYW1lX3Qg
ZmVuY2VQb3J0ID0gZmVuY2VTZW5kUmlnaHQubGVha1NlbmRSaWdodCgpOwogI2VuZGlmCiAKLSAg
ICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRW
aWRlb0xheWVyRnJhbWVGZW5jZWQoY29udGV4dElkLCBmcmFtZSwgSVBDOjpBdHRhY2htZW50KGZl
bmNlUG9ydCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0
VmlkZW9MYXllckZyYW1lRmVuY2VkKGNvbnRleHRJZCwgZnJhbWUsIElQQzo6QXR0YWNobWVudChm
ZW5jZVBvcnQsIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSkpOwogICAgIH0KIH0KIAogdm9pZCBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KHVpbnQ2NF90
IGNvbnRleHRJZCwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZp
dHkpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpTZXRWaWRlb0xheWVyR3Jhdml0eUVudW0oY29udGV4dElkLCAodW5zaWduZWQpZ3Jhdml0eSks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckdyYXZpdHlFbnVtKGNvbnRleHRJZCwgKHVuc2ln
bmVkKWdyYXZpdHkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1
bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIG1fcGFnZS0+
dWlDbGllbnQoKS5oYXNWaWRlb0luUGljdHVyZUluUGljdHVyZURpZENoYW5nZShtX3BhZ2UsIG1v
ZGUgJiBNZWRpYVBsYXllckVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVy
ZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpG
dWxsc2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxs
c2NyZWVuTW9kZUNoYW5nZWQoY29udGV4dElkLCBtb2RlKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3Qg
Y29udGV4dElkKQogewogICAgIGJvb2wgaXNWaWV3VmlzaWJsZSA9IG1fcGFnZS0+aXNWaWV3Vmlz
aWJsZSgpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6RnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRleHRJZCwgaXNW
aWV3VmlzaWJsZSkpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0KaW5kZXggMmFhNzQ4ZjAwNGYyMjJhMDFkZGI3YWM4ZWVlNzEzMmNh
Nzg4OTBjYS4uMDhhM2QzMDhkM2E1MGYxOTQ1NDRjMTNlNzkxYjM2YTcxM2IzZDRjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTE5OTcsMTMg
KzE5OTcsMTMgQEAgZmxvYXQgV2ViVmlld0ltcGw6OmludHJpbnNpY0RldmljZVNjYWxlRmFjdG9y
KCkgY29uc3QKIAogdm9pZCBXZWJWaWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQog
ewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2lu
ZG93RGlkT3JkZXJPZmZTY3JlZW4iLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0co
QWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVy
T2ZmU2NyZWVuIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3Bh
Z2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zp
c2libGUsIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2
b2lkIFdlYlZpZXdJbXBsOjp3aW5kb3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0
aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT25T
Y3JlZW4iLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwg
IldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlz
LCBtX3BhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0
ZURpZENoYW5nZSh7IFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29yZTo6
QWN0aXZpdHlTdGF0ZTo6V2luZG93SXNBY3RpdmUgfSk7CiB9CiAKQEAgLTIwNzEsNyArMjA3MSw3
IEBAIHZvaWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZUxheWVySG9zdGluZygpCiAKIHZv
aWQgV2ViVmlld0ltcGw6OndpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKCkKIHsKLSAgICBM
T0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZENo
YW5nZU9jY2x1c2lvblN0YXRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFj
dGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VP
Y2NsdXNpb25TdGF0ZSIsIHRoaXMsIG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAg
bV9wYWdlLT5hY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6Oklz
VmlzaWJsZSk7CiB9CiAKQEAgLTIyMzQsMTkgKzIyMzQsMTkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
dmlld0RpZENoYW5nZUJhY2tpbmdQcm9wZXJ0aWVzKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6dmll
d0RpZEhpZGUoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBh
Z2UgJWxsdSkgdmlld0RpZEhpZGUiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0co
QWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRIaWRlIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAog
dm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZFVuaGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3Rh
dGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAo
cGFnZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2
NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VE
aWRDaGFuZ2UoKQogewotICAgIExPRyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBh
Z2UgJWxsdSkgYWN0aXZlU3BhY2VEaWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2
ZVNwYWNlRGlkQ2hhbmdlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAg
ICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJh
d2luZ0FyZWFQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVBy
b3h5LmNwcAppbmRleCBiNWI0ZTBhZDIyMTYyYzlkMGMwMGM5OGNkODM5MzUwOWZjZjZkZjgxLi5l
Y2Y1ZGEwYTkxMGI2Mzk0ODBhYzMyYTVmYjFiMGZiMGNmZmZmNmViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIERy
YXdpbmdBcmVhUHJveHk6OkRyYXdpbmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdl
YlBhZ2VQcm94eSYgd2ViUGFnZVByCiAgICAgLCBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1l
cihSdW5Mb29wOjptYWluKCksIHRoaXMsICZEcmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJl
Y3RDaGFuZ2VkVGltZXJGaXJlZCkKICNlbmRpZgogewotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJl
Y2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiB9CiAKIERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5n
QXJlYVByb3h5KCkKIHsKLSAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmll
cik7CiB9CiAKIGJvb2wgRHJhd2luZ0FyZWFQcm94eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBz
aXplLCBjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDM0NDNi
Mzg1ZmFjNzQxY2Q4YjI0YmFjZWUwOGIwNzM0ZDA3ZTAyNzIuLjJkOTk2NmUzYzgzZmIxYTQ0MDNl
MDdkZjljNTRiYmRiZDRiMzA5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzExLDcgKzMxMSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MoY29uc3QgSVBDOjpBdHRhCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNv
cmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYm
IGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogewogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG1f
cHJvY2Vzc1Bvb2wuc2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQocGFnZUlEKSkg
ewpAQCAtMzcxLDcgKzM3MSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNo
TGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciogbGF1bmNoZXIsIElQQzo6Q29uCiAjZW5kaWYKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2Vi
UHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMg
bnVsbC1jaGVjayBiZWNhdXNlIGJ5IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFk
ZSwgdGhlIHBhZ2UgbWF5IGJlIGdvbmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlz
LApAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25v
c3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lCiAgICAgcGFnZS0+
bG9nRGlhZ25vc3RpY01lc3NhZ2UobWVzc2FnZSwgZGVzY3JpcHRpb24sIHNob3VsZFNhbXBsZSk7
CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRo
UmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBz
aG91bGRTYW1wbGUpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFJlc3VsdChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdl
YlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlz
IG51bGwtY2hlY2sgYmVjYXVzZSBieSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1h
ZGUsIHRoZSBwYWdlIG1heSBiZSBnb25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhp
cywKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0CiAgICAgcGFnZS0+
bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1
bHQsIHNob3VsZFNhbXBsZSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoVmFsdWUodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQg
c2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQor
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMs
IFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5
KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6
IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0
byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdvbmUuIFdlIHNob3VsZCByZWZhY3RvciB0
byBhdm9pZCB0aGlzLApAQCAtNzM2LDcgKzczNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lz
CiAgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0R3Jh
bmRmYXRoZXJlZChzZXNzaW9uSUQsIHJlc291cmNlRG9tYWluLCBpc0dyYW5kZmF0aGVyZWQpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9
IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAt
OTA4LDcgKzkwOCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bm90aWZ5UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkCiAgICAgV2ViUHJvY2Vzc1By
b3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6RGljdGlvbmFy
eTo6Y3JlYXRlKG1lc3NhZ2VCb2R5KS5wdHIoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6Y29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlvbihQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFjYW5TZW5kTWVzc2FnZSgpKSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCmluZGV4IDIwYTc5OThjNGRjMjRhYjE2NTZmMzkzODdmNTcwMGZhM2NlOWE2OGUuLjJiZWM2
OGZkODk3ZmE1OTkyM2YzMTllMzEwNDkyZjY5ODZmYzhhNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC04MSw4
ICs4MSw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFpbiA9
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9IHVp
bnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1lSUQg
PSB1aW50NjRfdDsKIAogICAgIGV4cGxpY2l0IE5ldHdvcmtQcm9jZXNzUHJveHkoV2ViUHJvY2Vz
c1Bvb2wmKTsKQEAgLTEzMSw3ICsxMjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcmV2YWxl
bnRSZXNvdXJjZUZvckRlYnVnTW9kZShQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VmVyeVBy
ZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNj
ZXNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiBkb21haW5zKT4mJik7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZp
cm0oUGFnZUlELCBGcmFtZUlELCBjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZyYW1lSUQs
IGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIHJlc2V0UGFyYW1ldGVyc1RvRGVmYXVs
dFZhbHVlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQs
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNz
aW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNDUsNyArMTQz
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9k
ZShQQUw6OlNlc3Npb25JRCwgYm9vbCBkZWJ1Z01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNv
cmRzUmVtb3ZhbChQQUw6OlNlc3Npb25JRCwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmKTsKICAgICB2b2lkIHJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBj
b21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBQYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBjb21taXR0ZWRDcm9z
c1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBOYXZpZ2F0
ZWRGcm9tRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldENyb3Nz
U2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhM
aW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9yVGVzdGluZyhQQUw6OlNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBib29sIGluY2x1ZGVIdHRwT25seUNvb2tp
ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yMDcsMTMgKzIwNSwxMyBAQCBw
cml2YXRlOgogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3
b3JrUHJvY2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsK
ICAgICB2b2lkIGRpZENyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKGNvbnN0IElQ
Qzo6QXR0YWNobWVudCYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOworICAgIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50
NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCB1aW50NjRf
dCBjaGFsbGVuZ2VJRCk7CiAgICAgdm9pZCBkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNh
bGxiYWNrSUQsIGNvbnN0IFdlYnNpdGVEYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRl
RGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNN
ZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwotICAgIHZvaWQgbG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBt
ZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIFdlYkNv
cmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAgIHZvaWQgbG9nRGlhZ25v
c3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNh
bnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwogICAgIHZvaWQgbG9nR2xvYmFsRGlh
Z25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJl
cywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KFBBTDo6U2Vzc2lvbklELCBjb25zdCBT
dHJpbmcmIGV2ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCBiZTk4ZTY2
NjMwZmFkNzkwNjEwOTIwY2VmODUyNzVkYzk3YWQxZjFkLi4yMmZmZmQxOTg4MWIyNjNlNTc0Njk3
YTk5YTQ5YjRjY2UzMjM2MTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC0y
Myw3ICsyMyw3IEBACiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2Vp
dmVyIHsKICAgICBEaWRDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhJUEM6OkF0
dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCiAKLSAgICBEaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlE
KQorICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCiAKICAgICBEaWRGZXRj
aFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVE
YXRhIHdlYnNpdGVEYXRhKQogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxi
YWNrSUQpCkBAIC0zNSw5ICszNSw5IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkg
TGVnYWN5UmVjZWl2ZXIgewogICAgIFNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xk
aW5nTG9ja2VkRmlsZXMpCiAKICAgICAjIERpYWdub3N0aWMgbWVzc2FnZXMgbG9nZ2luZwotICAg
IExvZ0RpYWdub3N0aWNNZXNzYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0
cmluZyBkZXNjcmlwdGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRT
YW1wbGUpCi0gICAgTG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJ
RCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBl
bnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFn
bm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBT
dHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1
cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBM
b2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0cmlu
ZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQorICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVz
Y3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSBzaG91bGRTYW1wbGUpCisgICAgTG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0
aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgZW51bTpib29s
IFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiAgICAgTG9nR2xvYmFsRGlhZ25v
c3RpY01lc3NhZ2VXaXRoVmFsdWUoU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJD
b3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKQEAgLTQ2LDcgKzQ2LDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nl
c3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCkKICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5G
b3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50UmVzb3VyY2Vz
LCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVu
c2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKQotICAgIFJlcXVlc3RTdG9y
YWdlQWNjZXNzQ29uZmlybSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3lu
YworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1
YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbikg
LT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYwogICAgIERlbGV0ZVdlYnNpdGVEYXRh
SW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgT3B0aW9uU2V0
PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRpb25zLCBWZWN0b3I8V2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpIC0+IChIYXNoU2V0PFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aE1hdGNoaW5nRGF0YVJlY29yZHMpIEFzeW5jCiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHkuY3BwCmluZGV4IGZhZTFmM2ZjYTg4ODcxOWJlN2Y2MjcyZDIwNTcy
MGJiODkwMTc3ZmUuLjJhYWZmMWVjMmE2NTQ5MGQ4ODU0Mzk5NmJmODEwMmMyZDQ5YzUwNDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKQEAgLTk3LDcgKzk3LDcg
QEAgdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnNob3coV2ViUGFnZVByb3h5KiB3
ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHRpdGwKIHsKICAgICB1aW50NjRfdCBnbG9iYWxOb3RpZmlj
YXRpb25JRCA9IGdlbmVyYXRlR2xvYmFsTm90aWZpY2F0aW9uSUQoKTsKICAgICBhdXRvIG5vdGlm
aWNhdGlvbiA9IFdlYk5vdGlmaWNhdGlvbjo6Y3JlYXRlKHRpdGxlLCBib2R5LCBpY29uVVJMLCB0
YWcsIGxhbmcsIGRpciwgb3JpZ2luU3RyaW5nLCBnbG9iYWxOb3RpZmljYXRpb25JRCk7Ci0gICAg
c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4gbm90aWZpY2F0aW9uSURQYWlyID0gc3RkOjpt
YWtlX3BhaXIod2ViUGFnZS0+cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRpb25JRCk7CisgICAgc3Rk
OjpwYWlyPFBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4gbm90aWZpY2F0aW9uSURQYWlyID0gc3Rk
OjptYWtlX3BhaXIod2ViUGFnZS0+cGFnZUlEKCksIHBhZ2VOb3RpZmljYXRpb25JRCk7CiAgICAg
bV9nbG9iYWxOb3RpZmljYXRpb25NYXAuc2V0KGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmlj
YXRpb25JRFBhaXIpOwogICAgIG1fbm90aWZpY2F0aW9ucy5zZXQobm90aWZpY2F0aW9uSURQYWly
LCBzdGQ6Om1ha2VfcGFpcihnbG9iYWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uLmNvcHlS
ZWYoKSkpOwogICAgIG1fcHJvdmlkZXItPnNob3coKndlYlBhZ2UsIG5vdGlmaWNhdGlvbi5nZXQo
KSk7CkBAIC0xMTksMTIgKzExOSwxMiBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94
eTo6ZGlkRGVzdHJveU5vdGlmaWNhdGlvbihXZWJQYWdlUHJveHkqIHdlYlBhZ2UsCiAgICAgfQog
fQogCi1zdGF0aWMgYm9vbCBwYWdlSURzTWF0Y2godWludDY0X3QgcGFnZUlELCB1aW50NjRfdCwg
dWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpCitzdGF0aWMg
Ym9vbCBwYWdlSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCwgUGFnZUlk
ZW50aWZpZXIgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYpCiB7CiAgICAg
cmV0dXJuIHBhZ2VJRCA9PSBkZXNpcmVkUGFnZUlEOwogfQogCi1zdGF0aWMgYm9vbCBwYWdlQW5k
Tm90aWZpY2F0aW9uSURzTWF0Y2godWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZp
Y2F0aW9uSUQsIHVpbnQ2NF90IGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4m
IGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQorc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNh
dGlvbklEc01hdGNoKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNh
dGlvbklELCBQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0
X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKIHsKICAgICByZXR1cm4gcGFnZUlEID09
IGRlc2lyZWRQYWdlSUQgJiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMuY29udGFpbnMocGFn
ZU5vdGlmaWNhdGlvbklEKTsKIH0KQEAgLTE0MSwxMyArMTQxLDEzIEBAIHZvaWQgV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlmaWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlLCBjb25zCiAKIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5OjpjbGVhck5vdGlm
aWNhdGlvbnMoV2ViUGFnZVByb3h5KiB3ZWJQYWdlLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBw
YWdlTm90aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiBmaWx0ZXJGdW5j
dGlvbikKIHsKLSAgICB1aW50NjRfdCB0YXJnZXRQYWdlSUQgPSB3ZWJQYWdlLT5wYWdlSUQoKTsK
KyAgICBhdXRvIHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOwogCiAgICAgVmVjdG9y
PHVpbnQ2NF90PiBnbG9iYWxOb3RpZmljYXRpb25JRHM7CiAgICAgZ2xvYmFsTm90aWZpY2F0aW9u
SURzLnJlc2VydmVDYXBhY2l0eShtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zaXplKCkpOwogCiAg
ICAgZm9yIChhdXRvIGl0ID0gbV9ub3RpZmljYXRpb25zLmJlZ2luKCksIGVuZCA9IG1fbm90aWZp
Y2F0aW9ucy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIHVpbnQ2NF90IHdlYlBh
Z2VJRCA9IGl0LT5rZXkuZmlyc3Q7CisgICAgICAgIGF1dG8gd2ViUGFnZUlEID0gaXQtPmtleS5m
aXJzdDsKICAgICAgICAgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklEID0gaXQtPmtleS5zZWNv
bmQ7CiAgICAgICAgIGlmICghZmlsdGVyRnVuY3Rpb24od2ViUGFnZUlELCBwYWdlTm90aWZpY2F0
aW9uSUQsIHRhcmdldFBhZ2VJRCwgcGFnZU5vdGlmaWNhdGlvbklEcykpCiAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eTo6cHJvdmlkZXJEaWRTaG93Tm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2JhbE5vdAogICAg
IGlmIChpdCA9PSBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgdWludDY0X3Qgd2ViUGFnZUlEID0gaXQtPnZhbHVlLmZpcnN0OworICAgIGF1dG8g
d2ViUGFnZUlEID0gaXQtPnZhbHVlLmZpcnN0OwogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9
IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh3ZWJQYWdlSUQpOwogICAgIGlmICghd2ViUGFnZSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9u
TWFuYWdlclByb3h5Ojpwcm92aWRlckRpZENsaWNrTm90aWZpY2F0aW9uKHVpbnQ2NF90IGdsb2Jh
bE5vCiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAg
ICByZXR1cm47CiAgICAgCi0gICAgdWludDY0X3Qgd2ViUGFnZUlEID0gaXQtPnZhbHVlLmZpcnN0
OworICAgIGF1dG8gd2ViUGFnZUlEID0gaXQtPnZhbHVlLmZpcnN0OwogICAgIFdlYlBhZ2VQcm94
eSogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh3ZWJQYWdlSUQpOwogICAgIGlm
ICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmgKaW5kZXggZjcyN2VkNDcyYzViZWZhNWEyM2YzZTA0NGUwZmQ0MTkwNzA0MDRlZi4u
MTE1NzgxZTQzMzNjODU2ODRmYmNhNWNhODQxNzY1NjQ0YThjNzE0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dFN1cHBsZW1lbnQuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkNsaWVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0hhc2guaD4KIApAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eShXZWJQcm9jZXNzUG9vbCop
OwogCi0gICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCB1aW50NjRfdCBkZXNpcmVk
UGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklE
cyk7CisgICAgdHlwZWRlZiBib29sICgqTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0
X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcyk7CiAgICAgdm9pZCBjbGVhck5vdGlmaWNh
dGlvbnMoV2ViUGFnZVByb3h5KiwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNh
dGlvbklEcywgTm90aWZpY2F0aW9uRmlsdGVyRnVuY3Rpb24pOwogCiAgICAgLy8gV2ViQ29udGV4
dFN1cHBsZW1lbnQKQEAgLTg4LDkgKzg5LDkgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6Ok5vdGlmaWNhdGlvblByb3ZpZGVyPiBtX3Byb3ZpZGVyOwogICAgIC8vIFBhaXIg
Y29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFuZCB0aGUgd2ViIHByb2Nlc3MncyBub3RpZmljYXRp
b24gSUQKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90
Pj4gbV9nbG9iYWxOb3RpZmljYXRpb25NYXA7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpw
YWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0
aW9uTWFwOwogICAgIC8vIEtleSBwYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhl
IHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElEOyB2YWx1ZSBwYWlyIGNvbXByaXNlZCBvZiBn
bG9iYWwgbm90aWZpY2F0aW9uIElELCBhbmQgbm90aWZpY2F0aW9uIG9iamVjdAotICAgIEhhc2hN
YXA8c3RkOjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVm
UHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBtX25vdGlmaWNhdGlvbnM7CisgICAgSGFzaE1hcDxzdGQ6
OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90Piwgc3RkOjpwYWlyPHVpbnQ2
NF90LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlz
aW9uYWxQYWdlUHJveHkuY3BwCmluZGV4IDQ1YTFmMGY1YjVjYjgwY2NjOWEwY2ZiYTE2MTNlNDRj
ODc0YTU2MDcuLjdkNTQ4YTUzMjFlZWNiZmM2NGJjMTRlOTE2ODgxZTk5MGM5NjkwZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAKQEAg
LTQ3LDYgKzQ3LDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOworCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoY2hhbm5lbCwgZm10LCAu
Li4pIFJFTEVBU0VfTE9HX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgY2hh
bm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJH
U19fKQogI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGNoYW5uZWwsIGZtdCwg
Li4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihtX3BhZ2UuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIGNoYW5uZWwsICIlcCAtIFByb3Zpc2lvbmFsUGFnZVByb3h5OjoiIGZtdCwgdGhpcywgIyNf
X1ZBX0FSR1NfXykKIApAQCAtNjEsNyArNjMsNyBAQCBQcm92aXNpb25hbFBhZ2VQcm94eTo6UHJv
dmlzaW9uYWxQYWdlUHJveHkoV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8V2ViUHJvY2Vzc1Bybwog
ICAgICwgbV9zdXNwZW5zaW9uVG9rZW4obV9wcm9jZXNzLT50aHJvdHRsZXIoKS5mb3JlZ3JvdW5k
QWN0aXZpdHlUb2tlbigpKQogI2VuZGlmCiB7Ci0gICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJQcm92aXNpb25hbFBhZ2VQcm94eTogcGFnZUlEID0gJSIg
UFJJdTY0ICIgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0ICIgc3VzcGVuZGVkUGFnZTogJXAiLCBt
X3BhZ2UucGFnZUlEKCksIG5hdmlnYXRpb25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CisgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJQcm92aXNpb25h
bFBhZ2VQcm94eTogcGFnZUlEID0gJSIgUFJJdTY0ICIgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0
ICIgc3VzcGVuZGVkUGFnZTogJXAiLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgbmF2aWdh
dGlvbklELCBzdXNwZW5kZWRQYWdlLmdldCgpKTsKIAogICAgIG1fcHJvY2Vzcy0+YWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlLnBhZ2VJRCgpLCAqdGhpcyk7CiAgICAgbV9wcm9jZXNzLT5hZGRQcm92aXNpb25hbFBh
Z2VQcm94eSgqdGhpcyk7CkBAIC0xMTcsNyArMTE5LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQ
cm94eTo6Y29ubmVjdGlvbldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIAog
dm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6cHJvY2Vzc0RpZFRlcm1pbmF0ZSgpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJwcm9jZXNzRGlk
VGVybWluYXRlOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVM
RUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJwcm9jZXNzRGlkVGVy
bWluYXRlOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsK
ICAgICBtX3BhZ2UucHJvdmlzaW9uYWxQcm9jZXNzRGlkVGVybWluYXRlKCk7CiB9CiAKQEAgLTEz
Miw3ICsxMzQsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpjYW5jZWwoKQogICAgIGlm
IChtX3Byb3Zpc2lvbmFsTG9hZFVSTC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2VsOiBTaW11bGF0
aW5nIGEgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJjYW5jZWw6IFNpbXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWUgZm9yIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkp
OwogICAgIEFTU0VSVChtX21haW5GcmFtZSk7CiAgICAgYXV0byBlcnJvciA9IFdlYktpdDo6Y2Fu
Y2VsbGVkRXJyb3IobV9yZXF1ZXN0KTsKICAgICBlcnJvci5zZXRUeXBlKFdlYkNvcmU6OlJlc291
cmNlRXJyb3I6OlR5cGU6OkNhbmNlbGxhdGlvbik7CkBAIC0xNTEsMTQgKzE1MywxNCBAQCB2b2lk
IFByb3Zpc2lvbmFsUGFnZVByb3h5Ojppbml0aWFsaXplV2ViUGFnZSgpCiAKIHZvaWQgUHJvdmlz
aW9uYWxQYWdlUHJveHk6OmxvYWREYXRhKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMp
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkRGF0
YTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6IHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgbV9wYWdlLmxvYWREYXRhV2l0
aE5hdmlnYXRpb25TaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgbmF2aWdhdGlvbiwgZGF0YSwg
TUlNRVR5cGUsIGVuY29kaW5nLCBiYXNlVVJMLCB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJl
YXRBc0NvbnRpbnVpbmdMb2FkOjpZZXMsIFdURk1vdmUod2Vic2l0ZVBvbGljaWVzKSk7CiB9CiAK
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYg
bmF2aWdhdGlvbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2ViQ29yZTo6
U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
d2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAibG9hZFJlcXVlc3Q6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgp
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1
ZXN0OiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAog
ICAgIC8vIElmIHRoaXMgaXMgYSBjbGllbnQtc2lkZSByZWRpcmVjdCBjb250aW51aW5nIGluIGEg
bmV3IHByb2Nlc3MsIHRoZW4gdGhlIG5ldyBwcm9jZXNzIHdpbGwgb3ZlcndyaXRlIHRoZSBmcm9t
SXRlbSdzIFVSTC4gSW4gdGhpcyBjYXNlLAogICAgIC8vIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdl
IHVwZGF0ZSBmcm9tSXRlbSdzIHByb2Nlc3NJZGVudGlmaWVyIGFzIHdlIHdhbnQgZnV0dXJlIG5h
dmlnYXRpb25zIHRvIHRoaXMgQmFja0ZvcndhcmQgaXRlbSB0byBoYXBwZW4gaW4gdGhlCkBAIC0x
NzEsNyArMTczLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJ
OjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXMKIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRp
b24sIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0sIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3
YXBwaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2Uu
cGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBhdXRvIGl0ZW1TdGF0ZXMgPSBtX3BhZ2UuYmFj
a0ZvcndhcmRMaXN0KCkuZmlsdGVyZWRJdGVtU3RhdGVzKFt0aGlzLCB0YXJnZXRJdGVtID0gJml0
ZW1dKGF1dG8mIGl0ZW0pIHsKICAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBpdGVtLnN1c3BlbmRl
ZFBhZ2UoKSkgewpAQCAtMTk2LDcgKzE5OCw3IEBAIGlubGluZSBib29sIFByb3Zpc2lvbmFsUGFn
ZVByb3h5Ojp2YWxpZGF0ZUlucHV0KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IE9wdGlvbmFsCiAK
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZENyZWF0ZU1haW5GcmFtZSh1aW50NjRfdCBm
cmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAi
ZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZU1haW5GcmFtZTogcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBm
cmFtZUlEKTsKICAgICBBU1NFUlQoIW1fbWFpbkZyYW1lKTsKIAogICAgIG1fbWFpbkZyYW1lID0g
V2ViRnJhbWVQcm94eTo6Y3JlYXRlKG1fcGFnZSwgZnJhbWVJRCk7CkBAIC0yMzQsNyArMjM2LDcg
QEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW4KICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJ
RCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9u
SUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUlu
dDY0KCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxM
b2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lvbmFsTG9hZFVSTCA9IHVybDsKIApAQCAt
MjU0LDcgKzI1Niw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zCiAgICAgaWYgKCF2YWxpZGF0
ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zp
c2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJ
RCwgbmF2aWdhdGlvbklEKTsKKyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0
LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKICAg
ICBBU1NFUlQoIW1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzTnVsbCgpKTsKICAgICBtX3Byb3Zpc2lv
bmFsTG9hZFVSTCA9IHsgfTsKIApAQCAtMjcwLDcgKzI3Miw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRpZENvbW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpCiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBw
aW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQo
KSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3Bh
Z2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKICAgICBtX3By
b3Zpc2lvbmFsTG9hZFVSTCA9IHsgfTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNl
aXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFn
ZS5wYWdlSUQoKSk7CiAKQEAgLTI5NSw3ICsyOTcsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVBy
b3h5OjpkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bgogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVy
IGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYgb3JpZ2luYWxSZXF1ZXN0LAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZy
YW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYm
IHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25z
ZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogewogICAg
IGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQpAQCAtMzQxLDcgKzM0
Myw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmJhY2tGb3J3YXJkR29Ub0l0ZW0oY29u
c3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdl
UHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVy
LAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90
IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAg
ICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJl
cXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwK
ICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCmlu
ZGV4IDY0NTZjMWY5MTZkNTk3NTUwNmMxNTI3OTRhZjJlNmI2NjhjMGJmNmMuLjdkMmYzOTAyMzFh
ZWFiMzcwYzc3ZmMxYWYwMmNlNGVkNTI1YTVkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaApAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1l
SW5mb0RhdGEmJiwKLSAgICAgICAgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAg
ICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAog
ICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29u
c3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luRGF0YSYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwKICAgICAgICAgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJik7CkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0VVJMU2No
ZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmKTsKICAgICB2b2lkIGJhY2tGb3J3YXJk
R29Ub0l0ZW0oY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmKTsKICAgICB2
b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5h
dGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVl
c3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRl
bGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICB2b2lkIGRpZFJlcXVlc3RQ
YXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1t
CmluZGV4IDA1NTljOTg3NGJkYzMzNWNlYThhZDRhODc3YjJhYzI5NzA4MDVmMjYuLjViMDJkZGIy
NDg5ZmUzYjk3MzE2NDFlZGIzYmZiMzcwMzQ2NTVhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9SZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tCkBAIC0xMTUsNyArMTE1LDcgQEAgUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eShXZWJQYWdlUHJveHkmIHcKICAgICBJT1N1cmZhY2VQb29sOjpzaGFyZWRQb29sKCkuc2V0UG9v
bFNpemUoMCk7CiAjZW5kaWYKIAotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiAKICAgICBpZiAobV93
ZWJQYWdlUHJveHkucHJlZmVyZW5jZXMoKS50aWxlZFNjcm9sbGluZ0luZGljYXRvclZpc2libGUo
KSkKICAgICAgICAgaW5pdGlhbGl6ZURlYnVnSW5kaWNhdG9yKCk7CkBAIC0xMjQsNyArMTI0LDcg
QEAgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWFQcm94eShXZWJQYWdlUHJveHkmIHcKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5KCkKIHsKICAgICBtX2NhbGxiYWNr
cy5pbnZhbGlkYXRlKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok93bmVyV2FzSW52YWxpZGF0ZWQpOwot
ICAgIHByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgIHByb2Nlc3MoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2Fn
ZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pZGVudGlmaWVyKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgW21fZGlz
cGxheUxpbmtIYW5kbGVyIGludmFsaWRhdGVdOwpAQCAtNDYzLDcgKzQ2Myw3IEBAIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6d2FpdEZvckRpZFVwZGF0ZUFjdGl2aXR5U3Rh
dGUoQWN0aXZpdHlTdGF0CiAgICAgfSgpOwogCiAgICAgYXV0byBzdGFydFRpbWUgPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKLSAgICB3aGlsZSAocHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZv
ckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHk6OkNvbW1pdExheWVyVHJlZT4obV9pZGVudGlmaWVyLnRvVUludDY0KCksIGFjdGl2
aXR5U3RhdGVVcGRhdGVUaW1lb3V0IC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3RhcnRUaW1l
KSwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2
ZXMpKSB7CisgICAgd2hpbGUgKHByb2Nlc3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNw
YXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
OjpDb21taXRMYXllclRyZWU+KG1faWRlbnRpZmllciwgYWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVv
dXQgLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFydFRpbWUpLCBJUEM6OldhaXRGb3JPcHRp
b246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdlQXJyaXZlcykpIHsKICAgICAgICAgaWYg
KGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCA9PSBBY3Rpdml0eVN0YXRlQ2hhbmdlQXN5bmNocm9ub3Vz
IHx8IGFjdGl2aXR5U3RhdGVDaGFuZ2VJRCA8PSBtX2FjdGl2aXR5U3RhdGVDaGFuZ2VJRCkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDVhMTRmYmU0ZGNkNGIzOGM3
YTBiZmQ1YzJmNzBhMDZjNWM1NzVmODYuLmIyZjc3MjlmZDM5MzVmNzJlMWJjOTExNWEzMGExOGY2
NGUzOWZkMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgU2VydmljZVdvcmtl
clByb2Nlc3NQcm94eTo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlCiAgICAgc2VuZChNZXNzYWdlczo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OlVwZGF0ZVByZWZlcmVuY2VzU3RvcmUgeyBzdG9yZSB9LCAwKTsKIH0KIAotdm9pZCBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eT4mJiBjaGFsbGVuZ2UpCit2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmIGNoYWxs
ZW5nZSkKIHsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKICAgICBVTlVTRURfUEFSQU0oZnJh
bWVJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggOTMyNDVmMGRjNzZmMjY1NzU3ZWMyYmZlNzE2M2U5ZWRhYWU5YzBm
MC4uZTkzNjVhZmFjNGY0N2Q3ZmQ3NDdmOTg5ODNhZDk5OTBlOGFiOTc1NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuaApAQCAt
NDEsMTQgKzQxLDE0IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGhhc1JlZ2lzdGVyZWRT
ZXJ2aWNlV29ya2Vycyhjb25zdCBTdHJpbmcmIHNlcnZpY2VXb3JrZXJEaXJlY3RvcnkpOwogCi0g
ICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7
CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5PiYmKTsKIAogICAgIHZvaWQgc3RhcnQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYs
IE9wdGlvbmFsPFBBTDo6U2Vzc2lvbklEPiBpbml0aWFsU2Vzc2lvbklEKTsKICAgICB2b2lkIHNl
dFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzU3Rv
cmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKCkgeyByZXR1cm4gbV9yZWdpc3RyYWJs
ZURvbWFpbjsgfQotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc2Vydmlj
ZVdvcmtlclBhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNv
bnN0IHsgcmV0dXJuIG1fc2VydmljZVdvcmtlclBhZ2VJRDsgfQogCiBwcml2YXRlOgogICAgIC8v
IEF1eGlsaWFyeVByb2Nlc3NQcm94eQpAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogICAgIFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHkoV2ViUHJvY2Vzc1Bvb2wmLCBjb25zdCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiYsIFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIG1fcmVnaXN0cmFibGVEb21haW47Ci0gICAgdWludDY0X3QgbV9zZXJ2
aWNlV29ya2VyUGFnZUlEIHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fc2Vy
dmljZVdvcmtlclBhZ2VJRDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKaW5kZXggMTM0NmZjYzA1
YzVhMjljZGIwODZmNzJlZjQ5Njc4MmNiMmIwMDVhZS4uZjZkM2I1MzZkZjhhYWIxOTdkOTExZWQx
NGQyZWE0MGZlZmYyZTFkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3Vz
cGVuZGVkUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5k
ZWRQYWdlUHJveHkuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBTdXNwZW5kZWRQYWdlUHJv
eHk6OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LAogCiBjb25zdCBjaGFyKiBTdXNwZW5kZWRQYWdlUHJveHk6OmxvZ2dpbmdTdHJpbmcoKSBjb25z
dAogewotICAgIHJldHVybiBkZWJ1Z1N0cmluZygiKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8
dWludHB0cl90Pih0aGlzKSksICIgcGFnZSBJRCAiLCBtX3BhZ2UucGFnZUlEKCksICIsIG1fc3Vz
cGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX3N1c3BlbnNpb25TdGF0ZSks
ICcpJyk7CisgICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoMHgiLCBoZXgocmVpbnRlcnByZXRfY2Fz
dDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBwYWdlIElEICIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2
NCgpLCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9zdXNw
ZW5zaW9uU3RhdGUpLCAnKScpOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5LmNwcAppbmRleCA5NzExYjIzMzcyMTU4NzkxMTZjM2RkOGI0NjZlZjU1ODVh
ZTk4NTgyLi44MzRkYjdhZTA3OTJhY2I1NDU5MzgwMDgwNmM5MmIyZmZhNWNjMzExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCkBAIC00OSw2ICs0OSw4IEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogc3RhdGlj
IEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciwgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHkqPiYgd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGllcygpCiB7CiAg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8VXNlckNvbnRlbnRDb250cm9sbGVySWRl
bnRpZmllciwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPj4gcHJveGllczsKQEAgLTcz
LDcgKzc1LDcgQEAgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6On5XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eSgpCiB7CiAgICAgd2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveGll
cygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwogICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJv
Y2Vzc2VzKSB7Ci0gICAgICAgIHByb2Nlc3MtPnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CiAgICAgICAgIHByb2Nlc3MtPmRpZERlc3Ry
b3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgqdGhpcyk7CiAgICAgfQogI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC04NSw3ICs4Nyw3IEBAIFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5Ojp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQogdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdl
YlByb2Nlc3NQcm94eSwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsK
ICAgICBpZiAobV9wcm9jZXNzZXMuYWRkKCZ3ZWJQcm9jZXNzUHJveHkpLmlzTmV3RW50cnkpCi0g
ICAgICAgIHdlYlByb2Nlc3NQcm94eS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZp
ZXIoKS50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgICAgIHdlYlByb2Nlc3NQcm94eS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNz
YWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSwgKnRoaXMpOwogCiAgICAgQVNTRVJUKHBh
cmFtZXRlcnMudXNlckNvbnRlbnRXb3JsZHMuaXNFbXB0eSgpKTsKICAgICBmb3IgKGNvbnN0IGF1
dG8mIHdvcmxkIDogbV91c2VyQ29udGVudFdvcmxkcykKQEAgLTExNSw3ICsxMTcsNyBAQCB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVQcm9jZXNzKFdlYlByb2Nlc3NQ
cm94eSYgd2ViUHJvY2Vzc1BybwogICAgIEFTU0VSVChtX3Byb2Nlc3Nlcy5jb250YWlucygmd2Vi
UHJvY2Vzc1Byb3h5KSk7CiAKICAgICBtX3Byb2Nlc3Nlcy5yZW1vdmUoJndlYlByb2Nlc3NQcm94
eSk7Ci0gICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCkpOworICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVNZXNzYWdl
UmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdv
cmxkJiB3b3JsZCkKQEAgLTEyNiw3ICsxMjgsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZAog
ICAgIGF1dG8gYWRkUmVzdWx0ID0gbV91c2VyQ29udGVudFdvcmxkcy5hZGQoJndvcmxkKTsKICAg
ICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgZm9yIChXZWJQcm9jZXNzUHJv
eHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNvbnRlbnRXb3JsZHMoeyBz
dGQ6Om1ha2VfcGFpcih3b3JsZC5pZGVudGlmaWVyKCksIHdvcmxkLm5hbWUoKSkgfSksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlckNvbnRlbnRXb3JsZHMoeyBzdGQ6Om1h
a2VfcGFpcih3b3JsZC5pZGVudGlmaWVyKCksIHdvcmxkLm5hbWUoKSkgfSksIGlkZW50aWZpZXIo
KSk7CiAgICAgfQogfQogCkBAIC0xNTAsNyArMTUyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoQVBJOjpVc2VyQ29udGVu
dFcKIHsKICAgICBpZiAoc2hvdWxkU2VuZFJlbW92ZVVzZXJDb250ZW50V29ybGRzTWVzc2FnZSh3
b3JsZCwgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpKSB7CiAgICAgICAgIGZvciAoV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRz
KHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlm
aWVyKCkpOwogICAgIH0KIH0KIApAQCAtMTYzLDcgKzE2NSw3IEBAIHZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEhhc2hDb3VudGVk
U2V0PFJlCiAgICAgfQogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3By
b2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1JlbW92ZSksIGlkZW50
aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh3b3JsZHNUb1Jl
bW92ZSksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBJbmplY3RV
c2VyU2NyaXB0SW1tZWRpYXRlbHkgaW1tZWRpYXRlbHkpCkBAIC0xNzUsNyArMTc3LDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJT
Y3JpcHQmIHVzZXJTY3JpcHQsIEkKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLmFwcGVu
ZCgmdXNlclNjcmlwdCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRzKHsgeyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwg
d29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlwdC51c2VyU2NyaXB0KCkgfSB9LCBpbW1lZGlh
dGVseSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsgdXNl
clNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQudXNl
clNjcmlwdCgpIH0gfSwgaW1tZWRpYXRlbHkpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNj
cmlwdCYgdXNlclNjcmlwdCkKQEAgLTE4Myw3ICsxODUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNj
cmlwdAogICAgIFJlZjxBUEk6OlVzZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclNjcmlwdC51
c2VyQ29udGVudFdvcmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNl
clNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
VXNlclNjcmlwdCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSks
IGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygpLnJlbW92ZUFs
bCgmdXNlclNjcmlwdCk7CiAKQEAgLTE5Myw3ICsxOTUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU2NyaXB0KEFQSTo6VXNlclNjcmlwdCYgdXNlclNj
cmlwdAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNj
cmlwdHMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHsg
d29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3Zl
QWxsVXNlclNjcmlwdHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAK
ICAgICB1bnNpZ25lZCB1c2VyU2NyaXB0c1JlbW92ZWQgPSBtX3VzZXJTY3JpcHRzLT5yZW1vdmVB
bGxPZlR5cGVNYXRjaGluZzxBUEk6OlVzZXJTY3JpcHQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU2Ny
aXB0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclNjcmlwdC0+dXNlckNvbnRlbnRXb3JsZCgpID09
ICZ3b3JsZDsKQEAgLTIxNCw3ICsyMTYsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVBbGxVc2VyU2NyaXB0cygpCiAgICAgICAgIHdvcmxkSWRlbnRpZmllcnMu
dW5jaGVja2VkQXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigpKTsKIAogICAg
IGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxs
VXNlclNjcmlwdHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsK
IAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAtMjMwLDcgKzIz
Miw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTdHlsZVNo
ZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVs
ZW1lbnRzKCkuYXBwZW5kKCZ1c2VyU3R5bGVTaGVldCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQ
cm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IHsgdXNl
clN0eWxlU2hlZXQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVT
aGVldC51c2VyU3R5bGVTaGVldCgpIH0gfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpB
ZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSwgd29ybGQt
PmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQudXNlclN0eWxlU2hlZXQoKSB9IH0pLCBpZGVu
dGlmaWVyKCkpOwogfQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyU3R5bGVTaGVldCkKQEAg
LTIzOCw3ICsyNDAsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1v
dmVVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1cwogICAgIFJlZjxBUEk6OlVz
ZXJDb250ZW50V29ybGQ+IHdvcmxkID0gdXNlclN0eWxlU2hlZXQudXNlckNvbnRlbnRXb3JsZCgp
OwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVVc2VyU3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC5p
ZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclN0eWxl
U2hlZXQod29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpKSwg
aWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLnJlbW92
ZUFsbCgmdXNlclN0eWxlU2hlZXQpOwogCkBAIC0yNDgsNyArMjUwLDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5
bGVTaGVldCYgdXMKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZv
ciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNl
clN0eWxlU2hlZXRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50
NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKHsgd29ybGQuaWRlbnRpZmllcigpIH0p
LCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgdXNlclN0eWxlU2hlZXRzUmVtb3ZlZCA9
IG1fdXNlclN0eWxlU2hlZXRzLT5yZW1vdmVBbGxPZlR5cGVNYXRjaGluZzxBUEk6OlVzZXJTdHls
ZVNoZWV0PihbJl0oY29uc3QgYXV0byYgdXNlclN0eWxlU2hlZXQpIHsKICAgICAgICAgcmV0dXJu
ICZ1c2VyU3R5bGVTaGVldC0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZDsKQEAgLTI2OSw3
ICsyNzEsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU3R5bGVTaGVldHMoKQogICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVu
ZCh3b3JsZENvdW50UGFpci5rZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0
cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFs
bFVzZXJTdHlsZVNoZWV0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpKTsKIAogICAg
IG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmNsZWFyKCk7CiAKQEAgLTI5MCw3ICsyOTIs
NyBAQCBib29sIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0TWVz
c2FnZUhhbmRsZXIoV2ViU2NyaXB0TWVzc2FnZQogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJz
LmFkZChoYW5kbGVyLmlkZW50aWZpZXIoKSwgJmhhbmRsZXIpOwogCiAgICAgZm9yIChXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhh
bmRsZXJzKHsgeyBoYW5kbGVyLmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgaGFu
ZGxlci5uYW1lKCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcnMoeyB7IGhhbmRsZXIuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRp
ZmllcigpLCBoYW5kbGVyLm5hbWUoKSB9IH0pLCBpZGVudGlmaWVyKCkpOwogICAgIAogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtMzAwLDcgKzMwMiw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5n
CiAgICAgZm9yIChhdXRvIGl0ID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuYmVnaW4oKSwgZW5k
ID0gbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAg
ICAgICBpZiAoaXQtPnZhbHVlLT5uYW1lKCkgPT0gbmFtZSAmJiAmaXQtPnZhbHVlLT51c2VyQ29u
dGVudFdvcmxkKCkgPT0gJndvcmxkKSB7CiAgICAgICAgICAgICBmb3IgKFdlYlByb2Nlc3NQcm94
eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQtPnZhbHVlLT5pZGVudGlmaWVyKCkpLCBp
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXIod29ybGQuaWRlbnRpZmllcigpLCBpdC0+dmFsdWUtPmlkZW50aWZpZXIoKSksIGlk
ZW50aWZpZXIoKSk7CiAKICAgICAgICAgICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92
ZShpdCk7CiAKQEAgLTMxMyw3ICszMTUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhhbmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZwogdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5k
bGVycyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3Nh
Z2VIYW5kbGVycyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlm
aWVyKCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1bnNpZ25lZCBudW1iZXJSZW1vdmVkID0g
MDsKICAgICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmVJZihbJl0oYXV0byYgZW50cnkp
IHsKQEAgLTMyNyw3ICszMjksNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjpyZW1vdmVBbGxVc2VyTWVzc2FnZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbgogICAgIHJlbW92
ZVVzZXJDb250ZW50V29ybGRVc2VzKHdvcmxkLCBudW1iZXJSZW1vdmVkKTsKIH0KIAotdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiBjb25uZWN0aW9uLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZy
YW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJl
ZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHk6OmRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUGFnZUlkZW50
aWZpZXIgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRf
dCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVu
Y2UpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMzUxLDcgKzM1Myw3IEBAIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZENvbnRlbnRSdWxlTGlzdChBUEk6OkNvbnRlbnRS
dWxlTGlzdCYgY29uCiAgICAgYXV0byBwYWlyID0gc3RkOjptYWtlX3BhaXIoY29udGVudFJ1bGVM
aXN0Lm5hbWUoKSwgY29udGVudFJ1bGVMaXN0LmNvbXBpbGVkUnVsZUxpc3QoKS5kYXRhKCkpOwog
CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1bGVM
aXN0cyh7IHBhaXIgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vz
cy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50UnVs
ZUxpc3RzKHsgcGFpciB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIGZvciAoYXV0byogcHJvY2Vz
cyA6IG1fbmV0d29ya1Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMgeyBpZGVu
dGlmaWVyKCksIHsgcGFpciB9IH0sIDApOwpAQCAtMzYyLDcgKzM2NCw3IEBAIHZvaWQgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZUNvbnRlbnRSdWxlTGlzdChjb25zdCBTdHJp
bmcmIG5hbWUpCiAgICAgbV9jb250ZW50UnVsZUxpc3RzLnJlbW92ZShuYW1lKTsKIAogICAgIGZv
ciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdChu
YW1lKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdChu
YW1lKSwgaWRlbnRpZmllcigpKTsKIAogICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fbmV0d29y
a1Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6TmV0d29ya0NvbnRl
bnRSdWxlTGlzdE1hbmFnZXI6OlJlbW92ZUNvbnRlbnRSdWxlTGlzdCB7IGlkZW50aWZpZXIoKSwg
bmFtZSB9LCAwKTsKQEAgLTM3Myw3ICszNzUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjpyZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCkKICAgICBtX2NvbnRlbnRSdWxl
TGlzdHMuY2xlYXIoKTsKIAogICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQot
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOwor
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKSwgaWRlbnRpZmllcigpKTsKIAogICAgIGZvciAo
YXV0byogcHJvY2VzcyA6IG1fbmV0d29ya1Byb2Nlc3NlcykKICAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6TmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI6OlJlbW92ZUFsbENvbnRl
bnRSdWxlTGlzdHMgeyBpZGVudGlmaWVyKCkgfSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaAppbmRleCA2MjMzMDExMTZlZDFkNjU0ZjJhMzQ4OWE3ZjBmNjI0Nzc2NjEy
NGFlLi4wZWQzNmE1OWNjM2E3MWQ5ZjIxOWUxOTQ4NDI5YzhhNzkxZDBjNjI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRl
ICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdl
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTExMCw3ICsxMTEs
NyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyLgogICAgIHZvaWQgZGlk
UmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IEZyYW1lSW5mb0RhdGEm
LCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsK
IAogICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250ZW50V29ybGQm
KTsKICAgICB2b2lkIHJlbW92ZVVzZXJDb250ZW50V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYsIHVuc2lnbmVkIG51bWJlck9mVXNlc1RvUmVtb3ZlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggODE3MTQzNTFmY2U3
NzVkYWJjNDcxOGQ0M2Y4OGUzNmY1ZjUwZmVlNC4uMjVhNGUyOTEyNzRlZTAzNjlmZGQxNmVlMDA1
YzJjOTVmOWZhZjI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI0LDUgKzI0LDUgQEAKICAqLwogCiBtZXNzYWdlcyAtPiBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSB7Ci1EaWRQb3N0TWVzc2FnZSh1aW50NjRfdCBw
YWdlSUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0
X3QgbWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRzQ29u
bmVjdGlvbgorRGlkUG9zdE1lc3NhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBz
dHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3Nh
Z2VIYW5kbGVySUQsIElQQzo6RGF0YVJlZmVyZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5lY3Rpb24K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
Y3BwCmluZGV4IDI0ODE4MmQ4MDkyMWZlMWExOWU1YzYzNGIxNmEyNGM3YzdkMTc2ZWYuLjFlOTFh
YmI2ZWZkZDBjZDU5NmY5NGRhY2U4ZjcyNjhlMzE4NGE1Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcApAQCAtNjYsMTAgKzY2LDEw
IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBtaW5pbXVtU2Nyb2xsRXZlbnRSYXRpb0ZvclN3aXBlID0g
MC41Owogc3RhdGljIGNvbnN0IGZsb2F0IHN3aXBlU25hcHNob3RSZW1vdmFsUmVuZGVyVHJlZVNp
emVUYXJnZXRGcmFjdGlvbiA9IDAuNTsKICNlbmRpZgogCi1zdGF0aWMgSGFzaE1hcDx1aW50NjRf
dCwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4mIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQ
YWdlcygpCitzdGF0aWMgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVmlld0dlc3R1cmVDb250cm9s
bGVyKj4mIHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpCiB7CiAgICAgLy8gVGhl
IGtleSBpbiB0aGlzIG1hcCBpcyB0aGUgYXNzb2NpYXRlZCBwYWdlIElELgotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxIYXNoTWFwPHVpbnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4g
dmlld0dlc3R1cmVDb250cm9sbGVyczsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1h
cDxQYWdlSWRlbnRpZmllciwgVmlld0dlc3R1cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJlQ29u
dHJvbGxlcnM7CiAgICAgcmV0dXJuIHZpZXdHZXN0dXJlQ29udHJvbGxlcnMuZ2V0KCk7CiB9CiAK
QEAgLTExNiw3ICsxMTYsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29ubmVjdFRv
UHJvY2VzcygpCiAgICAgbV9pc0Nvbm5lY3RlZFRvUHJvY2VzcyA9IHRydWU7CiB9CiAKLVZpZXdH
ZXN0dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb250cm9sbGVyRm9yR2Vz
dHVyZSh1aW50NjRfdCBwYWdlSUQsIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6R2VzdHVyZUlEIGdl
c3R1cmVJRCkKK1ZpZXdHZXN0dXJlQ29udHJvbGxlciogVmlld0dlc3R1cmVDb250cm9sbGVyOjpj
b250cm9sbGVyRm9yR2VzdHVyZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6R2VzdHVyZUlEIGdlc3R1cmVJRCkKIHsKICAgICBhdXRvIGdlc3R1cmVDb250cm9s
bGVySXRlciA9IHZpZXdHZXN0dXJlQ29udHJvbGxlcnNGb3JBbGxQYWdlcygpLmZpbmQocGFnZUlE
KTsKICAgICBpZiAoZ2VzdHVyZUNvbnRyb2xsZXJJdGVyID09IHZpZXdHZXN0dXJlQ29udHJvbGxl
cnNGb3JBbGxQYWdlcygpLmVuZCgpKQpAQCAtNTQ3LDcgKzU0Nyw3IEBAIHZvaWQgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpmb3JjZVJlcGFpbnRJZk5lZWRlZCgpCiAKICAgICBtX2hhc091dHN0YW5k
aW5nUmVwYWludFJlcXVlc3QgPSB0cnVlOwogCi0gICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQ
YWdlUHJveHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdl
SUQoKTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50R2VzdHVyZUlEOwogICAg
IG1fd2ViUGFnZVByb3h5LmZvcmNlUmVwYWludChWb2lkQ2FsbGJhY2s6OmNyZWF0ZShbcGFnZUlE
LCBnZXN0dXJlSURdIChDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CiAgICAgICAgIGlmIChh
dXRvIGdlc3R1cmVDb250cm9sbGVyID0gY29udHJvbGxlckZvckdlc3R1cmUocGFnZUlELCBnZXN0
dXJlSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xs
ZXIuaAppbmRleCA0MzFjMjc2NmQwODI2MWU1MmNlZmIyMDZkNmNkMjk5YjEyY2YxMzk0Li5jMTY3
MGQzYTk0Y2VmM2Q5MDZhZjQ5NDljZDU0MTM2MDQ5NDc2MzBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC0x
NzUsNyArMTc2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlci4KICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IG92ZXJyaWRlOwogCi0gICAgc3RhdGljIFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxl
ckZvckdlc3R1cmUodWludDY0X3QgcGFnZUlELCBHZXN0dXJlSUQpOworICAgIHN0YXRpYyBWaWV3
R2VzdHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JHZXN0dXJlKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBHZXN0dXJlSUQpOwogCiAgICAgc3RhdGljIEdlc3R1cmVJRCB0YWtlTmV4dEdlc3R1
cmVJRCgpOwogICAgIHZvaWQgd2lsbEJlZ2luR2VzdHVyZShWaWV3R2VzdHVyZVR5cGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNwcAppbmRleCBmMmU3Yjkz
NDA1NzY2ZWE1ZThjNzVlYWJmNWFjNmE0ZmQ0YzA0ZGVlLi45OTFkYzJmY2ZmOWQ0M2M1ZTA4NzY4
NjRjYzI4MDQzOGQ5ZTM0YTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9W
aXNpdGVkTGlua1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVk
TGlua1N0b3JlLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgVmlzaXRlZExpbmtTdG9yZTo6
d2ViUHJvY2Vzc0RpZENsb3NlQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBJUEM6OkNvbm5l
CiAgICAgLy8gRklYTUU6IEltcGxlbWVudC4KIH0KIAotdm9pZCBWaXNpdGVkTGlua1N0b3JlOjph
ZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1aW50NjRfdCBwYWdlSUQsIFNoYXJlZFN0cmluZ0hh
c2ggbGlua0hhc2gpCit2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZy
b21QYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU2hhcmVkU3RyaW5nSGFzaCBsaW5rSGFzaCkK
IHsKICAgICBpZiAoYXV0byogd2ViUGFnZVByb3h5ID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCkpIHsKICAgICAgICAgaWYgKCF3ZWJQYWdlUHJveHktPmFkZHNWaXNpdGVkTGlua3Mo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaAppbmRleCAwNmYy
MGJhOTFjYmRiYmEyNjc5NWYzOGM2MGM4MWI2OGQ4MTc1OWE1Li4wMmI0OWJhYzU1ZTI0ODZiZDNl
ODlhOWVlODhlYTg4MzM2ZjFlZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9WaXNpdGVkTGlua1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRl
ZExpbmtTdG9yZS5oCkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRJbnZh
bGlkYXRlU2hhcmVkTWVtb3J5KCkgZmluYWw7CiAgICAgdm9pZCBkaWRVcGRhdGVTaGFyZWRTdHJp
bmdIYXNoZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2g+JiBhZGRlZEhh
c2hlcywgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2g+JiByZW1vdmVkSGFz
aGVzKSBmaW5hbDsKIAotICAgIHZvaWQgYWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UodWludDY0
X3QgcGFnZUlELCBXZWJDb3JlOjpTaGFyZWRTdHJpbmdIYXNoKTsKKyAgICB2b2lkIGFkZFZpc2l0
ZWRMaW5rSGFzaEZyb21QYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTaGFy
ZWRTdHJpbmdIYXNoKTsKIAogICAgIHZvaWQgc2VuZFN0b3JlSGFuZGxlVG9Qcm9jZXNzKFdlYlBy
b2Nlc3NQcm94eSYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNp
dGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRl
ZExpbmtTdG9yZS5tZXNzYWdlcy5pbgppbmRleCBlNzg2MmUzNjViMGZmZTEzOTE0NjNjMDA3MDYx
ZDdlN2Y4ZjhkNTRiLi4yZTY2YzQyODA4ZWJiN2ViY2YzOTMxOWIxMDg2YTkyN2YzMzEzNjFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVz
c2FnZXMuaW4KQEAgLTIxLDUgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4g
VmlzaXRlZExpbmtTdG9yZSB7Ci0gICAgQWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBsaW5rSGFzaCkKKyAgICBBZGRWaXNpdGVkTGlua0hhc2hGcm9t
UGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGxpbmtIYXNoKQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNjU2YzhkY2M1
OWM0YWViY2YxMzZkNzBjN2Y0MDBmOTc3NjgxZDUwYy4uMWYzMjEwMDNjN2Y5MmJjMTdjZjFiNzgz
MmI3MWQ5OTIwMmE2MTZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCkBAIC0zODEsMTIgKzM4MSwxMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9yTW9zdFZpc2li
bGVXZWJQYWdlSWZBbnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTZQogICAgIGNv
bXBsZXRpb25IYW5kbGVyKHNlbGVjdGVkUGFnZSk7CiB9CiAKLVJlZjxXZWJQYWdlUHJveHk+IFdl
YlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94
eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4m
JiBjb25maWd1cmF0aW9uKQorUmVmPFdlYlBhZ2VQcm94eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUo
UGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRp
b24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUGFnZVByb3h5KHBhZ2VDbGllbnQs
IHByb2Nlc3MsIHBhZ2VJRCwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOwogfQogCi1XZWJQYWdl
UHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJv
eHkmIHByb2Nlc3MsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYgY29uZmlndXJhdGlvbikKK1dlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQm
IHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogICAgIDog
bV9wYWdlQ2xpZW50KG1ha2VXZWFrUHRyKHBhZ2VDbGllbnQpKQogICAgICwgbV9jb25maWd1cmF0
aW9uKFdURk1vdmUoY29uZmlndXJhdGlvbikpCiAgICAgLCBtX25hdmlnYXRpb25DbGllbnQobWFr
ZVVuaXF1ZVJlZjxBUEk6Ok5hdmlnYXRpb25DbGllbnQ+KCkpCkBAIC00MzUsNyArNDM1LDcgQEAg
V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4KICNlbmRpZgogICAgICwgbV9yZXNldFJlY2VudENyYXNo
Q291bnRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZXZWJQYWdlUHJveHk6OnJlc2V0UmVj
ZW50Q3Jhc2hDb3VudCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJj
b25zdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY29uc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAK
ICAgICBpZiAoIW1fY29uZmlndXJhdGlvbi0+ZHJhd3NCYWNrZ3JvdW5kKCkpCiAgICAgICAgIG1f
YmFja2dyb3VuZENvbG9yID0gQ29sb3IoQ29sb3I6OnRyYW5zcGFyZW50KTsKQEAgLTQ4OSw3ICs0
ODksNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogCiBXZWJQYWdlUHJveHk6On5XZWJQYWdl
UHJveHkoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRlc3RydWN0
b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRlc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBBU1NF
UlQobV9wcm9jZXNzLT53ZWJQYWdlKG1fcGFnZUlEKSAhPSB0aGlzKTsKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECkBAIC03MDgsNyArNzA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nl
c3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWluKQogICAgIEFTU0VS
VCghbV9pc0Nsb3NlZCk7CiAgICAgQVNTRVJUKCFoYXNSdW5uaW5nUHJvY2VzcygpKTsKIAotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3M6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFBy
b2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBtX3Byb2Nlc3MtPnJl
bW92ZVdlYlBhZ2UoKnRoaXMsIFdlYlByb2Nlc3NQcm94eTo6RW5kc1VzaW5nRGF0YVN0b3JlOjpZ
ZXMpOwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9wYWdlSUQpOwpAQCAtNzYzLDcgKzc2
Myw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQ
STo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgT3B0CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChQcm9jZXNzU3dhcHBpbmcsICJzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlOiBTdXNwZW5k
aW5nIGN1cnJlbnQgcGFnZSBmb3IgcHJvY2VzcyBwaWQgJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCkpOwogICAgIGF1dG8gc3VzcGVuZGVkUGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8
U3VzcGVuZGVkUGFnZVByb3h5PigqdGhpcywgbV9wcm9jZXNzLmNvcHlSZWYoKSwgKm1haW5GcmFt
ZUlELCBzaG91bGREZWxheUNsb3NpbmdVbnRpbEVudGVyaW5nQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUpOwogCi0gICAgTE9HKFByb2Nlc3NTd2FwcGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1
NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVzIGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9m
b3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlEKCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdT
dHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21J
dGVtLT5pdGVtSUQoKS5sb2dTdHJpbmcoKSA6IDApOworICAgIExPRyhQcm9jZXNzU3dhcHBpbmcs
ICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBmb3Ig
cHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgpLnRv
VUludDY0KCksIHN1c3BlbmRlZFBhZ2UtPmxvZ2dpbmdTdHJpbmcoKSwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBmcm9tSXRlbSA/IGZyb21JdGVtLT5pdGVtSUQoKS5sb2dTdHJpbmco
KSA6IDApOwogCiAgICAgLy8gSWYgdGhlIGNsaWVudCBmb3JjZWQgYSBzd2FwIHRoZW4gaXQgbWF5
IG5vdCBiZSB3ZWItY29tcGF0aWJsZSB0byBrZWVwIHRoZSBwcmV2aW91cyBwYWdlIGJlY2F1c2Ug
b3RoZXIgd2luZG93cyBtYXkgaGF2ZSBhbiBvcGVuZXIgbGluayB0byBpdC4gV2UgdGh1cyBjbG9z
ZSBpdCBhcyBzb29uIGFzIHdlCiAgICAgLy8gY2FuIGRvIHNvIHdpdGhvdXQgZmxhc2hpbmcuCkBA
IC03ODEsNyArNzgxLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlm
UG9zc2libGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKIHZvaWQgV2ViUGFnZVBy
b3h5Ojpzd2FwVG9XZWJQcm9jZXNzKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywgc3Rk
Ojp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+JiYgZHJhd2luZ0FyZWEsIFJlZlB0cjxXZWJG
cmFtZVByb3h5PiYmIG1haW5GcmFtZSkKIHsKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3YXBUb1dlYlByb2Nlc3M6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInN3YXBU
b1dlYlByb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBtX3Byb2Nl
c3MgPSBXVEZNb3ZlKHByb2Nlc3MpOwogICAgIG1fd2Vic2l0ZURhdGFTdG9yZSA9IG1fcHJvY2Vz
cy0+d2Vic2l0ZURhdGFTdG9yZSgpOwpAQCAtODczLDEwICs4NzMsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZEF0dGFjaFRvUnVubmluZ1Byb2Nlc3MoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5j
aFByb2Nlc3NGb3JSZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBp
ZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nl
c3NGb3JSZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgCkBAIC04ODUsNyArODg1LDcg
QEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9y
UmVsb2FkKCkKICAgICBsYXVuY2hQcm9jZXNzKHJlZ2lzdHJhYmxlRG9tYWluKTsKIAogICAgIGlm
ICghbV9iYWNrRm9yd2FyZExpc3QtPmN1cnJlbnRJdGVtKCkpIHsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3VycmVu
dCBpdGVtIHRvIHJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IG5vIGN1cnJlbnQg
aXRlbSB0byByZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtOTAwLDEwICs5MDAsMTAgQEAgUmVmUHRyPEFQSTo6
TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzRm9yUmVsb2FkKCkKIAogUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzV2l0aEl0ZW0o
V2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRl
bTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NX
aXRoSXRlbTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHBhZ2Ug
aXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKQEAgLTk1Niw3ICs5NTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2xvc2UoKQogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY2xvc2U6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsKIApAQCAtMTAzMSw3ICsx
MDMxLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnRyeUNsb3NlKCkKICAgICBpZiAoIWhhc1J1bm5p
bmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAidHJ5Q2xvc2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeUNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOwogCiAgICAgLy8gQ2xvc2Ugd2l0aG91dCBkZWxheSBpZiB0aGUgcHJvY2VzcyBh
bGxvd3MgaXQuIE91ciBnb2FsIGlzIHRvIHRlcm1pbmF0ZQogICAgIC8vIHRoZSBwcm9jZXNzLCBz
byB3ZSBjaGVjayBhIHBlci1wcm9jZXNzIHN0YXR1cyBiaXQuCkBAIC0xMDc3LDcgKzEwNzcsNyBA
QCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0KFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFNobwogICAgIGlmIChtX2lzQ2xvc2VkKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsb2FkUmVxdWVzdDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgbGF1bmNoUHJvY2VzcyhSZWdp
c3RyYWJsZURvbWFpbiB7IHJlcXVlc3QudXJsKCkgfSk7CkBAIC0xMDkxLDcgKzEwOTEsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0
aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7
CiAKQEAgLTExMjAsMTAgKzExMjAsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0
V2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIAogUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcm
IGZpbGVVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkRmlsZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcGFnZSBp
cyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIApAQCAtMTEzMiw3ICsxMTMyLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdh
dGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcs
IGNvbnMKIAogICAgIFVSTCBmaWxlVVJMID0gVVJMKFVSTCgpLCBmaWxlVVJMU3RyaW5nKTsKICAg
ICBpZiAoIWZpbGVVUkwuaXNMb2NhbEZpbGUoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogZmlsZSBpcyBub3QgbG9jYWw6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmls
ZTogZmlsZSBpcyBub3QgbG9jYWw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMTE0Miw3ICsxMTQyLDcgQEAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShjb25zdCBTdHJpbmcmIGZp
bGVVUkxTdHJpbmcsIGNvbnMKICAgICBlbHNlIHsKICAgICAgICAgcmVzb3VyY2VEaXJlY3RvcnlV
UkwgPSBVUkwoVVJMKCksIHJlc291cmNlRGlyZWN0b3J5VVJMU3RyaW5nKTsKICAgICAgICAgaWYg
KCFyZXNvdXJjZURpcmVjdG9yeVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcmVzb3VyY2UgVVJMIGlzIG5v
dCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogcmVzb3VyY2UgVVJMIGlzIG5vdCBsb2NhbDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICB9CiAgICAgfQpAQCAtMTE3MiwxMCArMTE3MiwxMCBAQCBSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0cmlu
ZywgY29ucwogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRh
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwg
Y29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVj
dCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9h
ZERhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxvYWREYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYg
KG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZERhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZERhdGE6IHBhZ2UgaXMgY2xvc2VkOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKQEAgLTExODksNyArMTE4OSw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bG9hZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjCiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzcywgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0
cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJE
YXRhLCBTaG91bGRUcmVhdEFzQ29udGludWluZ0xvYWQgc2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0
aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZERhdGFXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAK
ICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogCkBAIC0xMjE1LDEzICsxMjE1LDEzIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywKIAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5hdGVIVE1M
KGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGNvbnN0IFVSTCYgYmFzZVVSTCwgY29uc3QgVVJMJiB1bnJlYWNoYWJsZVVSTCwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
ImxvYWRBbHRlcm5hdGVIVE1MOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKIAogICAgIC8vIFdoZW4gdGhlIFVJUHJvY2VzcyBpcyBpbiB0aGUgcHJvY2Vz
cyBvZiBoYW5kbGluZyBhIGZhaWxpbmcgcHJvdmlzaW9uYWwgbG9hZCwgZG8gbm90IGF0dGVtcHQg
dG8KICAgICAvLyBzdGFydCBhIHNlY29uZCBhbHRlcm5hdGl2ZSBIVE1MIGxvYWQgYXMgdGhpcyB3
aWxsIHByZXZlbnQgdGhlIHBhZ2UgbG9hZCBzdGF0ZSBmcm9tIGJlaW5nCiAgICAgLy8gaGFuZGxl
ZCBwcm9wZXJseS4KICAgICBpZiAobV9pc0Nsb3NlZCB8fCBtX2lzTG9hZGluZ0FsdGVybmF0ZUhU
TUxTdHJpbmdGb3JGYWlsaW5nUHJvdmlzaW9uYWxMb2FkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiBwYWdlIGlzIGNsb3NlZCAo
b3Igb3RoZXIpOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xvc2VkIChvciBvdGhl
cik6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTEyNTgsMTAgKzEyNTgsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRBbHRlcm5h
dGVIVE1MKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgaHRtbERhdGEsIGNvbnN0IFMKIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVE
YXRhLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBh
Z2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTI4NSwxMCArMTI4NSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRh
KEFQSTo6RGF0YSogd2ViQXJjaGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1cwogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIEludFBvaW50IGRvY3VtZW50UG9pbnQsIEludFBvaW50IHNjcmVlblBvaW50
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGlj
azogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRl
bnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZM
aW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTMwNCwxMCArMTMwNCwx
MCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xp
Y2soY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTG9h
ZGluZygpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3RvcExvYWRp
bmc6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgInN0b3BMb2FkaW5nOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYg
KCFoYXNSdW5uaW5nUHJvY2VzcygpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
TG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlzIG5v
dCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrOiBwYWdlIGlz
IG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTMyMSw3ICsxMzIxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BM
b2FkaW5nKCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxvYWQo
T3B0aW9uU2V0PFdlYkNvcmU6OlJlbG9hZE9wdGlvbj4gb3B0aW9ucykKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlbG9hZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlOwogCkBAIC0xMzk4LDcgKzEzOTgsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0
SXRlbQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmdvVG9CYWNrRm9y
d2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgRnJhbWVMb2FkVHlwZSBmcmFt
ZUxvYWRUeXBlKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImdvVG9C
YWNrRm9yd2FyZEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJXAgZ29Ub0JhY2tGb3J3
YXJkSXRlbSB0byBpdGVtIFVSTCAlcyIsIHRoaXMsIGl0ZW0udXJsKCkudXRmOCgpLmRhdGEoKSk7
CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCkBAIC0xNDIwLDEwICsxNDIwLDEwIEBA
IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRl
bShXZWJCYWNrRm9yd2FyZExpc3RJdGVtCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp0cnlSZXN0b3Jl
U2Nyb2xsUG9zaXRpb24oKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywg
InRyeVJlc3RvcmVTY3JvbGxQb3NpdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVT
Y3JvbGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9z
aXRpb246IHBhZ2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTUwLDcgKzE1NTAsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2xlYXJJbnNwZWN0b3JUYXJnZXRzKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNy
ZWF0ZUluc3BlY3RvclRhcmdldHMoKQogewotICAgIFN0cmluZyBwYWdlVGFyZ2V0SWQgPSBtYWtl
U3RyaW5nKCJwYWdlLSIsIG1fcGFnZUlEKTsKKyAgICBTdHJpbmcgcGFnZVRhcmdldElkID0gbWFr
ZVN0cmluZygicGFnZS0iLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICBtX2luc3BlY3RvckNv
bnRyb2xsZXItPmNyZWF0ZUluc3BlY3RvclRhcmdldChwYWdlVGFyZ2V0SWQsIEluc3BlY3Rvcjo6
SW5zcGVjdG9yVGFyZ2V0VHlwZTo6UGFnZSk7CiB9CiAKQEAgLTI4NzMsNyArMjg3Myw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rp
b24sIEFQSTo6TmF2aWdhdGlvbioKIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25h
bFBhZ2UodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJf
dCBmcmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmlj
YXRlSW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxXZWJDb3JlOjpI
YXNJbnNlY3VyZUNvbnRlbnQ+IGZvcmNlZEhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQogewogICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsUGFnZSk7Ci0gICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2
aW91c1BJRCA9ICVpLCBuZXdQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImNvbW1pdFByb3Zpc2lvbmFsUGFnZTogcHJldmlvdXNQSUQgPSAlaSwgbmV3UElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3Byb3Zpc2lvbmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOwogCiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IG1haW5GcmFtZUlESW5QcmV2
aW91c1Byb2Nlc3MgPSBtX21haW5GcmFtZSA/IG1ha2VPcHRpb25hbChtX21haW5GcmFtZS0+ZnJh
bWVJRCgpKSA6IFdURjo6bnVsbG9wdDsKIApAQCAtMjkxMyw3ICsyOTEzLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmNvbW1pdFByb3Zpc2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmNvbnRpbnVlTmF2aWdhdGlvbklu
TmV3UHJvY2VzcyhBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIHN0ZDo6dW5pcXVlX3B0cjxT
dXNwZW5kZWRQYWdlUHJveHk+JiYgc3VzcGVuZGVkUGFnZVByb3h5LCBSZWY8V2ViUHJvY2Vzc1By
b3h5PiYmIG5ld1Byb2Nlc3MsIFByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQgcHJvY2Vzc1N3
YXBSZXF1ZXN0ZWRCeUNsaWVudCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiB3ZWJz
aXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29u
dGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIG5ld1Byb2Nlc3NQSUQgPSAlaSwgaGFzU3VzcGVuZGVkUGFnZSA9ICVpIiwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgbmV3UHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdlUHJveHkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzczogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBuZXdQcm9jZXNzUElEID0gJWksIGhhc1N1c3BlbmRl
ZFBhZ2UgPSAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSwgbmV3UHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgISFzdXNwZW5kZWRQYWdl
UHJveHkpOwogICAgIExPRyhMb2FkaW5nLCAiQ29udGludWluZyBuYXZpZ2F0aW9uICUiIFBSSXU2
NCAiICclcycgaW4gYSBuZXcgd2ViIHByb2Nlc3MiLCBuYXZpZ2F0aW9uLm5hdmlnYXRpb25JRCgp
LCBuYXZpZ2F0aW9uLmxvZ2dpbmdTdHJpbmcoKSk7CiAKICAgICBpZiAobV9wcm92aXNpb25hbFBh
Z2UpIHsKQEAgLTMwNzQsNyArMzA3NCw3IEBAIFNlc3Npb25TdGF0ZSBXZWJQYWdlUHJveHk6OnNl
c3Npb25TdGF0ZShXVEY6OkZ1bmN0aW9uPGJvb2wgKFdlYkJhY2tGb3J3YXJkTGlzdEl0CiAKIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6cmVzdG9yZUZyb21TZXNzaW9uU3Rh
dGUoU2Vzc2lvblN0YXRlIHNlc3Npb25TdGF0ZSwgYm9vbCBuYXZpZ2F0ZSkKIHsKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVz
dG9yZUZyb21TZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICBtX3Nlc3Npb25SZXN0b3JhdGlvblJlbmRlclRyZWVTaXplID0gMDsKICAgICBtX2hpdFJlbmRl
clRyZWVTaXplVGhyZXNob2xkID0gZmFsc2U7CkBAIC0zOTMyLDggKzM5MzIsOCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2Vi
UHJvY2Vzc1Byb3h5PiYmCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFtZSgpICYmIG5hdmlnYXRp
b25JRCkKICAgICAgICAgbmF2aWdhdGlvbiA9IG5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24o
bmF2aWdhdGlvbklEKTsKIAotICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2
NCAiIGluIHByb2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8g
ZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBt
X3BhZ2VJRCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlv
bklELCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAiZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgTE9HKExvYWRpbmcs
ICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQg
JSIgUFJJdTY0ICIsIHVybCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgdXJsLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9w
YWdlTG9hZFN0YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTM5ODUsNyArMzk4NSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRG
b3JGcmFtZSh1aW50NjRfdCBmCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94
eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAg
ICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAlIiBQUkl1NjQgIiwgbmF2aWdhdGlv
bklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQsIHJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3Rl
Y3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDAxNCw3ICs0MDE0LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lU2hhcmVkKFJlZjwKIAogdm9pZCBXZWJQYWdlUHJveHk6OndpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVybCwg
ZG91YmxlIGRlbGF5LCBXZWJDb3JlOjpMb2NrQmFja0ZvcndhcmRMaXN0KQogewotICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JG
cmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ3aWxsUGVyZm9ybUNsaWVudFJl
ZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9y
KHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQwMjcsNyArNDAyNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU3RyCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAg
ICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDc0
LDggKzQwNzQsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJv
eHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
JiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFN0cmlu
ZyYgcHJvdmlzaW9uYWxVUkwsIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBXaWxsQ29udGlu
dWVMb2FkaW5nIHdpbGxDb250aW51ZUxvYWRpbmcsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkK
IHsKLSAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIg
aW4gd2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBw
cm92aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBwcm92aXNpb25hbFVSTC51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3MsICJkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAl
cywgY29kZSA9ICVkIiwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZy
YW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsK
KyAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgaW4g
d2ViIHByb2Nlc3MgcGlkICVpIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBwcm92
aXNpb25hbFVSTCAlcyIsIG1fcGFnZUlELnRvVUludDY0KCksIHByb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRv
bWFpbiA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBl
cnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC00MTQxLDkgKzQxNDEsOSBAQCBzdGF0aWMgYm9vbCBpc05vblVu
aXF1ZU5hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb24oY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRh
IHJlcQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwg
Ym9vbCBmcmFtZUhhc0N1c3RvbUNvbnRlbnRQcm92aWRlciwgdWludDMyX3Qgb3BhcXVlRnJhbWVM
b2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8s
IGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1bWVudCwgT3B0aW9uYWw8SGFzSW5zZWN1cmVDb250ZW50
PiBoYXNJbnNlY3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBM
T0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgZGlkQ29tbWl0
TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJdTY0LCBtX3BhZ2VJRCwgbmF2aWdhdGlv
bklEKTsKKyAgICBMT0coTG9hZGluZywgIihMb2FkaW5nKSBXZWJQYWdlUHJveHkgJSIgUFJJdTY0
ICIgZGlkQ29tbWl0TG9hZEZvckZyYW1lIGluIG5hdmlnYXRpb24gJSIgUFJJdTY0LCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpLCBuYXZpZ2F0aW9uSUQpOwogICAgIExPRyhCYWNrRm9yd2FyZCwgIihCYWNr
L0ZvcndhcmQpIEFmdGVyIGxvYWQgY29tbWl0LCBiYWNrL2ZvcndhcmQgbGlzdCBpcyBub3c6JXMi
LCBtX2JhY2tGb3J3YXJkTGlzdC0+bG9nZ2luZ1N0cmluZygpKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MjU0LDcgKzQy
NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFt
ZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7
CiAKQEAgLTQyNzgsNyArNDI3OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1
bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewogICAgIExPRyhM
b2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUgLSBXZWJQYWdlUHJv
eHkgJXAgd2l0aCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIgZGlkRmluaXNoTG9hZCIsIHRoaXMs
IG5hdmlnYXRpb25JRCk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlk
RmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZp
bmlzaExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0
b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDMyMyw3ICs0MzIzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9
ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCwg
ZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZhaWxMb2FkRm9yRnJhbWU6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21h
aW4gPSAlcywgY29kZSA9ICVkIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBl
cnJvci5lcnJvckNvZGUoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC00MzY1LDcgKzQzNjUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmFpbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50MzJfdCBvcGFx
dWVTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSwgVVJMJiYgdXJsLCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDUzNSw3ICs0NTM1
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmJlZ2luU2FmZUJyb3dzaW5nQ2hlY2soY29uc3QgVVJM
JiwgYm9vbCwgV2ViRnJhbWVQb2xpY3lMaXN0ZW4KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwKKyAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYg
cmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYg
dXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CiAgICAgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKG1fcHJvY2Vzcy5jb3B5UmVmKCksIGZyYW1lSUQsIFdU
Rk1vdmUoZnJhbWVTZWN1cml0eU9yaWdpbiksIGlkZW50aWZpZXIsIG5hdmlnYXRpb25JRCwgV1RG
TW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksCkBAIC00NTQzLDcgKzQ1NDMsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcgogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vz
cywgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwKLSAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRp
ZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsCisgICAgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RC
b2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7CkBAIC00NTU5
LDcgKzQ1NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveAogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmIHByb2Nlc3MsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsCi0gICAg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0
YSYmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYgc2VuZGVy
KQogewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uIC0gT3JpZ2luYWwgVVJMICVzLCBjdXJyZW50IHRhcmdldCBVUkwgJXMiLCBv
cmlnaW5hbFJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgcmVxdWVzdC51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKQEAgLTQ2OTksNyArNDY5OSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzCiAgICAgICAgIGlmICghZnJvbUFQSSAmJiBvcmlnaW5hdGluZ0ZyYW1l
ID09ICZmcmFtZSkKICAgICAgICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IGRlc3RpbmF0aW9uRnJh
bWVJbmZvLmNvcHlSZWYoKTsKICAgICAgICAgZWxzZSBpZiAoIWZyb21BUEkpCi0gICAgICAgICAg
ICBzb3VyY2VGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKG9yaWdpbmF0
aW5nUGFnZUlEKSA6IG51bGxwdHIpOworICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJ
OjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5n
UGFnZUlEID8gcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7
CiAKICAgICAgICAgYXV0byB1c2VySW5pdGlhdGVkQWN0aXZpdHkgPSBwcm9jZXNzLT51c2VySW5p
dGlhdGVkQWN0aXZpdHkobmF2aWdhdGlvbkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50
aWZpZXIpOwogICAgICAgICBib29sIHNob3VsZE9wZW5BcHBMaW5rcyA9ICFtX3Nob3VsZFN1cHBy
ZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24KQEAgLTQ3NzIsNyArNDc3
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgV2ViRnJh
bWVQcm94eSYgZnJhbWUsIGNvbnN0IFVSTCYgcGFnCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
UGFnZUlELAorICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTQ3OTAs
NyArNDc5MCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzCiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
TmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0
YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwKICAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwKICAgICBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEs
IE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25T
eW5jOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKQEAgLTQ5MjMsNyArNDkyMyw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YShjb25zdCBXZWJOYXZp
Z2F0aW9uRGF0YVN0b3JlJiBzCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWROYXZpZ2F0ZVdpdGhO
YXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0
IFdlYk5hdmlnYXRpb25EYXRhU3RvcmUmIHN0b3JlLCB1aW50NjRfdCBmcmFtZUlEKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5hdmlnYXRp
b25EYXRhU2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQ6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3Io
cGFnZUNsaWVudCgpKTsKIApAQCAtNDk0Myw3ICs0OTQzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywg
Y29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJl
ZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYgc291cmNlVVJM
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50NjRfdCBmcmFt
ZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1D
bGllbnRSZWRpcmVjdFNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBw
cm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDk3MCw3ICs0OTcwLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChjb25zdCBTdHJpbmcmIHNvdXJjZVVS
TFN0cmluZywgY29uc3QKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdFNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uVVJMU3RyaW5nLCB1aW50
NjRfdCBmcmFtZUlEKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRp
ZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdDogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3Rvcihw
YWdlQ2xpZW50KCkpOwogCkBAIC01MDE4LDE0ICs1MDE4LDE0IEBAIFdFQlBBR0VQUk9YWV9MT0FE
T1BUSU1JWkVSX0FERElUSU9OU182CiAjZW5kaWYKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmNy
ZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRh
LCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
V2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFn
ZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFn
ZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCwgV2luZG93RmVhdHVyZXMmJiB3aW5kb3dGZWF0dXJlcywgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRl
TmV3UGFnZTo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CiAgICAgTUVTU0FHRV9DSEVDSyhtX3By
b2Nlc3MsIG1fcHJvY2Vzcy0+d2ViRnJhbWUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1l
SUQpKTsKLSAgICBhdXRvIG9yaWdpbmF0aW5nRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNy
ZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG1fcHJvY2Vzcy0+d2ViUGFnZShvcmlnaW5h
dGluZ1BhZ2VJRCkpOworICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1l
SW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdQYWdlSUQg
PyBtX3Byb2Nlc3MtPndlYlBhZ2UoKm9yaWdpbmF0aW5nUGFnZUlEKSA6IG51bGxwdHIpOwogICAg
IGF1dG8gbWFpbkZyYW1lVVJMID0gbV9tYWluRnJhbWUgPyBtX21haW5GcmFtZS0+dXJsKCkgOiBV
UkwoKTsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgbWFpbkZyYW1lVVJMLCByZXF1ZXN0LCByZXBseSA9IFdURk1vdmUo
cmVwbHkpXSAoUmVmUHRyPFdlYlBhZ2VQcm94eT4gbmV3UGFnZSkgbXV0YWJsZSB7CiAgICAgICAg
IGlmICghbmV3UGFnZSkgewotICAgICAgICAgICAgcmVwbHkoMCwgV1RGOjpudWxsb3B0KTsKKyAg
ICAgICAgICAgIHJlcGx5KFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCkBAIC01ODM0LDcgKzU4MzQsNyBAQCBJUEM6OkNvbm5lY3Rp
b24qIFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdAogCiB1aW50
NjRfdCBXZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gbV9wYWdlSUQ7CisgICAgcmV0dXJuIG1fcGFnZUlELnRvVUludDY0KCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp2YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUoV2ViUG9wdXBN
ZW51UHJveHkqLCBpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpCkBAIC02NzE1LDcgKzY3MTUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVTZXRMYXJnZXN0RnJhbWVDaGFuZ2VkKHVpbnQ2NF90
IGZyYW1lSUQpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25z
aXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQog
ICAgICAgICByZXR1cm47CkBAIC02NzI3LDcgKzY3MjcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9j
ZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNw
b25zaXZlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFoYXNSdW5u
aW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDZjNWFkNjI1ZDEyMDRjN2MwZDgzOTY5OWU3ZTJmNjVhNWJhNjRlMDMu
LmFiM2U1OTdkNjA0MzY5NzI3NjNhMGI4OTI5ZGMyOGM3YTM1MTE5YjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04Miw2ICs4Miw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9MYXlvdXRTaXplLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVBsYXliYWNrVGFyZ2V0
Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtRXZl
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU2NyZWVuLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZS5oPgpAQCAtMzgyLDE0ICszODMs
MTQgQEAgY2xhc3MgV2ViUGFnZVByb3h5IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6UGFnZT4KICNlbmRpZgogICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdl
YlBhZ2VQcm94eT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBjcmVh
dGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOworICAgIHN0YXRpYyBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGUoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAgICAgdmlydHVhbCB+V2ViUGFn
ZVByb3h5KCk7CiAKICAgICBzdGF0aWMgdm9pZCBmb3JNb3N0VmlzaWJsZVdlYlBhZ2VJZkFueShQ
QUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJQYWdlUHJveHkqKT4mJik7CiAKICAgICBjb25zdCBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKCkgY29uc3Q7CiAKLSAgICB1aW50NjRfdCBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAKICAgICBQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdDsKIApAQCAtMTUwMiw3ICsxNTAzLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYsIHVpbnQ2NF90IGZy
YW1lSUQpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JGcmFtZVNoYXJlZChS
ZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIFVSTCYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25B
c3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQ
b2xpY3lDaGVja0lkZW50aWZpZXIsCi0gICAgICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLAorICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9uYWw8V2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiYsCiAgICAgICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwg
dWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVNo
YXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciwKICAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZG93bmxvYWRBdHRyaWJ1
dGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNTExLDcgKzE1
MTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVk
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIEFQSTo6TmF2aWdhdGlvbiYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBXZWJDb3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBBUEk6
Ok9iamVjdCogdXNlckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwg
T3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0YT4mJiA9IFdURjo6bnVsbG9wdCk7CiAgICAgdm9p
ZCBiYWNrRm9yd2FyZEdvVG9JdGVtU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0
IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luY1NoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCB1
aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwg
dWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9w
dGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAg
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBV
c2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAg
dm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpAQCAt
MTU1MSw3ICsxNTUyLDcgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJTUlaRVJfQURESVRJT05TXzEK
ICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlU3BhY2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3Qg
U3RyaW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJy
ZW50T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBl
eHBlY3RlZFVzYWdlLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQodWludDY0X3QpPiYmKTsK
IAogcHJpdmF0ZToKLSAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94
eSYsIHVpbnQ2NF90IHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOworICAg
IFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZSgpOwogCiAgICAgdm9pZCBub3RpZnlQcm9jZXNzUG9vbFRvUHJld2Fy
bSgpOwpAQCAtMTYyNywxMyArMTYyOCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkRGVzdHJv
eU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAogICAgIHZvaWQgZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBXZWJGcmFtZVBy
b3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJE
YXRhJiwgUmVmPFBvbGljeURlY2lzaW9uU2VuZGVyPiYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5m
b0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9E
YXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01h
aW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9k
eSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0
YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5
JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKICAgICAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTY1NSw3ICsxNjU2LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlLCBj
b25zdCBTdHJpbmcmIHVybCwgdWludDY0X3QgZnJhbWVJRCk7CiAKICAgICAvLyBVSSBjbGllbnQK
LSAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6V2lu
ZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYpOworICAgIHZvaWQgY3JlYXRlTmV3
UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29y
ZTo6V2luZG93RmVhdHVyZXMmJiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6RGVsYXllZFJlcGx5JiYpOwogICAgIHZvaWQgc2hv
d1BhZ2UoKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBTdHJpbmcmLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0QWxlcnQ6OkRlbGF5ZWRSZXBseSYmKTsKICAg
ICB2b2lkIHJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OlJ1bkphdmFTY3JpcHRDb25maXJtOjpEZWxheWVkUmVwbHkmJik7CkBAIC0yMzI3LDcg
KzIzMjgsNyBAQCBXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpFUl9BRERJVElPTlNfMgogICAgIFJl
ZlB0cjxXZWJDb3JlOjpWYWxpZGF0aW9uQnViYmxlPiBtX3ZhbGlkYXRpb25CdWJibGU7CiAjZW5k
aWYKIAotICAgIGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwogCiAgICAgYm9vbCBtX2lzUGFnZVN1c3BlbmRlZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2FkZHNWaXNpdGVkTGlua3MgeyB0cnVlIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNmZjZWNk
YzZiNjVkODhjOWM5ODU4NTM5NWFiNTllN2Q4MTI2YmEwNi4uYjFlNzk5MjIzYmZjOTljM2ZkMmI1
MjVmZjdlODkyNDY0OTU3MTdjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjIsNyArMjIsNyBAQAogCiBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgICMgVUkgbWVzc2FnZXMKLSAgICBDcmVhdGVOZXdQYWdlKHN0cnVj
dCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRf
dCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0
cnVjdCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcywgc3RydWN0IFdlYktp
dDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEpIC0+ICh1aW50NjRf
dCBuZXdQYWdlSUQsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4g
bmV3UGFnZVBhcmFtZXRlcnMpIFN5bmNocm9ub3VzCisgICAgQ3JlYXRlTmV3UGFnZShzdHJ1Y3Qg
V2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdCwgc3RydWN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzIHdpbmRv
d0ZlYXR1cmVzLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSkgLT4gKE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBuZXdQYWdl
SUQsIE9wdGlvbmFsPFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gbmV3UGFnZVBh
cmFtZXRlcnMpIFN5bmNocm9ub3VzCiAgICAgU2hvd1BhZ2UoKQogICAgIENsb3NlUGFnZShib29s
IHN0b3BSZXNwb25zaXZlbmVzc1RpbWVyKQogICAgIFJ1bkphdmFTY3JpcHRBbGVydCh1aW50NjRf
dCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIFN0cmluZyBtZXNzYWdlKSAtPiAoKSBTeW5jaHJvbm91cwpAQCAtMTA0LDggKzEw
NCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIFBvbGljeSBtZXNzYWdl
cwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIFN0cmluZyBkb3du
bG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2Vy
RGF0YSkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3Qg
ZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5
T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlm
aWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRh
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3Jl
OjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRp
b25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChX
ZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBlbnVt
OnVpbnQ4X3QgV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3
TmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2Vi
S2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5bmNocm9ub3VzCisg
ICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwg
V2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5h
dGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2Ug
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKKyAgICBEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlz
TWFpbkZyYW1lLCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50
aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFj
dGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0Rh
dGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBJUEM6OkZvcm1EYXRh
UmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlZGlyZWN0
UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBlbnVtOnVpbnQ4X3QgV2ViQ29y
ZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBX
ZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlUG9s
aWNpZXNEYXRhPiB3ZWJzaXRlUG9saWNpZXMpIFN5bmNocm9ub3VzCiAgICAgRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJ
ZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdlYktpdDo6VXNlckRhdGEg
dXNlckRhdGEpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NMaWZldGltZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NMaWZldGltZU9ic2VydmVyLmNwcAppbmRleCBjODAyM2RlNDE2MTY0NzUwMTBmNDI4MjM5YTdi
ZWQwN2IxN2Y4NWQ3Li5mNDk3MTUxZDc1YzVlNmYxZjI4NmFhYTc5ZThhNjQ3YzZhOWYzNmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc0xpZmV0aW1l
T2JzZXJ2ZXIuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lT2Jz
ZXJ2ZXI6OmFkZFdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYlByb2NlCiAg
ICAgUkVMRUFTRV9BU1NFUlQoIXByb2Nlc3MuaXNQcmV3YXJtZWQoKSk7CiAKICAgICBpZiAobV9w
cm9jZXNzZXMuYWRkKCZwcm9jZXNzKS5pc05ld0VudHJ5KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
KExvYWRpbmcsICIlcCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjphZGRXZWJQYWdlOiB3
ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNzLnByb2Nlc3NJZGVu
dGlmaWVyKCksIHdlYlBhZ2VQcm94eS5wYWdlSUQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HKExv
YWRpbmcsICIlcCAtIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjphZGRXZWJQYWdlOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlm
aWVyKCksIHdlYlBhZ2VQcm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgd2ViUHJv
Y2Vzc1dpbGxPcGVuQ29ubmVjdGlvbihwcm9jZXNzLCAqcHJvY2Vzcy5jb25uZWN0aW9uKCkpOwog
ICAgIH0KIApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVy
OjpyZW1vdmVXZWJQYWdlKFdlYlBhZ2VQcm94eSYgd2ViUGFnZVByb3h5LCBXZWJQcgogICAgIHdl
YlBhZ2VEaWRDbG9zZUNvbm5lY3Rpb24od2ViUGFnZVByb3h5LCAqcHJvY2Vzcy5jb25uZWN0aW9u
KCkpOwogCiAgICAgaWYgKG1fcHJvY2Vzc2VzLnJlbW92ZSgmcHJvY2VzcykpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OnJl
bW92ZVdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nl
c3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAgICAg
UkVMRUFTRV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OnJl
bW92ZVdlYlBhZ2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nl
c3MucHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkp
OwogICAgICAgICB3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKHByb2Nlc3MsICpwcm9jZXNz
LmNvbm5lY3Rpb24oKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCmluZGV4IDBlMTM5ZjMwZDljZWY5ZjYzMjMzYzYxM2I1ZTQyYmNkZDU5OGVl
NjguLjBiOGIzNDVlZjhlZjMyMmYyZjI3NTdkNGVlMzdiZWY5ZDI3MGJiMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTEyOTYsOSArMTI5Niw5IEBA
IGJvb2wgV2ViUHJvY2Vzc1Bvb2w6Om1heUhhdmVSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29u
c3QgV2Vic2l0ZURhdGFTdG9yZSYgc3RvCiB9CiAjZW5kaWYKIAotdm9pZCBXZWJQcm9jZXNzUG9v
bDo6cGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0
ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUJlZ2luVXNp
bmdXZWJzaXRlRGF0YVN0b3JlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9y
ZSYgZGF0YVN0b3JlKQogewotICAgIGF1dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9QYWdlSURzTWFw
LmFkZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIEhhc2hTZXQ8dWludDY0X3Q+KCkpLml0ZXJhdG9y
LT52YWx1ZS5hZGQocGFnZUlEKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fc2Vzc2lvblRvUGFnZUlE
c01hcC5hZGQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNoU2V0PFBhZ2VJZGVudGlmaWVyPigp
KS5pdGVyYXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CiAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdC5pc05ld0VudHJ5KTsKIAogICAgIGF1dG8gc2Vzc2lvbklEID0gZGF0YVN0b3JlLnNl
c3Npb25JRCgpOwpAQCAtMTMxNiw3ICsxMzE2LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFn
ZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGEK
ICAgICB9CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRh
U3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lk
IFdlYlByb2Nlc3NQb29sOjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3JlKQogewogICAgIGF1dG8gc2Vz
c2lvbklEID0gZGF0YVN0b3JlLnNlc3Npb25JRCgpOwogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Nl
c3Npb25Ub1BhZ2VJRHNNYXAuZmluZChzZXNzaW9uSUQpOwpAQCAtMjIxMSw3ICsyMjExLDcgQEAg
dm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVpbnN0YXRlTmV0d29ya1Byb2Nlc3NBc3NlcnRpb25TdGF0
ZShOZXR3b3JrUHJvY2Vzc1Byb3h5JgogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
U2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQ
cm9jZXNzUHJveHlGcm9tUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
RnJvbVBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6
IFRoaXMgaXMgaW5lZmZpY2llbnQuCiAgICAgZm9yIChhdXRvKiBzZXJ2aWNlV29ya2VyUHJvY2Vz
cyA6IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlcy52YWx1ZXMoKSkgewpAQCAtMjUxOSw3ICsyNTE5
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6Y2xlYXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRl
c3RpbmcoKQogICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xl
YXJDdXJyZW50TW9kaWZpZXJTdGF0ZUZvclRlc3RpbmcoKSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vz
c1Bvb2w6OmNvbW1pdHRlZENyb3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb24oUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdl
YlByb2Nlc3NQb29sOjpjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFt
X25ldHdvcmtQcm9jZXNzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
aW5kZXggMTY1NTQ1YjFhMmY4NmVhYTRiODMzYzkzYWJlODBkYzkwZWU1MjYzMy4uMTdlM2U4MDJi
YzQ1MDA4YzM4NTEwYmFmNWQ0ZTE0Mzk5M2M4YjFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xNDgsNiArMTQ4LDE4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJO
YW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwogICAg
IHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VS
ZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQpOwor
ICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50
aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQor
ICAgIHsKKyAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRl
c3RpbmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOworICAgIH0KKyAgICAKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0
cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRl
c3RpbmF0aW9uSUQpCisgICAgeworICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKKyAgICB9CiAKICAgICBi
b29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKICAg
ICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsKQEAgLTE5Myw4ICsyMDUsOCBAQCBw
dWJsaWM6CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQm
LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAKLSAgICB2b2lkIHBhZ2VCZWdpblVz
aW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmKTsK
LSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBX
ZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3Rv
cmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKKyAgICB2b2lk
IHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdl
YnNpdGVEYXRhU3RvcmUmKTsKICAgICBib29sIGhhc1BhZ2VzVXNpbmdXZWJzaXRlRGF0YVN0b3Jl
KFdlYnNpdGVEYXRhU3RvcmUmKSBjb25zdDsKIAogICAgIGNvbnN0IFN0cmluZyYgaW5qZWN0ZWRC
dW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1cmF0aW9uLT5pbmplY3RlZEJ1bmRs
ZVBhdGgoKTsgfQpAQCAtMzY1LDcgKzM3Nyw3IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsKLSAgICBTZXJ2aWNlV29ya2VyUHJv
Y2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBw
YWdlSUQpIGNvbnN0OworICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIHNlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBjb25zdDsK
ICAgICBjb25zdCBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29y
a2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94aWVzKCkgY29uc3QgeyByZXR1cm4g
bV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9pZCBzZXRBbGxvd3NBbnlTU0xDZXJ0
aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3MpIHsgbV9hbGxvd3NBbnlTU0xDZXJ0
aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0KICAgICBib29sIGFsbG93c0FueVNT
TENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzQW55
U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CkBAIC00OTMsNyArNTA1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgc2VuZERpc3BsYXlDb25maWd1cmF0aW9uQ2hhbmdlZE1lc3NhZ2VGb3JU
ZXN0aW5nKCk7CiAgICAgdm9pZCBjbGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygp
OwogCi0gICAgdm9pZCBjb21taXR0ZWRDcm9zc1NpdGVMb2FkV2l0aExpbmtEZWNvcmF0aW9uKFBB
TDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFp
biwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCB1aW50NjRfdCBw
YWdlSUQpOworICAgIHZvaWQgY29tbWl0dGVkQ3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21E
b21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpOwogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUp
CiAgICAgdm9pZCBzZXRTYW5kYm94RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9zYW5kYm94RW5h
YmxlZCA9IGVuYWJsZWQ7IH07CkBAIC03NTgsNyArNzcwLDcgQEAgcHJpdmF0ZToKICAgICB9Owog
ICAgIFBhdGhzIG1fcmVzb2x2ZWRQYXRoczsKIAotICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQs
IEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXA7CisgICAgSGFzaE1hcDxQ
QUw6OlNlc3Npb25JRCwgSGFzaFNldDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4+IG1fc2Vzc2lv
blRvUGFnZUlEc01hcDsKICAgICBSdW5Mb29wOjpUaW1lcjxXZWJQcm9jZXNzUG9vbD4gbV9zZXJ2
aWNlV29ya2VyUHJvY2Vzc2VzVGVybWluYXRpb25UaW1lcjsKIAogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRl
eCA4MjAzNDY1Y2IyODE0ZDJjZmMzMjhmYTc5NDY2MmEyMGUwMmI0MzJjLi42NzgzMWUyMDc4MDlj
MGVjNWI2MjhhZWMwZDM5MTExODM1ZjMxMGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTExMCwxMCArMTEwLDkgQEAgV2ViUHJvY2Vzc1Byb3h5
KiBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKFByb2Nlc3NJZGVudGlmaWVy
IGlkZW50aWYKICAgICByZXR1cm4gYWxsUHJvY2Vzc2VzKCkuZ2V0KGlkZW50aWZpZXIpOwogfQog
Ci11aW50NjRfdCBXZWJQcm9jZXNzUHJveHk6OmdlbmVyYXRlUGFnZUlEKCkKK1BhZ2VJZGVudGlm
aWVyIFdlYlByb2Nlc3NQcm94eTo6Z2VuZXJhdGVQYWdlSUQoKQogewotICAgIHN0YXRpYyB1aW50
NjRfdCB1bmlxdWVQYWdlSUQ7Ci0gICAgcmV0dXJuICsrdW5pcXVlUGFnZUlEOworICAgIHJldHVy
biBQYWdlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKIH0KIAogc3RhdGljIFdlYlByb2Nlc3NQcm94
eTo6V2ViUGFnZVByb3h5TWFwJiBnbG9iYWxQYWdlTWFwKCkKQEAgLTMzMCw3ICszMjksNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6c2h1dERvd24oKQogICAgIG1fcHJvY2Vzc1Bvb2wtPmRpc2Nv
bm5lY3RQcm9jZXNzKHRoaXMpOwogfQogCi1XZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpCitXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6
d2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGdsb2JhbFBhZ2VN
YXAoKS5nZXQocGFnZUlEKTsKIH0KQEAgLTM2Myw3ICszNjIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCog
bWVzc2FnZQogCiBSZWY8V2ViUGFnZVByb3h5PiBXZWJQcm9jZXNzUHJveHk6OmNyZWF0ZVdlYlBh
Z2UoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYg
cGFnZUNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgdWludDY0X3QgcGFnZUlEID0gZ2VuZXJhdGVQYWdl
SUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IGdlbmVyYXRlUGFnZUlEKCk7CiAgICAgUmVmPFdlYlBh
Z2VQcm94eT4gd2ViUGFnZSA9IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKHBhZ2VDbGllbnQsICp0aGlz
LCBwYWdlSUQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKIAogICAgIGFkZEV4aXN0aW5n
V2ViUGFnZSh3ZWJQYWdlLmdldCgpLCBCZWdpbnNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKQEAgLTQx
NSwxMCArNDE0LDEwIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVXZWJQYWdlKFdlYlBh
Z2VQcm94eSYgd2ViUGFnZSwgRW5kc1VzaW5nRGF0YVN0b3JlIGVuCiAgICAgbWF5YmVTaHV0RG93
bigpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIo
VmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgdWludDY0X3QgcGFnZUlEKQordm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3Rv
cmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRv
JiB1c2VycyA9IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnMuZW5zdXJlKCZ2aXNpdGVkTGlu
a1N0b3JlLCBbXSB7Ci0gICAgICAgIHJldHVybiBIYXNoU2V0PHVpbnQ2NF90PiB7IH07CisgICAg
ICAgIHJldHVybiBIYXNoU2V0PFBhZ2VJZGVudGlmaWVyPiB7IH07CiAgICAgfSkuaXRlcmF0b3It
PnZhbHVlOwogCiAgICAgQVNTRVJUKCF1c2Vycy5jb250YWlucyhwYWdlSUQpKTsKQEAgLTQyOCw3
ICs0MjcsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIo
VmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZQogICAgICAgICB2aXNpdGVkTGlua1N0
b3JlLmFkZFByb2Nlc3MoKnRoaXMpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3Zl
VmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwg
dWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVZpc2l0ZWRMaW5r
U3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIFBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvIGl0ID0gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vy
cy5maW5kKCZ2aXNpdGVkTGlua1N0b3JlKTsKICAgICBpZiAoaXQgPT0gbV92aXNpdGVkTGlua1N0
b3Jlc1dpdGhVc2Vycy5lbmQoKSkKQEAgLTU0MSw3ICs1NDAsNyBAQCBib29sIFdlYlByb2Nlc3NQ
cm94eTo6ZnVsbEtleWJvYXJkQWNjZXNzRW5hYmxlZCgpCiB9CiAjZW5kaWYKIAotYm9vbCBXZWJQ
cm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNv
bnN0Citib29sIFdlYlByb2Nlc3NQcm94eTo6aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICBmb3IgKGF1dG8qIHByb3Zpc2lvbmFsUGFn
ZSA6IG1fcHJvdmlzaW9uYWxQYWdlcykgewogICAgICAgICBpZiAocHJvdmlzaW9uYWxQYWdlLT5w
YWdlKCkucGFnZUlEKCkgPT0gcGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAppbmRleCA5YTZjYmYxZjQ2MDk5YTVmNmY5ZmEyZjBlZThhNmZhMmM4MTgxNmE4
Li5hZDNmMDM4ZGQ2NTQ2NWMwNDg5OTc5YjY3ZTU4NWM4NTZmOTJkYzRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVzc2FnZVBvcnRJZGVu
dGlmaWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJh
YmxlRG9tYWluLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaGFyZWRTdHJpbmdIYXNoLmg+CkBAIC05
Nyw3ICs5OCw3IEBAIGVudW0gY2xhc3MgQWxsb3dQcm9jZXNzQ2FjaGluZyB7IE5vLCBZZXMgfTsK
IGNsYXNzIFdlYlByb2Nlc3NQcm94eSA6IHB1YmxpYyBBdXhpbGlhcnlQcm9jZXNzUHJveHksIHB1
YmxpYyBSZXNwb25zaXZlbmVzc1RpbWVyOjpDbGllbnQsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxXZWJQcm9jZXNzUHJveHk+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUHJvY2Vzc1By
b3h5PiwgcHJpdmF0ZSBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJGcmFtZVByb3h5Pj4gV2ViRnJhbWVQcm94
eU1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8dWludDY0X3QsIFdlYlBhZ2VQcm94eSo+IFdlYlBh
Z2VQcm94eU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYlBhZ2VQcm94eSo+IFdlYlBhZ2VQcm94eU1hcDsKICAgICB0eXBlZGVmIEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxBUEk6OlVzZXJJbml0aWF0ZWRBY3Rpb24+PiBVc2VySW5pdGlhdGVkQWN0
aW9uTWFwOwogCiAgICAgZW51bSBjbGFzcyBJc1ByZXdhcm1lZCB7CkBAIC0xMjgsNyArMTI5LDcg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0V2Vic2l0ZURhdGFTdG9yZShXZWJzaXRlRGF0YVN0b3Jl
Jik7CiAKICAgICBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9ySWRlbnRpZmllcihX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7Ci0gICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2Vi
UGFnZSh1aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyBXZWJQYWdlUHJveHkqIHdlYlBhZ2Uo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIFJlZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdl
YlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKIAogICAg
IGVudW0gY2xhc3MgQmVnaW5zVXNpbmdEYXRhU3RvcmUgOiBib29sIHsgTm8sIFllcyB9OwpAQCAt
MTQ5LDEwICsxNTAsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzU2VydmljZVdv
cmtlclByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgdm9pZCBkaWRDcmVh
dGVXZWJQYWdlSW5Qcm9jZXNzKHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBkaWRDcmVhdGVX
ZWJQYWdlSW5Qcm9jZXNzKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAotICAgIHZvaWQgYWRk
VmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIHVpbnQ2NF90IHBhZ2VJRCk7
Ci0gICAgdm9pZCByZW1vdmVWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwg
dWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0
ZWRMaW5rU3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCByZW1vdmVW
aXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIpOwogCiAgICAgdm9pZCBhZGRXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eSYsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmKTsK
ICAgICB2b2lkIGRpZERlc3Ryb3lXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eShXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eSYpOwpAQCAtMzExLDcgKzMxMiw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHdlYlBhZ2VNZWRpYVN0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94eSYpOwogCiBwcm90
ZWN0ZWQ6Ci0gICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlUGFnZUlEKCk7CisgICAgc3RhdGlj
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGdlbmVyYXRlUGFnZUlEKCk7CiAgICAgV2ViUHJvY2Vz
c1Byb3h5KFdlYlByb2Nlc3NQb29sJiwgV2Vic2l0ZURhdGFTdG9yZSosIElzUHJld2FybWVkKTsK
IAogICAgIC8vIEF1eGlsaWFyeVByb2Nlc3NQcm94eQpAQCAtMzU0LDcgKzM1NSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRDcmVhdGVDb250ZXh0Rm9yVmlzaWJpbGl0eVByb3BhZ2F0aW9uKExh
eWVySG9zdGluZ0NvbnRleHRJRCk7CiAjZW5kaWYKIAotICAgIGJvb2wgaGFzUHJvdmlzaW9uYWxQ
YWdlV2l0aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7CisgICAgYm9vbCBoYXNQcm92aXNpb25h
bFBhZ2VXaXRoSUQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIGJvb2wgaXNB
bGxvd2VkVG9VcGRhdGVCYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpIGNv
bnN0OwogCiAgICAgLy8gUGx1Z2lucwpAQCAtNDQ3LDcgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAg
SGFzaFNldDxQcm92aXNpb25hbFBhZ2VQcm94eSo+IG1fcHJvdmlzaW9uYWxQYWdlczsKICAgICBV
c2VySW5pdGlhdGVkQWN0aW9uTWFwIG1fdXNlckluaXRpYXRlZEFjdGlvbk1hcDsKIAotICAgIEhh
c2hNYXA8VmlzaXRlZExpbmtTdG9yZSosIEhhc2hTZXQ8dWludDY0X3QvKiBwYWdlSUQgKi8+PiBt
X3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzOworICAgIEhhc2hNYXA8VmlzaXRlZExpbmtTdG9y
ZSosIEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBtX3Zpc2l0ZWRMaW5rU3RvcmVz
V2l0aFVzZXJzOwogICAgIEhhc2hTZXQ8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkqPiBt
X3dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3hpZXM7CiAKICAgICBpbnQgbV9udW1iZXJPZlRp
bWVzU3VkZGVuVGVybWluYXRpb25XYXNEaXNhYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKaW5kZXggZTM1NTMxOWVhNGM0ZWU2NTFjNmJl
ZGY3Yzg2ZmJkZDIxZjI5ZGMyMy4uN2Q1NzVhNDA0YjA0NWI5MWFkN2FjOGU2Njc2MGQwOGJlMzhi
OTFkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxl
ci5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnRhc2tD
b21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYgdGFzaykKICAgICBwbGF0Zm9ybVRhc2tDb21wbGV0
ZWQodGFzayk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6cmVtb3ZlVGFza0Zyb21Q
YWdlTWFwKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKQordm9pZCBXZWJVUkxTY2hl
bWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBhZ2VNYXAoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1
aW50NjRfdCB0YXNrSUQpCiB7CiAgICAgYXV0byBpdGVyYXRvciA9IG1fdGFza3NCeVBhZ2VJZGVu
dGlmaWVyLmZpbmQocGFnZUlEKTsKICAgICBBU1NFUlQoaXRlcmF0b3IgIT0gbV90YXNrc0J5UGFn
ZUlkZW50aWZpZXIuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2No
ZW1lSGFuZGxlci5oCmluZGV4IDg5OTc2YzYxZjgzZDUyYjgxZjJjNDQwN2MyYzViYmQ3M2JmMmFl
NDkuLmI3YWYwNzU5NzVmMzJiOGFiODVlODhkMWJhZmZiMDVhMTcwNWE3YmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTY2LDEzICs2Niwx
MyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVN0b3BUYXNrKFdlYlBhZ2VQ
cm94eSYsIFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3Jt
VGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJikgPSAwOwogCi0gICAgdm9pZCByZW1vdmVU
YXNrRnJvbVBhZ2VNYXAodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpOworICAgIHZv
aWQgcmVtb3ZlVGFza0Zyb21QYWdlTWFwKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRf
dCB0YXNrSUQpOwogICAgIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0ZvclRhc2tJZGVudGlmaWVy
KHVpbnQ2NF90KSBjb25zdDsKIAogICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKIAogICAgIEhh
c2hNYXA8dWludDY0X3QsIFJlZjxXZWJVUkxTY2hlbWVUYXNrPj4gbV90YXNrczsKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7
CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgSGFzaFNldDx1aW50NjRfdD4+
IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyOwogICAgIAogICAgIFN5bmNMb2FkQ29tcGxldGlvbkhh
bmRsZXIgbV9zeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggYjg3MjA3M2JkMjc4MWZmMDliOWJmMjUzMzE2
MmMwNWFhNjljMDNlYi4uYTk3ZjE2MGNmMjU1NmZhMTM4ZjUyYmQ4MTVmMjNlOGVhNmM3ZWE2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtNTcsNyAr
NTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUo
V2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBhZ2VQcm94eSYsIFdlYlByb2Nlc3NQcm94eSYsIHVp
bnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBTeW5jTG9hZENv
bXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfQotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CiAgICAgV2ViUHJvY2Vzc1By
b3h5KiBwcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzLmdldCgpOyB9CiAKICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QoKSBjb25zdCB7IHJldHVybiBt
X3JlcXVlc3Q7IH0KQEAgLTg3LDcgKzg3LDcgQEAgcHJpdmF0ZToKICAgICBXZWJQYWdlUHJveHkq
IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViUHJvY2Vzc1Byb3h5PiBtX3Byb2Nlc3M7CiAgICAgdWlu
dDY0X3QgbV9pZGVudGlmaWVyOwotICAgIHVpbnQ2NF90IG1fcGFnZUlkZW50aWZpZXI7CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSWRlbnRpZmllcjsKICAgICBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwogICAgIGJvb2wgbV9zdG9wcGVkIHsgZmFsc2UgfTsK
ICAgICBib29sIG1fcmVzcG9uc2VTZW50IHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXgg
MGJmNTExMmE5ZTRkYmU2NGIwNzg0NjUwYzE5MTI5MTZlMDkxOTUzMy4uMGE4YjBjMTEyMjU1YjA3
M2UwYjZiYWI4NjUzMmM0ODM0NWIzZjkxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE1NzYsNyAr
MTU3Niw3IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1l
dHJ5V2FzQ2FwdHVyZWQoYm9vbCB2YWx1ZSwgQ29tcGxlCiAgICAgICAgIHByb2Nlc3NQb29sLT5l
bnN1cmVOZXR3b3JrUHJvY2VzcygpLnNldE5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkKG1fc2Vzc2lvbklELCB2YWx1ZSwgW3Byb2Nlc3NQb29sLCBjYWxsYmFja0FnZ3JlZ2F0b3Ig
PSBjYWxsYmFja0FnZ3JlZ2F0b3IuY29weVJlZigpXSB7IH0pOwogfQogCi12b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKHVpbnQ2NF90IHBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50
cmllcyhQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFN0cmluZz4mJiBkb21haW5zKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvKiB3
ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQ
YWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggNjQyZTMzMDlkMDc2MjQzZTM3ZDhlMWQyNzQ2NWIxMWY3
MTJkYjBjOC4uODIyYzNmYzc2MzdkN2M1ZWIwMDNjNjljZTk0NzQ1YmQzODI1OTNmMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWUuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0RldmljZU9yaWVudGF0aW9uT3JNb3Rpb25QZXJtaXNzaW9uU3RhdGUuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luSGFzaC5oPgogI2lu
Y2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTEzNSw3ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkdW1wUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNv
bnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcm
KTsKICAgICB2b2lkIGxvZ1VzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModWlu
dDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9t
YWlucyk+JiYpOworICAgIHZvaWQgZ2V0QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXMoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBk
b21haW5zKT4mJik7CiAgICAgdm9pZCBoYXNIYWRVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1ByZXZhbGVudFJl
c291cmNlKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgaXNSZWdpc3RlcmVkQXNSZWRpcmVjdGluZ1RvKGNvbnN0IFVSTCYgaG9zdFJlZGlyZWN0
ZWRGcm9tLCBjb25zdCBVUkwmIGhvc3RSZWRpcmVjdGVkVG8sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dh
eWxhbmRDb21wb3NpdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5k
Q29tcG9zaXRvci5jcHAKaW5kZXggZGM4ZDUzY2FmYmI2M2IxNmE3OGNhNjg1ZGQ3NGZhYjdjNDFk
MmFjZi4uYWNkNjBhNDRjMWYwMTIyNWU2MTcyODA2ZjE5N2Q1NjViNWZkZDU3YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCkBAIC0z
ODAsNyArMzgwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB3bF93ZWJraXRndGtfaW50ZXJmYWNl
IHdlYmtpdGd0a0ludGVyZmFjZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBh
dXRvKiBjb21wb3NpdG9yID0gc3RhdGljX2Nhc3Q8V2F5bGFuZENvbXBvc2l0b3IqPih3bF9yZXNv
dXJjZV9nZXRfdXNlcl9kYXRhKHJlc291cmNlKSk7Ci0gICAgICAgIGNvbXBvc2l0b3ItPmJpbmRT
dXJmYWNlVG9XZWJQYWdlKHN1cmZhY2UsIHBhZ2VJRCk7CisgICAgICAgIGNvbXBvc2l0b3ItPmJp
bmRTdXJmYWNlVG9XZWJQYWdlKHN1cmZhY2UsIG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVu
dGlmaWVyVHlwZT4ocGFnZUlEKSk7CiAgICAgfQogfTsKIApAQCAtNTQ3LDcgKzU0Nyw3IEBAIGJv
b2wgV2F5bGFuZENvbXBvc2l0b3I6OmdldFRleHR1cmUoV2ViUGFnZVByb3h5JiB3ZWJQYWdlLCB1
bnNpZ25lZCYgdGV4dHVyZSwgSW50CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdheWxh
bmRDb21wb3NpdG9yOjpiaW5kU3VyZmFjZVRvV2ViUGFnZShXYXlsYW5kQ29tcG9zaXRvcjo6U3Vy
ZmFjZSogc3VyZmFjZSwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXYXlsYW5kQ29tcG9zaXRvcjo6
YmluZFN1cmZhY2VUb1dlYlBhZ2UoV2F5bGFuZENvbXBvc2l0b3I6OlN1cmZhY2UqIHN1cmZhY2Us
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBXZWJQYWdlUHJveHkqIHdl
YlBhZ2UgPSBudWxscHRyOwogICAgIGZvciAoYXV0byogcGFnZSA6IG1fcGFnZU1hcC5rZXlzKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9z
aXRvci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgK
aW5kZXggMTQ4MTlmOGZhYzRlYzgwMjMwYmEyY2JiYjE4ZTZkMDk1OWI5Zjg0YS4uMmQ3ODBmZmIx
MjU3ZDQ5ZjA4ZGVhOWExODY4YThhNDMyYzYxYmU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmgKQEAgLTEwMyw3ICsxMDMsNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiAhIW1fZGlzcGxheTsgfQog
ICAgIFN0cmluZyBkaXNwbGF5TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU5hbWU7IH0K
IAotICAgIHZvaWQgYmluZFN1cmZhY2VUb1dlYlBhZ2UoU3VyZmFjZSosIHVpbnQ2NF90IHBhZ2VJ
RCk7CisgICAgdm9pZCBiaW5kU3VyZmFjZVRvV2ViUGFnZShTdXJmYWNlKiwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgcmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYpOwog
ICAgIHZvaWQgdW5yZWdpc3RlcldlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1t
CmluZGV4IDA4M2Q2ZmFmMTUyMDFmOGNlYzRkMDI4YmEzMDk4OGI3YWNhNzUwZDQuLmNlZmRlNjFj
NDliNTJhY2Q2ZjA4OTA4ODIwNmI4ZDY2Yzc1NTAyNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQpAQCAtMjUx
LDcgKzI1MSw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpiZWdpblN3aXBlR2VzdHVy
ZShfVUlOYXZpZ2F0aW9uSW50ZXJhY3RpdmVUcmFuc2l0aW9uCiAgICAgICAgIGlmIChmaW5pc2gp
CiAgICAgICAgICAgICBtX3dlYlBhZ2VQcm94eUZvckJhY2tGb3J3YXJkTGlzdEZvckN1cnJlbnRT
d2lwZS0+bmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5kKHRyYW5zaXRpb25Db21wbGV0ZWQsICp0YXJn
ZXRJdGVtKTsKICAgICB9XTsKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5w
YWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOwogICAg
IEdlc3R1cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7CiAgICAgW21fc3dpcGVU
cmFuc2l0aW9uQ29udGV4dCBfc2V0Q29tcGxldGlvbkhhbmRsZXI6W3BhZ2VJRCwgZ2VzdHVyZUlE
LCB0YXJnZXRJdGVtXSAoX1VJVmlld0NvbnRyb2xsZXJUcmFuc2l0aW9uQ29udGV4dCAqY29udGV4
dCwgQk9PTCBkaWRDb21wbGV0ZSkgewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxl
ciA9IGNvbnRyb2xsZXJGb3JHZXN0dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKQEAgLTMyMSw3ICsz
MjEsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kU3dpcGVHZXN0dXJlKFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0qIHRhcmdldEl0ZW0sCiAgICAgICAgIG1fd2ViUGFnZVByb3h5LmRp
ZENoYW5nZUJhY2tncm91bmRDb2xvcigpOwogICAgIH0KIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9
IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCk7CiAgICAgR2VzdHVyZUlEIGdlc3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJ
RDsKICAgICBtX2xvYWRDYWxsYmFjayA9IFt0aGlzLCBwYWdlSUQsIGdlc3R1cmVJRF0gewogICAg
ICAgICBhdXRvIGRyYXdpbmdBcmVhID0gbV93ZWJQYWdlUHJveHkucHJvdmlzaW9uYWxEcmF3aW5n
QXJlYSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcAppbmRleCBmZjQ0OTM0MWQ5ZTQ0MmZjMTYyZTQx
NTQ0YjM4NWIxN2MwNTNhMDM4Li41N2YzZmUxNzNjY2Q5NTE3MzY0MmExOTVlN2NmZDEwMTg4Njk4
OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQ
YXkvV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIElQQzo6Q29u
bmVjdGlvbiogV2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigp
IGNvbnN0CiAKIHVpbnQ2NF90IFdlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX3dlYlBhZ2UucGFnZUlEKCk7Cisg
ICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvcjo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBTdHJpbmcmIHZhbGlkYXRp
b25VUkxTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21h
dGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCmluZGV4IGIxY2Jj
OTYzYjBlZmNjODUyNDkyZDk2OGQ5ZWFhYzMxODI4ZTE1MmIuLjQ1NGNhNmJjODQ0OTgzZjU5OThm
ZmVlNGRhMzc0Y2NmY2M2MjI1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuY3Bw
CkBAIC0yMzEsNyArMjMxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRD
bGVhcldpbmRvd09iamVjdEZvckZyYW1lKFdlYkZyYW1lJiBmcmFtZSkKICAgICAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKGNh
bGxiYWNrSUQsIGVycm9yTWVzc2FnZSwgZXJyb3JUeXBlKSwgMCk7CiB9CiAKLXZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8
U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwg
aW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6ZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0
b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVu
dCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJQ
YWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAg
IGlmICghcGFnZSkgewpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6ZGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgZnJhbWVJRCwK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0
RnVuY3Rpb24oY2FsbGJhY2tJRCwgcmVzdWx0LCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZy
YW1lV2l0aE9yZGluYWwoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1
aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4s
IHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkg
ewpAQCAtMzUwLDcgKzM1MCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVz
b2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpCiAgICAgY29tcGxl
dGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBjaGlsZEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCi12
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVI
YW5kbGUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5v
ZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0
X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1
aW50NjRfdCBwYWdlSUQsCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxsb3B0LCBmcmFt
ZUZyb21FbGVtZW50LT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNDI2LDcgKzQyNiw3IEBA
IHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFt
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGOjpudWxs
b3B0LCBjaGlsZEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OnJlc29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3Qp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpy
ZXNvbHZlUGFyZW50RnJhbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNDUyLDcgKzQ1
Miw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZVBhcmVudEZyYW1l
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RG
OjpudWxsb3B0LCBwYXJlbnRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5Ojpmb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Zm9jdXNGcmFtZShQYWdlSWRl
bnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2Up
CkBAIC01MjcsNyArNTI3LDcgQEAgc3RhdGljIFdlYkNvcmU6OkZsb2F0UG9pbnQgY29udmVydFBv
aW50RnJvbUZyYW1lQ2xpZW50VG9Sb290VmlldyhXZWJDb3JlOjpGcmFtZVYKICAgICByZXR1cm4g
Y2xpZW50UG9pbnQ7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0
ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
bm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVt
IGNvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
PiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29t
cHV0ZUVsZW1lbnRMYXlvdXQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGlu
YXRlU3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+
LCBib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpA
QCAtNjM1LDcgKzYzNSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Y29tcHV0
ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmCiAgICAgY29tcGxldGlv
bkhhbmRsZXIoV1RGOjpudWxsb3B0LCByZXN1bHRFbGVtZW50Qm91bmRzLCByZXN1bHRJblZpZXdD
ZW50ZXJQb2ludCwgaXNPYnNjdXJlZCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpzZWxlY3RPcHRpb25FbGVtZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9u
YWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2Up
IHsKQEAgLTcwMyw3ICs3MDMsNyBAQCBzdGF0aWMgV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJl
Y3RGb3JTY3JlZW5zaG90KFdlYlBhZ2UmIHBhZ2UsIFdlYkNvcmU6OkVsZW1lbgogICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFrZVNjcmVlbnNo
b3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwg
Ym9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRf
dCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVu
c2hvdChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAgICAgU2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgaGFu
ZGxlOwogCkBAIC03NTEsNyArNzUxLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6RGlkVGFrZVNjcmVlbnNob3QoY2FsbGJhY2tJ
RCwgaGFuZGxlLCB7IH0pLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5
OjpnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSog
cGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAo
IXBhZ2UpIHsKQEAgLTc3Niw3ICs3NzYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYQogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgZm91bmRDb29raWVzKTsKIH0KIAotdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkZWxldGVDb29raWUodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eTo6ZGVsZXRlQ29va2llKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFn
ZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBp
ZiAoIXBhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaAppbmRleCA2Mjk1NDFkMjBi
YTEwZGY2MmRhMWUyNjA5MTY0ZWFjODkyYmEwZDEzLi4xMTY3NjQ1Mjc3ZGJjMTkzMGE1YTdhNTk3
ZGNiYzJkZjNlY2Y1NWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCkBAIC0yOCw2
ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIkNvb3JkaW5hdGVT
eXN0ZW0uaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYwLDE3ICs2MSwxNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikg
b3ZlcnJpZGU7CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eSBt
ZXNzYWdlcwotICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8U3Ry
aW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50
IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCByZXNvbHZl
Q2hpbGRGcmFtZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
dWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRs
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhh
bmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+
JiYpOwotICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgcmVzb2x2ZVBh
cmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOwotICAgIHZvaWQgZm9j
dXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpOwotICAgIHZvaWQgY29t
cHV0ZUVsZW1lbnRMYXlvdXQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lz
dGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6Oklu
dFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYpOwotICAgIHZvaWQg
c2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4p
PiYmKTsKLSAgICB2b2lkIHRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwg
Ym9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCk7Ci0gICAgdm9pZCBnZXRD
b29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
KT4mJik7Ci0gICAgdm9pZCBkZWxldGVDb29raWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmFtZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25h
bDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5j
dGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxi
YWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwor
ICAgIHZvaWQgcmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcmVzb2x2
ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0
X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hp
bGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3Ry
aW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVQYXJlbnRGcmFtZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgZm9jdXNGcmFtZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCk7CisgICAgdm9pZCBjb21w
dXRlRWxlbWVudExheW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRp
bmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJD
b3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmKTsKKyAg
ICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFN0cmluZz4pPiYmKTsKKyAgICB2b2lkIHRha2VTY3JlZW5zaG90KFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBz
Y3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKKyAgICB2b2lkIGdldENvb2tpZXNGb3JGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPik+JiYpOworICAgIHZvaWQgZGVsZXRlQ29v
a2llKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29v
a2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CiAK
ICAgICBTdHJpbmcgbV9zZXNzaW9uSWRlbnRpZmllcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYWExMjE5ZTJlZjFmYzA3MDA0NTk2ZDI0
YTFiNTcxNmQzMDZmNzhiZS4uZDcyZjg5ZDI2MzU5Y2YwMWNjZmQ1MzFlOTZlMDFmNDQ0MDlhYWY1
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCkBA
IC0yMSwyMSArMjEsMjEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eSB7Ci0gICAgRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24odWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgZnVuY3Rpb24sIFZlY3RvcjxTdHJp
bmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQg
Y2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIEV2YWx1YXRlSmF2YVNj
cmlwdEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgU3RyaW5nIGZ1bmN0aW9uLCBWZWN0b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhw
ZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0
X3QgY2FsbGJhY2tJRCkKIAotICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsKSAtPiAoT3B0aW9u
YWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2
ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVp
bnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50
NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBuYW1lKSAtPiAoT3B0aW9uYWw8
U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCi0gICAgUmVzb2x2ZVBh
cmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFs
PFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVD
aGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRo
Tm9kZUhhbmRsZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVp
bnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBuYW1l
KSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5j
CisgICAgUmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRf
dCBmcmFtZUlEKSBBc3luYwogCi0gICAgRm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQpCisgICAgRm9jdXNGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQpCiAKLSAgICBDb21wdXRlRWxlbWVudExheW91dCh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9s
bEludG9WaWV3SWZOZWVkZWQsIGVudW06dWludDhfdCBXZWJLaXQ6OkNvb3JkaW5hdGVTeXN0ZW0g
Y29vcmRpbmF0ZVN5c3RlbSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3Jl
OjpJbnRSZWN0IHJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQ
b2ludCwgYm9vbCBpc09ic2N1cmVkKSBBc3luYworICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgZW51bTp1aW50OF90IFdlYktp
dDo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5n
PiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50
UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlzT2JzY3VyZWQpIEFzeW5jCiAKLSAgICBT
ZWxlY3RPcHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAg
ICBTZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVy
cm9yVHlwZSkgQXN5bmMKIAotICAgIFRha2VTY3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBUYWtl
U2NyZWVuc2hvdChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGJvb2wg
Y2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBHZXRDb29raWVzRm9y
RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3Ry
aW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIEFzeW5jCi0g
ICAgRGVsZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5n
IGNvb2tpZU5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKKyAgICBH
ZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+IGNvb2tpZXMpIEFzeW5jCisgICAgRGVsZXRlQ29va2llKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUpIC0+
IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSkgQXN5bmMKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRl
bnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9n
bGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKaW5kZXggMDgyZDYwOWE4N2JmMzdjN2VmMmY0YjRk
ZThlMjRjZGRhMjUxMzY2ZC4uNGEyM2JmNTYwMTA3YzMxZjFhNGRlMmM5NjEyOTlhNzAxMDgxNzUw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAKQEAgLTIy
NCw3ICsyMjQsNyBAQCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRfd2ViX2V4dGVuc2lvbl9nZXRfcGFn
ZShXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgZ3VpbgogICAgIFdlYktpdFdlYkV4dGVu
c2lvblByaXZhdGUqIHByaXYgPSBleHRlbnNpb24tPnByaXY7CiAgICAgV2ViUGFnZU1hcDo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gcHJpdi0+cGFnZXMuZW5kKCk7CiAgICAgZm9yIChXZWJQYWdlTWFw
Ojpjb25zdF9pdGVyYXRvciBpdCA9IHByaXYtPnBhZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkKLSAgICAgICAgaWYgKGl0LT5rZXktPnBhZ2VJRCgpID09IHBhZ2VJRCkKKyAgICAgICAgaWYg
KGl0LT5rZXktPnBhZ2VJRCgpLnRvVUludDY0KCkgPT0gcGFnZUlEKQogICAgICAgICAgICAgcmV0
dXJuIGl0LT52YWx1ZS5nZXQoKTsKIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dl
YktpdFdlYlBhZ2UuY3BwCmluZGV4IGU1N2UyZTc3ZTU1ODQ4ZThiYTcyNWY5ZDMyMjc3MDlmZmYx
NzhhZmYuLmNmYzUwMzFlZDZlNGEyOTU0ZmUwMmEwM2RhODdhMTYxY2QyZDMwODIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJL
aXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTc2Myw3ICs3NjMsNyBAQCBndWludDY0
IHdlYmtpdF93ZWJfcGFnZV9nZXRfaWQoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1BBR0Uod2ViUGFnZSksIDApOwogCi0g
ICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYtPndlYlBhZ2UtPnBhZ2VJRCgpOworICAgIHJldHVybiB3
ZWJQYWdlLT5wcml2LT53ZWJQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpOwogfQogCiAvKioKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IGFlMzg4M2Q4NmI2ODllNjY2ZjE2YWNlZjkwMTY3
Mjk0ZTVkMjc4N2MuLjhiMWFkNWVkZjBlNmI5MGQ1OGMyNGU2MTVmYWRjOWM3MTA3YTVmNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBJUAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChkZWNvZGVyLm1lc3Nh
Z2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGFnZTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkud2ViUGFnZShkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpCisgICAgICAgIGlmIChhdXRvKiB3
ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRp
ZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGluYXRpb25JRCgpKSkpCiAgICAg
ICAgICAgICB3ZWJQYWdlLT5kaWRSZWNlaXZlV2ViUGFnZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVj
b2Rlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAg
IGlmIChkZWNvZGVyLm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8g
d2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UoZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKQorICAgICAgICBpZiAoYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKSkpCiAgICAgICAgICAgICB3ZWJQYWdlLT5wYXltZW50Q29v
cmRpbmF0b3IoKS0+ZGlkUmVjZWl2ZU1lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2Rlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xNzEsNyArMTcxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24KIAogI2lmIEVOQUJMRShBUFBMRV9QQVlfUkVNT1RFX1VJKQogICAgIGlmIChkZWNvZGVy
Lm1lc3NhZ2VSZWNlaXZlck5hbWUoKSA9PSBNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9y
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gd2ViUGFnZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKQor
ICAgICAgICBpZiAoYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFn
ZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdlSWRlbnRpZmllclR5cGU+KGRlY29kZXIuZGVzdGlu
YXRpb25JRCgpKSkpCiAgICAgICAgICAgICB3ZWJQYWdlLT5wYXltZW50Q29vcmRpbmF0b3IoKS0+
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIsIHJlcGx5RW5jb2Rlcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggMDRhZTBlNDVkNWU5ZDI5
Y2EwZjI3MGEwNjQxOGE2YWIyZDUwMWZjYi4uMjc4YjYwMTg0NzlmMzY1OTAzNDhjODk1MTg1NWFj
ZjQzZGNiNTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIs
IENhY2hlZFJlc291CiAgICAgYXV0byYgZnJhbWVMb2FkZXJDbGllbnQgPSByZXNvdXJjZUxvYWRl
ci5mcmFtZUxvYWRlcigpLT5jbGllbnQoKTsKIAogICAgIFdlYlJlc291cmNlTG9hZGVyOjpUcmFj
a2luZ1BhcmFtZXRlcnMgdHJhY2tpbmdQYXJhbWV0ZXJzOwotICAgIHRyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1ZU9yKDApOworICAgIHRy
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQgPSBmcmFtZUxvYWRlckNsaWVudC5wYWdlSUQoKS52YWx1
ZU9yKFBhZ2VJZGVudGlmaWVyIHsgfSk7CiAgICAgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQg
PSBmcmFtZUxvYWRlckNsaWVudC5mcmFtZUlEKCkudmFsdWVPcigwKTsKICAgICB0cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCA9IGlkZW50aWZpZXI7CiAgICAgYXV0byBzZXNzaW9uSUQgPSBm
cmFtZUxvYWRlckNsaWVudC5zZXNzaW9uSUQoKTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdl
YkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9h
ZGVyLCBDYWNoZWRSZXNvdQogICAgIC8vIHRoZW4gd2Ugc2hvdWxkIHJlbWVtYmVyIHRoZSBSZXNv
dXJjZUxvYWRlciBpbiBvdXIgcmVjb3JkcyBidXQgbm90IHNjaGVkdWxlIGl0IGluIHRoZSBOZXR3
b3JrUHJvY2Vzcy4KICAgICBpZiAocmVzb3VyY2VMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+c2No
ZWR1bGVBcmNoaXZlTG9hZChyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgp
KSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFzIGFu
IGFyY2hpdmUgcmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIs
ICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNvdXJj
ZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRy
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVu
dGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwg
InNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNl
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIG1fd2ViUmVzb3VyY2VMb2FkZXJzLnNldChpZGVu
dGlmaWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHJlc291cmNlTG9hZGVyLCB0cmFja2lu
Z1BhcmFtZXRlcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE3NSwxNCArMTc1LDE0
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYg
cmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAKICAgICBpZiAocmVzb3VyY2VMb2FkZXIuZG9j
dW1lbnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRSZXNvdXJjZShy
ZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLCByZXNvdXJjZUxvYWRlci5y
ZXF1ZXN0KCkudXJsKCkpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQ
cm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJl
IGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJl
c291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBs
aWNhdGlvbiBjYWNoZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNv
dXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGZyb20gYXBwbGlj
YXRpb24gY2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5m
cmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgbV93ZWJSZXNvdXJjZUxvYWRl
cnMuc2V0KGlkZW50aWZpZXIsIFdlYlJlc291cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VMb2Fk
ZXIsIHRyYWNraW5nUGFyYW1ldGVycykpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
aWYgKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKS5wcm90b2NvbElzRGF0YSgpKSB7CiAg
ICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJh
dGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGxvYWRlZCBhcyBkYXRhLiIsIHJl
c291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2ls
bCBiZSBsb2FkZWQgYXMgZGF0YSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNl
TG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGFzIGRh
dGEgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0
cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2Fk
ZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2Fk
ZXIsIENhY2hlZFJlc291CiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGlzUXVpY2tMb29r
UHJldmlld1VSTChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkpKSB7CiAgICAgICAgIExP
RyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2No
ZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3Vy
Y2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6
IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2UgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6
IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBRdWlja0xvb2sgcmVzb3VyY2UgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlm
aWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMjAxLDcgKzIwMSw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291
CiAgICAgLy8gaHR0cHM6Ly9ibG9ncy5nbm9tZS5vcmcvYWxleGwvMjAxMi8wMS8yNi9yZXNvdXJj
ZXMtaW4tZ2xpYi8KICAgICBpZiAocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3Rv
Y29sSXMoInJlc291cmNlIikpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdl
YlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwg
YmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJjZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJj
ZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJj
ZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRy
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVu
dGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwg
InNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhIEdSZXNvdXJjZSAoZnJhbWUg
PSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFy
YW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlk
ZW50aWZpZXIpOwogICAgICAgICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0yMTEsMTEgKzIxMSwxMSBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNo
ZWRSZXNvdQogICAgIFdlYlNlcnZpY2VXb3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuaGFuZGxl
RmV0Y2gocmVzb3VyY2VMb2FkZXIsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRU
UFNUb0hUVFBSZWRpcmVjdCwgW3RoaXMsIHRyYWNraW5nUGFyYW1ldGVycywgaWRlbnRpZmllciwg
c2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhp
bXVtQnVmZmVyaW5nVGltZSA9IG1heGltdW1CdWZmZXJpbmdUaW1lKHJlc291cmNlKSwgcmVzb3Vy
Y2VMb2FkZXIgPSBtYWtlUmVmKHJlc291cmNlTG9hZGVyKV0gKFNlcnZpY2VXb3JrZXJDbGllbnRG
ZXRjaDo6UmVzdWx0IHJlc3VsdCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gU2Vy
dmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQ6OlVuaGFuZGxlZCkgewogICAgICAgICAgICAg
TE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5Ojpz
Y2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdv
cmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIiwgcmVzb3VyY2VMb2FkZXItPnVybCgpLnN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBzY2hlZHVs
ZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0g
JXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwg
InNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgc2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtl
ciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVz
b3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChyZXNvdXJjZUxvYWRlci0+b3B0aW9ucygp
LnNlcnZpY2VXb3JrZXJzTW9kZSA9PSBTZXJ2aWNlV29ya2Vyc01vZGU6Ok9ubHkpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCks
ICJzY2hlZHVsZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNlV29y
a2VyIGhhbmRsZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBy
ZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tp
bmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDog
dW5hYmxlIHRvIHNjaGVkdWxlIFVSTCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZldGNo
IGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLT5m
cmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Jlc291cmNlTG9hZGVyID0gV1RGTW92ZShyZXNvdXJjZUxvYWRlcildIHsKICAgICAgICAg
ICAgICAgICBhdXRvIGVycm9yID0gaW50ZXJuYWxFcnJvcihyZXNvdXJjZUxvYWRlci0+cmVxdWVz
dCgpLnVybCgpKTsKICAgICAgICAgICAgICAgICBlcnJvci5zZXRUeXBlKFJlc291cmNlRXJyb3I6
OlR5cGU6OkNhbmNlbGxhdGlvbik7CkBAIC0yMjcsMTMgKzIyNywxMyBAQCB2b2lkIFdlYkxvYWRl
clN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBD
YWNoZWRSZXNvdQogICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRl
clN0cmF0ZWd5KCkudHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRl
cikpCiAgICAgICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJMb2FkZXJTdHJhdGVn
eSgpLnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlci5nZXQoKSwg
cmVzb3VyY2VMb2FkZXItPnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzZXNzaW9uSUQs
IHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJp
bmdUaW1lKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5
IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkg
YW55IGhhbmRsZXJzIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIt
PmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgIH0pOwogI2Vsc2UKICAgICBpZiAo
IXRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3VyY2VMb2FkZXIpKQogICAgICAg
ICBzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIsIHJlc291cmNl
TG9hZGVyLnJlcXVlc3QoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzZXNzaW9uSUQsIHNob3VsZENs
ZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdUaW1lKHJl
c291cmNlKSk7CiAgICAgZWxzZQotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291
cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJz
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAi
c2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJzIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRp
Zmllcik7CiAjZW5kaWYKIH0KIApAQCAtMzI1LDcgKzMyNSw3IEBAIHZvaWQgV2ViTG9hZGVyU3Ry
YXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVz
b3VyY2VMCiAgICAgaWYgKGxvYWRQYXJhbWV0ZXJzLm9wdGlvbnMubW9kZSAhPSBGZXRjaE9wdGlv
bnM6Ok1vZGU6Ok5hdmlnYXRlKSB7CiAgICAgICAgIEFTU0VSVChsb2FkUGFyYW1ldGVycy5zb3Vy
Y2VPcmlnaW4pOwogICAgICAgICBpZiAoIWxvYWRQYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbikgewot
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwg
InNjaGVkdWxlTG9hZDogbm8gc291cmNlT3JpZ2luIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVk
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50
PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRp
Zmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNl
TG9hZGVyLCAic2NoZWR1bGVMb2FkOiBubyBzb3VyY2VPcmlnaW4gKGZyYW1lID0gJXAsIHByaW9y
aXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNf
Y2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFt
ZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxv
YWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgICAgICAgICAgc2NoZWR1bGVJbnRlcm5hbGx5
RmFpbGVkTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTM0Niw5ICszNDYsOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxv
YWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTAogCiAgICAgQVNT
RVJUKChsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQgJiYgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJ
RCkgfHwgbG9hZFBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9PSBDbGllbnRDcmVk
ZW50aWFsUG9saWN5OjpDYW5ub3RBc2tDbGllbnRGb3JDcmVkZW50aWFscyk7CiAKLSAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBSZXNvdXJj
ZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAs
IHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBz
dGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9h
ZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFy
YW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNl
TG9hZGVyLCAic2NoZWR1bGVMb2FkOiBSZXNvdXJjZSBpcyBiZWluZyBzY2hlZHVsZWQgd2l0aCB0
aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUlu
dDY0KCksIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZp
ZXIpOwogICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpTY2hlZHVsZVJlc291cmNlTG9hZChsb2FkUGFyYW1ldGVycyksIDAp
KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIs
ICJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hlZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3
b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJl
c291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVx
dWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOworICAgICAgICBSRUxF
QVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2FkOiBV
bmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1l
ID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFt
ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgp
KSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIGxvYWRQYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogICAgICAgICAvLyBXZSBwcm9i
YWJseSBmYWlsZWQgdG8gc2NoZWR1bGUgdGhpcyBsb2FkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNz
IGJlY2F1c2UgaXQgaGFkIGNyYXNoZWQuCiAgICAgICAgIC8vIFRoaXMgbG9hZCB3aWxsIG5ldmVy
IHN1Y2NlZWQgc28gd2Ugd2lsbCBzY2hlZHVsZSBpdCB0byBmYWlsIGFzeW5jaHJvbm91c2x5Lgog
ICAgICAgICBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKHJlc291cmNlTG9hZGVyKTsKQEAg
LTUwNywxOSArNTA3LDE5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgV2ViRnJhbWUq
IHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+
d2ViRnJhbWUoKSA6IG51bGxwdHI7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lID8g
d2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CiAKLSAgICBhdXRvIHBhZ2VJRCA9IHdlYlBhZ2Ug
PyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7CisgICAgYXV0byBwYWdlSUQgPSB3ZWJQYWdlID8gd2Vi
UGFnZS0+cGFnZUlEKCkgOiBQYWdlSWRlbnRpZmllciB7IH07CiAgICAgYXV0byBmcmFtZUlEID0g
d2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKICAgICBhdXRvIHNlc3Npb25JRCA9
IHdlYlBhZ2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0
U2Vzc2lvbklEKCk7CiAKICAgICBhdXRvKiBkb2N1bWVudCA9IGZyYW1lTG9hZGVyLmZyYW1lKCku
ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogbm8g
ZG9jdW1lbnQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlbHUpIiwgcGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVy
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5OiBubyBkb2N1bWVudCAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQudG9VSW50
NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7CiAgICAgICAgIGVycm9yID0g
aW50ZXJuYWxFcnJvcihyZXF1ZXN0LnVybCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmIChhdXRvIHN5bmNMb2FkUmVzdWx0ID0gdHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2lu
Z1VSTFNjaGVtZUhhbmRsZXIoZnJhbWVMb2FkZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHJl
cXVlc3QpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklE
LCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIGNhbGxpbmcgdHJ5TG9hZGluZ1N5
bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUsIGVycm9yID0gJWQpIiwgcGFn
ZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBzeW5jTG9hZFJlc3VsdC0+ZXJy
b3IuZXJyb3JDb2RlKCkpOworICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNl
c3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBjYWxsaW5nIHRyeUxv
YWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1LCBlcnJvciA9ICVk
KSIsIHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBz
eW5jTG9hZFJlc3VsdC0+ZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgICAgICBlcnJvciA9IFdURk1v
dmUoc3luY0xvYWRSZXN1bHQtPmVycm9yKTsKICAgICAgICAgcmVzcG9uc2UgPSBXVEZNb3ZlKHN5
bmNMb2FkUmVzdWx0LT5yZXNwb25zZSk7CiAgICAgICAgIGRhdGEgPSBXVEZNb3ZlKHN5bmNMb2Fk
UmVzdWx0LT5kYXRhKTsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5z
aQogICAgIEhhbmdEZXRlY3Rpb25EaXNhYmxlciBoYW5nRGV0ZWN0aW9uRGlzYWJsZXI7CiAKICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xvYWQobG9hZFBhcmFtZXRlcnMpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBlcmZvcm1TeW5jaHJvbm91c0xv
YWQ6OlJlcGx5KGVycm9yLCByZXNwb25zZSwgZGF0YSksIDApKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291cmNlU3luY2hyb25vdXNs
eTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9jZXNzIG1lc3NhZ2UgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
bHUpIiwgcGFnZUlELCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKKyAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5OiBmYWlsZWQgc2VuZGluZyBzeW5jaHJvbm91cyBuZXR3b3JrIHByb2Nlc3MgbWVz
c2FnZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICVsdSkiLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRl
bnRpZmllcik7CiAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gd2ViUGFnZSA/IHdlYlBhZ2UtPmNv
cmVQYWdlKCkgOiBudWxscHRyKQogICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xvZ2dpbmdD
bGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tl
eXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpz
eW5jaHJvbm91c01lc3NhZ2VGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlOjpObyk7
CiAgICAgICAgIHJlc3BvbnNlID0gUmVzb3VyY2VSZXNwb25zZSgpOwpAQCAtNTYxLDcgKzU2MSw3
IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJh
bWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgfQogfQogCi12b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpCit2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQp
CiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpQYWdlTG9hZENvbXBsZXRlZCh3ZWJQYWdlSUQpLCAwKTsKIH0KQEAgLTY0OCwx
MCArNjQ4LDEwIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnByZWNvbm5lY3RUbyhGcmFtZUxv
YWRlciYgZnJhbWVMb2FkZXIsIGNvbnN0IFVSTCYgdXJsLCBTCiAKICAgICBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFJl
c291cmNlUmVxdWVzdCB7IHVybCB9OwotICAgIHBhcmFtZXRlcnMud2ViUGFnZUlEID0gd2ViUGFn
ZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogMDsKLSAgICBwYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSB3
ZWJGcmFtZSA/IHdlYkZyYW1lLT5mcmFtZUlEKCkgOiAwOworICAgIHBhcmFtZXRlcnMud2ViUGFn
ZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CisgICAgcGFyYW1ldGVycy53ZWJGcmFtZUlEID0gd2Vi
RnJhbWUtPmZyYW1lSUQoKTsKICAgICBwYXJhbWV0ZXJzLnBhcmVudFBJRCA9IHByZXNlbnRpbmdB
cHBsaWNhdGlvblBJRCgpOwotICAgIHBhcmFtZXRlcnMuc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdl
YlBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsK
KyAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBhZ2UtPnNlc3Npb25JRCgpOwogICAgIHBh
cmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzdG9yZWRDcmVkZW50aWFsc1BvbGlj
eTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFByZWNvbm5lY3RPbmx5ID0gUHJlY29ubmVjdE9ubHk6
OlllczsKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJlc3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzID0g
c2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA0YWY1OTk0MWUzNGY3
MmFkMjZlODFlZmI1NjA2MDY3NTE4MTFmOGM2Li5hYzUyNDk2NmE4NTIxZTBlM2Q2NWViNjJiOWY3
MGU4MmY3OGNjMjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJMb2FkZXJTdHJhdGVneS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIAog
ICAgIHZvaWQgbG9hZFJlc291cmNlKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQdHI8V2ViQ29yZTo6
U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGxvYWRSZXNvdXJjZVN5
bmNocm9ub3VzbHkoV2ViQ29yZTo6RnJhbWVMb2FkZXImLCB1bnNpZ25lZCBsb25nIHJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6
OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OkZldGNoT3B0aW9ucyYsIGNv
bnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYgZGF0YSkgZmluYWw7Ci0gICAg
dm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpIGZpbmFsOworICAgIHZv
aWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGZpbmFsOwogCiAg
ICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lk
IHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNl
TG9hZGVyLmNwcAppbmRleCBiZjg4ZmRhMzAwN2UxNjRmZjM4YTk1MjJhYmI4MWZlZmQ3ZTlmODUy
Li44OGJkNTNiZjFmOGZiNzM2ZWIxNzNlZjY0ZjFlMzAzZDFiYjEwMGMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC04OCwxNiArODgsMTYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2VkUmVxdWVzdCwgUmVzb3UKICAgICBSZWY8V2Vi
UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgTE9HKE5ldHdvcmss
ICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCB0byAnJXMn
IiwgcHJvcG9zZWRSZXF1ZXN0LnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIGlmIChtX2NvcmVMb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkRmFsbGJh
Y2tGb3JSZWRpcmVjdChtX2NvcmVMb2FkZXIuZ2V0KCksIHByb3Bvc2VkUmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRS
ZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVj
dCByZXR1cm5lZCBmYWxzZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVx
dWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVkaXJlY3Qg
cmV0dXJuZWQgZmFsc2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX2Nv
cmVMb2FkZXItPndpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKHByb3Bvc2VkUmVxdWVzdCksIHJlZGly
ZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlz
KV0oUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCkgewogICAgICAgICBpZiAoIW1fY29yZUxvYWRl
ciB8fCAhbV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG5v
IGNvcmVsb2FkZXIgb3IgaWRlbnRpZmllciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBubyBjb3JlbG9hZGVyIG9y
IGlkZW50aWZpZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQu
dG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAt
MTEzLDEyICsxMTMsMTIgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkU2VuZERhdGEodWlu
dDY0X3QgYnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzVG9CZVMKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSwgYm9vbCBuZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSkKIHsKICAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZVJlc3BvbnNlIGZvciAnJXMnLiBTdGF0dXMgJWQuIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJp
bmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
c3RhdHVzID0gJWQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFy
YW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCByZXNwb25z
ZS5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHN0YXR1cyA9ICVkKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgp
KTsKIAogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICBpZiAobV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hl
SG9zdCgpLm1heWJlTG9hZEZhbGxiYWNrRm9yUmVzcG9uc2UobV9jb3JlTG9hZGVyLmdldCgpLCBy
ZXNwb25zZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c3BvbnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMgYWxyZWFk
eSBjYWNoZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1f
dHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNl
SUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSB0aGUgY29udGVudCBpcyBhbHJlYWR5IGNhY2hl
ZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJl
c3BvbnNlJiByZXNwb25zZSwgYm9vCiAgICAgICAgICAgICBpZiAobV9jb3JlTG9hZGVyICYmIG1f
Y29yZUxvYWRlci0+aWRlbnRpZmllcigpKQogICAgICAgICAgICAgICAgIHNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Q29udGludWVEaWRSZWNlaXZlUmVzcG9uc2UoKSk7CiAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkUmVjZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2Ugbm8gY29yZUxv
YWRlciBvciBubyBJRCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVz
b3VyY2VJRCk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVj
ZWl2ZVJlc3BvbnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2Ugbm8gY29yZUxvYWRlciBv
ciBubyBJRCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJ
bnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5yZXNvdXJjZUlEKTsKICAgICAgICAgfTsKICAgICB9CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2
b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmIGRhdGEsIGludDY0X3QgZQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9j
ZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTmV0d29yayBwcm9jZXNzIHNob3VsZCBub3Qgc2VuZCBk
YXRhIHVudGlsIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2UiKTsKIAogICAgIGlmICghbV9u
dW1CeXRlc1JlY2VpdmVkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAg
fQogICAgIG1fbnVtQnl0ZXNSZWNlaXZlZCArPSBkYXRhLnNpemUoKTsKIApAQCAtMTU4LDcgKzE1
OCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBlCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpk
aWRGaW5pc2hSZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9h
ZE1ldHJpY3MpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRGaW5pc2hSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIG1fbnVtQnl0ZXNSZWNlaXZlZCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoUmVzb3VyY2VMb2FkOiAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiLCBsZW5ndGggPSAlemQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUlu
dDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnJlc291cmNlSUQsIG1fbnVtQnl0ZXNSZWNlaXZlZCk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNT
QUdFKCFtX2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIkxvYWQgc2hvdWxkIG5vdCBiZSBh
YmxlIHRvIGZpbmlzaCBiZWZvcmUgd2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogICAg
IG1fY29yZUxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhuZXR3b3JrTG9hZE1ldHJpY3MpOwpAQCAt
MTY3LDcgKzE2Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291cmNl
TG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMCiB2b2lkIFdlYlJlc291cmNl
TG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQog
ewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRG
YWlsUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxSZXNv
dXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsUmVzb3VyY2VMb2FkOiAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlEKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9jZXNzaW5nTmV0d29ya1Jl
c3BvbnNlLCAiTG9hZCBzaG91bGQgbm90IGJlIGFibGUgdG8gZmluaXNoIGJlZm9yZSB3ZSd2ZSB2
YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRGYWlsUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIGVy
cm9yKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSgpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2Fk
ZXI6OmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgZm9yICclcyciLCBtX2NvcmVMb2Fk
ZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTogKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiki
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAg
bV9jb3JlTG9hZGVyLT5kaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCk7CiB9CkBAIC0x
ODcsNyArMTg3LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgpCiB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVy
WEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVkKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdl
YlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNl
Y3VyaXR5UG9saWN5RGVuaWVkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0b3BMb2Fk
aW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQ6IChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1l
dGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVu
dFNlY3VyaXR5UG9saWN5RGVuaWVkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3Ry
YWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIG1fY29yZUxvYWRlci0+ZG9jdW1l
bnRMb2FkZXIoKS0+c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0
eVBvbGljeURlbmllZChtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSwgcmVzcG9uc2UpOwogfQpA
QCAtMTk2LDEzICsxOTYsMTMgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdB
ZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmkKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZShjb25zdCBTaGFyZWFibGVSZXNvdXJjZTo6
SGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVz
b3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNvdXJjZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+
dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRSZWNlaXZlUmVzb3VyY2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFt
ZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFy
YW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlUmVzb3VyY2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0g
aGFuZGxlLnRyeVdyYXBJblNoYXJlZEJ1ZmZlcigpOwogCiAgICAgaWYgKCFidWZmZXIpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJVbmFibGUgdG8gY3JlYXRlIGJ1ZmZlciBmcm9tIFNoYXJlYWJsZVJl
c291cmNlIHNlbnQgZnJvbSB0aGUgbmV0d29yayBwcm9jZXNzLiIpOwotICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBjcmVhdGUgU2hh
cmVkQnVmZmVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNl
OiBVbmFibGUgdG8gY3JlYXRlIFNoYXJlZEJ1ZmZlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICAgICAgaWYgKGF1dG8q
IGZyYW1lID0gbV9jb3JlTG9hZGVyLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byog
cGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+ZGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQoKS5sb2dEaWFnbm9zdGljTWVzc2FnZShXZWJDb3JlOjpEaWFnbm9zdGljTG9n
Z2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xvZ2dpbmdL
ZXlzOjpjcmVhdGVTaGFyZWRCdWZmZXJGYWlsZWRLZXkoKSwgV2ViQ29yZTo6U2hvdWxkU2FtcGxl
OjpObyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVz
b3VyY2VMb2FkZXIuaAppbmRleCA3ZmQ3ODMyMjMzYTM2MmMyM2E5MDRmYzE1ZWYzNGNhNjRhOTY3
ZWFlLi41ODY1NDM3MThlNWU4Mzg4YjhiNDFhYjAyMDM3YWM3NmU3ODY5MzdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01MCw3ICs1MSw3IEBAIHR5cGVkZWYgdWludDY0
X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIGNsYXNzIFdlYlJlc291cmNlTG9hZGVyIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViUmVzb3VyY2VMb2FkZXI+LCBwdWJsaWMgSVBDOjpNZXNzYWdlU2Vu
ZGVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgVHJhY2tpbmdQYXJhbWV0ZXJzIHsKLSAgICAgICAg
dWludDY0X3QgcGFnZUlEIHsgMCB9OworICAgICAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQ7CiAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQgeyAwIH07CiAgICAgICAgIFJlc291cmNl
TG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCB7IDAgfTsKICAgICB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDM0YjVhNjQzZjAzYmRhNjFmZGE0YjMzZDg4N2I1ZDFk
Yjg5ZGM2MDcuLmFkYzQ3NjY1MmU4MDdiMjM2YWNjMTE2NTRhNWZjMTcxNTczNWM5MTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGlj
IGNvbnN0IFNlY29uZHMgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwMF9tcyB9OyAv
LyBPbmx5IHVzZWQgYnkgbGEKIAogY2xhc3MgU2VydmljZVdvcmtlckZyYW1lTG9hZGVyQ2xpZW50
IGZpbmFsIDogcHVibGljIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgewogcHVibGljOgotICAgIFNl
cnZpY2VXb3JrZXJGcmFtZUxvYWRlckNsaWVudChXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQs
IHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQorICAgIFNlcnZpY2VX
b3JrZXJGcmFtZUxvYWRlckNsaWVudChXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgY29u
bmVjdGlvbiwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQogICAg
ICAgICA6IG1fY29ubmVjdGlvbihjb25uZWN0aW9uKQogICAgICAgICAsIG1fc2Vzc2lvbklEKHNl
c3Npb25JRCkKICAgICAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC05NSwxOCArOTUsMTggQEAg
cHJpdmF0ZToKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9h
ZGVyKiwgdW5zaWduZWQgbG9uZykgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uSUQ7IH0K
LSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9w
YWdlSUQ7IH0KKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9wYWdlSUQ7IH0KICAgICBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZnJhbWVJRDsgfQogICAgIFN0cmluZyB1
c2VyQWdlbnQoY29uc3QgVVJMJikgZmluYWwgeyByZXR1cm4gbV91c2VyQWdlbnQ7IH0KIAogICAg
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJiBtX2Nvbm5lY3Rpb247CiAgICAgUEFMOjpT
ZXNzaW9uSUQgbV9zZXNzaW9uSUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07CisgICAg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlE
IHsgMCB9OwogICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKIH07CiAKLVdlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQorV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5l
Y3Rpb24+JiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgOiBtX2Nvbm5l
Y3Rpb25Ub05ldHdvcmtQcm9jZXNzKFdURk1vdmUoY29ubmVjdGlvbikpCiAgICAgLCBtX3BhZ2VH
cm91cElEKHBhZ2VHcm91cElEKQogICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtMjI2LDEyICsy
MjYsMTIgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChT
V1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIHNlcnYKIHsKICAgICBhdXRvKiBzZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIGlmICghc2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5KSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7
IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlk
Tm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmICghaXNWYWxpZEZldGNoKHJlcXVlc3QsIG9wdGlvbnMsIHNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS0+c2NyaXB0VVJMKCksIHJlZmVycmVyKSkgewotICAgICAgICBtX2Nvbm5lY3Rp
b25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAg
IG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDZj
ZTgzZDFkMDllYWVkY2FlNGZlODczZjE4ZWM1MmI1OWU0ZmExNzIuLmZiYjYzMGU0ZTE5YjM1OWRj
MTcwY2NlYTAxOGE0OTgzMjE2NmRhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aApAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5jZXNTdG9yZTsKIAogY2xhc3Mg
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24gZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1dD
b250ZXh0TWFuYWdlcjo6Q29ubmVjdGlvbiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsK
IHB1YmxpYzoKLSAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJQcmVmZXJlbmNlc1N0b3JlJik7CisgICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24o
UmVmPElQQzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAgfldlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uKCk7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwpAQCAtOTYsNyArOTYsNyBAQCBw
cml2YXRlOgogCiAgICAgUmVmPElQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uVG9OZXR3b3Jr
UHJvY2VzczsKICAgICB1aW50NjRfdCBtX3BhZ2VHcm91cElEOwotICAgIHVpbnQ2NF90IG1fcGFn
ZUlEIHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVp
bnQ2NF90IG1fcHJldmlvdXNTZXJ2aWNlV29ya2VySUQgeyAwIH07CiAKICAgICBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IG1fc3RvcmFnZUJsb2NraW5nUG9s
aWN5IHsgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeTo6QWxs
b3dBbGxTdG9yYWdlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3Rv
cmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCmlu
ZGV4IDhhZWJhZmY5NjIyMWU5ODYzMzdjM2QyM2UwNDBmMDViNDc1NWE3NTYuLjI2NDRjOWMxZDEy
YjZjZDAxZDU2Njk5ZDEzMmJjMmVmNGM2MzZhMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJlZGlyZWN0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291
CiB7CiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICBtX2Nvbm5l
Y3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1fZmV0Y2hJZGVu
dGlmaWVyKTsKIAogICAgIGNsZWFudXAoKTsKIH0KQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBXZWJT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYKICAgICBpZiAobV9uZWVkc0NvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
TWVzc2FnZSkKICAgICAgICAgbV93YWl0aW5nRm9yQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VN
ZXNzYWdlID0gdHJ1ZTsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIudG9V
SW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVl
RGlkUmVjZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZv
aWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBidWZmZXIpCkBAIC04NCw3ICs4NCw3IEBAIHZvaWQgV2ViU2VydmljZVdv
cmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBi
dWZmZXIpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBidWZm
ZXIgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLT5zaXplKCkpIH0sIG1fZmV0Y2hJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGJ1ZmZlciB9LCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogfQog
CiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0
YUFuZEZpbmlzaChSZWY8Rm9ybURhdGE+JiYgZm9ybURhdGEpCkBAIC0xMDEsNyArMTAxLDcgQEAg
dm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRm9ybURhdGFB
bmRGaW5pc2goUmVmPEZvcm1EYXRhPiYKICAgICAvLyBGb3Igbm93IGFuZCBmb3IgdGhlIGNhc2Ug
b2YgYmxvYnMsIHdlIHJlYWQgaXQgdGhlcmUgYW5kIHNlbmQgdGhlIGRhdGEgdGhyb3VnaCBJUEMu
CiAgICAgVVJMIGJsb2JVUkwgPSBmb3JtRGF0YS0+YXNCbG9iVVJMKCk7CiAgICAgaWYgKGJsb2JV
UkwuaXNOdWxsKCkpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRm9ybURhdGEgeyBJUEM6OkZvcm1EYXRhUmVm
ZXJlbmNlIHsgV1RGTW92ZShmb3JtRGF0YSkgfSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpEaWRSZWNlaXZlRm9ybURhdGEgeyBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHsg
V1RGTW92ZShmb3JtRGF0YSkgfSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTEyOSw3ICsxMjksNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVCbG9iQ2h1bmsoY29uc3QgY2hhciogZGF0YSwgc2l6ZQog
ICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRh
IHsgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSB9LCBzdGF0
aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
KyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OkRpZFJlY2VpdmVEYXRhIHsgeyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
KSwgc2l6ZSB9LCBzdGF0aWNfY2FzdDxpbnQ2NF90PihzaXplKSB9LCBtX2ZldGNoSWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkRmluaXNo
QmxvYkxvYWRpbmcoKQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZl
dGNoVGFza0NsaWVudDo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkRmFpbCB7IGVycm9yIH0sIG1fZmV0Y2hJZGVudGlmaWVy
LnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckZldGNoVGFzazo6RGlkRmFpbCB7IGVycm9yIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIAog
ICAgIGNsZWFudXAoKTsKIH0KQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3Jr
ZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZpbmlzaCgpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OkRpZEZpbmlzaCB7IH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29u
bmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkRmluaXNo
IHsgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogCiAgICAgY2xlYW51cCgpOwogfQpAQCAtMTc0LDcg
KzE3NCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkTm90SGFu
ZGxlKCkKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RI
YW5kbGUgeyB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rp
b24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7
IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIAogICAgIGNsZWFudXAoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJD
b250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggNDkzM2NhNGMzYTA2NzJjYWMzMGY3Nzk1MTkwZDI1
ODUyMWMwY2YwMi4uMmIyODg2NGE5YWEwOTg0NDJkNjE1MzJjNjQwZjViOTNhODU5OTgwYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTgyLDE0ICs4MiwxNCBAQCBSZWY8
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmdldE9y
Q3JlYXRlKFVzZXJDb250ZW50QwogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIoVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllciBpZGVudGlmaWVy
KQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0
aGlzKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2lkZW50aWZpZXIsICp0aGlzKTsKIH0KIAogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjp+V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyKCkKIHsKICAgICBBU1NFUlQodXNlckNvbnRlbnRDb250cm9s
bGVycygpLmNvbnRhaW5zKG1faWRlbnRpZmllcikpOwogCi0gICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRl
bnRpZmllcik7CiAKICAgICB1c2VyQ29udGVudENvbnRyb2xsZXJzKCkucmVtb3ZlKG1faWRlbnRp
Zmllcik7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF3ZWJQ
YWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRv
bigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVzc2FnZSh3ZWJQYWdlLT5wYWdlSUQoKSwgd2Vi
RnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJUEM6OkRhdGFSZWZlcmVuY2UodmFsdWUtPmRh
dGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OkRpZFBvc3RNZXNzYWdlKHdl
YlBhZ2UtPnBhZ2VJRCgpLCB3ZWJGcmFtZS0+aW5mbygpLCBtX2lkZW50aWZpZXIsIElQQzo6RGF0
YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29udHJvbGxlci0+aWRlbnRpZmllcigpKTsK
ICAgICB9CiAKICAgICBSZWZQdHI8V2ViVXNlckNvbnRlbnRDb250cm9sbGVyPiBtX2NvbnRyb2xs
ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IDQ5NjI5NmY2ZDg4MTA1MjM5MjQ1MTYwMTMw
NTY0NmJiNmQ2YjFjY2EuLjA4YmU4ZTAxNjgzMWE0MmVhZmM3Y2FjYjU0N2MzNmRmMjYwN2VmZDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0yODgsNyArMjg4LDcgQEAgUGFnZSogV2ViQ2hy
b21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1
ZXN0JiByZXF1ZXMKIAogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29y
ZUZyYW1lKGZyYW1lKTsKIAotICAgIHVpbnQ2NF90IG5ld1BhZ2VJRCA9IDA7CisgICAgT3B0aW9u
YWw8UGFnZUlkZW50aWZpZXI+IG5ld1BhZ2VJRDsKICAgICBPcHRpb25hbDxXZWJQYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOwogICAgIGlmICghd2ViUHJvY2Vzcy5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVO
ZXdQYWdlKHdlYkZyYW1lLT5pbmZvKCksIHdlYkZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpLCByZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLCB3aW5kb3dGZWF0dXJlcywgbmF2aWdhdGlvbkFjdGlvbkRh
dGEpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpSZXBseShuZXdQYWdl
SUQsIHBhcmFtZXRlcnMpLCBtX3BhZ2UucGFnZUlEKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTI5OSw4ICsyOTksOCBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRv
dyhGcmFtZSYgZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlcwogICAgIGlmIChw
YXJhbWV0ZXJzLT5zZXNzaW9uSUQgPT0gbV9wYWdlLnNlc3Npb25JRCgpKQogICAgICAgICBwYXJh
bWV0ZXJzLT5vbGRQYWdlSUQgPSBtX3BhZ2UucGFnZUlEKCk7CiAKLSAgICB3ZWJQcm9jZXNzLmNy
ZWF0ZVdlYlBhZ2UobmV3UGFnZUlELCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSk7Ci0gICAgcmV0dXJu
IHdlYlByb2Nlc3Mud2ViUGFnZShuZXdQYWdlSUQpLT5jb3JlUGFnZSgpOworICAgIHdlYlByb2Nl
c3MuY3JlYXRlV2ViUGFnZSgqbmV3UGFnZUlELCBXVEZNb3ZlKCpwYXJhbWV0ZXJzKSk7CisgICAg
cmV0dXJuIHdlYlByb2Nlc3Mud2ViUGFnZSgqbmV3UGFnZUlEKS0+Y29yZVBhZ2UoKTsKIH0KIAog
dm9pZCBXZWJDaHJvbWVDbGllbnQ6OnNob3coKQpAQCAtMTMxNywxMiArMTMxNywxMiBAQCB2b2lk
IFdlYkNocm9tZUNsaWVudDo6ZGlkSW52YWxpZGF0ZURvY3VtZW50TWFya2VyUmVjdHMoKQogfQog
CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4s
IFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21h
aW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wYWdlLmhhc1N0b3JhZ2VBY2Nl
c3MoV1RGTW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFt
ZUlELCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9t
YWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRl
ZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViQ2hyb21lQ2xpZW50OjpyZXF1ZXN0U3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFp
biYmIHN1YkZyYW1lRG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChT
dG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UucmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV1RG
TW92ZShzdWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKaW5kZXggZGQz
YjIyNTQzNWQ5MjYzNDQxNTk5YzgwNWMzNjM3M2NmMjYyNjFjZS4uMjkxYzVlZGRjOGMzZWViZmIx
NDhjMDVkNjYyNTNiY2ZlM2Q0NzQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaApAQCAtMzY5LDggKzM2
OSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0
cygpIGZpbmFsOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICB2
b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFt
ZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpIGZpbmFsOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFn
ZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpIGZpbmFs
OworICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYm
IHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9t
YWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV1RGOjpDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdl
YkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQo
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93bik+JiYpIGZpbmFsOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAppbmRleCBmNDI4ZmQyMzk3ZWRkZDRkMjQx
MTc3MDMyM2ViM2ZhMjc5MDJkODVmLi43MDUyMDI1YjlkY2Y5MjQxNGNiNmU0ODQyZGFmYTc0OGMw
ZTFmNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcApAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQg
V2ViRWRpdG9yQ2xpZW50OjpyZWdpc3RlclVuZG9TdGVwKFVuZG9TdGVwJiBzdGVwKQogICAgIGF1
dG8gc3RlcElEID0gd2ViU3RlcC0+c3RlcElEKCk7CiAKICAgICBtX3BhZ2UtPmFkZFdlYlVuZG9T
dGVwKHN0ZXBJRCwgV1RGTW92ZSh3ZWJTdGVwKSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHN0ZXBJRCwgc3RlcC5s
YWJlbCgpKSwgbV9wYWdlLT5wYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3Nh
Z2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyhzdGVwSUQsIHN0ZXAu
bGFiZWwoKSksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5n
Rm9yU3luY1JlcGx5KTsKIH0KIAogdm9pZCBXZWJFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyUmVkb1N0
ZXAoVW5kb1N0ZXAmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNTI5YzA0
NjcwMzAxYjM1MGIxMzI1MTgzNTRhOWU1YTg1NWI5YzQ4ZC4uM2RjZDdlMmVjMTk5ODE3ZDc0OTVl
ZDBhODM2MjUzNjQzNjYxY2RmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0xMTIsNyArMTEyLDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6On5XZWJGcmFtZUxvYWRlckNs
aWVudCgpCiB7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6
cGFnZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNs
aWVudDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5wYWdl
KCkpCiAgICAgICAgIHJldHVybiBtX2ZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpOwpAQCAtNTQxLDcg
KzU0MSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlCiAgICAgaWYgKCF3ZWJQYWdlKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkOiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQo
KSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkOiAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQYWdl
LT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOwogCiAgICAgUmVmUHRy
PEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIApAQCAtNTc3LDcgKzU3Nyw3IEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYg
ZXJyb3IpCiAgICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNF
X0xPRyhOZXR3b3JrLCAiJXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWls
TG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhp
cywgd2ViUGFnZS0+cGFnZUlEKCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CisgICAgUkVMRUFTRV9M
T0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbExv
YWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMs
IHdlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CiAKICAg
ICBSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhOwogCkBAIC05MDEsNyArOTAxLDkgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKGNvbnN0IE5hdmlnYXQKICAgICBpZiAocmVxdWVzdGVyLmZyYW1lSUQoKSAmJiBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShyZXF1ZXN0ZXIuZnJhbWVJRCgpKSkKICAgICAg
ICAgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQgPSByZXF1ZXN0ZXIuZnJhbWVJRCgp
OwogCi0gICAgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQgPSByZXF1ZXN0ZXIucGFnZUlEKCkg
JiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShyZXF1ZXN0ZXIucGFnZUlEKCkpID8g
cmVxdWVzdGVyLnBhZ2VJRCgpIDogMDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3Jp
Z2luYXRpbmdQYWdlSUQ7CisgICAgaWYgKHJlcXVlc3Rlci5wYWdlSUQoKSAmJiBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5wYWdlSUQoKSkpCisgICAgICAgIG9yaWdp
bmF0aW5nUGFnZUlEID0gcmVxdWVzdGVyLnBhZ2VJRCgpOwogCiAgICAgTmF2aWdhdGlvbkFjdGlv
bkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGE7CiAgICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2
aWdhdGlvblR5cGUgPSBhY3Rpb24tPm5hdmlnYXRpb25UeXBlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCmluZGV4IGY3M2FiOGNhNzNmMTc4YmYyNjhmZjJiODQxYzQ1MWNkZDQ5OGZhYTMu
LmM4ZmIyYWYyMTI1NjZjNjQ2ODYwNzdhMGM4OWFmODEwNTM5MGE2ODAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYXBw
bHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llc0RhdGEmJik7CiAKLSAgICBPcHRpb25h
bDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwogICAgIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQu
Y3BwCmluZGV4IGUxZTkzYTZkZTM0NjdlZjE0MDk0NTM0NmQ4ZGI0ZmRkMjczODY3MDMuLjllNDZk
ODA3M2IzODBlNDI1NTRiZWM1ZjQ0NDgxM2Y0ZTZmOTM2YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9X
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcApAQCAtMzcsMTQgKzM3LDE0IEBACiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCi11c2luZyBQYXNzd29yZENhbGxiYWNrTWFwID0gSGFzaE1hcDx1aW50NjRf
dCwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4+OwordXNpbmcgUGFzc3dvcmRDYWxsYmFj
a01hcCA9IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+PjsKIHN0YXRpYyBQYXNzd29yZENhbGxiYWNrTWFwJiBwYXNzd29yZENhbGxi
YWNrcygpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFBhc3N3b3JkQ2FsbGJhY2tNYXA+
IGNhbGxiYWNrTWFwOwogICAgIHJldHVybiBjYWxsYmFja01hcC5nZXQoKTsKIH0KIAotV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgdWludDY0X3QgcGFnZUlEKQorV2ViUHJldmlld0xv
YWRlckNsaWVudDo6V2ViUHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1l
LCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAg
IDogbV9maWxlTmFtZSB7IGZpbGVOYW1lIH0KICAgICAsIG1fdXRpIHsgdXRpIH0KICAgICAsIG1f
cGFnZUlEIHsgcGFnZUlEIH0KQEAgLTg1LDcgKzg1LDcgQEAgdm9pZCBXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50OjpkaWRSZXF1ZXN0UGFzc3dvcmQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4m
JgogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShtX2Zp
bGVOYW1lKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVQYXNzd29yZChjb25zdCBTdHJpbmcmIHBhc3N3b3JkLCB1aW50NjRfdCBwYWdlSUQp
Cit2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVQYXNzd29yZChjb25zdCBT
dHJpbmcmIHBhc3N3b3JkLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAg
QVNTRVJUKHBhc3N3b3JkQ2FsbGJhY2tzKCkuY29udGFpbnMocGFnZUlEKSk7CiAgICAgYXV0byBj
b21wbGV0aW9uSGFuZGxlciA9IHBhc3N3b3JkQ2FsbGJhY2tzKCkudGFrZShwYWdlSUQpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQ
cmV2aWV3TG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAppbmRleCBmOTk4NmU0MWNhMmYyNTFk
YjJjM2U1ZDg4ZTA4ZGY1MDY4NTQwNGU4Li5iZTg4N2FkOGE3ZjBiNjU3ZDFmYTQ1MWQxODMzY2Yx
Y2Q0NGI1Mzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuaApAQCAt
MzUsMTYgKzM1LDE2IEBAIGNsYXNzIFdlYkZyYW1lOwogCiBjbGFzcyBXZWJQcmV2aWV3TG9hZGVy
Q2xpZW50IGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlByZXZpZXdMb2FkZXJDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViUHJldmlld0xvYWRlckNsaWVudD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCB1aW50NjRfdCBwYWdlSUQpCisg
ICAgc3RhdGljIFJlZjxXZWJQcmV2aWV3TG9hZGVyQ2xpZW50PiBjcmVhdGUoY29uc3QgU3RyaW5n
JiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlByZXZpZXdMb2Fk
ZXJDbGllbnQoZmlsZU5hbWUsIHV0aSwgcGFnZUlEKSk7CiAgICAgfQogICAgIH5XZWJQcmV2aWV3
TG9hZGVyQ2xpZW50KCk7CiAKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlUGFzc3dvcmQoY29u
c3QgU3RyaW5nJiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZl
UGFzc3dvcmQoY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiBwcml2
YXRlOgotICAgIFdlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwg
Y29uc3QgU3RyaW5nJiB1dGksIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV2ViUHJldmlld0xvYWRl
ckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGFBcnJheShDRkFycmF5
UmVmKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpZEZhaWwoKSBvdmVycmlkZTsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAog
ICAgIGNvbnN0IFN0cmluZyBtX2ZpbGVOYW1lOwogICAgIGNvbnN0IFN0cmluZyBtX3V0aTsKLSAg
ICBjb25zdCB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBtX3BhZ2VJRDsKICAgICBRdWlja0xvb2tEb2N1bWVudERhdGEgbV9kYXRhOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCmlu
ZGV4IDI3NmI4MGJmMjhmMWY1ZmQ0OWE2ZjBmYjQ5OWQzMzUxMmFkYzEwMTAuLmMwNzM5NmYwMmYx
ZmE2NWY0NWFjZWU3MmYxMzRmNGZiMmQ5ZTg5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgRHJhd2lu
Z0FyZWE6OkRyYXdpbmdBcmVhKERyYXdpbmdBcmVhVHlwZSB0eXBlLCBEcmF3aW5nQXJlYUlkZW50
aWZpZXIgaWRlbnRpZmllciwKICAgICAsIG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwg
bV93ZWJQYWdlKHdlYlBhZ2UpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VS
ZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiB9CiAKIERyYXdpbmdBcmVhOjp+
RHJhd2luZ0FyZWEoKQpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIERyYXdpbmdBcmVhOjpyZW1vdmVN
ZXNzYWdlUmVjZWl2ZXJJZk5lZWRlZCgpCiAgICAgaWYgKG1faGFzUmVtb3ZlZE1lc3NhZ2VSZWNl
aXZlcikKICAgICAgICAgcmV0dXJuOwogICAgIG1faGFzUmVtb3ZlZE1lc3NhZ2VSZWNlaXZlciA9
IHRydWU7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZp
ZXIudG9VSW50NjQoKSk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X2lkZW50aWZpZXIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCmluZGV4IDY5
MTgzMGI1OTNjNjdhZDMzZDc3YTBlNjhjNTQ3YTYzMWM1YWI2ZDcuLmNhYzE4OGIzNGEyYjc1NDAy
NDI5MDdjMDVjMzlmODIzMzc3MWUwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lk
IEV2ZW50RGlzcGF0Y2hlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uKQogICAgIGNvbm5lY3Rpb24tPmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcXVldWUu
Z2V0KCksIHRoaXMpOwogfQogCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQsIGJvb2wgY2FuUnVi
YmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJC
YW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQordm9pZCBFdmVudERpc3BhdGNo
ZXI6OndoZWVsRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50
JiB3aGVlbEV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFu
ZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJv
dHRvbSkKIHsKICNpZiBQTEFURk9STShDT0NPQSkgfHwgRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
ICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQgcGxhdGZvcm1XaGVlbEV2ZW50ID0gcGxhdGZvcm0od2hl
ZWxFdmVudCk7CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVs
RXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW4KIH0K
IAogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi12b2lkIEV2ZW50RGlzcGF0Y2hlcjo6
Z2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZl
bnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXN0dXJlRXZlbnQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYgZ2VzdHVy
ZUV2ZW50KQogewogICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBwYWdlSUQsIGdlc3R1cmVFdmVudF0oKSBtdXRhYmxlIHsKICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGlzcGF0Y2hHZXN0dXJlRXZlbnQocGFnZUlELCBnZXN0dXJlRXZl
bnQpOwpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXRRdWV1ZWRU
b3VjaEV2ZW50c0ZvclBhZ2UoY29uc3QgV2ViUGFnZSYgd2ViUGFnZSwgVG91Y2hFCiAgICAgZGVz
dGluYXRpb25RdWV1ZSA9IG1fdG91Y2hFdmVudHMudGFrZSh3ZWJQYWdlLnBhZ2VJRCgpKTsKIH0K
IAotdm9pZCBFdmVudERpc3BhdGNoZXI6OnRvdWNoRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6dG91Y2hFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViVG91
Y2hFdmVudCYgdG91Y2hFdmVudCkKIHsKICAgICBib29sIHVwZGF0ZUxpc3RXYXNFbXB0eTsKICAg
ICB7CkBAIC0xOTQsNyArMTk0LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OnRvdWNoRXZlbnQo
dWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQmIHQKIAogdm9pZCBF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoVG91Y2hFdmVudHMoKQogewotICAgIEhhc2hNYXA8dWlu
dDY0X3QsIFRvdWNoRXZlbnRRdWV1ZT4gbG9jYWxDb3B5OworICAgIEhhc2hNYXA8UGFnZUlkZW50
aWZpZXIsIFRvdWNoRXZlbnRRdWV1ZT4gbG9jYWxDb3B5OwogICAgIHsKICAgICAgICAgTG9ja0hv
bGRlciBsb2NrZXIoJm1fdG91Y2hFdmVudHNMb2NrKTsKICAgICAgICAgbG9jYWxDb3B5LnN3YXAo
bV90b3VjaEV2ZW50cyk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6
OmRpc3BhdGNoVG91Y2hFdmVudHMoKQogfQogI2VuZGlmCiAKLXZvaWQgRXZlbnREaXNwYXRjaGVy
OjpkaXNwYXRjaFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50
JiB3aGVlbEV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudChQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCiB7
CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZv
aWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJXaGVlbEV2ZW50JiB3CiB9CiAKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRT
KQotdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCit2b2lkIEV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25z
dCBXZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0yMzIsNyArMjMyLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViR2VzdHVyZUV2ZW4K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKLXZvaWQgRXZlbnREaXNwYXRj
aGVyOjpzZW5kRGlkUmVjZWl2ZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQm
IGV2ZW50LCBib29sIGRpZEhhbmRsZUV2ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6OnNlbmRE
aWRSZWNlaXZlRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJFdmVudCYgZXZl
bnQsIGJvb2wgZGlkSGFuZGxlRXZlbnQpCiB7CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRSZWNlaXZlRXZlbnQoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGV2ZW50LnR5cGUoKSksIGRpZEhh
bmRsZUV2ZW50KSwgcGFnZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmgKaW5kZXggMWQ0Nzc4NzdlYWFlNDA0NTI2YTA3NDUx
YzA3MTg2OTk3YTU1MGU1NC4uZTFiYmJkNDc5NjliZmJiNzUyYzYxZDIxYzYxYTI5ZWVmYWQ5NjJm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNw
YXRjaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNw
YXRjaGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAKICNp
bmNsdWRlICJXZWJFdmVudC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1doZWVsRXZlbnREZWx0YUZpbHRlci5oPgogI2luY2x1ZGUgPG1l
bW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNzcsMzggKzc4LDM4IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBvdmVycmlkZTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKLSAgICB2b2lkIHdo
ZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBjYW5S
dWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJl
ckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOworICAgIHZvaWQgd2hlZWxF
dmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViV2hlZWxFdmVudCYsIGJvb2wg
Y2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5S
dWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsKICNpZiBFTkFCTEUo
SU9TX1RPVUNIX0VWRU5UUykKLSAgICB2b2lkIHRvdWNoRXZlbnQodWludDY0X3QgcGFnZUlELCBj
b25zdCBXZWJUb3VjaEV2ZW50Jik7CisgICAgdm9pZCB0b3VjaEV2ZW50KFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCBjb25zdCBXZWJUb3VjaEV2ZW50Jik7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUFD
X0dFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQgZ2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBnZXN0dXJlRXZlbnQoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogI2VuZGlmCiAKIAogICAg
IC8vIFRoaXMgaXMgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KLSAgICB2b2lkIGRpc3BhdGNo
V2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmKTsKKyAgICB2
b2lkIGRpc3BhdGNoV2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2Vi
V2hlZWxFdmVudCYpOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIHZvaWQgZGlz
cGF0Y2hUb3VjaEV2ZW50cygpOwogI2VuZGlmCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5U
UykKLSAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
V2ViR2VzdHVyZUV2ZW50Jik7CisgICAgdm9pZCBkaXNwYXRjaEdlc3R1cmVFdmVudChXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi0gICAgdm9pZCBzZW5kRGlkUmVjZWl2ZUV2ZW50KHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViRXZlbnQmLCBib29sIGRpZEhhbmRsZUV2ZW50KTsKKyAg
ICB2b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0
IFdlYkV2ZW50JiwgYm9vbCBkaWRIYW5kbGVFdmVudCk7CiAjZW5kaWYKIAogICAgIFJlZjxXb3Jr
UXVldWU+IG1fcXVldWU7CiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIExvY2sg
bV9zY3JvbGxpbmdUcmVlc011dGV4OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJD
b3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOworICAgIEhhc2hN
YXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpUaHJlYWRlZFNjcm9s
bGluZ1RyZWU+PiBtX3Njcm9sbGluZ1RyZWVzOwogI2VuZGlmCiAgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6OldoZWVsRXZlbnREZWx0YUZpbHRlcj4gbV9yZWNlbnRXaGVlbEV2ZW50RGVsdGFG
aWx0ZXI7CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgTG9jayBtX3RvdWNoRXZl
bnRzTG9jazsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBUb3VjaEV2ZW50UXVldWU+IG1fdG91Y2hF
dmVudHM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVG91Y2hFdmVudFF1
ZXVlPiBtX3RvdWNoRXZlbnRzOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4K
aW5kZXggNWUxNTQzYzk4Y2NmYTQxNDAxYzI3NTM4YzYyOTlmOWE1ODBmMzY3Yi4uYWY5MDRiNDUx
NmExMDk4MDg1NGMxYTM0NGU2MTIyY2ZkNzE2NGI4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5p
bgpAQCAtMjEsMTEgKzIxLDExIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IEV2ZW50
RGlzcGF0Y2hlciB7Ci0gICAgV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2Vi
V2hlZWxFdmVudCBldmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1YmJl
ckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRCb3R0b20pCisgICAgV2hlZWxFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFdlYktpdDo6V2ViV2hlZWxFdmVudCBldmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBi
b29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBj
YW5SdWJiZXJCYW5kQXRCb3R0b20pCiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAg
VG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkK
KyAgICBUb3VjaEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpX
ZWJUb3VjaEV2ZW50IGV2ZW50KQogI2VuZGlmCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5U
UykKLSAgICBHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBXZWJLaXQ6OldlYkdlc3R1cmVF
dmVudCBldmVudCkKKyAgICBHZXN0dXJlRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCBldmVudCkKICNlbmRpZgogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCmluZGV4IGI3
NTJjMWM1NGQ0NmYwOGRkYTY2NWI1ZjM1NjRkNTQyYTY2NWVjZjYuLmIyOTFkZjBiN2RmZGY3OTM5
ZTdkYWFlNzIzNDIwMjY1ZGIxOWMzNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUv
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KQEAgLTc1LDcgKzc1LDcgQEAgUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWE6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKFdlYlBhZ2UmIHdl
YlBhZ2UsIGNvbnN0IFcKICAgICAvLyBGSVhNRTogV2hpbGUgdXNpbmcgdGhlIGhpZ2ggZW5kIG9m
IHRoZSByYW5nZSBvZiBEaXNwbGF5SURzIG1ha2VzIGEgY29sbGlzaW9uIHdpdGggcmVhbCwgbm9u
LVJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhCiAgICAgLy8gRGlzcGxheUlEcyBsZXNzIGxpa2Vs
eSwgaXQgaXMgbm90IGVudGlyZWx5IHNhZmUgdG8gaGF2ZSBhIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhIGFuZCBUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYQogICAgIC8vIGNvZWV4aXN0
IGluIHRoZSBzYW1lIHByb2Nlc3MuCi0gICAgd2ViUGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2Uo
c3RkOjpudW1lcmljX2xpbWl0czx1aW50MzJfdD46Om1heCgpIC0gd2ViUGFnZS5wYWdlSUQoKSk7
CisgICAgd2ViUGFnZS53aW5kb3dTY3JlZW5EaWRDaGFuZ2Uoc3RkOjpudW1lcmljX2xpbWl0czx1
aW50MzJfdD46Om1heCgpIC0gd2ViUGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIH0KIAogUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6On5SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSgpCkBA
IC00MzQsNyArNDM0LDcgQEAgdm9pZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYTo6Zmx1c2hM
YXllcnMoKQogICAgIFJlZlB0cjxCYWNraW5nU3RvcmVGbHVzaGVyPiBiYWNraW5nU3RvcmVGbHVz
aGVyID0gQmFja2luZ1N0b3JlRmx1c2hlcjo6Y3JlYXRlKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCksIFdURk1vdmUoY29tbWl0RW5jb2RlciksIFdURk1v
dmUoY29udGV4dHNUb0ZsdXNoKSk7CiAgICAgbV9wZW5kaW5nQmFja2luZ1N0b3JlRmx1c2hlciA9
IGJhY2tpbmdTdG9yZUZsdXNoZXI7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBtX3dlYlBhZ2Uu
cGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2UucGFnZUlEKCk7CiAgICAgZGlz
cGF0Y2hfYXN5bmMobV9jb21taXRRdWV1ZSwgW2JhY2tpbmdTdG9yZUZsdXNoZXIgPSBXVEZNb3Zl
KGJhY2tpbmdTdG9yZUZsdXNoZXIpLCBwYWdlSURdIHsKICAgICAgICAgYmFja2luZ1N0b3JlRmx1
c2hlci0+Zmx1c2goKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCmluZGV4IGMzYTk1MjU2NTMyNmU3NDll
NTI2MTEzMmIwNDRhYTU4ODgwMmMwNGYuLjVjZjQ0NDA3ZTNmYjNmNjdhMDM0NzAwM2QwNDc4ZDc0
MTk5MzI0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1Zp
ZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBWaWV3
VXBkYXRlRGlzcGF0Y2hlcjo6aW5pdGlhbGl6ZUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uKiBj
b25uZWN0aW9uKQogICAgIGNvbm5lY3Rpb24tPmFkZFdvcmtRdWV1ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6Vmlld1VwZGF0ZURpc3BhdGNoZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9x
dWV1ZS5nZXQoKSwgdGhpcyk7CiB9CiAKLXZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OnZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFZpc2libGVDb250ZW50
UmVjdFVwZGF0ZUluZm8mIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8pCit2b2lkIFZpZXdV
cGRhdGVEaXNwYXRjaGVyOjp2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKQogewogICAgIGJvb2wgdXBkYXRlTGlzdFdhc0VtcHR5
OwogICAgIHsKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlz
aWJsZUNvbnRlbnRSZWN0VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgVmlzaWIKIAogdm9p
ZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUo
KQogewotICAgIEhhc2hNYXA8dWludDY0X3QsIFVwZGF0ZURhdGE+IHVwZGF0ZTsKKyAgICBIYXNo
TWFwPFBhZ2VJZGVudGlmaWVyLCBVcGRhdGVEYXRhPiB1cGRhdGU7CiAgICAgewogICAgICAgICBM
b2NrSG9sZGVyIGxvY2tlcigmbV9kYXRhTXV0ZXgpOwogICAgICAgICB1cGRhdGUgPSBXVEZNb3Zl
KG1fbGF0ZXN0VXBkYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oCmluZGV4IGU0N2RjNGUxZDQxNjgyMjM0MGFm
YWRlYTJhM2M4MDYyMGY0YjIwODguLmNhN2QyMDBjMmJjZjY1ZTc3YjgwYTI5ZGZhYzE5NDNlYzJk
ZDQxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdV
cGRhdGVEaXNwYXRjaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Vmlld1VwZGF0ZURpc3BhdGNoZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5l
Y3Rpb24uaCIKIAogI2luY2x1ZGUgIlZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8uaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTQ3LDcg
KzQ4LDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OldvcmtRdWV1ZU1lc3Nh
Z2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCB2aXNpYmxlQ29udGVudFJlY3RV
cGRhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZv
Jik7CisgICAgdm9pZCB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mKTsKIAogICAgIHZvaWQg
ZGlzcGF0Y2hWaXNpYmxlQ29udGVudFJlY3RVcGRhdGUoKTsKIApAQCAtNTgsNyArNTksNyBAQCBw
cml2YXRlOgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKICAgICBMb2NrIG1fZGF0YU11
dGV4OwotICAgIEhhc2hNYXA8dWludDY0X3QsIFVwZGF0ZURhdGE+IG1fbGF0ZXN0VXBkYXRlOwor
ICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFVwZGF0ZURhdGE+IG1fbGF0ZXN0
VXBkYXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVy
Lm1lc3NhZ2VzLmluCmluZGV4IDE3ZTJjOGRkMTg2YWQyNzZlNTU4YWNjODgwYzI2ODhkNTAzNThm
ZTYuLmQ5MmVlYjg4OWQwOTU3MmExZDIyNmU4M2M3Y2UxM2Y1OTYxMDI2YzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRh
dGVEaXNwYXRjaGVyLm1lc3NhZ2VzLmluCkBAIC0yMSw1ICsyMSw1IEBACiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKIG1lc3NhZ2VzIC0+IFZpZXdVcGRhdGVEaXNwYXRjaGVyIHsKLSAgICBWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGUodWludDY0X3QgcGFnZUlELCBXZWJLaXQ6OlZpc2libGVDb250ZW50UmVjdFVw
ZGF0ZUluZm8gdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbykKKyAgICBWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OlZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZUluZm8gdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbykKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3
YXJkTGlzdFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJh
Y2tGb3J3YXJkTGlzdFByb3h5LmNwcAppbmRleCAyMTFkNjAxZWYwYjQ0ZjUyYWEyZGU5NjNlODQ1
M2Y4NmM1MmY4ZmQ0Li43YTBjMGM4MGZlOGNjNjAxMTY5M2Q3YjQ1MjdhYmVjN2U5ZTVlNzQ4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2Fy
ZExpc3RQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
QmFja0ZvcndhcmRMaXN0UHJveHkuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBJRFRvSGlz
dG9yeUl0ZW1NYXAmIGlkVG9IaXN0b3J5SXRlbU1hcCgpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAot
dm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3Qg
QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlELCBSZWY8SGlzdG9yeUl0ZW0+JiYgaXRl
bSwgdWludDY0X3QgcGFnZUlELCBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0gb3ZlcndyaXRlRXhpc3Rp
bmdJdGVtKQordm9pZCBXZWJCYWNrRm9yd2FyZExpc3RQcm94eTo6YWRkSXRlbUZyb21VSVByb2Nl
c3MoY29uc3QgQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYgaXRlbUlELCBSZWY8SGlzdG9yeUl0
ZW0+JiYgaXRlbSwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0g
b3ZlcndyaXRlRXhpc3RpbmdJdGVtKQogewogICAgIC8vIFRoaXMgaXRlbS9pdGVtSUQgcGFpciBz
aG91bGQgbm90IGFscmVhZHkgZXhpc3QgaW4gb3VyIG1hcC4KICAgICBBU1NFUlRfVU5VU0VEKG92
ZXJ3cml0ZUV4aXN0aW5nSXRlbSwgb3ZlcndyaXRlRXhpc3RpbmdJdGVtID09IE92ZXJ3cml0ZUV4
aXN0aW5nSXRlbTo6WWVzIHx8ICFpZFRvSGlzdG9yeUl0ZW1NYXAoKS5jb250YWlucyhpdGVtSUQp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tG
b3J3YXJkTGlzdFByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5oCmluZGV4IGYzYjFjOGFmNTQ4MjNjM2U4MjY4ZDZhZTU4ZTQw
YTZmNjE1NGQwODEuLmQxYmFhZGI5MWM1NTg2MWIxNTQzYjk3MTc2NDg2MmI1ZDIyMzk3NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJk
TGlzdFByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHkuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlIDxXZWJDb3JlL0JhY2tGb3J3YXJkQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Q
YWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTQ3LDcgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICBZZXMsCiAgICAgICAg
IE5vCiAgICAgfTsKLSAgICB2b2lkIGFkZEl0ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IFdlYkNvcmU6
OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImLCBSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYs
IHVpbnQ2NF90IHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKKyAgICB2b2lkIGFkZEl0
ZW1Gcm9tVUlQcm9jZXNzKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXIm
LCBSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBP
dmVyd3JpdGVFeGlzdGluZ0l0ZW0pOwogCiAgICAgdm9pZCBjbGVhcigpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAppbmRleCAxNjBl
ZGVmZDU5ZDEwYTAyM2U0YWYyNTFiZTJiMWE5YjJhOThiMmQ1Li43MzhiZTkyYjkyZGM3M2QyZGY2
NzdlZTM0ZWMxMzA4MWE2MGYxYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKQEAgLTM4LDYgKzM4LDggQEAKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBjbGFzcyBXZWJTdG9yYWdl
U2Vzc2lvblByb3ZpZGVyIDogcHVibGljIFdlYkNvcmU6OlN0b3JhZ2VTZXNzaW9uUHJvdmlkZXIg
ewogICAgIC8vIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbnMgYXJlIGFjY2Vzc2VkIG9ubHkgaW4gdGhl
IE5ldHdvcmtQcm9jZXNzLgogICAgIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogc3Rv
cmFnZVNlc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBudWxscHRyOyB9CkBAIC00OSw3ICs1
MSw3IEBAIFdlYkNvb2tpZUphcjo6V2ViQ29va2llSmFyKCkKIFN0cmluZyBXZWJDb29raWVKYXI6
OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29u
c3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50
NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAg
aWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtNjYsNyArNjgsNyBAQCBTdHJpbmcg
V2ViQ29va2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
VVJMJiB1cmwpIGNvbnN0CiB2b2lkIFdlYkNvb2tpZUphcjo6c2V0Q29va2llcyhXZWJDb3JlOjpE
b2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZykKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpAQCAtODMsNyArODUsNyBAQCBib29s
IFdlYkNvb2tpZUphcjo6Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmIGRv
Y3VtZW50KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IFdlYkNvcmU6OlNlY3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJ
bmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVT
ZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29v
a2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CiB7CiAgICAgU3RyaW5nIGNvb2tpZVN0cmluZzsKICAgICBib29sIHNlY3VyZUNvb2tp
ZXNBY2Nlc3NlZCA9IGZhbHNlOwpAQCAtOTUsNyArOTcsNyBAQCBzdGQ6OnBhaXI8U3RyaW5nLCBX
ZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVz
dEhlYQogYm9vbCBXZWJDb29raWVKYXI6OmdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6RG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
IHJhd0Nvb2tpZXMpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gcGFnZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAg
ICAgICAgZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAg
ICAgIHBhZ2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKaW5kZXggOTdkZDc2
ZjY2NGMzZjU1M2FkZmM4ZTc2YmI4NWVhM2YxMTFlNTExZS4uNTU5YmQwZTUwYmJlYzM1ZmZiMjU2
YjkxMmI3YjQ2ZGE5OTRiMmQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViQ29va2llSmFyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViQ29va2llSmFyLmgKQEAgLTM2LDcgKzM2LDcgQEAgcHVibGljOgogICAgIFN0cmlu
ZyBjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJikgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHJpbmcpIGZpbmFsOwogICAgIGJvb2wgY29va2llc0VuYWJsZWQoY29u
c3QgV2ViQ29yZTo6RG9jdW1lbnQmKSBjb25zdCBmaW5hbDsKLSAgICBzdGQ6OnBhaXI8U3RyaW5n
LCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
UEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzKSBjb25zdCBmaW5hbDsKICAgICBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIGNvbnN0IGZp
bmFsOwogICAgIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKSBmaW5hbDsKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggODkwYzVl
NTZhYzA0Y2U3M2Y0NWVlMDdkOTc4MzUxZmQzMWNhYTUyMS4uNGFmNDk1YTUxYjkwMzcyNmYzYmI2
NGMzYTRkZTMxNTFkOTlmYmI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5l
cmF0ZUxpc3RlbmVySUQoKQogUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENvcmVN
YWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSkKIHsKICAg
ICBhdXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6dW5pcXVlX3B0cjxXZWJGcmFtZUxvYWRlckNsaWVu
dD4oc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPigmY29yZUZyYW1lLT5sb2FkZXIo
KS5jbGllbnQoKSkpKTsKLSAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRp
ZENyZWF0ZU1haW5GcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCkpOworICAg
IHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZyYW1lKGZy
YW1lLT5mcmFtZUlEKCkpKTsKIAogICAgIGZyYW1lLT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFtZTsK
ICAgICBmcmFtZS0+bV9jb3JlRnJhbWUtPnRyZWUoKS5zZXROYW1lKFN0cmluZygpKTsKQEAgLTEy
MSw3ICsxMjEsNyBAQCBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5G
cmFtZShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogYwogUmVmPFdlYkZyYW1lPiBXZWJG
cmFtZTo6Y3JlYXRlU3ViZnJhbWUoV2ViUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5h
bWUsIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KQogewogICAgIGF1dG8gZnJh
bWUgPSBjcmVhdGUoc3RkOjptYWtlX3VuaXF1ZTxXZWJGcmFtZUxvYWRlckNsaWVudD4oKSk7Ci0g
ICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVTdWJmcmFtZShm
cmFtZS0+ZnJhbWVJRCgpKSwgcGFnZS0+cGFnZUlEKCkpOworICAgIHBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3ViZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSkpOwog
CiAgICAgYXV0byBjb3JlRnJhbWUgPSBGcmFtZTo6Y3JlYXRlKHBhZ2UtPmNvcmVQYWdlKCksIG93
bmVyRWxlbWVudCwgZnJhbWUtPm1fZnJhbWVMb2FkZXJDbGllbnQuZ2V0KCkpOwogICAgIGZyYW1l
LT5tX2NvcmVGcmFtZSA9IGNvcmVGcmFtZS5wdHIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcAppbmRleCBjOTY1MmU5NGFmODZi
NjBlN2ZkZTczNjI1ZDExYjVhYmNlYTRjOWRhLi5iY2ZmOGUyYTg5NmZmMDJlODI1MTY1Mjc4MTE5
YmQxZmViNDYyMWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJJbnNwZWN0b3JVSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yVUkuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFdlYkluc3BlY3RvclVJOjpX
ZWJJbnNwZWN0b3JVSShXZWJQYWdlJiBwYWdlKQogI2VuZGlmCiB9CiAKLXZvaWQgV2ViSW5zcGVj
dG9yVUk6OmVzdGFibGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZp
ZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCit2b2lkIFdlYklu
c3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKFBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBh
Z2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQog
ewogICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSBpbnNwZWN0ZWRQYWdlSWRlbnRpZmll
cjsKICAgICBtX2Zyb250ZW5kQVBJRGlzcGF0Y2hlci5yZXNldCgpOwpAQCAtMTY3LDcgKzE2Nyw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yVUk6OmNsb3NlV2luZG93KCkKICAgICBpZiAobV9mcm9udGVu
ZEhvc3QpCiAgICAgICAgIG1fZnJvbnRlbmRIb3N0LT5kaXNjb25uZWN0Q2xpZW50KCk7CiAKLSAg
ICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gMDsKKyAgICBtX2luc3BlY3RlZFBhZ2VJZGVu
dGlmaWVyID0geyB9OwogICAgIG1fdW5kZXJUZXN0ID0gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmggYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCmluZGV4IDgzODFi
ZjFjZWRlY2I2NWM1ZDQ3NDc1YzIyYjdkM2RiNjJmYmZkOGUuLjk0MjRiZmUxZjI2Y2ZkYzE2OTA3
Yzc4MWZlZjRkNmQwNWM1ZWNlMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIldl
Ykluc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250
ZW5kSG9zdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSW5zcGVjdG9yQ29udHJvbGxlcjsKQEAgLTUyLDcgKzUzLDcg
QEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVjZWl2ZUludmFsaWRNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6U3RyaW5nUmVmZXJlbmNlLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSkgb3ZlcnJp
ZGUgeyBjbG9zZVdpbmRvdygpOyB9CiAKICAgICAvLyBDYWxsZWQgYnkgV2ViSW5zcGVjdG9yVUkg
bWVzc2FnZXMKLSAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwp
OworICAgIHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBp
bnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rp
b25MZXZlbCk7CiAgICAgdm9pZCB1cGRhdGVDb25uZWN0aW9uKCk7CiAKICAgICB2b2lkIHNob3dD
b25zb2xlKCk7CkBAIC0xMzMsNyArMTM0LDcgQEAgcHJpdmF0ZToKICAgICAvLyBjb3JlUGFnZSgp
LCBzaW5jZSB3ZSBtYXkgbmVlZCBpdCBhZnRlciB0aGUgZnJvbnRlbmQncyBwYWdlIGhhcyBzdGFy
dGVkIGRlc3RydWN0aW9uLgogICAgIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqIG1fZnJv
bnRlbmRDb250cm9sbGVyIHsgbnVsbHB0ciB9OwogCi0gICAgdWludDY0X3QgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllciB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX2luc3Bl
Y3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIGJvb2wgbV91bmRlclRlc3QgeyBmYWxzZSB9OwogICAg
IGJvb2wgbV9kb2NraW5nVW5hdmFpbGFibGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc1Zpc2li
bGUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgppbmRleCBkZWEwZmU1ODRkNGVmMGY4
NmZhOTcxNjYyYmI0N2I0MWE3ZjYxM2JmLi40MzE5MGFhODM0ZGNhYTY2OTY0YmJiYTk1NTAwODIx
ZmI3ZDYxMDJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5tZXNzYWdlcy5pbgpAQCAtMjEsNyArMjEsNyBAQAogIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJJbnNwZWN0b3JVSSB7Ci0gICAgRXN0YWJsaXNo
Q29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRl
c3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKKyAgICBFc3RhYmxpc2hDb25uZWN0aW9uKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVy
VGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQogICAgIFVwZGF0ZUNvbm5lY3Rpb24oKQog
CiAgICAgQXR0YWNoZWRCb3R0b20oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcAppbmRleCAzYmFhZmQxODU0Y2JjOTk1Y2E0ZTg5ODAzZTNiNDQxODIzZWI2
MTY1Li4yYzEwMGI1OWI2YjE3MjJhNWYyYjI3MWE2ZWNmN2NmM2M0YjZmZWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzYwLDcgKzM2MCw3
IEBAIHByaXZhdGU6CiAKIERFRklORV9ERUJVR19PTkxZX0dMT0JBTChXVEY6OlJlZkNvdW50ZWRM
ZWFrQ291bnRlciwgd2ViUGFnZUNvdW50ZXIsICgiV2ViUGFnZSIpKTsKIAotUmVmPFdlYlBhZ2U+
IFdlYlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQorUmVmPFdlYlBhZ2U+IFdlYlBhZ2U6OmNyZWF0ZShQYWdlSWRlbnRp
ZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewog
ICAgIFJlZjxXZWJQYWdlPiBwYWdlID0gYWRvcHRSZWYoKm5ldyBXZWJQYWdlKHBhZ2VJRCwgV1RG
TW92ZShwYXJhbWV0ZXJzKSkpOwogCkBAIC0zNzAsNyArMzcwLDcgQEAgUmVmPFdlYlBhZ2U+IFdl
YlBhZ2U6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhbWUKICAgICByZXR1cm4gcGFnZTsKIH0KIAotV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQorV2ViUGFn
ZTo6V2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJiBwYXJhbWV0ZXJzKQogICAgIDogbV9wYWdlSUQocGFnZUlEKQogICAgICwgbV92aWV3U2l6
ZShwYXJhbWV0ZXJzLnZpZXdTaXplKQogICAgICwgbV9hbHdheXNTaG93c0hvcml6b250YWxTY3Jv
bGxlciB7IHBhcmFtZXRlcnMuYWx3YXlzU2hvd3NIb3Jpem9udGFsU2Nyb2xsZXIgfQpAQCAtODMx
LDcgKzgzMSw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGFnZTo6bWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdAogCiB1aW50NjRfdCBXZWJQYWdlOjptZXNzYWdlU2VuZGVyRGVzdGluYXRp
b25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHBhZ2VJRCgpOworICAgIHJldHVybiBwYWdlSUQo
KS50b1VJbnQ2NCgpOwogfQogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCkBAIC0xNjQ4LDcg
KzE2NDgsNyBAQCB2b2lkIFdlYlBhZ2U6OmdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBCYWNrRm9yd2FyZEl0ZW1JZAogICAgIGlmICghaXRlbSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgTE9HKExvYWRpbmcsICJJbiBXZWJQcm9jZXNzIHBpZCAlaSwgV2Vi
UGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZpZ2F0aW5nIHRvIGJhY2svZm9yd2FyZCBVUkwgJXMiLCBn
ZXRDdXJyZW50UHJvY2Vzc0lEKCksIG1fcGFnZUlELCBpdGVtLT51cmwoKS5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBMT0coTG9hZGluZywgIkluIFdlYlByb2Nlc3MgcGlkICVpLCBXZWJQ
YWdlICUiIFBSSXU2NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFjay9mb3J3YXJkIFVSTCAlcyIsIGdl
dEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgaXRlbS0+dXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBBU1NFUlQoIW1fcGVuZGluZ05hdmlnYXRpb25J
RCk7CiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbklEOwpAQCAtMjA3Niw3
ICsyMDc2LDcgQEAgYm9vbCBXZWJQYWdlOjpzZXRGaXhlZExheW91dFNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKICAgICBpZiAoIXZpZXcgfHwgdmlldy0+Zml4ZWRMYXlvdXRTaXplKCkgPT0gc2l6
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVS
ZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQgPDwgIiBzZXRGaXhlZExheW91
dFNpemUgIiA8PCBzaXplKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJl
YW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgc2V0Rml4ZWRMYXlv
dXRTaXplICIgPDwgc2l6ZSk7CiAgICAgdmlldy0+c2V0Rml4ZWRMYXlvdXRTaXplKHNpemUpOwog
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaXhlZExheW91dFNpemVEaWRDaGFu
Z2Uoc2l6ZSkpOwpAQCAtMjUwNCw3ICsyNTA0LDcgQEAgY29uc3QgV2ViRXZlbnQqIFdlYlBhZ2U6
OmN1cnJlbnRFdmVudCgpCiB2b2lkIFdlYlBhZ2U6OmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVG
cmVlemVSZWFzb24gcmVhc29uKQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAiJXAgLSBXZWJQYWdlIChQYWdlSUQ9JWxsdSkgLSBBZGRpbmcgYSByZWFzb24gJWQgdG8gZnJl
ZXplIGxheWVyIHRyZWU7IGN1cnJlbnQgcmVhc29ucyBhcmUgJWQiLAotICAgICAgICB0aGlzLCBt
X3BhZ2VJRCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJlZXpl
UmVhc29ucy50b1JhdygpKTsKKyAgICAgICAgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50b1Jh
dygpKTsKICAgICBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMuYWRkKHJlYXNvbik7CiAgICAgdXBk
YXRlRHJhd2luZ0FyZWFMYXllclRyZWVGcmVlemVTdGF0ZSgpOwogfQpAQCAtMjUxMiw3ICsyNTEy
LDcgQEAgdm9pZCBXZWJQYWdlOjpmcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXplUmVhc29u
IHJlYXNvbikKIHZvaWQgV2ViUGFnZTo6dW5mcmVlemVMYXllclRyZWUoTGF5ZXJUcmVlRnJlZXpl
UmVhc29uIHJlYXNvbikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVw
IC0gV2ViUGFnZSAoUGFnZUlEPSVsbHUpIC0gUmVtb3ZpbmcgYSByZWFzb24gJWQgdG8gZnJlZXpl
IGxheWVyIHRyZWU7IGN1cnJlbnQgcmVhc29ucyBhcmUgJWQiLAotICAgICAgICB0aGlzLCBtX3Bh
Z2VJRCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJlZXplUmVh
c29ucy50b1JhdygpKTsKKyAgICAgICAgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHJlYXNvbiksIG1fbGF5ZXJUcmVlRnJlZXplUmVhc29ucy50b1Jhdygp
KTsKICAgICBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMucmVtb3ZlKHJlYXNvbik7CiAgICAgdXBk
YXRlRHJhd2luZ0FyZWFMYXllclRyZWVGcmVlemVTdGF0ZSgpOwogfQpAQCAtMzE2OCw3ICszMTY4
LDcgQEAgdm9pZCBXZWJQYWdlOjp2aXNpYmlsaXR5RGlkQ2hhbmdlKCkKIAogdm9pZCBXZWJQYWdl
OjpzZXRBY3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0
eVN0YXRlLCBBY3Rpdml0eVN0YXRlQ2hhbmdlSUQgYWN0aXZpdHlTdGF0ZUNoYW5nZUlELCBjb25z
dCBWZWN0b3I8Q2FsbGJhY2tJRD4mIGNhbGxiYWNrSURzKQogewotICAgIExPR19XSVRIX1NUUkVB
TShBY3Rpdml0eVN0YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBwYWdlSUQoKSA8PCAiIHNl
dEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBhY3Rpdml0eVN0YXRlKTsKKyAgICBMT0dfV0lUSF9TVFJF
QU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgcGFnZUlEKCkudG9VSW50
NjQoKSA8PCAiIHNldEFjdGl2aXR5U3RhdGUgdG8gIiA8PCBhY3Rpdml0eVN0YXRlKTsKIAogICAg
IGF1dG8gY2hhbmdlZCA9IG1fYWN0aXZpdHlTdGF0ZSBeIGFjdGl2aXR5U3RhdGU7CiAgICAgbV9h
Y3Rpdml0eVN0YXRlID0gYWN0aXZpdHlTdGF0ZTsKQEAgLTMxNzYsNyArMzE3Niw3IEBAIHZvaWQg
V2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4g
YWN0aXZpdHlTdGF0ZSwgQWN0CiAgICAgaWYgKGNoYW5nZWQpCiAgICAgICAgIHVwZGF0ZVRocm90
dGxlU3RhdGUoKTsKIAotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wYWdlLCAic2V0QWN0aXZp
dHlTdGF0ZSBjYWxsZWQgb24gJSIgUFJJdTY0ICIgYnV0IFdlYkNvcmUgcGFnZSB3YXMgbnVsbCIs
IHBhZ2VJRCgpKTsKKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcGFnZSwgInNldEFjdGl2aXR5
U3RhdGUgY2FsbGVkIG9uICUiIFBSSXU2NCAiIGJ1dCBXZWJDb3JlIHBhZ2Ugd2FzIG51bGwiLCBw
YWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBpZiAobV9wYWdlKSB7CiAgICAgICAgIFNldEZvclNj
b3BlPE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPj4gY3VycmVudGx5Q2hhbmdpbmdBY3Rp
dml0eVN0YXRlIHsgbV9sYXN0QWN0aXZpdHlTdGF0ZUNoYW5nZXMsIGNoYW5nZWQgfTsKICAgICAg
ICAgbV9wYWdlLT5zZXRBY3Rpdml0eVN0YXRlKGFjdGl2aXR5U3RhdGUpOwpAQCAtNDMzOSw3ICs0
MzM5LDcgQEAgdm9pZCBXZWJQYWdlOjptYWluRnJhbWVEaWRMYXlvdXQoKQogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gbWFpbkZyYW1lVmll
dygpKSB7CiAgICAgICAgIEludFNpemUgbmV3Q29udGVudFNpemUgPSBmcmFtZVZpZXctPmNvbnRl
bnRzU2l6ZSgpOwotICAgICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIG1haW5GcmFtZURpZExheW91dCBzZXR0aW5n
IGNvbnRlbnQgc2l6ZSB0byAiIDw8IG5ld0NvbnRlbnRTaXplKTsKKyAgICAgICAgTE9HX1dJVEhf
U1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQudG9V
SW50NjQoKSA8PCAiIG1haW5GcmFtZURpZExheW91dCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAi
IDw8IG5ld0NvbnRlbnRTaXplKTsKICAgICAgICAgaWYgKG1fdmlld3BvcnRDb25maWd1cmF0aW9u
LnNldENvbnRlbnRzU2l6ZShuZXdDb250ZW50U2l6ZSkpCiAgICAgICAgICAgICB2aWV3cG9ydENv
bmZpZ3VyYXRpb25DaGFuZ2VkKCk7CiAgICAgfQpAQCAtNTc0Miw3ICs1NzQyLDcgQEAgdm9pZCBX
ZWJQYWdlOjpkaWRDb21taXRMb2FkKFdlYkZyYW1lKiBmcmFtZSkKICAgICAKICAgICBib29sIHZp
ZXdwb3J0Q2hhbmdlZCA9IGZhbHNlOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0
cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQgPDwgIiBkaWRDb21taXRMb2FkIHNl
dHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgY29yZUZyYW1lLT52aWV3KCktPmNvbnRlbnRzU2l6
ZSgpKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBh
Z2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIgZGlkQ29tbWl0TG9hZCBzZXR0aW5nIGNv
bnRlbnQgc2l6ZSB0byAiIDw8IGNvcmVGcmFtZS0+dmlldygpLT5jb250ZW50c1NpemUoKSk7CiAg
ICAgaWYgKG1fdmlld3BvcnRDb25maWd1cmF0aW9uLnNldENvbnRlbnRzU2l6ZShjb3JlRnJhbWUt
PnZpZXcoKS0+Y29udGVudHNTaXplKCkpKQogICAgICAgICB2aWV3cG9ydENoYW5nZWQgPSB0cnVl
OwogCkBAIC02MDU2LDcgKzYwNTYsNyBAQCB2b2lkIFdlYlBhZ2U6OnNlbmRFZGl0b3JTdGF0ZVVw
ZGF0ZSgpCiAgICAgLy8gSWYgdGhhdCBpcyB0aGUgY2FzZSwganVzdCBzZW5kIHdoYXQgd2UgaGF2
ZSAoaS5lLiBkb24ndCBpbmNsdWRlIHBvc3QtbGF5b3V0IGRhdGEpIGFuZCB3YWl0IHVudGlsIHRo
ZQogICAgIC8vIG5leHQgbGF5ZXIgdHJlZSBjb21taXQgdG8gY29tcHV0ZSBhbmQgc2VuZCB0aGUg
Y29tcGxldGUgRWRpdG9yU3RhdGUgb3Zlci4KICAgICBhdXRvIHN0YXRlID0gZWRpdG9yU3RhdGUo
KTsKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRvclN0YXRlQ2hhbmdlZChz
dGF0ZSksIHBhZ2VJRCgpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVkaXRv
clN0YXRlQ2hhbmdlZChzdGF0ZSkpOwogCiAgICAgaWYgKHN0YXRlLmlzTWlzc2luZ1Bvc3RMYXlv
dXREYXRhKQogICAgICAgICBzY2hlZHVsZUZ1bGxFZGl0b3JTdGF0ZVVwZGF0ZSgpOwpAQCAtNjIz
Nyw3ICs2MjM3LDcgQEAgdm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiAKIHZvaWQgV2ViUGFnZTo6cG9z
dE1lc3NhZ2VJZ25vcmluZ0Z1bGx5U3luY2hyb25vdXNNb2RlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIHsKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkhhbmRsZU1lc3NhZ2UobWVzc2FnZU5hbWUsIFVzZXJEYXRhKFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMobWVzc2FnZUJvZHkpKSks
IHBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246Oklnbm9yZUZ1bGx5U3luY2hyb25vdXNNb2RlKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhhbmRsZU1lc3NhZ2UobWVzc2FnZU5h
bWUsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hh
bmRsZXMobWVzc2FnZUJvZHkpKSksIElQQzo6U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5jaHJv
bm91c01vZGUpOwogfQogCiB2b2lkIFdlYlBhZ2U6OnBvc3RTeW5jaHJvbm91c01lc3NhZ2VGb3JU
ZXN0aW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9k
eSwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcmV0dXJuRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA4NjhhZTkyZjJmYjMyOTM1MTAxMTBiYWVlOGNj
YjY3ODIzMWMzM2FkLi43N2Q4ZTRiMmRkY2VkYjUyYzU1YzQ3OWQzYTFhZmRmNWE3MmU5YmMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NCw2ICs2
NCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnRTaXplSGFzaC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VPdmVybGF5Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qb2ludGVy
SUQuaD4KQEAgLTI3Myw3ICsyNzQsOCBAQCB1c2luZyBXS0V2ZW50TW9kaWZpZXJzID0gdWludDMy
X3Q7CiAKIGNsYXNzIFdlYlBhZ2UgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0
OjpUeXBlOjpCdW5kbGVQYWdlPiwgcHVibGljIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwdWJsaWMg
SVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGFnZT4gewogcHVi
bGljOgotICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBzdGF0aWMgUmVmPFdlYlBhZ2U+IGNyZWF0
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsK
KwogICAgIHZpcnR1YWwgfldlYlBhZ2UoKTsKIAogICAgIHZvaWQgcmVpbml0aWFsaXplV2ViUGFn
ZShXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMjgzLDcgKzI4NSw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgV2ViUGFnZSogZnJvbUNvcmVQYWdlKFdlYkNvcmU6OlBhZ2UqKTsKIAog
ICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmVQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLmdldCgp
OyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJ
RDsgfQogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZS0+c2Vzc2lvbklEKCk7IH0KICAgICBib29sIHVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOyB9CiAKQEAgLTExNjYsNyAr
MTE2OCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNlbmRTeW5jV2l0aERlbGF5ZWRSZXBseShUJiYg
bWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSkKICAgICB7CiAgICAgICAgIGNhbmNl
bEdlc3R1cmVzQmxvY2tlZE9uU3luY2hyb25vdXNSZXBsaWVzKCk7Ci0gICAgICAgIHJldHVybiBz
ZW5kU3luYyhXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgbV9wYWdlSUQsIFNlY29u
ZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJvY2Vz
c1dpbGxTdXNwZW5kKTsKKyAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1vdmUobWVzc2FnZSks
IFdURk1vdmUocmVwbHkpLCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9u
OjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVuZCk7CiAgICAgfQogCiAgICAgV2ViQ29y
ZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyKTsKQEAgLTExOTksNyArMTIwMSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldFVzZXJJc0ludGVyYWN0aW5nKGJvb2wgdXNlcklzSW50ZXJhY3RpbmcpIHsgbV91
c2VySXNJbnRlcmFjdGluZyA9IHVzZXJJc0ludGVyYWN0aW5nOyB9CiAKIHByaXZhdGU6Ci0gICAg
V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7Cisg
ICAgV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmKTsKIAogICAgIHZvaWQgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwogCkBAIC0xNTg1LDcg
KzE1ODcsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVNb2NrQWNjZXNzaWJpbGl0eUVs
ZW1lbnRBZnRlckNvbW1pdHRpbmdMb2FkKCk7CiAKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAg
ICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpQYWdlPiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYkZyYW1lPiBtX21haW5GcmFt
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2VJ
bnNwZWN0b3JUYXJnZXQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZUluc3BlY3RvclRhcmdldC5jcHAKaW5kZXggZDk2YTdkN2RkYTlmMjZkMWM2NTZhMTVjYjgz
ZDAzY2YyMDRhN2EzOC4uYjc3OTliNGZiYjhiNTVjYjY2YjYyMjI3YTZhNjVmM2FiMTJjYTAwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3Bl
Y3RvclRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZUluc3BlY3RvclRhcmdldC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgV2ViUGFnZUluc3BlY3Rv
clRhcmdldDo6V2ViUGFnZUluc3BlY3RvclRhcmdldChXZWJQYWdlJiBwYWdlKQogCiBTdHJpbmcg
V2ViUGFnZUluc3BlY3RvclRhcmdldDo6aWRlbnRpZmllcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICByZXR1cm4gbWFrZVN0
cmluZygicGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZUluc3BlY3RvclRhcmdldDo6Y29ubmVjdChJbnNwZWN0b3I6OkZyb250ZW5kQ2hhbm5lbCYg
Y2hhbm5lbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xp
YndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5jcHAKaW5kZXggOTgz
YjkzMTliMjg0OTY3NjY4OGNhNjcwNWUyNzQ4NTQ5MmZmYWJlZC4uYjg5ZGZhODA0MWZiMjZkNmZj
YmVmN2RlOGI0NGQ2ZThhMDQzYWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxp
YldQRS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgdWludDY0X3QgQWNjZWxlcmF0ZWRTdXJmYWNlTGli
V1BFOjp3aW5kb3coKSBjb25zdAogCiB1aW50NjRfdCBBY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEU6
OnN1cmZhY2VJRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAg
ICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKIHZvaWQgQWNjZWxl
cmF0ZWRTdXJmYWNlTGliV1BFOjpjbGllbnRSZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2li
aWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKaW5kZXggMzAxYjEzOWUx
ZDJjMTZkODlhMmFiODkzY2Y4NTU3MTA3M2Q4ZjUxYS4uNmI3ZWM1YjE2ZjJjYTZhMDYyNjEzOGYx
ZmYwOTdkMGI1MjkxNTI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmpl
Y3RCYXNlLmgKQEAgLTI2LDEzICsyNiwxNSBAQAogI2lmbmRlZiBXS0FjY2Vzc2liaWxpdHlXZWJQ
YWdlT2JqZWN0QmFzZV9oCiAjZGVmaW5lIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
X2gKIAorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KKwogbmFtZXNwYWNlIFdl
YktpdCB7CiBjbGFzcyBXZWJQYWdlOwogfQogCiBAaW50ZXJmYWNlIFdLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlIDogTlNPYmplY3QgewogICAgIFdlYktpdDo6V2ViUGFnZSogbV9wYWdl
OwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1f
cGFnZUlEOwogICAgIGlkIG1fcGFyZW50OwogICAgIGJvb2wgbV9oYXNNYWluRnJhbWVQbHVnaW47
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tB
Y2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXgg
M2QzZjM1NTUzZTZkNGZiZWE1NTY1MzQ3ODA4ODgwNjkxMGYwNTAwOS4uNjE2NWEwMWZlNjA4MjQ4
ZmRlM2I5NjBmNzg5NDUxMzkyMzcxZGY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMTQ4LDcgKzE0OCw3IEBAIC0gKHZvaWQpc2V0V2ViUGFn
ZTooV2ViS2l0OjpXZWJQYWdlKilwYWdlCiAgICAgICAgIGF1dG8qIGZyYW1lID0gcGFnZS0+bWFp
bkZyYW1lKCk7CiAgICAgICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gZnJhbWUgJiYgZnJhbWUt
PmRvY3VtZW50KCkgPyBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpIDogZmFs
c2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9wYWdlSUQgPSAwOworICAgICAgICBtX3BhZ2VJ
RCA9IHsgfTsKICAgICAgICAgbV9oYXNNYWluRnJhbWVQbHVnaW4gPSBmYWxzZTsKICAgICB9CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNWNlNjljY2Y4MzM0
YzlkOGQwODhjMjEyOGU0ZjM0YzZjZmFlYWRkOC4uNjE3NGIwYTNiYjBiMzc0YWU5ODRkM2FiMWJk
OGJmMjM3M2JkNTdhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtMjIxLDcgKzIyMSw3IEBAIFdlYlByb2Nlc3M6OldlYlByb2Nlc3MoKQogICAgICAgICBlbnN1
cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRh
dGVkKFdURk1vdmUoc3RhdGlzdGljcykpLCAwKTsKICAgICB9KTsKIAotICAgIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2Fs
bGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJ
RCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbikgeworICAgIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVy
Q2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9w
ZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIG9wZW5lckRvbWFpbikgewogICAg
ICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNj
ZXNzVW5kZXJPcGVuZXIoc2Vzc2lvbklELCBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9w
ZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwgMCk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTY2Nywx
NiArNjY3LDE2IEBAIFdlYlBhZ2UqIFdlYlByb2Nlc3M6OmZvY3VzZWRXZWJQYWdlKCkgY29uc3QK
ICAgICByZXR1cm4gMDsKIH0KICAgICAKLVdlYlBhZ2UqIFdlYlByb2Nlc3M6OndlYlBhZ2UodWlu
dDY0X3QgcGFnZUlEKSBjb25zdAorV2ViUGFnZSogV2ViUHJvY2Vzczo6d2ViUGFnZShQYWdlSWRl
bnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGFnZU1hcC5nZXQocGFnZUlE
KTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCit2b2lkIFdlYlByb2Nlc3M6
OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAgICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sg
Zm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2luY2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAob3Ig
dGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUgV2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0
aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQgdGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCi0gICAg
SGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+Pjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1f
cGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZU1h
cC5hZGQocGFnZUlELCBudWxscHRyKTsKICAgICBhdXRvIG9sZFBhZ2VJRCA9IHBhcmFtZXRlcnMu
b2xkUGFnZUlEID8gcGFyYW1ldGVycy5vbGRQYWdlSUQudmFsdWUoKSA6IHBhZ2VJRDsKICAgICBp
ZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3It
PnZhbHVlKTsKQEAgLTY5Myw3ICs2OTMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBh
Z2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYQogICAg
IEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpy
ZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQor
dm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIEFTU0VSVChtX3BhZ2VNYXAuY29udGFpbnMo
cGFnZUlEKSk7CiAKQEAgLTE0NTAsNyArMTQ1MCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRl
Q1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb24pCiAKICNlbmRpZgogCi12b2lk
IFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2NF90LCBPcHRpb25T
ZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCkKK3ZvaWQgV2ViUHJvY2Vz
czo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoUGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxX
ZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQogewogICAgIGlmIChjaGFuZ2Vk
ICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKQogICAgICAgICB1cGRhdGVDUFVN
b25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbjo6VmlzaWJpbGl0eUhhc0NoYW5nZWQp
OwpAQCAtMTYyNCwxMyArMTYyNCwxMyBAQCB2b2lkIFdlYlByb2Nlc3M6OnNlbmRQcmV3YXJtSW5m
b3JtYXRpb24oY29uc3QgVVJMJiB1cmwpCiAgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWRDb2xsZWN0UHJld2FybUluZm9ybWF0
aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJDb3JlOjpQcm9jZXNzV2FybWluZzo6Y29sbGVjdFBy
ZXdhcm1JbmZvcm1hdGlvbigpKSwgMCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZURpZEVu
dGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGFnZURpZEVudGVy
V2luZG93KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3BhZ2VzSW5XaW5kb3dzLmFk
ZChwYWdlSUQpOwogICAgIG1fbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXIuc3RvcCgpOwog
fQogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0X3QgcGFnZUlE
KQordm9pZCBXZWJQcm9jZXNzOjpwYWdlV2lsbExlYXZlV2luZG93KFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICBtX3BhZ2VzSW5XaW5kb3dzLnJlbW92ZShwYWdlSUQpOwogCkBAIC0xNjcz
LDcgKzE2NzMsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRl
c3RpbmcoYm9vbCBlbmFibGUpCiAgICAgaWYgKGVuYWJsZSkKICAgICAgICAgZW5zdXJlTGVnYWN5
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKIAotICAgIFZlY3Rvcjx1
aW50NjRfdD4gcGFnZUlEczsKKyAgICBWZWN0b3I8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRHM7CiAg
ICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdlTWFwKSB7CiAgICAgICAgIGlmIChwYWdlLnZhbHVl
KQogICAgICAgICAgICAgcGFnZUlEcy5hcHBlbmQocGFnZS5rZXkpOwpAQCAtMTg1Myw3ICsxODUz
LDcgQEAgTGliV2ViUlRDTmV0d29yayYgV2ViUHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB9
CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlz
aFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3Jv
dXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwg
UEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJs
aXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VH
cm91cElELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUm
IHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQogewogICAgIC8vIFdlIGFy
ZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29udGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxv
dyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlvbiB0byB0aGUgTmV0d29yayBQcm9jZXNzCiAgICAg
Ly8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1h
bmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1lIHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFz
IHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggNTI1ZGYxODNmMjI2
MTVlNGQ4ZTg5OWY0ZTg5ZWY0ODVhN2JhNzgxYy4uMTg1N2NlYTBlZDlkOWZhOGMyMTA2OTZmMDk4
NzY3OGJiYTQyOWZkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0z
OSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgog
I2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QWN0aXZpdHlTdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxlRG9tYWluLmg+CiAjaWYgUExBVEZPUk0oTUFDKQog
I2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJvcGVydGllcy5oPgpAQCAtMTQ1LDkgKzE0Niw5IEBA
IHB1YmxpYzoKIAogICAgIFdlYkNvbm5lY3Rpb25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVjdGlvblRv
VUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CiAKLSAg
ICBXZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7Ci0gICAgdm9pZCBjcmVh
dGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsK
LSAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7
CisgICAgV2ViUGFnZSogd2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7Cisg
ICAgdm9pZCBjcmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3Jl
YXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHZvaWQgcmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25J
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIFdlYlBhZ2UqIGZvY3VzZWRXZWJQYWdl
KCkgY29uc3Q7CiAKICAgICBJbmplY3RlZEJ1bmRsZSogaW5qZWN0ZWRCdW5kbGUoKSBjb25zdCB7
IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdldCgpOyB9CkBAIC0xOTksOCArMjAwLDggQEAgcHVi
bGljOgogCiAgICAgdm9pZCBlbnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3
b3JrUHJvY2VzcygpOwogCi0gICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFn
ZUlEKTsKLSAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3codWludDY0X3QgcGFnZUlEKTsKKyAg
ICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAg
dm9pZCBwYWdlV2lsbExlYXZlV2luZG93KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAg
IHZvaWQgbm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXJGaXJlZCgpOwogCkBAIC0yMTksNyAr
MjIwLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1cGRhdGVBY3RpdmVQYWdlcygpOwogICAgIHZv
aWQgZ2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAgICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKHVpbnQ2NF90IHBhZ2VJRCwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZs
YWc+IGNoYW5nZWQpOworICAgIHZvaWQgcGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFn
PiBjaGFuZ2VkKTsKIAogICAgIHZvaWQgc2V0SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0lu
Y3JlYXNlTGltaXQoaW50IG1pbGxpc2Vjb25kcyk7CiAKQEAgLTM1OSw3ICszNjAsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3Rh
Ymxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFn
ZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFBB
TDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAg
dm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCk7CiAjZW5kaWYKIApAQCAtNDYwLDcg
KzQ2MSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNz
PiBtX3dlYkNvbm5lY3Rpb247CiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFn
ZT4+IG1fcGFnZU1hcDsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQ
dHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2Vi
UGFnZUdyb3VwUHJveHk+PiBtX3BhZ2VHcm91cE1hcDsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5k
bGU+IG1faW5qZWN0ZWRCdW5kbGU7CiAKQEAgLTUxNCw3ICs1MTUsNyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX3Byb2Nlc3NJc1N1c3BlbmRlZCB7IGZhbHNlIH07CiAKLSAgICBIYXNoU2V0PHVp
bnQ2NF90PiBtX3BhZ2VzSW5XaW5kb3dzOworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXI+IG1fcGFnZXNJbldpbmRvd3M7CiAgICAgV2ViQ29yZTo6VGltZXIgbV9ub25WaXNpYmxl
UHJvY2Vzc0NsZWFudXBUaW1lcjsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZT4gbV9hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggYjM5YjM4YzE4M2M2NjMy
N2Q0MmU2ZWRmZjE3NmJiYTFjOWNhYmIxMi4uNTdhMjY1NjM0NWZiZTlkMzMwZGY2NTVlMzUyYzM5
YmVhNTJiNDVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
bWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdh
Y3lSZWNlaXZlciB7CiAgICAgU2V0V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMoc3RydWN0IFdl
YktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFtZXRlcnMgcGFyYW1ldGVycykKIAogICAgICMg
Q3JlYXRlIGEgbmV3IHBhZ2UuCi0gICAgQ3JlYXRlV2ViUGFnZSh1aW50NjRfdCBuZXdQYWdlSUQs
IHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgcGFnZUNyZWF0aW9uUGFy
YW1ldGVycykKKyAgICBDcmVhdGVXZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG5ld1Bh
Z2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYWdlQ3JlYXRp
b25QYXJhbWV0ZXJzKQogCiAgICAgUHJld2FybUdsb2JhbGx5KCk7CiAgICAgUHJld2FybVdpdGhE
b21haW5JbmZvcm1hdGlvbihzdHJ1Y3QgV2ViQ29yZTo6UHJld2FybUluZm9ybWF0aW9uIHByZXdh
cm1JbmZvcm1hdGlvbikKQEAgLTExMSw3ICsxMTEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50
NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVm
ZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQorICAg
IEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRf
dCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2Vi
S2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vz
c2lvbklEKQogICAgIFJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmNwcAppbmRleCAwYmQ5MGFmOTE4Nzg2NDQxMDQ1M2VhMWJhZjFlY2Y2MDIzM2NiMDk2Li4w
ZTk0Mjk2MDQ5ZTZjMDg3YWI2ZThmMGM1ZWJmZTRjMWEyZTJjMDc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCkBA
IC0zMTEsNyArMzExLDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNzaW9uU3Rv
cmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0b3JhZ2VBcmVhSUQsIGMKIAogICAgIC8vIE5hbWVz
cGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFnZSBuYW1lc3BhY2VzIGFyZSBlcXVpdmFsZW50IHRv
IHdlYiBwYWdlIElEcwogICAgIC8vIHNvIHdlIGNhbiBnZXQgdGhlIHJpZ2h0IHBhZ2UgaGVyZS4K
LSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZSht
X3N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJU
eXBlPihtX3N0b3JhZ2VOYW1lc3BhY2VJRCkpOwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFn
ZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
U3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKaW5kZXggYjM5MDgxZTZlM2MxYmJhYjky
ZGEyMWYyY2E5ZThhMTlkYjRmYmYxNS4uODA5NjIzNDI0NGZiOGVlMzU3MWQyMDc4OTQyMmI4Mjlk
Y2M5NGI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBACiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1SZWY8U3RvcmFn
ZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFn
ZU5hbWVzcGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpCitS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVTZXNz
aW9uU3RvcmFnZU5hbWVzcGFjZShQYWdlSWRlbnRpZmllciBpZGVudGlmaWVyLCB1bnNpZ25lZCBx
dW90YUluQnl0ZXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFj
ZUltcGwoU3RvcmFnZVR5cGU6OlNlc3Npb24sIGlkZW50aWZpZXIsIG51bGxwdHIsIHF1b3RhSW5C
eXRlcykpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFN0b3JhZ2VOYW1lc3BhY2VJbXBsKFN0
b3JhZ2VUeXBlOjpTZXNzaW9uLCBpZGVudGlmaWVyLnRvVUludDY0KCksIG51bGxwdHIsIHF1b3Rh
SW5CeXRlcykpOwogfQogCi1SZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IFN0b3JhZ2VOYW1lc3Bh
Y2VJbXBsOjpjcmVhdGVFcGhlbWVyYWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRl
bnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVzKQorUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBs
PiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNw
YWNlKFBhZ2VJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVuc2lnbmVkIHF1b3RhSW5CeXRlcykKIHsK
ICAgICByZXR1cm4gY3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoaWRlbnRpZmllciwgcXVv
dGFJbkJ5dGVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJT
dG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5oCmluZGV4IDY3NTdlM2I4MTg4ODZjNGZm
NTdiYzNlNzlmNGMxNTgwMGY3NWIxYmMuLjJlNGE0MjI2MGUwNjQ4OGVlZmM4OGY3NTk2ZDEyYjQ0
MDNlNzNmOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdl
L1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJh
Z21hIG9uY2UKIAorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdG9yYWdlQXJlYS5oPgpAQCAtMzks
OCArNDAsOCBAQCBjbGFzcyBXZWJQYWdlOwogCiBjbGFzcyBTdG9yYWdlTmFtZXNwYWNlSW1wbCA6
IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZSh1
aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOwotICAgIHN0YXRpYyBS
ZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVz
cGFjZSh1aW50NjRfdCBpZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAgIHN0
YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1bnNpZ25lZCBxdW90YUluQnl0ZXMpOworICAg
IHN0YXRpYyBSZWY8U3RvcmFnZU5hbWVzcGFjZUltcGw+IGNyZWF0ZUVwaGVtZXJhbExvY2FsU3Rv
cmFnZU5hbWVzcGFjZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5
dGVzKTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVMb2NhbFN0
b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgdW5zaWduZWQgcXVvdGFJbkJ5dGVz
KTsKICAgICBzdGF0aWMgUmVmPFN0b3JhZ2VOYW1lc3BhY2VJbXBsPiBjcmVhdGVUcmFuc2llbnRM
b2NhbFN0b3JhZ2VOYW1lc3BhY2UodWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4mIHRvcExldmVsT3JpZ2luLCB1aW50NjRfdCBxdW90YUluQnl0ZXMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25N
YW5hZ2VyLm1tCmluZGV4IGZjNjU5ODYzMjUyYmZlNGZhOGMxZTEyOWI5YWU4ZTgzMGZhZjc4OGEu
Ljc2NWVmZjQwNGIwOWVkMDBjY2UxZGQ5ZWE3YjU2MDU2MjljYjVkOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
Lm1tCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRV
cFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW0KICAgICBhZGRD
bGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKIAogICAgIG1fcGFn
ZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0VXBQbGF5YmFja0NvbnRyb2xz
TWFuYWdlcldpdGhJRChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1fY29udHJvbHNNYW5hZ2Vy
Q29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2xlYXJQbGF5
YmFja0NvbnRyb2xzTWFuYWdlcigpCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKICAgICBtX2NvbnRy
b2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CiAKICAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5h
Z2VyRGlkQ2hhbmdlKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSk7CiB9CiAKIHVpbnQ2NF90
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNvbnRleHRJZEZvck1lZGlhRWxlbWVudChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQpCkBAIC0zMTgsMjcgKzMxOCwyNyBAQCBX
ZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50
UGxheWJhY2tDb250cm9sc0VsZW1lbgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmR1
cmF0aW9uQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVy
YXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVy
YXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRpb24pKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpjdXJyZW50VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3Vi
bGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQo
Y29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpD
dXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSkpOwog
fQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1ZmZlcmVkVGltZUNoYW5nZWQodWlu
dDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpCdWZmZXJlZFRpbWVDaGFu
Z2VkKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkJ1ZmZlcmVk
VGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJlZFRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1N0YXJ0ZWRUaW1l
Q2hhbmdlZChjb250ZXh0SWQsIHBsYXliYWNrU3RhcnRlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY29udGV4dElkLCBwbGF5YmFja1N0YXJ0ZWRU
aW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmF0ZUNoYW5nZWQodWlu
dDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpS
YXRlQ2hhbmdlZChjb250ZXh0SWQsIGlzUGxheWluZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFu
Z2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCkK
QEAgLTM0OSwzNyArMzQ5LDM3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2Fi
bGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViCiAgICAgICAgIGRv
dWJsZSBlbmQgPSB0aW1lUmFuZ2VzLnJhbmdlcygpLmVuZChpKS50b0RvdWJsZSgpOwogICAgICAg
ICByYW5nZXNWZWN0b3IuYXBwZW5kKHsgc3RhcnQsIGVuZCB9KTsKICAgICB9Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFu
Z2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1v
ZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNlZWth
YmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSwg
bGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wgdmFsdWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY29udGV4dElk
LCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNv
bnRleHRJZCwgdmFsdWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBW
ZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZElu
ZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRp
b25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rp
b25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRp
b25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlv
bk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRp
YVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRl
eCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdl
ZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIGJvb2wgZW5hYmxlZCwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tU
YXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpFeHRl
cm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxvY2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFuZ2VkKGNvbnRleHRJZCwg
ZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZp
Y2VOYW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNl
bGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxl
Y3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENo
YW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNv
bnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9u
SW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZElu
ZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NWaWRlb1Bs
YXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXIubW0KaW5kZXggNWQ2MTEwYjc5MDlmMzRjY2UzZTc2MmJmZDM4ZDJiMmY3MjFk
NTIxNi4uNzA2NjM5NzczNzliNWIxYmY1OTdjNWQ4ZGViMmFkNDZjM2Y2YjVkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXIubW0KQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbgogICAg
ICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+c2V0Um9vdExheWVyKHZpZGVv
TGF5ZXIpOwogICAgIH0KIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4dElkLCBpbnRlcmZh
Y2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZpZGVvUmVjdCwgbV9wYWdl
LT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCksIGFsbG93
c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxs
c2NyZWVuV2l0aElEKGNvbnRleHRJZCwgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCkt
PmNvbnRleHRJRCgpLCB2aWRlb1JlY3QsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW50
ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBzdGFuZGJ5
KSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVl
bkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQp
CkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0Vmlk
ZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWQKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaW50ZXJmYWNlLnNldElzQW5pbWF0aW5nKHRydWUpOwotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVl
bihjb250ZXh0SWQsIGlubGluZVZpZGVvRnJhbWUodmlkZW9FbGVtZW50KSksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGlubGluZVZpZGVvRnJhbWUodmlkZW9F
bGVtZW50KSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1
bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQm
IHZpZGVvRWxlbWVudCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIHRhcmdldE1vZGUpCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihX
ZWJDb3JlOjoKIAogICAgIGludGVyZmFjZS5zZXRUYXJnZXRJc0Z1bGxzY3JlZW4oZmFsc2UpOwog
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OkV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShjb250ZXh0SWQsIHRhcmdldE1v
ZGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9N
b2RlKGNvbnRleHRJZCwgdGFyZ2V0TW9kZSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odmlk
ZW9FbGVtZW50KTsKICAgICBVTlVTRURfUEFSQU0odGFyZ2V0TW9kZSk7CkBAIC0zMzYsMTMgKzMz
NiwxMyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5U
b01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6Ogogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpoYXNWaWRlb0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvKQog
ewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlbyhjb250ZXh0SWQsIGhhc1ZpZGVvKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlbyhjb250ZXh0SWQsIGhhc1ZpZGVvKSk7
CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6dmlkZW9EaW1lbnNpb25zQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zKQog
ewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29udGV4dElkLCB2aWRl
b0RpbWVuc2lvbnMpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZpZGVvRGltZW5zaW9ucyhj
b250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucykpOwogfQogCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMg
ZnJvbSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCh1aW50NjRf
dCBjb250ZXh0SWQpCiAKICAgICBhdXRvJiBtb2RlbCA9IGVuc3VyZU1vZGVsKGNvbnRleHRJZCk7
CiAgICAgSW50UmVjdCBpbmxpbmVSZWN0ID0gaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9F
bGVtZW50KCkpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpTZXRJbmxpbmVSZWN0KGNvbnRleHRJZCwgaW5saW5lUmVjdCwgaW5saW5lUmVj
dCAhPSBJbnRSZWN0KDAsIDAsIDAsIDApKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldElubGluZVJl
Y3QoY29udGV4dElkLCBpbmxpbmVSZWN0LCBpbmxpbmVSZWN0ICE9IEludFJlY3QoMCwgMCwgMCwg
MCkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VmlkZW9Db250
ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQpAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNv
bnRleHRJZCkKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwg
W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11
dGFibGUgewogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJ
ZF0gewogICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6
U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCB0cnVlKSwgcHJvdGVjdGVkVGhpcy0+
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNv
bnRleHRJZCwgdHJ1ZSkpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTM5NCw3ICszOTQs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJldHVyblZpZGVvQ29udGVudExheWVy
KHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICAgICAgICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3Jl
ZW5MYXllcihuaWwsIFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhp
cywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgICAgICAgICBpZiAo
cHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29u
dGVudExheWVyKGNvbnRleHRJZCwgZmFsc2UpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0
SWQsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CkBAIC00MTMsNyArNDEzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3By
b3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAg
ICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29u
dGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJG
dWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0pOwogI2Vsc2UKICAgICBDQUxheWVyKiB2aWRl
b0xheWVyID0gaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnJvb3RMYXllcigpOwpA
QCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBG
dWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIodmlkZW9MYXllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0
aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVk
VGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMt
Pm1fcGFnZSkKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3Rl
ZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29u
dGV4dElkKSk7CiAgICAgICAgIH0pOwogICAgIH0pOwogI2VuZGlmCkBAIC00NDIsNyArNDQyLDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4odWludDY0
X3QgY29udGV4dElkKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVtZW50ID0gV1RG
TW92ZSh2aWRlb0VsZW1lbnQpLCBjb250ZXh0SWRdIHsKICAgICAgICAgdmlkZW9FbGVtZW50LT53
aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkK
LSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oY29udGV4dElk
KSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94
eTo6UHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0pOwogfQogCkBA
IC00ODYsNyArNDg2LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVs
bHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CiAgICAgICAgIGlm
IChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1
bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAg
fSk7CiAjZWxzZQogICAgIG1vZGVsLT53YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKFtwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2UsIG1vZGVs
XSAoKSBtdXRhYmxlIHsKQEAgLTQ5OCw3ICs0OTgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICAgICAgICAg
ICAgICAgICAgICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChudWxscHRyKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVk
VGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBG
dWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRl
eHRJZCkpOwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0p
OwpAQCAtNTU1LDcgKzU1NSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vCiAKICAgICBpZiAo
IWlzUGFnZVZpc2libGUpCiAgICAgICAgIG1vZGVsLnZpZGVvRWxlbWVudCgpLT5zY3JvbGxJbnRv
Vmlld0lmTm90VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShjb250ZXh0
SWQsIHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxlbWVudCgpKSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpQcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCB0cnVlLCBp
bmxpbmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSkpKTsKIH0KIAogdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJ
RCh1aW50NjRfdCBjb250ZXh0SWQsIE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpS
ZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRDo6QXN5bmNSZXBseSYmIHJlcGx5
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2Eu
bW0KaW5kZXggMmUxOTBiMDM1ZjcyODBiMWZiZWRiM2FmMDAxZTY5NThjNDIwMjExNi4uYjljZTc5
ZDI3NGM0MTI3YmE3OGY1NGE1MmY2MzdlOTVlODUxZjZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MzksNyArNTM5LDcg
QEAgc3RhdGljIE5TVVJMICpvcmlnaW4oV2ViUGFnZSYgcGFnZSkKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oTUFDKQotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PE5TU3RyaW5nICo+PiBhY3RpdmVQ
YWdlc09yaWdpbnMoY29uc3QgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+PiYgcGFn
ZU1hcCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNP
cmlnaW5zKGNvbnN0IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4mIHBh
Z2VNYXApCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+PiBhY3Rp
dmVPcmlnaW5zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCA5ODcyYzMxYmE1ODRkNzFkYTE1OTExYjQ1
OGY1MTExZDFhNzkxYzFmLi43OTYwMjRjOGNlNDlhNWFjZmE4YjFmYjY1ODRmYWI4MzA1OTRjZTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291
cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3Vw
cG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJh
bWVMb2FkZXImIGZyYW1lTG9hZGUKICAgICBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShmcmFtZUxvYWRlci5uZXR3b3JraW5nQ29udGV4dCgpLCByZXF1ZXN0LCBvcHRp
b25zLmNyZWRlbnRpYWxzID09IEZldGNoT3B0aW9uczo6Q3JlZGVudGlhbHM6Ok9taXQgPyBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6
VXNlLCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFNj
aGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3QgLyp3ZWJQYWdlSUQqLykKK3ZvaWQg
V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwYWdlTG9hZENvbXBsZXRlZChQYWdlSWRlbnRpZmll
cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKaW5kZXggNTViMzY5NzUzMDY1ODIx
NGJjOTc5YTg3OTJiNjYwNzI2ZDgyOTZkZC4uNWY2MmY3NzdhYTc5YjAwNzU1NzNlNWFmY2NjNTZk
MmU2MzU1MmVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZFJlc291cmNlKFdlYkNvcmU6OkZyYW1lJiwgV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2UmLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWZQ
dHI8V2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI+JiYpPiYmKSBmaW5hbDsKICAgICB2b2lkIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoV2ViQ29yZTo6RnJhbWVMb2FkZXImLCB1bnNpZ25lZCBs
b25nLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBXZWJDb3JlOjpDbGllbnRDcmVk
ZW50aWFsUG9saWN5LCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlvbnMmLCBjb25zdCBXZWJDb3Jl
OjpIVFRQSGVhZGVyTWFwJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mKSBmaW5hbDsKLSAgICB2b2lkIHBhZ2VMb2FkQ29t
cGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgZmluYWw7CisgICAgdm9pZCBwYWdlTG9hZENvbXBs
ZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgZmluYWw7CiAKICAgICB2b2lkIHJlbW92ZShX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9hZGlu
ZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggMTM4NTU4M2FmMjlkMTc0NDEzZDUwNTc5NWFmYTk1YjVjODg5NjZiYi4u
YjE0MDNkMDU2MzkzYjM5N2QwMTdkMDkzZGU1ZmUwNGNkY2NhOGNjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC02Myw3ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmcmFtZUxv
YWRlckRlc3Ryb3llZCgpIGZpbmFsOwogICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZpbmFs
OyAvLyBtYWlubHkgZm9yIGFzc2VydGlvbnMKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBj
b25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQppbmRleCA3Zjg2OWYxZGRjYjlhMTkwODBhYWIy
MDA1ZjliZjczMmFlODdkZGRmLi43ZWJhM2E5OGFhM2RhOTA2NmRmYjdjNWI5MjJkMTA5MTBiMTQy
MTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAtMjA5LDcgKzIwOSw3IEBAIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpXZWJGcmFtZUxvYWRlckNsaWVudChXZWJGcmFtZSAqd2ViRnJh
bWUpCiB7CiB9CiAKLU9wdGlvbmFsPHVpbnQ2NF90PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFn
ZUlEKCkgY29uc3QKK09wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6cGFnZUlEKCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDVjNTgxM2Y5MWMxZWQwODdjN2Q4MjQ2MTQ0YTZl
NWJlZWQ5MDQ4MDcuLjJiY2YyNjI2OWUxMDg0YzRkNzJmODQ0YTczMWU1OTU2ZWUyZTdmODUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpmcmFtZUxvYWRlckRlc3Ryb3llZCgpCiB7CiB9CiAKLU9wdGlv
bmFsPHVpbnQ2NF90PiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlEKCkgY29uc3QKK09wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBXZWJGcmFtZUxvYWRlckNsaWVudDo6cGFnZUlE
KCkgY29uc3QKIHsKICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKaW5kZXggMzIyYzA5MDA1YWE1ZWU1NzNiNGQ3MDJkNmUxZGIyNTA2MDVkMWI1Zi4u
Njk3NWZkOGEzZjZhYTU4Nzk1ZTg2NjlmNjg2NmNjZmM1MjEwZDg0MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsVG9TdGFydFBsdWdpbihjb25zdCBXZWJDb3JlOjpQbHVnaW5WaWV3JikgY29uc3Q7
CiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwogICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAgICAgUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgZmluYWw7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370696</attachid>
            <date>2019-05-27 10:29:23 -0700</date>
            <delta_ts>2019-05-27 10:34:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198206-20190527102918.patch</filename>
            <type>text/plain</type>
            <size>508117</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyNjVhYmRkMGVkYTI2ZTdmMWEyZDlk
NGZjNGVmMTJhYjVhM2M5OTguLmQwNGI5MzQwZmVhYWZiN2I5MTkyZDg2ODQ4NzYyNDM0OTgwOWVh
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZv
ciBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAq
IHd0Zi9PYmplY3RJZGVudGlmaWVyLmg6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPDwpOgorCiAy
MDE5LTA1LTIzICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBVc2UgdGFyZ2V0IG9yaWVudGVkIGRlc2lnbiBmb3IgYm1hbGxvYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDYyYTNlZWM4NGYxMmY5NjUyZjIzMDI5MjNiMTU0MzY2Mjg0M2Q2MjAuLmY5NWYxZjhl
M2NhZjg1NmMzMGZmMTcxMDYyMDM2MjJjNWFkYzhiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogV2ViQ29yZS8qOgorCiAyMDE5
LTA1LTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IE1vdmUgR3JhcGhpY3NMYXllckNBOjphZGp1c3RUaWxlZExheWVyVmlzaWJsZVJlY3QoKSB0byBU
aWxlQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYzIyODAyMGI1MzU3N2IyY2U0ZTJjMjNmZGQyMTky
YmE5YjYwZjc2Li5hZTA4ZWYzY2ZlMWNlNDUyNmI4OWRjMzVhNWNlZjYxZmZjN2ExM2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgc3Ryb25nbHktdHlwZWQgaWRlbnRpZmllciBmb3Ig
cGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODIwNgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBX
ZWJLaXQvKjoKKwogMjAxOS0wNS0yNyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtQb2ludGVyIEV2ZW50c10gVGVzdCBhdCBwb2ludGVyZXZlbnRzL2lvcy90
b3VjaC1hY3Rpb24tbm9uZS1pbi1vdmVyZmxvdy1zY3JvbGxpbmctdG91Y2guaHRtbCB0aW1lcyBv
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMWRkNTRlYWZhMzdmZDZiZDYxNzY3OTI4N2EzODVi
YmE0MDk0NjU4NS4uZTFkMzJmZTQ3ZWI3YjNjMTE3NTU4ZmZiYWE4NTYwZGExODVjZjk2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlk
ZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAy
MDE5LTA1LTE3ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBVc2UgYnVpbHRpbiBGaW5kSUNVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggZDYwZjM1OGVmMGY2MWJmYTBlMGNjN2QyMGEyMGFiZjRjODA0NWE1MS4uNmRhYzgwYzhl
ZGM0MTEwNzJiZGE0MGIxMGZkOGYxOGMyMWZhYTJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgc3Ryb25nbHktdHlwZWQgaWRlbnRpZmllciBmb3Ig
cGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODIwNgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnBhZ2VJRCBjb25zdCk6CisKIDIwMTktMDUtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRHJvcHBlZCB0ZXh0LCBhdHRhY2ht
ZW50cywgYW5kIGltYWdlcyBzaG91bGQgYW5pbWF0ZSBpbnRvIHBsYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJ
ZGVudGlmaWVyLmgKaW5kZXggNDA4OTdiNTlkMDdhM2MwNTUwYWUyMzIzYzFjMTliYjI5NTMzOWZk
OC4uYjNiY2FkZDlkZDE5NWFiMzBiMThjZjFkYWQzMzUyMzExOTI1MjZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09i
amVjdElkZW50aWZpZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPG11dGV4PgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEyMiw2ICsxMjMsMTMgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoPE9iamVjdElkZW50aWZpZXI8VD4+IHsK
ICAgICB0eXBlZGVmIE9iamVjdElkZW50aWZpZXJIYXNoPFQ+IEhhc2g7CiB9OwogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgT2JqZWN0SWRlbnRpZmllcjxUPiYgaWRlbnRpZmllcikKK3sKKyAgICB0cyA8PCBpZGVudGlm
aWVyLnRvVUludDY0KCk7CisgICAgcmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IAogdXNpbmcgV1RGOjpPYmplY3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMjNj
YzVmMTBmMzVkNzlhOTgxNDhmZWQ3Y2IxMjhjYzdlY2RkNzA4My4uZTIyNmQ4ZmMyOGU3MjA4OWU5
MTYyOGNkNjQ5MmI4M2MyYjA0MGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC03NzcsNiArNzc3
LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uaAogICAgIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaAogICAgIHBhZ2Uv
UGFnZUdyb3VwLmgKKyAgICBwYWdlL1BhZ2VJZGVudGlmaWVyLmgKICAgICBwYWdlL1BhZ2VPdmVy
bGF5LmgKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCiAgICAgcGFnZS9QZXJmb3Jt
YW5jZUxvZ2dpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGU5NWE4ZjkzMGU0YzM4MTU5YzEyYWQ2M2QzYWJmOWFhM2NmNzA0
YjQuLjZlMTJjOWUwMzc5ZWE0NzA2ZDQzYTBkMDBjNTQwZDJmNjg3OWU4OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTgs
NiArMTIxOCw3IEBACiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0
RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9N
UmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZF
OENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk1
MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEEyMDdENjMyODAwQTdEMkREIC8q
IEFic3RyYWN0RE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTYyMDdENjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThG
MjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTcyMDdENjM0MDAwQTdEMkREIC8q
IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3RDYzMkMwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTc2MDUsNiArNzYwNiw3IEBACiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBE
T01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01S
ZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1
c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QjY1MERCMjI5NjI2MjcwMEZE
OEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYWdlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4
QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZCOTUxOEMyMDdENjMyOTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJl
bW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAyMDks
NiArMjAyMTEsNyBAQAogCQkJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAu
aCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVy
cmVyLmNwcCAqLywKIAkJCQk3QTY3NEJEQTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9h
ZERlZmVycmVyLmggKi8sCisJCQkJNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggKi8sCiAJCQkJMkQ1QzlDRkIxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5
LmNwcCAqLywKIAkJCQkyRDVDOUNGQzE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCAq
LywKIAkJCQkyRDVDOUNGRDE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9sbGVy
LmNwcCAqLywKQEAgLTMwNzcyLDYgKzMwNzc1LDcgQEAKIAkJCQk5MzAyQjBCRjBENzlGODJDMDBD
N0VFODMgLyogUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTY3NEJEQzBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NUI4MUNDNDFGQUE0NEJDMDAzN0QxRTYgLyogUGFnZUhlYXBBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUNCMDUyNDFGQjUxRjMzMDAwODlCOTcgLyogUGFnZU5ldHdvcmtBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QzlEMDAxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VP
dmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwMjE5QzdCNTJFMDBCM0M1QzEgLyog
UGFnZU92ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmNwcAppbmRleCA3NjkxMmNhZWI4YTY0MGVkMTMzYWM0YWFmNGZhN2Q1YzI4OTdhZmEyLi4wZTdk
NTQyMDVjODM1NjdhYTY1ZTM2MGQ0N2FjMDUzM2EzMTUwZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29sYXRlZFRyZWUoKSk7
CiB9CiAKLVJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRpYWxpemVQYWdl
VHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYgY2FjaGUpCitSZWY8QVhJ
c29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjppbml0aWFsaXplUGFnZVRyZWVGb3JJRChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmIGNhY2hlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIHRyZWUgPSBjYWNoZS0+Z2VuZXJhdGVJ
c29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIFJlZlB0cjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEIHRy
ZWVJRCkKICAgICByZXR1cm4gdHJlZUlEQ2FjaGUoKS5nZXQodHJlZUlEKTsKIH0KIAotUmVmPEFY
SXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRf
dCBwYWdlSUQpCitSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tl
cihzX2NhY2hlTG9jayk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBB
WElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpCiAgICAg
cmV0dXJuIG5ld1RyZWU7CiB9CiAKLVJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OnRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKQorUmVmUHRyPEFYSXNvbGF0ZWRUcmVl
PiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoc19jYWNoZUxvY2spOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aAppbmRleCBjMDc1ZDViMDE2NzgxMjYwYzc2MDE5YjUwZTI2ZjYwNjAxOWRlMDNmLi42ZWVjMjY0
NTE5ODRmOGViYTg4ODRmNTljNTMzN2NlNTI2Y2Q5YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVF
KQogCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWVOb2RlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTQzLDkgKzQ0LDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZSgpOwogICAg
IHZpcnR1YWwgfkFYSXNvbGF0ZWRUcmVlKCk7CiAKLSAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRU
cmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQo
dWludDY0X3QgcGFnZUlELCBBWE9iamVjdENhY2hlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQp
OworICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFn
ZUlkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRy
ZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyLCBBWE9iamVjdENhY2hl
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJl
ZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlTm9kZT4gcm9vdE5vZGUoKTsKQEAg
LTcwLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVkVHJlZSgpOwogCiAgICAgc3Rh
dGljIEhhc2hNYXA8QVhJc29sYXRlZFRyZWVJRCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVJ
RENhY2hlKCk7Ci0gICAgc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFJlZjxBWElzb2xhdGVkVHJl
ZT4+JiB0cmVlUGFnZUNhY2hlKCk7CisgICAgc3RhdGljIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIs
IFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlUGFnZUNhY2hlKCk7CiAKICAgICAvLyBPbmx5IGFj
Y2VzcyBvbiBBWCB0aHJlYWQgcmVxdWVzdGluZyBkYXRhLgogICAgIEhhc2hNYXA8QVhJRCwgUmVm
PEFYSXNvbGF0ZWRUcmVlTm9kZT4+IG1fcmVhZGVyVGhyZWFkTm9kZU1hcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDFkNDMxNjZlZWMzMTczYzE0ODFlNGVjOTRhMzY2N2MxY2E3NDBiNzku
LmE4YTg0MDAyY2FlY2I1MWEzODYzZGViNjlhMGQ2NDM1NGNjODZkMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNzc3MCw3ICs3NzcwLDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2Vy
KCkKICAgICByZXR1cm4gKm1fbG9nZ2VyOwogfQogICAgIAotT3B0aW9uYWw8dWludDY0X3Q+IERv
Y3VtZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50
OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5wYWdlSUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggM2ZjNWEzMmYzODFlNjdmZDIw
OGFmMzEyNjcxNGQ0MjJhMGIzZWZkZC4uMTZkMDQxMGJiNjdkNGQ5OWYwNDU2N2VmMDE2YjYyZWEx
NmViMTdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1
ZGUgIk9yaWVudGF0aW9uTm90aWZpZXIuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgog
I2luY2x1ZGUgIlJlZ2lvbi5oIgpAQCAtNjM1LDcgKzYzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICAgdm9p
ZCBjbGVhckFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQo
KSBjb25zdDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7CiAg
ICAgLy8gdG8gZ2V0IHZpc3VhbGx5IG9yZGVyZWQgaGVicmV3IGFuZCBhcmFiaWMgcGFnZXMgcmln
aHQKICAgICB2b2lkIHNldFZpc3VhbGx5T3JkZXJlZCgpOwogICAgIGJvb2wgdmlzdWFsbHlPcmRl
cmVkKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxseU9yZGVyZWQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nvb2tpZUphci5jcHAKaW5kZXggYjFiZWQ4ZjAzMmY5Y2QyNzgxOTNlZWRjZmZjN2NmMTUzMTg5
NmIyNi4uMzNlMjc4NjM4MzY1NjkwZDE2ZDcyYjNkN2I1YmUwYmUyMDg1YjZjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RyaW5nIENvb2tpZUph
cjo6Y29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAg
IGF1dG8gaW5jbHVkZVNlY3VyZUNvb2tpZXMgPSBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhk
b2N1bWVudCwgdXJsKTsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAg
IGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBw
YWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xMTAsNyArMTEw
LDcgQEAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkgQ29va2llSmFyOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eShjb25zdCBEb2MKIHZvaWQgQ29va2llSmFyOjpzZXRDb29raWVz
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1l
SUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQg
PSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xMzEsNyArMTMxLDcgQEAg
Ym9vbCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nl
c3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6
OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNz
ZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpT
ZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9y
YWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGQ6OnBhaXI8U3RyaW5n
LCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdQogU3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
CiBib29sIENvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgY29va2llcykgY29uc3QKIHsKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDBkYjA3
YzZkMTJlOGQ5YmRhZmMzYzBhYmE2ZWU3MWE4OWJjMTk5NDcuLjI4MWY4NGM0OTAwNTI2N2VhMDU0
ZDUxZDc2OGE5ZWI3MzJjYmMyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb29r
aWVzKERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwog
CiAgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7
Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJl
Q29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6
OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBn
ZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4m
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50Jiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGYwYmI4NmRkZDUwOTll
MzExZDg5YTQ5YmUzYTNiZTQwNzdmNWU1Yi4uMWY3YTI5YzRiMzAxYTM2NTgyMmU0MjMzYjQxNWRk
MWMwMDE5MTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZnJh
bWVMb2FkZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6
bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVjMzkxMjdhMWFkNmMyNWUwZDM0
NmJlN2E0NjhjYjZlYTk4ZjNmYzkuLjA3NDg3NjExOGRjNjkxYWE3YzhhZGE5N2I3OTcxMzczM2Ey
OGE2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkxh
eW91dE1pbGVzdG9uZS5oIgogI2luY2x1ZGUgIkxpbmtJY29uLmgiCisjaW5jbHVkZSAiUGFnZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CkBAIC0xMjYsNyArMTI3LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciop
ID0gMDsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0ID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA4YTgyMzgxZjAxODE2NWU2NTNl
M2M0YjI1NGU1Njk3YjYzYzA5ZjcwLi40NWZlYjYzNWY3MGMzNWM5OWM3MTZkMzkxNDEyYTVmZDJk
MWRlZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNs
dWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kuaCIKQEAgLTU3LDcgKzU4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQg
TG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2Uo
RnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4mJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hy
b25vdXNseShGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29t
cGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9h
ZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZShSZXNvdXJjZUxvYWRlciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlciYsIGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uQWN0aW9uLmNwcAppbmRleCA3NzQ1MDAxZTc4YWM5N2JlMDI0YjIzZDQxMTBlYzRmZDI5
MGI3ZDNiLi5mMjZhOWFhZjJmZDc5NzRjZDNlNzFjODU5YWI0M2ZlZTIwZjgwM2ZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5hdmlnYXRpb25BY3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVz
dGVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fdXJsIHsgVVJMIHsgZG9jdW1l
bnQudXJsKCkgfSB9CiAgICAgLCBtX29yaWdpbiB7IG1ha2VSZWZQdHIoZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSkgfQotICAgICwgbV9wYWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZy
YW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5wYWdlSUQoKS52YWx1ZU9yKDApLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjx1aW50NjRfdCwgdWludDY0
X3Q+KDAsIDApIH0KKyAgICAsIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIgeyBkb2N1bWVudC5mcmFt
ZSgpID8gc3RkOjptYWtlX3BhaXIoZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pLCBkb2N1bWVudC5mcmFtZSgpLT5s
b2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjxQ
YWdlSWRlbnRpZmllciwgdWludDY0X3Q+KHsgfSwgMCkgfQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAppbmRleCAxYTQ0ZjkxZDM2ODFiODE0MDBlNzExMjdl
YTUyNzJjNzViZTRiZTA3Li5lZDdkMDljZjI4OTJiYjg0ZGYyZjI0OWIwNTE0NzVkOGRjNzM2Nzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCisjaW5jbHVkZSAi
UGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBA
IC02MywxNCArNjQsMTQgQEAgcHVibGljOgogICAgIE5hdmlnYXRpb25BY3Rpb24oTmF2aWdhdGlv
bkFjdGlvbiYmKTsKICAgICBOYXZpZ2F0aW9uQWN0aW9uJiBvcGVyYXRvcj0oTmF2aWdhdGlvbkFj
dGlvbiYmKTsKIAotICAgIHVzaW5nIFBhZ2VJREFuZEZyYW1lSURQYWlyID0gc3RkOjpwYWlyPHVp
bnQ2NF90IC8qIHBhZ2VJRCAqLywgdWludDY0X3QgLyogZnJhbWVJRCAqLz47CisgICAgdXNpbmcg
UGFnZUlEQW5kRnJhbWVJRFBhaXIgPSBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+OwogICAgIGNsYXNzIFJlcXVlc3RlciB7CiAgICAgcHVibGljOgogICAg
ICAgICBSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmKTsKIAogICAgICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICptX29yaWdpbjsgfQotICAgICAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZyYW1lSURQYWlyLmZp
cnN0OyB9CisgICAgICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KICAgICAgICAgdWludDY0X3QgZnJhbWVJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIuc2Vjb25kOyB9CiAgICAgcHJp
dmF0ZToKICAgICAgICAgVVJMIG1fdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggMTRiYzJmM2JlZWZhMmE2MDMyYTI2YzdkNmFkMmZj
ZmQ4N2I3Y2IyYi4uZmZhZGExYzQ1YmU0NjZiN2ZhZGNmZDA2OTEwMTMyNWVjYTM5ZDU1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRh
dGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFZlY3RvCiAgICAgbV9ub3RpZmljYXRpb25D
YWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9uQ2FsbGJhY2spOwogfQogCi12b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJh
Y2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3Bl
bmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxs
YmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVCghbV9yZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2spOwogICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CkBAIC0yMzQsNyArMjM0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJl
ZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVy
UGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCit2b2lkIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQp
CiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVuZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdp
c3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBvcGVuZXJVcmwgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggYzQ2NjFiMDQ3NjA3MzIwZmQ4
N2ZiYjNkYmJiODAzZTRkMTFkNGE0MS4uZGUxYzk0YTcyY2Q0NzFjY2Y3ZjgyYjVhMmNiYjkxNzdk
YjU2ODBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzQWN0
aXZpdHlSZWNvcmQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQo
VmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVpbnQ2NF90
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lk
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFBhZ2VJZGVudGlmaWVy
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldExvZ1VzZXJJbnRlcmFjdGlvbk5vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0TG9nV2ViU29ja2V0TG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNr
KEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxsVGltZSk+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TG9nU3VicmVzb3VyY2VMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4mJik7CkBAIC05NCwxMyArOTUsMTMgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3Rp
Y3MoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVu
ZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwOwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdURjo6V2FsbFRpbWU+
IG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwOwogICAgIEZ1bmN0aW9uPHZvaWQoVmVj
dG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwot
ICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNr
OwogICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJik+IG1fbG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dXZWJTb2NrZXRMb2FkaW5nTm90
aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1l
KT4gbV9sb2dTdWJyZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDE2ZDNmOWMxYWVkNWE3NWEwYTQ5Zjg0NWZlNDQxMDMw
MmRiNGUxN2YuLmFkNzA1ODgyYjEwMzNmMGMwMzJjZTcxMjFhNzdiNTE0MTIzM2JmMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNDg5LDggKzQ4OSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgPSAwOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJs
ZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZy
YW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIHVp
bnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8s
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOyB9CisgICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQq
LywgUGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZy
YW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50
NjRfdCAvKmZyYW1lSUQqLywgUGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaAppbmRleCAxNTZjOWNkMjA1ZDRjZjMyNGQ2ODFmOTc2
MTMyYzE2Y2UyZjE3NGQ0Li4wZDdiM2RiZjcyZjgxZTRmZDYyYTczZmVkMjU4MWNlYWVlMTY3YjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKQEAgLTI1
LDEzICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ly8gRnJhbWUgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQg
cHJvY2Vzc2VzLgogc3RydWN0IEdsb2JhbEZyYW1lSWRlbnRpZmllciB7Ci0gICAgdWludDY0X3Qg
cGFnZUlEOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICB1aW50NjRfdCBmcmFtZUlE
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9u
YWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxGcmFtZUlkZW50aWZpZXI6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBkZWNvZGVyID4+IHBhZ2VJRDsK
ICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGQ1ZjhkMjk3NTYzZWUwMjljNDEz
ZTljZGE3NDk0YzVmYTRkOGFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworZW51bSBQYWdlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGFnZUlkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkuaAppbmRleCAxMTU5MDUwY2QzMmM5M2NkM2IxMWNmMTMyMjU2
OWQ2NDFlNTBkNjM2Li5hNmY4MzY2NGNiMDE5NzI0NWFlYjdiYzhmMDQwOWY0ZWJiZWIwZWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2FtZVNpdGVJbmZvLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM4LDcgKzM5LDcgQEAgc3RydWN0IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5IHsKICAgICBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvOwog
ICAgIFVSTCB1cmw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzIHsgSW5jbHVk
ZVNlY3VyZUNvb2tpZXM6Ok5vIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC03MSw4ICs3MiwxMSBAQCBPcHRpb25hbDxDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk6
OmRlY29kZShEZQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmZyYW1lSUQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhZ2VJRCkpCisgICAgT3B0aW9uYWw8T3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBwYWdlSUQ7CisgICAgZGVjb2RlciA+PiBwYWdlSUQ7Cisg
ICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0
LnBhZ2VJRCA9ICpwYWdlSUQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggNDY1ZGE1N2JmMzg3Y2E1YmNmOWJiZWEy
NzJmMmMyNGZmMTI2NWRjYi4uN2EyN2ViNTM0MDZkNjE5MTliNTIwMTAwMzJiNTRhZGMxNTQ4MDg0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtNjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZv
ci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkg
Y29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hv
dWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51
cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0KICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hv
dWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVS
TCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSBjb25zdAogewogICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFy
dHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9t
YWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRv
bWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlE
KSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3JhbnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0
cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygp
IGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAgICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1w
dHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3Jh
bnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0K
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0g
bV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAgIGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1l
SUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNE
YXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9y
YWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwogICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nl
c3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAg
IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9
CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0
aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRS
ZXNvdXJjZS5hZGQocGFnZUlELCB0b0RvbWFpbik7CiB9CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKCkKICAgICBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0
TW9kZSA9IHRydWU7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK09wdGlvbmFsPFNlY29uZHM+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgfHwgIXBhZ2VJRCB8
fCBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmgKaW5kZXggODRkNGViNjZhNzQwNWU5YzY2Yzk0ZDY3YTgwOTE4YTA4ZDdkZGY3ZS4u
NThkYTg3ODkwN2ZmNzQwMjQ4YzNiMTU4NzRkOTEzMjk3OWE4ZDMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxT
dG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdpc3Ry
YWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29v
a2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRv
Y3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBj
b25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwzMCArMTM1LDMwIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5h
bWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVz
Rm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4s
IEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29v
a2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29u
c3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxv
Y2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMs
IGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVz
Rm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
Zmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWlu
dDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxs
U3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQgQEAgcHJpdmF0
ZToKICAgICBDcmVkZW50aWFsU3RvcmFnZSBtX2NyZWRlbnRpYWxTdG9yYWdlOwogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGll
bnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdDsKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGll
bnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvcjsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBIYXNoTWFwPHVpbnQ2NF90LCBSZWdpc3RyYWJsZURvbWFpbiwgRGVmYXVsdEhhc2g8
dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2
NF90Pj4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7Ci0g
ICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFi
bGVEb21haW4+LCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7
CisgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDx1aW50NjRfdCwgUmVnaXN0cmFi
bGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNz
OworICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4s
IFJlZ2lzdHJhYmxlRG9tYWluPj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwogICAgIE9w
dGlvbmFsPFNlY29uZHM+IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgeyB9
OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgeyB9
OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXNTaG9y
dCB7IH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRI
YXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
aW50NjRfdD4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291
cmNlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZ2lzdHJhYmxlRG9t
YWluPiBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsK
ICAgICBib29sIG1fbmF2aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlvblRlc3RNb2RlID0gZmFsc2U7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAppbmRleCA2
N2RmNzY0ZDJjNGFlNDVhOTY4NTk0NGFjNDIxNWNkNTUzYTJiMjUxLi4zMzBhYTYwODY2MTQwYjI0
ZDliNzA1MjM4M2E4MWNlY2Y5MGI5OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNG
TmV0V2luLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNv
b2tpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQogICAgIHJl
dHVybiBwYXJzZWRDb29raWVzOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFs
dWUpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlSUQpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zU2VjdXJl
Q29va2llcyhDRkFycmF5UmVmIGNvb2tpZXMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBA
IC0yNDAsNyArMjQwLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBj
b29raWVTdHJpbmcsIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0
CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gcG9saWN5ID09
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5
RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeUFsd2F5czsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURf
UEFSQU0ocGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4
IDYzNzQwMzUyYzRhNjI3ZWQ2ZmVlZDY5ZmZlYjA5ZDE5N2E4ODc0YzcuLjU1N2U5NzdiNGQ3MmFj
ODE5N2U5OWUyOTZlNGMyMTAwNzY3M2NjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbQpAQCAtMjk0LDcgKzI5NCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4g
ZmlsdGVyQ29va2llcyhOU0FycmF5ICp1bmZpbHRlcmVkQ29va2llcywgT3B0aW9uYWw8U2VjCiAg
ICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNG
b3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQp
CitzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJz
dFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCkBAIC0zMDcsNyArMzA3LDcgQEAgc3RhdGlj
IE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGYKIH0KIAogZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90
SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLXN0YXRpYyBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBP
bmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykKK3N0YXRpYyBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5
T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAKQEAgLTM2MywxMiArMzYzLDEyIEBAIHN0YXRp
YyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2ll
U3RvcmFnZSkKICAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQWxsQ29va2llcyhjb29raWVT
dG9yYWdlKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICByZXR1cm4g
Y29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2ll
cyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJl
Q29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcykgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIEluY2x1ZGVIVFRQT25s
eSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpAQCAtMzc4LDcgKzM3OCw3IEBAIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBoZWFk
ZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBo
ZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVs
ZFByb3h5LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVT
ZWN1cmVDb29raWVzKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0Cit2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7
CiAKQEAgLTQ0Myw3ICs0NDMsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
c0VuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
CiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcAppbmRleCAyYzExNTY4ZmNlNWIyODkxMjYwZGEzYmU5MWY4OTE3YzA4
NTEyN2E4Li4yOWI0MDA1MDI1MzMwMDc5YWY0NTcyYWI5ZGFjYTZjNWQ4M2ViMDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuY3BwCkBAIC01OSwxMCArNTksOSBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9u
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJl
dHVybiBjb29raWVzLnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKLSAgICBVTlVTRURfUEFS
QU0ocGFnZUlEKTsKIAogICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29v
a2llRGF0YWJhc2UoKTsKICAgICBjb29raWVKYXJEQi5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJs
LCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KTsKQEAgLTc0LDcgKzczLDcgQEAg
dm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3MKICAgICBjb29raWVKYXJEQi5zZXRDb29raWUoZmlyc3RQ
YXJ0eSwgdXJsLCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yayk7CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVzRm9yRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVT
RURfUEFSQU0ocGFnZUlEKTsKQEAgLTgzLDcgKzgyLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gQ29va2llSmFyQ3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24KICAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwsIGZhbHNlKSwgZmFsc2UgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2ll
SmFyQ3VybDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0xMTMsNyArMTEyLDcgQEAgYm9vbCBDb29raWVKYXJD
dXJsOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24p
IGNvbnN0CiAgICAgcmV0dXJuIHNlc3Npb24uY29va2llRGF0YWJhc2UoKS5pc0VuYWJsZWQoKTsK
IH0KIAotYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29s
IENvb2tpZUphckN1cmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBV
TlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaApp
bmRleCA4OTQxMDIzZjgwNjhlYTc0ODBiN2M1MGQ1Y2U2ZjhkZjU1Y2UyYjkzLi4yNGEwNWEyMjdh
ZTA2YWJhMTE0MzE1MmE4ZmFjODQ4MjllMDFmNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmgKQEAgLTI0LDYgKzI0LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CkBAIC00MSwxNSArNDIsMTUgQEAgZW51bSBjbGFzcyBDb29raWVBY2NlcHRQb2xp
Y3k7CiAKIGNsYXNzIENvb2tpZUphckN1cmwgewogcHVibGljOgotICAgIHN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIGNvbnN0OwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIElu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIENvb2tpZUFjY2VwdFBvbGljeSkgY29uc3Q7CiAgICAgQ29va2llQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBjb25zdDsKICAg
ICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIGNvbnN0
OwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dDsKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eSYpIGNvbnN0OwotICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OworICAgIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFZlY3RvcjxDb29raWU+JikgY29uc3Q7
CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIGhv
c3RuYW1lcykgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0
TmFtZXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5
NGM4NmFmZThmNzQwYWVkZDI4YWQ5NzI3Mjc1MWVlYmEzODQzMjMuLjY4NzJiMGFjOWIwMDE5ZGU1
ODNlYjI2OGM4Yzk0NTc5OWVmOTQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3Vy
bC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3QKIHsKICAgICBjb29raWVTdG9yYWdlKCkuc2V0Q29va2llc0Zyb21ET00o
KnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHZh
bHVlKTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNF
bmFibGVkKCp0aGlzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBy
ZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsK
IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENvb2tpZXMoY29uc3QgVVJMJikKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmdldFJhd0Nvb2tpZXMoKnRo
aXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJhd0Nv
b2tpZXMpOwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpmbHVzaENvb2tpZVN0b3JlKCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQg
dG8gdXNlLgogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDFmNzU4NzdhODJiMzE4Mzk0NzYxMTIzYmU2ZjU4
NWE0NzYxY2Y4OTYuLmY2NjQxZWZlYjQ0YzczNDM0ZTRkMTVhNGE1YWJlZGQ4NTZmMjBlNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29r
aWVzLCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFt
ZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBWZWN0
b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1
cmwpCiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIu
Z2V0KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9Q
QVJBTShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01MjIsNyAr
NTIyLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4gY29va2llc0ZvclNl
c3Npb24oKnRoaXMsIHVybCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQ
YXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDk2NjFi
YzQzN2U5ODU0MmI2YzVjMWQ2NjQ4OTZmNjAyODVhN2ZiM2QuLjU0MzkwMmZmNTM0ZWE1MGE0ZGVi
MDUxNjJjMmVlYjM1YmEyZDdkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNp
Zm5kZWYgUmVzb3VyY2VSZXF1ZXN0X2gKICNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2lu
Y2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
IgogI2luY2x1ZGUgIlVSTFNvdXAuaCIKIApAQCAtMzgsNyArMzksNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAg
ICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxh
Z3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5p
dGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDYsNyArNDYsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2Uo
dXJsLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkK
ICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3Nv
dXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwg
bV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01NCw3ICs1
Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQog
ICAgICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigw
KSkKLSAgICAgICAgICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTYzLDcgKzYx
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RC
YXNlKFVSTCgpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBv
bGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAg
LCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAg
ICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03
MSw3ICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VS
ZXF1ZXN0QmFzZShVUkwoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29s
Q2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAg
ICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0g
ICAgICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAg
ICB1cGRhdGVGcm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CkBAIC04MCw3
ICs3Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZShzb3VwVVJJVG9VUkwoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3QpKSwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAg
ICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxh
Z3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5p
dGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9tU291cFJl
cXVlc3Qoc291cFJlcXVlc3QpOwogICAgICAgICB9CkBAIC0xMDAsOCArOTUsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3Mgc291cE1lc3NhZ2VGbGFncygp
IGNvbnN0IHsgcmV0dXJuIG1fc291cEZsYWdzOyB9CiAgICAgICAgIHZvaWQgc2V0U291cE1lc3Nh
Z2VGbGFncyhTb3VwTWVzc2FnZUZsYWdzIHNvdXBGbGFncykgeyBtX3NvdXBGbGFncyA9IHNvdXBG
bGFnczsgfQogCi0gICAgICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCB7IHJl
dHVybiBtX2luaXRpYXRpbmdQYWdlSUQ7IH0KLSAgICAgICAgdm9pZCBzZXRJbml0aWF0aW5nUGFn
ZUlEKHVpbnQ2NF90IHBhZ2VJRCkgeyBtX2luaXRpYXRpbmdQYWdlSUQgPSBwYWdlSUQ7IH0KKyAg
ICAgICAgUGFnZUlkZW50aWZpZXIgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5pdGlhdGluZ1BhZ2VJRDsgfQorICAgICAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlSUQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKSB7IG1faW5pdGlhdGluZ1BhZ2VJRCA9IHBhZ2VJRDsgfQogCiAg
ICAgICAgIEdVbmlxdWVQdHI8U291cFVSST4gY3JlYXRlU291cFVSSSgpIGNvbnN0OwogCkBAIC0x
MTMsNyArMTA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hY2Nl
cHRFbmNvZGluZyA6IDE7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7Ci0g
ICAgICAgIHVpbnQ2NF90IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgUGFnZUlkZW50aWZp
ZXIgbV9pbml0aWF0aW5nUGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VN
ZW1iZXJzKFNvdXBNZXNzYWdlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3Nh
Z2VCb2R5KFNvdXBNZXNzYWdlKikgY29uc3Q7CkBAIC0xNjIsMTAgKzE1NywxMSBAQCBib29sIFJl
c291cmNlUmVxdWVzdDo6ZGVjb2RlV2l0aFBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zb3VwRmxhZ3MgPSBzdGF0aWNfY2FzdDxTb3Vw
TWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKTsKIAotICAgIHVpbnQ2NF90IGluaXRpYXRp
bmdQYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbml0aWF0aW5nUGFnZUlEKSkKKyAg
ICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBkZWNvZGVy
ID4+IGluaXRpYXRpbmdQYWdlSUQ7CisgICAgaWYgKCFpbml0aWF0aW5nUGFnZUlEKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2VJ
RDsKKyAgICBtX2luaXRpYXRpbmdQYWdlSUQgPSAqaW5pdGlhdGluZ1BhZ2VJRDsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDBmNmVhMTk3ODdhNDZj
NzQ3NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUuLjBlZDI1YjM3ZDVmODA4NzY4MTI1Mzg3NzA4OTBh
ZjliODhlOTM2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTE4Myw3ICsxODMsNyBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNv
dXBSZXF1ZXN0KSBjb25zdAogewogICAgIGlmIChtX2luaXRpYXRpbmdQYWdlSUQpIHsKICAgICAg
ICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1aW50NjRfdCo+
KGZhc3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSkpOwotICAgICAgICAqaW5pdGlhdGluZ1BhZ2VJ
RFB0ciA9IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgKmluaXRpYXRpbmdQYWdlSURQdHIg
PSBtX2luaXRpYXRpbmdQYWdlSUQudG9VSW50NjQoKTsKICAgICAgICAgZ19vYmplY3Rfc2V0X2Rh
dGFfZnVsbChHX09CSkVDVChzb3VwUmVxdWVzdCksIGdfaW50ZXJuX3N0YXRpY19zdHJpbmcoZ1Nv
dXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSksIGluaXRpYXRpbmdQYWdlSURQdHIsIGZhc3RG
cmVlKTsKICAgICB9CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0KSBjb25zdAogdm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21Tb3VwUmVxdWVzdChTb3VwUmVxdWVzdCogc291cFJl
cXVlc3QpCiB7CiAgICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2Fz
dDx1aW50NjRfdCo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBSZXF1ZXN0KSwgZ1Nv
dXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSkpOwotICAgIG1faW5pdGlhdGluZ1BhZ2VJRCA9
IGluaXRpYXRpbmdQYWdlSURQdHIgPyAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA6IDA7CisgICAgbV9p
bml0aWF0aW5nUGFnZUlEID0gbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBl
Pihpbml0aWF0aW5nUGFnZUlEUHRyID8gKmluaXRpYXRpbmdQYWdlSURQdHIgOiAwKTsKIH0KIAog
dW5zaWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAppbmRleCA4NzljMGIxOWU5NjZmMjk2OWJhMGFmNDc4YjZlODNlNjMwNWI5NDBiLi5iNjg5YzNl
MjVhZDgyM2VjZjZkMzA0ZWU3ODljYTlmMzQ1ZGEyZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3MTYs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3RvcmFn
ZUltbWVkaWF0ZWx5KCkKICAgICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQzLDcg
Kzc0Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywg
T3BlbmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9t
YWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwg
V1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsg
fSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURv
bWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChX
VEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQs
IHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlE
IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JF
YXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1l
SUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNzYwZDJhM2UxZWNi
ZGU4Yjc1ODUzNzU1ZTNhZTkwLi5iZmMyMzM5Njg1MzMyMDAyNjI2Nzg5NDMxYWUwNzNiMmQzOTc1
ZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlm
TmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQs
IE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9y
RG9tYWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpIG92ZXJyaWRlOwogCkBA
IC05MSw5ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVs
ZW1ldHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVE
b21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJv
b2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dV
c2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3
ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25l
ZCByZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNE
b21haW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBTdGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2
YWxlbnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMp
OwogICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0g
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BG
cmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0lu
dGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRU
b1ByZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFs
ZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVEYXRh
UmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwZWU3Zjk2Mzg5NDYx
NWRmZDEzNWIxODQwOTBiNTNmODFiZDlkZmY0Li5hNWYyNjI0ZTQzMzRjZTkwMzlmYWE1ZTJkMWU1
YzQxZmQwZDA4N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAgICAgICAgbV9w
ZXJzaXN0ZW50U3RvcmFnZS0+c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpZZXMpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlE
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIyNCw3
ICsyMjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgcwogICAgIH0pOwogfQogCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgRnJhbWVJRCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgRnJhbWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiBzdQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9w
ZW5lclBhZ2VJRCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4m
JiBvcGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyAhPSBvcGVuZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
Mjg3LDcgKzI4Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluCiAgICAgZ3JhbnRTdG9yYWdl
QWNjZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZN
b3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFn
ZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShz
dWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQs
IHByb21wdFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRv
cEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21w
dFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oCmluZGV4IDQ0ZWZiZjRkZWMxNGYyMDI3MDJhY2FkMDc3NjhmNWFjODIwYjgw
NWEuLjQ1ZjdlMWI3NTk2OTNjMTEwM2EzZDY2MjczMTZkNmZjZTAyZTRjZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmln
YXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNv
bnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJh
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1l
RG9tYWluJikgb3ZlcnJpZGU7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2ln
bmVkIHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFp
bihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21h
aW4+JiwgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVu
dChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVi
dWdNb2RlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3
OWNjMWYxYjk0NTYyMWI5YTA1NTI0ODRjMDk2YzUuLmQ3Nzk4YjI1ZDFlM2JiYmI3OGE4N2FiM2Ux
YTVhMzEzOWYxNGJhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKQEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWlu
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3Bl
bmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVy
UGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNp
bmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogICAgIAogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSgpOwpAQCAtMTEwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0
b3JhZ2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQ
YWdlSUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZv
aWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAgICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Rl
YnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH07CiAg
ICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQ
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1l
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZp
Z2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJv
bURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4
IDg3MWIxOWQyZjA3NDg2ZTBmNGJiNzYzYzY5ZGFhMWFhZmY4N2M5OTIuLjYyMjQzMGNkOGU0ZjA5
ZWNhZjhmYTM2OGEzODlmMGNhYjg3YzEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZl
Y3RvcjxXZWJDb3IKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3Vi
RnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
c3ViRnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CkBAIC0yOTgsMTIgKzI5OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcwog
ICAgIH0pOwogfQogCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
c291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBt
X25ldHdvcmtTZXNzaW9uID8gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCkuaGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlEKSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFu
ZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYm
IGNhbGxiYWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMxNSw3
ICszMTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUgogICAgIGNhbGxiYWNrKGZhbHNlKTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoc3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOjpObyk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBS
ZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGUK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWlu
Lmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVk
Q29weSgpLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMzk2LDcgKzM5
Niw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgfSk7CiB9CiAKLVN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00MDksNyAr
NDA5LDcgQEAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QKICAgICByZXR1cm4gaXNTdG9yYWdlR3Jh
bnRlZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxs
R3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hh
bmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAppbmRleCA4NzU5ZDYwMTY2YTU1MGVlNjlhNjJiMTcxZGVhODZmZTNhNDFiOTJmLi43
OWNmMjQ2MDFjMzJlNzA1Y2Q4YjQ1M2Y5MjNiZmQzNjYzMTE0ZDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNp
bmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04
Miw4ICs4Myw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2VzcyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFp
biA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9
IHVpbnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1l
SUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEw
NCw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNl
c0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwog
CkBAIC0xMTgsMTEgKzExNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFj
dGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURh
dGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVn
aXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdy
YW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
LSAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2
b2lkIHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lk
IGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3Jh
Z2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNj
ZXNzSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
T3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVB
bGxTdG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBj
YWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBW
ZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+Jik7Ci0gICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
cihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwg
UGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxI
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdv
cmtQcm9jZXNzKCk7CiAKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3Rp
ZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50
UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsK
IAogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlE
LCBPcGVuZXJEb21haW4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmlu
ZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5
NzE4MzZhZGE1YWU4Mjk3YjViNTc5MDZiYzkwNWMxODNjZWI2ZC4uNGQzZDE2OWY2YWY5ZjQzYjc2
MTA4MWNmYmZlNjBhZmM1YTM5M2ZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgICAgICBTdHJpbmcg
dXNlckFnZW50OwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7Ci0gICAgICAgIHVp
bnQ2NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwog
ICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCAzZDcxZjhmNmIxYjZjMjZkYjA1NTBmODhhYTVlZTExNDQyMTBh
OTA2Li45MmM4YjdhZTQ0ZmIzYjc3NGQ2YjA1OThjNDE5YzM4M2ZlYjA5MjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50
aWZpZXIKICAgICBBU1NFUlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBhZ2VM
b2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkK
IHsKICAgICBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHdlYlBhZ2VJRCk7
CiB9CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2kKICAgICBsb2Fk
ZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
IGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNz
aW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CiAgICAgYXV0byByZXN1bHQgPSBuZXR3
b3JrU3RvcmFnZVNlc3Npb24uY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBAIC01MjUsNyAr
NTI1LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRP
TShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29r
aWVTdHJpbmcpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNl
c3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24uc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKQEAgLTU0MiwxMyArNTQyLDEzIEBAIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZVNlc3Npb24o
bmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5jb29raWVzRW5hYmxlZCgpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9u
KG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZp
cnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpn
ZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHJlc3VsdDsK
ICAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmdldFJhd0Nv
b2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVz
dWx0KTsKQEAgLTYzOCwxMyArNjM4LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVT
dG9yYWdlQWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0
d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhw
YWdlSUQpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlCiAgICAg
fQogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1
YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAtNzA5
LDcgKzcwOSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dy
YW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24g
PSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKSB7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbkkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDo6WWVzLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVu
ZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAg
IGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKQEAgLTc0NSw3ICs3
NDUsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1do
aXRlbGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0
X3QgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWlu
UmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCitPcHRpb25hbDxOZXR3
b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRU
cmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElk
ZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNz
aW9uSUQmIHNlc3Npb25JRCkKIHsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5n
KCkKICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmNsZWFyKCk7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2lu
Z0ZvclBhZ2UodWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgZm9yIChhdXRvJiBhY3Rpdml0eVRyYWNrZXIgOiBtX25ldHdvcmtB
Y3Rpdml0eVRyYWNrZXJzKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVRyYWNrZXIucGFnZUlEID09
IHBhZ2VJRCkKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NAogICAg
IH0pOwogfQogCi1zaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290
TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCkKK3NpemVfdCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogICAgIHJldHVybiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmZpbmRNYXRjaGlu
ZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgewogICAgICAgICByZXR1cm4gaXRlbS5pc1Jvb3RBY3Rp
dml0eSAmJiBpdGVtLnBhZ2VJRCA9PSBwYWdlSUQ7CkBAIC05MDMsMTcgKzkwMywxNyBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRz
KCkKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6Q2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7
CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQo
KSwgc2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc1JlbW92ZWQo
bV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNl
c3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VzKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2Vk
KFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVy
PiYgcGFnZXMpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25DaGFu
Z2VkKG1fY29ubmVjdGlvbi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKaW5kZXggY2JjN2JiZmU4ZjU3ZDc1NDEzMTU4MTA0Zjg4YTU0NDAwOTQy
MDc2Yi4uMDZkNTc5Njg4Mjg2NThlMTY4YzJjODFmNzI4MWYxZjk2MGM4MDRiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzMsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBt
X25ldHdvcmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3Vy
Y2VMb2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlE
LCBib29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwg
Ym9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0
b3BUcmFja2luZ1Jlc291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQs
IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6
OkJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVh
ckNvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6
OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZv
aWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0g
ICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2Fz
QWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFM
OjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nl
c3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllcik7CkBAIC0xNzAsMTYgKzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIo
UmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50
NjRfdCB3ZWJQYWdlSUQpOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291
cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3Rh
cnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2
b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
IAotICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29v
a2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYp
PiYmKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0Fj
Y2Vzc2VkKT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
Jik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9i
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAg
cHJpdmF0ZToKICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNE
YXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQg
Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJh
Y3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9p
ZCBsb2dXZWJTb2NrZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIFdhbGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7
CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dGFyZ2V0RG9tYWluKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZl
Y3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0
b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9w
ZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwor
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAg
ICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIz
OSwyOSArMjQwLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyKGNvbnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAg
ICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2
aXR5VHJhY2tlciYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcih1aW50NjRfdCBwYWdlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBh
Z2VJRCB7IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAg
ICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6Okxh
YmVsOjpMb2FkUGFnZSB9CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNl
TmV0d29ya0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBy
ZXNvdXJjZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAg
LCByZXNvdXJjZUlEIHsgcmVzb3VyY2VJRCB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0
eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICB1aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRl
bnRpZmllciByZXNvdXJjZUlEIHsgMCB9OwogICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsg
ZmFsc2UgfTsKICAgICAgICAgTmV0d29ya0FjdGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7
CiAgICAgfTsKIAogICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0g
ICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBh
Z2VJRCk7Ci0gICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJ
RCk7CisgICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzaXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHko
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5
VHJhY2tlcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxF
KEFQUExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCBmN2M5N2VlYmIyMTNjZDc4M2NhZjRlMjA0NjliZmEzY2UxOTRjOGNlLi44
MzNlNzRmY2Y2MDAzZWI4M2FjMWRlMmQ4YzZiZmMwZmYyNWI5ZmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDE4ICsyNiwxOCBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
UGVyZm9ybVN5bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4gZGF0
YSkgU3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCiAgICAgUmVtb3ZlTG9hZElkZW50aWZp
ZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKLSAgICBQYWdlTG9hZENvbXBsZXRl
ZCh1aW50NjRfdCB3ZWJQYWdlSUQpCisgICAgUGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkK
ICAgICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAg
U3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1
Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIs
IFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tp
ZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2ll
U3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgU2V0
Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwg
c3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKLSAgICBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBm
aXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJM
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29v
a2llcykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNp
dGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNo
cm9ub3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2ll
U3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0
UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1
Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAg
IERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBj
b29raWVOYW1lKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0
aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJp
bmcgY29udGVudFR5cGUpCkBAIC01NiwxNiArNTYsMTYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEVuc3VyZUxlZ2FjeVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIENsZWFyUGFn
ZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCk7CisgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQogICAgIExvZ1dl
YlNvY2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZy
YW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZUxvYWRpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJn
ZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxs
VGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0
YXRpc3RpY3MpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwotICAgIFJlcXVlc3RTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChlbnVtOmJvb2wg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMK
LSAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9w
ZW5lckRvbWFpbikKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5j
CisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWlu
KQogI2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291
cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9u
SG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC04Nyw3ICs4Nyw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKIAogICAgIFNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJZGVudGlmaWVyKQogCi0gICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCi0gICAg
V2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdl
SUQpCi0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Np
b25JRCwgVmVjdG9yPHVpbnQ2NF90PiBwYWdlcykKKyAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKKyAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyAg
ICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBW
ZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGQxNGIx
ZGU5ZDkxYzAyMmI3ZTBlMDM4MjE3NGRhODgyMmI5M2EzMTguLjQwOTcxNGQ2NjcyNmE4NDc0YWZm
MjlhMTYwODE3ZjI0Nzk2N2IwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzU2FtZU9yaWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3Rv
Y29sSXNCbG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAot
TmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQorTmV0
d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1h
cCYmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3Ry
aW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQog
ICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNz
aW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMzFk
MTFjM2E4YWVjYjJhYWZkNDllNWMzMTAzOThlMGFjMTZkZGVlNy4uNTdkZjFkYTQ2ODBkMjU4NGVl
MjE2YWFkZmYwOGRlODJhMTM2YmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdv
cmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+
IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwg
T3RoZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNv
cmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hv
dWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVl
c3RMb2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5l
dHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhl
YWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJD
b3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdy
YWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIp
OwogICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRy
aXBsZXQgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1By
b2Nlc3M7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hl
Y2tzLgogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAv
LyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggODk2Mzk5ZDEzMzI1ZDAxNGEx
NzRiZjc3YjRjYTYzNmNhZjJlMGM0Ni4uODk3MzBjZjlmZDI2OTliY2ZkMzJkZGMzOGVmOGNlMDM3
NDZhMzAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTM4LDcgKzM5LDcgQEAg
ZW51bSBjbGFzcyBQcmVjb25uZWN0T25seSB7IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya0xv
YWRQYXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgeyAwIH07Cisg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEOwogICAgIHVpbnQ2NF90IHdlYkZy
YW1lSUQgeyAwIH07CiAgICAgV1RGOjpQcm9jZXNzSUQgcGFyZW50UElEIHsgMCB9OwogICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IGQ4MTMwODU0ZjEzZTQzNmE2YmFiNThiYWIyNzZhYmZkNTc0NGI1NjQuLmU1YzJiZWFl
NThjOGRhN2JhOTlhMjMwYzM5MjQ5M2FhZTczMjk2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFBBTDo6U2Vzc2lvbklEIHNlcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21E
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRh
VHJhbnNmZXIsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1p
dENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRh
VHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQoIW5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaXNF
bXB0eSgpKTsKIApAQCAtMTk2MSw3ICsxOTYxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCBhbGxvd3MsIENvbXBsZXQK
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dE
aWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVy
IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTk2OSw3ICsxOTY5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9n
RGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3MK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2Ny
aXB0aW9uLCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xv
Z2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91
bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5
NzcsNyArMTk3Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0CiAgICAgcGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRpb24s
IHJlc3VsdCwgU2hvdWxkU2FtcGxlOjpObyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVl
LCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMs
IFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVL
ZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNz
aW9uLT5yZW1vdmVLZXB0QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQogewogICAgIGlmICghcGFnZUlEIHx8ICFvbGRQYWdl
SUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgYWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlk
Iik7CkBAIC0yNjQ1LDEzICsyNjQ1LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VX
YXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklECiAgICAg
ICAgIHJldHVybiBzZXNzaW9uSUQ7CiAgICAgfSk7CiAKLSAgICBzdG9yYWdlTWFuYWdlci5jcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQsIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSk7Ci0gICAgc3RvcmFnZU1hbmFnZXIuYWRkQWxsb3dlZFNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQsIGNvbm5lY3Rpb24pOworICAgIHN0b3JhZ2VN
YW5hZ2VyLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgpLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIHN0b3JhZ2VNYW5hZ2Vy
LmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELnRvVUlu
dDY0KCksIGNvbm5lY3Rpb24pOwogICAgIGlmIChwYWdlSUQgIT0gb2xkUGFnZUlEKQotICAgICAg
ICBzdG9yYWdlTWFuYWdlci5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG9sZFBhZ2VJRCwg
cGFnZUlEKTsKKyAgICAgICAgc3RvcmFnZU1hbmFnZXIuY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShvbGRQYWdlSUQudG9VSW50NjQoKSwgcGFnZUlELnRvVUludDY0KCkpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBpZiAoIXBhZ2VJRCkgewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCByZW1vdmUgcGFn
ZSB3aXRoIGludmFsaWQgaWQiKTsKQEAgLTI2NjQsOCArMjY2NCw4IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFM
OjpTZXNzaW9uCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0g
c2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBzdG9yYWdlTWFuYWdlci5yZW1vdmVBbGxv
d2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRCwgY29ubmVjdGlvbik7
Ci0gICAgc3RvcmFnZU1hbmFnZXIuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJ
RCk7CisgICAgc3RvcmFnZU1hbmFnZXIucmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlQ29ubmVjdGlvbihwYWdlSUQudG9VSW50NjQoKSwgY29ubmVjdGlvbik7CisgICAgc3RvcmFn
ZU1hbmFnZXIuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0yNjgxLDcgKzI2ODEsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKICAgICBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5zdG9yYWdlTWFuYWdl
cigpLnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgcGFnZUlEcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hh
bmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZUlEcykKIHsKICAgICBhdXRv
IGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKICAgICBBU1NFUlQobV9zZXNz
aW9uQnlDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDYwMzBmOGZmYWFiZTE1MDA4
ZjNhZDI2ZmMyM2RiODA2Mzc5ZTkxZWUuLjExMTYzNWQyZTIwMDgxMjJkNzgyNWJjOTYzNzlhYzg5
NjdkYTE4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SURCU2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlw
ZXMuaD4KQEAgLTEzNyw4ICsxMzgsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9E
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2lu
ZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBP
cGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAg
ICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBOZXR3b3JrUHJvY2VzcyhBdXhpbGlh
cnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMTkxLDkgKzE5MCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gRGlhZ25vc3RpYyBtZXNzYWdl
cyBsb2dnaW5nLgotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50Rmln
dXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNz
YWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBs
b2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6
RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91
YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNh
bXBsZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBz
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtMjU5LDcgKzI1OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRp
cmVjdEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVk
aXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lk
IGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvRG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFU
cmFuc2Zlcjo6RmxhZz4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBkaWRDb21taXRDcm9z
c1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
T3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9h
ZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCkBAIC0yNzIsMTAgKzI3MSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lv
bklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFM
OjpTZXNzaW9uSUQpIGNvbnN0OwogCi0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25u
ZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFn
ZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQ
Qzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoSVBD
OjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHdlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJik7Ci0g
ICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NT
ZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYpOwogICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdl
T3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOGFmMTcz
NTE4ZmE3Mjk1MTkwZjA0NTdkNDBhMmM5ZWYxZTQzMmZjZi4uNmQwNjI0MDgzZjc1ZjMzMjcyNmFi
M2ZiMjFkYzFkMmNmZjkwYzIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzEsNyArMTMxLDcgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZWRpcmVjdGVkVG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVkaXJl
Y3RlZEZyb21Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0g
ICAgRGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIHVp
bnQ2NF90IHBhZ2VJRCkKKyAgICBEaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2Zl
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZy
b21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCBPcHRpb25TZXQ8
V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gbmF2aWdhdGlv
bkRhdGFUcmFuc2ZlciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIFNldENy
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1Np
dGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGlu
Y2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCmluZGV4IDU4YWFjYjk5M2RiOThhY2NkYTY1MjJkOTU2NGM5ZWFhODk0YmRhODEuLjMzY2Rj
NGQxN2RiZTJlMDg2NmUzNjEyZWYyMjc2MWEzODIzODA1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCkBAIC0xMDcsOCArMTA3LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndlYlBhZ2VJRCkpCisg
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHdl
YlBhZ2VJRDsKKyAgICBpZiAoIXdlYlBhZ2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJlc3VsdC53ZWJQYWdlSUQgPSAqd2ViUGFnZUlEOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQud2ViRnJhbWVJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBmZTI2NTM2ZjIxYzNlZTlhNzAxODk4Y2EwNTkzMmQ1NWQxNWQzNGIwLi4wZDRmOWEyYTFh
ZWE1Yzg4MDBhNWIxM2ZlMzdlMDE3YmJkYzQ5NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNzQsMTgg
KzE3NCwxOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICBt
X25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1
ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBXVEY6
OnN3aXRjaE9uKHJlc3VsdCwKICAgICAgICAgICAgICAgICBbdGhpc10gKFJlc291cmNlRXJyb3Im
IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0
YXJ0OiBlcnJvciBjaGVja2luZyAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBp
c1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkLCBlcnJvci5kb21haW4gPSAle3B1Ymxp
Y31zLCBlcnJvci5jb2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNv
dXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVy
cm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IGVycm9yIGNoZWNraW5n
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwg
cGFyZW50UElEID0gJWQsIGVycm9yLmRvbWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNvZGUgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwg
dGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21h
aW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMtPmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgICAgIFt0aGlzXSAoTmV0d29ya0xvYWRDaGVja2VyOjpSZWRpcmVjdGlvblRyaXBsZXQm
IHRyaXBsZXQpIHsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+bV9pc1dhaXRpbmdDb250aW51
ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgdGhpcy0+d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRyaXBsZXQucmVx
dWVzdCksIFdURk1vdmUodHJpcGxldC5yZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQu
cmVkaXJlY3RSZXNwb25zZSkpOwotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydDogc3ludGhldGljIHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVS
TCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5j
aHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlz
TWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVu
dFBJRCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2VudCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdhcyBtb2RpZmll
ZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQs
IHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01h
aW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQ
SUQpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMtPmNhblVz
ZUNhY2hlKHJlcXVlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5
bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciBy
ZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3Vz
ID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlz
LT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5w
YXJlbnRQSUQpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+cmV0cmlldmVDYWNoZUVu
dHJ5KHJlcXVlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0KCkKICAgICB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBv
bmNlIG1fbmV0d29ya0xvYWRDaGVja2VyIGlzIHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgog
ICAgIGlmIChjYW5Vc2VDYWNoZShvcmlnaW5hbFJlcXVlc3QoKSkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVu
dFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICByZXRyaWV2ZUNhY2hl
RW50cnkob3JpZ2luYWxSZXF1ZXN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI3
LDEzICsyMjcsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVF
bnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIGxvYWRlci0+bG9n
U2xvd0NhY2hlUmV0cmlldmVJZk5lZWRlZChpbmZvKTsKIAogICAgICAgICBpZiAoIWVudHJ5KSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6
IFJlc291cmNlIG5vdCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVk
LCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
aXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAg
ICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9h
ZDo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChlbnRyeS0+aGFzUmVhY2hlZFByZXZh
bGVudFJlc291cmNlQWdlQ2FwKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJl
c291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5j
aHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5j
aHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBj
YXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOwogICAgICAgICAgICAgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlv
biA9IFdURk1vdmUoZW50cnkpOwogICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRh
dGlvblJlcXVlc3QgPSBvcmlnaW5hbFJlcXVlc3QoKTsKICAgICAgICAgICAgIGxvYWRlci0+c3Rh
cnROZXR3b3JrTG9hZChXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBGaXJzdExvYWQ6Olll
cyk7CkBAIC0yNDEsMjEgKzI0MSwyMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0
cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAg
fQogI2VuZGlmCiAgICAgICAgIGlmIChlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxp
bmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJv
bm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2Fj
aGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2Ug
PSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBp
c01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5k
aXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShlbnRyeSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
IChsb2FkZXItPm1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnktPnJl
c3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1
aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmll
dmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNlcnRpZmljYXRl
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCki
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJl
cXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSB8fCByZXF1ZXN0LmNhY2hlUG9s
aWN5KCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlD
YWNoZURhdGEpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeTogVmFsaWRhdGluZyBjYWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01h
aW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91
cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdURk1vdmUoZW50
cnkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9t
IGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMo
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmV0cmlldmVkIHJlc291cmNlIGZyb20gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3Vy
Y2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICBsb2FkZXItPmRp
ZFJldHJpZXZlQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgfSk7CiB9CkBAIC0yNjMs
NyArMjYzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRy
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExv
YWQgbG9hZCkKIHsKICAgICBpZiAobG9hZCA9PSBGaXJzdExvYWQ6OlllcykgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNv
dXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAKICAgICAgICAgY29uc3Vt
ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGaXJzdExvYQogICAgIH0KICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNz
aW9uIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNl
c3Npb25JRC5zZXNzaW9uSUQoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3
aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25J
RD0lIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNl
c3Npb25JRCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRO
ZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNz
aW9uIHRoYXQgZG9lcyBub3QgZXhpc3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklEPSUiIFBSSXU2
NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5z
ZXNzaW9uSUQoKSk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5sb2dE
aWFnbm9zdGljTWVzc2FnZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lvbklES2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6
Tm8pOwogICAgICAgICBkaWRGYWlsTG9hZGluZyhpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZp
cnN0TG9hCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBt
X25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nv
bm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nl
c3Npb24pOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNj
cmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0
d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQpAQCAtMzIyLDcgKzMy
Miw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVz
dWx0KQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIFJFTEVBU0VfTE9HKExvYWRpbmcs
ICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1
NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdv
cmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
Zmllcik7CiAgICAgCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSByZXNvdXJjZSBjYW1l
IGZyb20gdGhlIGRpc2sgY2FjaGUuCiAgICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7CkBAIC0zNDAs
NyArMzQwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJv
cnQ6IENhbmNlbGluZyByZXNvdXJjZSBsb2FkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAgICAgICAgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAg
ICAgaWYgKG1fcGFyYW1ldGVycy5vcHRpb25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3BvbnNlLmlzTnVs
bCgpICYmICFtX2lzS2VwdEFsaXZlKSB7CiAgICAgICAgIG1faXNLZXB0QWxpdmUgPSB0cnVlOwpA
QCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRl
cnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvCiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgcmVjZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCBy
ZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0
dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOwogCiAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUo
cmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZl
ZFJlc3Bvbgogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQg
Kz0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24pOwpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEZpbmlzaExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNSZWNlaXZlZCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkRmluaXNoTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgaWYg
KHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5l
Y3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0
d29ya0xvYWRNZXRyaWNzKTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMbwogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
RmFpbExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlv
biA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlz
QWNjZXNzQ29udHJvbCgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBp
c0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXND
YW5jZWxsYXRpb24oKSwgZXJyb3IuaXNBY2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgp
KTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAg
ICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZp
ZXIoKSk7CkBAIC03MzEsNyArNzMxLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QKICAgICAg
ICAgfQogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAgICAgbV9pc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFscyA9IGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOwogCkBA
IC05ODgsNiArOTg4LDExIEBAIHN0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9w
dGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1i
ZXIodmFsdWUudmFsdWUoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOwogfTsKIAorc3RhdGljIFN0cmlu
ZyBlc2NhcGVJREZvckpTT04oY29uc3QgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gdmFsdWUgPyBTdHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkg
OiBTdHJpbmcoIk5vbmUiX3MpOworfTsKKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omxv
Z0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2ll
SW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCBzZXNzaW9uSUQoKSkpOwpAQCAtOTk4LDcgKzEwMDMs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBj
b25zdAogICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNv
dXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVz
dCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBw
YWdlSUQoKSwgaWRlbnRpZmllcigpKTsKIH0KIAotc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tp
ZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlm
aWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VS
VChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5l
Y3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDI1LDcg
KzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9B
TExPV0VECiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitz
dGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lk
KiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFT
U0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNv
bm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDg2
LDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aQogI3VuZGVmIExPQ0FMX0xPR19J
Rl9BTExPV0VECiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZv
cm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBP
cHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25J
RCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGE4YTMwMDVjMTQyMzA2MTM4ODc2ODIxYTQzYTA1N2EwYjZm
M2Q3ZmMuLmE4ZjZkMzE1Nzk4YzRhZGZmZjk5ZGE3ZTgyZmZjODMzYTk2NzY4M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnNlc3Npb25JRDsgfQogICAgIFJlc291cmNl
TG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyOyB9CiAgICAgdWludDY0X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlEOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KIAogICAg
IHN0cnVjdCBTeW5jaHJvbm91c0xvYWREYXRhOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwotICAg
IHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZv
aWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2
b2lkIGRpc2FibGVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0NhcHR1cmUoKSB7IG1fc2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA5N2UwYjI0NDA3OGQ4MzJhZWRjZGQ4YTY3OTE4
NDE0ZjI4NzBjNjAyLi41NTNjYmFkMTliYzVhMTk3ZTA2MjUyNzUwZjI4MmNlM2IwNDE2ZmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC00NSw0MCArNDUs
NDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25z
ZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVy
LmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVz
cG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0
YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpE
aWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJl
Y2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsK
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwg
bV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6ZGlkRmluaXNoKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRG
aW5pc2hGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVy
OiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhh
bmRsZSgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6
IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlm
aWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9p
ZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBkMzJjZDQ2Mzg5ZWMw
MjJiZmM1MDE0NWI3MzdlZjRjYWFlYzkzMjMxLi45MWZkYzcxNTk3MWQ3YjE5Y2JiOGI0MmM2NDdk
YjMwYzNhZmUyOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApA
QCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNo
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAgYXV0byogd29y
a2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIXdvcmtlcikgewogICAgICAgICBT
V1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRj
aDogZmV0Y2hJZGVudGlmaWVyOiAlcyAtPiBEaWROb3RIYW5kbGUgYmVjYXVzZSBubyBhY3RpdmUg
d29ya2VyIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0g
d29ya2VyLT5pZGVudGlmaWVyKCk7CkBAIC0xNzAsMTMgKzE3MCwxMyBAQCB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciBzZXJ2aQogCiAgICAgICAgIGlmICghc3VjY2VzcykgewogICAgICAgICAgICAgU1dTRVJW
RVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZl
dGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRpZCBub3QgYmVj
b21lIGFjdGl2YXRlZCIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1
dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwogICAgICAgICBpZiAoIXdvcmtlcikgewotICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUg
eyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5v
dEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dGFydEZldGNoKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4o
KmNvbnRleHRDb25uZWN0aW9uKS5zdGFydEZldGNoKG1fc2Vzc2lvbklELCBtX2NvbnRlbnRDb25u
ZWN0aW9uLmdldCgpLCB0aGlzLT5pZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZlcnJlcik7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElP
Tl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZp
ZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIGZhaWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgICAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlm
aWVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGM3ZjM4NmIz
ZDdjMzE0NTU4MGYyYWMwZTBlMzUyZWE2Yjg3MTU1YzEuLjhiYmMxNjk3ODU2MGU0NDYzMjIxZGY3
M2FjYjEwODc2MmFiNzY5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1
ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KQEAgLTg0
LDcgKzg1LDcgQEAgZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CiAgICAgTm9EdWVUb0V4cGlyZWRS
ZWRpcmVjdAogfTsKIAotdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAv
KndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47Cit1c2luZyBHbG9iYWxGcmFt
ZUlEID0gc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKndlYkZy
YW1lSUQqLz47CiAKIGNsYXNzIENhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGU+IHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCA5NjVjNmZhNjY0YmNkMTU1Zjc2Y2RiM2I0ZDcz
MjZlZWUwM2U5MTg4Li4yZGQwZTdkNDZiYzcxOWU5NmZhMTUwNzRmZWQwMGIxYzg4NjY1NjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9u
Q29jb2E7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3Jr
RGF0YVRhc2sgewogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdl
YkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGlu
Z1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFBy
ZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUo
TmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmlu
Z1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5l
Y3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwg
Y2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwg
ZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIp
KTsKICAgICB9CkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9h
ZE1ldHJpY3M7IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lSUQ7IH07Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7
IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSUQ7IH07CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5l
dHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFt
ZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3
b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlm
ZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOwogCiAgICAgYm9vbCB0cnlQYXNzd29y
ZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTbmlmZmlu
Z1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9fc3Ryb25nIE5TVVJM
UmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZik7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5T
VVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKLSAgICB1
aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsK
IAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYm9vbCBtX2hhc0Jl
ZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0KaW5kZXggMzVlNDQzYjllZTkxODA1N2FkMzRkZWYwNjhhODk5YmVhMDY3YWRmNi4uMjhh
MDVlODBkYjY4NWFmNjdiMjg0Yzg0MjMxNzE5NGY5N2U4N2UzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFza1dpdGhGaXJzdFBh
cnR5Rm9yU2FtZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0YXMKICNlbmRpZgog
fQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29ya0RhdGFUYXNrQ29j
b2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRh
VGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNz
aW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lz
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwg
bV9wYWdlSUQocGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0Rh
dGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigp
KQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlv
bjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogQmxvY2tpbmcg
Y29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAodW5zaWduZWQgbG9u
ZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5V
VEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2ll
SW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6
IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50b1VJbnQ2NCgpLCBm
cmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0
LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAgICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgW21fdGFzayB0
YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7
CiAjZW5kaWYKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAg
IGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29va2ll
bGVzcyB8fCBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNob3VsZEJsb2NrQ29v
a2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQot
ICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29y
aywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
Ojpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRh
c2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdl
SUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIChz
aG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjog
cGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBm
b3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgbV9mcmFtZUlE
LCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29v
a2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUg
JXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0s
IChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBAIC0zNzksNyArMzc5
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3VsZEJsb2NrQ29va2ll
cykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5z
aG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRpb246
IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IE5vdCBwYXJ0aXRp
b25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQsIG1fZnJh
bWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjog
cGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogTm90IHBhcnRpdGlv
bmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICAgICAgTE9H
KE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMgZm9yIHJlZGly
ZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmgKaW5kZXggYzRmYjAwYjA4M2M0MTEyYTIyYzgxZWM0NWYwODhkYTA5Y2I4NjllOC4u
M2VkZjgyYWRmM2I1YWUzYjI4NGM3ZGQ1OTE1Yjg4NWU3NTIzMTc2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTg2LDYgKzE4NiwzNiBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0Y2hl
ciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6
OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5p
dHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2Fp
dEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOworICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFU+CisgICAgdm9pZCBzZW5kV2l0aEFzeW5j
UmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgT2JqZWN0SWRlbnRpZmll
cjxVPiBkZXN0aW5hdGlvbklEID0geyB9KQorICAgIHsKKyAgICAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5PFQsIEM+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBk
ZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRl
bnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlv
bnMgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4gc2VuZDxUPihXVEZNb3ZlKG1lc3NhZ2Up
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICB2b2lkIHNlbmRXaXRoUmVw
bHkoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgRnVuY3Rp
b25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8dHlw
ZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4mJiByZXBseUhhbmRs
ZXIpCisgICAgeworICAgICAgICByZXR1cm4gc2VuZFdpdGhSZXBseTxUPihXVEZNb3ZlKG1lc3Nh
Z2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlcGx5RGlzcGF0Y2hlciwgV1RGTW92ZShy
ZXBseUhhbmRsZXIpKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KKyAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGlt
ZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCks
IHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwg
T3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+KGRlc3RpbmF0aW9u
SUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAgIH0KIAogICAgIGJv
b2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8U2VuZE9w
dGlvbj4gc2VuZE9wdGlvbnMpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkodWludDY0
X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIEZ1bmN0aW9uRGlzcGF0Y2hl
ciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
Pik+JiYgcmVwbHlIYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuaAppbmRleCBkNWY5ODFlNDUzNGIyYTliZDhiNGE1Y2M2MTRlODdjYTQ0OTU2ZDRhLi4z
ZDZmMzQyODkyYmM4ODM5MDY3OGU4YzM2NDYzOTExMGRlNGY1NzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC0zNCw5ICszNCw5IEBAIGNsYXNzIE1l
c3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lc3NhZ2VTZW5kZXIoKTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlLCBPcHRpb25T
ZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4g
c2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCB7IH0pOworICAgICAg
ICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCBzZW5k
T3B0aW9ucyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNv
bnN0IFUmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0
aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTQ4LDYgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0
aW9ucyk7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFQ+
CisgICAgYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VD4gZGVz
dGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAg
ICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBT
ZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNP
cHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKQEAgLTY1LDggKzcxLDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHNlbmRT
eW5jT3B0aW9ucyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJncz4KLSAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgorICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5
KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAgICBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoV1RGTW92ZShtZXNzYWdl
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IDllNmU5MzIwNmJkYzFiMDEwMjJkZWE1MDQ0ZDI4MzNiZDVlOTRlZGMuLmYwZWM4ZGMxYjcxNjli
Y2NhNTVhNjU0OTEyZWQyZmVmNTM3MGRmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtMjA1LDYgKzIwNSw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9u
c19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICdTdHJpbmcnLAogICAgICAgICAnV2Vi
Q29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRp
ZmllcicsCisgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCmluZGV4IGE2YTAwOTk1NTAwZTc2MzNlMGQ0
NWIxOGE0NDdjNzQyYTY5MjIwYWIuLmU2MDVhNDU5NDZmZmM3ZjFkMDdjYjg0ZThmNWNiOTg3YmJm
MzY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAKQEAg
LTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBhZ2VIYW5kbGU+IFBh
Z2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhhbmRsZT4gUGFnZUhh
bmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsKIH0KIAotUmVmPFBh
Z2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVpbnQ2NF90IHBhZ2VJ
RCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29udmVydGluZyhXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6UGFnZUhhbmRsZSh1
aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VIYW5kbGU6OlBhZ2VI
YW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlzQXV0b2NvbnZlcnRp
bmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2NvbnZlcnRpbmcoaXNB
dXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBhZ2VIYW5kbGU6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFnZUhhbmRsZTo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAg
ICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQorICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgZGVjb2RlciA+
PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQXV0b2Nv
bnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBpc0F1dG9j
b252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNyZWF0ZShwYWdlSUQp
OworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRvY29udmVydGluZygq
cGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFmYmRjMzFiNzkxYTlm
YzBhYTYyNmZjOTBhNzQ4ZWYwODk0OC4uNmExY2ZiNjk4MjU5YmY0OGQ0ZDhlZDU4ZWNiODdiMGYy
MjY3NDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5k
bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIEFQSVBhZ2VIYW5kbGVfaAogCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zOCwyMCArMzksMjAgQEAgbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIFBhZ2VIYW5kbGUgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5
cGU6OlBhZ2VIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNy
ZWF0ZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRl
QXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPFBhZ2VIYW5k
bGU+IGNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxQYWdl
SGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgdmlydHVhbCB+UGFnZUhhbmRsZSgpOwogCi0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIGJvb2wgaXNBdXRvY29udmVydGluZygp
IGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvY29udmVydGluZzsgfQogCiAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2Rl
ciYsIFJlZlB0cjxPYmplY3Q+Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGFnZUhhbmRs
ZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZyk7CisgICAgUGFnZUhhbmRs
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgYm9vbCBpc0F1dG9jb252ZXJ0aW5nKTsKIAotICAg
IGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOwogICAgIGNvbnN0IGJvb2wgbV9pc0F1dG9jb252ZXJ0aW5nOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaAppbmRleCA4NmY4MDQxNzA5YWJkNWMzY2Q2NGNkODIwZjg2MzUyY2FjMmE0ZDUxLi40
MDQwODE3ODAwMmE5NDY3MWQzNTBkZjI2MWUwOGM5NTBlZWYyYjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc1Rocm90dGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vha09iakNQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNzMsNyArNzQsNyBAQCBwcml2YXRlOgogICAg
IEZ1bmN0aW9uPHZvaWQoKT4gbV9sYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5OwogICAg
IEhhc2hNYXA8dWludDY0X3QsIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRv
a2VuPiBtX3BlbmRpbmdSZXBsaWVzOwogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRBc01lc3NhZ2VS
ZWNlaXZlciB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9tZXNzYWdlUmVjZWl2ZXJJRCB7IDAg
fTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX21lc3NhZ2VSZWNlaXZlcklEOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KaW5kZXggNThjYjFkZDJi
NWU3YzdjNmIwOTY1YWY2N2E1NTc2MmY0OTU5ODMwNi4uN2U5N2YxNzZjMDhhNTg1YjFiOWMyNDMw
ZmU5NjEzYmQzYTM5MTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgsNyArMjgsNyBAQAog
CiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAotLSAoaWQpX2luaXRX
aXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBhZ2VJRDooV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0gKGlkKV9pbml0V2l0
aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFzaAogewotICAgIHJl
dHVybiBfcGFnZUlEOworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7CiB9CiAKIC0gKEJP
T0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJPT0wpaXNFcXVhbDoo
aWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIHsK
LSAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdlSUQiXTsKKyAgICBb
Y29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpAInBhZ2VJRCJdOwog
fQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAgLTYxLDcgKzYxLDcg
QEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcGFnZUlEID0gW2Nv
ZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJRCA9IG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2NvZGVyIGRlY29kZUlu
dDY0Rm9yS2V5OkAicGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250
ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYTc0ZmI0MjhjMjBlOTdjYmVmNmFk
N2UzNjU4OTQzLi40M2U0MWUyNGNkMzYzMzZiNTQ3ODRiMDAzY2YxN2JiYzE2ZjY3YTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRI
YW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jy
b3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKQEAgLTI0LDExICsyNCwxMiBAQAogICovCiAK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlLmgiCisjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgKCkK
IAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXIgPSBfcGFnZUlEKSB1aW50
NjRfdCBwYWdlSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1fcGFn
ZUlEKSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAKLS0gKGlkKV9pbml0V2l0aFBh
Z2VJRDoodWludDY0X3QpcGFnZUlEOworLSAoaWQpX2luaXRXaXRoUGFnZUlEOihXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcilwYWdlSUQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRl
eCBlYjhhMGI2NjE3YWU1M2I1MDk4Zjg4NjIwNmNkZjczZTg4NDIxNDM1Li5kNGUxYzI1MDA4MTEy
YmJiZGY1ODM2Zjk2N2YwYzgzYzBjNmY3MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBA
IC02Niw3ICs2Niw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKm1fZGVzdGluYXRpb25JRDsKKyAgICByZXR1cm4gbV9kZXN0aW5hdGlvbklE
LT50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpjYW5N
YWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiByZXBseSkKQEAgLTg0
LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmkKICAgICBwbGF0Zm9ybU9wZW5QYXlt
ZW50U2V0dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQ
YXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpz
aG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRv
JiBjb29yZGluYXRvciA9IGFjdGl2ZVBheW1lbnRDb29yZGluYXRvclByb3h5KCkpCiAgICAgICAg
IGNvb3JkaW5hdG9yLT5kaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKaW5kZXggZDIzN2VhYjNkYWI4NzlhNWRhMzU3MWY4OTEwMWQ3ZWU5NzA1OTZiMi4uNmU0YTg1
Y2YyZTI3ZmU0NjVhYWQ3NWNlZTIzYmNhZTJkZTdmZTAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1
cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5O
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHNob3dQYXlt
ZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVS
TFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzaG93UGF5bWVudFVJ
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
bGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAgICB2b2lkIGNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBw
aW5nQ29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICBDbGllbnQmIG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2Rlc3Rp
bmF0aW9uSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fZGVzdGlu
YXRpb25JRDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90
aGluZydzIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggZGQzMTMxMjdiZjRhOGExYWEwYzZkZWNjNmQyMzRmOWJkYmFhYjdkMy4uMWRlNGNkZGNl
NGIxMjYzZTJkMGI5NGJmYjkzMTkxNDhiYmMxODIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKFN0
cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+IChib29sIGNhbk1ha2VQYXltZW50cykgQXN5bmMKICAgICBPcGVuUGF5
bWVudFNldHVwKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lKSAt
PiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKLSAgICBTaG93UGF5bWVudFVJKHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJM
U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQp
IFN5bmNocm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBvcmlnaW5hdGlu
Z1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdzLCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkgLT4gKGJvb2wgcmVz
dWx0KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKFdlYkNvcmU6
OlBheW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKICAgICBDb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0
aG9kVXBkYXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24o
T3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRhdGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcAppbmRleCA2ZWIzMzVmMDdkM2NmZTYyOTAwMDcxY2RhYTc4OTNmMDQz
MzViZWFhLi45ZGViNzZmZjEzMmM2Y2I1ZmRmNWViZjUyMjIzNGY2ZDQ0M2VmOTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdWludDY0X3QgQXV0aGVudGlj
YXRpb25NYW5hZ2VyOjphZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcChDaGFsbGVuZ2UmJiBjaGFs
bGVuZ2UKICAgICByZXR1cm4gY2hhbGxlbmdlSUQ7CiB9CiAKLWJvb2wgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBj
b25zdAorYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNob3VsZENvYWxlc2NlQ2hhbGxlbmdl
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0CiB7CiAgICAgaWYgKCFjYW5Db2Fs
ZXNjZUNoYWxsZW5nZShjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDgs
NyArMTA4LDcgQEAgVmVjdG9yPHVpbnQ2NF90PiBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNvYWxl
c2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWwKICAgICByZXR1cm4gY2hhbGxlbmdl
c1RvQ29hbGVzY2U7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChwYWdlSUQpOwogICAg
IEFTU0VSVChmcmFtZUlEKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgdQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICB1aW50NjRf
dCBkdW1teVBhZ2VJRCA9IDA7CisgICAgUGFnZUlkZW50aWZpZXIgZHVtbXlQYWdlSUQ7CiAgICAg
dWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7IGR1bW15
UGFnZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikgfSk7CiAgICAgCiAgICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0aGUgc2FtZSBwcm90
ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApp
bmRleCA3ZmUzOTllMGI3ZTk0NThiZDkxNzgyNTkzODQxZTRjNDQ5MzM1YWUxLi44NmU3NDRjMTA4
ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2
b2lkIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQs
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwm
Jik7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hh
bGxlbmdlIHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIGNoYWxsZW5nZTsKICAgICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXI7CiAgICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCiAgICAgdWludDY0X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdl
JiYpOwotICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSBjb25zdDsKKyAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gY29hbGVz
Y2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0NzVkYzJiYjhmZjc3
ZmE0MTcyNWMwODNiMGY3NTA5OTUzOS4uMTkyNTNlMmJhYjZhMTdiZWY0NjYzNjY3ZmQ0OGFiOWU5
ZTA1MTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtNjIs
NiArNjIsMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7
CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAgIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUlu
dDY0KCkpOworICAgIH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChi
b29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4
dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCmluZGV4IDRmNzVm
ZDgwNmY2OGQ2YTk5OWJiYTZhNDViMTQ1NzQ3NmZjYWI4OGMuLjU0ZDQyNzdiODUzOGZiYTQxNTZh
YjgzZDZhZGI4OTU3ODI4YTBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Rl
eHRJbnB1dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250
ZXh0LmgKQEAgLTI5LDEzICsyOSwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRleHRJbnB1dENvbnRleHQgewog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CiAKLSAgICB1aW50NjRfdCB3ZWJQ
YWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSWRlbnRp
ZmllcjsKICAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVy
OwogICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVudGlmaWVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4
IDlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdjZjRkODQyZGZmMzk2ZWQuLmQ5MDBhMTY3MzNhOWNl
NTNmNzZlOTdmODk1OWMxNDdhNzUwODk3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitS
ZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRl
KEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBwYWdlSUQp
KTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbShC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2
NF90IHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZNb3ZlKGJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2xhc3RQ
cm9jZXNzSWRlbnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4
IDg3MmVmMTgwOTVkMThjYzNhOWM1ZTc0NjNkMzBlN2Y2MTQ4NzJmNWUuLjQ0YWY3YzY2NTkwNzQ2
ZGY5ODJlMDVjMTNiZWVjZDA2YTc4NjRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ2LDcgKzQ3LDcg
QEAgY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmFja0Zvcndh
cmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0
SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdmlydHVh
bCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGljIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJik7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0
YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0
ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgbGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9jZXNzSWRlbnRpZmllcihj
b25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBtX2xhc3RQcm9j
ZXNzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4MiwxMiBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNz
UG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRlbVN0YXRlOwotICAg
IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlE
OwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVy
OwogICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCBlOWRhNjBhZWViZWZmMWRhNjkxZTFlNDUzMzczNTc3YTNhOTQwYTI1Li42OTk0ODI1
ZDA4MWNiMDk5NDg0MmFjY2RjZTQ4NDZlM2RkYjBlOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNTMsNyArNTMsNyBA
QCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1c2VyQWdlbnQ7CiAgICAgZW5jb2RlciA8PCBp
dGVtU3RhdGVzOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbklEOwotICAgIGVuY29kZXIgPDwgdXNl
ckNvbnRlbnRDb250cm9sbGVySUQudG9VSW50NjQoKTsKKyAgICBlbmNvZGVyIDw8IHVzZXJDb250
ZW50Q29udHJvbGxlcklEOwogICAgIGVuY29kZXIgPDwgdmlzaXRlZExpbmtUYWJsZUlEOwogICAg
IGVuY29kZXIgPDwgd2Vic2l0ZURhdGFTdG9yZUlEOwogICAgIGVuY29kZXIgPDwgY2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOwpAQCAtMTkzLDExICsxOTMsMTEgQEAgT3B0aW9uYWw8V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2Vzc2lvbklE
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIE9wdGlvbmFsPFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7
CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGlm
ICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEID0gbWFrZU9i
amVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllclR5cGU+KCp1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50
Q29udHJvbGxlcklEID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTM5Miw3ICszOTIsNyBAQCBPcHRpb25hbDxXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
YmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAotICAgIE9wdGlv
bmFsPE9wdGlvbmFsPHVpbnQ2NF90Pj4gb2xkUGFnZUlEOworICAgIE9wdGlvbmFsPE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4gb2xkUGFnZUlEOwog
ICAgIGlmICghb2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGMy
YmU4NDE0NmIzNGVhNzU2MTk3MDc1YWM4YjJjYmMzOGJlYzQyZTAuLjkwMTI3YmMzMTAzMGVlZTAz
ZjI2MjdlOTdjYWQ0NWY5YjdiNjljMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGJhY2tncm91
bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7CisgICAgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3Vw
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAppbmRl
eCA5NjM5ZDAxNWMyZjk0ZTY3Yjc2NzIyOGFkMjNiMWQ5YzQzYjM1MDA3Li44YzI4MzIwZDFkYWQy
ZGU3NjQ2NThjM2RjNDU2MDkzY2ZlMzRjN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlR3JvdXBEYXRhLmNwcApAQCAtMzQsNyArMzQsNyBAQCB2b2lkIFdlYlBhZ2VHcm91cERhdGE6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBp
ZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwSUQ7Ci0gICAgZW5jb2RlciA8PCB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLnRvVUludDY0KCk7CisgICAgZW5jb2RlciA8
PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfQogCiBPcHRpb25hbDxXZWJQYWdl
R3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQpAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VHcm91cERhdGE+IFdlYlBhZ2VH
cm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFwYWdlR3Jv
dXBJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBPcHRpb25hbDxV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsK
ICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIp
LCBXVEZNb3ZlKCpwYWdlR3JvdXBJRCksIG1ha2VPYmplY3RJZGVudGlmaWVyPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cikgfX07CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCAqcGFnZUdyb3VwSUQs
ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH19OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0
R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCmlu
ZGV4IGM2NTQ4NGY1NTEyMjBkZGJjOGI4NGI3OTZhY2IwNTk4ODcyNmI4NzMuLmZlNjZkZTY1OTJh
YTBhZjIzNDU4ODJkYjNkNDFhMTJjYTJiOWJjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL09iakNPYmplY3RHcmFwaC5tbQpAQCAtMjk4LDExICsyOTgsMTIgQEAgYm9vbCBPYmpDT2Jq
ZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJl
c3VsdCkKICAgICB9CiAKICAgICBjYXNlIE9iakNUeXBlOjpXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZTogewotICAgICAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFnZUlEKSkKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKKyAgICAgICAgZGVjb2RlciA+PiBwYWdlSUQ7CisgICAgICAgIGlmICghcGFnZUlEKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IGFkb3B0TlMoW1tX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZUlEOnBhZ2VJRF0pOwor
ICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2Nd
IF9pbml0V2l0aFBhZ2VJRDoqcGFnZUlEXSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcAppbmRleCAyYzFmM2U5NzdiMmU1MmRiZjljNTk1NDc5YzE2NGM5NmI1MTNmMjQ4Li45MzU2
ZWUzZTRiMjE4NTBkNDkxZjA1NWVhNWQzMTIyNWI0YzAwODBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTc0
OSw1ICsxNzQ5LDUgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0V2ViVmlld0Rlc3Ryb3llZChXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KgogCiBXZWJLaXRXZWJWaWV3KiB3
ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIHJldHVybiBwYWdlID8gY29udGV4dC0+cHJp
di0+d2ViVmlld3MuZ2V0KHBhZ2UtPnBhZ2VJRCgpKSA6IDA7CisgICAgcmV0dXJuIHBhZ2UgPyBj
b250ZXh0LT5wcml2LT53ZWJWaWV3cy5nZXQocGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSkgOiBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcAppbmRleCA4ODdmN2IzMWMwZTZkM2FlZDEyZmMxMDNkNDkwZWE1ZWEwYjM3
OTczLi5jZWI5MGQ3M2Q4M2Y3MmUxZWI2OWIwYjhhMmRjZmY5YTlkYTIxYWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAt
MjgxOCw3ICsyODE4LDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwogCi0gICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldyku
cGFnZUlEKCk7CisgICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldykucGFnZUlEKCkudG9VSW50NjQo
KTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDEwNzU3ODFhZjJjM2Y4YTdl
YTdjNjE4NmViY2Y3OWM3MDgxYzE5OTcuLjJmOWNmZTk0MjQwMjYxNzJkOTA2ZGJkMWEwM2M0Y2Qw
MTU0NGJiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBTdHJpbmcgQXV0b21hdGlvbkNvbW1hbmRFcnJvcjo6dG9Qcm90b2Nv
bFN0cmluZygpCiB7CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEK
ICAgICB9CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQ
YWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2Fs
bGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCiB7CiAgICAgSW5zcGVj
dG9yOjpFcnJvclN0cmluZyB0aW1lb3V0RXJyb3IgPSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJS
T1JfTkFNRShUaW1lb3V0KTsKICAgICBmb3IgKGF1dG8gaWQgOiBjb3B5VG9WZWN0b3IobWFwLmtl
eXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCA2NWViM2U0NmU1Yjg4YmE4MmFjMmQxMDI0
ZWNhZTYzY2IzNGQ3MDg3Li5mMzljMDYxYjU3ODkyYTkyNDhmZDA5ZGZmY2ZhN2I4YzUwYTA3NTM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2hhcmVh
YmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgiCiAjaW5j
bHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFnZShXZWJQYWdlUHJv
eHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5LCBT
ZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPiYm
KTsKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uRnJhbWUoV2ViRnJhbWVQ
cm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3ks
IFNlY29uZHMsIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+
JiYpOwotICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0
aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CisgICAgdm9pZCByZXNwb25kVG9QZW5kaW5nUGFnZU5h
dmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4m
KTsKICAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdGcmFtZU5hdmlnYXRpb25DYWxsYmFja3NXaXRo
VGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mKTsKICAgICB2b2lkIGxvYWRUaW1lckZpcmVkKCk7CiAKQEAg
LTI4MCwyMiArMjgxLDIyIEBAIHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlv
bkJhY2tlbmREaXNwYXRjaGVyPiBtX2RvbWFpbkRpc3BhdGNoZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5Ob3Rp
ZmllcjsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFw
OwotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJQYWdlTWFwOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxl
TWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbV9oYW5k
bGVXZWJQYWdlTWFwOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYkZyYW1l
SGFuZGxlTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJGcmFt
ZU1hcDsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93
c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdF
YWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFz
aE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dz
aW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZT4+IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3Np
bmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0Vh
Z2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7
CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5U
RVJBQ1RJT05TKQotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5j
dGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ01v
dXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKIAogICAgIHVpbnQ2NF90
IG1fbmV4dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQgeyAxIH07CkBAIC0zMTksNyArMzIw
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIgQVBJcyB0YWtl
IGEgc2V0IG9mIGlucHV0IHNvdXJjZXMuIFdlIGFsc28gaW50ZXJuIHRoZXNlCiAgICAgLy8gc28g
dGhhdCBwcmV2aW91cyBpbnB1dCBzb3VyY2Ugc3RhdGUgaXMgdXNlZCBhcyBpbml0aWFsIHN0YXRl
IGZvciBsYXRlciBjb21tYW5kcy4KICAgICBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJj
ZT4+IG1faW5wdXRTb3VyY2VzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI+PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1f
aW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZ
Qk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIEtlZXAgdHJhY2sgb2YgY3VycmVudGx5IGFjdGl2
ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9rZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDk4OTNkMzk4YjU3NDYy
YWQ5Yjg4ODM4ZTIyNzEwZmNhZjA0NjMwZDAuLjZiMDliYWRiOGQwY2ViYWJmMmM2OWY2MDA5YjFi
ZDFkMjNjMDllNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCkBAIC01MSw2ICs1MSwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRp
b25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIHNlbmRXaXRoQXN5bmNS
ZXBseShUJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJncy4uLik+JiYpOworICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCBzZW5kKFQmJiBtZXNz
YWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNl
bmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8
VD4oV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9u
cyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cisg
ICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwg
T2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3Ms
IE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisg
ICAgeworICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92
ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRp
b25zKTsKKyAgICB9CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdAog
ICAgIHsKQEAgLTY3LDYgKzc5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNl
aXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIAorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGlu
YXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAg
YWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9V
SW50NjQoKSwgcmVjZWl2ZXIpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisg
ICAgeworICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKKyAgICB9CiAKICAgICBlbnVtIGNsYXNzIFN0YXRl
IHsKICAgICAgICAgTGF1bmNoaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCmluZGV4IGYwNWQ3
OWMwZDAxYjg5ZDZiNjg0OGNhMjUwNmNjZjkxZGNmYjc2NzEuLjY3MDY1OTc2ODYxOGVkNzVmOTgw
YzExYWRhY2E5MWJlMjk5ZTRlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAgLTUyNyw5
NCArNTI3LDk0IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpoYW5kbGVDb250
cm9sbGVkRWxlbWVudElEUmVzcG9uc2UodWludDY0X3QgY29uCiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6cGF1c2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQ
bGF5U3RhdGUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4
dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnVi
YmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkJlZ2luU2NydWJiaW5nKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6ZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnVi
YmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnViYmluZyhjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlZWtUb1RpbWUodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIHRvbGVyYW5jZUJlZm9yZSwgZG91Ymxl
IHRvbGVyYW5jZUFmdGVyKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6U2Vla1RvVGltZShjb250ZXh0SWQsIHRpbWUsIHRvbGVyYW5jZUJlZm9y
ZSwgdG9sZXJhbmNlQWZ0ZXIpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0
aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFmdGVyKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSB0aW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhj
b250ZXh0SWQsIHRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3
YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0ZvcndhcmQoY29udGV4
dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5u
aW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCkpOwog
fQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nhbm5pbmcodWludDY0
X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY2Fu
bmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRl
eCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2VsZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0
X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihjb250
ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29u
dGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
dG9nZ2xlUGljdHVyZUluUGljdHVyZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQaWN0dXJlSW5Q
aWN0dXJlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShj
b250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2ds
ZU11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6VG9nZ2xlTXV0ZWQoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpzZXRNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCiB7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRN
dXRlZChjb250ZXh0SWQsIG11dGVkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRNdXRlZChjb250ZXh0SWQs
IG11dGVkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRWb2x1
bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdm9sdW1lKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwg
dm9sdW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRWb2x1bWUoY29udGV4dElkLCB2b2x1bWUpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFBsYXlpbmdPblNlY29uZFNj
cmVlbih1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKG1fcGFnZSkK
LSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpT
ZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OlNldFBsYXlpbmdPblNlY29uZFNjcmVlbihjb250ZXh0SWQsIHZhbHVlKSk7CiB9CiAKIHZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJ
RCgpCiB7CiAgICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQotICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkhhbmRsZUNvbnRyb2xs
ZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6SGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QobV9jb250cm9sc01hbmFn
ZXJDb250ZXh0SWQpKTsKIH0KIAogUGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCA2YmE0NzllMDYwYTA5NmM0Mzk1MWVhNzRiZjg5N2Jh
NjcxNjg5ZjdlLi5jOGQ2NWMzNjJhYWM4MmM2NDExOTUxMTY0OThhMTE3OWM1MzNlNDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC02MjAsNDMgKzYyMCw0MyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RGdWxs
c2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlz
aGVkV2l0aE1lZGlhKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpy
ZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0
KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVx
dWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRl
bnRMYXllcihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXll
cihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJl
dHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVu
dExheWVyKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIo
Y29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRT
ZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRp
ZEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3Jl
ZW4oY29udGV4dElkKSk7CiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVs
bHNjcmVlbigpOwogfQogCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAg
ICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVt
b3ZlRnJvbVN1cGVydmlld107CiAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0cik7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRD
bGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxs
c2NyZWVuKGNvbnRleHRJZCkpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRNb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIHJlbW92ZUNsaWVudEZv
ckNvbnRleHQoY29udGV4dElkKTsKQEAgLTY4OCwyNSArNjg4LDI1IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4dElk
LCBXZWJDb3JlCiAgICAgICAgIG1hY2hfcG9ydF9uYW1lX3QgZmVuY2VQb3J0ID0gZmVuY2VTZW5k
UmlnaHQubGVha1NlbmRSaWdodCgpOwogI2VuZGlmCiAKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQo
Y29udGV4dElkLCBmcmFtZSwgSVBDOjpBdHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NT1ZFX1NFTkQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVuY2Vk
KGNvbnRleHRJZCwgZnJhbWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNHX1RZ
UEVfTU9WRV9TRU5EKSkpOwogICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0
eUVudW0oY29udGV4dElkLCAodW5zaWduZWQpZ3Jhdml0eSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0Vmlk
ZW9MYXllckdyYXZpdHlFbnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpKTsKIH0KIAog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIG1fcGFnZS0+dWlDbGllbnQoKS5oYXNWaWRlb0lu
UGljdHVyZUluUGljdHVyZURpZENoYW5nZShtX3BhZ2UsIG1vZGUgJiBNZWRpYVBsYXllckVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQo
Y29udGV4dElkLCBtb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29u
dGV4dElkLCBtb2RlKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpm
dWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKQogewogICAgIGJv
b2wgaXNWaWV3VmlzaWJsZSA9IG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpOwotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVy
blRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSkpOwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5k
ZXggMmFhNzQ4ZjAwNGYyMjJhMDFkZGI3YWM4ZWVlNzEzMmNhNzg4OTBjYS4uMDhhM2QzMDhkM2E1
MGYxOTQ1NDRjMTNlNzkxYjM2YTcxM2IzZDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTE5OTcsMTMgKzE5OTcsMTMgQEAgZmxvYXQgV2Vi
Vmlld0ltcGw6OmludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBXZWJW
aWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0
YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4i
LCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZp
ZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwgdGhpcywgbV9w
YWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5k
b3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJ
bXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlzLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdl
ICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRv
VUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmUgfSk7CiB9CiAKQEAgLTIwNzEsNyArMjA3MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OndpbmRvd0RpZENoYW5nZUxheWVySG9zdGluZygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRv
d0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldl
YlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSIsIHRoaXMs
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAgLTIy
MzQsMTkgKzIyMzQsMTkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZENoYW5nZUJhY2tpbmdQ
cm9wZXJ0aWVzKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUoKQogewotICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUi
LCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZp
ZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRIaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dmll
d0RpZFVuaGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAo
cGFnZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
TE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkVW5o
aWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsK
IH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRDaGFuZ2UoKQogewotICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgYWN0aXZlU3BhY2VE
aWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0
ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNwYWNlRGlkQ2hhbmdlIiwgdGhp
cywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCBiNWI0ZTBh
ZDIyMTYyYzlkMGMwMGM5OGNkODM5MzUwOWZjZjZkZjgxLi5lY2Y1ZGEwYTkxMGI2Mzk0ODBhYzMy
YTVmYjFiMGZiMGNmZmZmNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIERyYXdpbmdBcmVhUHJveHk6OkRyYXdp
bmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdlYlBhZ2VQcm94eSYgd2ViUGFnZVBy
CiAgICAgLCBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZEcmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCkK
ICNlbmRpZgogewotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3
aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhp
cyk7CiB9CiAKIERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICBw
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBw
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAKIGJvb2wgRHJhd2lu
Z0FyZWFQcm94eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGU4NTI1M2IyMGE5NjEzYmQ5N2M0MGRhNDdm
ZTgzNTUzOGI4ZTc4ZmYuLjM0NmFjNjcyMGE2NTg4MWZkMDk4YjVjMzRmMWJkOGFkZDljY2UwOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgSVBDOjpB
dHRhCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90
IGNoYWxsZW5nZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAo
YXV0byogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG1fcHJvY2Vzc1Bvb2wuc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQocGFnZUlEKSkgewpAQCAtMzcxLDcgKzM3MSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVu
Y2hlciogbGF1bmNoZXIsIElQQzo6Q29uCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3Rp
Y01lc3NhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5
IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdv
bmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzgyLDcgKzM4Miw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCBTdHJpbmcmIG1lCiAgICAgcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2Uo
bWVzc2FnZSwgZGVzY3JpcHRpb24sIHNob3VsZFNhbXBsZSk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50
MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2Ft
cGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFn
ZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51bGwtY2hlY2sgYmVjYXVzZSBi
eSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUsIHRoZSBwYWdlIG1heSBiZSBn
b25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywKQEAgLTM5Myw3ICszOTMsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0CiAgICAgcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1bHQsIHNob3VsZFNhbXBsZSk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFs
dWUodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVj
ayBiZWNhdXNlIGJ5IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBh
Z2UgbWF5IGJlIGdvbmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtNzM2
LDcgKzczNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0R3JhbmRmYXRoZXJlZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0R3JhbmRmYXRoZXJlZChzZXNzaW9uSUQs
IHJlc291cmNlRG9tYWluLCBpc0dyYW5kZmF0aGVyZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29u
ZmlybShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2Vi
UGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtOTA4LDcgKzkwOCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6bm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRy
eUZpbmlzaGVkKHVuc2lnbmVkCiAgICAgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlz
dGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKG1lc3NhZ2VCb2R5
KS5wdHIoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
RG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zl
cjo6RmxhZz4gbmF2aWdhdGlvbkRhdGFUcmFuc2ZlciwgdWludDY0X3QgcGFnZUlEKQordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2Zl
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9t
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxXZWJD
b3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiBuYXZpZ2F0aW9uRGF0
YVRyYW5zZmVyLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVz
c2FnZSgpKQogICAgICAgICByZXR1cm47CkBAIC05MTYsNyArOTE2LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6
OlNlc3Npb25JRAogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEaWRDb21taXRD
cm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihzZXNzaW9uSUQsIGZyb21Eb21haW4sIHRvRG9t
YWluLCBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCBwYWdlSUQpLCAwKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZy
b21QcmV2YWxlbnRSZXNvdXJjZSh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVu
dFJlc291cmNlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIWNhblNlbmRNZXNz
YWdlKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzViOWU2NjU0ZjNkNjQyZjZm
Nzg5NjVhZGVkYjIyOTAzY2E1MDU1My4uOTcwODhlOWE0ZWVkYzkwNzQ1OTg3Zjc3YzM0MzgzNDg1
NDA1Yjk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTgyLDggKzgyLDYgQEAgcHVibGljOgogICAgIHVzaW5n
IE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNp
bmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47
Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0g
dWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogCiAgICAgZXhwbGljaXQg
TmV0d29ya1Byb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwpAQCAtMTMyLDcgKzEzMCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMpPiYmKTsKLSAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShQYWdlSUQsIEZyYW1lSUQsIGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgRnJhbWVJRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1v
ZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKQEAgLTE0Niw4ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklELCBib29sIGRlYnVn
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBi
b29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0
YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29u
c3QgTmF2aWdhdGVkVG9Eb21haW4mLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdh
dGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4sIFBhZ2VJRCk7Ci0gICAgdm9pZCBkaWRDb21taXRDcm9z
c1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShQYWdlSUQpOwor
ICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFp
biYsIE9wdGlvblNldDxXZWJDb3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpG
bGFnPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBj
b25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKQEAgLTIwOSwxMyArMjA3LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBo
YW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgSVBDOjpBdHRhY2htZW50Jik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCB1aW50NjRf
dCBjaGFsbGVuZ2VJRCk7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKICAgICB2b2lk
IGRpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURh
dGEmKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6
OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQo
dWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2
b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUs
IHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAg
ICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwor
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2
YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUp
OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBsb2dUZXN0
aW5nRXZlbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZXZlbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM2NzdiOGY2NWVlZDkzN2JlOWViYzcyNGI2ZjIyYmRh
Mjg1MzVhNjEuLjhmYWUzN2ZhYWIzNDdmYTAwNDIyNmQyMGU1NTQ4MjEyNTU2MjUwYjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZENyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRp
ZmllcikKIAotICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCisgICAgRGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKIAogICAgIERpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpCiAgICAgRGlk
RGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTM1LDkgKzM1LDkgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIAogICAgICMg
RGlhZ25vc3RpYyBtZXNzYWdlcyBsb2dnaW5nCi0gICAgTG9nRGlhZ25vc3RpY01lc3NhZ2UodWlu
dDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJv
b2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5n
IGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVp
bnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlw
dGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAg
TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0
LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWdu
ZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNo
b3VsZFNhbXBsZSkKICAgICBMb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShTdHJp
bmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRT
YW1wbGUpCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtNDYsNyAr
NDYsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBOb3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNo
ZWQoKQogICAgIE5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCkKICAgICBOb3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
dW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnMpCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3Vi
RnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAt
PiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nl
c3MpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWlucykgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNX
aXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykgQXN5bmMKICAgICBEaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSh1aW50NjRfdCBwYWdlSUQpCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcAppbmRleCBmYWUx
ZjNmY2E4ODg3MTliZTdmNjI3MmQyMDU3MjBiYjg5MDE3N2ZlLi4yYWFmZjFlYzJhNjU0OTBkODg1
NDM5OTZiZjgxMDJjMmQ0OWM1MDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2Vy
UHJveHkuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclBy
b3h5OjpzaG93KFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsCiB7CiAg
ICAgdWludDY0X3QgZ2xvYmFsTm90aWZpY2F0aW9uSUQgPSBnZW5lcmF0ZUdsb2JhbE5vdGlmaWNh
dGlvbklEKCk7CiAgICAgYXV0byBub3RpZmljYXRpb24gPSBXZWJOb3RpZmljYXRpb246OmNyZWF0
ZSh0aXRsZSwgYm9keSwgaWNvblVSTCwgdGFnLCBsYW5nLCBkaXIsIG9yaWdpblN0cmluZywgZ2xv
YmFsTm90aWZpY2F0aW9uSUQpOwotICAgIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+IG5v
dGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBwYWdl
Tm90aWZpY2F0aW9uSUQpOworICAgIHN0ZDo6cGFpcjxQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+
IG5vdGlmaWNhdGlvbklEUGFpciA9IHN0ZDo6bWFrZV9wYWlyKHdlYlBhZ2UtPnBhZ2VJRCgpLCBw
YWdlTm90aWZpY2F0aW9uSUQpOwogICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNldChnbG9i
YWxOb3RpZmljYXRpb25JRCwgbm90aWZpY2F0aW9uSURQYWlyKTsKICAgICBtX25vdGlmaWNhdGlv
bnMuc2V0KG5vdGlmaWNhdGlvbklEUGFpciwgc3RkOjptYWtlX3BhaXIoZ2xvYmFsTm90aWZpY2F0
aW9uSUQsIG5vdGlmaWNhdGlvbi5jb3B5UmVmKCkpKTsKICAgICBtX3Byb3ZpZGVyLT5zaG93KCp3
ZWJQYWdlLCBub3RpZmljYXRpb24uZ2V0KCkpOwpAQCAtMTE5LDEyICsxMTksMTIgQEAgdm9pZCBX
ZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmRpZERlc3Ryb3lOb3RpZmljYXRpb24oV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlLAogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QsIHVpbnQ2NF90IGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZl
Y3Rvcjx1aW50NjRfdD4mKQorc3RhdGljIGJvb2wgcGFnZUlEc01hdGNoKFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgdWludDY0X3QsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZl
Y3Rvcjx1aW50NjRfdD4mKQogewogICAgIHJldHVybiBwYWdlSUQgPT0gZGVzaXJlZFBhZ2VJRDsK
IH0KIAotc3RhdGljIGJvb2wgcGFnZUFuZE5vdGlmaWNhdGlvbklEc01hdGNoKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgcGFnZU5vdGlmaWNhdGlvbklELCB1aW50NjRfdCBkZXNpcmVkUGFnZUlE
LCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcykKK3N0
YXRpYyBib29sIHBhZ2VBbmROb3RpZmljYXRpb25JRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgUGFnZUlkZW50aWZpZXIgZGVzaXJlZFBh
Z2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMp
CiB7CiAgICAgcmV0dXJuIHBhZ2VJRCA9PSBkZXNpcmVkUGFnZUlEICYmIGRlc2lyZWRQYWdlTm90
aWZpY2F0aW9uSURzLmNvbnRhaW5zKHBhZ2VOb3RpZmljYXRpb25JRCk7CiB9CkBAIC0xNDEsMTMg
KzE0MSwxMyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmlj
YXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwgY29ucwogCiB2b2lkIFdlYk5vdGlmaWNhdGlv
bk1hbmFnZXJQcm94eTo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwg
Y29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgcGFnZU5vdGlmaWNhdGlvbklEcywgTm90aWZpY2F0aW9u
RmlsdGVyRnVuY3Rpb24gZmlsdGVyRnVuY3Rpb24pCiB7Ci0gICAgdWludDY0X3QgdGFyZ2V0UGFn
ZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CisgICAgYXV0byB0YXJnZXRQYWdlSUQgPSB3ZWJQYWdl
LT5wYWdlSUQoKTsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gZ2xvYmFsTm90aWZpY2F0aW9uSURz
OwogICAgIGdsb2JhbE5vdGlmaWNhdGlvbklEcy5yZXNlcnZlQ2FwYWNpdHkobV9nbG9iYWxOb3Rp
ZmljYXRpb25NYXAuc2l6ZSgpKTsKIAogICAgIGZvciAoYXV0byBpdCA9IG1fbm90aWZpY2F0aW9u
cy5iZWdpbigpLCBlbmQgPSBtX25vdGlmaWNhdGlvbnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewotICAgICAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+a2V5LmZpcnN0OworICAgICAgICBh
dXRvIHdlYlBhZ2VJRCA9IGl0LT5rZXkuZmlyc3Q7CiAgICAgICAgIHVpbnQ2NF90IHBhZ2VOb3Rp
ZmljYXRpb25JRCA9IGl0LT5rZXkuc2Vjb25kOwogICAgICAgICBpZiAoIWZpbHRlckZ1bmN0aW9u
KHdlYlBhZ2VJRCwgcGFnZU5vdGlmaWNhdGlvbklELCB0YXJnZXRQYWdlSUQsIHBhZ2VOb3RpZmlj
YXRpb25JRHMpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9p
ZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkU2hvd05vdGlmaWNhdGlv
bih1aW50NjRfdCBnbG9iYWxOb3QKICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25N
YXAuZW5kKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHVpbnQ2NF90IHdlYlBhZ2VJRCA9IGl0
LT52YWx1ZS5maXJzdDsKKyAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKICAg
ICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6OndlYlBhZ2Uod2ViUGFn
ZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKQEAgLTE4NSw3ICsxODUs
NyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6cHJvdmlkZXJEaWRDbGlja05v
dGlmaWNhdGlvbih1aW50NjRfdCBnbG9iYWxObwogICAgIGlmIChpdCA9PSBtX2dsb2JhbE5vdGlm
aWNhdGlvbk1hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIHVpbnQ2NF90IHdl
YlBhZ2VJRCA9IGl0LT52YWx1ZS5maXJzdDsKKyAgICBhdXRvIHdlYlBhZ2VJRCA9IGl0LT52YWx1
ZS5maXJzdDsKICAgICBXZWJQYWdlUHJveHkqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2Uod2ViUGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oCmluZGV4IGY3MjdlZDQ3MmM1YmVmYTVh
MjNmM2UwNDRlMGZkNDE5MDcwNDA0ZWYuLjExNTc4MWU0MzMzYzg1Njg0ZmJjYTVjYTg0MTc2NTY0
NGE4YzcxNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHkuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIldlYkNv
bnRleHRTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25DbGllbnQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKQEAgLTc4LDcgKzc5
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBleHBsaWNpdCBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyUHJveHkoV2ViUHJvY2Vzc1Bvb2wqKTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNh
dGlvbkZpbHRlckZ1bmN0aW9uKSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VOb3RpZmlj
YXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYg
ZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpOworICAgIHR5cGVkZWYgYm9vbCAoKk5vdGlmaWNh
dGlvbkZpbHRlckZ1bmN0aW9uKShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2
NF90IHBhZ2VOb3RpZmljYXRpb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgZGVzaXJlZFBh
Z2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMp
OwogICAgIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYlBhZ2VQcm94eSosIGNvbnN0IFZlY3Rv
cjx1aW50NjRfdD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0
aW9uKTsKIAogICAgIC8vIFdlYkNvbnRleHRTdXBwbGVtZW50CkBAIC04OCw5ICs4OSw5IEBAIHBy
aXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpOb3RpZmljYXRpb25Qcm92aWRlcj4g
bV9wcm92aWRlcjsKICAgICAvLyBQYWlyIGNvbXByaXNlZCBvZiB3ZWIgcGFnZSBJRCBhbmQgdGhl
IHdlYiBwcm9jZXNzJ3Mgbm90aWZpY2F0aW9uIElECi0gICAgSGFzaE1hcDx1aW50NjRfdCwgc3Rk
OjpwYWlyPHVpbnQ2NF90LCB1aW50NjRfdD4+IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwOworICAg
IEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWlu
dDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKICAgICAvLyBLZXkgcGFpciBjb21wcmlz
ZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlmaWNhdGlvbiBJRDsg
dmFsdWUgcGFpciBjb21wcmlzZWQgb2YgZ2xvYmFsIG5vdGlmaWNhdGlvbiBJRCwgYW5kIG5vdGlm
aWNhdGlvbiBvYmplY3QKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjx1aW50NjRfdCwgdWludDY0X3Q+
LCBzdGQ6OnBhaXI8dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmlj
YXRpb25zOworICAgIEhhc2hNYXA8c3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1
aW50NjRfdD4sIHN0ZDo6cGFpcjx1aW50NjRfdCwgUmVmUHRyPFdlYk5vdGlmaWNhdGlvbj4+PiBt
X25vdGlmaWNhdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNwcAppbmRleCA0NWExZjBm
NWI1Y2I4MGNjYzlhMGNmYmExNjEzZTQ0Yzg3NGE1NjA3Li43ZDU0OGE1MzIxZWVjYmZjNjRiYzE0
ZTkxNjg4MWU5OTBjOTY5MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJv
dmlzaW9uYWxQYWdlUHJveHkuY3BwCkBAIC00Nyw2ICs0Nyw4IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogI2RlZmluZSBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGNoYW5uZWwsIGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihtX3BhZ2UuaXNBbHdh
eXNPbkxvZ2dpbmdBbGxvd2VkKCksIGNoYW5uZWwsICIlcCAtIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKICNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1Jf
SUZfQUxMT1dFRChjaGFubmVsLCBmbXQsIC4uLikgUkVMRUFTRV9MT0dfRVJST1JfSUYobV9wYWdl
LmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBjaGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBh
Z2VQcm94eTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCiAKQEAgLTYxLDcgKzYzLDcgQEAg
UHJvdmlzaW9uYWxQYWdlUHJveHk6OlByb3Zpc2lvbmFsUGFnZVByb3h5KFdlYlBhZ2VQcm94eSYg
cGFnZSwgUmVmPFdlYlByb2Nlc3NQcm8KICAgICAsIG1fc3VzcGVuc2lvblRva2VuKG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuZm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4oKSkKICNlbmRpZgogewotICAg
IFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9u
YWxQYWdlUHJveHk6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2
NCAiIHN1c3BlbmRlZFBhZ2U6ICVwIiwgbV9wYWdlLnBhZ2VJRCgpLCBuYXZpZ2F0aW9uSUQsIHN1
c3BlbmRlZFBhZ2UuZ2V0KCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N3YXBwaW5nLCAiUHJvdmlzaW9uYWxQYWdlUHJveHk6IHBhZ2VJRCA9ICUiIFBSSXU2NCAi
IG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCAiIHN1c3BlbmRlZFBhZ2U6ICVwIiwgbV9wYWdlLnBh
Z2VJRCgpLnRvVUludDY0KCksIG5hdmlnYXRpb25JRCwgc3VzcGVuZGVkUGFnZS5nZXQoKSk7CiAK
ICAgICBtX3Byb2Nlc3MtPmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1fcGFnZS5wYWdlSUQoKSwgKnRoaXMpOwogICAgIG1f
cHJvY2Vzcy0+YWRkUHJvdmlzaW9uYWxQYWdlUHJveHkoKnRoaXMpOwpAQCAtMTE3LDcgKzExOSw3
IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNvbm5lY3Rpb25XaWxsT3BlbihJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24pCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OnByb2Nl
c3NEaWRUZXJtaW5hdGUoKQogewotICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJv
Y2Vzc1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoUHJvY2Vz
c1N3YXBwaW5nLCAicHJvY2Vzc0RpZFRlcm1pbmF0ZTogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Bh
Z2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLnByb3Zpc2lvbmFsUHJvY2Vzc0Rp
ZFRlcm1pbmF0ZSgpOwogfQogCkBAIC0xMzIsNyArMTM0LDcgQEAgdm9pZCBQcm92aXNpb25hbFBh
Z2VQcm94eTo6Y2FuY2VsKCkKICAgICBpZiAobV9wcm92aXNpb25hbExvYWRVUkwuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NT
d2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JG
cmFtZSBmb3IgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiY2FuY2VsOiBTaW11bGF0aW5nIGEg
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIGZvciBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBBU1NFUlQobV9tYWluRnJhbWUpOwogICAg
IGF1dG8gZXJyb3IgPSBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCk7CiAgICAgZXJy
b3Iuc2V0VHlwZShXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwpA
QCAtMTUxLDE0ICsxNTMsMTQgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6aW5pdGlhbGl6
ZVdlYlBhZ2UoKQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkRGF0YShBUEk6Ok5h
dmlnYXRpb24mIG5hdmlnYXRpb24sIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29u
c3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5n
JiBiYXNlVVJMLCBBUEk6Ok9iamVjdCogdXNlckRhdGEsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2ll
c0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAibG9hZERhdGE6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBh
Z2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxv
YWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsK
IAogICAgIG1fcGFnZS5sb2FkRGF0YVdpdGhOYXZpZ2F0aW9uU2hhcmVkKG1fcHJvY2Vzcy5jb3B5
UmVmKCksIG5hdmlnYXRpb24sIGRhdGEsIE1JTUVUeXBlLCBlbmNvZGluZywgYmFzZVVSTCwgdXNl
ckRhdGEsIFdlYkNvcmU6OlNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZDo6WWVzLCBXVEZNb3Zl
KHdlYnNpdGVQb2xpY2llcykpOwogfQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2Fk
UmVxdWVzdChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3kgc2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBPcHRpb25h
bDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxvYWRSZXF1ZXN0OiBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQ
cm9jZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2Uu
cGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICAvLyBJZiB0aGlzIGlzIGEgY2xpZW50LXNpZGUg
cmVkaXJlY3QgY29udGludWluZyBpbiBhIG5ldyBwcm9jZXNzLCB0aGVuIHRoZSBuZXcgcHJvY2Vz
cyB3aWxsIG92ZXJ3cml0ZSB0aGUgZnJvbUl0ZW0ncyBVUkwuIEluIHRoaXMgY2FzZSwKICAgICAv
LyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1cGRhdGUgZnJvbUl0ZW0ncyBwcm9jZXNzSWRlbnRp
ZmllciBhcyB3ZSB3YW50IGZ1dHVyZSBuYXZpZ2F0aW9ucyB0byB0aGlzIEJhY2tGb3J3YXJkIGl0
ZW0gdG8gaGFwcGVuIGluIHRoZQpAQCAtMTcxLDcgKzE3Myw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmxvYWRSZXF1ZXN0KEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgV2ViQ29y
ZTo6UmVzCiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0o
QVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVt
LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xpY2llcykKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNrRm9yd2Fy
ZEl0ZW06IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImdvVG9CYWNrRm9yd2FyZEl0ZW06IHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogCiAgICAgYXV0
byBpdGVtU3RhdGVzID0gbV9wYWdlLmJhY2tGb3J3YXJkTGlzdCgpLmZpbHRlcmVkSXRlbVN0YXRl
cyhbdGhpcywgdGFyZ2V0SXRlbSA9ICZpdGVtXShhdXRvJiBpdGVtKSB7CiAgICAgICAgIGlmIChh
dXRvKiBwYWdlID0gaXRlbS5zdXNwZW5kZWRQYWdlKCkpIHsKQEAgLTE5Niw3ICsxOTgsNyBAQCBp
bmxpbmUgYm9vbCBQcm92aXNpb25hbFBhZ2VQcm94eTo6dmFsaWRhdGVJbnB1dCh1aW50NjRfdCBm
cmFtZUlELCBjb25zdCBPcHRpb25hbAogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRD
cmVhdGVNYWluRnJhbWUodWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENyZWF0ZU1haW5GcmFtZTogcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSwgZnJhbWVJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDcmVhdGVN
YWluRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Bh
Z2UucGFnZUlEKCkudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAgICAgQVNTRVJUKCFtX21haW5GcmFt
ZSk7CiAKICAgICBtX21haW5GcmFtZSA9IFdlYkZyYW1lUHJveHk6OmNyZWF0ZShtX3BhZ2UsIGZy
YW1lSUQpOwpAQCAtMjM0LDcgKzIzNiw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWluCiAgICAg
aWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCks
IGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1
NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOwog
ICAgIEFTU0VSVChtX3Byb3Zpc2lvbmFsTG9hZFVSTC5pc051bGwoKSk7CiAgICAgbV9wcm92aXNp
b25hbExvYWRVUkwgPSB1cmw7CiAKQEAgLTI1NCw3ICsyNTYsNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgY29ucwogICAgIGlmICghdmFsaWRhdGVJbnB1dChmcmFtZUlELCBuYXZpZ2F0aW9uSUQpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nl
c3NTd2FwcGluZywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0
LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CisgICAgUkVMRUFTRV9M
T0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZy
YW1lSUQsIG5hdmlnYXRpb25JRCk7CiAgICAgQVNTRVJUKCFtX3Byb3Zpc2lvbmFsTG9hZFVSTC5p
c051bGwoKSk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB7IH07CiAKQEAgLTI3MCw3ICsy
NzIsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aQogICAgIGlmICghdmFsaWRhdGVJbnB1dChm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0g
JSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9y
RnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmln
YXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCksIGZyYW1lSUQs
IG5hdmlnYXRpb25JRCk7CiAgICAgbV9wcm92aXNpb25hbExvYWRVUkwgPSB7IH07CiAgICAgbV9w
cm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVz
c2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2UucGFnZUlEKCkpOwogCkBAIC0yOTUsNyArMjk3LDcg
QEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvdmlzaW9uYWxVUkxGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW4KIH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94
eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLAotICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJh
bWVJbmZvRGF0YSYmIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwKKyAgICB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlv
bkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LAogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2
aWdhdGlvbklEKSkKQEAgLTM0MSw3ICszNDMsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3YXJkSXRlbUlkZQog
fQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5h
dmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEm
JiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmll
cj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQ
Qzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvdmlzaW9uYWxQYWdlUHJveHkuaAppbmRleCA2NDU2YzFmOTE2ZDU5NzU1MDZjMTUyNzk0YWYy
ZTZiNjY4YzBiZjZjLi43ZDJmMzkwMjMxYWVhYjM3MGM3N2ZjMWFmMDJjZTRlZDUyNWE1ZGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmgKQEAg
LTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiYpIGZpbmFsOwogCiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
QXN5bmModWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsCi0gICAgICAgIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJ
RCk7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsCiAgICAgICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wg
Y2FuU2hvd01JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwpAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMm
Jik7CiAgICAgdm9pZCBiYWNrRm9yd2FyZEdvVG9JdGVtKGNvbnN0IFdlYkNvcmU6OkJhY2tGb3J3
YXJkSXRlbUlkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSYmKT4mJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5m
b0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwg
SVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAgICBGcmFtZUluZm9E
YXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVkUmVwbHkmJik7CiAjaWYgVVNFKFFVSUNLX0xP
T0spCiAgICAgdm9pZCBkaWRSZXF1ZXN0UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFp
bkZyYW1lKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQppbmRleCAwNTU5Yzk4NzRiZGMzMzVjZWE4YWQ0YTg3
N2IyYWMyOTcwODA1ZjI2Li41YjAyZGRiMjQ4OWZlM2I5NzMxNjQxZWRiM2JmYjM3MDM0NjU1YTI0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5tbQpA
QCAtMTE1LDcgKzExNSw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6OlJlbW90
ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3CiAgICAgSU9TdXJmYWNl
UG9vbDo6c2hhcmVkUG9vbCgpLnNldFBvb2xTaXplKDApOwogI2VuZGlmCiAKLSAgICBwcm9jZXNz
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRo
aXMpOworICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmll
ciwgKnRoaXMpOwogCiAgICAgaWYgKG1fd2ViUGFnZVByb3h5LnByZWZlcmVuY2VzKCkudGlsZWRT
Y3JvbGxpbmdJbmRpY2F0b3JWaXNpYmxlKCkpCiAgICAgICAgIGluaXRpYWxpemVEZWJ1Z0luZGlj
YXRvcigpOwpAQCAtMTI0LDcgKzEyNCw3IEBAIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHk6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoV2ViUGFnZVByb3h5JiB3CiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eSgpCiB7CiAgICAgbV9jYWxsYmFja3MuaW52YWxpZGF0ZShDYWxsYmFja0Jhc2U6OkVycm9y
OjpPd25lcldhc0ludmFsaWRhdGVkKTsKLSAgICBwcm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBwcm9jZXNzKCkucmVt
b3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQogICAgIFttX2Rpc3BsYXlMaW5rSGFuZGxlciBpbnZhbGlkYXRlXTsKQEAg
LTQ2Myw3ICs0NjMsNyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Ondh
aXRGb3JEaWRVcGRhdGVBY3Rpdml0eVN0YXRlKEFjdGl2aXR5U3RhdAogICAgIH0oKTsKIAogICAg
IGF1dG8gc3RhcnRUaW1lID0gTW9ub3RvbmljVGltZTo6bm93KCk7Ci0gICAgd2hpbGUgKHByb2Nl
c3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2Vz
OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpDb21taXRMYXllclRyZWU+KG1faWRl
bnRpZmllci50b1VJbnQ2NCgpLCBhY3Rpdml0eVN0YXRlVXBkYXRlVGltZW91dCAtIChNb25vdG9u
aWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSksIElQQzo6V2FpdEZvck9wdGlvbjo6SW50ZXJydXB0
V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkgeworICAgIHdoaWxlIChwcm9jZXNzKCkuY29u
bmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlPihtX2lkZW50aWZpZXIs
IGFjdGl2aXR5U3RhdGVVcGRhdGVUaW1lb3V0IC0gKE1vbm90b25pY1RpbWU6Om5vdygpIC0gc3Rh
cnRUaW1lKSwgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2Fn
ZUFycml2ZXMpKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPT0gQWN0aXZp
dHlTdGF0ZUNoYW5nZUFzeW5jaHJvbm91cyB8fCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQgPD0gbV9h
Y3Rpdml0eVN0YXRlQ2hhbmdlSUQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCA1YTE0ZmJlNGRjZDRiMzhjN2EwYmZkNWMyZjcwYTA2YzVjNTc1Zjg2Li5iMmY3NzI5
ZmQzOTM1ZjcyZTFiYzkxMTVhMzBhMThmNjRlMzlmZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmNwcApAQCAtOTAsNyAr
OTAsNyBAQCB2b2lkIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OnVwZGF0ZVByZWZlcmVuY2Vz
U3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpVcGRhdGVQcmVmZXJlbmNlc1N0b3JlIHsgc3RvcmUg
fSwgMCk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
UmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYgY2hhbGxlbmdlKQordm9pZCBTZXJ2
aWNlV29ya2VyUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBSZWY8QXV0aGVudGljYXRp
b25DaGFsbGVuZ2VQcm94eT4mJiBjaGFsbGVuZ2UpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJ
RCk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5oCmluZGV4IDkzMjQ1ZjBkYzc2ZjI2
NTc1N2VjMmJmZTcxNjNlOWVkYWFlOWMwZjAuLmU5MzY1YWZhYzRmNDdkN2ZkNzQ3Zjk4OTgzYWQ5
OTkwZThhYjk3NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5LmgKQEAgLTQxLDE0ICs0MSwxNCBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgYm9vbCBoYXNSZWdpc3RlcmVkU2VydmljZVdvcmtlcnMoY29uc3QgU3RyaW5nJiBzZXJ2
aWNlV29ya2VyRGlyZWN0b3J5KTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBS
ZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJik7CiAKICAgICB2b2lkIHN0YXJ0KGNv
bnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmLCBPcHRpb25hbDxQQUw6OlNlc3Npb25JRD4gaW5pdGlh
bFNlc3Npb25JRCk7CiAgICAgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CiAgICAg
dm9pZCB1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsK
IAogICAgIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFp
bigpIHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KLSAgICB1aW50NjRfdCBwYWdlSUQo
KSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQYWdl
SUQ7IH0KIAogcHJpdmF0ZToKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKQEAgLTU5LDcg
KzU5LDcgQEAgcHJpdmF0ZToKICAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KFdlYlByb2Nl
c3NQb29sJiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mLCBXZWJzaXRlRGF0YVN0
b3JlJik7CiAKICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBtX3JlZ2lzdHJhYmxlRG9t
YWluOwotICAgIHVpbnQ2NF90IG1fc2VydmljZVdvcmtlclBhZ2VJRCB7IDAgfTsKKyAgICBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBtX3NlcnZpY2VXb3JrZXJQYWdlSUQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3Bl
bmRlZFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdl
UHJveHkuY3BwCmluZGV4IDEzNDZmY2MwNWM1YTI5Y2RiMDg2ZjcyZWY0OTY3ODJjYjJiMDA1YWUu
LmY2ZDNiNTM2ZGY4YWFiMTk3ZDkxMWVkMTRkMmVhNDBmZWZmMmUxZGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1c3BlbmRlZFBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcApAQCAtMjQ2LDcgKzI0Niw3
IEBAIHZvaWQgU3VzcGVuZGVkUGFnZVByb3h5OjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwKIAogY29uc3QgY2hhciogU3VzcGVuZGVkUGFnZVBy
b3h5Ojpsb2dnaW5nU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVidWdTdHJpbmcoIigw
eCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwg
bV9wYWdlLnBhZ2VJRCgpLCAiLCBtX3N1c3BlbnNpb25TdGF0ZSAiLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4obV9zdXNwZW5zaW9uU3RhdGUpLCAnKScpOworICAgIHJldHVybiBkZWJ1Z1N0cmluZygi
KDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pih0aGlzKSksICIgcGFnZSBJRCAi
LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSwgIiwgbV9zdXNwZW5zaW9uU3RhdGUgIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1fc3VzcGVuc2lvblN0YXRlKSwgJyknKTsKIH0KIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKaW5kZXggOTcxMWIyMzM3
MjE1ODc5MTE2YzNkZDhiNDY2ZWY1NTg1YWU5ODU4Mi4uODM0ZGI3YWUwNzkyYWNiNTQ1OTM4MDA4
MDZjOTJiMmZmYTVjYzMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
LmNwcApAQCAtNDksNiArNDksOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CisKIHN0YXRpYyBIYXNoTWFwPFVzZXJDb250ZW50Q29udHJvbGxlcklk
ZW50aWZpZXIsIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Kj4mIHdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3hpZXMoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIsIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
clByb3h5Kj4+IHByb3hpZXM7CkBAIC03Myw3ICs3NSw3IEBAIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Ojp+V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkoKQogewogICAgIHdlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3hpZXMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKICAgICBm
b3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykgewotICAgICAgICBwcm9jZXNzLT5yZW1v
dmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAg
ICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwog
ICAgICAgICBwcm9jZXNzLT5kaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHko
KnRoaXMpOwogICAgIH0KICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpAQCAtODUsNyAr
ODcsNyBAQCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5KCkKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFBy
b2Nlc3MoV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CiAgICAgaWYgKG1fcHJvY2Vzc2VzLmFkZCgmd2ViUHJv
Y2Vzc1Byb3h5KS5pc05ld0VudHJ5KQotICAgICAgICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSwgKnRoaXMpOworICAgICAg
ICB3ZWJQcm9jZXNzUHJveHkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCks
ICp0aGlzKTsKIAogICAgIEFTU0VSVChwYXJhbWV0ZXJzLnVzZXJDb250ZW50V29ybGRzLmlzRW1w
dHkoKSk7CiAgICAgZm9yIChjb25zdCBhdXRvJiB3b3JsZCA6IG1fdXNlckNvbnRlbnRXb3JsZHMp
CkBAIC0xMTUsNyArMTE3LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6
cmVtb3ZlUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm8KICAgICBBU1NFUlQo
bV9wcm9jZXNzZXMuY29udGFpbnMoJndlYlByb2Nlc3NQcm94eSkpOwogCiAgICAgbV9wcm9jZXNz
ZXMucmVtb3ZlKCZ3ZWJQcm9jZXNzUHJveHkpOwotICAgIHdlYlByb2Nlc3NQcm94eS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Ojpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICB3ZWJQ
cm9jZXNzUHJveHkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBpZGVudGlmaWVyKCkpOwog
fQogCiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyQ29udGVudFdv
cmxkVXNlKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCkBAIC0xMjYsNyArMTI4LDcgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVz
ZShBUEk6OlVzZXJDb250ZW50V29ybGQKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fdXNlckNvbnRl
bnRXb3JsZHMuYWRkKCZ3b3JsZCk7CiAgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KSB7CiAg
ICAgICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAg
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OkFkZFVzZXJDb250ZW50V29ybGRzKHsgc3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigp
LCB3b3JsZC5uYW1lKCkpIH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgICAg
ICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVz
ZXJDb250ZW50V29ybGRzKHsgc3RkOjptYWtlX3BhaXIod29ybGQuaWRlbnRpZmllcigpLCB3b3Js
ZC5uYW1lKCkpIH0pLCBpZGVudGlmaWVyKCkpOwogICAgIH0KIH0KIApAQCAtMTUwLDcgKzE1Miw3
IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJDb250ZW50
V29ybGRVc2VzKEFQSTo6VXNlckNvbnRlbnRXCiB7CiAgICAgaWYgKHNob3VsZFNlbmRSZW1vdmVV
c2VyQ29udGVudFdvcmxkc01lc3NhZ2Uod29ybGQsIG51bWJlck9mVXNlc1RvUmVtb3ZlKSkgewog
ICAgICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAg
ICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRp
ZmllcigpLnRvVUludDY0KCkpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyQ29udGVudFdvcmxkcyh7IHdvcmxk
LmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKICAgICB9CiB9CiAKQEAgLTE2Myw3ICsx
NjUsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29u
dGVudFdvcmxkVXNlcyhIYXNoQ291bnRlZFNldDxSZQogICAgIH0KIAogICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3Js
ZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNl
ckNvbnRlbnRXb3JsZHMod29ybGRzVG9SZW1vdmUpLCBpZGVudGlmaWVyKCkpOwogfQogCiB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6VXNlclNj
cmlwdCYgdXNlclNjcmlwdCwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5IGltbWVkaWF0ZWx5
KQpAQCAtMTc1LDcgKzE3Nyw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OmFkZFVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1c2VyU2NyaXB0LCBJCiAgICAgbV91c2Vy
U2NyaXB0cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTY3JpcHQpOwogCiAgICAgZm9yIChXZWJQ
cm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0cyh7IHsg
dXNlclNjcmlwdC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQu
dXNlclNjcmlwdCgpIH0gfSwgaW1tZWRpYXRlbHkpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7
CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRl
bnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGltbWVkaWF0ZWx5KSwgaWRl
bnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQpCkBAIC0xODMsNyArMTg1
LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlw
dChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQKICAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdv
cmxkPiB3b3JsZCA9IHVzZXJTY3JpcHQudXNlckNvbnRlbnRXb3JsZCgpOwogCiAgICAgZm9yIChX
ZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0
KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmll
cigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHQod29ybGQtPmlkZW50aWZpZXIoKSwg
dXNlclNjcmlwdC5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU2Ny
aXB0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTY3JpcHQpOwogCkBAIC0xOTMsNyArMTk1
LDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclNjcmlw
dChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29y
bGQpCiB7CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmll
cigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHsgd29ybGQuaWRlbnRpZmll
cigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAgdW5zaWduZWQgdXNlclNjcmlwdHNSZW1vdmVk
ID0gbV91c2VyU2NyaXB0cy0+cmVtb3ZlQWxsT2ZUeXBlTWF0Y2hpbmc8QVBJOjpVc2VyU2NyaXB0
PihbJl0oY29uc3QgYXV0byYgdXNlclNjcmlwdCkgewogICAgICAgICByZXR1cm4gJnVzZXJTY3Jp
cHQtPnVzZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQ7CkBAIC0yMTQsNyArMjE2LDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclNjcmlwdHMoKQog
ICAgICAgICB3b3JsZElkZW50aWZpZXJzLnVuY2hlY2tlZEFwcGVuZCh3b3JsZENvdW50UGFpci5r
ZXktPmlkZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMpLCBp
ZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdHMod29ybGRJZGVu
dGlmaWVycyksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTY3JpcHRzLT5lbGVtZW50cygp
LmNsZWFyKCk7CiAKQEAgLTIzMCw3ICsyMzIsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5OjphZGRVc2VyU3R5bGVTaGVldChBUEk6OlVzZXJTdHlsZVNoZWV0JiB1c2VyUwog
ICAgIG1fdXNlclN0eWxlU2hlZXRzLT5lbGVtZW50cygpLmFwcGVuZCgmdXNlclN0eWxlU2hlZXQp
OwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpB
ZGRVc2VyU3R5bGVTaGVldHMoeyB7IHVzZXJTdHlsZVNoZWV0LmlkZW50aWZpZXIoKSwgd29ybGQt
PmlkZW50aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQudXNlclN0eWxlU2hlZXQoKSB9IH0pLCBpZGVu
dGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsgeyB1c2VyU3R5bGVT
aGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNoZWV0LnVz
ZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVT
aGVldCYgdXNlclN0eWxlU2hlZXQpCkBAIC0yMzgsNyArMjQwLDcgQEAgdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlclN0eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVT
aGVldCYgdXMKICAgICBSZWY8QVBJOjpVc2VyQ29udGVudFdvcmxkPiB3b3JsZCA9IHVzZXJTdHls
ZVNoZWV0LnVzZXJDb250ZW50V29ybGQoKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBw
cm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclN0eWxlU2hlZXQod29ybGQtPmlkZW50
aWZpZXIoKSwgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUlu
dDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJT
dHlsZVNoZWV0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTdHls
ZVNoZWV0cy0+ZWxlbWVudHMoKS5yZW1vdmVBbGwoJnVzZXJTdHlsZVNoZWV0KTsKIApAQCAtMjQ4
LDcgKzI1MCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVz
ZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzCiB2b2lkIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoQVBJOjpVc2VyQ29udGVu
dFdvcmxkJiB3b3JsZCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1f
cHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0cyh7IHdvcmxkLmlkZW50aWZpZXIo
KSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZUFsbFVzZXJTdHlsZVNoZWV0
cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVk
IHVzZXJTdHlsZVNoZWV0c1JlbW92ZWQgPSBtX3VzZXJTdHlsZVNoZWV0cy0+cmVtb3ZlQWxsT2ZU
eXBlTWF0Y2hpbmc8QVBJOjpVc2VyU3R5bGVTaGVldD4oWyZdKGNvbnN0IGF1dG8mIHVzZXJTdHls
ZVNoZWV0KSB7CiAgICAgICAgIHJldHVybiAmdXNlclN0eWxlU2hlZXQtPnVzZXJDb250ZW50V29y
bGQoKSA9PSAmd29ybGQ7CkBAIC0yNjksNyArMjcxLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlclN0eWxlU2hlZXRzKCkKICAgICAgICAgd29ybGRJ
ZGVudGlmaWVycy51bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIua2V5LT5pZGVudGlmaWVy
KCkpOwogCiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVycyksIGlkZW50aWZpZXIo
KS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMod29ybGRJZGVudGlmaWVy
cyksIGlkZW50aWZpZXIoKSk7CiAKICAgICBtX3VzZXJTdHlsZVNoZWV0cy0+ZWxlbWVudHMoKS5j
bGVhcigpOwogCkBAIC0yOTAsNyArMjkyLDcgQEAgYm9vbCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6YWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKFdlYlNjcmlwdE1lc3NhZ2UKICAg
ICBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5hZGQoaGFuZGxlci5pZGVudGlmaWVyKCksICZoYW5k
bGVyKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMp
Ci0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6QWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVyKCks
IHdvcmxkLT5pZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpBZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKHsgeyBoYW5kbGVyLmlk
ZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgaGFuZGxlci5uYW1lKCkgfSB9KSwgaWRl
bnRpZmllcigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTMwMCw3ICszMDIsNyBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyTWVzc2FnZUhh
bmRsZXJGb3JOYW1lKGNvbnN0IFN0cmluZwogICAgIGZvciAoYXV0byBpdCA9IG1fc2NyaXB0TWVz
c2FnZUhhbmRsZXJzLmJlZ2luKCksIGVuZCA9IG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLmVuZCgp
OyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgaWYgKGl0LT52YWx1ZS0+bmFtZSgpID09IG5h
bWUgJiYgJml0LT52YWx1ZS0+dXNlckNvbnRlbnRXb3JsZCgpID09ICZ3b3JsZCkgewogICAgICAg
ICAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAg
ICAgICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZVVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0
LT52YWx1ZS0+aWRlbnRpZmllcigpKSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAg
ICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6UmVtb3ZlVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVyKHdvcmxkLmlkZW50aWZpZXIoKSwgaXQt
PnZhbHVlLT5pZGVudGlmaWVyKCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgICAgICAgICBtX3Nj
cmlwdE1lc3NhZ2VIYW5kbGVycy5yZW1vdmUoaXQpOwogCkBAIC0zMTMsNyArMzE1LDcgQEAgdm9p
ZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVy
Rm9yTmFtZShjb25zdCBTdHJpbmcKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVudFdvcmxkJiB3b3Js
ZCkKIHsKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQot
ICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6
OlJlbW92ZUFsbFVzZXJTY3JpcHRNZXNzYWdlSGFuZGxlcnMoeyB3b3JsZC5pZGVudGlmaWVyKCkg
fSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0TWVzc2Fn
ZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAg
dW5zaWduZWQgbnVtYmVyUmVtb3ZlZCA9IDA7CiAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMu
cmVtb3ZlSWYoWyZdKGF1dG8mIGVudHJ5KSB7CkBAIC0zMjcsNyArMzI5LDcgQEAgdm9pZCBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsVXNlck1lc3NhZ2VIYW5kbGVycyhB
UEk6OlVzZXJDb250ZW4KICAgICByZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyh3b3JsZCwgbnVt
YmVyUmVtb3ZlZCk7CiB9CiAKLXZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmRp
ZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgdWludDY0X3QgcGFnZUlE
LCBjb25zdCBGcmFtZUluZm9EYXRhJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFu
ZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGFSZWZlcmVuY2UpCit2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9
IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTM1
MSw3ICszNTMsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRDb250
ZW50UnVsZUxpc3QoQVBJOjpDb250ZW50UnVsZUxpc3QmIGNvbgogICAgIGF1dG8gcGFpciA9IHN0
ZDo6bWFrZV9wYWlyKGNvbnRlbnRSdWxlTGlzdC5uYW1lKCksIGNvbnRlbnRSdWxlTGlzdC5jb21w
aWxlZFJ1bGVMaXN0KCkuZGF0YSgpKTsKIAogICAgIGZvciAoYXV0byogcHJvY2VzcyA6IG1fcHJv
Y2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OkFkZENvbnRlbnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyh7IHBhaXIgfSksIGlkZW50aWZpZXIoKSk7
CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCiAgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpB
ZGRDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpLCB7IHBhaXIgfSB9LCAwKTsKQEAgLTM2
Miw3ICszNjQsNyBAQCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVD
b250ZW50UnVsZUxpc3QoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIG1fY29udGVudFJ1bGVMaXN0
cy5yZW1vdmUobmFtZSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykK
LSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVDb250ZW50UnVsZUxpc3QobmFtZSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpSZW1vdmVDb250ZW50UnVsZUxpc3QobmFtZSksIGlkZW50aWZpZXIoKSk7CiAKICAgICBmb3Ig
KGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNzZXMpCiAgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOjpSZW1vdmVDb250ZW50
UnVsZUxpc3QgeyBpZGVudGlmaWVyKCksIG5hbWUgfSwgMCk7CkBAIC0zNzMsNyArMzc1LDcgQEAg
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQWxsQ29udGVudFJ1bGVM
aXN0cygpCiAgICAgbV9jb250ZW50UnVsZUxpc3RzLmNsZWFyKCk7CiAKICAgICBmb3IgKGF1dG8q
IHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlk
ZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzKCksIGlk
ZW50aWZpZXIoKSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX25ldHdvcmtQcm9jZXNz
ZXMpCiAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyOjpSZW1vdmVBbGxDb250ZW50UnVsZUxpc3RzIHsgaWRlbnRpZmllcigpIH0sIDAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggNjIzMzAxMTE2ZWQx
ZDY1NGYyYTM0ODlhN2YwZjYyNDc3NjYxMjRhZS4uMGVkMzZhNTljYzNhNzFkOWYyMTllMTk0ODQy
OWM4YTc5MWQwYzYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiTWVzc2Fn
ZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiVXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CkBAIC0xMTAsNyArMTExLDcgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlci4KICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50
NjRfdCBtZXNzYWdlSGFuZGxlcklELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2
b2lkIGRpZFBvc3RNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CiAKICAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRV
c2UoQVBJOjpVc2VyQ29udGVudFdvcmxkJik7CiAgICAgdm9pZCByZW1vdmVVc2VyQ29udGVudFdv
cmxkVXNlcyhBUEk6OlVzZXJDb250ZW50V29ybGQmLCB1bnNpZ25lZCBudW1iZXJPZlVzZXNUb1Jl
bW92ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDgxNzE0MzUxZmNlNzc1ZGFiYzQ3MThkNDNmODhlMzZmNWY1MGZlZTQuLjI1
YTRlMjkxMjc0ZWUwMzY5ZmRkMTZlZTAwNWMyYzk1ZjlmYWYyNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNCw1ICsyNCw1
IEBACiAgKi8KIAogbWVzc2FnZXMgLT4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkgewot
RGlkUG9zdE1lc3NhZ2UodWludDY0X3QgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9E
YXRhIGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIElQQzo6RGF0YVJl
ZmVyZW5jZSBtZXNzYWdlKSBXYW50c0Nvbm5lY3Rpb24KK0RpZFBvc3RNZXNzYWdlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFt
ZUluZm9EYXRhLCB1aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2Ug
bWVzc2FnZSkgV2FudHNDb25uZWN0aW9uCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAppbmRleCAyNDgxODJkODA5MjFmZTFhMTllNWM2
MzRiMTZhMjRjN2M3ZDE3NmVmLi4xZTkxYWJiNmVmZGQwY2Q1OTZmOTRkYWNlOGY3MjY4ZTMxODRh
NWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAKQEAgLTY2LDEwICs2NiwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgbWluaW11bVNj
cm9sbEV2ZW50UmF0aW9Gb3JTd2lwZSA9IDAuNTsKIHN0YXRpYyBjb25zdCBmbG9hdCBzd2lwZVNu
YXBzaG90UmVtb3ZhbFJlbmRlclRyZWVTaXplVGFyZ2V0RnJhY3Rpb24gPSAwLjU7CiAjZW5kaWYK
IAotc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3
R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKQorc3RhdGljIEhhc2hNYXA8UGFnZUlkZW50
aWZpZXIsIFZpZXdHZXN0dXJlQ29udHJvbGxlcio+JiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9y
QWxsUGFnZXMoKQogewogICAgIC8vIFRoZSBrZXkgaW4gdGhpcyBtYXAgaXMgdGhlIGFzc29jaWF0
ZWQgcGFnZSBJRC4KLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDx1aW50NjRfdCwg
Vmlld0dlc3R1cmVDb250cm9sbGVyKj4+IHZpZXdHZXN0dXJlQ29udHJvbGxlcnM7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcio+PiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzOwogICAgIHJldHVybiB2aWV3R2VzdHVy
ZUNvbnRyb2xsZXJzLmdldCgpOwogfQogCkBAIC0xMTYsNyArMTE2LDcgQEAgdm9pZCBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmNvbm5lY3RUb1Byb2Nlc3MoKQogICAgIG1faXNDb25uZWN0ZWRUb1By
b2Nlc3MgPSB0cnVlOwogfQogCi1WaWV3R2VzdHVyZUNvbnRyb2xsZXIqIFZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1cmUodWludDY0X3QgcGFnZUlELCBWaWV3R2VzdHVy
ZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBnZXN0dXJlSUQpCitWaWV3R2VzdHVyZUNvbnRyb2xsZXIq
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Y29udHJvbGxlckZvckdlc3R1cmUoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6Okdlc3R1cmVJRCBnZXN0dXJlSUQpCiB7
CiAgICAgYXV0byBnZXN0dXJlQ29udHJvbGxlckl0ZXIgPSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJz
Rm9yQWxsUGFnZXMoKS5maW5kKHBhZ2VJRCk7CiAgICAgaWYgKGdlc3R1cmVDb250cm9sbGVySXRl
ciA9PSB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzRm9yQWxsUGFnZXMoKS5lbmQoKSkKQEAgLTU0Nyw3
ICs1NDcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6Zm9yY2VSZXBhaW50SWZOZWVk
ZWQoKQogCiAgICAgbV9oYXNPdXRzdGFuZGluZ1JlcGFpbnRSZXF1ZXN0ID0gdHJ1ZTsKIAotICAg
IHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAgIGF1dG8gcGFn
ZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAgICAgR2VzdHVyZUlEIGdlc3R1cmVJRCA9
IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBtX3dlYlBhZ2VQcm94eS5mb3JjZVJlcGFpbnQoVm9p
ZENhbGxiYWNrOjpjcmVhdGUoW3BhZ2VJRCwgZ2VzdHVyZUlEXSAoQ2FsbGJhY2tCYXNlOjpFcnJv
ciBlcnJvcikgewogICAgICAgICBpZiAoYXV0byBnZXN0dXJlQ29udHJvbGxlciA9IGNvbnRyb2xs
ZXJGb3JHZXN0dXJlKHBhZ2VJRCwgZ2VzdHVyZUlEKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmgKaW5kZXggNDMxYzI3NjZkMDgyNjFlNTJjZWZi
MjA2ZDZjZDI5OWIxMmNmMTM5NC4uYzE2NzBkM2E5NGNlZjNkOTA2YWY0OTQ5Y2Q1NDEzNjA0OTQ3
NjMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250
cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9s
bGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zs
b2F0UmVjdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRl
IDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMTc1LDcgKzE3Niw3IEBAIHByaXZhdGU6CiAgICAgLy8g
SVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHN0YXRpYyBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXIqIGNvbnRyb2xsZXJGb3JHZXN0dXJlKHVpbnQ2NF90IHBhZ2VJRCwgR2Vz
dHVyZUlEKTsKKyAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250cm9sbGVyRm9y
R2VzdHVyZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgR2VzdHVyZUlEKTsKIAogICAgIHN0YXRp
YyBHZXN0dXJlSUQgdGFrZU5leHRHZXN0dXJlSUQoKTsKICAgICB2b2lkIHdpbGxCZWdpbkdlc3R1
cmUoVmlld0dlc3R1cmVUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExp
bmtTdG9yZS5jcHAKaW5kZXggZjJlN2I5MzQwNTc2NmVhNWU4Yzc1ZWFiZjVhYzZhNGZkNGMwNGRl
ZS4uOTkxZGMyZmNmZjlkNDNjNWUwODc2ODY0Y2MyODA0MzhkOWUzNGExMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5jcHAKQEAgLTEwOSw3ICsxMDksNyBA
QCB2b2lkIFZpc2l0ZWRMaW5rU3RvcmU6OndlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oV2Vi
UHJvY2Vzc1Byb3h5JiwgSVBDOjpDb25uZQogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQuCiB9CiAK
LXZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UodWludDY0
X3QgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNoIGxpbmtIYXNoKQordm9pZCBWaXNpdGVkTGlua1N0
b3JlOjphZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFNo
YXJlZFN0cmluZ0hhc2ggbGlua0hhc2gpCiB7CiAgICAgaWYgKGF1dG8qIHdlYlBhZ2VQcm94eSA9
IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpKSB7CiAgICAgICAgIGlmICghd2ViUGFn
ZVByb3h5LT5hZGRzVmlzaXRlZExpbmtzKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNp
dGVkTGlua1N0b3JlLmgKaW5kZXggMDZmMjBiYTkxY2JkYmJhMjY3OTVmMzhjNjBjODFiNjhkODE3
NTlhNS4uMDJiNDliYWM1NWUyNDg2YmQzZTg5YTllZTg4ZWE4ODMzNmYxZWZjNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaApAQCAtNjcsNyArNjcsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkSW52YWxpZGF0ZVNoYXJlZE1lbW9yeSgpIGZpbmFsOwogICAg
IHZvaWQgZGlkVXBkYXRlU2hhcmVkU3RyaW5nSGFzaGVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpT
aGFyZWRTdHJpbmdIYXNoPiYgYWRkZWRIYXNoZXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpTaGFy
ZWRTdHJpbmdIYXNoPiYgcmVtb3ZlZEhhc2hlcykgZmluYWw7CiAKLSAgICB2b2lkIGFkZFZpc2l0
ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U2hhcmVkU3RyaW5n
SGFzaCk7CisgICAgdm9pZCBhZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaCk7CiAKICAgICB2b2lkIHNlbmRT
dG9yZUhhbmRsZVRvUHJvY2VzcyhXZWJQcm9jZXNzUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4KaW5kZXggZTc4
NjJlMzY1YjBmZmUxMzkxNDYzYzAwNzA2MWQ3ZTdmOGY4ZDU0Yi4uMmU2NmM0MjgwOGViYjdlYmNm
MzkzMTliMTA4NmE5MjdmMzMxMzYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVmlzaXRlZExpbmtTdG9yZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9WaXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCkBAIC0yMSw1ICsyMSw1IEBACiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFZpc2l0ZWRMaW5rU3RvcmUgewotICAgIEFkZFZpc2l0
ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgbGlua0hhc2gpCisg
ICAgQWRkVmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBsaW5rSGFzaCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGUwZDM1NjQxYjk5ZDdlNWVjYTYxYjgzMTk1ODllYzYxNTIzOWE1Yzgu
Ljk5MmQ3NjVlN2YzMTljZWMwYWNjMWVkYzAwYzE0MWE1YWZmZDcyNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMzgyLDEyICszODIsMTIgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZvck1vc3RWaXNpYmxlV2ViUGFnZUlmQW55KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgU2UKICAgICBjb21wbGV0aW9uSGFuZGxlcihzZWxlY3RlZFBhZ2UpOwog
fQogCi1SZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNyZWF0ZShQYWdlQ2xpZW50JiBw
YWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbnQ2NF90IHBhZ2VJRCwgUmVm
PEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmlndXJhdGlvbikKK1JlZjxXZWJQYWdlUHJv
eHk+IFdlYlBhZ2VQcm94eTo6Y3JlYXRlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29u
ZmlndXJhdGlvbj4mJiBjb25maWd1cmF0aW9uKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlBhZ2VQcm94eShwYWdlQ2xpZW50LCBwcm9jZXNzLCBwYWdlSUQsIFdURk1vdmUoY29uZmln
dXJhdGlvbikpKTsKIH0KIAotV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYg
cGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJl
ZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCitXZWJQYWdlUHJveHk6
OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHBy
b2Nlc3MsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYgY29uZmlndXJhdGlvbikKICAgICA6IG1fcGFnZUNsaWVudChtYWtlV2Vha1B0cihwYWdlQ2xp
ZW50KSkKICAgICAsIG1fY29uZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQogICAg
ICwgbV9uYXZpZ2F0aW9uQ2xpZW50KG1ha2VVbmlxdWVSZWY8QVBJOjpOYXZpZ2F0aW9uQ2xpZW50
PigpKQpAQCAtNDM2LDcgKzQzNiw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VD
bGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAjZW5kaWYK
ICAgICAsIG1fcmVzZXRSZWNlbnRDcmFzaENvdW50VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlz
LCAmV2ViUGFnZVByb3h5OjpyZXNldFJlY2VudENyYXNoQ291bnQpCiB7Ci0gICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY29uc3RydWN0b3I6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKCFtX2NvbmZpZ3VyYXRpb24tPmRyYXdz
QmFja2dyb3VuZCgpKQogICAgICAgICBtX2JhY2tncm91bmRDb2xvciA9IENvbG9yKENvbG9yOjp0
cmFuc3BhcmVudCk7CkBAIC00OTAsNyArNDkwLDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJv
eHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCB1aW4K
IAogV2ViUGFnZVByb3h5Ojp+V2ViUGFnZVByb3h5KCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkZXN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkZXN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOwogCiAgICAgQVNTRVJUKG1fcHJvY2Vzcy0+d2ViUGFnZShtX3BhZ2VJRCkg
IT0gdGhpcyk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtNzA5LDcgKzcwOSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdp
c3RyYWJsZURvbWFpbikKICAgICBBU1NFUlQoIW1faXNDbG9zZWQpOwogICAgIEFTU0VSVCghaGFz
UnVubmluZ1Byb2Nlc3MoKSk7CiAKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsYXVuY2hQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCkpOwogCiAgICAgbV9wcm9jZXNzLT5yZW1vdmVXZWJQYWdlKCp0aGlzLCBXZWJQcm9jZXNzUHJv
eHk6OkVuZHNVc2luZ0RhdGFTdG9yZTo6WWVzKTsKICAgICBtX3Byb2Nlc3MtPnJlbW92ZU1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6V2ViUGFnZVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1fcGFnZUlEKTsKQEAgLTc2NCw3ICs3NjQsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVu
ZEN1cnJlbnRQYWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAog
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAic3VzcGVuZEN1cnJl
bnRQYWdlSWZQb3NzaWJsZTogU3VzcGVuZGluZyBjdXJyZW50IHBhZ2UgZm9yIHByb2Nlc3MgcGlk
ICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpKTsKICAgICBhdXRvIHN1c3BlbmRl
ZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFN1c3BlbmRlZFBhZ2VQcm94eT4oKnRoaXMsIG1fcHJv
Y2Vzcy5jb3B5UmVmKCksICptYWluRnJhbWVJRCwgc2hvdWxkRGVsYXlDbG9zaW5nVW50aWxFbnRl
cmluZ0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKTsKIAotICAgIExPRyhQcm9jZXNzU3dhcHBp
bmcsICJXZWJQYWdlUHJveHkgJSIgUFJJdTY0ICIgY3JlYXRlZCBzdXNwZW5kZWQgcGFnZSAlcyBm
b3IgcHJvY2VzcyBwaWQgJWksIGJhY2svZm9yd2FyZCBpdGVtICVzIiBQUkl1NjQsIHBhZ2VJRCgp
LCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5nU3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9tSXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsK
KyAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGNyZWF0
ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBiYWNrL2ZvcndhcmQgaXRl
bSAlcyIgUFJJdTY0LCBwYWdlSUQoKS50b1VJbnQ2NCgpLCBzdXNwZW5kZWRQYWdlLT5sb2dnaW5n
U3RyaW5nKCksIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJvbUl0ZW0gPyBmcm9t
SXRlbS0+aXRlbUlEKCkubG9nU3RyaW5nKCkgOiAwKTsKIAogICAgIC8vIElmIHRoZSBjbGllbnQg
Zm9yY2VkIGEgc3dhcCB0aGVuIGl0IG1heSBub3QgYmUgd2ViLWNvbXBhdGlibGUgdG8ga2VlcCB0
aGUgcHJldmlvdXMgcGFnZSBiZWNhdXNlIG90aGVyIHdpbmRvd3MgbWF5IGhhdmUgYW4gb3BlbmVy
IGxpbmsgdG8gaXQuIFdlIHRodXMgY2xvc2UgaXQgYXMgc29vbiBhcyB3ZQogICAgIC8vIGNhbiBk
byBzbyB3aXRob3V0IGZsYXNoaW5nLgpAQCAtNzgyLDcgKzc4Miw3IEBAIGJvb2wgV2ViUGFnZVBy
b3h5OjpzdXNwZW5kQ3VycmVudFBhZ2VJZlBvc3NpYmxlKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdh
dGlvbiwgT3B0CiB2b2lkIFdlYlBhZ2VQcm94eTo6c3dhcFRvV2ViUHJvY2VzcyhSZWY8V2ViUHJv
Y2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5PiYm
IGRyYXdpbmdBcmVhLCBSZWZQdHI8V2ViRnJhbWVQcm94eT4mJiBtYWluRnJhbWUpCiB7CiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJzd2FwVG9XZWJQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJzd2FwVG9XZWJQcm9jZXNzOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCkpOwogCiAgICAgbV9wcm9jZXNzID0gV1RGTW92ZShwcm9jZXNzKTsKICAgICBtX3dl
YnNpdGVEYXRhU3RvcmUgPSBtX3Byb2Nlc3MtPndlYnNpdGVEYXRhU3RvcmUoKTsKQEAgLTg3NCwx
MCArODc0LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRBdHRhY2hUb1J1bm5pbmdQcm9jZXNz
KCkKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpsYXVuY2hQcm9jZXNz
Rm9yUmVsb2FkKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVu
Y2hQcm9jZXNzRm9yUmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBp
cyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBwYWdlIGlzIGNsb3NlZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogICAgIApAQCAtODg2LDcgKzg4Niw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBh
Z2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiAgICAgbGF1bmNoUHJvY2VzcyhyZWdp
c3RyYWJsZURvbWFpbik7CiAKICAgICBpZiAoIW1fYmFja0ZvcndhcmRMaXN0LT5jdXJyZW50SXRl
bSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFBy
b2Nlc3NGb3JSZWxvYWQ6IG5vIGN1cnJlbnQgaXRlbSB0byByZWxvYWQ6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9j
ZXNzRm9yUmVsb2FkOiBubyBjdXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
LnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTkwMSwx
MCArOTAxLDEwIEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNo
UHJvY2Vzc0ZvclJlbG9hZCgpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94
eTo6bGF1bmNoUHJvY2Vzc1dpdGhJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mIGl0ZW0pCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dpdGhJ
dGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJsYXVuY2hQcm9jZXNzV2l0aEl0ZW06IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1
bmNoUHJvY2Vzc1dpdGhJdGVtOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJ
bnQ2NCgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC05NTcsNyArOTU3
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlKCkKICAgICBpZiAobV9pc0Nsb3NlZCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiY2xv
c2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9pc0Nsb3Nl
ZCA9IHRydWU7CiAKQEAgLTEwMzIsNyArMTAzMiw3IEBAIGJvb2wgV2ViUGFnZVByb3h5Ojp0cnlD
bG9zZSgpCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeUNsb3NlOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlD
bG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNz
SWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIC8vIENsb3NlIHdpdGhv
dXQgZGVsYXkgaWYgdGhlIHByb2Nlc3MgYWxsb3dzIGl0LiBPdXIgZ29hbCBpcyB0byB0ZXJtaW5h
dGUKICAgICAvLyB0aGUgcHJvY2Vzcywgc28gd2UgY2hlY2sgYSBwZXItcHJvY2VzcyBzdGF0dXMg
Yml0LgpAQCAtMTA3OCw3ICsxMDc4LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFn
ZVByb3h5Ojpsb2FkUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTaG8KICAgICBp
ZiAobV9pc0Nsb3NlZCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkUmVxdWVzdDogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZFJlcXVlc3Q6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAg
ICAgICAgIGxhdW5jaFByb2Nlc3MoUmVnaXN0cmFibGVEb21haW4geyByZXF1ZXN0LnVybCgpIH0p
OwpAQCAtMTA5Miw3ICsxMDkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvYWRSZXF1ZXN0V2l0
aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKIHsKICAgICBB
U1NFUlQoIW1faXNDbG9zZWQpOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZFJlcXVlc3RXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb246IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFn
ZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBAIC0xMTIxLDEwICsxMTIxLDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgcHJvY2VzCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94
eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIHJl
c291cmNlRGlyZWN0b3J5VVJMU3RyaW5nLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9zZWQpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHBhZ2UgaXMgY2xv
c2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAibG9hZEZpbGU6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUlu
dDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTExMzMsNyArMTEz
Myw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29u
c3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAKICAgICBVUkwgZmlsZVVSTCA9IFVSTChV
UkwoKSwgZmlsZVVSTFN0cmluZyk7CiAgICAgaWYgKCFmaWxlVVJMLmlzTG9jYWxGaWxlKCkpIHsK
LSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUg
aXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IGZpbGUgaXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAg
LTExNDMsNyArMTE0Myw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6
bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJMU3RyaW5nLCBjb25zCiAgICAgZWxzZSB7CiAg
ICAgICAgIHJlc291cmNlRGlyZWN0b3J5VVJMID0gVVJMKFVSTCgpLCByZXNvdXJjZURpcmVjdG9y
eVVSTFN0cmluZyk7CiAgICAgICAgIGlmICghcmVzb3VyY2VEaXJlY3RvcnlVUkwuaXNMb2NhbEZp
bGUoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9h
ZEZpbGU6IHJlc291cmNlIFVSTCBpcyBub3QgbG9jYWw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEZpbGU6IHJlc291
cmNlIFVSTCBpcyBub3QgbG9jYWw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KQEAgLTExNzMsMTAgKzEx
NzMsMTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpsb2FkRmlsZShj
b25zdCBTdHJpbmcmIGZpbGVVUkxTdHJpbmcsIGNvbnMKIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bj4gV2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEs
IGNvbnN0IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0
cmluZyYgYmFzZVVSTCwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWREYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTkwLDcgKzExOTAsNyBAQCBSZWZQ
dHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWREYXRhKGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYgZGF0YSwgYwogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2
aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIEFQSTo6TmF2aWdh
dGlvbiYgbmF2aWdhdGlvbiwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBT
dHJpbmcmIE1JTUVUeXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJh
c2VVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgU2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdMb2Fk
IHNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZERhdGFXaXRoTmF2aWdhdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0aE5hdmlnYXRpb246IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsKIApAQCAt
MTIxNiwxMyArMTIxNiwxMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZERhdGFXaXRoTmF2aWdh
dGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsCiAKIHZvaWQgV2ViUGFn
ZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGh0bWxE
YXRhLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBVUkwmIGJhc2VVUkwsIGNvbnN0IFVS
TCYgdW5yZWFjaGFibGVVUkwsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0
ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICAvLyBXaGVuIHRoZSBV
SVByb2Nlc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgaGFuZGxpbmcgYSBmYWlsaW5nIHByb3Zpc2lv
bmFsIGxvYWQsIGRvIG5vdCBhdHRlbXB0IHRvCiAgICAgLy8gc3RhcnQgYSBzZWNvbmQgYWx0ZXJu
YXRpdmUgSFRNTCBsb2FkIGFzIHRoaXMgd2lsbCBwcmV2ZW50IHRoZSBwYWdlIGxvYWQgc3RhdGUg
ZnJvbSBiZWluZwogICAgIC8vIGhhbmRsZWQgcHJvcGVybHkuCiAgICAgaWYgKG1faXNDbG9zZWQg
fHwgbV9pc0xvYWRpbmdBbHRlcm5hdGVIVE1MU3RyaW5nRm9yRmFpbGluZ1Byb3Zpc2lvbmFsTG9h
ZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJu
YXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9yIG90aGVyKTogd2ViUElEID0gJWksIHBhZ2VJRCA9
ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1M
OiBwYWdlIGlzIGNsb3NlZCAob3Igb3RoZXIpOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjU5LDEwICsxMjU5LDEwIEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojpsb2FkQWx0ZXJuYXRlSFRNTChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGh0bWxEYXRhLCBjb25zdCBTCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2ZURh
dGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bG9hZFdlYkFyY2hpdmVEYXRhOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAg
aWYgKG1faXNDbG9zZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZFdlYkFyY2hpdmVEYXRhOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZl
RGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyODYsMTAgKzEyODYsMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmxvYWRXZWJBcmNoaXZlRGF0YShBUEk6OkRhdGEqIHdlYkFyY2hpdmVEYXRhLCBBUEk6
Ok9iamVjdCogdXMKIAogdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRlVG9QREZMaW5rV2l0aFNp
bXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBJbnRQb2ludCBkb2N1bWVudFBv
aW50LCBJbnRQb2ludCBzY3JlZW5Qb2ludCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7
CiAKICAgICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBj
bG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBj
bG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTEzMDUsMTAgKzEzMDUsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6Om5hdmlnYXRl
VG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLAogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgInN0b3BMb2FkaW5nOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9wTG9hZGluZzogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dpdGhT
aW11bGF0ZWRDbGljazogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJuYXZpZ2F0ZVRvUERGTGlua1dp
dGhTaW11bGF0ZWRDbGljazogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9V
SW50NjQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMjIsNyArMTMyMiw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wTG9hZGluZygpCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRp
b24+IFdlYlBhZ2VQcm94eTo6cmVsb2FkKE9wdGlvblNldDxXZWJDb3JlOjpSZWxvYWRPcHRpb24+
IG9wdGlvbnMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2Fk
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJyZWxvYWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZTsKIApAQCAtMTM5OSw3ICsxMzk5
LDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
IGl0ZW0sIEZyYW1lTG9hZFR5cGUgZnJhbWVMb2FkVHlwZSkKIHsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJnb1RvQmFja0ZvcndhcmRJ
dGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgIExPRyhMb2FkaW5nLCAiV2Vi
UGFnZVByb3h5ICVwIGdvVG9CYWNrRm9yd2FyZEl0ZW0gdG8gaXRlbSBVUkwgJXMiLCB0aGlzLCBp
dGVtLnVybCgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vzcygp
KQpAQCAtMTQyMSwxMCArMTQyMSwxMCBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdl
UHJveHk6OmdvVG9CYWNrRm9yd2FyZEl0ZW0oV2ViQmFja0ZvcndhcmRMaXN0SXRlbQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6dHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJl
c3RvcmVTY3JvbGxQb3NpdGlvbjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246IHBhZ2UgaXMgbm90IHZhbGlk
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTU1
MSw3ICsxNTUxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsZWFySW5zcGVjdG9yVGFyZ2V0cygp
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVJbnNwZWN0b3JUYXJnZXRzKCkKIHsKLSAgICBT
dHJpbmcgcGFnZVRhcmdldElkID0gbWFrZVN0cmluZygicGFnZS0iLCBtX3BhZ2VJRCk7CisgICAg
U3RyaW5nIHBhZ2VUYXJnZXRJZCA9IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5jcmVhdGVJbnNwZWN0b3JUYXJnZXQo
cGFnZVRhcmdldElkLCBJbnNwZWN0b3I6Okluc3BlY3RvclRhcmdldFR5cGU6OlBhZ2UpOwogfQog
CkBAIC0yODc0LDcgKzI4NzQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lE
ZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBBUEk6Ok5hdmlnYXRpb24qCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBmcmFtZUhhc0N1c3Rv
bUNvbnRlbnRQcm92aWRlciwgdWludDMyX3QgZnJhbWVMb2FkVHlwZSwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8sIGJvb2wgY29udGFpbnNQbHVnaW5Eb2N1
bWVudCwgT3B0aW9uYWw8V2ViQ29yZTo6SGFzSW5zZWN1cmVDb250ZW50PiBmb3JjZWRIYXNJbnNl
Y3VyZUNvbnRlbnQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKICAgICBBU1NFUlQobV9w
cm92aXNpb25hbFBhZ2UpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNv
bW1pdFByb3Zpc2lvbmFsUGFnZTogcHJldmlvdXNQSUQgPSAlaSwgbmV3UElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Byb3Zpc2lv
bmFsUGFnZS0+cHJvY2VzcygpLnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6IHBy
ZXZpb3VzUElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBtYWluRnJhbWVJREluUHJldmlvdXNQcm9jZXNzID0gbV9tYWluRnJhbWUgPyBtYWtl
T3B0aW9uYWwobV9tYWluRnJhbWUtPmZyYW1lSUQoKSkgOiBXVEY6Om51bGxvcHQ7CiAKQEAgLTI5
MTQsNyArMjkxNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21taXRQcm92aXNpb25hbFBhZ2Uo
dWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQgV2ViUGFnZVBy
b3h5Ojpjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3MoQVBJOjpOYXZpZ2F0aW9uJiBuYXZp
Z2F0aW9uLCBzdGQ6OnVuaXF1ZV9wdHI8U3VzcGVuZGVkUGFnZVByb3h5PiYmIHN1c3BlbmRlZFBh
Z2VQcm94eSwgUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBuZXdQcm9jZXNzLCBQcm9jZXNzU3dhcFJl
cXVlc3RlZEJ5Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIE9wdGlvbmFsPFdl
YnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVzKQogewotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImNvbnRpbnVlTmF2aWdhdGlvbkluTmV3UHJvY2Vzczogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBuZXdQcm9jZXNzUElEID0gJWksIGhhc1N1
c3BlbmRlZFBhZ2UgPSAlaSIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQsIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVByb3h5
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb250aW51ZU5hdmlnYXRp
b25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgbmV3UHJv
Y2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIG5ld1Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksICEhc3VzcGVuZGVkUGFnZVByb3h5KTsKICAgICBMT0coTG9hZGluZywgIkNvbnRp
bnVpbmcgbmF2aWdhdGlvbiAlIiBQUkl1NjQgIiAnJXMnIGluIGEgbmV3IHdlYiBwcm9jZXNzIiwg
bmF2aWdhdGlvbi5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbi5sb2dnaW5nU3RyaW5nKCkpOwog
CiAgICAgaWYgKG1fcHJvdmlzaW9uYWxQYWdlKSB7CkBAIC0zMDc1LDcgKzMwNzUsNyBAQCBTZXNz
aW9uU3RhdGUgV2ViUGFnZVByb3h5OjpzZXNzaW9uU3RhdGUoV1RGOjpGdW5jdGlvbjxib29sIChX
ZWJCYWNrRm9yd2FyZExpc3RJdAogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJv
eHk6OnJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlKFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUsIGJv
b2wgbmF2aWdhdGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVz
dG9yZUZyb21TZXNzaW9uU3RhdGU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRlOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgbV9zZXNzaW9uUmVzdG9yYXRpb25SZW5kZXJUcmVl
U2l6ZSA9IDA7CiAgICAgbV9oaXRSZW5kZXJUcmVlU2l6ZVRocmVzaG9sZCA9IGZhbHNlOwpAQCAt
MzkzMyw4ICszOTMzLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJgogICAgIGlmIChmcmFtZS0+
aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCiAgICAgICAgIG5hdmlnYXRpb24gPSBuYXZp
Z2F0aW9uU3RhdGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCk7CiAKLSAgICBMT0coTG9hZGlu
ZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBpZCAlaSBkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25J
RCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZy
YW1lSUQpOworICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHBy
b2Nlc3MgcGlkICVpIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gZnJhbWVJRCAl
IiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEICUiIFBSSXU2NCAiLCB1cmwgJXMiLCBtX3BhZ2VJRC50
b1VJbnQ2NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcmFtZUlELCBuYXZpZ2F0
aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQg
PSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAg
ICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCkBA
IC0zOTg2LDcgKzM5ODYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZgogdm9pZCBXZWJQYWdl
UHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRp
ZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1l
SUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgZnJhbWVJ
RCwgbmF2aWdhdGlvbklELCByZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBw
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlE
KTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAK
QEAgLTQwMTUsNyArNDAxNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVy
UmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp3aWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiB1cmwsIGRvdWJsZSBkZWxheSwgV2ViQ29yZTo6TG9ja0JhY2tG
b3J3YXJkTGlzdCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ3aWxs
UGVyZm9ybUNsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDI4LDcgKzQw
MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZvcm1DbGllbnRSZWRpcmVjdEZvckZy
YW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlEKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9y
RnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ2FuY2VsQ2xpZW50UmVk
aXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRv
VUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3Io
cGFnZUNsaWVudCgpKTsKIApAQCAtNDA3NSw4ICs0MDc1LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBT
ZWN1cmkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFt
ZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHByb3Zpc2lvbmFsVVJMLCBjb25zdCBSZXNvdXJj
ZUVycm9yJiBlcnJvciwgV2lsbENvbnRpbnVlTG9hZGluZyB3aWxsQ29udGludWVMb2FkaW5nLCBj
b25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykg
V2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdlYiBwcm9jZXNzIHBpZCAlaSBkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlzaW9uYWxVUkwgJXMiLCBtX3BhZ2VJRCwgcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIHByb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0
YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2Vi
UGFnZVByb3h5ICUiIFBSSXU2NCAiIGluIHdlYiBwcm9jZXNzIHBpZCAlaSBkaWRGYWlsUHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUgdG8gcHJvdmlzaW9uYWxVUkwgJXMiLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBwcm92aXNpb25hbFVSTC51dGY4KCku
ZGF0YSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3MsICJkaWRGYWlsUHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBkb21haW4gPSAlcywgY29kZSA9ICVkIiwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgZXJyb3Iu
ZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDE1NCw5ICs0MTU0
LDkgQEAgc3RhdGljIE9wdGlvblNldDxDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpG
bGFnPiBjaGVja0lmTmF2aWdhdGlvbkNvbnRhaW4KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENv
bW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlk
ZXIsIHVpbnQzMl90IG9wYXF1ZUZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmlj
YXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9w
dGlvbmFsPEhhc0luc2VjdXJlQ29udGVudD4gaGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgTE9HKExvYWRpbmcsICIoTG9hZGluZykgV2ViUGFnZVBy
b3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZpZ2F0aW9uICUiIFBS
SXU2NCwgbV9wYWdlSUQsIG5hdmlnYXRpb25JRCk7CisgICAgTE9HKExvYWRpbmcsICIoTG9hZGlu
ZykgV2ViUGFnZVByb3h5ICUiIFBSSXU2NCAiIGRpZENvbW1pdExvYWRGb3JGcmFtZSBpbiBuYXZp
Z2F0aW9uICUiIFBSSXU2NCwgbV9wYWdlSUQudG9VSW50NjQoKSwgbmF2aWdhdGlvbklEKTsKICAg
ICBMT0coQmFja0ZvcndhcmQsICIoQmFjay9Gb3J3YXJkKSBBZnRlciBsb2FkIGNvbW1pdCwgYmFj
ay9mb3J3YXJkIGxpc3QgaXMgbm93OiVzIiwgbV9iYWNrRm9yd2FyZExpc3QtPmxvZ2dpbmdTdHJp
bmcoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkQ29tbWl0TG9h
ZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1l
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENvbW1pdExvYWRG
b3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0
KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNs
aWVudCgpKTsKIApAQCAtNDI2OCw3ICs0MjY4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENv
bW1pdExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwg
bV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9y
IHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MjkyLDcgKzQyOTIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aQogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSkKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eTo6ZGlkRmluaXNo
TG9hZEZvckZyYW1lIC0gV2ViUGFnZVByb3h5ICVwIHdpdGggbmF2aWdhdGlvbklEICUiIFBSSXU2
NCAiIGRpZEZpbmlzaExvYWQiLCB0aGlzLCBuYXZpZ2F0aW9uSUQpOwotICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImRpZEZpbmlzaExvYWRGb3JGcmFtZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnBy
b2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIFBh
Z2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQzMzcsNyAr
NDMzNyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkK
IHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGYWlsTG9hZEZvckZy
YW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVy
cm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRGYWlsTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgZXJyb3Iu
ZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwogCiAgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDM3OSw3ICs0Mzc5
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgdWludDMyX3Qgb3BhcXVlU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFVS
TCYmIHVybCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3By
b2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
LCBmcmFtZUlEKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGll
bnQoKSk7CiAKQEAgLTQ1NDksNyArNDU0OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpiZWdpblNh
ZmVCcm93c2luZ0NoZWNrKGNvbnN0IFVSTCYsIGJvb2wsIFdlYkZyYW1lUG9saWN5TGlzdGVuCiAj
ZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELAotICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisgICAgTmF2aWdhdGlv
bkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIGZyYW1l
SW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCiAgICAgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RS
ZXNwb25zZSwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQog
ewogICAgIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChtX3Byb2Nl
c3MuY29weVJlZigpLCBmcmFtZUlELCBXVEZNb3ZlKGZyYW1lU2VjdXJpdHlPcmlnaW4pLCBpZGVu
dGlmaWVyLCBuYXZpZ2F0aW9uSUQsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLApAQCAt
NDU1Nyw3ICs0NTU3LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3IKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sCi0gICAgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYm
IGZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELAorICAgIFdlYkNvcmU6
OlBvbGljeUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0Rh
dGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3Jp
Z2luYXRpbmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmln
aW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
IHJlZGlyZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCB1aW50NjRf
dCBsaXN0ZW5lcklEKQogewpAQCAtNDU3Myw3ICs0NTczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luY1NoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3gKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELAotICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKKyAg
ICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9E
YXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LAogICAgIElQQzo6
Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25z
ZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgUmVmPFBvbGlj
eURlY2lzaW9uU2VuZGVyPiYmIHNlbmRlcikKIHsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiAtIE9yaWdpbmFsIFVSTCAlcywg
Y3VycmVudCB0YXJnZXQgVVJMICVzIiwgb3JpZ2luYWxSZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0
ZjgoKS5kYXRhKCksIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CkBAIC00
NzEzLDcgKzQ3MTMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbihSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2NlcwogICAgICAgICBpZiAoIWZy
b21BUEkgJiYgb3JpZ2luYXRpbmdGcmFtZSA9PSAmZnJhbWUpCiAgICAgICAgICAgICBzb3VyY2VG
cmFtZUluZm8gPSBkZXN0aW5hdGlvbkZyYW1lSW5mby5jb3B5UmVmKCk7CiAgICAgICAgIGVsc2Ug
aWYgKCFmcm9tQVBJKQotICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gQVBJOjpGcmFtZUlu
Zm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8g
cHJvY2Vzcy0+d2ViUGFnZShvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxscHRyKTsKKyAgICAgICAg
ICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdG
cmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2UoKm9yaWdp
bmF0aW5nUGFnZUlEKSA6IG51bGxwdHIpOwogCiAgICAgICAgIGF1dG8gdXNlckluaXRpYXRlZEFj
dGl2aXR5ID0gcHJvY2Vzcy0+dXNlckluaXRpYXRlZEFjdGl2aXR5KG5hdmlnYXRpb25BY3Rpb25E
YXRhLnVzZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICAgICAgICAgYm9vbCBzaG91bGRPcGVu
QXBwTGlua3MgPSAhbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uCkBAIC00Nzg2LDcgKzQ3ODYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9nRnJh
bWVOYXZpZ2F0aW9uKGNvbnN0IFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25zdCBVUkwmIHBhZwog
I2VuZGlmCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9E
YXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5m
b0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRp
bmdQYWdlSUQsCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFS
ZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGly
ZWN0UmVzcG9uc2UsCiAgICAgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJl
cGx5JiYgcmVwbHkpCiB7CkBAIC00ODA0LDcgKzQ4MDQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJhbWVJRCwgYm9v
bCBpcwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBm
cmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgaWRlbnRpZmllciwKLSAg
ICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmln
aW5hdGluZ1BhZ2VJRCwKKyAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9E
YXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsCiAgICAgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0
Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsCiAgICAg
Y29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYgcmVwbHkpCiB7CkBA
IC00OTM3LDcgKzQ5MzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGEoY29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgcwogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGFTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiBzdG9yZSwg
dWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhU2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VD
bGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ5NTcsNyArNDk1
Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlv
blVSTFN0cmluZywgdWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKExvYWRpbmcsICJkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdFNoYXJlZDogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAog
ICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQ5
ODQsNyArNDk4NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJl
Y3QoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3RTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiBwcm9jZXNzLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiBk
ZXN0aW5hdGlvblVSTFN0cmluZywgdWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3JtU2VydmVyUmVkaXJlY3Q6IHdlYlBJRCA9
ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRQZXJmb3Jt
U2VydmVyUmVkaXJlY3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgUGFnZUNs
aWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNTAzMiwxNCArNTAz
MiwxNCBAQCBXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpFUl9BRERJVElPTlNfNgogI2VuZGlmCiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEm
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzJiYgd2luZG93RmVhdHVyZXMs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQordm9pZCBX
ZWJQYWdlUHJveHk6OmNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdl
SUQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzJiYgd2luZG93RmVh
dHVyZXMsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQog
ewogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBtX3Byb2Nlc3MtPndlYkZyYW1lKG9yaWdp
bmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEKSk7Ci0gICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1l
SW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBt
X3Byb2Nlc3MtPndlYlBhZ2Uob3JpZ2luYXRpbmdQYWdlSUQpKTsKKyAgICBhdXRvIG9yaWdpbmF0
aW5nRnJhbWVJbmZvID0gQVBJOjpGcmFtZUluZm86OmNyZWF0ZShvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIG9yaWdpbmF0aW5nUGFnZUlEID8gbV9wcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGlu
Z1BhZ2VJRCkgOiBudWxscHRyKTsKICAgICBhdXRvIG1haW5GcmFtZVVSTCA9IG1fbWFpbkZyYW1l
ID8gbV9tYWluRnJhbWUtPnVybCgpIDogVVJMKCk7CiAgICAgYXV0byBjb21wbGV0aW9uSGFuZGxl
ciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIG1haW5GcmFtZVVSTCwg
cmVxdWVzdCwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0gKFJlZlB0cjxXZWJQYWdlUHJveHk+IG5l
d1BhZ2UpIG11dGFibGUgewogICAgICAgICBpZiAoIW5ld1BhZ2UpIHsKLSAgICAgICAgICAgIHJl
cGx5KDAsIFdURjo6bnVsbG9wdCk7CisgICAgICAgICAgICByZXBseShXVEY6Om51bGxvcHQsIFdU
Rjo6bnVsbG9wdCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNTg0OCw3
ICs1ODQ4LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQYWdlUHJveHk6Om1lc3NhZ2VTZW5kZXJD
b25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVy
RGVzdGluYXRpb25JRCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFnZUlEOworICAgIHJldHVy
biBtX3BhZ2VJRC50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dmFsdWVDaGFu
Z2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZElu
ZGV4KQpAQCAtNjcyOSw3ICs2NzI5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lU2V0TGFy
Z2VzdEZyYW1lQ2hhbmdlZCh1aW50NjRfdCBmcmFtZUlEKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0gJWks
IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3Bh
Z2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJl
Y29tZVVucmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlm
ICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjc0MSw3ICs2NzQx
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoKQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVSZXNwb25z
aXZlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJ
ZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nl
c3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAwN2M1NTI1YTliYmY0NTcz
Zjc0ZjY4MjhkOTEzMDAxMTc4Mzg5OGQwLi40YjAwM2Q2ODlkODgyZmYyZGNhNTY2MmRmNTE3YTVi
NjJhYTdiMDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODIs
NiArODIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTGF5b3V0U2l6ZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWVkaWFQbGF5YmFja1RhcmdldENvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01l
ZGlhUHJvZHVjZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bVNjcmVlbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRl
cmFuY2UuaD4KQEAgLTM4MiwxNCArMzgzLDE0IEBAIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1Ymxp
YyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U+CiAjZW5kaWYKICAgICAs
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYWdlUHJveHk+IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkm
LCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKKyAgICBz
dGF0aWMgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlKFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJv
eHkmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYpOwogICAgIHZpcnR1YWwgfldlYlBhZ2VQcm94eSgpOwogCiAgICAgc3RhdGljIHZvaWQgZm9y
TW9zdFZpc2libGVXZWJQYWdlSWZBbnkoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViUGFnZVByb3h5Kik+
JiYpOwogCiAgICAgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbigp
IGNvbnN0OwogCi0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7
IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VJRDsgfQogCiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3Q7CiAKQEAg
LTE1MDUsNyArMTUwNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZE5hdmlnYXRlV2l0aE5hdmln
YXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIGNvbnN0IFdlYk5hdmlnYXRp
b25EYXRhU3RvcmUmLCB1aW50NjRfdCBmcmFtZUlEKTsKICAgICB2b2lkIGRpZENoYW5nZVByb3Zp
c2lvbmFsVVJMRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBVUkwmJik7CiAgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4m
JiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAotICAgICAgICB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIEZyYW1lSW5mb0Rh
dGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwKKyAg
ICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFt
ZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGlu
Z1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3Qs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLAogICAgICAgICBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsCiAgICAgICAgIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBjb25z
dCBTdHJpbmcmIGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYpOwpAQCAtMTUxNCw3ICsxNTE1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZFJl
cXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBBUEk6Ok5h
dmlnYXRpb24mLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgV2ViQ29yZTo6U2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYg
PSBXVEY6Om51bGxvcHQpOwogICAgIHZvaWQgYmFja0ZvcndhcmRHb1RvSXRlbVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+
JiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmNTaGFyZWQo
UmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgdWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFt
ZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRl
bnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAot
ICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAg
ICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYg
cmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYzo6RGVsYXllZFJlcGx5JiYpOwog
I2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlkUmVxdWVzdFBhc3N3b3JkRm9yUXVpY2tM
b29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25z
dCBTdHJpbmcmIGZpbGVOYW1lKTsKQEAgLTE1NTQsNyArMTU1NSw3IEBAIFdFQlBBR0VQUk9YWV9M
T0FET1BUSU1JWkVSX0FERElUSU9OU18xCiAgICAgdm9pZCByZXF1ZXN0U3RvcmFnZVNwYWNlKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1
cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50
RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAKIHByaXZhdGU6Ci0gICAgV2ViUGFnZVByb3h5KFBh
Z2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBh
Z2VDb25maWd1cmF0aW9uPiYmKTsKKyAgICBXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlBy
b2Nlc3NQcm94eSYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWY8QVBJOjpQYWdlQ29uZmln
dXJhdGlvbj4mJik7CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIAogICAgIHZvaWQg
bm90aWZ5UHJvY2Vzc1Bvb2xUb1ByZXdhcm0oKTsKQEAgLTE2MzAsMTMgKzE2MzEsMTMgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCk7CiAKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSYmLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsCi0gICAg
ICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAorICAgICAg
ICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmln
aW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJl
cXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4m
Jik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0
X3QgZnJhbWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0
Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCB1aW50NjRfdCBsaXN0
ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVp
bnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCB1
aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1E
YXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKICAgICAg
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVz
ZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYsCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJp
bmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAg
LTE2NTgsNyArMTY1OSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRVcGRhdGVIaXN0b3J5VGl0
bGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIHVpbnQ2NF90IGZyYW1l
SUQpOwogCiAgICAgLy8gVUkgY2xpZW50Ci0gICAgdm9pZCBjcmVhdGVOZXdQYWdlKGNvbnN0IEZy
YW1lSW5mb0RhdGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5ZWRSZXBs
eSYmKTsKKyAgICB2b2lkIGNyZWF0ZU5ld1BhZ2UoY29uc3QgRnJhbWVJbmZvRGF0YSYsIE9wdGlv
bmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzJiYsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OkRlbGF5
ZWRSZXBseSYmKTsKICAgICB2b2lkIHNob3dQYWdlKCk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0
QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
JiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFs
ZXJ0OjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0Q29uZmlybSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBjb25zdCBT
dHJpbmcmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2NyaXB0Q29uZmlybTo6RGVs
YXllZFJlcGx5JiYpOwpAQCAtMjMzMCw3ICsyMzMxLDcgQEAgV0VCUEFHRVBST1hZX0xPQURPUFRJ
TUlaRVJfQURESVRJT05TXzIKICAgICBSZWZQdHI8V2ViQ29yZTo6VmFsaWRhdGlvbkJ1YmJsZT4g
bV92YWxpZGF0aW9uQnViYmxlOwogI2VuZGlmCiAKLSAgICBjb25zdCB1aW50NjRfdCBtX3BhZ2VJ
RDsKKyAgICBjb25zdCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsKIAogICAgIGJv
b2wgbV9pc1BhZ2VTdXNwZW5kZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hZGRzVmlzaXRlZExp
bmtzIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDQwNDZlMmUyYjI0NjIyOTNlMjlmYTQ1ODBmMDcxNGE5MGMzOTk4
MzMuLmE4NDk4NDdiNTM1ZDI2ZTE0Y2JkMjgwMjBiMzc5YTdmMTc1N2Q3MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIyLDcg
KzIyLDcgQEAKIAogbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICAjIFVJIG1lc3NhZ2Vz
Ci0gICAgQ3JlYXRlTmV3UGFnZShzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMgd2lu
ZG93RmVhdHVyZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRp
b25BY3Rpb25EYXRhKSAtPiAodWludDY0X3QgbmV3UGFnZUlELCBPcHRpb25hbDxXZWJLaXQ6Oldl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+IG5ld1BhZ2VQYXJhbWV0ZXJzKSBTeW5jaHJvbm91cwor
ICAgIENyZWF0ZU5ld1BhZ2Uoc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5h
dGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHN0cnVjdCBXZWJD
b3JlOjpXaW5kb3dGZWF0dXJlcyB3aW5kb3dGZWF0dXJlcywgc3RydWN0IFdlYktpdDo6TmF2aWdh
dGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEpIC0+IChPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gbmV3UGFnZUlELCBPcHRpb25hbDxXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnM+IG5ld1BhZ2VQYXJhbWV0ZXJzKSBTeW5jaHJvbm91cwogICAgIFNob3dQ
YWdlKCkKICAgICBDbG9zZVBhZ2UoYm9vbCBzdG9wUmVzcG9uc2l2ZW5lc3NUaW1lcikKICAgICBS
dW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBTdHJpbmcgbWVzc2FnZSkgLT4gKCkg
U3luY2hyb25vdXMKQEAgLTEwNCw4ICsxMDQsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkg
ewogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMKICAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVj
a0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBTdHJpbmcgZG93bmxvYWRBdHRyaWJ1dGUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVu
dGlmaWVyIHBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1
Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3Ry
dWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2
NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJl
ZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJl
c3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQot
ICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQs
IGJvb2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJh
bWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNo
ZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJh
bWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5n
UGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0
Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6
OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBv
bGljeUNoZWNrSWRlbnRpZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElE
IGRvd25sb2FkSUQsIE9wdGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0
ZVBvbGljaWVzKSBTeW5jaHJvbm91cworICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBw
b2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktp
dDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJL
aXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlIHJlcXVlc3RCb2R5LCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlZGlyZWN0UmVzcG9uc2UsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEsIHVpbnQ2
NF90IGxpc3RlbmVySUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmMo
dWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgc3RydWN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0
cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBz
dHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0
aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3BvbnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJE
YXRhKSAtPiAoV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNrSWRlbnRp
ZmllciwgZW51bTp1aW50OF90IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVp
bnQ2NF90IG5ld05hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIE9w
dGlvbmFsPFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YT4gd2Vic2l0ZVBvbGljaWVzKSBTeW5j
aHJvbm91cwogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFt
ZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmln
aW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIs
IHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBVbmFibGVU
b0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlci5jcHAKaW5kZXggYzgw
MjNkZTQxNjE2NDc1MDEwZjQyODIzOWE3YmVkMDdiMTdmODVkNy4uZjQ5NzE1MWQ3NWM1ZTZmMWYy
ODZhYWE3OWU4YTY0N2M2YTlmMzZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2
b2lkIFdlYlByb2Nlc3NMaWZldGltZU9ic2VydmVyOjphZGRXZWJQYWdlKFdlYlBhZ2VQcm94eSYg
d2ViUGFnZVByb3h5LCBXZWJQcm9jZQogICAgIFJFTEVBU0VfQVNTRVJUKCFwcm9jZXNzLmlzUHJl
d2FybWVkKCkpOwogCiAgICAgaWYgKG1fcHJvY2Vzc2VzLmFkZCgmcHJvY2VzcykuaXNOZXdFbnRy
eSkgewotICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRp
bWVPYnNlcnZlcjo6YWRkV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
dGhpcywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkp
OworICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVP
YnNlcnZlcjo6YWRkV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhp
cywgcHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkudG9V
SW50NjQoKSk7CiAgICAgICAgIHdlYlByb2Nlc3NXaWxsT3BlbkNvbm5lY3Rpb24ocHJvY2Vzcywg
KnByb2Nlc3MuY29ubmVjdGlvbigpKTsKICAgICB9CiAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZlcjo6cmVtb3ZlV2ViUGFnZShXZWJQYWdlUHJveHkmIHdl
YlBhZ2VQcm94eSwgV2ViUHIKICAgICB3ZWJQYWdlRGlkQ2xvc2VDb25uZWN0aW9uKHdlYlBhZ2VQ
cm94eSwgKnByb2Nlc3MuY29ubmVjdGlvbigpKTsKIAogICAgIGlmIChtX3Byb2Nlc3Nlcy5yZW1v
dmUoJnByb2Nlc3MpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICIlcCAtIFdlYlBy
b2Nlc3NMaWZldGltZU9ic2VydmVyOjpyZW1vdmVXZWJQYWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQ
cm94eS5wYWdlSUQoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICIlcCAtIFdlYlBy
b2Nlc3NMaWZldGltZU9ic2VydmVyOjpyZW1vdmVXZWJQYWdlOiB3ZWJQSUQgPSAlaSwgcGFnZUlE
ID0gJSIgUFJJdTY0LCB0aGlzLCBwcm9jZXNzLnByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlBhZ2VQ
cm94eS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICAgICAgd2ViUHJvY2Vzc0RpZENsb3NlQ29u
bmVjdGlvbihwcm9jZXNzLCAqcHJvY2Vzcy5jb25uZWN0aW9uKCkpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCA5YmZiZmRlMzA3ZTY0
YjNlNmNjZWM2YmNjYjJjNGRmZDdiNGI5YTZhLi5lY2Q4ZDkwNWUwMTVjZjI1MDVkNTk5YWY4Y2Jh
ZWQ5MTM1MDE2MjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wu
Y3BwCkBAIC0xMjk2LDkgKzEyOTYsOSBAQCBib29sIFdlYlByb2Nlc3NQb29sOjptYXlIYXZlUmVn
aXN0ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFdlYnNpdGVEYXRhU3RvcmUmIHN0bwogfQogI2Vu
ZGlmCiAKLXZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9y
ZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKK3ZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkKIHsKLSAgICBhdXRvIHJlc3Vs
dCA9IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5hZGQoZGF0YVN0b3JlLnNlc3Npb25JRCgpLCBIYXNo
U2V0PHVpbnQ2NF90PigpKS5pdGVyYXRvci0+dmFsdWUuYWRkKHBhZ2VJRCk7CisgICAgYXV0byBy
ZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJRHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwg
SGFzaFNldDxQYWdlSWRlbnRpZmllcj4oKSkuaXRlcmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOwog
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICBhdXRv
IHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsKQEAgLTEzMTYsNyArMTMxNiw3IEBA
IHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50
NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhCiAgICAgfQogfQogCi12b2lkIFdlYlByb2Nlc3NQb29s
OjpwYWdlRW5kVXNpbmdXZWJzaXRlRGF0YVN0b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURh
dGFTdG9yZSYgZGF0YVN0b3JlKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vi
c2l0ZURhdGFTdG9yZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRh
dGFTdG9yZSkKIHsKICAgICBhdXRvIHNlc3Npb25JRCA9IGRhdGFTdG9yZS5zZXNzaW9uSUQoKTsK
ICAgICBhdXRvIGl0ZXJhdG9yID0gbV9zZXNzaW9uVG9QYWdlSURzTWFwLmZpbmQoc2Vzc2lvbklE
KTsKQEAgLTIyMTEsNyArMjIxMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnJlaW5zdGF0ZU5l
dHdvcmtQcm9jZXNzQXNzZXJ0aW9uU3RhdGUoTmV0d29ya1Byb2Nlc3NQcm94eSYKIH0KIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLVNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIFdlYlBy
b2Nlc3NQb29sOjpzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5RnJvbVBhZ2VJRCh1aW50NjRfdCBw
YWdlSUQpIGNvbnN0CitTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6
c2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQoUGFnZUlkZW50aWZpZXIgcGFnZUlE
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50LgogICAgIGZvciAo
YXV0byogc2VydmljZVdvcmtlclByb2Nlc3MgOiBtX3NlcnZpY2VXb3JrZXJQcm9jZXNzZXMudmFs
dWVzKCkpIHsKQEAgLTI1MjAsNyArMjUyMCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OmNsZWFy
Q3VycmVudE1vZGlmaWVyU3RhdGVGb3JUZXN0aW5nKCkKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFdlYlByb2Nlc3NQb29sOjpkaWRDb21taXRDcm9zc1Np
dGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9E
b21haW4sIE9wdGlvblNldDxDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiBu
YXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQ
b29sOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxDcm9zc1NpdGVOYXZpZ2F0aW9u
RGF0YVRyYW5zZmVyOjpGbGFnPiBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgaWYgKCFtX25ldHdvcmtQcm9jZXNzKQogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCBkMGE5MjM2NzJi
YmQyN2RhODk0ZGI2YWRkNDhiYzA4ODFjZTNjNWMxLi4xZDI5ODI1YzgzNGYxMDRlZDE5NzlhNDAw
MWEyNTBhZWE2YjZlNjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKQEAgLTE1MCw2ICsxNTAsMTggQEAgcHVibGljOgogICAgIHZvaWQgYWRkTWVzc2FnZVJlY2Vp
dmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRl
c3RpbmF0aW9uSUQsIElQQzo6TWVzc2FnZVJlY2VpdmVyJik7CiAgICAgdm9pZCByZW1vdmVNZXNz
YWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSk7CiAg
ICAgdm9pZCByZW1vdmVNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2Fn
ZVJlY2VpdmVyTmFtZSwgdWludDY0X3QgZGVzdGluYXRpb25JRCk7CisgICAgCisgICAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CisgICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdS
ZWZlcmVuY2UgbWVzc2FnZVJlY2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5h
dGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBh
ZGRNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJ
bnQ2NCgpLCByZWNlaXZlcik7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PgorICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1l
c3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAg
ICB7CisgICAgICAgIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBk
ZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgIH0KIAogICAgIGJvb2wgZGlzcGF0Y2hNZXNz
YWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIGJvb2wgZGlzcGF0Y2hT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpOwpAQCAtMTk1LDggKzIwNyw4IEBAIHB1YmxpYzoKIAogICAgIFJl
ZjxXZWJQYWdlUHJveHk+IGNyZWF0ZVdlYlBhZ2UoUGFnZUNsaWVudCYsIFJlZjxBUEk6OlBhZ2VD
b25maWd1cmF0aW9uPiYmKTsKIAotICAgIHZvaWQgcGFnZUJlZ2luVXNpbmdXZWJzaXRlRGF0YVN0
b3JlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vic2l0ZURhdGFTdG9yZSYpOwotICAgIHZvaWQgcGFnZUVu
ZFVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUm
KTsKKyAgICB2b2lkIHBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYpOworICAgIHZvaWQgcGFnZUVuZFVzaW5nV2Vi
c2l0ZURhdGFTdG9yZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vic2l0ZURhdGFTdG9yZSYp
OwogICAgIGJvb2wgaGFzUGFnZXNVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURhdGFTdG9y
ZSYpIGNvbnN0OwogCiAgICAgY29uc3QgU3RyaW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25z
dCB7IHJldHVybiBtX2NvbmZpZ3VyYXRpb24tPmluamVjdGVkQnVuZGxlUGF0aCgpOyB9CkBAIC0z
NjcsNyArMzc5LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKE5l
dHdvcmtQcm9jZXNzUHJveHkmLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmLCBPcHRpb25h
bDxQQUw6OlNlc3Npb25JRD4pOwotICAgIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkqIHNlcnZp
Y2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3Q7Cisg
ICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eSogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eUZy
b21QYWdlSUQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIGNvbnN0IEhhc2hN
YXA8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkq
PiYgc2VydmljZVdvcmtlclByb3hpZXMoKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2VXb3JrZXJQ
cm9jZXNzZXM7IH0KICAgICB2b2lkIHNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2Vydmlj
ZVdvcmtlcihib29sIGFsbG93cykgeyBtX2FsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2Vydmlj
ZVdvcmtlciA9IGFsbG93czsgfQogICAgIGJvb2wgYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JT
ZXJ2aWNlV29ya2VyKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZv
clNlcnZpY2VXb3JrZXI7IH0KQEAgLTQ5Niw3ICs1MDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
bGVhckN1cnJlbnRNb2RpZmllclN0YXRlRm9yVGVzdGluZygpOwogCiAjaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRo
RGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiYgZnJvbURvbWFpbiwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIHRvRG9t
YWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6
RmxhZz4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0
b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNm
ZXI6OkZsYWc+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAjZW5kaWYKIAogI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQpAQCAtNzYyLDcgKzc3NCw3IEBAIHByaXZhdGU6CiAg
ICAgfTsKICAgICBQYXRocyBtX3Jlc29sdmVkUGF0aHM7CiAKLSAgICBIYXNoTWFwPFBBTDo6U2Vz
c2lvbklELCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV9zZXNzaW9uVG9QYWdlSURzTWFwOworICAgIEhh
c2hNYXA8UEFMOjpTZXNzaW9uSUQsIEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+PiBt
X3Nlc3Npb25Ub1BhZ2VJRHNNYXA7CiAgICAgUnVuTG9vcDo6VGltZXI8V2ViUHJvY2Vzc1Bvb2w+
IG1fc2VydmljZVdvcmtlclByb2Nlc3Nlc1Rlcm1pbmF0aW9uVGltZXI7CiAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAKaW5kZXggODIwMzQ2NWNiMjgxNGQyY2ZjMzI4ZmE3OTQ2NjJhMjBlMDJiNDMyYy4uNjc4MzFl
MjA3ODA5YzBlYzViNjI4YWVjMGQzOTExMTgzNWYzMTBmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xMTAsMTAgKzExMCw5IEBAIFdlYlByb2Nl
c3NQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzRm9ySWRlbnRpZmllcihQcm9jZXNzSWRl
bnRpZmllciBpZGVudGlmCiAgICAgcmV0dXJuIGFsbFByb2Nlc3NlcygpLmdldChpZGVudGlmaWVy
KTsKIH0KIAotdWludDY0X3QgV2ViUHJvY2Vzc1Byb3h5OjpnZW5lcmF0ZVBhZ2VJRCgpCitQYWdl
SWRlbnRpZmllciBXZWJQcm9jZXNzUHJveHk6OmdlbmVyYXRlUGFnZUlEKCkKIHsKLSAgICBzdGF0
aWMgdWludDY0X3QgdW5pcXVlUGFnZUlEOwotICAgIHJldHVybiArK3VuaXF1ZVBhZ2VJRDsKKyAg
ICByZXR1cm4gUGFnZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7CiB9CiAKIHN0YXRpYyBXZWJQcm9j
ZXNzUHJveHk6OldlYlBhZ2VQcm94eU1hcCYgZ2xvYmFsUGFnZU1hcCgpCkBAIC0zMzAsNyArMzI5
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNodXREb3duKCkKICAgICBtX3Byb2Nlc3NQb29s
LT5kaXNjb25uZWN0UHJvY2Vzcyh0aGlzKTsKIH0KIAotV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNz
UHJveHk6OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKQorV2ViUGFnZVByb3h5KiBXZWJQcm9jZXNz
UHJveHk6OndlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBnbG9i
YWxQYWdlTWFwKCkuZ2V0KHBhZ2VJRCk7CiB9CkBAIC0zNjMsNyArMzYyLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpP
YmplY3QqIG1lc3NhZ2UKIAogUmVmPFdlYlBhZ2VQcm94eT4gV2ViUHJvY2Vzc1Byb3h5OjpjcmVh
dGVXZWJQYWdlKFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmIHBhZ2VDb25maWd1cmF0aW9uKQogewotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGdlbmVy
YXRlUGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOwogICAgIFJl
ZjxXZWJQYWdlUHJveHk+IHdlYlBhZ2UgPSBXZWJQYWdlUHJveHk6OmNyZWF0ZShwYWdlQ2xpZW50
LCAqdGhpcywgcGFnZUlELCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAKICAgICBhZGRF
eGlzdGluZ1dlYlBhZ2Uod2ViUGFnZS5nZXQoKSwgQmVnaW5zVXNpbmdEYXRhU3RvcmU6Olllcyk7
CkBAIC00MTUsMTAgKzQxNCwxMCBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlV2ViUGFn
ZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIEVuZHNVc2luZ0RhdGFTdG9yZSBlbgogICAgIG1heWJl
U2h1dERvd24oKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUsIHVpbnQ2NF90IHBhZ2VJ
RCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVk
TGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAg
ICAgYXV0byYgdXNlcnMgPSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmVuc3VyZSgmdmlz
aXRlZExpbmtTdG9yZSwgW10gewotICAgICAgICByZXR1cm4gSGFzaFNldDx1aW50NjRfdD4geyB9
OworICAgICAgICByZXR1cm4gSGFzaFNldDxQYWdlSWRlbnRpZmllcj4geyB9OwogICAgIH0pLml0
ZXJhdG9yLT52YWx1ZTsKIAogICAgIEFTU0VSVCghdXNlcnMuY29udGFpbnMocGFnZUlEKSk7CkBA
IC00MjgsNyArNDI3LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFkZFZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUKICAgICAgICAgdmlzaXRl
ZExpbmtTdG9yZS5hZGRQcm9jZXNzKCp0aGlzKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6
OnJlbW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5r
U3RvcmUsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVWaXNp
dGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCBQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgYXV0byBpdCA9IG1fdmlzaXRlZExpbmtTdG9yZXNX
aXRoVXNlcnMuZmluZCgmdmlzaXRlZExpbmtTdG9yZSk7CiAgICAgaWYgKGl0ID09IG1fdmlzaXRl
ZExpbmtTdG9yZXNXaXRoVXNlcnMuZW5kKCkpCkBAIC01NDEsNyArNTQwLDcgQEAgYm9vbCBXZWJQ
cm9jZXNzUHJveHk6OmZ1bGxLZXlib2FyZEFjY2Vzc0VuYWJsZWQoKQogfQogI2VuZGlmCiAKLWJv
b2wgV2ViUHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWludDY0X3QgcGFn
ZUlEKSBjb25zdAorYm9vbCBXZWJQcm9jZXNzUHJveHk6Omhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJ
RChQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAgICAgZm9yIChhdXRvKiBwcm92aXNp
b25hbFBhZ2UgOiBtX3Byb3Zpc2lvbmFsUGFnZXMpIHsKICAgICAgICAgaWYgKHByb3Zpc2lvbmFs
UGFnZS0+cGFnZSgpLnBhZ2VJRCgpID09IHBhZ2VJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggOWE2Y2JmMWY0NjA5OWE1ZjZmOWZhMmYwZWU4YTZmYTJj
ODE4MTZhOC4uYWQzZjAzOGRkNjU0NjVjMDQ4OTk3OWI2N2U1ODVjODU2ZjkyZGM0YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQ
b3J0SWRlbnRpZmllci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkU3RyaW5nSGFzaC5o
PgpAQCAtOTcsNyArOTgsNyBAQCBlbnVtIGNsYXNzIEFsbG93UHJvY2Vzc0NhY2hpbmcgeyBObywg
WWVzIH07CiBjbGFzcyBXZWJQcm9jZXNzUHJveHkgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5LCBwdWJsaWMgUmVzcG9uc2l2ZW5lc3NUaW1lcjo6Q2xpZW50LCBwdWJsaWMgVGhyZWFkU2Fm
ZVJlZkNvdW50ZWQ8V2ViUHJvY2Vzc1Byb3h5PiwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBy
b2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViRnJhbWVQcm94eT4+IFdlYkZy
YW1lUHJveHlNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBXZWJQYWdlUHJveHkq
PiBXZWJQYWdlUHJveHlNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCBXZWJQYWdlUHJveHkqPiBXZWJQYWdlUHJveHlNYXA7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPHVpbnQ2NF90LCBSZWZQdHI8QVBJOjpVc2VySW5pdGlhdGVkQWN0aW9uPj4gVXNlckluaXRp
YXRlZEFjdGlvbk1hcDsKIAogICAgIGVudW0gY2xhc3MgSXNQcmV3YXJtZWQgewpAQCAtMTI4LDcg
KzEyOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFdlYnNpdGVEYXRhU3RvcmUoV2Vic2l0ZURh
dGFTdG9yZSYpOwogCiAgICAgc3RhdGljIFdlYlByb2Nlc3NQcm94eSogcHJvY2Vzc0ZvcklkZW50
aWZpZXIoV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIpOwotICAgIHN0YXRpYyBXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3
ZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiBj
cmVhdGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CiAKICAgICBlbnVtIGNsYXNzIEJlZ2luc1VzaW5nRGF0YVN0b3JlIDogYm9vbCB7IE5vLCBZZXMg
fTsKQEAgLTE0OSwxMCArMTUwLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgYm9vbCBpc1Nl
cnZpY2VXb3JrZXJQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQg
ZGlkQ3JlYXRlV2ViUGFnZUluUHJvY2Vzcyh1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgZGlk
Q3JlYXRlV2ViUGFnZUluUHJvY2VzcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKLSAgICB2
b2lkIGFkZFZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBw
YWdlSUQpOwotICAgIHZvaWQgcmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtT
dG9yZSYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0b3JlVXNl
cihWaXNpdGVkTGlua1N0b3JlJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQg
cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgYWRkV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkoV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzJik7CiAgICAgdm9pZCBkaWREZXN0cm95V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHko
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkmKTsKQEAgLTMxMSw3ICszMTIsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3ZWJQYWdlTWVkaWFTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHkmKTsK
IAogcHJvdGVjdGVkOgotICAgIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVBhZ2VJRCgpOworICAg
IHN0YXRpYyBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBnZW5lcmF0ZVBhZ2VJRCgpOwogICAgIFdl
YlByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIFdlYnNpdGVEYXRhU3RvcmUqLCBJc1ByZXdh
cm1lZCk7CiAKICAgICAvLyBBdXhpbGlhcnlQcm9jZXNzUHJveHkKQEAgLTM1NCw3ICszNTUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkQ3JlYXRlQ29udGV4dEZvclZpc2liaWxpdHlQcm9wYWdh
dGlvbihMYXllckhvc3RpbmdDb250ZXh0SUQpOwogI2VuZGlmCiAKLSAgICBib29sIGhhc1Byb3Zp
c2lvbmFsUGFnZVdpdGhJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIGJvb2wgaGFzUHJv
dmlzaW9uYWxQYWdlV2l0aElEKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBjb25zdDsKICAgICBi
b29sIGlzQWxsb3dlZFRvVXBkYXRlQmFja0ZvcndhcmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0mKSBjb25zdDsKIAogICAgIC8vIFBsdWdpbnMKQEAgLTQ0Nyw3ICs0NDgsNyBAQCBwcml2YXRl
OgogICAgIEhhc2hTZXQ8UHJvdmlzaW9uYWxQYWdlUHJveHkqPiBtX3Byb3Zpc2lvbmFsUGFnZXM7
CiAgICAgVXNlckluaXRpYXRlZEFjdGlvbk1hcCBtX3VzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAK
LSAgICBIYXNoTWFwPFZpc2l0ZWRMaW5rU3RvcmUqLCBIYXNoU2V0PHVpbnQ2NF90LyogcGFnZUlE
ICovPj4gbV92aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2VyczsKKyAgICBIYXNoTWFwPFZpc2l0ZWRM
aW5rU3RvcmUqLCBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gbV92aXNpdGVkTGlu
a1N0b3Jlc1dpdGhVc2VyczsKICAgICBIYXNoU2V0PFdlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5Kj4gbV93ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzOwogCiAgICAgaW50IG1fbnVt
YmVyT2ZUaW1lc1N1ZGRlblRlcm1pbmF0aW9uV2FzRGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4IGUzNTUzMTllYTRjNGVl
NjUxYzZiZWRmN2M4NmZiZGQyMWYyOWRjMjMuLjdkNTc1YTQwNGIwNDViOTFhZDdhYzhlNjY3NjBk
MDhiZTM4YjkxZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVt
ZUhhbmRsZXIuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVy
Ojp0YXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smIHRhc2spCiAgICAgcGxhdGZvcm1UYXNr
Q29tcGxldGVkKHRhc2spOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJlbW92ZVRh
c2tGcm9tUGFnZU1hcCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCkKK3ZvaWQgV2Vi
VVJMU2NoZW1lSGFuZGxlcjo6cmVtb3ZlVGFza0Zyb21QYWdlTWFwKFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgdWludDY0X3QgdGFza0lEKQogewogICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rhc2tzQnlQ
YWdlSWRlbnRpZmllci5maW5kKHBhZ2VJRCk7CiAgICAgQVNTRVJUKGl0ZXJhdG9yICE9IG1fdGFz
a3NCeVBhZ2VJZGVudGlmaWVyLmVuZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCA4OTk3NmM2MWY4M2Q1MmI4MWYyYzQ0MDdjMmM1YmJk
NzNiZjJhZTQ5Li5iN2FmMDc1OTc1ZjMyYjhhYjg1ZTg4ZDFiYWZmYjA1YTE3MDVhN2JhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCkBAIC02Niwx
MyArNjYsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1TdG9wVGFzayhX
ZWJQYWdlUHJveHkmLCBXZWJVUkxTY2hlbWVUYXNrJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBw
bGF0Zm9ybVRhc2tDb21wbGV0ZWQoV2ViVVJMU2NoZW1lVGFzayYpID0gMDsKIAotICAgIHZvaWQg
cmVtb3ZlVGFza0Zyb21QYWdlTWFwKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgdGFza0lEKTsK
KyAgICB2b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1hcChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
dWludDY0X3QgdGFza0lEKTsKICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JUYXNrSWRl
bnRpZmllcih1aW50NjRfdCkgY29uc3Q7CiAKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAK
ICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8V2ViVVJMU2NoZW1lVGFzaz4+IG1fdGFza3M7Ci0g
ICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaFNldDx1aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVu
dGlmaWVyOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEhhc2hTZXQ8dWlu
dDY0X3Q+PiBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllcjsKICAgICAKICAgICBTeW5jTG9hZENvbXBs
ZXRpb25IYW5kbGVyIG1fc3luY0xvYWRDb21wbGV0aW9uSGFuZGxlcjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IGI4NzIwNzNiZDI3ODFmZjA5Yjli
ZjI1MzMxNjJjMDVhYTY5YzAzZWIuLmE5N2YxNjBjZjI1NTZmYTEzOGY1MmJkODE1ZjIzZThlYTZj
N2VhNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRh
c2suaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKQEAg
LTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFzaz4g
Y3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCBXZWJQcm9jZXNzUHJv
eHkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3lu
Y0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KLSAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRlbnRpZmllcjsgfQogICAgIFdlYlBy
b2Nlc3NQcm94eSogcHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fcHJvY2Vzcy5nZXQoKTsgfQog
CiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXF1ZXN0OyB9CkBAIC04Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgV2ViUGFn
ZVByb3h5KiBtX3BhZ2U7CiAgICAgUmVmUHRyPFdlYlByb2Nlc3NQcm94eT4gbV9wcm9jZXNzOwog
ICAgIHVpbnQ2NF90IG1faWRlbnRpZmllcjsKLSAgICB1aW50NjRfdCBtX3BhZ2VJZGVudGlmaWVy
OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlkZW50aWZpZXI7CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fcmVxdWVzdDsKICAgICBib29sIG1fc3RvcHBlZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3Jlc3BvbnNlU2VudCB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3Bw
CmluZGV4IDRmZDAyMTI2ODE3MDVhY2Y0ZjljODBiZTA4ZDNiYzA0YTRmOGU1N2MuLjlhMDVlYThi
ZjY2MWFiNDM2NDlkNTE5MDc1M2FhYzhlOTA2ZmQ1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCkBAIC0x
NTY1LDcgKzE1NjUsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNldE5vdGlmeVBhZ2VzV2hl
blRlbGVtZXRyeVdhc0NhcHR1cmVkKGJvb2wgdmFsdWUsIENvbXBsZQogICAgICAgICBwcm9jZXNz
UG9vbC0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKS5zZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlX
YXNDYXB0dXJlZChtX3Nlc3Npb25JRCwgdmFsdWUsIFtwcm9jZXNzUG9vbCwgY2FsbGJhY2tBZ2dy
ZWdhdG9yID0gY2FsbGJhY2tBZ2dyZWdhdG9yLmNvcHlSZWYoKV0geyB9KTsKIH0KIAotdm9pZCBX
ZWJzaXRlRGF0YVN0b3JlOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0QWxsU3RvcmFnZUFj
Y2Vzc0VudHJpZXMoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
YXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogICAgIGlm
ICghd2ViUGFnZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCmluZGV4IDY0MmUzMzA5ZDA3NjI0M2UzN2Q4ZTFkMjc0
NjViMTFmNzEyZGIwYzguLjgyMmMzZmM3NjM3ZDdjNWViMDAzYzY5Y2U5NDc0NWJkMzgyNTkzZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0
b3JlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9EZXZpY2VPcmllbnRhdGlvbk9yTW90aW9uUGVybWlzc2lvblN0YXRlLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkhhc2gu
aD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CkBAIC0xMzUsNyArMTM2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgZHVtcFJlc291cmNlTG9hZFN0YXRpc3RpY3MoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBsb2dUZXN0aW5nRXZlbnQoY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVVJMJiwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRy
aWVzKHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5n
PiYmIGRvbWFpbnMpPiYmKTsKKyAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJp
bmc+JiYgZG9tYWlucyk+JiYpOwogICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0
IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgaXNQcmV2
YWxlbnRSZXNvdXJjZShjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
KTsKICAgICB2b2lkIGlzUmVnaXN0ZXJlZEFzUmVkaXJlY3RpbmdUbyhjb25zdCBVUkwmIGhvc3RS
ZWRpcmVjdGVkRnJvbSwgY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZFRvLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2F5bGFuZENvbXBvc2l0b3IuY3BwCmluZGV4IGRjOGQ1M2NhZmJiNjNiMTZhNzhjYTY4NWRkNzRm
YWI3YzQxZDJhY2YuLmFjZDYwYTQ0YzFmMDEyMjVlNjE3MjgwNmYxOTdkNTY1YjVmZGQ1N2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNw
cApAQCAtMzgwLDcgKzM4MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfd2Via2l0Z3RrX2lu
dGVyZmFjZSB3ZWJraXRndGtJbnRlcmZhY2UgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgYXV0byogY29tcG9zaXRvciA9IHN0YXRpY19jYXN0PFdheWxhbmRDb21wb3NpdG9yKj4o
d2xfcmVzb3VyY2VfZ2V0X3VzZXJfZGF0YShyZXNvdXJjZSkpOwotICAgICAgICBjb21wb3NpdG9y
LT5iaW5kU3VyZmFjZVRvV2ViUGFnZShzdXJmYWNlLCBwYWdlSUQpOworICAgICAgICBjb21wb3Np
dG9yLT5iaW5kU3VyZmFjZVRvV2ViUGFnZShzdXJmYWNlLCBtYWtlT2JqZWN0SWRlbnRpZmllcjxQ
YWdlSWRlbnRpZmllclR5cGU+KHBhZ2VJRCkpOwogICAgIH0KIH07CiAKQEAgLTU0Nyw3ICs1NDcs
NyBAQCBib29sIFdheWxhbmRDb21wb3NpdG9yOjpnZXRUZXh0dXJlKFdlYlBhZ2VQcm94eSYgd2Vi
UGFnZSwgdW5zaWduZWQmIHRleHR1cmUsIEludAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBXYXlsYW5kQ29tcG9zaXRvcjo6YmluZFN1cmZhY2VUb1dlYlBhZ2UoV2F5bGFuZENvbXBvc2l0
b3I6OlN1cmZhY2UqIHN1cmZhY2UsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2F5bGFuZENvbXBv
c2l0b3I6OmJpbmRTdXJmYWNlVG9XZWJQYWdlKFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKiBz
dXJmYWNlLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgV2ViUGFnZVBy
b3h5KiB3ZWJQYWdlID0gbnVsbHB0cjsKICAgICBmb3IgKGF1dG8qIHBhZ2UgOiBtX3BhZ2VNYXAu
a2V5cygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFu
ZENvbXBvc2l0b3IuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9z
aXRvci5oCmluZGV4IDE0ODE5ZjhmYWM0ZWM4MDIzMGJhMmNiYmIxOGU2ZDA5NTliOWY4NGEuLjJk
NzgwZmZiMTI1N2Q0OWYwOGRlYTlhMTg2OGE4YTQzMmM2MWJlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5oCkBAIC0xMDMsNyArMTAzLDcg
QEAgcHVibGljOgogICAgIGJvb2wgaXNSdW5uaW5nKCkgY29uc3QgeyByZXR1cm4gISFtX2Rpc3Bs
YXk7IH0KICAgICBTdHJpbmcgZGlzcGxheU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2Rpc3BsYXlO
YW1lOyB9CiAKLSAgICB2b2lkIGJpbmRTdXJmYWNlVG9XZWJQYWdlKFN1cmZhY2UqLCB1aW50NjRf
dCBwYWdlSUQpOworICAgIHZvaWQgYmluZFN1cmZhY2VUb1dlYlBhZ2UoU3VyZmFjZSosIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIHJlZ2lzdGVyV2ViUGFnZShXZWJQYWdlUHJv
eHkmKTsKICAgICB2b2lkIHVucmVnaXN0ZXJXZWJQYWdlKFdlYlBhZ2VQcm94eSYpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVy
SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxl
cklPUy5tbQppbmRleCAwODNkNmZhZjE1MjAxZjhjZWM0ZDAyOGJhMzA5ODhiN2FjYTc1MGQ0Li5j
ZWZkZTYxYzQ5YjUyYWNkNmYwODkwODgyMDZiOGQ2NmM3NTUwMjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0K
QEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6YmVnaW5Td2lw
ZUdlc3R1cmUoX1VJTmF2aWdhdGlvbkludGVyYWN0aXZlVHJhbnNpdGlvbgogICAgICAgICBpZiAo
ZmluaXNoKQogICAgICAgICAgICAgbV93ZWJQYWdlUHJveHlGb3JCYWNrRm9yd2FyZExpc3RGb3JD
dXJyZW50U3dpcGUtPm5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZCh0cmFuc2l0aW9uQ29tcGxldGVk
LCAqdGFyZ2V0SXRlbSk7CiAgICAgfV07Ci0gICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdl
UHJveHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQo
KTsKICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50R2VzdHVyZUlEOwogICAgIFtt
X3N3aXBlVHJhbnNpdGlvbkNvbnRleHQgX3NldENvbXBsZXRpb25IYW5kbGVyOltwYWdlSUQsIGdl
c3R1cmVJRCwgdGFyZ2V0SXRlbV0gKF9VSVZpZXdDb250cm9sbGVyVHJhbnNpdGlvbkNvbnRleHQg
KmNvbnRleHQsIEJPT0wgZGlkQ29tcGxldGUpIHsKICAgICAgICAgaWYgKGF1dG8gZ2VzdHVyZUNv
bnRyb2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQsIGdlc3R1cmVJRCkpCkBAIC0z
MjEsNyArMzIxLDcgQEAgdm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmVuZFN3aXBlR2VzdHVy
ZShXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiB0YXJnZXRJdGVtLAogICAgICAgICBtX3dlYlBhZ2VQ
cm94eS5kaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IoKTsKICAgICB9CiAKLSAgICB1aW50NjRfdCBw
YWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2Vi
UGFnZVByb3h5LnBhZ2VJRCgpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRH
ZXN0dXJlSUQ7CiAgICAgbV9sb2FkQ2FsbGJhY2sgPSBbdGhpcywgcGFnZUlELCBnZXN0dXJlSURd
IHsKICAgICAgICAgYXV0byBkcmF3aW5nQXJlYSA9IG1fd2ViUGFnZVByb3h5LnByb3Zpc2lvbmFs
RHJhd2luZ0FyZWEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKaW5kZXggZmY0NDkzNDFkOWU0NDJm
YzE2MmU0MTU0NGIzODViMTdjMDUzYTAzOC4uNTdmM2ZlMTczY2NkOTUxNzM2NDJhMTk1ZTdjZmQx
MDE4ODY5ODhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBJ
UEM6OkNvbm5lY3Rpb24qIFdlYlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVNlbmRlckNvbm5l
Y3Rpb24oKSBjb25zdAogCiB1aW50NjRfdCBXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VT
ZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJ
RCgpOworICAgIHJldHVybiBtX3dlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAogdm9p
ZCBXZWJQYXltZW50Q29vcmRpbmF0b3I6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgU3RyaW5nJiB2
YWxpZGF0aW9uVVJMU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAppbmRl
eCBiMWNiYzk2M2IwZWZjYzg1MjQ5MmQ5NjhkOWVhYWMzMTgyOGUxNTJiLi40NTRjYTZiYzg0NDk4
M2Y1OTk4ZmZlZTRkYTM3NGNjZmNjNjIyNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5LmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eTo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZShXZWJGcmFtZSYgZnJhbWUpCiAgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5j
dGlvbihjYWxsYmFja0lELCBlcnJvck1lc3NhZ2UsIGVycm9yVHlwZSksIDApOwogfQogCi12b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVp
bnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwg
VmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJn
dW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlv
biwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNr
QXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CiAg
ICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlE
KTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OmRpZEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2NF90IGZy
YW1lSUQsCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZEV2YWx1YXRlSmF2
YVNjcmlwdEZ1bmN0aW9uKGNhbGxiYWNrSUQsIHJlc3VsdCwgZXJyb3JUeXBlKSwgMCk7CiB9CiAK
LXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3Jk
aW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZl
Q2hpbGRGcmFtZVdpdGhPcmRpbmFsKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgdWludDMyX3Qgb3JkaW5hbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSog
cGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAo
IXBhZ2UpIHsKQEAgLTM1MCw3ICszNTAsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aQogICAg
IGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsK
IH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4s
IHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTM4OCw3ICszODgsNyBAQCB2
b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVI
YW5kbGUodWludDY0X3QgcGFnZUlELAogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9w
dCwgZnJhbWVGcm9tRWxlbWVudC0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9u
U2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQyNiw3ICs0
MjYsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1l
V2l0aE5hbWUodWludDY0X3QgcGFnZUlELCB1aW50NgogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rjo6bnVsbG9wdCwgY2hpbGRGcmFtZS0+ZnJhbWVJRCgpKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0
aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVp
bnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Q
cm94eTo6cmVzb2x2ZVBhcmVudEZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRf
dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFnZSA9IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpIHsKQEAgLTQ1
Miw3ICs0NTIsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJl
bnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYQogICAgIGNvbXBsZXRpb25IYW5k
bGVyKFdURjo6bnVsbG9wdCwgcGFyZW50RnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2Vi
QXV0b21hdGlvblNlc3Npb25Qcm94eTo6Zm9jdXNGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmZvY3VzRnJhbWUo
UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQogewogICAgIFdlYlBhZ2Uq
IHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYg
KCFwYWdlKQpAQCAtNTI3LDcgKzUyNyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpGbG9hdFBvaW50IGNv
bnZlcnRQb2ludEZyb21GcmFtZUNsaWVudFRvUm9vdFZpZXcoV2ViQ29yZTo6RnJhbWVWCiAgICAg
cmV0dXJuIGNsaWVudFBvaW50OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRpbmF0
ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50Piwg
Ym9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmNvbXB1dGVFbGVtZW50TGF5b3V0KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwg
Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lzdGVtLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3QsIE9wdGlvbmFsPFdlYkNvcmU6Oklu
dFBvaW50PiwgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgV2ViUGFnZSogcGFn
ZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBh
Z2UpIHsKQEAgLTYzNSw3ICs2MzUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6
OmNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZgogICAgIGNv
bXBsZXRpb25IYW5kbGVyKFdURjo6bnVsbG9wdCwgcmVzdWx0RWxlbWVudEJvdW5kcywgcmVzdWx0
SW5WaWV3Q2VudGVyUG9pbnQsIGlzT2JzY3VyZWQpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRp
b25hbDxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViQXV0b21hdGlvblNl
c3Npb25Qcm94eTo6c2VsZWN0T3B0aW9uRWxlbWVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2Uq
IHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYg
KCFwYWdlKSB7CkBAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIFdlYkNvcmU6OkludFJlY3Qgc25h
cHNob3RSZWN0Rm9yU2NyZWVuc2hvdChXZWJQYWdlJiBwYWdlLCBXZWJDb3JlOjpFbGVtZW4KICAg
ICByZXR1cm4geyB9OwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VT
Y3JlZW5zaG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVI
YW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwg
dWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6dGFr
ZVNjcmVlbnNob3QoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1Zp
ZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFu
ZGxlIGhhbmRsZTsKIApAQCAtNzUxLDcgKzc1MSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6dGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViQXV0b21hdGlvblNlc3Npb246OkRpZFRha2VTY3JlZW5zaG90KGNh
bGxiYWNrSUQsIGhhbmRsZSwgeyB9KSwgMCk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Np
b25Qcm94eTo6Z2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OmdldENvb2tpZXNGb3JGcmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdl
YlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAg
ICAgaWYgKCFwYWdlKSB7CkBAIC03NzYsNyArNzc2LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpnZXRDb29raWVzRm9yRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBm
cmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZvdW5kQ29va2llcyk7CiB9
CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6ZGVsZXRlQ29va2llKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZShQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAg
IFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7
CiAgICAgaWYgKCFwYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
QXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKaW5kZXggNjI5
NTQxZDIwYmExMGRmNjJkYTFlMjYwOTE2NGVhYzg5MmJhMGQxMy4uMTE2NzY0NTI3N2RiYzE5MzBh
NWE3YTU5N2RjYmMyZGYzZWNmNTVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkuaApA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJDb29y
ZGluYXRlU3lzdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNCYXNlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MCwxNyArNjEsMTcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGJ5IFdlYkF1dG9tYXRpb25TZXNzaW9u
UHJveHkgbWVzc2FnZXMKLSAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbiwgVmVj
dG9yPFN0cmluZz4gYXJndW1lbnRzLCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1l
bnQsIGludCBjYWxsYmFja1RpbWVvdXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQg
cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5v
ZGVIYW5kbGUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWlu
dDY0X3QpPiYmKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUodWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2b2lkIHJl
c29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKLSAgICB2
b2lkIGZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2
b2lkIGNvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgQ29vcmRp
bmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJD
b3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmKTsKLSAg
ICB2b2lkIHNlbGVjdE9wdGlvbkVsZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+KT4mJik7Ci0gICAgdm9pZCB0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZO
ZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZv
aWQgZ2V0Q29va2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPik+JiYpOwotICAgIHZvaWQgZGVsZXRlQ29va2llKHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
T3B0aW9uYWw8U3RyaW5nPik+JiYpOworICAgIHZvaWQgZXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rp
b24oV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGlj
aXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lk
IHJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYpOworICAgIHZvaWQgcmVz
b2x2ZUNoaWxkRnJhbWVXaXRoTmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWUo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIGZvY3Vz
RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQpOworICAgIHZv
aWQgY29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90
IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQs
IENvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
PiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4m
Jik7CisgICAgdm9pZCBzZWxlY3RPcHRpb25FbGVtZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChPcHRpb25hbDxTdHJpbmc+KT4mJik7CisgICAgdm9pZCB0YWtlU2NyZWVuc2hvdChXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUs
IGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0
X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBnZXRDb29raWVzRm9yRnJhbWUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmKTsKKyAgICB2b2lkIGRl
bGV0ZUNvb2tpZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgU3Ry
aW5nIGNvb2tpZU5hbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+
JiYpOwogCiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkZW50aWZpZXI7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJB
dXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGFhMTIxOWUyZWYxZmMwNzAw
NDU5NmQyNGExYjU3MTZkMzA2Zjc4YmUuLmQ3MmY4OWQyNjM1OWNmMDFjY2ZkNTMxZTk2ZTAxZjQ0
NDA5YWFmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5tZXNzYWdl
cy5pbgpAQCAtMjEsMjEgKzIxLDIxIEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1lc3NhZ2VzIC0+IFdl
YkF1dG9tYXRpb25TZXNzaW9uUHJveHkgewotICAgIEV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9u
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIGZ1bmN0aW9uLCBWZWN0
b3I8U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVu
dCwgaW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBFdmFsdWF0
ZUphdmFTY3JpcHRGdW5jdGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIFN0cmluZyBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRzLCBi
b29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVvdXQs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFs
KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCkgLT4g
KE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYwotICAg
IFJlc29sdmVDaGlsZEZyYW1lV2l0aE5vZGVIYW5kbGUodWludDY0X3QgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JU
eXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYwotICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE5h
bWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbmFtZSkgLT4gKE9w
dGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYwotICAgIFJl
c29sdmVQYXJlbnRGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChP
cHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBS
ZXNvbHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgdWludDMyX3Qgb3JkaW5hbCkgLT4gKE9wdGlvbmFsPFN0cmlu
Zz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZy
YW1lV2l0aE5vZGVIYW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JU
eXBlLCB1aW50NjRfdCBmcmFtZUlEKSBBc3luYworICAgIFJlc29sdmVDaGlsZEZyYW1lV2l0aE5h
bWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbmFtZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCB1aW50NjRfdCBmcmFtZUlE
KSBBc3luYworICAgIFJlc29sdmVQYXJlbnRGcmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwg
dWludDY0X3QgZnJhbWVJRCkgQXN5bmMKIAotICAgIEZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlEKQorICAgIEZvY3VzRnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQogCi0gICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQo
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9v
bCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRl
U3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwg
V2ViQ29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3
Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkgQXN5bmMKKyAgICBDb21wdXRlRWxlbWVudExh
eW91dChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0
cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIGVudW06dWludDhf
dCBXZWJLaXQ6OkNvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5c3RlbSkgLT4gKE9wdGlvbmFs
PFN0cmluZz4gZXJyb3JUeXBlLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIE9wdGlvbmFsPFdlYkNv
cmU6OkludFBvaW50PiBpblZpZXdDZW50ZXJQb2ludCwgYm9vbCBpc09ic2N1cmVkKSBBc3luYwog
Ci0gICAgU2VsZWN0T3B0aW9uRWxlbWVudCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1l
SUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFz
eW5jCisgICAgU2VsZWN0T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlKSAtPiAoT3B0aW9uYWw8U3Ry
aW5nPiBlcnJvclR5cGUpIEFzeW5jCiAKLSAgICBUYWtlU2NyZWVuc2hvdCh1aW50NjRfdCBwYWdl
SUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9W
aWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisg
ICAgVGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRf
dCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVk
LCBib29sIGNsaXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogCi0gICAgR2V0Q29v
a2llc0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlv
bmFsPFN0cmluZz4gZXJyb3JUeXBlLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBB
c3luYwotICAgIERlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IFN0cmluZyBjb29raWVOYW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFzeW5j
CisgICAgR2V0Q29va2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlLCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBBc3luYworICAgIERlbGV0ZUNvb2tpZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVO
YW1lKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUpIEFzeW5jCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViRXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCmluZGV4IDA4MmQ2MDlhODdiZjM3Yzdl
ZjJmNGI0ZGU4ZTI0Y2RkYTI1MTM2NmQuLjRhMjNiZjU2MDEwN2MzMWYxYTRkZTJjOTYxMjk5YTcw
MTA4MTc1MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJFeHRlbnNpb24uY3Bw
CkBAIC0yMjQsNyArMjI0LDcgQEAgV2ViS2l0V2ViUGFnZSogd2Via2l0X3dlYl9leHRlbnNpb25f
Z2V0X3BhZ2UoV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIGd1aW4KICAgICBXZWJLaXRX
ZWJFeHRlbnNpb25Qcml2YXRlKiBwcml2ID0gZXh0ZW5zaW9uLT5wcml2OwogICAgIFdlYlBhZ2VN
YXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHByaXYtPnBhZ2VzLmVuZCgpOwogICAgIGZvciAoV2Vi
UGFnZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBwcml2LT5wYWdlcy5iZWdpbigpOyBpdCAhPSBl
bmQ7ICsraXQpCi0gICAgICAgIGlmIChpdC0+a2V5LT5wYWdlSUQoKSA9PSBwYWdlSUQpCisgICAg
ICAgIGlmIChpdC0+a2V5LT5wYWdlSUQoKS50b1VJbnQ2NCgpID09IHBhZ2VJRCkKICAgICAgICAg
ICAgIHJldHVybiBpdC0+dmFsdWUuZ2V0KCk7CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRX
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Z2xpYi9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCBlNTdlMmU3N2U1NTg0OGU4YmE3MjVmOWQzMjI3
NzA5ZmZmMTc4YWZmLi5jZmM1MDMxZWQ2ZTRhMjk1NGZlMDJhMDNkYTg3YTE2MWNkMmQzMDgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC03NjMsNyArNzYzLDcgQEAg
Z3VpbnQ2NCB3ZWJraXRfd2ViX3BhZ2VfZ2V0X2lkKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UpCiB7
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9QQUdFKHdlYlBhZ2UpLCAw
KTsKIAotICAgIHJldHVybiB3ZWJQYWdlLT5wcml2LT53ZWJQYWdlLT5wYWdlSUQoKTsKKyAgICBy
ZXR1cm4gd2ViUGFnZS0+cHJpdi0+d2ViUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAog
LyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCBhZTM4ODNkODZiNjg5ZTY2NmYxNmFj
ZWY5MDE2NzI5NGU1ZDI3ODdjLi44YjFhZDVlZGYwZTZiOTBkNThjMjRlNjE1ZmFkYzljNzEwN2E1
ZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlv
biYgY29ubmVjdGlvbiwgSVAKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoZGVjb2Rl
ci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBhZ2U6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLndlYlBhZ2UoZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKQorICAgICAgICBpZiAo
YXV0byogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVj
dElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkp
KQogICAgICAgICAgICAgd2ViUGFnZS0+ZGlkUmVjZWl2ZVdlYlBhZ2VNZXNzYWdlKGNvbm5lY3Rp
b24sIGRlY29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ5LDcgKzE0OSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9V
SSkKICAgICBpZiAoZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6Oldl
YlBheW1lbnRDb29yZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlm
IChhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKGRlY29kZXIu
ZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAgaWYgKGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJU
eXBlPihkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAgICAgICAgd2ViUGFnZS0+cGF5
bWVudENvb3JkaW5hdG9yKCktPmRpZFJlY2VpdmVNZXNzYWdlKGNvbm5lY3Rpb24sIGRlY29kZXIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTcxLDcgKzE3MSw3IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uOjpkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiBjb25uZWN0aW9uCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZX1JFTU9URV9VSSkKICAgICBpZiAo
ZGVjb2Rlci5tZXNzYWdlUmVjZWl2ZXJOYW1lKCkgPT0gTWVzc2FnZXM6OldlYlBheW1lbnRDb29y
ZGluYXRvcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpKSB7Ci0gICAgICAgIGlmIChhdXRvIHdlYlBh
Z2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKGRlY29kZXIuZGVzdGluYXRpb25J
RCgpKSkKKyAgICAgICAgaWYgKGF1dG8gd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UobWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihkZWNvZGVy
LmRlc3RpbmF0aW9uSUQoKSkpKQogICAgICAgICAgICAgd2ViUGFnZS0+cGF5bWVudENvb3JkaW5h
dG9yKCktPmRpZFJlY2VpdmVTeW5jTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyLCByZXBseUVu
Y29kZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDA0YWUwZTQ1
ZDVlOWQyOWNhMGYyNzBhMDY0MThhNmFiMmQ1MDFmY2IuLjI3OGI2MDE4NDc5ZjM2NTkwMzQ4Yzg5
NTE4NTVhY2Y0M2RjYjU5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lk
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNl
TG9hZGVyLCBDYWNoZWRSZXNvdQogICAgIGF1dG8mIGZyYW1lTG9hZGVyQ2xpZW50ID0gcmVzb3Vy
Y2VMb2FkZXIuZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCk7CiAKICAgICBXZWJSZXNvdXJjZUxvYWRl
cjo6VHJhY2tpbmdQYXJhbWV0ZXJzIHRyYWNraW5nUGFyYW1ldGVyczsKLSAgICB0cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlEKCkudmFsdWVPcigwKTsK
KyAgICB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlEID0gZnJhbWVMb2FkZXJDbGllbnQucGFnZUlE
KCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pOwogICAgIHRyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlEID0gZnJhbWVMb2FkZXJDbGllbnQuZnJhbWVJRCgpLnZhbHVlT3IoMCk7CiAgICAgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQgPSBpZGVudGlmaWVyOwogICAgIGF1dG8gc2Vzc2lv
bklEID0gZnJhbWVMb2FkZXJDbGllbnQuc2Vzc2lvbklEKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNv
dXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAvLyB0aGVuIHdlIHNob3VsZCByZW1lbWJlciB0
aGUgUmVzb3VyY2VMb2FkZXIgaW4gb3VyIHJlY29yZHMgYnV0IG5vdCBzY2hlZHVsZSBpdCBpbiB0
aGUgTmV0d29ya1Byb2Nlc3MuCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLmRvY3VtZW50TG9hZGVy
KCktPnNjaGVkdWxlQXJjaGl2ZUxvYWQocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJl
cXVlc3QoKSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3Mp
IFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgaGFuZGxl
ZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNl
TG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFyY2hpdmUg
cmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFt
ZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VM
b2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSBy
ZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1l
KCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAgICBtX3dlYlJlc291cmNlTG9hZGVycy5z
ZXQoaWRlbnRpZmllciwgV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNvdXJjZUxvYWRlciwg
dHJhY2tpbmdQYXJhbWV0ZXJzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNzUsMTQg
KzE3NSwxNCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VM
b2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogCiAgICAgaWYgKHJlc291cmNlTG9h
ZGVyLmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVMb2FkUmVz
b3VyY2UocmVzb3VyY2VMb2FkZXIsIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKSwgcmVzb3VyY2VM
b2FkZXIucmVxdWVzdCgpLnVybCgpKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcs
ICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycg
d2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZS4iLCByZXNvdXJjZUxvYWRlci51
cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUgbG9hZGVkIGZy
b20gYXBwbGljYXRpb24gY2FjaGUgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJj
ZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBmcm9t
IGFwcGxpY2F0aW9uIGNhY2hlIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VM
b2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIG1fd2ViUmVzb3Vy
Y2VMb2FkZXJzLnNldChpZGVudGlmaWVyLCBXZWJSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHJlc291
cmNlTG9hZGVyLCB0cmFja2luZ1BhcmFtZXRlcnMpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmIChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJc0RhdGEo
KSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9h
ZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBsb2FkZWQgYXMgZGF0
YS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDog
VVJMIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBy
ZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRl
ZCBhcyBkYXRhIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJh
bWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291
cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE5MCw3ICsxOTAsNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291
cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChpc1F1
aWNrTG9va1ByZXZpZXdVUkwocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnVybCgpKSkgewogICAg
ICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29r
IHJlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1
bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlIChmcmFt
ZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIp
OworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1
bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgUXVpY2tMb29rIHJlc291cmNlIChmcmFt
ZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwg
aWRlbnRpZmllcik7CiAgICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIFdlYkxvYWRlclN0
cmF0ZWd5OjpzY2hlZHVsZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNo
ZWRSZXNvdQogICAgIC8vIGh0dHBzOi8vYmxvZ3MuZ25vbWUub3JnL2FsZXhsLzIwMTIvMDEvMjYv
cmVzb3VyY2VzLWluLWdsaWIvCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwo
KS5wcm90b2NvbElzKCJyZXNvdXJjZSIpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGlu
ZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVz
JyB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2UuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
cmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBH
UmVzb3VyY2UgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFt
ZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VM
b2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGhhbmRsZWQgYXMgYSBHUmVzb3VyY2Ug
KGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFj
a2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBpZGVudGlmaWVyKTsKICAgICAgICAgc3RhcnRMb2NhbExvYWQocmVzb3VyY2VMb2FkZXIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjExLDExICsyMTEsMTEgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRl
ciwgQ2FjaGVkUmVzb3UKICAgICBXZWJTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigp
LmhhbmRsZUZldGNoKHJlc291cmNlTG9hZGVyLCBzZXNzaW9uSUQsIHNob3VsZENsZWFyUmVmZXJy
ZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFt0aGlzLCB0cmFja2luZ1BhcmFtZXRlcnMsIGlkZW50
aWZpZXIsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUgPSBtYXhpbXVtQnVmZmVyaW5nVGltZShyZXNvdXJjZSks
IHJlc291cmNlTG9hZGVyID0gbWFrZVJlZihyZXNvdXJjZUxvYWRlcildIChTZXJ2aWNlV29ya2Vy
Q2xpZW50RmV0Y2g6OlJlc3VsdCByZXN1bHQpIG11dGFibGUgewogICAgICAgICBpZiAocmVzdWx0
ICE9IFNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6UmVzdWx0OjpVbmhhbmRsZWQpIHsKICAgICAg
ICAgICAgIExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJh
dGVneTo6c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNl
cnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSIsIHJlc291cmNlTG9hZGVyLT51cmwo
KS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
c2NoZWR1bGVkIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChm
cmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlm
aWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIu
Z2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNlcnZp
Y2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAocmVzb3VyY2VMb2FkZXItPm9w
dGlvbnMoKS5zZXJ2aWNlV29ya2Vyc01vZGUgPT0gU2VydmljZVdvcmtlcnNNb2RlOjpPbmx5KSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVy
LmdldCgpLCAic2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2NoZWR1bGUgVVJMIHRocm91Z2ggU2Vy
dmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQs
IHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVs
ZUxvYWQ6IHVuYWJsZSB0byBzY2hlZHVsZSBVUkwgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRs
ZSBmZXRjaCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxv
YWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtyZXNvdXJjZUxvYWRlciA9IFdURk1vdmUocmVzb3VyY2VMb2FkZXIpXSB7CiAg
ICAgICAgICAgICAgICAgYXV0byBlcnJvciA9IGludGVybmFsRXJyb3IocmVzb3VyY2VMb2FkZXIt
PnJlcXVlc3QoKS51cmwoKSk7CiAgICAgICAgICAgICAgICAgZXJyb3Iuc2V0VHlwZShSZXNvdXJj
ZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pOwpAQCAtMjI3LDEzICsyMjcsMTMgQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxv
YWRlciwgQ2FjaGVkUmVzb3UKICAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53
ZWJMb2FkZXJTdHJhdGVneSgpLnRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIocmVzb3Vy
Y2VMb2FkZXIpKQogICAgICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVy
U3RyYXRlZ3koKS5zY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MocmVzb3VyY2VMb2FkZXIu
Z2V0KCksIHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2Vz
c2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVt
QnVmZmVyaW5nVGltZSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQocmVzb3VyY2VMb2FkZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFu
ZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJj
ZUxvYWRlci0+ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5k
bGVkIGJ5IGFueSBoYW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNl
TG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIHRy
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICAgICB9KTsKICNlbHNlCiAg
ICAgaWYgKCF0cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyKSkK
ICAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLCBy
ZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHRyYWNraW5nUGFyYW1ldGVycywgc2Vzc2lvbklELCBz
aG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBtYXhpbXVtQnVmZmVyaW5n
VGltZShyZXNvdXJjZSkpOwogICAgIGVsc2UKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBo
YW5kbGVycyAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1l
KCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlE
LCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxv
YWRlciwgInNjaGVkdWxlTG9hZDogVVJMIG5vdCBoYW5kbGVkIGJ5IGFueSBoYW5kbGVycyAoZnJh
bWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IGlkZW50aWZpZXIpOwogI2VuZGlmCiB9CiAKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWRGcm9tTmV0d29ya1Byb2Nlc3MoUmVzb3VyY2VMb2Fk
ZXImIHJlc291cmNlTAogICAgIGlmIChsb2FkUGFyYW1ldGVycy5vcHRpb25zLm1vZGUgIT0gRmV0
Y2hPcHRpb25zOjpNb2RlOjpOYXZpZ2F0ZSkgewogICAgICAgICBBU1NFUlQobG9hZFBhcmFtZXRl
cnMuc291cmNlT3JpZ2luKTsKICAgICAgICAgaWYgKCFsb2FkUGFyYW1ldGVycy5zb3VyY2VPcmln
aW4pIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VM
b2FkZXIsICJzY2hlZHVsZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAoZnJhbWUgPSAlcCwgcHJpb3Jp
dHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19j
YXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1l
dGVycy53ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJz
LmlkZW50aWZpZXIpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChy
ZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogbm8gc291cmNlT3JpZ2luIChmcmFtZSA9ICVw
LCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwg
c3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxv
YWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICAgICAgICAgIHNjaGVkdWxlSW50
ZXJuYWxseUZhaWxlZExvYWQocmVzb3VyY2VMb2FkZXIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CkBAIC0zNDYsOSArMzQ2LDkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2No
ZWR1bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKIAog
ICAgIEFTU0VSVCgobG9hZFBhcmFtZXRlcnMud2ViUGFnZUlEICYmIGxvYWRQYXJhbWV0ZXJzLndl
YkZyYW1lSUQpIHx8IGxvYWRQYXJhbWV0ZXJzLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQ2xp
ZW50Q3JlZGVudGlhbFBvbGljeTo6Q2Fubm90QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHMpOwogCi0g
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDog
UmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVkIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFt
ZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJh
bWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHko
KSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwg
bG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChy
ZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogUmVzb3VyY2UgaXMgYmVpbmcgc2NoZWR1bGVk
IHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNv
dXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJ
RC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5p
ZGVudGlmaWVyKTsKICAgICBpZiAoIVdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2NoZWR1bGVSZXNvdXJjZUxvYWQobG9hZFBhcmFtZXRl
cnMpLCAwKSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNl
TG9hZGVyLCAic2NoZWR1bGVMb2FkOiBVbmFibGUgdG8gc2NoZWR1bGUgcmVzb3VyY2Ugd2l0aCB0
aGUgTmV0d29ya1Byb2Nlc3MgKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2Fk
UGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxl
TG9hZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNz
IChmcmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2Fk
ZXIuZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJp
b3JpdHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBsb2FkUGFyYW1l
dGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICAgICAgLy8g
V2UgcHJvYmFibHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoaXMgbG9hZCB3aXRoIHRoZSBOZXR3b3Jr
UHJvY2VzcyBiZWNhdXNlIGl0IGhhZCBjcmFzaGVkLgogICAgICAgICAvLyBUaGlzIGxvYWQgd2ls
bCBuZXZlciBzdWNjZWVkIHNvIHdlIHdpbGwgc2NoZWR1bGUgaXQgdG8gZmFpbCBhc3luY2hyb25v
dXNseS4KICAgICAgICAgc2NoZWR1bGVJbnRlcm5hbGx5RmFpbGVkTG9hZChyZXNvdXJjZUxvYWRl
cik7CkBAIC01MDcsMTkgKzUwNywxOSBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgIFdl
YkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJD
bGllbnQtPndlYkZyYW1lKCkgOiBudWxscHRyOwogICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3ZWJG
cmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogCi0gICAgYXV0byBwYWdlSUQgPSB3
ZWJQYWdlID8gd2ViUGFnZS0+cGFnZUlEKCkgOiAwOworICAgIGF1dG8gcGFnZUlEID0gd2ViUGFn
ZSA/IHdlYlBhZ2UtPnBhZ2VJRCgpIDogUGFnZUlkZW50aWZpZXIgeyB9OwogICAgIGF1dG8gZnJh
bWVJRCA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPmZyYW1lSUQoKSA6IDA7CiAgICAgYXV0byBzZXNz
aW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lvbklEKCkgOiBQQUw6OlNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpOwogCiAgICAgYXV0byogZG9jdW1lbnQgPSBmcmFtZUxvYWRlci5m
cmFtZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHk6IG5vIGRvY3VtZW50IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRl
bnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklE
LCAibG9hZFJlc291cmNlU3luY2hyb25vdXNseTogbm8gZG9jdW1lbnQgKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlE
LnRvVUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOwogICAgICAgICBl
cnJvciA9IGludGVybmFsRXJyb3IocmVxdWVzdC51cmwoKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAoYXV0byBzeW5jTG9hZFJlc3VsdCA9IHRyeUxvYWRpbmdTeW5jaHJvbm91
c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyKGZyYW1lTG9hZGVyLCByZXNvdXJjZUxvYWRJZGVudGlm
aWVyLCByZXF1ZXN0KSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNl
c3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZhaWxlZCBjYWxsaW5nIHRyeUxv
YWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyIChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1LCBlcnJvciA9ICVk
KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgc3luY0xvYWRSZXN1
bHQtPmVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxM
T1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgY2FsbGlu
ZyB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFuZGxlciAocGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSwgZXJy
b3IgPSAlZCkiLCBwYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRp
Zmllciwgc3luY0xvYWRSZXN1bHQtPmVycm9yLmVycm9yQ29kZSgpKTsKICAgICAgICAgZXJyb3Ig
PSBXVEZNb3ZlKHN5bmNMb2FkUmVzdWx0LT5lcnJvcik7CiAgICAgICAgIHJlc3BvbnNlID0gV1RG
TW92ZShzeW5jTG9hZFJlc3VsdC0+cmVzcG9uc2UpOwogICAgICAgICBkYXRhID0gV1RGTW92ZShz
eW5jTG9hZFJlc3VsdC0+ZGF0YSk7CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBXZWJMb2FkZXJT
dHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2Fk
ZXIsIHVuc2kKICAgICBIYW5nRGV0ZWN0aW9uRGlzYWJsZXIgaGFuZ0RldGVjdGlvbkRpc2FibGVy
OwogCiAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hyb25vdXNMb2FkKGxvYWRQYXJhbWV0ZXJz
KSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpQZXJmb3JtU3luY2hy
b25vdXNMb2FkOjpSZXBseShlcnJvciwgcmVzcG9uc2UsIGRhdGEpLCAwKSkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHk6IGZhaWxlZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5ldHdvcmsgcHJvY2VzcyBtZXNz
YWdlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJWx1KSIsIHBhZ2VJRCwgZnJhbWVJRCwgcmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9hZFJlc291
cmNlU3luY2hyb25vdXNseTogZmFpbGVkIHNlbmRpbmcgc3luY2hyb25vdXMgbmV0d29yayBwcm9j
ZXNzIG1lc3NhZ2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlbHUpIiwgcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIHJlc291cmNl
TG9hZElkZW50aWZpZXIpOwogICAgICAgICBpZiAoYXV0byogcGFnZSA9IHdlYlBhZ2UgPyB3ZWJQ
YWdlLT5jb3JlUGFnZSgpIDogbnVsbHB0cikKICAgICAgICAgICAgIHBhZ2UtPmRpYWdub3N0aWNM
b2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5n
S2V5czo6c3luY2hyb25vdXNNZXNzYWdlRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZTo6Tm8pOwogICAgICAgICByZXNwb25zZSA9IFJlc291cmNlUmVzcG9uc2UoKTsKQEAgLTU2MSw3
ICs1NjEsNyBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgIH0KIH0KIAotdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6cGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKQordm9p
ZCBXZWJMb2FkZXJTdHJhdGVneTo6cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlkZW50aWZpZXIgd2Vi
UGFnZUlEKQogewogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UGFnZUxvYWRDb21wbGV0ZWQod2ViUGFnZUlEKSwgMCk7CiB9CkBA
IC02NDgsMTAgKzY0OCwxMCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8o
RnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCBjb25zdCBVUkwmIHVybCwgUwogCiAgICAgTmV0d29y
a1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnJlcXVl
c3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKLSAgICBwYXJhbWV0ZXJzLndlYlBhZ2VJRCA9
IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQoKSA6IDA7Ci0gICAgcGFyYW1ldGVycy53ZWJGcmFt
ZUlEID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgpIDogMDsKKyAgICBwYXJhbWV0ZXJz
LndlYlBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJRCgpOworICAgIHBhcmFtZXRlcnMud2ViRnJhbWVJ
RCA9IHdlYkZyYW1lLT5mcmFtZUlEKCk7CiAgICAgcGFyYW1ldGVycy5wYXJlbnRQSUQgPSBwcmVz
ZW50aW5nQXBwbGljYXRpb25QSUQoKTsKLSAgICBwYXJhbWV0ZXJzLnNlc3Npb25JRCA9IHdlYlBh
Z2UgPyB3ZWJQYWdlLT5zZXNzaW9uSUQoKSA6IFBBTDo6U2Vzc2lvbklEOjpkZWZhdWx0U2Vzc2lv
bklEKCk7CisgICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlLT5zZXNzaW9uSUQoKTsK
ICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3k7CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5l
Y3RPbmx5OjpZZXM7CiAgICAgcGFyYW1ldGVycy5zaG91bGRSZXN0cmljdEhUVFBSZXNwb25zZUFj
Y2VzcyA9IHNob3VsZFBlcmZvcm1TZWN1cml0eUNoZWNrcygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKaW5kZXggNGFmNTk5
NDFlMzRmNzJhZDI2ZTgxZWZiNTYwNjA2NzUxODExZjhjNi4uYWM1MjQ5NjZhODUyMWUwZTNkNjVl
YjYyYjlmNzBlODJmNzhjYzIxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGxvYWRSZXNvdXJjZShXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdl
YkNvcmU6OlN1YnJlc291cmNlTG9hZGVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9uZyBy
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJDb3JlOjpDbGllbnRDcmVkZW50aWFsUG9saWN5LCBjb25zdCBXZWJDb3JlOjpGZXRjaE9wdGlv
bnMmLCBjb25zdCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpIGZpbmFs
OwotICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSBmaW5hbDsK
KyAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBmaW5h
bDsKIAogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7CiAg
ICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9vbCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggYmY4OGZkYTMwMDdlMTY0ZmYzOGE5NTIyYWJiODFmZWZk
N2U5Zjg1Mi4uODhiZDUzYmYxZjhmYjczNmViMTczZWY2NGYxZTMwM2QxYmIxMDBjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcApAQCAtODgsMTYgKzg4LDE2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIFJlc291CiAgICAg
UmVmPFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIExPRyhO
ZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qg
dG8gJyVzJyIsIHByb3Bvc2VkUmVxdWVzdC51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkp
OwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1
NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBpZiAobV9jb3Jl
TG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9h
ZEZhbGxiYWNrRm9yUmVkaXJlY3QobV9jb3JlTG9hZGVyLmdldCgpLCBwcm9wb3NlZFJlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndp
bGxTZW5kUmVxdWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9y
UmVkaXJlY3QgcmV0dXJuZWQgZmFsc2UgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxs
U2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJl
ZGlyZWN0IHJldHVybmVkIGZhbHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgbV9jb3JlTG9hZGVyLT53aWxsU2VuZFJlcXVlc3QoV1RGTW92ZShwcm9wb3NlZFJlcXVlc3Qp
LCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyldKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFtX2Nv
cmVMb2FkZXIgfHwgIW1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRpbmcgZWFybHkgYmVj
YXVzZSBubyBjb3JlbG9hZGVyIG9yIGlkZW50aWZpZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxv
YWRlciBvciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKQEAgLTExMywxMiArMTEzLDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZFNlbmRE
YXRhKHVpbnQ2NF90IGJ5dGVzU2VudCwgdWludDY0X3QgdG90YWxCeXRlc1RvQmVTCiB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIGJvb2wgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2Up
CiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZSBmb3IgJyVzJy4gU3RhdHVzICVkLiIsIG1fY29yZUxvYWRlci0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpLCByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpKTsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIsIHN0YXR1cyA9ICVkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwg
cmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCkiLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwgcmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSk7CiAKICAgICBSZWY8V2ViUmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCiAgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+YXBwbGljYXRp
b25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja0ZvclJlc3BvbnNlKG1fY29yZUxvYWRlci5n
ZXQoKSwgcmVzcG9uc2UpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlz
IGFscmVhZHkgY2FjaGVkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2
NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFn
ZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5y
ZXNvdXJjZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJl
c3BvbnNlOiBub3QgY29udGludWluZyBsb2FkIGJlY2F1c2UgdGhlIGNvbnRlbnQgaXMgYWxyZWFk
eSBjYWNoZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJl
c291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9V
SW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRl
cnMucmVzb3VyY2VJRCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNSw3ICsxMzUs
NyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGJvbwogICAgICAgICAgICAgaWYgKG1fY29yZUxvYWRl
ciAmJiBtX2NvcmVMb2FkZXItPmlkZW50aWZpZXIoKSkKICAgICAgICAgICAgICAgICBzZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlRGlkUmVjZWl2ZVJlc3BvbnNl
KCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5v
IGNvcmVMb2FkZXIgb3Igbm8gSUQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVpbmcgbG9hZCBiZWNhdXNlIG5vIGNvcmVM
b2FkZXIgb3Igbm8gSUQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdl
SUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIH07CiAgICAgfQogCkBAIC0xNDgsNyArMTQ4
LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhLCBpbnQ2NF90IGUKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFt
X2lzUHJvY2Vzc2luZ05ldHdvcmtSZXNwb25zZSwgIk5ldHdvcmsgcHJvY2VzcyBzaG91bGQgbm90
IHNlbmQgZGF0YSB1bnRpbCB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAKICAgICBp
ZiAoIW1fbnVtQnl0ZXNSZWNlaXZlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZFJlY2VpdmVEYXRhOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQp
OwogICAgIH0KICAgICBtX251bUJ5dGVzUmVjZWl2ZWQgKz0gZGF0YS5zaXplKCk7CiAKQEAgLTE1
OCw3ICsxNTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YShjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGludDY0X3QgZQogdm9pZCBXZWJSZXNvdXJjZUxv
YWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0
d29ya0xvYWRNZXRyaWNzKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJl
c291cmNlTG9hZGVyOjpkaWRGaW5pc2hSZXNvdXJjZUxvYWQgZm9yICclcyciLCBtX2NvcmVMb2Fk
ZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkRmluaXNoUmVzb3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBsZW5ndGggPSAl
emQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5m
cmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlELCBtX251bUJ5dGVzUmVjZWl2
ZWQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJlc291cmNlTG9hZDog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFy
YW1ldGVycy5yZXNvdXJjZUlELCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2FkIHNob3VsZCBu
b3QgYmUgYWJsZSB0byBmaW5pc2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUgcmVzcG9uc2Ui
KTsKICAgICBtX2NvcmVMb2FkZXItPmRpZEZpbmlzaExvYWRpbmcobmV0d29ya0xvYWRNZXRyaWNz
KTsKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hS
ZXNvdXJjZUxvYWQoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRl
cjo6ZGlkRmFpbFJlc291cmNlTG9hZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRG
YWlsUmVzb3VyY2VMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNl
TG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291
cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50
NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cmVzb3VyY2VJRCk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFtX2lzUHJvY2Vzc2luZ05l
dHdvcmtSZXNwb25zZSwgIkxvYWQgc2hvdWxkIG5vdCBiZSBhYmxlIHRvIGZpbmlzaCBiZWZvcmUg
d2UndmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCkBAIC0xNzksNyArMTc5LDcgQEAgdm9p
ZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbFJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUVy
cm9yJiBlcnJvcikKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3MpIFdlYlJlc291
cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlIGZvciAnJXMnIiwgbV9j
b3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoImRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6IChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBS
SXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsK
IAogICAgIG1fY29yZUxvYWRlci0+ZGlkQmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgpOwog
fQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEJsb2NrQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoKQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRp
bmdBZnRlclhGcmFtZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZChjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9j
ZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6c3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNPckNv
bnRlbnRTZWN1cml0eVBvbGljeURlbmllZCBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCku
c3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJz
dG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVk
OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFtZU9wdGlvbnNP
ckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXIt
PmRvY3VtZW50TG9hZGVyKCktPnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50
U2VjdXJpdHlQb2xpY3lEZW5pZWQobV9jb3JlTG9hZGVyLT5pZGVudGlmaWVyKCksIHJlc3BvbnNl
KTsKIH0KQEAgLTE5NiwxMyArMTk2LDEzIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BM
b2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pCiB2b2lk
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UoY29uc3QgU2hhcmVhYmxlUmVz
b3VyY2U6OkhhbmRsZSYgaGFuZGxlKQogewogICAgIExPRyhOZXR3b3JrLCAiKFdlYlByb2Nlc3Mp
IFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzb3VyY2UgZm9yICclcyciLCBtX2NvcmVM
b2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFj
a2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkUmVjZWl2ZVJlc291cmNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJz
LnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1
ZmZlciA9IGhhbmRsZS50cnlXcmFwSW5TaGFyZWRCdWZmZXIoKTsKIAogICAgIGlmICghYnVmZmVy
KSB7CiAgICAgICAgIExPR19FUlJPUigiVW5hYmxlIHRvIGNyZWF0ZSBidWZmZXIgZnJvbSBTaGFy
ZWFibGVSZXNvdXJjZSBzZW50IGZyb20gdGhlIG5ldHdvcmsgcHJvY2Vzcy4iKTsKLSAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc291cmNlOiBVbmFibGUgdG8gY3Jl
YXRlIFNoYXJlZEJ1ZmZlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBh
Z2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cmVzb3VyY2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVS
ZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRl
cnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAgICAgICAgIGlm
IChhdXRvKiBmcmFtZSA9IG1fY29yZUxvYWRlci0+ZnJhbWUoKSkgewogICAgICAgICAgICAgaWYg
KGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmRpYWdu
b3N0aWNMb2dnaW5nQ2xpZW50KCkubG9nRGlhZ25vc3RpY01lc3NhZ2UoV2ViQ29yZTo6RGlhZ25v
c3RpY0xvZ2dpbmdLZXlzOjppbnRlcm5hbEVycm9yS2V5KCksIFdlYkNvcmU6OkRpYWdub3N0aWNM
b2dnaW5nS2V5czo6Y3JlYXRlU2hhcmVkQnVmZmVyRmFpbGVkS2V5KCksIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZTo6Tm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYlJlc291cmNlTG9hZGVyLmgKaW5kZXggN2ZkNzgzMjIzM2EzNjJjMjNhOTA0ZmMxNWVmMzRj
YTY0YTk2N2VhZS4uNTg2NTQzNzE4ZTVlODM4OGI4YjQxYWIwMjAzN2FjNzZlNzg2OTM3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxv
YWRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1
ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKICNpbmNsdWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTAsNyArNTEsNyBAQCB0eXBlZGVm
IHVpbnQ2NF90IFJlc291cmNlTG9hZElkZW50aWZpZXI7CiBjbGFzcyBXZWJSZXNvdXJjZUxvYWRl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlJlc291cmNlTG9hZGVyPiwgcHVibGljIElQQzo6TWVz
c2FnZVNlbmRlciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IFRyYWNraW5nUGFyYW1ldGVycyB7Ci0g
ICAgICAgIHVpbnQ2NF90IHBhZ2VJRCB7IDAgfTsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgcGFnZUlEOwogICAgICAgICB1aW50NjRfdCBmcmFtZUlEIHsgMCB9OwogICAgICAgICBS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQgeyAwIH07CiAgICAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCAzNGI1YTY0M2YwM2JkYTYxZmRhNGIzM2Q4
ODdiNWQxZGI4OWRjNjA3Li5hZGM0NzY2NTJlODA3YjIzNmFjYzExNjU0YTVmYzE3MTU3MzVjOTE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC03Myw3ICs3Myw3IEBA
IHN0YXRpYyBjb25zdCBTZWNvbmRzIHN5bmNXb3JrZXJUZXJtaW5hdGlvblRpbWVvdXQgeyAxMDBf
bXMgfTsgLy8gT25seSB1c2VkIGJ5IGxhCiAKIGNsYXNzIFNlcnZpY2VXb3JrZXJGcmFtZUxvYWRl
ckNsaWVudCBmaW5hbCA6IHB1YmxpYyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoK
LSAgICBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qg
cGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKKyAgICBT
ZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQoV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHVzZXJBZ2Vu
dCkKICAgICAgICAgOiBtX2Nvbm5lY3Rpb24oY29ubmVjdGlvbikKICAgICAgICAgLCBtX3Nlc3Np
b25JRChzZXNzaW9uSUQpCiAgICAgICAgICwgbV9wYWdlSUQocGFnZUlEKQpAQCAtOTUsMTggKzk1
LDE4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAg
IFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lv
bklEOyB9Ci0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fcGFnZUlEOyB9CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZyYW1lSUQ7IH0KICAgICBT
dHJpbmcgdXNlckFnZW50KGNvbnN0IFVSTCYpIGZpbmFsIHsgcmV0dXJuIG1fdXNlckFnZW50OyB9
CiAKICAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbiYgbV9jb25uZWN0aW9uOwogICAg
IFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEIHsgMCB9
OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIHVpbnQ2NF90IG1f
ZnJhbWVJRCB7IDAgfTsKICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CiB9OwogCi1XZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiBjb25uZWN0aW9uLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0
X3QgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKK1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBD
OjpDb25uZWN0aW9uPiYmIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogICAgIDog
bV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhXVEZNb3ZlKGNvbm5lY3Rpb24pKQogICAgICwg
bV9wYWdlR3JvdXBJRChwYWdlR3JvdXBJRCkKICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKQEAgLTIy
NiwxMiArMjI2LDEyIEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnN0YXJ0
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBzZXJ2CiB7CiAgICAgYXV0byogc2Vy
dmljZVdvcmtlclRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2Vy
dmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKICAgICBpZiAo
IXNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSkgewotICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RI
YW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgIG1fY29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRh
c2s6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICBpZiAoIWlzVmFsaWRGZXRjaChyZXF1ZXN0LCBvcHRpb25zLCBzZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHktPnNjcmlwdFVSTCgpLCByZWZlcnJlcikpIHsKLSAgICAgICAgbV9j
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZl
dGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOwor
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApp
bmRleCA2Y2U4M2QxZDA5ZWFlZGNhZTRmZTg3M2YxOGVjNTJiNTllNGZhMTcyLi5mYmI2MzBlNGUx
OWIzNTlkYzE3MGNjZWEwMThhNDk4MzIxNjZkYWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzU3RvcmU7CiAK
IGNsYXNzIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uIGZpbmFsIDogcHVibGljIFdlYkNv
cmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb24sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNl
aXZlciB7CiBwdWJsaWM6Ci0gICAgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQ
Qzo6Q29ubmVjdGlvbj4mJiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOworICAgIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpOwogICAgIH5X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbigpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKQEAgLTk2LDcgKzk2
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3M7CiAgICAgdWludDY0X3QgbV9wYWdlR3JvdXBJRDsKLSAgICB1aW50NjRf
dCBtX3BhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsK
ICAgICB1aW50NjRfdCBtX3ByZXZpb3VzU2VydmljZVdvcmtlcklEIHsgMCB9OwogCiAgICAgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBtX3N0b3JhZ2VCbG9j
a2luZ1BvbGljeSB7IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xp
Y3k6OkFsbG93QWxsU3RvcmFnZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcAppbmRleCA4YWViYWZmOTYyMjFlOTg2MzM3YzNkMjNlMDQwZjA1YjQ3NTVhNzU2Li4yNjQ0
YzljMWQxMmI2Y2QwMWQ1NjY5OWQxMzJiYzJlZjRjNjM2YTE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50LmNwcApAQCAtNTUsNyArNTUsNyBAQCB2b2lkIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZWRpcmVjdGlvbihjb25zdCBXZWJDb3Jl
OjpSZXNvdQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47Ci0gICAg
bV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRS
ZWNlaXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRv
VUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UgeyByZXNwb25zZSB9LCBtX2Zl
dGNoSWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC02OCw3ICs2OCw3IEBAIHZv
aWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmCiAgICAgaWYgKG1fbmVlZHNDb250aW51ZURpZFJlY2VpdmVS
ZXNwb25zZU1lc3NhZ2UpCiAgICAgICAgIG1fd2FpdGluZ0ZvckNvbnRpbnVlRGlkUmVjZWl2ZVJl
c3BvbnNlTWVzc2FnZSA9IHRydWU7CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBt
X25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlm
aWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVzcG9uc2UsIG1fbmVlZHND
b250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwog
fQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRh
KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQpAQCAtODQsNyArODQsNyBAQCB2b2lkIFdlYlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKFJlZjxTaGFyZWRCdWZm
ZXI+JiYgYnVmZmVyKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9u
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7
IHsgYnVmZmVyIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2Zl
dGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2VpdmVEYXRhIHsgeyBidWZmZXIgfSwg
c3RhdGljX2Nhc3Q8aW50NjRfdD4oYnVmZmVyLT5zaXplKCkpIH0sIG1fZmV0Y2hJZGVudGlmaWVy
KTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZl
Rm9ybURhdGFBbmRGaW5pc2goUmVmPEZvcm1EYXRhPiYmIGZvcm1EYXRhKQpAQCAtMTAxLDcgKzEw
MSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZv
cm1EYXRhQW5kRmluaXNoKFJlZjxGb3JtRGF0YT4mCiAgICAgLy8gRm9yIG5vdyBhbmQgZm9yIHRo
ZSBjYXNlIG9mIGJsb2JzLCB3ZSByZWFkIGl0IHRoZXJlIGFuZCBzZW5kIHRoZSBkYXRhIHRocm91
Z2ggSVBDLgogICAgIFVSTCBibG9iVVJMID0gZm9ybURhdGEtPmFzQmxvYlVSTCgpOwogICAgIGlm
IChibG9iVVJMLmlzTnVsbCgpKSB7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgSVBDOjpGb3Jt
RGF0YVJlZmVyZW5jZSB7IFdURk1vdmUoZm9ybURhdGEpIH0gfSwgbV9mZXRjaElkZW50aWZpZXIu
dG9VSW50NjQoKSk7CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vydmlj
ZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSB7IFdURk1vdmUoZm9ybURhdGEpIH0gfSwgbV9mZXRjaElkZW50aWZpZXIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlQmxvYkNodW5rKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemUKICAgICBpZiAoIW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRSZWNl
aXZlRGF0YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUg
fSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90
Kj4oZGF0YSksIHNpemUgfSwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oc2l6ZSkgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZEZpbmlzaEJsb2JMb2FkaW5nKCkKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdlYlNlcnZpY2VX
b3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZhaWwgeyBlcnJvciB9LCBtX2ZldGNoSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZEZhaWwgeyBlcnJvciB9LCBtX2ZldGNoSWRlbnRpZmll
cik7CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC0xNjQsNyArMTY0LDcgQEAgdm9pZCBXZWJTZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2goKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpEaWRGaW5pc2ggeyB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZEZpbmlzaCB7IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIAogICAgIGNsZWFudXAoKTsKIH0KQEAg
LTE3NCw3ICsxNzQsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRp
ZE5vdEhhbmRsZSgpCiAgICAgaWYgKCFtX2Nvbm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkTm90SGFuZGxlIHsgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9j
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RI
YW5kbGUgeyB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IDQ5MzNjYTRjM2EwNjcyY2FjMzBmNzc5
NTE5MGQyNTg1MjFjMGNmMDIuLjJiMjg4NjRhOWFhMDk4NDQyZDYxNTMyYzY0MGY1YjkzYTg1OTk4
MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC04MiwxNCArODIsMTQg
QEAgUmVmPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjpnZXRPckNyZWF0ZShVc2VyQ29udGVudEMKIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6V2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyKFVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIgaWRl
bnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogewotICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVzc2FnZVJlY2Vp
dmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pZGVudGlmaWVyLCAqdGhpcyk7CiB9CiAKIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlcigpCiB7CiAgICAgQVNTRVJUKHVzZXJDb250ZW50
Q29udHJvbGxlcnMoKS5jb250YWlucyhtX2lkZW50aWZpZXIpKTsKIAotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2lkZW50aWZpZXIpOwogCiAgICAgdXNlckNvbnRlbnRDb250cm9sbGVycygpLnJlbW92ZSht
X2lkZW50aWZpZXIpOwogfQpAQCAtMjUyLDcgKzI1Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlm
ICghd2ViUGFnZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlE
KCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZh
bHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSk7Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpEaWRQb3N0TWVz
c2FnZSh3ZWJQYWdlLT5wYWdlSUQoKSwgd2ViRnJhbWUtPmluZm8oKSwgbV9pZGVudGlmaWVyLCBJ
UEM6OkRhdGFSZWZlcmVuY2UodmFsdWUtPmRhdGEoKSkpLCBtX2NvbnRyb2xsZXItPmlkZW50aWZp
ZXIoKSk7CiAgICAgfQogCiAgICAgUmVmUHRyPFdlYlVzZXJDb250ZW50Q29udHJvbGxlcj4gbV9j
b250cm9sbGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAyNzI2YzIzZDJhNGY0ODQ1MTBh
YjAxODMyMmU3ZDkwMjc5YjE0ZjY3Li44MTQxMDE5MmE3MTY2YmZjMjUwY2M5YTIwN2E3YWYwNGFm
NzEwMjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMjg4LDcgKzI4OCw3IEBAIFBhZ2Uq
IFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFtZSwgY29uc3QgRnJhbWVM
b2FkUmVxdWVzdCYgcmVxdWVzCiAKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6
ZnJvbUNvcmVGcmFtZShmcmFtZSk7CiAKLSAgICB1aW50NjRfdCBuZXdQYWdlSUQgPSAwOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBuZXdQYWdlSUQ7CiAgICAgT3B0aW9uYWw8V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycz4gcGFyYW1ldGVyczsKICAgICBpZiAoIXdlYlByb2Nlc3MucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
Q3JlYXRlTmV3UGFnZSh3ZWJGcmFtZS0+aW5mbygpLCB3ZWJGcmFtZS0+cGFnZSgpLT5wYWdlSUQo
KSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgd2luZG93RmVhdHVyZXMsIG5hdmlnYXRpb25B
Y3Rpb25EYXRhKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q3JlYXRlTmV3UGFnZTo6UmVwbHko
bmV3UGFnZUlELCBwYXJhbWV0ZXJzKSwgbV9wYWdlLnBhZ2VJRCgpKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0yOTksOCArMjk5LDggQEAgUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVh
dGVXaW5kb3coRnJhbWUmIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXMKICAg
ICBpZiAocGFyYW1ldGVycy0+c2Vzc2lvbklEID09IG1fcGFnZS5zZXNzaW9uSUQoKSkKICAgICAg
ICAgcGFyYW1ldGVycy0+b2xkUGFnZUlEID0gbV9wYWdlLnBhZ2VJRCgpOwogCi0gICAgd2ViUHJv
Y2Vzcy5jcmVhdGVXZWJQYWdlKG5ld1BhZ2VJRCwgV1RGTW92ZSgqcGFyYW1ldGVycykpOwotICAg
IHJldHVybiB3ZWJQcm9jZXNzLndlYlBhZ2UobmV3UGFnZUlEKS0+Y29yZVBhZ2UoKTsKKyAgICB3
ZWJQcm9jZXNzLmNyZWF0ZVdlYlBhZ2UoKm5ld1BhZ2VJRCwgV1RGTW92ZSgqcGFyYW1ldGVycykp
OworICAgIHJldHVybiB3ZWJQcm9jZXNzLndlYlBhZ2UoKm5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7
CiB9CiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpzaG93KCkKQEAgLTEzMjIsMTIgKzEzMjIsMTIg
QEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3Rz
KCkKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi12b2lkIFdlYkNo
cm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1l
RG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCB1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpoYXNTdG9yYWdlQWNjZXNzKFJlZ2lzdHJh
YmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fcGFnZS5oYXNTdG9y
YWdlQWNjZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWlu
KSwgZnJhbWVJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYkNo
cm9tZUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJG
cmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dh
c0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCit2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFi
bGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9wYWdlLnJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFdURk1vdmUoc3ViRnJhbWVEb21haW4pLCBXVEZNb3ZlKHRvcEZyYW1lRG9tYWluKSwgZnJh
bWVJRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCmlu
ZGV4IGIyODlmYjIzZmU0MWFiYmJjYTFjZTE3MmNlOGE0ZjI1YWNjZDVlYzAuLjMxNDQ1MWI0MDI5
ZDhhOTI4OWZjYTg3NWYxODVlZTU4ODg2YjBiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKQEAgLTM3
Miw4ICszNzIsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkSW52YWxpZGF0ZURvY3VtZW50TWFy
a2VyUmVjdHMoKSBmaW5hbDsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYg
c3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21h
aW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYm
KSBmaW5hbDsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdU
Rjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisgICAgdm9pZCByZXF1
ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9t
YWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV1RGOjpDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKSBmaW5hbDsKICNlbmRpZgogCiAjaWYgRU5BQkxFKERF
VklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKaW5kZXggZjQyOGZkMjM5N2Vk
ZGQ0ZDI0MTE3NzAzMjNlYjNmYTI3OTAyZDg1Zi4uNzA1MjAyNWI5ZGNmOTI0MTRjYjZlNDg0MmRh
ZmE3NDhjMGUxZjc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTMwOSw3ICszMDksNyBA
QCB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvU3RlcChVbmRvU3RlcCYgc3RlcCkK
ICAgICBhdXRvIHN0ZXBJRCA9IHdlYlN0ZXAtPnN0ZXBJRCgpOwogCiAgICAgbV9wYWdlLT5hZGRX
ZWJVbmRvU3RlcChzdGVwSUQsIFdURk1vdmUod2ViU3RlcCkpOwotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWdpc3RlckVkaXRDb21tYW5kRm9yVW5kbyhzdGVwSUQs
IHN0ZXAubGFiZWwoKSksIG1fcGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0
Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oc3RlcElE
LCBzdGVwLmxhYmVsKCkpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSk7CiB9CiAKIHZvaWQgV2ViRWRpdG9yQ2xpZW50OjpyZWdpc3Rl
clJlZG9TdGVwKFVuZG9TdGVwJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDUyOWMwNDY3MDMwMWIzNTBiMTMyNTE4MzU0YTllNWE4NTViOWM0OGQuLjNkY2Q3ZTJlYzE5OTgx
N2Q3NDk1ZWQwYTgzNjI1MzY0MzY2MWNkZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojp+V2ViRnJhbWVM
b2FkZXJDbGllbnQoKQogewogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnBhZ2VJRCgpIGNvbnN0CitPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFt
ZS0+cGFnZSgpKQogICAgICAgICByZXR1cm4gbV9mcmFtZS0+cGFnZSgpLT5wYWdlSUQoKTsKQEAg
LTU0MSw3ICs1NDEsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZh
aWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZQogICAgIGlmICghd2ViUGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZDogKHBhZ2VJ
RCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+
cGFnZUlEKCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CisgICAgUkVMRUFTRV9MT0coTmV0d29yaywg
IiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywg
d2ViUGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAg
IFJlZlB0cjxBUEk6Ok9iamVjdD4gdXNlckRhdGE7CiAKQEAgLTU3Nyw3ICs1NzcsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
UkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGlkRmFpbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
KSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkpOworICAgIFJF
TEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZEZhaWxMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiki
LCB0aGlzLCB3ZWJQYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBtX2ZyYW1lLT5mcmFtZUlEKCkp
OwogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsKIApAQCAtOTAxLDcgKzkwMSw5
IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihjb25zdCBOYXZpZ2F0CiAgICAgaWYgKHJlcXVlc3Rlci5mcmFtZUlEKCkg
JiYgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViRnJhbWUocmVxdWVzdGVyLmZyYW1lSUQoKSkp
CiAgICAgICAgIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YS5mcmFtZUlEID0gcmVxdWVzdGVyLmZy
YW1lSUQoKTsKIAotICAgIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlEID0gcmVxdWVzdGVyLnBh
Z2VJRCgpICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJ
RCgpKSA/IHJlcXVlc3Rlci5wYWdlSUQoKSA6IDA7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IG9yaWdpbmF0aW5nUGFnZUlEOworICAgIGlmIChyZXF1ZXN0ZXIucGFnZUlEKCkgJiYgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShyZXF1ZXN0ZXIucGFnZUlEKCkpKQorICAgICAg
ICBvcmlnaW5hdGluZ1BhZ2VJRCA9IHJlcXVlc3Rlci5wYWdlSUQoKTsKIAogICAgIE5hdmlnYXRp
b25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhOwogICAgIG5hdmlnYXRpb25BY3Rpb25E
YXRhLm5hdmlnYXRpb25UeXBlID0gYWN0aW9uLT5uYXZpZ2F0aW9uVHlwZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAppbmRleCBmNzNhYjhjYTczZjE3OGJmMjY4ZmYyYjg0MWM0NTFjZGQ0
OThmYWEzLi5jOGZiMmFmMjEyNTY2YzY0Njg2MDc3YTBjODlhZjgxMDUzOTBhNjgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGFwcGx5VG9Eb2N1bWVudExvYWRlcihXZWJzaXRlUG9saWNpZXNEYXRhJiYpOwogCi0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJDbGllbnQuY3BwIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVy
Q2xpZW50LmNwcAppbmRleCBlMWU5M2E2ZGUzNDY3ZWYxNDA5NDUzNDZkOGRiNGZkZDI3Mzg2NzAz
Li45ZTQ2ZDgwNzNiMzgwZTQyNTU0YmVjNWY0NDQ4MTNmNGU2ZjkzNmM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKQEAgLTM3LDE0ICszNywxNCBAQAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotdXNpbmcgUGFzc3dvcmRDYWxsYmFja01hcCA9IEhhc2hNYXA8
dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+PjsKK3VzaW5nIFBhc3N3b3Jk
Q2FsbGJhY2tNYXAgPSBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYpPj47CiBzdGF0aWMgUGFzc3dvcmRDYWxsYmFja01hcCYgcGFzc3dv
cmRDYWxsYmFja3MoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxQYXNzd29yZENhbGxi
YWNrTWFwPiBjYWxsYmFja01hcDsKICAgICByZXR1cm4gY2FsbGJhY2tNYXAuZ2V0KCk7CiB9CiAK
LVdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3Ry
aW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIHVpbnQ2NF90IHBhZ2VJRCkKK1dlYlBy
ZXZpZXdMb2FkZXJDbGllbnQ6OldlYlByZXZpZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBm
aWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKICAgICA6IG1fZmlsZU5hbWUgeyBmaWxlTmFtZSB9CiAgICAgLCBtX3V0aSB7IHV0aSB9CiAg
ICAgLCBtX3BhZ2VJRCB7IHBhZ2VJRCB9CkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgV2ViUHJldmll
d0xvYWRlckNsaWVudDo6ZGlkUmVxdWVzdFBhc3N3b3JkKEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Ry
aW5nJik+JiYKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUobV9maWxlTmFtZSksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpkaWRSZWNlaXZlUGFzc3dvcmQoY29uc3QgU3RyaW5nJiBwYXNzd29yZCwgdWludDY0X3Qg
cGFnZUlEKQordm9pZCBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlUGFzc3dvcmQo
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIEFTU0VSVChwYXNzd29yZENhbGxiYWNrcygpLmNvbnRhaW5zKHBhZ2VJRCkpOwogICAg
IGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBwYXNzd29yZENhbGxiYWNrcygpLnRha2UocGFnZUlE
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9p
b3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKaW5kZXggZjk5ODZlNDFj
YTJmMjUxZGIyYzNlNWQ4OGUwOGRmNTA2ODU0MDRlOC4uYmU4ODdhZDhhN2YwYjY1N2QxZmE0NTFk
MTgzM2NmMWNkNDRiNTM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50
LmgKQEAgLTM1LDE2ICszNSwxNiBAQCBjbGFzcyBXZWJGcmFtZTsKIAogY2xhc3MgV2ViUHJldmll
d0xvYWRlckNsaWVudCBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpQcmV2aWV3TG9hZGVyQ2xpZW50
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSwgdWludDY0X3QgcGFn
ZUlEKQorICAgIHN0YXRpYyBSZWY8V2ViUHJldmlld0xvYWRlckNsaWVudD4gY3JlYXRlKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQcmV2
aWV3TG9hZGVyQ2xpZW50KGZpbGVOYW1lLCB1dGksIHBhZ2VJRCkpOwogICAgIH0KICAgICB+V2Vi
UHJldmlld0xvYWRlckNsaWVudCgpOwogCi0gICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVBhc3N3
b3JkKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgc3RhdGljIHZvaWQgZGlk
UmVjZWl2ZVBhc3N3b3JkKGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
IAogcHJpdmF0ZToKLSAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYlByZXZp
ZXdMb2FkZXJDbGllbnQoY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGks
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICB2b2lkIGRpZFJlY2VpdmVEYXRhQXJyYXko
Q0ZBcnJheVJlZikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaWRGYWlsKCkgb3ZlcnJpZGU7CkBAIC01Myw3ICs1Myw3IEBAIHByaXZh
dGU6CiAKICAgICBjb25zdCBTdHJpbmcgbV9maWxlTmFtZTsKICAgICBjb25zdCBTdHJpbmcgbV91
dGk7Ci0gICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgUXVpY2tMb29rRG9jdW1lbnREYXRhIG1fZGF0YTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdp
bmdBcmVhLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVh
LmNwcAppbmRleCAyNzZiODBiZjI4ZjFmNWZkNDlhNmYwZmI0OTlkMzM1MTJhZGMxMDEwLi5jMDcz
OTZmMDJmMWZhNjVmNDVhY2VlNzJmMTM0ZjRmYjJkOWU4OTA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEuY3BwCkBAIC02OCw3ICs2OCw3IEBA
IERyYXdpbmdBcmVhOjpEcmF3aW5nQXJlYShEcmF3aW5nQXJlYVR5cGUgdHlwZSwgRHJhd2luZ0Fy
ZWFJZGVudGlmaWVyIGlkZW50aWZpZXIsCiAgICAgLCBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikK
ICAgICAsIG1fd2ViUGFnZSh3ZWJQYWdlKQogewotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpt
ZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwgKnRoaXMpOwogfQogCiBEcmF3aW5n
QXJlYTo6fkRyYXdpbmdBcmVhKCkKQEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBEcmF3aW5nQXJlYTo6
cmVtb3ZlTWVzc2FnZVJlY2VpdmVySWZOZWVkZWQoKQogICAgIGlmIChtX2hhc1JlbW92ZWRNZXNz
YWdlUmVjZWl2ZXIpCiAgICAgICAgIHJldHVybjsKICAgICBtX2hhc1JlbW92ZWRNZXNzYWdlUmVj
ZWl2ZXIgPSB0cnVlOwotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92ZU1lc3NhZ2VS
ZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9p
ZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6RHJhd2luZ0FyZWE6Om1lc3NhZ2VSZWNlaXZlck5h
bWUoKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcApp
bmRleCA2OTE4MzBiNTkzYzY3YWQzM2Q3N2EwZTY4YzU0N2E2MzFjNWFiNmQ3Li5jYWMxODhiMzRh
MmI3NTQwMjQyOTA3YzA1YzM5ZjgyMzM3NzFlMGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTg3LDcgKzg3LDcg
QEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbikKICAgICBjb25uZWN0aW9uLT5hZGRXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OkV2ZW50RGlzcGF0Y2hlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBt
X3F1ZXVlLmdldCgpLCB0aGlzKTsKIH0KIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OndoZWVsRXZl
bnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2ZW50LCBib29s
IGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2Fu
UnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKK3ZvaWQgRXZlbnRE
aXNwYXRjaGVyOjp3aGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViV2hl
ZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0LCBib29sIGNhblJ1
YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9vbCBjYW5SdWJiZXJC
YW5kQXRCb3R0b20pCiB7CiAjaWYgUExBVEZPUk0oQ09DT0EpIHx8IEVOQUJMRShBU1lOQ19TQ1JP
TExJTkcpCiAgICAgUGxhdGZvcm1XaGVlbEV2ZW50IHBsYXRmb3JtV2hlZWxFdmVudCA9IHBsYXRm
b3JtKHdoZWVsRXZlbnQpOwpAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVy
Ojp3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxF
dmVuCiB9CiAKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotdm9pZCBFdmVudERpc3Bh
dGNoZXI6Omdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2Vz
dHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2VzdHVyZUV2
ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQm
IGdlc3R1cmVFdmVudCkKIHsKICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgcGFnZUlELCBnZXN0dXJlRXZlbnRdKCkgbXV0YWJsZSB7
CiAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpc3BhdGNoR2VzdHVyZUV2ZW50KHBhZ2VJRCwgZ2Vz
dHVyZUV2ZW50KTsKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6Z2V0
UXVldWVkVG91Y2hFdmVudHNGb3JQYWdlKGNvbnN0IFdlYlBhZ2UmIHdlYlBhZ2UsIFRvdWNoRQog
ICAgIGRlc3RpbmF0aW9uUXVldWUgPSBtX3RvdWNoRXZlbnRzLnRha2Uod2ViUGFnZS5wYWdlSUQo
KSk7CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50KHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiB0b3VjaEV2ZW50KQordm9pZCBFdmVudERp
c3BhdGNoZXI6OnRvdWNoRXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJLaXQ6
OldlYlRvdWNoRXZlbnQmIHRvdWNoRXZlbnQpCiB7CiAgICAgYm9vbCB1cGRhdGVMaXN0V2FzRW1w
dHk7CiAgICAgewpAQCAtMTk0LDcgKzE5NCw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjp0b3Vj
aEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiB0CiAK
IHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFRvdWNoRXZlbnRzKCkKIHsKLSAgICBIYXNo
TWFwPHVpbnQ2NF90LCBUb3VjaEV2ZW50UXVldWU+IGxvY2FsQ29weTsKKyAgICBIYXNoTWFwPFBh
Z2VJZGVudGlmaWVyLCBUb3VjaEV2ZW50UXVldWU+IGxvY2FsQ29weTsKICAgICB7CiAgICAgICAg
IExvY2tIb2xkZXIgbG9ja2VyKCZtX3RvdWNoRXZlbnRzTG9jayk7CiAgICAgICAgIGxvY2FsQ29w
eS5zd2FwKG1fdG91Y2hFdmVudHMpOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaFRvdWNoRXZlbnRzKCkKIH0KICNlbmRpZgogCi12b2lkIEV2ZW50RGlz
cGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hl
ZWxFdmVudCYgd2hlZWxFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaFdoZWVs
RXZlbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50JiB3aGVlbEV2
ZW50KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIxOSw3ICsyMTks
NyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgdwogfQogCiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJF
X0VWRU5UUykKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQordm9pZCBF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoR2VzdHVyZUV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1
cmVFdmVuCiAjZW5kaWYKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCi12b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6c2VuZERpZFJlY2VpdmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdl
YkV2ZW50JiBldmVudCwgYm9vbCBkaWRIYW5kbGVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVy
OjpzZW5kRGlkUmVjZWl2ZUV2ZW50KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViRXZl
bnQmIGV2ZW50LCBib29sIGRpZEhhbmRsZUV2ZW50KQogewogICAgIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkUmVjZWl2ZUV2ZW50KHN0YXRpY19jYXN0PHVpbnQzMl90PihldmVudC50eXBlKCkp
LCBkaWRIYW5kbGVFdmVudCksIHBhZ2VJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5oCmluZGV4IDFkNDc3ODc3ZWFhZTQwNDUy
NmEwNzQ1MWMwNzE4Njk5N2E1NTBlNTQuLmUxYmJiZDQ3OTY5YmZiYjc1MmM2MWQyMWM2MWEyOWVl
ZmFkOTYyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2
ZW50RGlzcGF0Y2hlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5o
IgogCiAjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XaGVlbEV2ZW50RGVsdGFGaWx0ZXIuaD4KICNpbmNs
dWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTc3LDM4ICs3OCwzOCBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCi0gICAg
dm9pZCB3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYsIGJv
b2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBj
YW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKTsKKyAgICB2b2lk
IHdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYldoZWVsRXZlbnQm
LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJv
b2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSk7CiAjaWYg
RU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAgdm9pZCB0b3VjaEV2ZW50KHVpbnQ2NF90IHBh
Z2VJRCwgY29uc3QgV2ViVG91Y2hFdmVudCYpOworICAgIHZvaWQgdG91Y2hFdmVudChXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViVG91Y2hFdmVudCYpOwogI2VuZGlmCiAjaWYgRU5B
QkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKLSAgICB2b2lkIGdlc3R1cmVFdmVudCh1aW50NjRfdCBw
YWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOworICAgIHZvaWQgZ2VzdHVyZUV2ZW50KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICNlbmRpZgog
CiAKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgdm9pZCBk
aXNwYXRjaFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJXaGVlbEV2ZW50Jik7
CisgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYldoZWVsRXZlbnQmKTsKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICB2
b2lkIGRpc3BhdGNoVG91Y2hFdmVudHMoKTsKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVS
RV9FVkVOVFMpCi0gICAgdm9pZCBkaXNwYXRjaEdlc3R1cmVFdmVudCh1aW50NjRfdCBwYWdlSUQs
IGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOworICAgIHZvaWQgZGlzcGF0Y2hHZXN0dXJlRXZlbnQo
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYpOwogI2VuZGlm
CiAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotICAgIHZvaWQgc2VuZERpZFJlY2VpdmVF
dmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiwgYm9vbCBkaWRIYW5kbGVFdmVu
dCk7CisgICAgdm9pZCBzZW5kRGlkUmVjZWl2ZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
LCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlkSGFuZGxlRXZlbnQpOwogI2VuZGlmCiAKICAgICBS
ZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogCiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKICAg
ICBMb2NrIG1fc2Nyb2xsaW5nVHJlZXNNdXRleDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQ
dHI8V2ViQ29yZTo6VGhyZWFkZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxpbmdUcmVlczsKKyAg
ICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViQ29yZTo6VGhyZWFk
ZWRTY3JvbGxpbmdUcmVlPj4gbV9zY3JvbGxpbmdUcmVlczsKICNlbmRpZgogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJDb3JlOjpXaGVlbEV2ZW50RGVsdGFGaWx0ZXI+IG1fcmVjZW50V2hlZWxFdmVu
dERlbHRhRmlsdGVyOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogICAgIExvY2sgbV90
b3VjaEV2ZW50c0xvY2s7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgVG91Y2hFdmVudFF1ZXVlPiBt
X3RvdWNoRXZlbnRzOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFRvdWNo
RXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3Nh
Z2VzLmluCmluZGV4IDVlMTU0M2M5OGNjZmE0MTQwMWMyNzUzOGM2Mjk5ZjlhNTgwZjM2N2IuLmFm
OTA0YjQ1MTZhMTA5ODA4NTRjMWEzNDRlNjEyMmNmZDcxNjRiODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVz
c2FnZXMuaW4KQEAgLTIxLDExICsyMSwxMSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAt
PiBFdmVudERpc3BhdGNoZXIgewotICAgIFdoZWVsRXZlbnQodWludDY0X3QgcGFnZUlELCBXZWJL
aXQ6OldlYldoZWVsRXZlbnQgZXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBj
YW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnVi
YmVyQmFuZEF0Qm90dG9tKQorICAgIFdoZWVsRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
cGFnZUlELCBXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0
TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRUb3As
IGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRT
KQotICAgIFRvdWNoRXZlbnQodWludDY0X3QgcGFnZUlELCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQg
ZXZlbnQpCisgICAgVG91Y2hFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdl
YktpdDo6V2ViVG91Y2hFdmVudCBldmVudCkKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVS
RV9FVkVOVFMpCi0gICAgR2VzdHVyZUV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJH
ZXN0dXJlRXZlbnQgZXZlbnQpCisgICAgR2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQgZXZlbnQpCiAjZW5kaWYKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJl
ZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbQpp
bmRleCBiNzUyYzFjNTRkNDZmMDhkZGE2NjViNWYzNTY0ZDU0MmE2NjVlY2Y2Li5iMjkxZGYwYjdk
ZmRmNzkzOWU3ZGFhZTcyMzQyMDI2NWRiMTljMzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2lu
Z0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5
ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC03NSw3ICs3NSw3IEBAIFJl
bW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYShXZWJQ
YWdlJiB3ZWJQYWdlLCBjb25zdCBXCiAgICAgLy8gRklYTUU6IFdoaWxlIHVzaW5nIHRoZSBoaWdo
IGVuZCBvZiB0aGUgcmFuZ2Ugb2YgRGlzcGxheUlEcyBtYWtlcyBhIGNvbGxpc2lvbiB3aXRoIHJl
YWwsIG5vbi1SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYQogICAgIC8vIERpc3BsYXlJRHMgbGVz
cyBsaWtlbHksIGl0IGlzIG5vdCBlbnRpcmVseSBzYWZlIHRvIGhhdmUgYSBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYSBhbmQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEKICAgICAvLyBj
b2VleGlzdCBpbiB0aGUgc2FtZSBwcm9jZXNzLgotICAgIHdlYlBhZ2Uud2luZG93U2NyZWVuRGlk
Q2hhbmdlKHN0ZDo6bnVtZXJpY19saW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFn
ZUlEKCkpOworICAgIHdlYlBhZ2Uud2luZG93U2NyZWVuRGlkQ2hhbmdlKHN0ZDo6bnVtZXJpY19s
aW1pdHM8dWludDMyX3Q+OjptYXgoKSAtIHdlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiB9
CiAKIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjp+UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWEoKQpAQCAtNDM0LDcgKzQzNCw3IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWE6
OmZsdXNoTGF5ZXJzKCkKICAgICBSZWZQdHI8QmFja2luZ1N0b3JlRmx1c2hlcj4gYmFja2luZ1N0
b3JlRmx1c2hlciA9IEJhY2tpbmdTdG9yZUZsdXNoZXI6OmNyZWF0ZShXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLCBXVEZNb3ZlKGNvbW1pdEVuY29kZXIp
LCBXVEZNb3ZlKGNvbnRleHRzVG9GbHVzaCkpOwogICAgIG1fcGVuZGluZ0JhY2tpbmdTdG9yZUZs
dXNoZXIgPSBiYWNraW5nU3RvcmVGbHVzaGVyOwogCi0gICAgdWludDY0X3QgcGFnZUlEID0gbV93
ZWJQYWdlLnBhZ2VJRCgpOworICAgIGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlLnBhZ2VJRCgpOwog
ICAgIGRpc3BhdGNoX2FzeW5jKG1fY29tbWl0UXVldWUsIFtiYWNraW5nU3RvcmVGbHVzaGVyID0g
V1RGTW92ZShiYWNraW5nU3RvcmVGbHVzaGVyKSwgcGFnZUlEXSB7CiAgICAgICAgIGJhY2tpbmdT
dG9yZUZsdXNoZXItPmZsdXNoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmNwcAppbmRleCBjM2E5NTI1NjUz
MjZlNzQ5ZTUyNjExMzJiMDQ0YWE1ODg4MDJjMDRmLi41Y2Y0NDQwN2UzZmIzZjY3YTAzNDcwMDNk
MDQ3OGQ3NDE5OTMyNDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZv
aWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OmluaXRpYWxpemVDb25uZWN0aW9uKElQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbikKICAgICBjb25uZWN0aW9uLT5hZGRXb3JrUXVldWVNZXNzYWdlUmVj
ZWl2ZXIoTWVzc2FnZXM6OlZpZXdVcGRhdGVEaXNwYXRjaGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1fcXVldWUuZ2V0KCksIHRoaXMpOwogfQogCi12b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVy
Ojp2aXNpYmxlQ29udGVudFJlY3RVcGRhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBWaXNpYmxl
Q29udGVudFJlY3RVcGRhdGVJbmZvJiB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKQordm9p
ZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5m
byYgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbykKIHsKICAgICBib29sIHVwZGF0ZUxpc3RX
YXNFbXB0eTsKICAgICB7CkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgVmlld1VwZGF0ZURpc3BhdGNo
ZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFZpc2li
CiAKIHZvaWQgVmlld1VwZGF0ZURpc3BhdGNoZXI6OmRpc3BhdGNoVmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlKCkKIHsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBVcGRhdGVEYXRhPiB1cGRhdGU7Cisg
ICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVXBkYXRlRGF0YT4gdXBkYXRlOwogICAgIHsKICAg
ICAgICAgTG9ja0hvbGRlciBsb2NrZXIoJm1fZGF0YU11dGV4KTsKICAgICAgICAgdXBkYXRlID0g
V1RGTW92ZShtX2xhdGVzdFVwZGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIuaAppbmRleCBlNDdkYzRlMWQ0MTY4
MjIzNDBhZmFkZWEyYTNjODA2MjBmNGIyMDg4Li5jYTdkMjAwYzJiY2Y2NWU3N2I4MGEyOWRmYWMx
OTQzZWMyZGQ0MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9WaWV3VXBkYXRlRGlzcGF0Y2hlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJDb25uZWN0aW9uLmgiCiAKICNpbmNsdWRlICJWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZv
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBA
IC00Nyw3ICs0OCw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpXb3JrUXVl
dWVNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAotICAgIHZvaWQgdmlzaWJsZUNvbnRl
bnRSZWN0VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBk
YXRlSW5mbyYpOworICAgIHZvaWQgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBjb25zdCBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvJik7CiAKICAg
ICB2b2lkIGRpc3BhdGNoVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlKCk7CiAKQEAgLTU4LDcgKzU5
LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7CiAgICAgTG9jayBt
X2RhdGFNdXRleDsKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBVcGRhdGVEYXRhPiBtX2xhdGVzdFVw
ZGF0ZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBVcGRhdGVEYXRhPiBt
X2xhdGVzdFVwZGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlz
cGF0Y2hlci5tZXNzYWdlcy5pbgppbmRleCAxN2UyYzhkZDE4NmFkMjc2ZTU1OGFjYzg4MGMyNjg4
ZDUwMzU4ZmU2Li5kOTJlZWI4ODlkMDk1NzJhMWQyMjZlODNjN2NlMTNmNTk2MTAyNmM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlzcGF0
Y2hlci5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9W
aWV3VXBkYXRlRGlzcGF0Y2hlci5tZXNzYWdlcy5pbgpAQCAtMjEsNSArMjEsNSBAQAogIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogCiBtZXNzYWdlcyAtPiBWaWV3VXBkYXRlRGlzcGF0Y2hlciB7Ci0gICAgVmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGVJbmZvIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8pCisgICAgVmlzaWJs
ZUNvbnRlbnRSZWN0VXBkYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0
OjpWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZUlu
Zm8pCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJC
YWNrRm9yd2FyZExpc3RQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJCYWNrRm9yd2FyZExpc3RQcm94eS5jcHAKaW5kZXggMjExZDYwMWVmMGI0NGY1MmFhMmRl
OTYzZTg0NTNmODZjNTJmOGZkNC4uN2EwYzBjODBmZThjYzYwMTE2OTNkN2I0NTI3YWJlYzdlOWU1
ZTc0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFj
a0ZvcndhcmRMaXN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMg
SURUb0hpc3RvcnlJdGVtTWFwJiBpZFRvSGlzdG9yeUl0ZW1NYXAoKQogICAgIHJldHVybiBtYXA7
CiB9CiAKLXZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9tVUlQcm9jZXNz
KGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgUmVmPEhpc3RvcnlJdGVt
PiYmIGl0ZW0sIHVpbnQ2NF90IHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtIG92ZXJ3cml0
ZUV4aXN0aW5nSXRlbSkKK3ZvaWQgV2ViQmFja0ZvcndhcmRMaXN0UHJveHk6OmFkZEl0ZW1Gcm9t
VUlQcm9jZXNzKGNvbnN0IEJhY2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCwgUmVmPEhp
c3RvcnlJdGVtPiYmIGl0ZW0sIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgT3ZlcndyaXRlRXhpc3Rp
bmdJdGVtIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSkKIHsKICAgICAvLyBUaGlzIGl0ZW0vaXRlbUlE
IHBhaXIgc2hvdWxkIG5vdCBhbHJlYWR5IGV4aXN0IGluIG91ciBtYXAuCiAgICAgQVNTRVJUX1VO
VVNFRChvdmVyd3JpdGVFeGlzdGluZ0l0ZW0sIG92ZXJ3cml0ZUV4aXN0aW5nSXRlbSA9PSBPdmVy
d3JpdGVFeGlzdGluZ0l0ZW06OlllcyB8fCAhaWRUb0hpc3RvcnlJdGVtTWFwKCkuY29udGFpbnMo
aXRlbUlEKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJCYWNrRm9yd2FyZExpc3RQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAppbmRleCBmM2IxYzhhZjU0ODIzYzNlODI2OGQ2
YWU1OGU0MGE2ZjYxNTRkMDgxLi5kMWJhYWRiOTFjNTU4NjFiMTU0M2I5NzE3NjQ4NjJiNWQyMjM5
Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNr
Rm9yd2FyZExpc3RQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9CYWNrRm9yd2FyZENsaWVudC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CkBAIC00Nyw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgWWVzLAog
ICAgICAgICBObwogICAgIH07Ci0gICAgdm9pZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBX
ZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJ
dGVtPiYmLCB1aW50NjRfdCBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSk7CisgICAgdm9p
ZCBhZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVu
dGlmaWVyJiwgUmVmPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiYmLCBXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgT3ZlcndyaXRlRXhpc3RpbmdJdGVtKTsKIAogICAgIHZvaWQgY2xlYXIoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAKaW5k
ZXggMTYwZWRlZmQ1OWQxMGEwMjNlNGFmMjUxYmUyYjFhOWIyYTk4YjJkNS4uNzM4YmU5MmI5MmRj
NzNkMmRmNjc3ZWUzNGVjMTMwODFhNjBmMWExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCkBAIC0zOCw2ICszOCw4IEBACiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogY2xhc3MgV2Vi
U3RvcmFnZVNlc3Npb25Qcm92aWRlciA6IHB1YmxpYyBXZWJDb3JlOjpTdG9yYWdlU2Vzc2lvblBy
b3ZpZGVyIHsKICAgICAvLyBOZXR3b3JrU3RvcmFnZVNlc3Npb25zIGFyZSBhY2Nlc3NlZCBvbmx5
IGluIHRoZSBOZXR3b3JrUHJvY2Vzcy4KICAgICBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24qIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbnVsbHB0cjsgfQpAQCAt
NDksNyArNTEsNyBAQCBXZWJDb29raWVKYXI6OldlYkNvb2tpZUphcigpCiBTdHJpbmcgV2ViQ29v
a2llSmFyOjpjb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
cmwpIGNvbnN0CiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAgZnJh
bWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBhZ2VJ
RCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTY2LDcgKzY4LDcgQEAg
U3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgdXJsKSBjb25zdAogdm9pZCBXZWJDb29raWVKYXI6OnNldENvb2tpZXMoV2Vi
Q29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVTdHJpbmcpCiB7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEOwogICAgIGlmIChhdXRvKiBmcmFtZSA9IGRvY3VtZW50LmZyYW1lKCkpIHsKICAgICAgICAg
ZnJhbWVJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCk7CiAgICAgICAgIHBh
Z2VJRCA9IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKTsKQEAgLTgzLDcgKzg1LDcg
QEAgYm9vbCBXZWJDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6OkRvY3Vt
ZW50JiBkb2N1bWVudCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGQ6OnBhaXI8
U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IFdlYkNvb2tpZUphcjo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25J
RCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBp
bmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVD
b29raWVzKSBjb25zdAogewogICAgIFN0cmluZyBjb29raWVTdHJpbmc7CiAgICAgYm9vbCBzZWN1
cmVDb29raWVzQWNjZXNzZWQgPSBmYWxzZTsKQEAgLTk1LDcgKzk3LDcgQEAgc3RkOjpwYWlyPFN0
cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tp
ZVJlcXVlc3RIZWEKIGJvb2wgV2ViQ29va2llSmFyOjpnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNv
cmU6OkRvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JiByYXdDb29raWVzKSBjb25zdAogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgp
KSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgp
OwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCmluZGV4
IDk3ZGQ3NmY2NjRjM2Y1NTNhZGZjOGU3NmJiODVlYTNmMTExZTUxMWUuLjU1OWJkMGU1MGJiZWMz
NWZmYjI1NmI5MTJiN2I0NmRhOTk0YjJkNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5oCkBAIC0zNiw3ICszNiw3IEBAIHB1YmxpYzoKICAg
ICBTdHJpbmcgY29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYpIGNvbnN0IGZp
bmFsOwogICAgIHZvaWQgc2V0Q29va2llcyhXZWJDb3JlOjpEb2N1bWVudCYsIGNvbnN0IFVSTCYs
IGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSBmaW5hbDsKICAgICBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IFdlYkNvcmU6OkRvY3VtZW50JikgY29uc3QgZmluYWw7Ci0gICAgc3RkOjpwYWly
PFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBXZWJD
b3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJ
RCwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpJbmNsdWRlU2Vj
dXJlQ29va2llcykgY29uc3QgZmluYWw7CiAgICAgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdl
YkNvcmU6OkRvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpEb2N1bWVu
dCYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkgZmluYWw7CiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCmluZGV4
IDg5MGM1ZTU2YWMwNGNlNzNmNDVlZTA3ZDk3ODM1MWZkMzFjYWE1MjEuLjRhZjQ5NWE1MWI5MDM3
MjZmM2JiNjRjM2E0ZGUzMTUxZDk5ZmJiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgdWludDY0
X3QgZ2VuZXJhdGVMaXN0ZW5lcklEKCkKIFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdp
dGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUp
CiB7CiAgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShzdGQ6OnVuaXF1ZV9wdHI8V2ViRnJhbWVMb2Fk
ZXJDbGllbnQ+KHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oJmNvcmVGcmFtZS0+
bG9hZGVyKCkuY2xpZW50KCkpKSk7Ci0gICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRDcmVhdGVNYWluRnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBwYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZU1haW5G
cmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBmcmFtZS0+bV9jb3JlRnJhbWUgPSBjb3Jl
RnJhbWU7CiAgICAgZnJhbWUtPm1fY29yZUZyYW1lLT50cmVlKCkuc2V0TmFtZShTdHJpbmcoKSk7
CkBAIC0xMjEsNyArMTIxLDcgQEAgUmVmPFdlYkZyYW1lPiBXZWJGcmFtZTo6Y3JlYXRlV2l0aENv
cmVNYWluRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6RnJhbWUqIGMKIFJlZjxXZWJGcmFt
ZT4gV2ViRnJhbWU6OmNyZWF0ZVN1YmZyYW1lKFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYg
ZnJhbWVOYW1lLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCkKIHsKICAgICBh
dXRvIGZyYW1lID0gY3JlYXRlKHN0ZDo6bWFrZV91bmlxdWU8V2ViRnJhbWVMb2FkZXJDbGllbnQ+
KCkpOwotICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlU3Vi
ZnJhbWUoZnJhbWUtPmZyYW1lSUQoKSksIHBhZ2UtPnBhZ2VJRCgpKTsKKyAgICBwYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlE
KCkpKTsKIAogICAgIGF1dG8gY29yZUZyYW1lID0gRnJhbWU6OmNyZWF0ZShwYWdlLT5jb3JlUGFn
ZSgpLCBvd25lckVsZW1lbnQsIGZyYW1lLT5tX2ZyYW1lTG9hZGVyQ2xpZW50LmdldCgpKTsKICAg
ICBmcmFtZS0+bV9jb3JlRnJhbWUgPSBjb3JlRnJhbWUucHRyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5jcHAKaW5kZXggYzk2NTJl
OTRhZjg2YjYwZTdmZGU3MzYyNWQxMWI1YWJjZWE0YzlkYS4uYmNmZjhlMmE4OTZmZjAyZTgyNTE2
NTI3ODExOWJkMWZlYjQ2MjFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmNwcApAQCAtNTgsNyArNTgsNyBAQCBXZWJJbnNwZWN0
b3JVSTo6V2ViSW5zcGVjdG9yVUkoV2ViUGFnZSYgcGFnZSkKICNlbmRpZgogfQogCi12b2lkIFdl
Ykluc3BlY3RvclVJOjplc3RhYmxpc2hDb25uZWN0aW9uKHVpbnQ2NF90IGluc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKQordm9p
ZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJsaXNoQ29ubmVjdGlvbihQYWdlSWRlbnRpZmllciBpbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25M
ZXZlbCkKIHsKICAgICBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVyID0gaW5zcGVjdGVkUGFnZUlk
ZW50aWZpZXI7CiAgICAgbV9mcm9udGVuZEFQSURpc3BhdGNoZXIucmVzZXQoKTsKQEAgLTE2Nyw3
ICsxNjcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclVJOjpjbG9zZVdpbmRvdygpCiAgICAgaWYgKG1f
ZnJvbnRlbmRIb3N0KQogICAgICAgICBtX2Zyb250ZW5kSG9zdC0+ZGlzY29ubmVjdENsaWVudCgp
OwogCi0gICAgbV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllciA9IDA7CisgICAgbV9pbnNwZWN0ZWRQ
YWdlSWRlbnRpZmllciA9IHsgfTsKICAgICBtX3VuZGVyVGVzdCA9IGZhbHNlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaAppbmRl
eCA4MzgxYmYxY2VkZWNiNjVjNWQ0NzQ3NWMyMmI3ZDNkYjYyZmJmZDhlLi45NDI0YmZlMWYyNmNm
ZGMxNjkwN2M3ODFmZWY0ZDZkMDVjNWVjZTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3JVSS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJXZWJJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0
b3JGcm9udGVuZEhvc3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEluc3BlY3RvckNvbnRyb2xsZXI7CkBAIC01Miw3
ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVJbnZhbGlkTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OlN0cmluZ1JlZmVyZW5jZSwgSVBDOjpTdHJpbmdSZWZlcmVuY2Up
IG92ZXJyaWRlIHsgY2xvc2VXaW5kb3coKTsgfQogCiAgICAgLy8gQ2FsbGVkIGJ5IFdlYkluc3Bl
Y3RvclVJIG1lc3NhZ2VzCi0gICAgdm9pZCBlc3RhYmxpc2hDb25uZWN0aW9uKHVpbnQ2NF90IGlu
c3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlv
bkxldmVsKTsKKyAgICB2b2lkIGVzdGFibGlzaENvbm5lY3Rpb24oV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBp
bnNwZWN0aW9uTGV2ZWwpOwogICAgIHZvaWQgdXBkYXRlQ29ubmVjdGlvbigpOwogCiAgICAgdm9p
ZCBzaG93Q29uc29sZSgpOwpAQCAtMTMzLDcgKzEzNCw3IEBAIHByaXZhdGU6CiAgICAgLy8gY29y
ZVBhZ2UoKSwgc2luY2Ugd2UgbWF5IG5lZWQgaXQgYWZ0ZXIgdGhlIGZyb250ZW5kJ3MgcGFnZSBo
YXMgc3RhcnRlZCBkZXN0cnVjdGlvbi4KICAgICBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
KiBtX2Zyb250ZW5kQ29udHJvbGxlciB7IG51bGxwdHIgfTsKIAotICAgIHVpbnQ2NF90IG1faW5z
cGVjdGVkUGFnZUlkZW50aWZpZXIgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9pbnNwZWN0ZWRQYWdlSWRlbnRpZmllcjsKICAgICBib29sIG1fdW5kZXJUZXN0IHsgZmFsc2Ug
fTsKICAgICBib29sIG1fZG9ja2luZ1VuYXZhaWxhYmxlIHsgZmFsc2UgfTsKICAgICBib29sIG1f
aXNWaXNpYmxlIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KaW5kZXggZGVhMGZlNTg0
ZDRlZjBmODZmYTk3MTY2MmJiNDdiNDFhN2Y2MTNiZi4uNDMxOTBhYTgzNGRjYWE2Njk2NGJiYmE5
NTUwMDgyMWZiN2Q2MTAyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkubWVzc2FnZXMuaW4KQEAgLTIxLDcgKzIxLDcg
QEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gV2ViSW5zcGVjdG9yVUkgewotICAgIEVz
dGFibGlzaENvbm5lY3Rpb24odWludDY0X3QgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wg
dW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCisgICAgRXN0YWJsaXNoQ29ubmVj
dGlvbihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9v
bCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKICAgICBVcGRhdGVDb25uZWN0
aW9uKCkKIAogICAgIEF0dGFjaGVkQm90dG9tKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggNzZmN2M1Y2JmOTBjNTVkMzY3Mzk3OTRjNGVlMmM5
NmMxNjcyM2IwOC4uOGIwYjMzODFiYTlkMWNiMDBhZjFjZDVlNGQ0ZmUwYzAyNzllNDQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM2MCw3
ICszNjAsNyBAQCBwcml2YXRlOgogCiBERUZJTkVfREVCVUdfT05MWV9HTE9CQUwoV1RGOjpSZWZD
b3VudGVkTGVha0NvdW50ZXIsIHdlYlBhZ2VDb3VudGVyLCAoIldlYlBhZ2UiKSk7CiAKLVJlZjxX
ZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK1JlZjxXZWJQYWdlPiBXZWJQYWdlOjpjcmVhdGUoUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKIHsKICAgICBSZWY8V2ViUGFnZT4gcGFnZSA9IGFkb3B0UmVmKCpuZXcgV2ViUGFnZShwYWdl
SUQsIFdURk1vdmUocGFyYW1ldGVycykpKTsKIApAQCAtMzcwLDcgKzM3MCw3IEBAIFJlZjxXZWJQ
YWdlPiBXZWJQYWdlOjpjcmVhdGUodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYgcGFyYW1lCiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKLVdlYlBhZ2U6OldlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
K1dlYlBhZ2U6OldlYlBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICA6IG1fcGFnZUlEKHBhZ2VJRCkKICAgICAsIG1f
dmlld1NpemUocGFyYW1ldGVycy52aWV3U2l6ZSkKICAgICAsIG1fYWx3YXlzU2hvd3NIb3Jpem9u
dGFsU2Nyb2xsZXIgeyBwYXJhbWV0ZXJzLmFsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyIH0K
QEAgLTgzMSw3ICs4MzEsNyBAQCBJUEM6OkNvbm5lY3Rpb24qIFdlYlBhZ2U6Om1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGFnZTo6bWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdAogewotICAgIHJldHVybiBwYWdlSUQoKTsKKyAgICByZXR1cm4g
cGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQpAQCAt
MTY0OCw3ICsxNjQ4LDcgQEAgdm9pZCBXZWJQYWdlOjpnb1RvQmFja0ZvcndhcmRJdGVtKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgY29uc3QgQmFja0ZvcndhcmRJdGVtSWQKICAgICBpZiAoIWl0ZW0p
CiAgICAgICAgIHJldHVybjsKIAotICAgIExPRyhMb2FkaW5nLCAiSW4gV2ViUHJvY2VzcyBwaWQg
JWksIFdlYlBhZ2UgJSIgUFJJdTY0ICIgaXMgbmF2aWdhdGluZyB0byBiYWNrL2ZvcndhcmQgVVJM
ICVzIiwgZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX3BhZ2VJRCwgaXRlbS0+dXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKExvYWRpbmcsICJJbiBXZWJQcm9jZXNzIHBpZCAl
aSwgV2ViUGFnZSAlIiBQUkl1NjQgIiBpcyBuYXZpZ2F0aW5nIHRvIGJhY2svZm9yd2FyZCBVUkwg
JXMiLCBnZXRDdXJyZW50UHJvY2Vzc0lEKCksIG1fcGFnZUlELnRvVUludDY0KCksIGl0ZW0tPnVy
bCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdOYXZp
Z2F0aW9uSUQpOwogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25JRDsKQEAg
LTIwNzYsNyArMjA3Niw3IEBAIGJvb2wgV2ViUGFnZTo6c2V0Rml4ZWRMYXlvdXRTaXplKGNvbnN0
IEludFNpemUmIHNpemUpCiAgICAgaWYgKCF2aWV3IHx8IHZpZXctPmZpeGVkTGF5b3V0U2l6ZSgp
ID09IHNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIExPR19XSVRIX1NUUkVBTShW
aXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlEIDw8ICIgc2V0Rml4
ZWRMYXlvdXRTaXplICIgPDwgc2l6ZSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0
cywgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQudG9VSW50NjQoKSA8PCAiIHNldEZp
eGVkTGF5b3V0U2l6ZSAiIDw8IHNpemUpOwogICAgIHZpZXctPnNldEZpeGVkTGF5b3V0U2l6ZShz
aXplKTsKIAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Rml4ZWRMYXlvdXRTaXpl
RGlkQ2hhbmdlKHNpemUpKTsKQEAgLTI1MDQsNyArMjUwNCw3IEBAIGNvbnN0IFdlYkV2ZW50KiBX
ZWJQYWdlOjpjdXJyZW50RXZlbnQoKQogdm9pZCBXZWJQYWdlOjpmcmVlemVMYXllclRyZWUoTGF5
ZXJUcmVlRnJlZXplUmVhc29uIHJlYXNvbikKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3Vz
cGVuc2lvbiwgIiVwIC0gV2ViUGFnZSAoUGFnZUlEPSVsbHUpIC0gQWRkaW5nIGEgcmVhc29uICVk
IHRvIGZyZWV6ZSBsYXllciB0cmVlOyBjdXJyZW50IHJlYXNvbnMgYXJlICVkIiwKLSAgICAgICAg
dGhpcywgbV9wYWdlSUQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24pLCBtX2xheWVyVHJl
ZUZyZWV6ZVJlYXNvbnMudG9SYXcoKSk7CisgICAgICAgIHRoaXMsIG1fcGFnZUlELnRvVUludDY0
KCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24pLCBtX2xheWVyVHJlZUZyZWV6ZVJlYXNv
bnMudG9SYXcoKSk7CiAgICAgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLmFkZChyZWFzb24pOwog
ICAgIHVwZGF0ZURyYXdpbmdBcmVhTGF5ZXJUcmVlRnJlZXplU3RhdGUoKTsKIH0KQEAgLTI1MTIs
NyArMjUxMiw3IEBAIHZvaWQgV2ViUGFnZTo6ZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6
ZVJlYXNvbiByZWFzb24pCiB2b2lkIFdlYlBhZ2U6OnVuZnJlZXplTGF5ZXJUcmVlKExheWVyVHJl
ZUZyZWV6ZVJlYXNvbiByZWFzb24pCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICIlcCAtIFdlYlBhZ2UgKFBhZ2VJRD0lbGx1KSAtIFJlbW92aW5nIGEgcmVhc29uICVkIHRv
IGZyZWV6ZSBsYXllciB0cmVlOyBjdXJyZW50IHJlYXNvbnMgYXJlICVkIiwKLSAgICAgICAgdGhp
cywgbV9wYWdlSUQsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24pLCBtX2xheWVyVHJlZUZy
ZWV6ZVJlYXNvbnMudG9SYXcoKSk7CisgICAgICAgIHRoaXMsIG1fcGFnZUlELnRvVUludDY0KCks
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZWFzb24pLCBtX2xheWVyVHJlZUZyZWV6ZVJlYXNvbnMu
dG9SYXcoKSk7CiAgICAgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnJlbW92ZShyZWFzb24pOwog
ICAgIHVwZGF0ZURyYXdpbmdBcmVhTGF5ZXJUcmVlRnJlZXplU3RhdGUoKTsKIH0KQEAgLTMxNjgs
NyArMzE2OCw3IEBAIHZvaWQgV2ViUGFnZTo6dmlzaWJpbGl0eURpZENoYW5nZSgpCiAKIHZvaWQg
V2ViUGFnZTo6c2V0QWN0aXZpdHlTdGF0ZShPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4g
YWN0aXZpdHlTdGF0ZSwgQWN0aXZpdHlTdGF0ZUNoYW5nZUlEIGFjdGl2aXR5U3RhdGVDaGFuZ2VJ
RCwgY29uc3QgVmVjdG9yPENhbGxiYWNrSUQ+JiBjYWxsYmFja0lEcykKIHsKLSAgICBMT0dfV0lU
SF9TVFJFQU0oQWN0aXZpdHlTdGF0ZSwgc3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgcGFnZUlEKCkg
PDwgIiBzZXRBY3Rpdml0eVN0YXRlIHRvICIgPDwgYWN0aXZpdHlTdGF0ZSk7CisgICAgTE9HX1dJ
VEhfU1RSRUFNKEFjdGl2aXR5U3RhdGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IHBhZ2VJRCgp
LnRvVUludDY0KCkgPDwgIiBzZXRBY3Rpdml0eVN0YXRlIHRvICIgPDwgYWN0aXZpdHlTdGF0ZSk7
CiAKICAgICBhdXRvIGNoYW5nZWQgPSBtX2FjdGl2aXR5U3RhdGUgXiBhY3Rpdml0eVN0YXRlOwog
ICAgIG1fYWN0aXZpdHlTdGF0ZSA9IGFjdGl2aXR5U3RhdGU7CkBAIC0zMTc2LDcgKzMxNzYsNyBA
QCB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6
OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdAogICAgIGlmIChjaGFuZ2VkKQogICAgICAgICB1cGRh
dGVUaHJvdHRsZVN0YXRlKCk7CiAKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fcGFnZSwgInNl
dEFjdGl2aXR5U3RhdGUgY2FsbGVkIG9uICUiIFBSSXU2NCAiIGJ1dCBXZWJDb3JlIHBhZ2Ugd2Fz
IG51bGwiLCBwYWdlSUQoKSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BhZ2UsICJzZXRB
Y3Rpdml0eVN0YXRlIGNhbGxlZCBvbiAlIiBQUkl1NjQgIiBidXQgV2ViQ29yZSBwYWdlIHdhcyBu
dWxsIiwgcGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgaWYgKG1fcGFnZSkgewogICAgICAgICBT
ZXRGb3JTY29wZTxPcHRpb25TZXQ8QWN0aXZpdHlTdGF0ZTo6RmxhZz4+IGN1cnJlbnRseUNoYW5n
aW5nQWN0aXZpdHlTdGF0ZSB7IG1fbGFzdEFjdGl2aXR5U3RhdGVDaGFuZ2VzLCBjaGFuZ2VkIH07
CiAgICAgICAgIG1fcGFnZS0+c2V0QWN0aXZpdHlTdGF0ZShhY3Rpdml0eVN0YXRlKTsKQEAgLTQz
MzksNyArNDMzOSw3IEBAIHZvaWQgV2ViUGFnZTo6bWFpbkZyYW1lRGlkTGF5b3V0KCkKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1haW5G
cmFtZVZpZXcoKSkgewogICAgICAgICBJbnRTaXplIG5ld0NvbnRlbnRTaXplID0gZnJhbWVWaWV3
LT5jb250ZW50c1NpemUoKTsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywg
c3RyZWFtIDw8ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQgPDwgIiBtYWluRnJhbWVEaWRMYXlvdXQg
c2V0dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBuZXdDb250ZW50U2l6ZSk7CisgICAgICAgIExP
R19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFn
ZUlELnRvVUludDY0KCkgPDwgIiBtYWluRnJhbWVEaWRMYXlvdXQgc2V0dGluZyBjb250ZW50IHNp
emUgdG8gIiA8PCBuZXdDb250ZW50U2l6ZSk7CiAgICAgICAgIGlmIChtX3ZpZXdwb3J0Q29uZmln
dXJhdGlvbi5zZXRDb250ZW50c1NpemUobmV3Q29udGVudFNpemUpKQogICAgICAgICAgICAgdmll
d3BvcnRDb25maWd1cmF0aW9uQ2hhbmdlZCgpOwogICAgIH0KQEAgLTU3NDIsNyArNTc0Miw3IEBA
IHZvaWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAgCiAgICAg
Ym9vbCB2aWV3cG9ydENoYW5nZWQgPSBmYWxzZTsKIAotICAgIExPR19XSVRIX1NUUkVBTShWaXNp
YmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFnZUlEIDw8ICIgZGlkQ29tbWl0
TG9hZCBzZXR0aW5nIGNvbnRlbnQgc2l6ZSB0byAiIDw8IGNvcmVGcmFtZS0+dmlldygpLT5jb250
ZW50c1NpemUoKSk7CisgICAgTE9HX1dJVEhfU1RSRUFNKFZpc2libGVSZWN0cywgc3RyZWFtIDw8
ICJXZWJQYWdlICIgPDwgbV9wYWdlSUQudG9VSW50NjQoKSA8PCAiIGRpZENvbW1pdExvYWQgc2V0
dGluZyBjb250ZW50IHNpemUgdG8gIiA8PCBjb3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXpl
KCkpOwogICAgIGlmIChtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXRDb250ZW50c1NpemUoY29y
ZUZyYW1lLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKSkKICAgICAgICAgdmlld3BvcnRDaGFuZ2Vk
ID0gdHJ1ZTsKIApAQCAtNjA1Niw3ICs2MDU2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZW5kRWRpdG9y
U3RhdGVVcGRhdGUoKQogICAgIC8vIElmIHRoYXQgaXMgdGhlIGNhc2UsIGp1c3Qgc2VuZCB3aGF0
IHdlIGhhdmUgKGkuZS4gZG9uJ3QgaW5jbHVkZSBwb3N0LWxheW91dCBkYXRhKSBhbmQgd2FpdCB1
bnRpbCB0aGUKICAgICAvLyBuZXh0IGxheWVyIHRyZWUgY29tbWl0IHRvIGNvbXB1dGUgYW5kIHNl
bmQgdGhlIGNvbXBsZXRlIEVkaXRvclN0YXRlIG92ZXIuCiAgICAgYXV0byBzdGF0ZSA9IGVkaXRv
clN0YXRlKCk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFZGl0b3JTdGF0ZUNo
YW5nZWQoc3RhdGUpLCBwYWdlSUQoKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpFZGl0b3JTdGF0ZUNoYW5nZWQoc3RhdGUpKTsKIAogICAgIGlmIChzdGF0ZS5pc01pc3NpbmdQ
b3N0TGF5b3V0RGF0YSkKICAgICAgICAgc2NoZWR1bGVGdWxsRWRpdG9yU3RhdGVVcGRhdGUoKTsK
QEAgLTYyMzcsNyArNjIzNyw3IEBAIHZvaWQgV2ViUGFnZTo6cG9zdE1lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQogCiB2b2lkIFdlYlBh
Z2U6OnBvc3RNZXNzYWdlSWdub3JpbmdGdWxseVN5bmNocm9ub3VzTW9kZShjb25zdCBTdHJpbmcm
IG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVzc2FnZUJvZHkpCiB7Ci0gICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBVc2VyRGF0YShX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKG1lc3NhZ2VC
b2R5KSkpLCBwYWdlSUQoKSwgSVBDOjpTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3Vz
TW9kZSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpIYW5kbGVNZXNzYWdlKG1l
c3NhZ2VOYW1lLCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKG1lc3NhZ2VCb2R5KSkpLCBJUEM6OlNlbmRPcHRpb246Oklnbm9yZUZ1bGx5
U3luY2hyb25vdXNNb2RlKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpwb3N0U3luY2hyb25vdXNNZXNz
YWdlRm9yVGVzdGluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUEk6Ok9iamVjdCogbWVz
c2FnZUJvZHksIFJlZlB0cjxBUEk6Ok9iamVjdD4mIHJldHVybkRhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYWQ3Y2Q4ZDMxZGVkYjc0NWU4ODQy
NzgxODFmMzZlNzM2Y2M4MDI4ZC4uZmJhMDZjNDlkYmJiNGY0M2RmOTI3ZGI1Njg1ZWViNWUzMDky
ZDgwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
NjQsNiArNjQsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvSW50U2l6ZUhhc2guaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlT3Zlcmxh
eS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UG9pbnRlcklELmg+CkBAIC0yNzQsNyArMjc1LDggQEAgdXNpbmcgV0tFdmVudE1vZGlmaWVycyA9
IHVpbnQzMl90OwogCiBjbGFzcyBXZWJQYWdlIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6
Ok9iamVjdDo6VHlwZTo6QnVuZGxlUGFnZT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwg
cHVibGljIElQQzo6TWVzc2FnZVNlbmRlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBhZ2U+
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlBhZ2U+IGNyZWF0ZSh1aW50NjRfdCBwYWdl
SUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgc3RhdGljIFJlZjxXZWJQYWdl
PiBjcmVhdGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMmJik7CisKICAgICB2aXJ0dWFsIH5XZWJQYWdlKCk7CiAKICAgICB2b2lkIHJlaW5pdGlhbGl6
ZVdlYlBhZ2UoV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKQEAgLTI4NCw3ICsyODYsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFdlYlBhZ2UqIGZyb21Db3JlUGFnZShXZWJDb3JlOjpQYWdl
Kik7CiAKICAgICBXZWJDb3JlOjpQYWdlKiBjb3JlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFn
ZS5nZXQoKTsgfQotICAgIHVpbnQ2NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlE
OyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSUQ7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2UtPnNlc3Npb25JRCgpOyB9CiAgICAgYm9vbCB1c2VzRXBoZW1lcmFsU2Vzc2lvbigp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsgfQogCkBAIC0x
MTcxLDcgKzExNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZW5kU3luY1dpdGhEZWxheWVkUmVw
bHkoVCYmIG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYgcmVwbHkpCiAgICAgewogICAgICAg
ICBjYW5jZWxHZXN0dXJlc0Jsb2NrZWRPblN5bmNocm9ub3VzUmVwbGllcygpOwotICAgICAgICBy
ZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIG1fcGFnZUlE
LCBTZWNvbmRzOjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9y
bVByb2Nlc3NXaWxsU3VzcGVuZCk7CisgICAgICAgIHJldHVybiBzZW5kU3luYyhXVEZNb3ZlKG1l
c3NhZ2UpLCBXVEZNb3ZlKHJlcGx5KSwgU2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3lu
Y09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQpOwogICAgIH0KIAogICAg
IFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNv
bnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcik7CkBAIC0xMjA0LDcgKzEyMDYsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRVc2VySXNJbnRlcmFjdGluZyhib29sIHVzZXJJc0ludGVyYWN0aW5n
KSB7IG1fdXNlcklzSW50ZXJhY3RpbmcgPSB1c2VySXNJbnRlcmFjdGluZzsgfQogCiBwcml2YXRl
OgotICAgIFdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JiYpOworICAgIFdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMmJik7CiAKICAgICB2b2lkIHVwZGF0ZVRocm90dGxlU3RhdGUoKTsKIApAQCAt
MTU5MSw3ICsxNTkzLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgdXBkYXRlTW9ja0FjY2Vzc2li
aWxpdHlFbGVtZW50QWZ0ZXJDb21taXR0aW5nTG9hZCgpOwogCi0gICAgdWludDY0X3QgbV9wYWdl
SUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6UGFnZT4gbV9wYWdlOwogICAgIFJlZlB0cjxXZWJGcmFtZT4gbV9t
YWluRnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCmluZGV4IGQ5NmE3ZDdkZGE5ZjI2ZDFjNjU2
YTE1Y2I4M2QwM2NmMjA0YTdhMzguLmI3Nzk5YjRmYmI4YjU1Y2I2NmI2MjIyN2E2YTY1ZjNhYjEy
Y2EwMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2VJbnNwZWN0b3JUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFdlYlBhZ2VJ
bnNwZWN0b3JUYXJnZXQ6OldlYlBhZ2VJbnNwZWN0b3JUYXJnZXQoV2ViUGFnZSYgcGFnZSkKIAog
U3RyaW5nIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OmlkZW50aWZpZXIoKSBjb25zdAogewotICAg
IHJldHVybiBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQ6OmNvbm5lY3QoSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwmIGNoYW5uZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVkU3VyZmFjZVdheWxhbmQuaAppbmRleCAzYjcz
ZTQ4YTc3ZTZkNTc3MDAxNTQyYmQ2ZDI4Y2MxZjUwODgzM2VjLi5mZmZiNDY0ODNmYzU1MmYyZTc5
NDg1ODlkMWU3ZDlhNmVlYmQ3YzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgK
QEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIH5BY2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5k
KCkgPSBkZWZhdWx0OwogCiAgICAgdWludDY0X3Qgd2luZG93KCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obV93aW5kb3cpOyB9Ci0gICAgdWludDY0
X3Qgc3VyZmFjZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgp
OyB9CisgICAgdWludDY0X3Qgc3VyZmFjZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV93
ZWJQYWdlLnBhZ2VJRCgpdG9VSW50NjQoKTsgfQogICAgIHZvaWQgY2xpZW50UmVzaXplKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKICAgICBib29sIHNob3VsZFBhaW50TWlycm9y
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJX
UEUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJh
dGVkU3VyZmFjZUxpYldQRS5jcHAKaW5kZXggOTgzYjkzMTliMjg0OTY3NjY4OGNhNjcwNWUyNzQ4
NTQ5MmZmYWJlZC4uYjg5ZGZhODA0MWZiMjZkNmZjYmVmN2RlOGI0NGQ2ZThhMDQzYWZmNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJh
dGVkU3VyZmFjZUxpYldQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAg
dWludDY0X3QgQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFOjp3aW5kb3coKSBjb25zdAogCiB1aW50
NjRfdCBBY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEU6OnN1cmZhY2VJRCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAgICByZXR1cm4gbV93ZWJQYWdlLnBhZ2VJRCgp
LnRvVUludDY0KCk7CiB9CiAKIHZvaWQgQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFOjpjbGllbnRS
ZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RCYXNlLmgKaW5kZXggMzAxYjEzOWUxZDJjMTZkODlhMmFiODkzY2Y4NTU3MTA3M2Q4
ZjUxYS4uNmI3ZWM1YjE2ZjJjYTZhMDYyNjEzOGYxZmYwOTdkMGI1MjkxNTI4NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmgKQEAgLTI2LDEzICsyNiwxNSBA
QAogI2lmbmRlZiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZV9oCiAjZGVmaW5lIFdL
QWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlX2gKIAorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlOwogfQog
CiBAaW50ZXJmYWNlIFdLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlIDogTlNPYmplY3Qg
ewogICAgIFdlYktpdDo6V2ViUGFnZSogbV9wYWdlOwotICAgIHVpbnQ2NF90IG1fcGFnZUlEOwor
ICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlEOwogICAgIGlkIG1fcGFyZW50Owog
ICAgIGJvb2wgbV9oYXNNYWluRnJhbWVQbHVnaW47CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJh
c2UubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmls
aXR5V2ViUGFnZU9iamVjdEJhc2UubW0KaW5kZXggM2QzZjM1NTUzZTZkNGZiZWE1NTY1MzQ3ODA4
ODgwNjkxMGYwNTAwOS4uNjE2NWEwMWZlNjA4MjQ4ZmRlM2I5NjBmNzg5NDUxMzkyMzcxZGY4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbQpAQCAtMTQ4
LDcgKzE0OCw3IEBAIC0gKHZvaWQpc2V0V2ViUGFnZTooV2ViS2l0OjpXZWJQYWdlKilwYWdlCiAg
ICAgICAgIGF1dG8qIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7CiAgICAgICAgIG1faGFzTWFp
bkZyYW1lUGx1Z2luID0gZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCkgPyBmcmFtZS0+ZG9jdW1l
bnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpIDogZmFsc2U7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
bV9wYWdlSUQgPSAwOworICAgICAgICBtX3BhZ2VJRCA9IHsgfTsKICAgICAgICAgbV9oYXNNYWlu
RnJhbWVQbHVnaW4gPSBmYWxzZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggNWNlNjljY2Y4MzM0YzlkOGQwODhjMjEyOGU0ZjM0YzZjZmFlYWRk
OC4uNjE3NGIwYTNiYjBiMzc0YWU5ODRkM2FiMWJkOGJmMjM3M2JkNTdhZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMjIxLDcgKzIyMSw3IEBAIFdlYlByb2Nl
c3M6OldlYlByb2Nlc3MoKQogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFdURk1vdmUoc3RhdGlzdGljcykpLCAw
KTsKICAgICB9KTsKIAotICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRSZXF1
ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0b3Jh
Z2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4m
IG9wZW5lckRvbWFpbikgeworICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5zZXRS
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2soW3RoaXNdIChQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW5Jbk5lZWRPZlN0
b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIG9wZW5lckRvbWFpbikgewogICAgICAgICBlbnN1cmVOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoc2Vzc2lvbklELCBk
b21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIG9wZW5lclBhZ2VJRCwgb3BlbmVyRG9tYWluKSwg
MCk7CiAgICAgfSk7CiAjZW5kaWYKQEAgLTY2NywxNiArNjY3LDE2IEBAIFdlYlBhZ2UqIFdlYlBy
b2Nlc3M6OmZvY3VzZWRXZWJQYWdlKCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KICAgICAKLVdl
YlBhZ2UqIFdlYlByb2Nlc3M6OndlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdAorV2ViUGFn
ZSogV2ViUHJvY2Vzczo6d2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fcGFnZU1hcC5nZXQocGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpj
cmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMpCit2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UoUGFnZUlkZW50aWZp
ZXIgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKIHsKICAg
ICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgZm9yIHBhZ2UgZXhpc3RlbmNlIGhlcmUgc2lu
Y2UgZHVyaW5nIGEgd2luZG93Lm9wZW4oKSAob3IgdGFyZ2V0ZWQKICAgICAvLyBsaW5rKSB0aGUg
V2ViUGFnZSBnZXRzIGNyZWF0ZWQgYm90aCBpbiB0aGUgc3luY2hyb25vdXMgaGFuZGxlciBhbmQg
dGhyb3VnaCB0aGUgbm9ybWFsIHdheS4gCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdl
YlBhZ2U+Pjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRy
KTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fcGFnZU1hcC5hZGQocGFnZUlELCBudWxscHRyKTsKICAg
ICBhdXRvIG9sZFBhZ2VJRCA9IHBhcmFtZXRlcnMub2xkUGFnZUlEID8gcGFyYW1ldGVycy5vbGRQ
YWdlSUQudmFsdWUoKSA6IHBhZ2VJRDsKICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpIHsKICAg
ICAgICAgQVNTRVJUKCFyZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKQEAgLTY5Myw3ICs2OTMsNyBA
QCB2b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYQogICAgIEFTU0VSVChyZXN1bHQuaXRlcmF0b3ItPnZh
bHVlKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpyZW1vdmVXZWJQ
YWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewog
ICAgIEFTU0VSVChtX3BhZ2VNYXAuY29udGFpbnMocGFnZUlEKSk7CiAKQEAgLTE0NTAsNyArMTQ1
MCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JV
cGRhdGVSZWFzb24pCiAKICNlbmRpZgogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0
YXRlRGlkQ2hhbmdlKHVpbnQ2NF90LCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
RmxhZz4gY2hhbmdlZCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFu
Z2UoUGFnZUlkZW50aWZpZXIsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFn
PiBjaGFuZ2VkKQogewogICAgIGlmIChjaGFuZ2VkICYgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6
SXNWaXNpYmxlKQogICAgICAgICB1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0
ZVJlYXNvbjo6VmlzaWJpbGl0eUhhc0NoYW5nZWQpOwpAQCAtMTYyNCwxMyArMTYyNCwxMyBAQCB2
b2lkIFdlYlByb2Nlc3M6OnNlbmRQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgVVJMJiB1cmwpCiAg
ICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1By
b3h5OjpEaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKHJlZ2lzdHJhYmxlRG9tYWluLCBXZWJD
b3JlOjpQcm9jZXNzV2FybWluZzo6Y29sbGVjdFByZXdhcm1JbmZvcm1hdGlvbigpKSwgMCk7CiB9
CiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZURpZEVudGVyV2luZG93KHVpbnQ2NF90IHBhZ2VJRCkK
K3ZvaWQgV2ViUHJvY2Vzczo6cGFnZURpZEVudGVyV2luZG93KFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKIHsKICAgICBtX3BhZ2VzSW5XaW5kb3dzLmFkZChwYWdlSUQpOwogICAgIG1fbm9uVmlzaWJs
ZVByb2Nlc3NDbGVhbnVwVGltZXIuc3RvcCgpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OnBhZ2VX
aWxsTGVhdmVXaW5kb3codWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpwYWdlV2ls
bExlYXZlV2luZG93KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBtX3BhZ2VzSW5XaW5k
b3dzLnJlbW92ZShwYWdlSUQpOwogCkBAIC0xNjczLDcgKzE2NzMsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OmVuYWJsZVByaXZhdGVCcm93c2luZ0ZvclRlc3RpbmcoYm9vbCBlbmFibGUpCiAgICAgaWYg
KGVuYWJsZSkKICAgICAgICAgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkluTmV0
d29ya1Byb2Nlc3MoKTsKIAotICAgIFZlY3Rvcjx1aW50NjRfdD4gcGFnZUlEczsKKyAgICBWZWN0
b3I8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRHM7CiAgICAgZm9yIChhdXRvJiBwYWdlIDogbV9wYWdl
TWFwKSB7CiAgICAgICAgIGlmIChwYWdlLnZhbHVlKQogICAgICAgICAgICAgcGFnZUlEcy5hcHBl
bmQocGFnZS5rZXkpOwpAQCAtMTg1Myw3ICsxODUzLDcgQEAgTGliV2ViUlRDTmV0d29yayYgV2Vi
UHJvY2Vzczo6bGliV2ViUlRDTmV0d29yaygpCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi12b2lkIFdlYlByb2Nlc3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9O
ZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Np
b25JRCkKK3ZvaWQgV2ViUHJvY2Vzczo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0
aWFsU2Vzc2lvbklEKQogewogICAgIC8vIFdlIGFyZSBpbiB0aGUgU2VydmljZSBXb3JrZXIgY29u
dGV4dCBwcm9jZXNzIGFuZCB0aGUgY2FsbCBiZWxvdyBlc3RhYmxpc2hlcyBvdXIgY29ubmVjdGlv
biB0byB0aGUgTmV0d29yayBQcm9jZXNzCiAgICAgLy8gYnkgY2FsbGluZyBlbnN1cmVOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24uIFNXQ29udGV4dE1hbmFnZXIgbmVlZHMgdG8gdXNlIHRoZSBzYW1l
IHVuZGVybHlpbmcgSVBDOjpDb25uZWN0aW9uIGFzIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLmgKaW5kZXggNTI1ZGYxODNmMjI2MTVlNGQ4ZTg5OWY0ZTg5ZWY0ODVhN2JhNzgx
Yy4uMTg1N2NlYTBlZDlkOWZhOGMyMTA2OTZmMDk4NzY3OGJiYTQyOWZkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNl
VHJhY2tlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlZ2lzdHJhYmxl
RG9tYWluLmg+CiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPFdlYkNvcmUvU2NyZWVuUHJv
cGVydGllcy5oPgpAQCAtMTQ1LDkgKzE0Niw5IEBAIHB1YmxpYzoKIAogICAgIFdlYkNvbm5lY3Rp
b25Ub1VJUHJvY2Vzcyogd2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4g
bV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CiAKLSAgICBXZWJQYWdlKiB3ZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCkgY29uc3Q7Ci0gICAgdm9pZCBjcmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKLSAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFM
OjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV2ViUGFnZSogd2ViUGFnZShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CisgICAgdm9pZCBjcmVhdGVXZWJQYWdlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworICAgIHZv
aWQgcmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
OwogICAgIFdlYlBhZ2UqIGZvY3VzZWRXZWJQYWdlKCkgY29uc3Q7CiAKICAgICBJbmplY3RlZEJ1
bmRsZSogaW5qZWN0ZWRCdW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxlLmdl
dCgpOyB9CkBAIC0xOTksOCArMjAwLDggQEAgcHVibGljOgogCiAgICAgdm9pZCBlbnN1cmVMZWdh
Y3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwogCi0gICAgdm9pZCBw
YWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHBhZ2VXaWxsTGVh
dmVXaW5kb3codWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyhX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgbm9uVmlzaWJsZVByb2Nlc3NDbGVh
bnVwVGltZXJGaXJlZCgpOwogCkBAIC0yMTksNyArMjIwLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCB1cGRhdGVBY3RpdmVQYWdlcygpOwogICAgIHZvaWQgZ2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9y
VGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKLSAg
ICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKHVpbnQ2NF90IHBhZ2VJRCwgT3B0aW9u
U2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpOworICAgIHZvaWQgcGFn
ZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE9wdGlvblNl
dDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKIAogICAgIHZvaWQgc2V0
SGlkZGVuUGFnZURPTVRpbWVyVGhyb3R0bGluZ0luY3JlYXNlTGltaXQoaW50IG1pbGxpc2Vjb25k
cyk7CiAKQEAgLTM1OSw3ICszNjAsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCi0gICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlv
blRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vzc2lvbklEKTsKKyAgICB2b2lkIGVz
dGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBw
YWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRzKCk7CiAjZW5kaWYKIApAQCAtNDYwLDcgKzQ2MSw3IEBAIHByaXZhdGU6CiAKICAgICBS
ZWZQdHI8V2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzPiBtX3dlYkNvbm5lY3Rpb247CiAKLSAgICBI
YXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+IG1fcGFnZU1hcDsKICAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZUdyb3VwUHJveHk+PiBtX3BhZ2VHcm91
cE1hcDsKICAgICBSZWZQdHI8SW5qZWN0ZWRCdW5kbGU+IG1faW5qZWN0ZWRCdW5kbGU7CiAKQEAg
LTUxNCw3ICs1MTUsNyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3Byb2Nlc3NJc1N1c3BlbmRl
ZCB7IGZhbHNlIH07CiAKLSAgICBIYXNoU2V0PHVpbnQ2NF90PiBtX3BhZ2VzSW5XaW5kb3dzOwor
ICAgIEhhc2hTZXQ8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fcGFnZXNJbldpbmRvd3M7CiAg
ICAgV2ViQ29yZTo6VGltZXIgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lcjsKIAogICAg
IFJlZlB0cjxXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZT4gbV9hcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVz
c2FnZXMuaW4KaW5kZXggYjM5YjM4YzE4M2M2NjMyN2Q0MmU2ZWRmZjE3NmJiYTFjOWNhYmIxMi4u
NTdhMjY1NjM0NWZiZTlkMzMwZGY2NTVlMzUyYzM5YmVhNTJiNDVkOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI1LDcgKzI1LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0V2Vic2l0
ZURhdGFTdG9yZVBhcmFtZXRlcnMoc3RydWN0IFdlYktpdDo6V2ViUHJvY2Vzc0RhdGFTdG9yZVBh
cmFtZXRlcnMgcGFyYW1ldGVycykKIAogICAgICMgQ3JlYXRlIGEgbmV3IHBhZ2UuCi0gICAgQ3Jl
YXRlV2ViUGFnZSh1aW50NjRfdCBuZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgcGFnZUNyZWF0aW9uUGFyYW1ldGVycykKKyAgICBDcmVhdGVXZWJQYWdl
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG5ld1BhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyBwYWdlQ3JlYXRpb25QYXJhbWV0ZXJzKQogCiAgICAgUHJld2Fy
bUdsb2JhbGx5KCk7CiAgICAgUHJld2FybVdpdGhEb21haW5JbmZvcm1hdGlvbihzdHJ1Y3QgV2Vi
Q29yZTo6UHJld2FybUluZm9ybWF0aW9uIHByZXdhcm1JbmZvcm1hdGlvbikKQEAgLTExMSw3ICsx
MTEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRD
b25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3Qg
cGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlLCBQQUw6OlNl
c3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQorICAgIEVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0
b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQogICAgIFJlZ2lzdGVyU2Vydmlj
ZVdvcmtlckNsaWVudHMoKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCAwYmQ5MGFmOTE4Nzg2
NDQxMDQ1M2VhMWJhZjFlY2Y2MDIzM2NiMDk2Li4wZTk0Mjk2MDQ5ZTZjMDg3YWI2ZThmMGM1ZWJm
ZTRjMWEyZTJjMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3Rv
cmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCkBAIC0zMTEsNyArMzExLDcgQEAgdm9pZCBTdG9y
YWdlQXJlYU1hcDo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50KHVpbnQ2NF90IHNvdXJjZVN0
b3JhZ2VBcmVhSUQsIGMKIAogICAgIC8vIE5hbWVzcGFjZSBJRHMgZm9yIHNlc3Npb24gc3RvcmFn
ZSBuYW1lc3BhY2VzIGFyZSBlcXVpdmFsZW50IHRvIHdlYiBwYWdlIElEcwogICAgIC8vIHNvIHdl
IGNhbiBnZXQgdGhlIHJpZ2h0IHBhZ2UgaGVyZS4KLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CisgICAg
V2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYlBhZ2UobWFrZU9i
amVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihtX3N0b3JhZ2VOYW1lc3BhY2VJRCkp
OwogICAgIGlmICghd2ViUGFnZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmlu
ZGV4IGZjNjU5ODYzMjUyYmZlNGZhOGMxZTEyOWI5YWU4ZTgzMGZhZjc4OGEuLjc2NWVmZjQwNGIw
OWVkMDBjY2UxZGQ5ZWE3YjU2MDU2MjljYjVkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC0yNzks
NyArMjc5LDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW0KICAgICBhZGRDbGllbnRGb3JDb250
ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKIAogICAgIG1fcGFnZS0+dmlkZW9Db250
cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJ
RChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBs
YXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRyb2xz
TWFuYWdlcigpCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpjbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCkKICAgICBtX2NvbnRyb2xzTWFuYWdlckNv
bnRleHRJZCA9IDA7CiAKICAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdl
KCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNs
ZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKSk7CiB9CiAKIHVpbnQ2NF90IFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmNvbnRleHRJZEZvck1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50JiBtZWRpYUVsZW1lbnQpCkBAIC0zMTgsMjcgKzMxOCwyNyBAQCBXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50KiBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50UGxheWJhY2tDb250
cm9sc0VsZW1lbgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdl
ZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2Vk
KGNvbnRleHRJZCwgZHVyYXRpb24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2Vk
KGNvbnRleHRJZCwgZHVyYXRpb24pKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpjdXJyZW50VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRp
bWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBj
dXJyZW50VGltZSwgYW5jaG9yVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNo
YW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZSkpOwogfQogCiB2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OmJ1ZmZlcmVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgYnVmZmVyZWRUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpCdWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJ
ZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkJ1ZmZlcmVkVGltZUNoYW5nZWQo
Y29udGV4dElkLCBidWZmZXJlZFRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSBwbGF5YmFja1N0YXJ0ZWRUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250
ZXh0SWQsIHBsYXliYWNrU3RhcnRlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tT
dGFydGVkVGltZUNoYW5nZWQoY29udGV4dElkLCBwbGF5YmFja1N0YXJ0ZWRUaW1lKSk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBib29sIGlzUGxheWluZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChj
b250ZXh0SWQsIGlzUGxheWluZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJh
dGVDaGFuZ2VkKGNvbnRleHRJZCwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpKTsKIH0KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBjb25zdCBXZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUg
bGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCkKQEAgLTM0OSwzNyAr
MzQ5LDM3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViCiAgICAgICAgIGRvdWJsZSBlbmQgPSB0
aW1lUmFuZ2VzLnJhbmdlcygpLmVuZChpKS50b0RvdWJsZSgpOwogICAgICAgICByYW5nZXNWZWN0
b3IuYXBwZW5kKHsgc3RhcnQsIGVuZCB9KTsKICAgICB9Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hh
bmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwg
bGl2ZVVwZGF0ZUludGVydmFsKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVj
dG9yQ2hhbmdlZChjb250ZXh0SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVk
VGltZSwgbGl2ZVVwZGF0ZUludGVydmFsKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6Y2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wg
dmFsdWUpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkNhblBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQoY29udGV4dElkLCB2YWx1ZSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpDYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFs
dWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFT
ZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRp
b01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3Rl
ZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hh
bmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQs
IG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5h
YmxlZCwgUGxheWJhY2tTZXNzaW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRh
cmdldFR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNr
UHJvcGVydGllc0NoYW5nZWQoY29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4odGFyZ2V0VHlwZSksIGxvY2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFuZ2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSk7CiB9
CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4
Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1
ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4
dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
bGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWlu
dDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2Vk
KGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVk
aWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJs
ZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1t
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIu
bW0KaW5kZXggNWQ2MTEwYjc5MDlmMzRjY2UzZTc2MmJmZDM4ZDJiMmY3MjFkNTIxNi4uNzA2NjM5
NzczNzliNWIxYmY1OTdjNWQ4ZGViMmFkNDZjM2Y2YjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAg
LTI5MCw3ICsyOTAsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9G
dWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbgogICAgICAgICBpbnRlcmZh
Y2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+c2V0Um9vdExheWVyKHZpZGVvTGF5ZXIpOwogICAg
IH0KIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpTZXR1cEZ1bGxzY3JlZW5XaXRoSUQoY29udGV4dElkLCBpbnRlcmZhY2UtPmxheWVySG9z
dGluZ0NvbnRleHQoKS0+Y29udGV4dElEKCksIHZpZGVvUmVjdCwgbV9wYWdlLT5kZXZpY2VTY2Fs
ZUZhY3RvcigpLCBpbnRlcmZhY2UtPmZ1bGxzY3JlZW5Nb2RlKCksIGFsbG93c1BpY3R1cmVJblBp
Y3R1cmUsIHN0YW5kYnkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVuV2l0aElE
KGNvbnRleHRJZCwgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRleHRJRCgp
LCB2aWRlb1JlY3QsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW50ZXJmYWNlLT5mdWxs
c2NyZWVuTW9kZSgpLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBzdGFuZGJ5KSk7CiB9CiAKIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxl
bWVudChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQpCkBAIC0zMDgsNyAr
MzA4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVu
Rm9yVmlkZW9FbGVtZW50KFdlYkNvcmU6OkhUTUxWaWQKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aW50ZXJmYWNlLnNldElzQW5pbWF0aW5nKHRydWUpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQs
IGlubGluZVZpZGVvRnJhbWUodmlkZW9FbGVtZW50KSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0
RnVsbHNjcmVlbihjb250ZXh0SWQsIGlubGluZVZpZGVvRnJhbWUodmlkZW9FbGVtZW50KSkpOwog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01v
ZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVu
dCwgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRh
cmdldE1vZGUpCkBAIC0zMjQsNyArMzI0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjoKIAog
ICAgIGludGVyZmFjZS5zZXRUYXJnZXRJc0Z1bGxzY3JlZW4oZmFsc2UpOwogCi0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2Ny
ZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShjb250ZXh0SWQsIHRhcmdldE1vZGUpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKGNvbnRleHRJ
ZCwgdGFyZ2V0TW9kZSkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odmlkZW9FbGVtZW50KTsK
ICAgICBVTlVTRURfUEFSQU0odGFyZ2V0TW9kZSk7CkBAIC0zMzYsMTMgKzMzNiwxMyBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0
QW5pbWF0aW9uKFdlYkNvcmU6Ogogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpoYXNWaWRl
b0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGhhc1ZpZGVvKQogewogICAgIGlmICht
X3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpTZXRIYXNWaWRlbyhjb250ZXh0SWQsIGhhc1ZpZGVvKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpTZXRIYXNWaWRlbyhjb250ZXh0SWQsIGhhc1ZpZGVvKSk7CiB9CiAKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIGNvbnN0IEZsb2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zKQogewogICAgIGlmICht
X3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29udGV4dElkLCB2aWRlb0RpbWVuc2lvbnMp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldFZpZGVvRGltZW5zaW9ucyhjb250ZXh0SWQsIHZp
ZGVvRGltZW5zaW9ucykpOwogfQogCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMgZnJvbSBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQp
CiAKICAgICBhdXRvJiBtb2RlbCA9IGVuc3VyZU1vZGVsKGNvbnRleHRJZCk7CiAgICAgSW50UmVj
dCBpbmxpbmVSZWN0ID0gaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50KCkpOwot
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpT
ZXRJbmxpbmVSZWN0KGNvbnRleHRJZCwgaW5saW5lUmVjdCwgaW5saW5lUmVjdCAhPSBJbnRSZWN0
KDAsIDAsIDAsIDApKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldElubGluZVJlY3QoY29udGV4dElk
LCBpbmxpbmVSZWN0LCBpbmxpbmVSZWN0ICE9IEludFJlY3QoMCwgMCwgMCwgMCkpKTsKIH0KIAog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWlu
dDY0X3QgY29udGV4dElkKQpAQCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKICAg
ICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwgW3Byb3RlY3RlZFRo
aXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewogICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVk
VGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAg
ICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9D
b250ZW50TGF5ZXIoY29udGV4dElkLCB0cnVlKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgdHJ1
ZSkpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJldHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNv
bnRleHRJZCkKICAgICAgICAgICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWws
IFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElk
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhp
cy0+bV9wYWdlKQotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNv
bnRleHRJZCwgZmFsc2UpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSk7
CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC00
MTMsNyArNDEzLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxz
Y3JlZW4odWludDY0X3QgY29udGV4dElkKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJv
dGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNv
bnRleHRJZCkpOwogICAgIH0pOwogI2Vsc2UKICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50
ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPnJvb3RMYXllcigpOwpAQCAtNDIxLDcgKzQy
MSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCkKICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlk
ZW9MYXllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0
SWRdICgpIG11dGFibGUgewogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMs
IGNvbnRleHRJZF0gewogICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAg
ICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAg
ICAgICAgIH0pOwogICAgIH0pOwogI2VuZGlmCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjp3aWxsRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElk
KQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdmlkZW9FbGVtZW50ID0gV1RGTW92ZSh2aWRlb0Vs
ZW1lbnQpLCBjb250ZXh0SWRdIHsKICAgICAgICAgdmlkZW9FbGVtZW50LT53aWxsRXhpdEZ1bGxz
Y3JlZW4oKTsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAg
IHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpQcmVwYXJlZFRvRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVk
VGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRU
b0V4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0pOwogfQogCkBAIC00ODYsNyArNDg2
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50
NjRfdCBjb250ZXh0SWQpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIodGhpcyksIGNvbnRleHRJZCwgaW50ZXJmYWNlXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29u
dGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgfSk7CiAjZWxzZQog
ICAgIG1vZGVsLT53YWl0Rm9yUHJlcGFyZWRGb3JJbmxpbmVUaGVuKFtwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZlB0cih0aGlzKSwgY29udGV4dElkLCBpbnRlcmZhY2UsIG1vZGVsXSAoKSBtdXRhYmxl
IHsKQEAgLTQ5OCw3ICs0OTgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4
aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICAgICAgICAgICAgICAgICAgICAg
IGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChudWxscHRyKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdl
KQotICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNv
bnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAg
ICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAg
ICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNTU1LDcg
KzU1NSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1heVJldHVy
blRvSW5saW5lKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vCiAKICAgICBpZiAoIWlzUGFnZVZpc2li
bGUpCiAgICAgICAgIG1vZGVsLnZpZGVvRWxlbWVudCgpLT5zY3JvbGxJbnRvVmlld0lmTm90Vmlz
aWJsZShmYWxzZSk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OlByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIHRydWUsIGlu
bGluZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxlbWVudCgpKSksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpQcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCB0cnVlLCBpbmxpbmVWaWRlb0Zy
YW1lKCptb2RlbC52aWRlb0VsZW1lbnQoKSkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpyZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRCh1aW50NjRfdCBj
b250ZXh0SWQsIE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0Um91dGVT
aGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRDo6QXN5bmNSZXBseSYmIHJlcGx5KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMmUx
OTBiMDM1ZjcyODBiMWZiZWRiM2FmMDAxZTY5NThjNDIwMjExNi4uYjljZTc5ZDI3NGM0MTI3YmE3
OGY1NGE1MmY2MzdlOTVlODUxZjZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCkBAIC01MzksNyArNTM5LDcgQEAgc3RhdGljIE5T
VVJMICpvcmlnaW4oV2ViUGFnZSYgcGFnZSkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQot
c3RhdGljIFJldGFpblB0cjxOU0FycmF5PE5TU3RyaW5nICo+PiBhY3RpdmVQYWdlc09yaWdpbnMo
Y29uc3QgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYlBhZ2U+PiYgcGFnZU1hcCkKK3N0YXRp
YyBSZXRhaW5QdHI8TlNBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0
IEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4mIHBhZ2VNYXApCiB7CiAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+PiBhY3RpdmVPcmlnaW5zID0g
YWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNw
cAppbmRleCA2MWU2YTdlYzhkODBlNTE0MmI4YWQzZTY3NWM4MzZlMmNiMDU1Mzk5Li5iZjI1ZTEw
NmQ3YzE3OWM3Y2I1MzVjMmMzM2M4MmI3ODk2NDJiYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIHZvaWQgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5OjpiaW5kU3VyZmFj
ZVRvUGFnZShzdHJ1Y3Qgd2xfc3VyZmFjZSogc3VyZmFjZSwgV2ViCiAgICAgaWYgKCFtX3dlYmtp
dGd0aykKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2xfd2Via2l0Z3RrX2JpbmRfc3VyZmFjZV90
b19wYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8c3RydWN0IHdsX3dlYmtpdGd0ayo+KG1fd2Via2l0Z3Rr
LmdldCgpKSwgc3VyZmFjZSwgcGFnZS5wYWdlSUQoKSk7CisgICAgd2xfd2Via2l0Z3RrX2JpbmRf
c3VyZmFjZV90b19wYWdlKHJlaW50ZXJwcmV0X2Nhc3Q8c3RydWN0IHdsX3dlYmtpdGd0ayo+KG1f
d2Via2l0Z3RrLmdldCgpKSwgc3VyZmFjZSwgcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAg
ICB3bF9kaXNwbGF5X3JvdW5kdHJpcChtX2Rpc3BsYXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAKaW5kZXggOTg3MmMzMWJhNTg0ZDcxZGExNTkxMWI0NThmNTExMWQxYTc5MWMx
Zi4uNzk2MDI0YzhjZTQ5YTVhY2ZhOGIxZmI2NTg0ZmFiODMwNTk0Y2U0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFt
ZUxvYWRlCiAgICAgUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZnJh
bWVMb2FkZXIubmV0d29ya2luZ0NvbnRleHQoKSwgcmVxdWVzdCwgb3B0aW9ucy5jcmVkZW50aWFs
cyA9PSBGZXRjaE9wdGlvbnM6OkNyZWRlbnRpYWxzOjpPbWl0ID8gU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3k6OkRvTm90VXNlIDogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgZXJyb3IsIHJl
c3BvbnNlLCBkYXRhKTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VM
b2FkQ29tcGxldGVkKHVpbnQ2NF90IC8qd2ViUGFnZUlEKi8pCit2b2lkIFdlYlJlc291cmNlTG9h
ZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQoUGFnZUlkZW50aWZpZXIpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJl
c291cmNlTG9hZFNjaGVkdWxlci5oCmluZGV4IDU1YjM2OTc1MzA2NTgyMTRiYzk3OWE4NzkyYjY2
MDcyNmQ4Mjk2ZGQuLjVmNjJmNzc3YWE3OWIwMDc1NTczZTVhZmNjYzU2ZDJlNjM1NTJlYTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyLmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9X
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGxvYWRSZXNvdXJjZShXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
TG9hZGVyT3B0aW9ucyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlN1
YnJlc291cmNlTG9hZGVyPiYmKT4mJikgZmluYWw7CiAgICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9uZywgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwg
Y29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1h
cCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwg
VmVjdG9yPGNoYXI+JikgZmluYWw7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRf
dCB3ZWJQYWdlSUQpIGZpbmFsOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXIqKSBmaW5hbDsKICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkZXImLCBib29sKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDEzODU1ODNhZjI5ZDE3NDQxM2Q1MDU3OTVhZmE5NWI1Yzg4OTY2YmIuLmIxNDAzZDA1NjM5M2Iz
OTdkMDE3ZDA5M2RlNWZlMDRjZGNjYThjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtNjMsNyArNjMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQo
KSBmaW5hbDsKICAgICBib29sIGhhc1dlYlZpZXcoKSBjb25zdCBmaW5hbDsgLy8gbWFpbmx5IGZv
ciBhc3NlcnRpb25zCiAKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmlu
YWw7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0
IGZpbmFsOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAg
ICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0KaW5kZXggN2Y4NjlmMWRkY2I5YTE5MDgwYWFiMjAwNWY5YmY3MzJhZTg3
ZGRkZi4uN2ViYTNhOThhYTNkYTkwNjZkZmI3YzViOTIyZDEwOTEwYjE0MjEzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwOSw3ICsyMDksNyBAQCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6V2ViRnJhbWVMb2FkZXJDbGllbnQoV2ViRnJhbWUgKndlYkZyYW1lKQogewogfQogCi1P
cHRpb25hbDx1aW50NjRfdD4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CitP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAppbmRleCA1YzU4MTNmOTFjMWVkMDg3YzdkODI0NjE0NGE2ZTViZWVkOTA0ODA3Li4y
YmNmMjYyNjllMTA4NGM0ZDcyZjg0NGE3MzFlNTk1NmVlMmU3Zjg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQogewogfQogCi1PcHRpb25hbDx1aW50NjRfdD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CitPcHRpb25hbDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4
IDMyMmMwOTAwNWFhNWVlNTczYjRkNzAyZDZlMWRiMjUwNjA1ZDFiNWYuLjY5NzVmZDhhM2Y2YWE1
ODc5NWU4NjY5ZjY4NjZjY2ZjNTIxMGQ4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApA
QCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFRvU3Rh
cnRQbHVnaW4oY29uc3QgV2ViQ29yZTo6UGx1Z2luVmlldyYpIGNvbnN0OwogCi0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCgpIGNvbnN0IGZpbmFsOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370697</attachid>
            <date>2019-05-27 10:34:58 -0700</date>
            <delta_ts>2019-05-27 10:52:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198206-20190527103453.patch</filename>
            <type>text/plain</type>
            <size>508325</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyNjVhYmRkMGVkYTI2ZTdmMWEyZDlk
NGZjNGVmMTJhYjVhM2M5OTguLmQwNGI5MzQwZmVhYWZiN2I5MTkyZDg2ODQ4NzYyNDM0OTgwOWVh
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZv
ciBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAq
IHd0Zi9PYmplY3RJZGVudGlmaWVyLmg6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPDwpOgorCiAy
MDE5LTA1LTIzICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBVc2UgdGFyZ2V0IG9yaWVudGVkIGRlc2lnbiBmb3IgYm1hbGxvYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDYyYTNlZWM4NGYxMmY5NjUyZjIzMDI5MjNiMTU0MzY2Mjg0M2Q2MjAuLmY5NWYxZjhl
M2NhZjg1NmMzMGZmMTcxMDYyMDM2MjJjNWFkYzhiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogV2ViQ29yZS8qOgorCiAyMDE5
LTA1LTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IE1vdmUgR3JhcGhpY3NMYXllckNBOjphZGp1c3RUaWxlZExheWVyVmlzaWJsZVJlY3QoKSB0byBU
aWxlQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYzIyODAyMGI1MzU3N2IyY2U0ZTJjMjNmZGQyMTky
YmE5YjYwZjc2Li5hZTA4ZWYzY2ZlMWNlNDUyNmI4OWRjMzVhNWNlZjYxZmZjN2ExM2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgc3Ryb25nbHktdHlwZWQgaWRlbnRpZmllciBmb3Ig
cGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODIwNgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBX
ZWJLaXQvKjoKKwogMjAxOS0wNS0yNyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtQb2ludGVyIEV2ZW50c10gVGVzdCBhdCBwb2ludGVyZXZlbnRzL2lvcy90
b3VjaC1hY3Rpb24tbm9uZS1pbi1vdmVyZmxvdy1zY3JvbGxpbmctdG91Y2guaHRtbCB0aW1lcyBv
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMWRkNTRlYWZhMzdmZDZiZDYxNzY3OTI4N2EzODVi
YmE0MDk0NjU4NS4uZTFkMzJmZTQ3ZWI3YjNjMTE3NTU4ZmZiYWE4NTYwZGExODVjZjk2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlk
ZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAy
MDE5LTA1LTE3ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBVc2UgYnVpbHRpbiBGaW5kSUNVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggZDYwZjM1OGVmMGY2MWJmYTBlMGNjN2QyMGEyMGFiZjRjODA0NWE1MS4uNmRhYzgwYzhl
ZGM0MTEwNzJiZGE0MGIxMGZkOGYxOGMyMWZhYTJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgc3Ryb25nbHktdHlwZWQgaWRlbnRpZmllciBmb3Ig
cGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODIwNgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnBhZ2VJRCBjb25zdCk6CisKIDIwMTktMDUtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRHJvcHBlZCB0ZXh0LCBhdHRhY2ht
ZW50cywgYW5kIGltYWdlcyBzaG91bGQgYW5pbWF0ZSBpbnRvIHBsYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJ
ZGVudGlmaWVyLmgKaW5kZXggNDA4OTdiNTlkMDdhM2MwNTUwYWUyMzIzYzFjMTliYjI5NTMzOWZk
OC4uYjNiY2FkZDlkZDE5NWFiMzBiMThjZjFkYWQzMzUyMzExOTI1MjZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09i
amVjdElkZW50aWZpZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPG11dGV4PgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEyMiw2ICsxMjMsMTMgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoPE9iamVjdElkZW50aWZpZXI8VD4+IHsK
ICAgICB0eXBlZGVmIE9iamVjdElkZW50aWZpZXJIYXNoPFQ+IEhhc2g7CiB9OwogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgT2JqZWN0SWRlbnRpZmllcjxUPiYgaWRlbnRpZmllcikKK3sKKyAgICB0cyA8PCBpZGVudGlm
aWVyLnRvVUludDY0KCk7CisgICAgcmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IAogdXNpbmcgV1RGOjpPYmplY3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMjNj
YzVmMTBmMzVkNzlhOTgxNDhmZWQ3Y2IxMjhjYzdlY2RkNzA4My4uZTIyNmQ4ZmMyOGU3MjA4OWU5
MTYyOGNkNjQ5MmI4M2MyYjA0MGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC03NzcsNiArNzc3
LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uaAogICAgIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaAogICAgIHBhZ2Uv
UGFnZUdyb3VwLmgKKyAgICBwYWdlL1BhZ2VJZGVudGlmaWVyLmgKICAgICBwYWdlL1BhZ2VPdmVy
bGF5LmgKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCiAgICAgcGFnZS9QZXJmb3Jt
YW5jZUxvZ2dpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGU5NWE4ZjkzMGU0YzM4MTU5YzEyYWQ2M2QzYWJmOWFhM2NmNzA0
YjQuLjZlMTJjOWUwMzc5ZWE0NzA2ZDQzYTBkMDBjNTQwZDJmNjg3OWU4OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTgs
NiArMTIxOCw3IEBACiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0
RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9N
UmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZF
OENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk1
MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEEyMDdENjMyODAwQTdEMkREIC8q
IEFic3RyYWN0RE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTYyMDdENjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThG
MjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTcyMDdENjM0MDAwQTdEMkREIC8q
IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3RDYzMkMwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTc2MDUsNiArNzYwNiw3IEBACiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBE
T01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01S
ZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1
c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QjY1MERCMjI5NjI2MjcwMEZE
OEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYWdlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4
QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZCOTUxOEMyMDdENjMyOTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJl
bW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAyMDks
NiArMjAyMTEsNyBAQAogCQkJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAu
aCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVy
cmVyLmNwcCAqLywKIAkJCQk3QTY3NEJEQTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9h
ZERlZmVycmVyLmggKi8sCisJCQkJNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggKi8sCiAJCQkJMkQ1QzlDRkIxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5
LmNwcCAqLywKIAkJCQkyRDVDOUNGQzE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCAq
LywKIAkJCQkyRDVDOUNGRDE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9sbGVy
LmNwcCAqLywKQEAgLTMwNzcyLDYgKzMwNzc1LDcgQEAKIAkJCQk5MzAyQjBCRjBENzlGODJDMDBD
N0VFODMgLyogUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTY3NEJEQzBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NUI4MUNDNDFGQUE0NEJDMDAzN0QxRTYgLyogUGFnZUhlYXBBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUNCMDUyNDFGQjUxRjMzMDAwODlCOTcgLyogUGFnZU5ldHdvcmtBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QzlEMDAxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VP
dmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwMjE5QzdCNTJFMDBCM0M1QzEgLyog
UGFnZU92ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmNwcAppbmRleCA3NjkxMmNhZWI4YTY0MGVkMTMzYWM0YWFmNGZhN2Q1YzI4OTdhZmEyLi4wZTdk
NTQyMDVjODM1NjdhYTY1ZTM2MGQ0N2FjMDUzM2EzMTUwZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29sYXRlZFRyZWUoKSk7
CiB9CiAKLVJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRpYWxpemVQYWdl
VHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYgY2FjaGUpCitSZWY8QVhJ
c29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjppbml0aWFsaXplUGFnZVRyZWVGb3JJRChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmIGNhY2hlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIHRyZWUgPSBjYWNoZS0+Z2VuZXJhdGVJ
c29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIFJlZlB0cjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEIHRy
ZWVJRCkKICAgICByZXR1cm4gdHJlZUlEQ2FjaGUoKS5nZXQodHJlZUlEKTsKIH0KIAotUmVmPEFY
SXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRf
dCBwYWdlSUQpCitSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tl
cihzX2NhY2hlTG9jayk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBB
WElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpCiAgICAg
cmV0dXJuIG5ld1RyZWU7CiB9CiAKLVJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OnRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKQorUmVmUHRyPEFYSXNvbGF0ZWRUcmVl
PiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoc19jYWNoZUxvY2spOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aAppbmRleCBjMDc1ZDViMDE2NzgxMjYwYzc2MDE5YjUwZTI2ZjYwNjAxOWRlMDNmLi42ZWVjMjY0
NTE5ODRmOGViYTg4ODRmNTljNTMzN2NlNTI2Y2Q5YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVF
KQogCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWVOb2RlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTQzLDkgKzQ0LDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZSgpOwogICAg
IHZpcnR1YWwgfkFYSXNvbGF0ZWRUcmVlKCk7CiAKLSAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRU
cmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQo
dWludDY0X3QgcGFnZUlELCBBWE9iamVjdENhY2hlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQp
OworICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFn
ZUlkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRy
ZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyLCBBWE9iamVjdENhY2hl
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJl
ZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlTm9kZT4gcm9vdE5vZGUoKTsKQEAg
LTcwLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVkVHJlZSgpOwogCiAgICAgc3Rh
dGljIEhhc2hNYXA8QVhJc29sYXRlZFRyZWVJRCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVJ
RENhY2hlKCk7Ci0gICAgc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFJlZjxBWElzb2xhdGVkVHJl
ZT4+JiB0cmVlUGFnZUNhY2hlKCk7CisgICAgc3RhdGljIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIs
IFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlUGFnZUNhY2hlKCk7CiAKICAgICAvLyBPbmx5IGFj
Y2VzcyBvbiBBWCB0aHJlYWQgcmVxdWVzdGluZyBkYXRhLgogICAgIEhhc2hNYXA8QVhJRCwgUmVm
PEFYSXNvbGF0ZWRUcmVlTm9kZT4+IG1fcmVhZGVyVGhyZWFkTm9kZU1hcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDFkNDMxNjZlZWMzMTczYzE0ODFlNGVjOTRhMzY2N2MxY2E3NDBiNzku
LmE4YTg0MDAyY2FlY2I1MWEzODYzZGViNjlhMGQ2NDM1NGNjODZkMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNzc3MCw3ICs3NzcwLDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2Vy
KCkKICAgICByZXR1cm4gKm1fbG9nZ2VyOwogfQogICAgIAotT3B0aW9uYWw8dWludDY0X3Q+IERv
Y3VtZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50
OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5wYWdlSUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggM2ZjNWEzMmYzODFlNjdmZDIw
OGFmMzEyNjcxNGQ0MjJhMGIzZWZkZC4uMTZkMDQxMGJiNjdkNGQ5OWYwNDU2N2VmMDE2YjYyZWEx
NmViMTdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1
ZGUgIk9yaWVudGF0aW9uTm90aWZpZXIuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgog
I2luY2x1ZGUgIlJlZ2lvbi5oIgpAQCAtNjM1LDcgKzYzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICAgdm9p
ZCBjbGVhckFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQo
KSBjb25zdDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7CiAg
ICAgLy8gdG8gZ2V0IHZpc3VhbGx5IG9yZGVyZWQgaGVicmV3IGFuZCBhcmFiaWMgcGFnZXMgcmln
aHQKICAgICB2b2lkIHNldFZpc3VhbGx5T3JkZXJlZCgpOwogICAgIGJvb2wgdmlzdWFsbHlPcmRl
cmVkKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxseU9yZGVyZWQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nvb2tpZUphci5jcHAKaW5kZXggYjFiZWQ4ZjAzMmY5Y2QyNzgxOTNlZWRjZmZjN2NmMTUzMTg5
NmIyNi4uMzNlMjc4NjM4MzY1NjkwZDE2ZDcyYjNkN2I1YmUwYmUyMDg1YjZjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RyaW5nIENvb2tpZUph
cjo6Y29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAg
IGF1dG8gaW5jbHVkZVNlY3VyZUNvb2tpZXMgPSBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhk
b2N1bWVudCwgdXJsKTsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAg
IGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBw
YWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xMTAsNyArMTEw
LDcgQEAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkgQ29va2llSmFyOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eShjb25zdCBEb2MKIHZvaWQgQ29va2llSmFyOjpzZXRDb29raWVz
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1l
SUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQg
PSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xMzEsNyArMTMxLDcgQEAg
Ym9vbCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nl
c3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6
OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNz
ZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpT
ZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9y
YWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGQ6OnBhaXI8U3RyaW5n
LCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdQogU3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
CiBib29sIENvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgY29va2llcykgY29uc3QKIHsKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDBkYjA3
YzZkMTJlOGQ5YmRhZmMzYzBhYmE2ZWU3MWE4OWJjMTk5NDcuLjI4MWY4NGM0OTAwNTI2N2VhMDU0
ZDUxZDc2OGE5ZWI3MzJjYmMyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb29r
aWVzKERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwog
CiAgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7
Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJl
Q29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6
OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBn
ZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4m
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50Jiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGYwYmI4NmRkZDUwOTll
MzExZDg5YTQ5YmUzYTNiZTQwNzdmNWU1Yi4uMWY3YTI5YzRiMzAxYTM2NTgyMmU0MjMzYjQxNWRk
MWMwMDE5MTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZnJh
bWVMb2FkZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6
bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVjMzkxMjdhMWFkNmMyNWUwZDM0
NmJlN2E0NjhjYjZlYTk4ZjNmYzkuLjA3NDg3NjExOGRjNjkxYWE3YzhhZGE5N2I3OTcxMzczM2Ey
OGE2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkxh
eW91dE1pbGVzdG9uZS5oIgogI2luY2x1ZGUgIkxpbmtJY29uLmgiCisjaW5jbHVkZSAiUGFnZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CkBAIC0xMjYsNyArMTI3LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciop
ID0gMDsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0ID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA4YTgyMzgxZjAxODE2NWU2NTNl
M2M0YjI1NGU1Njk3YjYzYzA5ZjcwLi40NWZlYjYzNWY3MGMzNWM5OWM3MTZkMzkxNDEyYTVmZDJk
MWRlZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNs
dWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kuaCIKQEAgLTU3LDcgKzU4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQg
TG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2Uo
RnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4mJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hy
b25vdXNseShGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29t
cGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9h
ZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZShSZXNvdXJjZUxvYWRlciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlciYsIGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uQWN0aW9uLmNwcAppbmRleCA3NzQ1MDAxZTc4YWM5N2JlMDI0YjIzZDQxMTBlYzRmZDI5
MGI3ZDNiLi5mMjZhOWFhZjJmZDc5NzRjZDNlNzFjODU5YWI0M2ZlZTIwZjgwM2ZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5hdmlnYXRpb25BY3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVz
dGVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fdXJsIHsgVVJMIHsgZG9jdW1l
bnQudXJsKCkgfSB9CiAgICAgLCBtX29yaWdpbiB7IG1ha2VSZWZQdHIoZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSkgfQotICAgICwgbV9wYWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZy
YW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5wYWdlSUQoKS52YWx1ZU9yKDApLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjx1aW50NjRfdCwgdWludDY0
X3Q+KDAsIDApIH0KKyAgICAsIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIgeyBkb2N1bWVudC5mcmFt
ZSgpID8gc3RkOjptYWtlX3BhaXIoZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pLCBkb2N1bWVudC5mcmFtZSgpLT5s
b2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjxQ
YWdlSWRlbnRpZmllciwgdWludDY0X3Q+KHsgfSwgMCkgfQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAppbmRleCAxYTQ0ZjkxZDM2ODFiODE0MDBlNzExMjdl
YTUyNzJjNzViZTRiZTA3Li5lZDdkMDljZjI4OTJiYjg0ZGYyZjI0OWIwNTE0NzVkOGRjNzM2Nzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCisjaW5jbHVkZSAi
UGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBA
IC02MywxNCArNjQsMTQgQEAgcHVibGljOgogICAgIE5hdmlnYXRpb25BY3Rpb24oTmF2aWdhdGlv
bkFjdGlvbiYmKTsKICAgICBOYXZpZ2F0aW9uQWN0aW9uJiBvcGVyYXRvcj0oTmF2aWdhdGlvbkFj
dGlvbiYmKTsKIAotICAgIHVzaW5nIFBhZ2VJREFuZEZyYW1lSURQYWlyID0gc3RkOjpwYWlyPHVp
bnQ2NF90IC8qIHBhZ2VJRCAqLywgdWludDY0X3QgLyogZnJhbWVJRCAqLz47CisgICAgdXNpbmcg
UGFnZUlEQW5kRnJhbWVJRFBhaXIgPSBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+OwogICAgIGNsYXNzIFJlcXVlc3RlciB7CiAgICAgcHVibGljOgogICAg
ICAgICBSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmKTsKIAogICAgICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICptX29yaWdpbjsgfQotICAgICAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZyYW1lSURQYWlyLmZp
cnN0OyB9CisgICAgICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KICAgICAgICAgdWludDY0X3QgZnJhbWVJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIuc2Vjb25kOyB9CiAgICAgcHJp
dmF0ZToKICAgICAgICAgVVJMIG1fdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggMTRiYzJmM2JlZWZhMmE2MDMyYTI2YzdkNmFkMmZj
ZmQ4N2I3Y2IyYi4uZmZhZGExYzQ1YmU0NjZiN2ZhZGNmZDA2OTEwMTMyNWVjYTM5ZDU1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRh
dGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFZlY3RvCiAgICAgbV9ub3RpZmljYXRpb25D
YWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9uQ2FsbGJhY2spOwogfQogCi12b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJh
Y2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3Bl
bmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxs
YmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVCghbV9yZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2spOwogICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CkBAIC0yMzQsNyArMjM0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJl
ZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVy
UGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCit2b2lkIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQp
CiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVuZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdp
c3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBvcGVuZXJVcmwgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggYzQ2NjFiMDQ3NjA3MzIwZmQ4
N2ZiYjNkYmJiODAzZTRkMTFkNGE0MS4uZGUxYzk0YTcyY2Q0NzFjY2Y3ZjgyYjVhMmNiYjkxNzdk
YjU2ODBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzQWN0
aXZpdHlSZWNvcmQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQo
VmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVpbnQ2NF90
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lk
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFBhZ2VJZGVudGlmaWVy
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldExvZ1VzZXJJbnRlcmFjdGlvbk5vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0TG9nV2ViU29ja2V0TG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNr
KEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxsVGltZSk+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TG9nU3VicmVzb3VyY2VMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4mJik7CkBAIC05NCwxMyArOTUsMTMgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3Rp
Y3MoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVu
ZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwOwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdURjo6V2FsbFRpbWU+
IG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwOwogICAgIEZ1bmN0aW9uPHZvaWQoVmVj
dG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwot
ICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNr
OwogICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJik+IG1fbG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dXZWJTb2NrZXRMb2FkaW5nTm90
aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1l
KT4gbV9sb2dTdWJyZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDE2ZDNmOWMxYWVkNWE3NWEwYTQ5Zjg0NWZlNDQxMDMw
MmRiNGUxN2YuLmFkNzA1ODgyYjEwMzNmMGMwMzJjZTcxMjFhNzdiNTE0MTIzM2JmMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNDg5LDggKzQ4OSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgPSAwOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJs
ZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZy
YW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIHVp
bnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8s
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOyB9CisgICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQq
LywgUGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZy
YW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50
NjRfdCAvKmZyYW1lSUQqLywgUGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaAppbmRleCAxNTZjOWNkMjA1ZDRjZjMyNGQ2ODFmOTc2
MTMyYzE2Y2UyZjE3NGQ0Li4wZDdiM2RiZjcyZjgxZTRmZDYyYTczZmVkMjU4MWNlYWVlMTY3YjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKQEAgLTI1
LDEzICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ly8gRnJhbWUgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQg
cHJvY2Vzc2VzLgogc3RydWN0IEdsb2JhbEZyYW1lSWRlbnRpZmllciB7Ci0gICAgdWludDY0X3Qg
cGFnZUlEOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICB1aW50NjRfdCBmcmFtZUlE
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9u
YWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxGcmFtZUlkZW50aWZpZXI6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBkZWNvZGVyID4+IHBhZ2VJRDsK
ICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGQ1ZjhkMjk3NTYzZWUwMjljNDEz
ZTljZGE3NDk0YzVmYTRkOGFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworZW51bSBQYWdlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGFnZUlkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkuaAppbmRleCAxMTU5MDUwY2QzMmM5M2NkM2IxMWNmMTMyMjU2
OWQ2NDFlNTBkNjM2Li5hNmY4MzY2NGNiMDE5NzI0NWFlYjdiYzhmMDQwOWY0ZWJiZWIwZWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2FtZVNpdGVJbmZvLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM4LDcgKzM5LDcgQEAgc3RydWN0IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5IHsKICAgICBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvOwog
ICAgIFVSTCB1cmw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzIHsgSW5jbHVk
ZVNlY3VyZUNvb2tpZXM6Ok5vIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC03MSw4ICs3MiwxMSBAQCBPcHRpb25hbDxDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk6
OmRlY29kZShEZQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmZyYW1lSUQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhZ2VJRCkpCisgICAgT3B0aW9uYWw8T3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBwYWdlSUQ7CisgICAgZGVjb2RlciA+PiBwYWdlSUQ7Cisg
ICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0
LnBhZ2VJRCA9ICpwYWdlSUQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggNDY1ZGE1N2JmMzg3Y2E1YmNmOWJiZWEy
NzJmMmMyNGZmMTI2NWRjYi4uN2EyN2ViNTM0MDZkNjE5MTliNTIwMTAwMzJiNTRhZGMxNTQ4MDg0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtNjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZv
ci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkg
Y29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hv
dWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51
cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0KICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hv
dWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVS
TCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSBjb25zdAogewogICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFy
dHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9t
YWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRv
bWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlE
KSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3JhbnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0
cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygp
IGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAgICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1w
dHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3Jh
bnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0K
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0g
bV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAgIGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1l
SUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNE
YXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9y
YWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwogICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nl
c3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAg
IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9
CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0
aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRS
ZXNvdXJjZS5hZGQocGFnZUlELCB0b0RvbWFpbik7CiB9CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKCkKICAgICBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0
TW9kZSA9IHRydWU7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK09wdGlvbmFsPFNlY29uZHM+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgfHwgIXBhZ2VJRCB8
fCBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmgKaW5kZXggODRkNGViNjZhNzQwNWU5YzY2Yzk0ZDY3YTgwOTE4YTA4ZDdkZGY3ZS4u
NThkYTg3ODkwN2ZmNzQwMjQ4YzNiMTU4NzRkOTEzMjk3OWE4ZDMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxT
dG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdpc3Ry
YWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29v
a2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRv
Y3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBj
b25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwzMCArMTM1LDMwIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5h
bWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVz
Rm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4s
IEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29v
a2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29u
c3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxv
Y2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMs
IGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVz
Rm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
Zmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWlu
dDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxs
U3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQgQEAgcHJpdmF0
ZToKICAgICBDcmVkZW50aWFsU3RvcmFnZSBtX2NyZWRlbnRpYWxTdG9yYWdlOwogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGll
bnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdDsKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGll
bnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvcjsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBIYXNoTWFwPHVpbnQ2NF90LCBSZWdpc3RyYWJsZURvbWFpbiwgRGVmYXVsdEhhc2g8
dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2
NF90Pj4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7Ci0g
ICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFi
bGVEb21haW4+LCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7
CisgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDx1aW50NjRfdCwgUmVnaXN0cmFi
bGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNz
OworICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4s
IFJlZ2lzdHJhYmxlRG9tYWluPj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwogICAgIE9w
dGlvbmFsPFNlY29uZHM+IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgeyB9
OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgeyB9
OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXNTaG9y
dCB7IH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRI
YXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
aW50NjRfdD4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291
cmNlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZ2lzdHJhYmxlRG9t
YWluPiBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsK
ICAgICBib29sIG1fbmF2aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlvblRlc3RNb2RlID0gZmFsc2U7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAppbmRleCA2
N2RmNzY0ZDJjNGFlNDVhOTY4NTk0NGFjNDIxNWNkNTUzYTJiMjUxLi4zMzBhYTYwODY2MTQwYjI0
ZDliNzA1MjM4M2E4MWNlY2Y5MGI5OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNG
TmV0V2luLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNv
b2tpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQogICAgIHJl
dHVybiBwYXJzZWRDb29raWVzOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFs
dWUpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlSUQpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zU2VjdXJl
Q29va2llcyhDRkFycmF5UmVmIGNvb2tpZXMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBA
IC0yNDAsNyArMjQwLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBj
b29raWVTdHJpbmcsIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0
CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gcG9saWN5ID09
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5
RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeUFsd2F5czsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURf
UEFSQU0ocGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4
IDYzNzQwMzUyYzRhNjI3ZWQ2ZmVlZDY5ZmZlYjA5ZDE5N2E4ODc0YzcuLjU1N2U5NzdiNGQ3MmFj
ODE5N2U5OWUyOTZlNGMyMTAwNzY3M2NjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbQpAQCAtMjk0LDcgKzI5NCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4g
ZmlsdGVyQ29va2llcyhOU0FycmF5ICp1bmZpbHRlcmVkQ29va2llcywgT3B0aW9uYWw8U2VjCiAg
ICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNG
b3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQp
CitzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJz
dFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCkBAIC0zMDcsNyArMzA3LDcgQEAgc3RhdGlj
IE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGYKIH0KIAogZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90
SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLXN0YXRpYyBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBP
bmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykKK3N0YXRpYyBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5
T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAKQEAgLTM2MywxMiArMzYzLDEyIEBAIHN0YXRp
YyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2ll
U3RvcmFnZSkKICAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQWxsQ29va2llcyhjb29raWVT
dG9yYWdlKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICByZXR1cm4g
Y29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2ll
cyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJl
Q29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcykgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIEluY2x1ZGVIVFRQT25s
eSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpAQCAtMzc4LDcgKzM3OCw3IEBAIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBoZWFk
ZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBo
ZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVs
ZFByb3h5LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVT
ZWN1cmVDb29raWVzKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0Cit2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7
CiAKQEAgLTQ0Myw3ICs0NDMsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
c0VuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
CiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcAppbmRleCAyYzExNTY4ZmNlNWIyODkxMjYwZGEzYmU5MWY4OTE3YzA4
NTEyN2E4Li4yOWI0MDA1MDI1MzMwMDc5YWY0NTcyYWI5ZGFjYTZjNWQ4M2ViMDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuY3BwCkBAIC01OSwxMCArNTksOSBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9u
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJl
dHVybiBjb29raWVzLnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKLSAgICBVTlVTRURfUEFS
QU0ocGFnZUlEKTsKIAogICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29v
a2llRGF0YWJhc2UoKTsKICAgICBjb29raWVKYXJEQi5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJs
LCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KTsKQEAgLTc0LDcgKzczLDcgQEAg
dm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3MKICAgICBjb29raWVKYXJEQi5zZXRDb29raWUoZmlyc3RQ
YXJ0eSwgdXJsLCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yayk7CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVzRm9yRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVT
RURfUEFSQU0ocGFnZUlEKTsKQEAgLTgzLDcgKzgyLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gQ29va2llSmFyQ3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24KICAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwsIGZhbHNlKSwgZmFsc2UgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2ll
SmFyQ3VybDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0xMTMsNyArMTEyLDcgQEAgYm9vbCBDb29raWVKYXJD
dXJsOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24p
IGNvbnN0CiAgICAgcmV0dXJuIHNlc3Npb24uY29va2llRGF0YWJhc2UoKS5pc0VuYWJsZWQoKTsK
IH0KIAotYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29s
IENvb2tpZUphckN1cmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBV
TlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaApp
bmRleCA4OTQxMDIzZjgwNjhlYTc0ODBiN2M1MGQ1Y2U2ZjhkZjU1Y2UyYjkzLi4yNGEwNWEyMjdh
ZTA2YWJhMTE0MzE1MmE4ZmFjODQ4MjllMDFmNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmgKQEAgLTI0LDYgKzI0LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CkBAIC00MSwxNSArNDIsMTUgQEAgZW51bSBjbGFzcyBDb29raWVBY2NlcHRQb2xp
Y3k7CiAKIGNsYXNzIENvb2tpZUphckN1cmwgewogcHVibGljOgotICAgIHN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIGNvbnN0OwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIElu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIENvb2tpZUFjY2VwdFBvbGljeSkgY29uc3Q7CiAgICAgQ29va2llQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBjb25zdDsKICAg
ICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIGNvbnN0
OwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dDsKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eSYpIGNvbnN0OwotICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OworICAgIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFZlY3RvcjxDb29raWU+JikgY29uc3Q7
CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIGhv
c3RuYW1lcykgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0
TmFtZXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5
NGM4NmFmZThmNzQwYWVkZDI4YWQ5NzI3Mjc1MWVlYmEzODQzMjMuLjY4NzJiMGFjOWIwMDE5ZGU1
ODNlYjI2OGM4Yzk0NTc5OWVmOTQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3Vy
bC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3QKIHsKICAgICBjb29raWVTdG9yYWdlKCkuc2V0Q29va2llc0Zyb21ET00o
KnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHZh
bHVlKTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNF
bmFibGVkKCp0aGlzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBy
ZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsK
IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENvb2tpZXMoY29uc3QgVVJMJikKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmdldFJhd0Nvb2tpZXMoKnRo
aXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJhd0Nv
b2tpZXMpOwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpmbHVzaENvb2tpZVN0b3JlKCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQg
dG8gdXNlLgogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDFmNzU4NzdhODJiMzE4Mzk0NzYxMTIzYmU2ZjU4
NWE0NzYxY2Y4OTYuLmY2NjQxZWZlYjQ0YzczNDM0ZTRkMTVhNGE1YWJlZGQ4NTZmMjBlNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29r
aWVzLCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFt
ZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBWZWN0
b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1
cmwpCiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIu
Z2V0KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9Q
QVJBTShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01MjIsNyAr
NTIyLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4gY29va2llc0ZvclNl
c3Npb24oKnRoaXMsIHVybCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQ
YXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDk2NjFi
YzQzN2U5ODU0MmI2YzVjMWQ2NjQ4OTZmNjAyODVhN2ZiM2QuLjU0MzkwMmZmNTM0ZWE1MGE0ZGVi
MDUxNjJjMmVlYjM1YmEyZDdkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNp
Zm5kZWYgUmVzb3VyY2VSZXF1ZXN0X2gKICNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2lu
Y2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
IgogI2luY2x1ZGUgIlVSTFNvdXAuaCIKIApAQCAtMzgsNyArMzksNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAg
ICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxh
Z3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5p
dGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDYsNyArNDYsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2Uo
dXJsLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkK
ICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3Nv
dXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwg
bV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01NCw3ICs1
Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQog
ICAgICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigw
KSkKLSAgICAgICAgICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTYzLDcgKzYx
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RC
YXNlKFVSTCgpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBv
bGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAg
LCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAg
ICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03
MSw3ICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VS
ZXF1ZXN0QmFzZShVUkwoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29s
Q2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAg
ICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0g
ICAgICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAg
ICB1cGRhdGVGcm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CkBAIC04MCw3
ICs3Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZShzb3VwVVJJVG9VUkwoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3QpKSwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAg
ICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxh
Z3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5p
dGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9tU291cFJl
cXVlc3Qoc291cFJlcXVlc3QpOwogICAgICAgICB9CkBAIC0xMDAsOCArOTUsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3Mgc291cE1lc3NhZ2VGbGFncygp
IGNvbnN0IHsgcmV0dXJuIG1fc291cEZsYWdzOyB9CiAgICAgICAgIHZvaWQgc2V0U291cE1lc3Nh
Z2VGbGFncyhTb3VwTWVzc2FnZUZsYWdzIHNvdXBGbGFncykgeyBtX3NvdXBGbGFncyA9IHNvdXBG
bGFnczsgfQogCi0gICAgICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCB7IHJl
dHVybiBtX2luaXRpYXRpbmdQYWdlSUQ7IH0KLSAgICAgICAgdm9pZCBzZXRJbml0aWF0aW5nUGFn
ZUlEKHVpbnQ2NF90IHBhZ2VJRCkgeyBtX2luaXRpYXRpbmdQYWdlSUQgPSBwYWdlSUQ7IH0KKyAg
ICAgICAgUGFnZUlkZW50aWZpZXIgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5pdGlhdGluZ1BhZ2VJRDsgfQorICAgICAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlSUQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKSB7IG1faW5pdGlhdGluZ1BhZ2VJRCA9IHBhZ2VJRDsgfQogCiAg
ICAgICAgIEdVbmlxdWVQdHI8U291cFVSST4gY3JlYXRlU291cFVSSSgpIGNvbnN0OwogCkBAIC0x
MTMsNyArMTA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hY2Nl
cHRFbmNvZGluZyA6IDE7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7Ci0g
ICAgICAgIHVpbnQ2NF90IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgUGFnZUlkZW50aWZp
ZXIgbV9pbml0aWF0aW5nUGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VN
ZW1iZXJzKFNvdXBNZXNzYWdlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3Nh
Z2VCb2R5KFNvdXBNZXNzYWdlKikgY29uc3Q7CkBAIC0xNjIsMTAgKzE1NywxMSBAQCBib29sIFJl
c291cmNlUmVxdWVzdDo6ZGVjb2RlV2l0aFBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zb3VwRmxhZ3MgPSBzdGF0aWNfY2FzdDxTb3Vw
TWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKTsKIAotICAgIHVpbnQ2NF90IGluaXRpYXRp
bmdQYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbml0aWF0aW5nUGFnZUlEKSkKKyAg
ICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBkZWNvZGVy
ID4+IGluaXRpYXRpbmdQYWdlSUQ7CisgICAgaWYgKCFpbml0aWF0aW5nUGFnZUlEKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2VJ
RDsKKyAgICBtX2luaXRpYXRpbmdQYWdlSUQgPSAqaW5pdGlhdGluZ1BhZ2VJRDsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDBmNmVhMTk3ODdhNDZj
NzQ3NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUuLjBlZDI1YjM3ZDVmODA4NzY4MTI1Mzg3NzA4OTBh
ZjliODhlOTM2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTE4Myw3ICsxODMsNyBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNv
dXBSZXF1ZXN0KSBjb25zdAogewogICAgIGlmIChtX2luaXRpYXRpbmdQYWdlSUQpIHsKICAgICAg
ICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1aW50NjRfdCo+
KGZhc3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSkpOwotICAgICAgICAqaW5pdGlhdGluZ1BhZ2VJ
RFB0ciA9IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgKmluaXRpYXRpbmdQYWdlSURQdHIg
PSBtX2luaXRpYXRpbmdQYWdlSUQudG9VSW50NjQoKTsKICAgICAgICAgZ19vYmplY3Rfc2V0X2Rh
dGFfZnVsbChHX09CSkVDVChzb3VwUmVxdWVzdCksIGdfaW50ZXJuX3N0YXRpY19zdHJpbmcoZ1Nv
dXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSksIGluaXRpYXRpbmdQYWdlSURQdHIsIGZhc3RG
cmVlKTsKICAgICB9CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0KSBjb25zdAogdm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21Tb3VwUmVxdWVzdChTb3VwUmVxdWVzdCogc291cFJl
cXVlc3QpCiB7CiAgICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2Fz
dDx1aW50NjRfdCo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBSZXF1ZXN0KSwgZ1Nv
dXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSkpOwotICAgIG1faW5pdGlhdGluZ1BhZ2VJRCA9
IGluaXRpYXRpbmdQYWdlSURQdHIgPyAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA6IDA7CisgICAgbV9p
bml0aWF0aW5nUGFnZUlEID0gbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBl
Pihpbml0aWF0aW5nUGFnZUlEUHRyID8gKmluaXRpYXRpbmdQYWdlSURQdHIgOiAwKTsKIH0KIAog
dW5zaWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAppbmRleCA4NzljMGIxOWU5NjZmMjk2OWJhMGFmNDc4YjZlODNlNjMwNWI5NDBiLi5iNjg5YzNl
MjVhZDgyM2VjZjZkMzA0ZWU3ODljYTlmMzQ1ZGEyZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3MTYs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3RvcmFn
ZUltbWVkaWF0ZWx5KCkKICAgICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQzLDcg
Kzc0Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywg
T3BlbmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9t
YWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwg
V1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsg
fSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURv
bWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChX
VEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQs
IHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlE
IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JF
YXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1l
SUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNzYwZDJhM2UxZWNi
ZGU4Yjc1ODUzNzU1ZTNhZTkwLi5iZmMyMzM5Njg1MzMyMDAyNjI2Nzg5NDMxYWUwNzNiMmQzOTc1
ZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlm
TmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQs
IE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9y
RG9tYWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpIG92ZXJyaWRlOwogCkBA
IC05MSw5ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVs
ZW1ldHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVE
b21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJv
b2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dV
c2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3
ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25l
ZCByZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNE
b21haW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBTdGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2
YWxlbnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMp
OwogICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0g
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BG
cmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0lu
dGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRU
b1ByZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFs
ZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVEYXRh
UmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwZWU3Zjk2Mzg5NDYx
NWRmZDEzNWIxODQwOTBiNTNmODFiZDlkZmY0Li5hNWYyNjI0ZTQzMzRjZTkwMzlmYWE1ZTJkMWU1
YzQxZmQwZDA4N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAgICAgICAgbV9w
ZXJzaXN0ZW50U3RvcmFnZS0+c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpZZXMpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlE
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIyNCw3
ICsyMjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgcwogICAgIH0pOwogfQogCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgRnJhbWVJRCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgRnJhbWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiBzdQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9w
ZW5lclBhZ2VJRCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4m
JiBvcGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyAhPSBvcGVuZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
Mjg3LDcgKzI4Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluCiAgICAgZ3JhbnRTdG9yYWdl
QWNjZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZN
b3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFn
ZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShz
dWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQs
IHByb21wdFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRv
cEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21w
dFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oCmluZGV4IDQ0ZWZiZjRkZWMxNGYyMDI3MDJhY2FkMDc3NjhmNWFjODIwYjgw
NWEuLjQ1ZjdlMWI3NTk2OTNjMTEwM2EzZDY2MjczMTZkNmZjZTAyZTRjZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmln
YXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNv
bnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJh
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1l
RG9tYWluJikgb3ZlcnJpZGU7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2ln
bmVkIHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFp
bihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21h
aW4+JiwgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVu
dChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVi
dWdNb2RlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3
OWNjMWYxYjk0NTYyMWI5YTA1NTI0ODRjMDk2YzUuLmQ3Nzk4YjI1ZDFlM2JiYmI3OGE4N2FiM2Ux
YTVhMzEzOWYxNGJhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKQEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWlu
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3Bl
bmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVy
UGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNp
bmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogICAgIAogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSgpOwpAQCAtMTEwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0
b3JhZ2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQ
YWdlSUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZv
aWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAgICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Rl
YnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH07CiAg
ICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQ
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1l
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZp
Z2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJv
bURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4
IDg3MWIxOWQyZjA3NDg2ZTBmNGJiNzYzYzY5ZGFhMWFhZmY4N2M5OTIuLjYyMjQzMGNkOGU0ZjA5
ZWNhZjhmYTM2OGEzODlmMGNhYjg3YzEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZl
Y3RvcjxXZWJDb3IKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3Vi
RnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
c3ViRnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CkBAIC0yOTgsMTIgKzI5OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcwog
ICAgIH0pOwogfQogCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
c291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBt
X25ldHdvcmtTZXNzaW9uID8gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCkuaGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlEKSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFu
ZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYm
IGNhbGxiYWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMxNSw3
ICszMTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUgogICAgIGNhbGxiYWNrKGZhbHNlKTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoc3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOjpObyk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBS
ZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGUK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWlu
Lmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVk
Q29weSgpLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMzk2LDcgKzM5
Niw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgfSk7CiB9CiAKLVN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00MDksNyAr
NDA5LDcgQEAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QKICAgICByZXR1cm4gaXNTdG9yYWdlR3Jh
bnRlZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxs
R3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hh
bmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAppbmRleCA4NzU5ZDYwMTY2YTU1MGVlNjlhNjJiMTcxZGVhODZmZTNhNDFiOTJmLi43
OWNmMjQ2MDFjMzJlNzA1Y2Q4YjQ1M2Y5MjNiZmQzNjYzMTE0ZDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNp
bmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04
Miw4ICs4Myw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2VzcyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFp
biA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9
IHVpbnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1l
SUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEw
NCw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNl
c0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwog
CkBAIC0xMTgsMTEgKzExNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFj
dGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURh
dGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVn
aXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdy
YW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
LSAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2
b2lkIHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lk
IGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3Jh
Z2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNj
ZXNzSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
T3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVB
bGxTdG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBj
YWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBW
ZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+Jik7Ci0gICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
cihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwg
UGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxI
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdv
cmtQcm9jZXNzKCk7CiAKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3Rp
ZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50
UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsK
IAogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlE
LCBPcGVuZXJEb21haW4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmlu
ZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5
NzE4MzZhZGE1YWU4Mjk3YjViNTc5MDZiYzkwNWMxODNjZWI2ZC4uNGQzZDE2OWY2YWY5ZjQzYjc2
MTA4MWNmYmZlNjBhZmM1YTM5M2ZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgICAgICBTdHJpbmcg
dXNlckFnZW50OwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7Ci0gICAgICAgIHVp
bnQ2NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwog
ICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCAzZDcxZjhmNmIxYjZjMjZkYjA1NTBmODhhYTVlZTExNDQyMTBh
OTA2Li45MmM4YjdhZTQ0ZmIzYjc3NGQ2YjA1OThjNDE5YzM4M2ZlYjA5MjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50
aWZpZXIKICAgICBBU1NFUlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBhZ2VM
b2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkK
IHsKICAgICBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHdlYlBhZ2VJRCk7
CiB9CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2kKICAgICBsb2Fk
ZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
IGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNz
aW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CiAgICAgYXV0byByZXN1bHQgPSBuZXR3
b3JrU3RvcmFnZVNlc3Npb24uY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBAIC01MjUsNyAr
NTI1LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRP
TShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29r
aWVTdHJpbmcpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNl
c3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24uc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKQEAgLTU0MiwxMyArNTQyLDEzIEBAIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZVNlc3Npb24o
bmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5jb29raWVzRW5hYmxlZCgpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9u
KG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZp
cnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpn
ZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHJlc3VsdDsK
ICAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmdldFJhd0Nv
b2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVz
dWx0KTsKQEAgLTYzOCwxMyArNjM4LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVT
dG9yYWdlQWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0
d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhw
YWdlSUQpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlCiAgICAg
fQogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1
YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAtNzA5
LDcgKzcwOSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dy
YW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24g
PSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKSB7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbkkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDo6WWVzLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVu
ZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAg
IGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKQEAgLTc0NSw3ICs3
NDUsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1do
aXRlbGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0
X3QgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWlu
UmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCitPcHRpb25hbDxOZXR3
b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRU
cmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElk
ZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNz
aW9uSUQmIHNlc3Npb25JRCkKIHsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5n
KCkKICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmNsZWFyKCk7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2lu
Z0ZvclBhZ2UodWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgZm9yIChhdXRvJiBhY3Rpdml0eVRyYWNrZXIgOiBtX25ldHdvcmtB
Y3Rpdml0eVRyYWNrZXJzKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVRyYWNrZXIucGFnZUlEID09
IHBhZ2VJRCkKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NAogICAg
IH0pOwogfQogCi1zaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290
TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCkKK3NpemVfdCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogICAgIHJldHVybiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmZpbmRNYXRjaGlu
ZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgewogICAgICAgICByZXR1cm4gaXRlbS5pc1Jvb3RBY3Rp
dml0eSAmJiBpdGVtLnBhZ2VJRCA9PSBwYWdlSUQ7CkBAIC05MDMsMTcgKzkwMywxNyBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRz
KCkKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6Q2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7
CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQo
KSwgc2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc1JlbW92ZWQo
bV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNl
c3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VzKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2Vk
KFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVy
PiYgcGFnZXMpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25DaGFu
Z2VkKG1fY29ubmVjdGlvbi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKaW5kZXggY2JjN2JiZmU4ZjU3ZDc1NDEzMTU4MTA0Zjg4YTU0NDAwOTQy
MDc2Yi4uMDZkNTc5Njg4Mjg2NThlMTY4YzJjODFmNzI4MWYxZjk2MGM4MDRiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzMsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBt
X25ldHdvcmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3Vy
Y2VMb2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlE
LCBib29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwg
Ym9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0
b3BUcmFja2luZ1Jlc291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQs
IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6
OkJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVh
ckNvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6
OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZv
aWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0g
ICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2Fz
QWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFM
OjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nl
c3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllcik7CkBAIC0xNzAsMTYgKzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIo
UmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50
NjRfdCB3ZWJQYWdlSUQpOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291
cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3Rh
cnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2
b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
IAotICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29v
a2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYp
PiYmKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0Fj
Y2Vzc2VkKT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
Jik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9i
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAg
cHJpdmF0ZToKICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNE
YXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQg
Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJh
Y3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9p
ZCBsb2dXZWJTb2NrZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIFdhbGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7
CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dGFyZ2V0RG9tYWluKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZl
Y3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0
b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9w
ZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwor
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAg
ICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIz
OSwyOSArMjQwLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyKGNvbnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAg
ICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2
aXR5VHJhY2tlciYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcih1aW50NjRfdCBwYWdlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBh
Z2VJRCB7IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAg
ICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6Okxh
YmVsOjpMb2FkUGFnZSB9CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNl
TmV0d29ya0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBy
ZXNvdXJjZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAg
LCByZXNvdXJjZUlEIHsgcmVzb3VyY2VJRCB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0
eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICB1aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRl
bnRpZmllciByZXNvdXJjZUlEIHsgMCB9OwogICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsg
ZmFsc2UgfTsKICAgICAgICAgTmV0d29ya0FjdGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7
CiAgICAgfTsKIAogICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0g
ICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBh
Z2VJRCk7Ci0gICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJ
RCk7CisgICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzaXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHko
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5
VHJhY2tlcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxF
KEFQUExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCBmN2M5N2VlYmIyMTNjZDc4M2NhZjRlMjA0NjliZmEzY2UxOTRjOGNlLi44
MzNlNzRmY2Y2MDAzZWI4M2FjMWRlMmQ4YzZiZmMwZmYyNWI5ZmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDE4ICsyNiwxOCBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
UGVyZm9ybVN5bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4gZGF0
YSkgU3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCiAgICAgUmVtb3ZlTG9hZElkZW50aWZp
ZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKLSAgICBQYWdlTG9hZENvbXBsZXRl
ZCh1aW50NjRfdCB3ZWJQYWdlSUQpCisgICAgUGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkK
ICAgICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAg
U3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1
Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIs
IFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tp
ZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2ll
U3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgU2V0
Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwg
c3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKLSAgICBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBm
aXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJM
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29v
a2llcykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNp
dGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNo
cm9ub3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2ll
U3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0
UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1
Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAg
IERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBj
b29raWVOYW1lKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0
aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJp
bmcgY29udGVudFR5cGUpCkBAIC01NiwxNiArNTYsMTYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEVuc3VyZUxlZ2FjeVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIENsZWFyUGFn
ZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCk7CisgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQogICAgIExvZ1dl
YlNvY2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZy
YW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZUxvYWRpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJn
ZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxs
VGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0
YXRpc3RpY3MpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwotICAgIFJlcXVlc3RTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChlbnVtOmJvb2wg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMK
LSAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9w
ZW5lckRvbWFpbikKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5j
CisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWlu
KQogI2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291
cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9u
SG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC04Nyw3ICs4Nyw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKIAogICAgIFNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJZGVudGlmaWVyKQogCi0gICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCi0gICAg
V2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdl
SUQpCi0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Np
b25JRCwgVmVjdG9yPHVpbnQ2NF90PiBwYWdlcykKKyAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKKyAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyAg
ICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBW
ZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGQxNGIx
ZGU5ZDkxYzAyMmI3ZTBlMDM4MjE3NGRhODgyMmI5M2EzMTguLjQwOTcxNGQ2NjcyNmE4NDc0YWZm
MjlhMTYwODE3ZjI0Nzk2N2IwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzU2FtZU9yaWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3Rv
Y29sSXNCbG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAot
TmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQorTmV0
d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1h
cCYmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3Ry
aW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQog
ICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNz
aW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMzFk
MTFjM2E4YWVjYjJhYWZkNDllNWMzMTAzOThlMGFjMTZkZGVlNy4uNTdkZjFkYTQ2ODBkMjU4NGVl
MjE2YWFkZmYwOGRlODJhMTM2YmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdv
cmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+
IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwg
T3RoZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNv
cmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hv
dWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVl
c3RMb2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5l
dHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhl
YWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJD
b3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdy
YWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIp
OwogICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRy
aXBsZXQgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1By
b2Nlc3M7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hl
Y2tzLgogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAv
LyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggODk2Mzk5ZDEzMzI1ZDAxNGEx
NzRiZjc3YjRjYTYzNmNhZjJlMGM0Ni4uODk3MzBjZjlmZDI2OTliY2ZkMzJkZGMzOGVmOGNlMDM3
NDZhMzAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTM4LDcgKzM5LDcgQEAg
ZW51bSBjbGFzcyBQcmVjb25uZWN0T25seSB7IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya0xv
YWRQYXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgeyAwIH07Cisg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEOwogICAgIHVpbnQ2NF90IHdlYkZy
YW1lSUQgeyAwIH07CiAgICAgV1RGOjpQcm9jZXNzSUQgcGFyZW50UElEIHsgMCB9OwogICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IGQ4MTMwODU0ZjEzZTQzNmE2YmFiNThiYWIyNzZhYmZkNTc0NGI1NjQuLmU1YzJiZWFl
NThjOGRhN2JhOTlhMjMwYzM5MjQ5M2FhZTczMjk2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFBBTDo6U2Vzc2lvbklEIHNlcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21E
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRh
VHJhbnNmZXIsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1p
dENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRh
VHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQoIW5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaXNF
bXB0eSgpKTsKIApAQCAtMTk2MSw3ICsxOTYxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCBhbGxvd3MsIENvbXBsZXQK
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dE
aWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVy
IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTk2OSw3ICsxOTY5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9n
RGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3MK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2Ny
aXB0aW9uLCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xv
Z2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91
bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5
NzcsNyArMTk3Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0CiAgICAgcGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRpb24s
IHJlc3VsdCwgU2hvdWxkU2FtcGxlOjpObyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVl
LCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMs
IFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVL
ZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNz
aW9uLT5yZW1vdmVLZXB0QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQogewogICAgIGlmICghcGFnZUlEIHx8ICFvbGRQYWdl
SUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgYWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlk
Iik7CkBAIC0yNjQ1LDEzICsyNjQ1LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VX
YXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklECiAgICAg
ICAgIHJldHVybiBzZXNzaW9uSUQ7CiAgICAgfSk7CiAKLSAgICBzdG9yYWdlTWFuYWdlci5jcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQsIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSk7Ci0gICAgc3RvcmFnZU1hbmFnZXIuYWRkQWxsb3dlZFNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQsIGNvbm5lY3Rpb24pOworICAgIHN0b3JhZ2VN
YW5hZ2VyLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgpLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIHN0b3JhZ2VNYW5hZ2Vy
LmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELnRvVUlu
dDY0KCksIGNvbm5lY3Rpb24pOwogICAgIGlmIChwYWdlSUQgIT0gb2xkUGFnZUlEKQotICAgICAg
ICBzdG9yYWdlTWFuYWdlci5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG9sZFBhZ2VJRCwg
cGFnZUlEKTsKKyAgICAgICAgc3RvcmFnZU1hbmFnZXIuY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShvbGRQYWdlSUQudG9VSW50NjQoKSwgcGFnZUlELnRvVUludDY0KCkpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBpZiAoIXBhZ2VJRCkgewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCByZW1vdmUgcGFn
ZSB3aXRoIGludmFsaWQgaWQiKTsKQEAgLTI2NjQsOCArMjY2NCw4IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFM
OjpTZXNzaW9uCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0g
c2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBzdG9yYWdlTWFuYWdlci5yZW1vdmVBbGxv
d2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRCwgY29ubmVjdGlvbik7
Ci0gICAgc3RvcmFnZU1hbmFnZXIuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJ
RCk7CisgICAgc3RvcmFnZU1hbmFnZXIucmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlQ29ubmVjdGlvbihwYWdlSUQudG9VSW50NjQoKSwgY29ubmVjdGlvbik7CisgICAgc3RvcmFn
ZU1hbmFnZXIuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0yNjgxLDcgKzI2ODEsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKICAgICBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5zdG9yYWdlTWFuYWdl
cigpLnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgcGFnZUlEcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hh
bmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZUlEcykKIHsKICAgICBhdXRv
IGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKICAgICBBU1NFUlQobV9zZXNz
aW9uQnlDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDYwMzBmOGZmYWFiZTE1MDA4
ZjNhZDI2ZmMyM2RiODA2Mzc5ZTkxZWUuLjExMTYzNWQyZTIwMDgxMjJkNzgyNWJjOTYzNzlhYzg5
NjdkYTE4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SURCU2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlw
ZXMuaD4KQEAgLTEzNyw4ICsxMzgsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9E
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2lu
ZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBP
cGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAg
ICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBOZXR3b3JrUHJvY2VzcyhBdXhpbGlh
cnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMTkxLDkgKzE5MCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gRGlhZ25vc3RpYyBtZXNzYWdl
cyBsb2dnaW5nLgotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50Rmln
dXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNz
YWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBs
b2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6
RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91
YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNh
bXBsZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBz
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtMjU5LDcgKzI1OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRp
cmVjdEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVk
aXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lk
IGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvRG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFU
cmFuc2Zlcjo6RmxhZz4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBkaWRDb21taXRDcm9z
c1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
T3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9h
ZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCkBAIC0yNzIsMTAgKzI3MSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lv
bklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFM
OjpTZXNzaW9uSUQpIGNvbnN0OwogCi0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25u
ZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFn
ZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQ
Qzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoSVBD
OjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHdlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJik7Ci0g
ICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NT
ZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYpOwogICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdl
T3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOGFmMTcz
NTE4ZmE3Mjk1MTkwZjA0NTdkNDBhMmM5ZWYxZTQzMmZjZi4uNmQwNjI0MDgzZjc1ZjMzMjcyNmFi
M2ZiMjFkYzFkMmNmZjkwYzIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzEsNyArMTMxLDcgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZWRpcmVjdGVkVG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVkaXJl
Y3RlZEZyb21Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0g
ICAgRGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIHVp
bnQ2NF90IHBhZ2VJRCkKKyAgICBEaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2Zl
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZy
b21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCBPcHRpb25TZXQ8
V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gbmF2aWdhdGlv
bkRhdGFUcmFuc2ZlciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIFNldENy
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1Np
dGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGlu
Y2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCmluZGV4IDU4YWFjYjk5M2RiOThhY2NkYTY1MjJkOTU2NGM5ZWFhODk0YmRhODEuLjMzY2Rj
NGQxN2RiZTJlMDg2NmUzNjEyZWYyMjc2MWEzODIzODA1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCkBAIC0xMDcsOCArMTA3LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndlYlBhZ2VJRCkpCisg
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHdl
YlBhZ2VJRDsKKyAgICBpZiAoIXdlYlBhZ2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJlc3VsdC53ZWJQYWdlSUQgPSAqd2ViUGFnZUlEOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQud2ViRnJhbWVJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBmZTI2NTM2ZjIxYzNlZTlhNzAxODk4Y2EwNTkzMmQ1NWQxNWQzNGIwLi4wZDRmOWEyYTFh
ZWE1Yzg4MDBhNWIxM2ZlMzdlMDE3YmJkYzQ5NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNzQsMTgg
KzE3NCwxOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICBt
X25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1
ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBXVEY6
OnN3aXRjaE9uKHJlc3VsdCwKICAgICAgICAgICAgICAgICBbdGhpc10gKFJlc291cmNlRXJyb3Im
IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0
YXJ0OiBlcnJvciBjaGVja2luZyAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBp
c1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkLCBlcnJvci5kb21haW4gPSAle3B1Ymxp
Y31zLCBlcnJvci5jb2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNv
dXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVy
cm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IGVycm9yIGNoZWNraW5n
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwg
cGFyZW50UElEID0gJWQsIGVycm9yLmRvbWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNvZGUgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwg
dGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21h
aW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMtPmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgICAgIFt0aGlzXSAoTmV0d29ya0xvYWRDaGVja2VyOjpSZWRpcmVjdGlvblRyaXBsZXQm
IHRyaXBsZXQpIHsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+bV9pc1dhaXRpbmdDb250aW51
ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgdGhpcy0+d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRyaXBsZXQucmVx
dWVzdCksIFdURk1vdmUodHJpcGxldC5yZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQu
cmVkaXJlY3RSZXNwb25zZSkpOwotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydDogc3ludGhldGljIHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVS
TCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5j
aHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlz
TWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVu
dFBJRCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2VudCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdhcyBtb2RpZmll
ZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQs
IHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01h
aW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQ
SUQpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMtPmNhblVz
ZUNhY2hlKHJlcXVlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5
bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciBy
ZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3Vz
ID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlz
LT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5w
YXJlbnRQSUQpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+cmV0cmlldmVDYWNoZUVu
dHJ5KHJlcXVlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0KCkKICAgICB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBv
bmNlIG1fbmV0d29ya0xvYWRDaGVja2VyIGlzIHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgog
ICAgIGlmIChjYW5Vc2VDYWNoZShvcmlnaW5hbFJlcXVlc3QoKSkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVu
dFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICByZXRyaWV2ZUNhY2hl
RW50cnkob3JpZ2luYWxSZXF1ZXN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI3
LDEzICsyMjcsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVF
bnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIGxvYWRlci0+bG9n
U2xvd0NhY2hlUmV0cmlldmVJZk5lZWRlZChpbmZvKTsKIAogICAgICAgICBpZiAoIWVudHJ5KSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6
IFJlc291cmNlIG5vdCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVk
LCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
aXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAg
ICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9h
ZDo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChlbnRyeS0+aGFzUmVhY2hlZFByZXZh
bGVudFJlc291cmNlQWdlQ2FwKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJl
c291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5j
aHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5j
aHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBj
YXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOwogICAgICAgICAgICAgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlv
biA9IFdURk1vdmUoZW50cnkpOwogICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRh
dGlvblJlcXVlc3QgPSBvcmlnaW5hbFJlcXVlc3QoKTsKICAgICAgICAgICAgIGxvYWRlci0+c3Rh
cnROZXR3b3JrTG9hZChXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBGaXJzdExvYWQ6Olll
cyk7CkBAIC0yNDEsMjEgKzI0MSwyMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0
cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAg
fQogI2VuZGlmCiAgICAgICAgIGlmIChlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxp
bmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJv
bm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2Fj
aGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2Ug
PSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBp
c01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5k
aXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShlbnRyeSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
IChsb2FkZXItPm1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnktPnJl
c3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1
aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmll
dmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNlcnRpZmljYXRl
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCki
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJl
cXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSB8fCByZXF1ZXN0LmNhY2hlUG9s
aWN5KCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlD
YWNoZURhdGEpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeTogVmFsaWRhdGluZyBjYWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01h
aW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91
cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdURk1vdmUoZW50
cnkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9t
IGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMo
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmV0cmlldmVkIHJlc291cmNlIGZyb20gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3Vy
Y2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICBsb2FkZXItPmRp
ZFJldHJpZXZlQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgfSk7CiB9CkBAIC0yNjMs
NyArMjYzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRy
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExv
YWQgbG9hZCkKIHsKICAgICBpZiAobG9hZCA9PSBGaXJzdExvYWQ6OlllcykgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNv
dXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAKICAgICAgICAgY29uc3Vt
ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGaXJzdExvYQogICAgIH0KICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNz
aW9uIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNl
c3Npb25JRC5zZXNzaW9uSUQoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3
aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25J
RD0lIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNl
c3Npb25JRCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRO
ZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNz
aW9uIHRoYXQgZG9lcyBub3QgZXhpc3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklEPSUiIFBSSXU2
NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5z
ZXNzaW9uSUQoKSk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5sb2dE
aWFnbm9zdGljTWVzc2FnZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lvbklES2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6
Tm8pOwogICAgICAgICBkaWRGYWlsTG9hZGluZyhpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZp
cnN0TG9hCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBt
X25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nv
bm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nl
c3Npb24pOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNj
cmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0
d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQpAQCAtMzIyLDcgKzMy
Miw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVz
dWx0KQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIFJFTEVBU0VfTE9HKExvYWRpbmcs
ICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1
NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdv
cmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
Zmllcik7CiAgICAgCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSByZXNvdXJjZSBjYW1l
IGZyb20gdGhlIGRpc2sgY2FjaGUuCiAgICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7CkBAIC0zNDAs
NyArMzQwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJv
cnQ6IENhbmNlbGluZyByZXNvdXJjZSBsb2FkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAgICAgICAgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAg
ICAgaWYgKG1fcGFyYW1ldGVycy5vcHRpb25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3BvbnNlLmlzTnVs
bCgpICYmICFtX2lzS2VwdEFsaXZlKSB7CiAgICAgICAgIG1faXNLZXB0QWxpdmUgPSB0cnVlOwpA
QCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRl
cnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvCiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgcmVjZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCBy
ZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0
dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOwogCiAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUo
cmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZl
ZFJlc3Bvbgogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQg
Kz0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24pOwpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEZpbmlzaExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNSZWNlaXZlZCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkRmluaXNoTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgaWYg
KHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5l
Y3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0
d29ya0xvYWRNZXRyaWNzKTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMbwogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
RmFpbExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlv
biA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlz
QWNjZXNzQ29udHJvbCgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBp
c0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXND
YW5jZWxsYXRpb24oKSwgZXJyb3IuaXNBY2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgp
KTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAg
ICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZp
ZXIoKSk7CkBAIC03MzEsNyArNzMxLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QKICAgICAg
ICAgfQogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAgICAgbV9pc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFscyA9IGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOwogCkBA
IC05ODgsNiArOTg4LDExIEBAIHN0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9w
dGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1i
ZXIodmFsdWUudmFsdWUoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOwogfTsKIAorc3RhdGljIFN0cmlu
ZyBlc2NhcGVJREZvckpTT04oY29uc3QgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gdmFsdWUgPyBTdHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkg
OiBTdHJpbmcoIk5vbmUiX3MpOworfTsKKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omxv
Z0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2ll
SW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCBzZXNzaW9uSUQoKSkpOwpAQCAtOTk4LDcgKzEwMDMs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBj
b25zdAogICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNv
dXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVz
dCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBw
YWdlSUQoKSwgaWRlbnRpZmllcigpKTsKIH0KIAotc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tp
ZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlm
aWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VS
VChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5l
Y3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDI1LDcg
KzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9B
TExPV0VECiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitz
dGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lk
KiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFT
U0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNv
bm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDg2
LDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aQogI3VuZGVmIExPQ0FMX0xPR19J
Rl9BTExPV0VECiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZv
cm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBP
cHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25J
RCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGE4YTMwMDVjMTQyMzA2MTM4ODc2ODIxYTQzYTA1N2EwYjZm
M2Q3ZmMuLmE4ZjZkMzE1Nzk4YzRhZGZmZjk5ZGE3ZTgyZmZjODMzYTk2NzY4M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnNlc3Npb25JRDsgfQogICAgIFJlc291cmNl
TG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyOyB9CiAgICAgdWludDY0X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlEOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KIAogICAg
IHN0cnVjdCBTeW5jaHJvbm91c0xvYWREYXRhOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwotICAg
IHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZv
aWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2
b2lkIGRpc2FibGVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0NhcHR1cmUoKSB7IG1fc2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA5N2UwYjI0NDA3OGQ4MzJhZWRjZGQ4YTY3OTE4
NDE0ZjI4NzBjNjAyLi41NTNjYmFkMTliYzVhMTk3ZTA2MjUyNzUwZjI4MmNlM2IwNDE2ZmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC00NSw0MCArNDUs
NDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25z
ZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVy
LmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVz
cG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0
YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpE
aWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJl
Y2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsK
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwg
bV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6ZGlkRmluaXNoKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRG
aW5pc2hGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVy
OiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhh
bmRsZSgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6
IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlm
aWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9p
ZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBkMzJjZDQ2Mzg5ZWMw
MjJiZmM1MDE0NWI3MzdlZjRjYWFlYzkzMjMxLi45MWZkYzcxNTk3MWQ3YjE5Y2JiOGI0MmM2NDdk
YjMwYzNhZmUyOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApA
QCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNo
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAgYXV0byogd29y
a2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIXdvcmtlcikgewogICAgICAgICBT
V1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRj
aDogZmV0Y2hJZGVudGlmaWVyOiAlcyAtPiBEaWROb3RIYW5kbGUgYmVjYXVzZSBubyBhY3RpdmUg
d29ya2VyIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0g
d29ya2VyLT5pZGVudGlmaWVyKCk7CkBAIC0xNzAsMTMgKzE3MCwxMyBAQCB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciBzZXJ2aQogCiAgICAgICAgIGlmICghc3VjY2VzcykgewogICAgICAgICAgICAgU1dTRVJW
RVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZl
dGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRpZCBub3QgYmVj
b21lIGFjdGl2YXRlZCIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1
dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwogICAgICAgICBpZiAoIXdvcmtlcikgewotICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUg
eyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5v
dEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dGFydEZldGNoKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4o
KmNvbnRleHRDb25uZWN0aW9uKS5zdGFydEZldGNoKG1fc2Vzc2lvbklELCBtX2NvbnRlbnRDb25u
ZWN0aW9uLmdldCgpLCB0aGlzLT5pZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZlcnJlcik7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElP
Tl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZp
ZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIGZhaWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgICAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlm
aWVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGM3ZjM4NmIz
ZDdjMzE0NTU4MGYyYWMwZTBlMzUyZWE2Yjg3MTU1YzEuLjhiYmMxNjk3ODU2MGU0NDYzMjIxZGY3
M2FjYjEwODc2MmFiNzY5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1
ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KQEAgLTg0
LDcgKzg1LDcgQEAgZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CiAgICAgTm9EdWVUb0V4cGlyZWRS
ZWRpcmVjdAogfTsKIAotdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAv
KndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47Cit1c2luZyBHbG9iYWxGcmFt
ZUlEID0gc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKndlYkZy
YW1lSUQqLz47CiAKIGNsYXNzIENhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGU+IHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCA5NjVjNmZhNjY0YmNkMTU1Zjc2Y2RiM2I0ZDcz
MjZlZWUwM2U5MTg4Li4yZGQwZTdkNDZiYzcxOWU5NmZhMTUwNzRmZWQwMGIxYzg4NjY1NjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9u
Q29jb2E7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3Jr
RGF0YVRhc2sgewogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdl
YkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGlu
Z1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFBy
ZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUo
TmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmlu
Z1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5l
Y3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwg
Y2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwg
ZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIp
KTsKICAgICB9CkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9h
ZE1ldHJpY3M7IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lSUQ7IH07Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7
IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSUQ7IH07CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5l
dHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFt
ZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3
b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlm
ZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOwogCiAgICAgYm9vbCB0cnlQYXNzd29y
ZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTbmlmZmlu
Z1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9fc3Ryb25nIE5TVVJM
UmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZik7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5T
VVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKLSAgICB1
aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsK
IAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYm9vbCBtX2hhc0Jl
ZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0KaW5kZXggMzVlNDQzYjllZTkxODA1N2FkMzRkZWYwNjhhODk5YmVhMDY3YWRmNi4uMjhh
MDVlODBkYjY4NWFmNjdiMjg0Yzg0MjMxNzE5NGY5N2U4N2UzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFza1dpdGhGaXJzdFBh
cnR5Rm9yU2FtZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0YXMKICNlbmRpZgog
fQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29ya0RhdGFUYXNrQ29j
b2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRh
VGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNz
aW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lz
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwg
bV9wYWdlSUQocGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0Rh
dGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigp
KQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlv
bjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogQmxvY2tpbmcg
Y29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAodW5zaWduZWQgbG9u
ZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5V
VEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2ll
SW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6
IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50b1VJbnQ2NCgpLCBm
cmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0
LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAgICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgW21fdGFzayB0
YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7
CiAjZW5kaWYKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAg
IGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29va2ll
bGVzcyB8fCBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNob3VsZEJsb2NrQ29v
a2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQot
ICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29y
aywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
Ojpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRh
c2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdl
SUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIChz
aG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjog
cGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBm
b3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgbV9mcmFtZUlE
LCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29v
a2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUg
JXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0s
IChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBAIC0zNzksNyArMzc5
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3VsZEJsb2NrQ29va2ll
cykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5z
aG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRpb246
IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IE5vdCBwYXJ0aXRp
b25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQsIG1fZnJh
bWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjog
cGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogTm90IHBhcnRpdGlv
bmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICAgICAgTE9H
KE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMgZm9yIHJlZGly
ZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmgKaW5kZXggYzRmYjAwYjA4M2M0MTEyYTIyYzgxZWM0NWYwODhkYTA5Y2I4NjllOC4u
M2VkZjgyYWRmM2I1YWUzYjI4NGM3ZGQ1OTE1Yjg4NWU3NTIzMTc2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTg2LDYgKzE4NiwzNiBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0Y2hl
ciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6
OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5p
dHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2Fp
dEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOworICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFU+CisgICAgdm9pZCBzZW5kV2l0aEFzeW5j
UmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgT2JqZWN0SWRlbnRpZmll
cjxVPiBkZXN0aW5hdGlvbklEID0geyB9KQorICAgIHsKKyAgICAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5PFQsIEM+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBk
ZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRl
bnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlv
bnMgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4gc2VuZDxUPihXVEZNb3ZlKG1lc3NhZ2Up
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICB2b2lkIHNlbmRXaXRoUmVw
bHkoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgRnVuY3Rp
b25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8dHlw
ZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4mJiByZXBseUhhbmRs
ZXIpCisgICAgeworICAgICAgICByZXR1cm4gc2VuZFdpdGhSZXBseTxUPihXVEZNb3ZlKG1lc3Nh
Z2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlcGx5RGlzcGF0Y2hlciwgV1RGTW92ZShy
ZXBseUhhbmRsZXIpKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KKyAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGlt
ZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCks
IHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwg
T3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+KGRlc3RpbmF0aW9u
SUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAgIH0KIAogICAgIGJv
b2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8U2VuZE9w
dGlvbj4gc2VuZE9wdGlvbnMpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkodWludDY0
X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIEZ1bmN0aW9uRGlzcGF0Y2hl
ciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
Pik+JiYgcmVwbHlIYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuaAppbmRleCBkNWY5ODFlNDUzNGIyYTliZDhiNGE1Y2M2MTRlODdjYTQ0OTU2ZDRhLi4z
ZDZmMzQyODkyYmM4ODM5MDY3OGU4YzM2NDYzOTExMGRlNGY1NzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC0zNCw5ICszNCw5IEBAIGNsYXNzIE1l
c3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lc3NhZ2VTZW5kZXIoKTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlLCBPcHRpb25T
ZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4g
c2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCB7IH0pOworICAgICAg
ICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCBzZW5k
T3B0aW9ucyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNv
bnN0IFUmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0
aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTQ4LDYgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0
aW9ucyk7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFQ+
CisgICAgYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VD4gZGVz
dGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAg
ICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBT
ZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNP
cHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKQEAgLTY1LDggKzcxLDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHNlbmRT
eW5jT3B0aW9ucyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJncz4KLSAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgorICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5
KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAgICBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoV1RGTW92ZShtZXNzYWdl
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IDllNmU5MzIwNmJkYzFiMDEwMjJkZWE1MDQ0ZDI4MzNiZDVlOTRlZGMuLmYwZWM4ZGMxYjcxNjli
Y2NhNTVhNjU0OTEyZWQyZmVmNTM3MGRmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtMjA1LDYgKzIwNSw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9u
c19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICdTdHJpbmcnLAogICAgICAgICAnV2Vi
Q29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRp
ZmllcicsCisgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCmluZGV4IGE2YTAwOTk1NTAwZTc2MzNlMGQ0
NWIxOGE0NDdjNzQyYTY5MjIwYWIuLmU2MDVhNDU5NDZmZmM3ZjFkMDdjYjg0ZThmNWNiOTg3YmJm
MzY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAKQEAg
LTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBhZ2VIYW5kbGU+IFBh
Z2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhhbmRsZT4gUGFnZUhh
bmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsKIH0KIAotUmVmPFBh
Z2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVpbnQ2NF90IHBhZ2VJ
RCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29udmVydGluZyhXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6UGFnZUhhbmRsZSh1
aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VIYW5kbGU6OlBhZ2VI
YW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlzQXV0b2NvbnZlcnRp
bmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2NvbnZlcnRpbmcoaXNB
dXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBhZ2VIYW5kbGU6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFnZUhhbmRsZTo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAg
ICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQorICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgZGVjb2RlciA+
PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQXV0b2Nv
bnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBpc0F1dG9j
b252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNyZWF0ZShwYWdlSUQp
OworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRvY29udmVydGluZygq
cGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFmYmRjMzFiNzkxYTlm
YzBhYTYyNmZjOTBhNzQ4ZWYwODk0OC4uNmExY2ZiNjk4MjU5YmY0OGQ0ZDhlZDU4ZWNiODdiMGYy
MjY3NDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5k
bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIEFQSVBhZ2VIYW5kbGVfaAogCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zOCwyMCArMzksMjAgQEAgbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIFBhZ2VIYW5kbGUgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5
cGU6OlBhZ2VIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNy
ZWF0ZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRl
QXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPFBhZ2VIYW5k
bGU+IGNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxQYWdl
SGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgdmlydHVhbCB+UGFnZUhhbmRsZSgpOwogCi0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIGJvb2wgaXNBdXRvY29udmVydGluZygp
IGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvY29udmVydGluZzsgfQogCiAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2Rl
ciYsIFJlZlB0cjxPYmplY3Q+Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGFnZUhhbmRs
ZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZyk7CisgICAgUGFnZUhhbmRs
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgYm9vbCBpc0F1dG9jb252ZXJ0aW5nKTsKIAotICAg
IGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOwogICAgIGNvbnN0IGJvb2wgbV9pc0F1dG9jb252ZXJ0aW5nOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaAppbmRleCA4NmY4MDQxNzA5YWJkNWMzY2Q2NGNkODIwZjg2MzUyY2FjMmE0ZDUxLi40
MDQwODE3ODAwMmE5NDY3MWQzNTBkZjI2MWUwOGM5NTBlZWYyYjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc1Rocm90dGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vha09iakNQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNzMsNyArNzQsNyBAQCBwcml2YXRlOgogICAg
IEZ1bmN0aW9uPHZvaWQoKT4gbV9sYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5OwogICAg
IEhhc2hNYXA8dWludDY0X3QsIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRv
a2VuPiBtX3BlbmRpbmdSZXBsaWVzOwogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRBc01lc3NhZ2VS
ZWNlaXZlciB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9tZXNzYWdlUmVjZWl2ZXJJRCB7IDAg
fTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX21lc3NhZ2VSZWNlaXZlcklEOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KaW5kZXggNThjYjFkZDJi
NWU3YzdjNmIwOTY1YWY2N2E1NTc2MmY0OTU5ODMwNi4uN2U5N2YxNzZjMDhhNTg1YjFiOWMyNDMw
ZmU5NjEzYmQzYTM5MTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgsNyArMjgsNyBAQAog
CiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAotLSAoaWQpX2luaXRX
aXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBhZ2VJRDooV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0gKGlkKV9pbml0V2l0
aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFzaAogewotICAgIHJl
dHVybiBfcGFnZUlEOworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7CiB9CiAKIC0gKEJP
T0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJPT0wpaXNFcXVhbDoo
aWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIHsK
LSAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdlSUQiXTsKKyAgICBb
Y29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpAInBhZ2VJRCJdOwog
fQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAgLTYxLDcgKzYxLDcg
QEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcGFnZUlEID0gW2Nv
ZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJRCA9IG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2NvZGVyIGRlY29kZUlu
dDY0Rm9yS2V5OkAicGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250
ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYTc0ZmI0MjhjMjBlOTdjYmVmNmFk
N2UzNjU4OTQzLi40M2U0MWUyNGNkMzYzMzZiNTQ3ODRiMDAzY2YxN2JiYzE2ZjY3YTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRI
YW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jy
b3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKQEAgLTI0LDExICsyNCwxMiBAQAogICovCiAK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlLmgiCisjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgKCkK
IAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXIgPSBfcGFnZUlEKSB1aW50
NjRfdCBwYWdlSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1fcGFn
ZUlEKSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAKLS0gKGlkKV9pbml0V2l0aFBh
Z2VJRDoodWludDY0X3QpcGFnZUlEOworLSAoaWQpX2luaXRXaXRoUGFnZUlEOihXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcilwYWdlSUQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRl
eCBlYjhhMGI2NjE3YWU1M2I1MDk4Zjg4NjIwNmNkZjczZTg4NDIxNDM1Li5kNGUxYzI1MDA4MTEy
YmJiZGY1ODM2Zjk2N2YwYzgzYzBjNmY3MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBA
IC02Niw3ICs2Niw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKm1fZGVzdGluYXRpb25JRDsKKyAgICByZXR1cm4gbV9kZXN0aW5hdGlvbklE
LT50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpjYW5N
YWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiByZXBseSkKQEAgLTg0
LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmkKICAgICBwbGF0Zm9ybU9wZW5QYXlt
ZW50U2V0dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQ
YXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpz
aG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRv
JiBjb29yZGluYXRvciA9IGFjdGl2ZVBheW1lbnRDb29yZGluYXRvclByb3h5KCkpCiAgICAgICAg
IGNvb3JkaW5hdG9yLT5kaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKaW5kZXggZDIzN2VhYjNkYWI4NzlhNWRhMzU3MWY4OTEwMWQ3ZWU5NzA1OTZiMi4uNmU0YTg1
Y2YyZTI3ZmU0NjVhYWQ3NWNlZTIzYmNhZTJkZTdmZTAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1
cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5O
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHNob3dQYXlt
ZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVS
TFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzaG93UGF5bWVudFVJ
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
bGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAgICB2b2lkIGNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBw
aW5nQ29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICBDbGllbnQmIG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2Rlc3Rp
bmF0aW9uSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fZGVzdGlu
YXRpb25JRDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90
aGluZydzIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggZGQzMTMxMjdiZjRhOGExYWEwYzZkZWNjNmQyMzRmOWJkYmFhYjdkMy4uMWRlNGNkZGNl
NGIxMjYzZTJkMGI5NGJmYjkzMTkxNDhiYmMxODIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKFN0
cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+IChib29sIGNhbk1ha2VQYXltZW50cykgQXN5bmMKICAgICBPcGVuUGF5
bWVudFNldHVwKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lKSAt
PiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKLSAgICBTaG93UGF5bWVudFVJKHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJM
U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQp
IFN5bmNocm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBvcmlnaW5hdGlu
Z1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdzLCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkgLT4gKGJvb2wgcmVz
dWx0KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKFdlYkNvcmU6
OlBheW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKICAgICBDb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0
aG9kVXBkYXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24o
T3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRhdGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcAppbmRleCA2ZWIzMzVmMDdkM2NmZTYyOTAwMDcxY2RhYTc4OTNmMDQz
MzViZWFhLi45ZGViNzZmZjEzMmM2Y2I1ZmRmNWViZjUyMjIzNGY2ZDQ0M2VmOTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdWludDY0X3QgQXV0aGVudGlj
YXRpb25NYW5hZ2VyOjphZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcChDaGFsbGVuZ2UmJiBjaGFs
bGVuZ2UKICAgICByZXR1cm4gY2hhbGxlbmdlSUQ7CiB9CiAKLWJvb2wgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBj
b25zdAorYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNob3VsZENvYWxlc2NlQ2hhbGxlbmdl
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0CiB7CiAgICAgaWYgKCFjYW5Db2Fs
ZXNjZUNoYWxsZW5nZShjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDgs
NyArMTA4LDcgQEAgVmVjdG9yPHVpbnQ2NF90PiBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNvYWxl
c2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWwKICAgICByZXR1cm4gY2hhbGxlbmdl
c1RvQ29hbGVzY2U7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChwYWdlSUQpOwogICAg
IEFTU0VSVChmcmFtZUlEKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgdQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICB1aW50NjRf
dCBkdW1teVBhZ2VJRCA9IDA7CisgICAgUGFnZUlkZW50aWZpZXIgZHVtbXlQYWdlSUQ7CiAgICAg
dWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7IGR1bW15
UGFnZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikgfSk7CiAgICAgCiAgICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0aGUgc2FtZSBwcm90
ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApp
bmRleCA3ZmUzOTllMGI3ZTk0NThiZDkxNzgyNTkzODQxZTRjNDQ5MzM1YWUxLi44NmU3NDRjMTA4
ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2
b2lkIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQs
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwm
Jik7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hh
bGxlbmdlIHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIGNoYWxsZW5nZTsKICAgICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXI7CiAgICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCiAgICAgdWludDY0X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdl
JiYpOwotICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSBjb25zdDsKKyAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gY29hbGVz
Y2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0NzVkYzJiYjhmZjc3
ZmE0MTcyNWMwODNiMGY3NTA5OTUzOS4uMTkyNTNlMmJhYjZhMTdiZWY0NjYzNjY3ZmQ0OGFiOWU5
ZTA1MTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtNjIs
NiArNjIsMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7
CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAgIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUlu
dDY0KCkpOworICAgIH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChi
b29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4
dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCmluZGV4IDRmNzVm
ZDgwNmY2OGQ2YTk5OWJiYTZhNDViMTQ1NzQ3NmZjYWI4OGMuLjU0ZDQyNzdiODUzOGZiYTQxNTZh
YjgzZDZhZGI4OTU3ODI4YTBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Rl
eHRJbnB1dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250
ZXh0LmgKQEAgLTI5LDEzICsyOSwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRleHRJbnB1dENvbnRleHQgewog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CiAKLSAgICB1aW50NjRfdCB3ZWJQ
YWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSWRlbnRp
ZmllcjsKICAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVy
OwogICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVudGlmaWVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4
IDlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdjZjRkODQyZGZmMzk2ZWQuLmQ5MDBhMTY3MzNhOWNl
NTNmNzZlOTdmODk1OWMxNDdhNzUwODk3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitS
ZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRl
KEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBwYWdlSUQp
KTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbShC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2
NF90IHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZNb3ZlKGJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2xhc3RQ
cm9jZXNzSWRlbnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4
IDg3MmVmMTgwOTVkMThjYzNhOWM1ZTc0NjNkMzBlN2Y2MTQ4NzJmNWUuLjQ0YWY3YzY2NTkwNzQ2
ZGY5ODJlMDVjMTNiZWVjZDA2YTc4NjRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ2LDcgKzQ3LDcg
QEAgY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmFja0Zvcndh
cmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0
SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdmlydHVh
bCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGljIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJik7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0
YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0
ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgbGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9jZXNzSWRlbnRpZmllcihj
b25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBtX2xhc3RQcm9j
ZXNzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4MiwxMiBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNz
UG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRlbVN0YXRlOwotICAg
IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlE
OwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVy
OwogICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCBlOWRhNjBhZWViZWZmMWRhNjkxZTFlNDUzMzczNTc3YTNhOTQwYTI1Li42OTk0ODI1
ZDA4MWNiMDk5NDg0MmFjY2RjZTQ4NDZlM2RkYjBlOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNTMsNyArNTMsNyBA
QCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1c2VyQWdlbnQ7CiAgICAgZW5jb2RlciA8PCBp
dGVtU3RhdGVzOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbklEOwotICAgIGVuY29kZXIgPDwgdXNl
ckNvbnRlbnRDb250cm9sbGVySUQudG9VSW50NjQoKTsKKyAgICBlbmNvZGVyIDw8IHVzZXJDb250
ZW50Q29udHJvbGxlcklEOwogICAgIGVuY29kZXIgPDwgdmlzaXRlZExpbmtUYWJsZUlEOwogICAg
IGVuY29kZXIgPDwgd2Vic2l0ZURhdGFTdG9yZUlEOwogICAgIGVuY29kZXIgPDwgY2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOwpAQCAtMTkzLDExICsxOTMsMTEgQEAgT3B0aW9uYWw8V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2Vzc2lvbklE
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIE9wdGlvbmFsPFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7
CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGlm
ICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEID0gbWFrZU9i
amVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllclR5cGU+KCp1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50
Q29udHJvbGxlcklEID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTM5Miw3ICszOTIsNyBAQCBPcHRpb25hbDxXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
YmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAotICAgIE9wdGlv
bmFsPE9wdGlvbmFsPHVpbnQ2NF90Pj4gb2xkUGFnZUlEOworICAgIE9wdGlvbmFsPE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4gb2xkUGFnZUlEOwog
ICAgIGlmICghb2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGMy
YmU4NDE0NmIzNGVhNzU2MTk3MDc1YWM4YjJjYmMzOGJlYzQyZTAuLjkwMTI3YmMzMTAzMGVlZTAz
ZjI2MjdlOTdjYWQ0NWY5YjdiNjljMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGJhY2tncm91
bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7CisgICAgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3Vw
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAppbmRl
eCA5NjM5ZDAxNWMyZjk0ZTY3Yjc2NzIyOGFkMjNiMWQ5YzQzYjM1MDA3Li44YzI4MzIwZDFkYWQy
ZGU3NjQ2NThjM2RjNDU2MDkzY2ZlMzRjN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlR3JvdXBEYXRhLmNwcApAQCAtMzQsNyArMzQsNyBAQCB2b2lkIFdlYlBhZ2VHcm91cERhdGE6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBp
ZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwSUQ7Ci0gICAgZW5jb2RlciA8PCB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLnRvVUludDY0KCk7CisgICAgZW5jb2RlciA8
PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfQogCiBPcHRpb25hbDxXZWJQYWdl
R3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQpAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VHcm91cERhdGE+IFdlYlBhZ2VH
cm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFwYWdlR3Jv
dXBJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBPcHRpb25hbDxV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsK
ICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIp
LCBXVEZNb3ZlKCpwYWdlR3JvdXBJRCksIG1ha2VPYmplY3RJZGVudGlmaWVyPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cikgfX07CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCAqcGFnZUdyb3VwSUQs
ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH19OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0
R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCmlu
ZGV4IGM2NTQ4NGY1NTEyMjBkZGJjOGI4NGI3OTZhY2IwNTk4ODcyNmI4NzMuLmZlNjZkZTY1OTJh
YTBhZjIzNDU4ODJkYjNkNDFhMTJjYTJiOWJjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL09iakNPYmplY3RHcmFwaC5tbQpAQCAtMjk4LDExICsyOTgsMTIgQEAgYm9vbCBPYmpDT2Jq
ZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJl
c3VsdCkKICAgICB9CiAKICAgICBjYXNlIE9iakNUeXBlOjpXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZTogewotICAgICAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFnZUlEKSkKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKKyAgICAgICAgZGVjb2RlciA+PiBwYWdlSUQ7CisgICAgICAgIGlmICghcGFnZUlEKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IGFkb3B0TlMoW1tX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZUlEOnBhZ2VJRF0pOwor
ICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2Nd
IF9pbml0V2l0aFBhZ2VJRDoqcGFnZUlEXSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcAppbmRleCAyYzFmM2U5NzdiMmU1MmRiZjljNTk1NDc5YzE2NGM5NmI1MTNmMjQ4Li45MzU2
ZWUzZTRiMjE4NTBkNDkxZjA1NWVhNWQzMTIyNWI0YzAwODBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTc0
OSw1ICsxNzQ5LDUgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0V2ViVmlld0Rlc3Ryb3llZChXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KgogCiBXZWJLaXRXZWJWaWV3KiB3
ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIHJldHVybiBwYWdlID8gY29udGV4dC0+cHJp
di0+d2ViVmlld3MuZ2V0KHBhZ2UtPnBhZ2VJRCgpKSA6IDA7CisgICAgcmV0dXJuIHBhZ2UgPyBj
b250ZXh0LT5wcml2LT53ZWJWaWV3cy5nZXQocGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSkgOiBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcAppbmRleCA4ODdmN2IzMWMwZTZkM2FlZDEyZmMxMDNkNDkwZWE1ZWEwYjM3
OTczLi5jZWI5MGQ3M2Q4M2Y3MmUxZWI2OWIwYjhhMmRjZmY5YTlkYTIxYWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAt
MjgxOCw3ICsyODE4LDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwogCi0gICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldyku
cGFnZUlEKCk7CisgICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldykucGFnZUlEKCkudG9VSW50NjQo
KTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDEwNzU3ODFhZjJjM2Y4YTdl
YTdjNjE4NmViY2Y3OWM3MDgxYzE5OTcuLjJmOWNmZTk0MjQwMjYxNzJkOTA2ZGJkMWEwM2M0Y2Qw
MTU0NGJiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBTdHJpbmcgQXV0b21hdGlvbkNvbW1hbmRFcnJvcjo6dG9Qcm90b2Nv
bFN0cmluZygpCiB7CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEK
ICAgICB9CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQ
YWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2Fs
bGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCiB7CiAgICAgSW5zcGVj
dG9yOjpFcnJvclN0cmluZyB0aW1lb3V0RXJyb3IgPSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJS
T1JfTkFNRShUaW1lb3V0KTsKICAgICBmb3IgKGF1dG8gaWQgOiBjb3B5VG9WZWN0b3IobWFwLmtl
eXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCA2NWViM2U0NmU1Yjg4YmE4MmFjMmQxMDI0
ZWNhZTYzY2IzNGQ3MDg3Li5mMzljMDYxYjU3ODkyYTkyNDhmZDA5ZGZmY2ZhN2I4YzUwYTA3NTM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2hhcmVh
YmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgiCiAjaW5j
bHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFnZShXZWJQYWdlUHJv
eHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5LCBT
ZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPiYm
KTsKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uRnJhbWUoV2ViRnJhbWVQ
cm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3ks
IFNlY29uZHMsIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+
JiYpOwotICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0
aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CisgICAgdm9pZCByZXNwb25kVG9QZW5kaW5nUGFnZU5h
dmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4m
KTsKICAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdGcmFtZU5hdmlnYXRpb25DYWxsYmFja3NXaXRo
VGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mKTsKICAgICB2b2lkIGxvYWRUaW1lckZpcmVkKCk7CiAKQEAg
LTI4MCwyMiArMjgxLDIyIEBAIHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlv
bkJhY2tlbmREaXNwYXRjaGVyPiBtX2RvbWFpbkRpc3BhdGNoZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5Ob3Rp
ZmllcjsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFw
OwotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJQYWdlTWFwOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxl
TWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbV9oYW5k
bGVXZWJQYWdlTWFwOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYkZyYW1l
SGFuZGxlTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJGcmFt
ZU1hcDsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93
c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdF
YWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFz
aE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dz
aW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZT4+IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3Np
bmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0Vh
Z2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7
CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5U
RVJBQ1RJT05TKQotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5j
dGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ01v
dXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKIAogICAgIHVpbnQ2NF90
IG1fbmV4dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQgeyAxIH07CkBAIC0zMTksNyArMzIw
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIgQVBJcyB0YWtl
IGEgc2V0IG9mIGlucHV0IHNvdXJjZXMuIFdlIGFsc28gaW50ZXJuIHRoZXNlCiAgICAgLy8gc28g
dGhhdCBwcmV2aW91cyBpbnB1dCBzb3VyY2Ugc3RhdGUgaXMgdXNlZCBhcyBpbml0aWFsIHN0YXRl
IGZvciBsYXRlciBjb21tYW5kcy4KICAgICBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJj
ZT4+IG1faW5wdXRTb3VyY2VzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI+PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1f
aW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZ
Qk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIEtlZXAgdHJhY2sgb2YgY3VycmVudGx5IGFjdGl2
ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9rZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDk4OTNkMzk4YjU3NDYy
YWQ5Yjg4ODM4ZTIyNzEwZmNhZjA0NjMwZDAuLjZiMDliYWRiOGQwY2ViYWJmMmM2OWY2MDA5YjFi
ZDFkMjNjMDllNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCkBAIC01MSw2ICs1MSwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRp
b25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIHNlbmRXaXRoQXN5bmNS
ZXBseShUJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJncy4uLik+JiYpOworICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCBzZW5kKFQmJiBtZXNz
YWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNl
bmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8
VD4oV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9u
cyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cisg
ICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwg
T2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3Ms
IE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisg
ICAgeworICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92
ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRp
b25zKTsKKyAgICB9CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdAog
ICAgIHsKQEAgLTY3LDYgKzc5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNl
aXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIAorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGlu
YXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAg
YWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9V
SW50NjQoKSwgcmVjZWl2ZXIpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisg
ICAgeworICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKKyAgICB9CiAKICAgICBlbnVtIGNsYXNzIFN0YXRl
IHsKICAgICAgICAgTGF1bmNoaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCmluZGV4IGYwNWQ3
OWMwZDAxYjg5ZDZiNjg0OGNhMjUwNmNjZjkxZGNmYjc2NzEuLjY3MDY1OTc2ODYxOGVkNzVmOTgw
YzExYWRhY2E5MWJlMjk5ZTRlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAgLTUyNyw5
NCArNTI3LDk0IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpoYW5kbGVDb250
cm9sbGVkRWxlbWVudElEUmVzcG9uc2UodWludDY0X3QgY29uCiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6cGF1c2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQ
bGF5U3RhdGUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4
dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnVi
YmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkJlZ2luU2NydWJiaW5nKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6ZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnVi
YmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnViYmluZyhjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlZWtUb1RpbWUodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIHRvbGVyYW5jZUJlZm9yZSwgZG91Ymxl
IHRvbGVyYW5jZUFmdGVyKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6U2Vla1RvVGltZShjb250ZXh0SWQsIHRpbWUsIHRvbGVyYW5jZUJlZm9y
ZSwgdG9sZXJhbmNlQWZ0ZXIpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0
aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFmdGVyKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSB0aW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhj
b250ZXh0SWQsIHRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3
YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0ZvcndhcmQoY29udGV4
dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5u
aW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCkpOwog
fQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nhbm5pbmcodWludDY0
X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY2Fu
bmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRl
eCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2VsZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0
X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihjb250
ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29u
dGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
dG9nZ2xlUGljdHVyZUluUGljdHVyZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQaWN0dXJlSW5Q
aWN0dXJlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShj
b250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2ds
ZU11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6VG9nZ2xlTXV0ZWQoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpzZXRNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCiB7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRN
dXRlZChjb250ZXh0SWQsIG11dGVkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRNdXRlZChjb250ZXh0SWQs
IG11dGVkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRWb2x1
bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdm9sdW1lKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwg
dm9sdW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRWb2x1bWUoY29udGV4dElkLCB2b2x1bWUpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFBsYXlpbmdPblNlY29uZFNj
cmVlbih1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKG1fcGFnZSkK
LSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpT
ZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OlNldFBsYXlpbmdPblNlY29uZFNjcmVlbihjb250ZXh0SWQsIHZhbHVlKSk7CiB9CiAKIHZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJ
RCgpCiB7CiAgICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQotICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkhhbmRsZUNvbnRyb2xs
ZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6SGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QobV9jb250cm9sc01hbmFn
ZXJDb250ZXh0SWQpKTsKIH0KIAogUGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCA2YmE0NzllMDYwYTA5NmM0Mzk1MWVhNzRiZjg5N2Jh
NjcxNjg5ZjdlLi5jOGQ2NWMzNjJhYWM4MmM2NDExOTUxMTY0OThhMTE3OWM1MzNlNDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC02MjAsNDMgKzYyMCw0MyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RGdWxs
c2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlz
aGVkV2l0aE1lZGlhKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpy
ZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0
KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVx
dWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRl
bnRMYXllcihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXll
cihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJl
dHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVu
dExheWVyKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIo
Y29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRT
ZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRp
ZEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3Jl
ZW4oY29udGV4dElkKSk7CiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVs
bHNjcmVlbigpOwogfQogCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAg
ICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVt
b3ZlRnJvbVN1cGVydmlld107CiAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0cik7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRD
bGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxs
c2NyZWVuKGNvbnRleHRJZCkpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRNb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIHJlbW92ZUNsaWVudEZv
ckNvbnRleHQoY29udGV4dElkKTsKQEAgLTY4OCwyNSArNjg4LDI1IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4dElk
LCBXZWJDb3JlCiAgICAgICAgIG1hY2hfcG9ydF9uYW1lX3QgZmVuY2VQb3J0ID0gZmVuY2VTZW5k
UmlnaHQubGVha1NlbmRSaWdodCgpOwogI2VuZGlmCiAKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQo
Y29udGV4dElkLCBmcmFtZSwgSVBDOjpBdHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NT1ZFX1NFTkQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVuY2Vk
KGNvbnRleHRJZCwgZnJhbWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNHX1RZ
UEVfTU9WRV9TRU5EKSkpOwogICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0
eUVudW0oY29udGV4dElkLCAodW5zaWduZWQpZ3Jhdml0eSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0Vmlk
ZW9MYXllckdyYXZpdHlFbnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpKTsKIH0KIAog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIG1fcGFnZS0+dWlDbGllbnQoKS5oYXNWaWRlb0lu
UGljdHVyZUluUGljdHVyZURpZENoYW5nZShtX3BhZ2UsIG1vZGUgJiBNZWRpYVBsYXllckVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQo
Y29udGV4dElkLCBtb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29u
dGV4dElkLCBtb2RlKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpm
dWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKQogewogICAgIGJv
b2wgaXNWaWV3VmlzaWJsZSA9IG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpOwotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVy
blRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSkpOwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5k
ZXggMmFhNzQ4ZjAwNGYyMjJhMDFkZGI3YWM4ZWVlNzEzMmNhNzg4OTBjYS4uMDhhM2QzMDhkM2E1
MGYxOTQ1NDRjMTNlNzkxYjM2YTcxM2IzZDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTE5OTcsMTMgKzE5OTcsMTMgQEAgZmxvYXQgV2Vi
Vmlld0ltcGw6OmludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBXZWJW
aWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0
YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4i
LCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZp
ZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwgdGhpcywgbV9w
YWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5k
b3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJ
bXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlzLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdl
ICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRv
VUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmUgfSk7CiB9CiAKQEAgLTIwNzEsNyArMjA3MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OndpbmRvd0RpZENoYW5nZUxheWVySG9zdGluZygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRv
d0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldl
YlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSIsIHRoaXMs
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAgLTIy
MzQsMTkgKzIyMzQsMTkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZENoYW5nZUJhY2tpbmdQ
cm9wZXJ0aWVzKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUoKQogewotICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUi
LCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZp
ZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRIaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dmll
d0RpZFVuaGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAo
cGFnZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
TE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkVW5o
aWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsK
IH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRDaGFuZ2UoKQogewotICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgYWN0aXZlU3BhY2VE
aWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0
ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNwYWNlRGlkQ2hhbmdlIiwgdGhp
cywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCBiNWI0ZTBh
ZDIyMTYyYzlkMGMwMGM5OGNkODM5MzUwOWZjZjZkZjgxLi5lY2Y1ZGEwYTkxMGI2Mzk0ODBhYzMy
YTVmYjFiMGZiMGNmZmZmNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIERyYXdpbmdBcmVhUHJveHk6OkRyYXdp
bmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdlYlBhZ2VQcm94eSYgd2ViUGFnZVBy
CiAgICAgLCBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZEcmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCkK
ICNlbmRpZgogewotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3
aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhp
cyk7CiB9CiAKIERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICBw
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBw
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAKIGJvb2wgRHJhd2lu
Z0FyZWFQcm94eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGU4NTI1M2IyMGE5NjEzYmQ5N2M0MGRhNDdm
ZTgzNTUzOGI4ZTc4ZmYuLjM0NmFjNjcyMGE2NTg4MWZkMDk4YjVjMzRmMWJkOGFkZDljY2UwOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgSVBDOjpB
dHRhCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90
IGNoYWxsZW5nZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAo
YXV0byogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG1fcHJvY2Vzc1Bvb2wuc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQocGFnZUlEKSkgewpAQCAtMzcxLDcgKzM3MSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVu
Y2hlciogbGF1bmNoZXIsIElQQzo6Q29uCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3Rp
Y01lc3NhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5
IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdv
bmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzgyLDcgKzM4Miw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCBTdHJpbmcmIG1lCiAgICAgcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2Uo
bWVzc2FnZSwgZGVzY3JpcHRpb24sIHNob3VsZFNhbXBsZSk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50
MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2Ft
cGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFn
ZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51bGwtY2hlY2sgYmVjYXVzZSBi
eSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUsIHRoZSBwYWdlIG1heSBiZSBn
b25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywKQEAgLTM5Myw3ICszOTMsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0CiAgICAgcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1bHQsIHNob3VsZFNhbXBsZSk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFs
dWUodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVj
ayBiZWNhdXNlIGJ5IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBh
Z2UgbWF5IGJlIGdvbmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtNzM2
LDcgKzczNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0R3JhbmRmYXRoZXJlZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0R3JhbmRmYXRoZXJlZChzZXNzaW9uSUQs
IHJlc291cmNlRG9tYWluLCBpc0dyYW5kZmF0aGVyZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29u
ZmlybShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2Vi
UGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtOTA4LDcgKzkwOCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6bm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRy
eUZpbmlzaGVkKHVuc2lnbmVkCiAgICAgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlz
dGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKG1lc3NhZ2VCb2R5
KS5wdHIoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
RG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zl
cjo6RmxhZz4gbmF2aWdhdGlvbkRhdGFUcmFuc2ZlciwgdWludDY0X3QgcGFnZUlEKQordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2Zl
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9t
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxXZWJD
b3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiBuYXZpZ2F0aW9uRGF0
YVRyYW5zZmVyLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVz
c2FnZSgpKQogICAgICAgICByZXR1cm47CkBAIC05MTYsNyArOTE2LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6
OlNlc3Npb25JRAogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEaWRDb21taXRD
cm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihzZXNzaW9uSUQsIGZyb21Eb21haW4sIHRvRG9t
YWluLCBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCBwYWdlSUQpLCAwKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZy
b21QcmV2YWxlbnRSZXNvdXJjZSh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVu
dFJlc291cmNlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIWNhblNlbmRNZXNz
YWdlKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzViOWU2NjU0ZjNkNjQyZjZm
Nzg5NjVhZGVkYjIyOTAzY2E1MDU1My4uOTcwODhlOWE0ZWVkYzkwNzQ1OTg3Zjc3YzM0MzgzNDg1
NDA1Yjk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTgyLDggKzgyLDYgQEAgcHVibGljOgogICAgIHVzaW5n
IE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNp
bmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47
Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0g
dWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogCiAgICAgZXhwbGljaXQg
TmV0d29ya1Byb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwpAQCAtMTMyLDcgKzEzMCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMpPiYmKTsKLSAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShQYWdlSUQsIEZyYW1lSUQsIGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgRnJhbWVJRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1v
ZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKQEAgLTE0Niw4ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklELCBib29sIGRlYnVn
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBi
b29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0
YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29u
c3QgTmF2aWdhdGVkVG9Eb21haW4mLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdh
dGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4sIFBhZ2VJRCk7Ci0gICAgdm9pZCBkaWRDb21taXRDcm9z
c1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShQYWdlSUQpOwor
ICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFp
biYsIE9wdGlvblNldDxXZWJDb3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpG
bGFnPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBj
b25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKQEAgLTIwOSwxMyArMjA3LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBo
YW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgSVBDOjpBdHRhY2htZW50Jik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCB1aW50NjRf
dCBjaGFsbGVuZ2VJRCk7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKICAgICB2b2lk
IGRpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURh
dGEmKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6
OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQo
dWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2
b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUs
IHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAg
ICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwor
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2
YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUp
OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBsb2dUZXN0
aW5nRXZlbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZXZlbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM2NzdiOGY2NWVlZDkzN2JlOWViYzcyNGI2ZjIyYmRh
Mjg1MzVhNjEuLjA0N2RmZTg4NzgxYmJjYjY4MjAxNjUwOTFiODY2ZDEzMzZmODhjYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZENyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRp
ZmllcikKIAotICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCisgICAgRGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKIAogICAgIERpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpCiAgICAgRGlk
RGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTM1LDkgKzM1LDkgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIAogICAgICMg
RGlhZ25vc3RpYyBtZXNzYWdlcyBsb2dnaW5nCi0gICAgTG9nRGlhZ25vc3RpY01lc3NhZ2UodWlu
dDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJv
b2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5n
IGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVp
bnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlw
dGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAg
TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0
LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWdu
ZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNo
b3VsZFNhbXBsZSkKICAgICBMb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShTdHJp
bmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRT
YW1wbGUpCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtNDYsOSAr
NDYsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBOb3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNo
ZWQoKQogICAgIE5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCkKICAgICBOb3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
dW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnMpCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3Vi
RnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAt
PiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nl
c3MpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWlucykgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNX
aXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykgQXN5bmMKLSAgICBEaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSh1aW50NjRfdCBwYWdlSUQpCisg
ICAgRGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVz
b3VyY2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogI2VuZGlmCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKICAgICBDb250ZW50RXh0ZW5zaW9uUnVsZXMoV2ViS2l0OjpV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggZmFlMWYzZmNhODg4NzE5YmU3ZjYyNzJk
MjA1NzIwYmI4OTAxNzdmZS4uMmFhZmYxZWMyYTY1NDkwZDg4NTQzOTk2YmY4MTAyYzJkNDljNTA0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTcsNyAr
OTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAgIHVpbnQ2NF90IGdsb2JhbE5v
dGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwogICAgIGF1dG8g
bm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25V
UkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklEKTsK
LSAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIgPSBz
dGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsKKyAg
ICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIg
PSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsK
ICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5v
dGlmaWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb25J
RFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24u
Y29weVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9u
LmdldCgpKTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwKICAg
ICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90LCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3N0
YXRpYyBib29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90LCBQ
YWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKIHsK
ICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29sIHBh
Z2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VO
b3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5kTm90
aWZpY2F0aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90
aWZpY2F0aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBwYWdl
SUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlu
cyhwYWdlTm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEzICsxNDEsMTMgQEAgdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkq
IHdlYlBhZ2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFy
Tm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRl
ckZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJ
RCgpOworICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CiAKICAgICBW
ZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAgICBnbG9iYWxOb3RpZmlj
YXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUoKSk7
CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKSwgZW5kID0gbV9u
b3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgdWludDY0X3Qg
d2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+
a2V5LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+a2V5
LnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VOb3Rp
ZmljYXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm90
CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAg
YXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQ
YWdlKQogICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qg
Z2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUu
Zmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAg
ICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNWJlZmE1YTIzZjNlMDQ0ZTBmZDQxOTA3MDQw
NGVmLi4xMTU3ODFlNDMzM2M4NTY4NGZiY2E1Y2E4NDE3NjU2NDRhOGM3MTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQ
b29sKik7CiAKLSAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiko
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIHVpbnQ2NF90IGRl
c2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0
aW9uSURzKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiko
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9u
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGNsZWFyTm90
aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlTm90
aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbik7CiAKICAgICAvLyBXZWJD
b250ZXh0U3VwcGxlbWVudApAQCAtODgsOSArODksOSBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAgLy8g
UGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlm
aWNhdGlvbiBJRAotICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWlu
dDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBz
dGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90Pj4gbV9nbG9iYWxOb3Rp
ZmljYXRpb25NYXA7CiAgICAgLy8gS2V5IHBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFu
ZCB0aGUgd2ViIHByb2Nlc3MncyBub3RpZmljYXRpb24gSUQ7IHZhbHVlIHBhaXIgY29tcHJpc2Vk
IG9mIGdsb2JhbCBub3RpZmljYXRpb24gSUQsIGFuZCBub3RpZmljYXRpb24gb2JqZWN0Ci0gICAg
SGFzaE1hcDxzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Piwgc3RkOjpwYWlyPHVpbnQ2NF90
LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKKyAgICBIYXNoTWFw
PHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8
dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmljYXRpb25zOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggNDVhMWYwZjViNWNiODBjY2M5YTBjZmJhMTYx
M2U0NGM4NzRhNTYwNy4uN2Q1NDhhNTMyMWVlY2JmYzY0YmMxNGU5MTY4ODFlOTkwYzk2OTBkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cApAQCAtNDcsNiArNDcsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBjaGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsICMjX19W
QV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwg
Zm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQogCkBAIC02MSw3ICs2Myw3IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNz
UHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVn
cm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQg
PSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdlOiAl
cCIsIG1fcGFnZS5wYWdlSUQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdldCgpKTsK
KyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zp
c2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQ
Ukl1NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBu
YXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCiAgICAgbV9wcm9jZXNzLT5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lv
bmFsUGFnZVByb3h5KCp0aGlzKTsKQEAgLTExNyw3ICsxMTksNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsK
LSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nl
c3NEaWRUZXJtaW5hdGU6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NE
aWRUZXJtaW5hdGU6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0
KCkpOwogICAgIG1fcGFnZS5wcm92aXNpb25hbFByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKIH0KIApA
QCAtMTMyLDcgKzEzNCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAg
ICAgaWYgKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNp
bXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZSBmb3IgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50
NjQoKSk7CiAgICAgQVNTRVJUKG1fbWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0
OjpjYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsKQEAgLTE1MSwxNCArMTUzLDE0IEBA
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKIAogdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxv
YWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkRGF0YTogcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3BhZ2UubG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBk
YXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsK
IH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9h
ZFJlcXVlc3Q6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkp
OwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcg
aW4gYSBuZXcgcHJvY2VzcywgdGhlbiB0aGUgbmV3IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhl
IGZyb21JdGVtJ3MgVVJMLiBJbiB0aGlzIGNhc2UsCiAgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1
cmUgd2UgdXBkYXRlIGZyb21JdGVtJ3MgcHJvY2Vzc0lkZW50aWZpZXIgYXMgd2Ugd2FudCBmdXR1
cmUgbmF2aWdhdGlvbnMgdG8gdGhpcyBCYWNrRm9yd2FyZCBpdGVtIHRvIGhhcHBlbiBpbiB0aGUK
QEAgLTE3MSw3ICsxNzMsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVz
dChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFn
ZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0g
PSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3Vz
cGVuZGVkUGFnZSgpKSB7CkBAIC0xOTYsNyArMTk4LDcgQEAgaW5saW5lIGJvb2wgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgT3B0aW9u
YWwKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0
KCksIGZyYW1lSUQpOwogICAgIEFTU0VSVCghbV9tYWluRnJhbWUpOwogCiAgICAgbV9tYWluRnJh
bWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUobV9wYWdlLCBmcmFtZUlEKTsKQEAgLTIzNCw3ICsy
MzYsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbgogICAgIGlmICghdmFsaWRhdGVJbnB1dChm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmln
YXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9u
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCku
dG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKICAgICBBU1NFUlQobV9wcm92aXNp
b25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0gdXJsOwog
CkBAIC0yNTQsNyArMjU2LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnMKICAgICBpZiAoIXZh
bGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQp
OwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJv
dmlzaW9uYWxMb2FkVVJMID0geyB9OwogCkBAIC0yNzAsNyArMjcyLDcgQEAgdm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmkKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklE
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBh
Z2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQs
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOwogICAg
IG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKIApAQCAtMjk1LDcgKzI5Nyw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWluCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7
CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCkBAIC0zNDEs
NyArMzQzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRl
bShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGUKIH0KIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3Qg
ZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKaW5kZXggNjQ1NmMxZjkxNmQ1OTc1NTA2YzE1Mjc5NGFmMmU2YjY2OGMwYmY2Yy4uN2QyZjM5
MDIzMWFlYWIzNzBjNzdmYzFhZjAyY2U0ZWQ1MjVhNWRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC05NCw3ICs5NCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwg
RnJhbWVJbmZvRGF0YSYmLAotICAgICAgICB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisg
ICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLAogICAgICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRV
UkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgYmFja0Zv
cndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYpOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJh
bWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yzo6RGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlkUmVx
dWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkubW0KaW5kZXggMDU1OWM5ODc0YmRjMzM1Y2VhOGFkNGE4NzdiMmFjMjk3MDgwNWYyNi4uNWIw
MmRkYjI0ODlmZTNiOTczMTY0MWVkYjNiZmIzNzAzNDY1NWEyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTExNSw3ICsxMTUsNyBAQCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5KFdlYlBhZ2VQcm94eSYgdwogICAgIElPU3VyZmFjZVBvb2w6OnNoYXJlZFBvb2woKS5z
ZXRQb29sU2l6ZSgwKTsKICNlbmRpZgogCi0gICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBwcm9jZXNzLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIAogICAgIGlm
IChtX3dlYlBhZ2VQcm94eS5wcmVmZXJlbmNlcygpLnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlz
aWJsZSgpKQogICAgICAgICBpbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKTsKQEAgLTEyNCw3ICsx
MjQsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5KFdlYlBhZ2VQcm94eSYgdwogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoKQogewogICAgIG1fY2Fs
bGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRl
ZCk7Ci0gICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2lkZW50aWZpZXIpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBb
bV9kaXNwbGF5TGlua0hhbmRsZXIgaW52YWxpZGF0ZV07CkBAIC00NjMsNyArNDYzLDcgQEAgdm9p
ZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZShBY3Rpdml0eVN0YXQKICAgICB9KCk7CiAKICAgICBhdXRvIHN0YXJ0VGltZSA9IE1v
bm90b25pY1RpbWU6Om5vdygpOwotICAgIHdoaWxlIChwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlPihtX2lkZW50aWZpZXIudG9VSW50NjQoKSwg
YWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFy
dFRpbWUpLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdl
QXJyaXZlcykpIHsKKyAgICB3aGlsZSAocHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFu
ZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OkNvbW1pdExheWVyVHJlZT4obV9pZGVudGlmaWVyLCBhY3Rpdml0eVN0YXRlVXBkYXRl
VGltZW91dCAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSksIElQQzo6V2FpdEZv
ck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkgewogICAgICAg
ICBpZiAoYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID09IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hy
b25vdXMgfHwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEIDw9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggNWExNGZiZTRkY2Q0
YjM4YzdhMGJmZDVjMmY3MGEwNmM1YzU3NWY4Ni4uYjJmNzcyOWZkMzkzNWY3MmUxYmM5MTE1YTMw
YTE4ZjY0ZTM5ZmQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5PiYmIGNoYWxsZW5nZSkKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYg
Y2hhbGxlbmdlKQogewogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwogICAgIFVOVVNFRF9QQVJB
TShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuaAppbmRleCA5MzI0NWYwZGM3NmYyNjU3NTdlYzJiZmU3MTYzZTllZGFh
ZTljMGYwLi5lOTM2NWFmYWM0ZjQ3ZDdmZDc0N2Y5ODk4M2FkOTk5MGU4YWI5NzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5o
CkBAIC00MSwxNCArNDEsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
PiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk+JiYpOwogCiAgICAgdm9pZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpOwogICAgIHZv
aWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSB7IHJldHVybiBtX3JlZ2lz
dHJhYmxlRG9tYWluOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VyUGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAKIHByaXZhdGU6CiAg
ICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAg
ICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1aW50NjRfdCBt
X3NlcnZpY2VXb3JrZXJQYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9zZXJ2aWNlV29ya2VyUGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCAxMzQ2
ZmNjMDVjNWEyOWNkYjA4NmY3MmVmNDk2NzgyY2IyYjAwNWFlLi5mNmQzYjUzNmRmOGFhYjE5N2Q5
MTFlZDE0ZDJlYTQwZmVmZjJlMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFN1c3BlbmRlZFBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsCiAKIGNvbnN0IGNoYXIqIFN1c3BlbmRlZFBhZ2VQcm94eTo6bG9nZ2luZ1N0cmluZygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoMHgiLCBoZXgocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBwYWdlIElEICIsIG1fcGFnZS5wYWdlSUQoKSwgIiwg
bV9zdXNwZW5zaW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc3VzcGVuc2lvblN0
YXRlKSwgJyknKTsKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgpLnRv
VUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDk3MTFiMjMzNzIxNTg3OTExNmMzZGQ4YjQ2NmVm
NTU4NWFlOTg1ODIuLjgzNGRiN2FlMDc5MmFjYjU0NTkzODAwODA2YzkyYjJmZmE1Y2MzMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQ5LDYgKzQ5LDgg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBz
dGF0aWMgSGFzaE1hcDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eSo+JiB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+PiBwcm94aWVzOwpA
QCAtNzMsNyArNzUsNyBAQCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KCkKIHsKICAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94aWVzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDog
bV9wcm9jZXNzZXMpIHsKLSAgICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKICAgICAgICAgcHJvY2Vzcy0+ZGlk
RGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCp0aGlzKTsKICAgICB9CiAjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTg1LDcgKzg3LDcgQEAgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpCiB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKFdlYlByb2Nlc3NQcm94
eSYgd2ViUHJvY2Vzc1Byb3h5LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQoJndlYlByb2Nlc3NQcm94eSkuaXNOZXdFbnRy
eSkKLSAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCksICp0aGlzKTsKKyAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLCAqdGhpcyk7CiAKICAgICBBU1NF
UlQocGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcy5pc0VtcHR5KCkpOwogICAgIGZvciAoY29u
c3QgYXV0byYgd29ybGQgOiBtX3VzZXJDb250ZW50V29ybGRzKQpAQCAtMTE1LDcgKzExNyw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5z
KCZ3ZWJQcm9jZXNzUHJveHkpKTsKIAogICAgIG1fcHJvY2Vzc2VzLnJlbW92ZSgmd2ViUHJvY2Vz
c1Byb3h5KTsKLSAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250
ZW50V29ybGQmIHdvcmxkKQpAQCAtMTI2LDcgKzEyOCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdv
cmxkCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3VzZXJDb250ZW50V29ybGRzLmFkZCgmd29ybGQp
OwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyQ29udGVudFdvcmxk
cyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwgd29ybGQubmFtZSgpKSB9KSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyQ29udGVudFdvcmxkcyh7IHN0
ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwgd29ybGQubmFtZSgpKSB9KSwgaWRlbnRp
ZmllcigpKTsKICAgICB9CiB9CiAKQEAgLTE1MCw3ICsxNTIsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJD
b250ZW50VwogewogICAgIGlmIChzaG91bGRTZW5kUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNz
YWdlKHdvcmxkLCBudW1iZXJPZlVzZXNUb1JlbW92ZSkpIHsKICAgICAgICAgZm9yIChXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRX
b3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlk
ZW50aWZpZXIoKSk7CiAgICAgfQogfQogCkBAIC0xNjMsNyArMTY1LDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoSGFzaENv
dW50ZWRTZXQ8UmUKICAgICB9CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHdvcmxk
c1RvUmVtb3ZlKSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQsIElu
amVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSkKQEAgLTE3NSw3ICsxNzcsNyBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6
VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSQogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCku
YXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNz
IDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmll
cigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGlt
bWVkaWF0ZWx5KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRzKHsg
eyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlw
dC51c2VyU2NyaXB0KCkgfSB9LCBpbW1lZGlhdGVseSksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpV
c2VyU2NyaXB0JiB1c2VyU2NyaXB0KQpAQCAtMTgzLDcgKzE4NSw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0CiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2Ny
aXB0LnVzZXJDb250ZW50V29ybGQoKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdCh3b3JsZC0+aWRlbnRpZmllcigp
LCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmll
cigpKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkucmVt
b3ZlQWxsKCZ1c2VyU2NyaXB0KTsKIApAQCAtMTkzLDcgKzE5NSw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlw
dHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigp
KTsKIAogICAgIHVuc2lnbmVkIHVzZXJTY3JpcHRzUmVtb3ZlZCA9IG1fdXNlclNjcmlwdHMtPnJl
bW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclNjcmlwdD4oWyZdKGNvbnN0IGF1dG8mIHVz
ZXJTY3JpcHQpIHsKICAgICAgICAgcmV0dXJuICZ1c2VyU2NyaXB0LT51c2VyQ29udGVudFdvcmxk
KCkgPT0gJndvcmxkOwpAQCAtMjE0LDcgKzIxNiw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKICAgICAgICAgd29ybGRJZGVudGlm
aWVycy51bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIua2V5LT5pZGVudGlmaWVyKCkpOwog
CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1v
dmVBbGxVc2VyU2NyaXB0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVy
KCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCkBAIC0yMzAs
NyArMjMyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0
eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclMKICAgICBtX3VzZXJTdHlsZVNoZWV0
cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTdHlsZVNoZWV0KTsKIAogICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsg
eyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJT
dHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IHsgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpLCB3
b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC51c2VyU3R5bGVTaGVldCgpIH0gfSks
IGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0
KQpAQCAtMjM4LDcgKzI0MCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzCiAgICAgUmVmPEFQ
STo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5bGVTaGVldC51c2VyQ29udGVudFdv
cmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNo
ZWV0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2Vy
U3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVy
KCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCku
cmVtb3ZlQWxsKCZ1c2VyU3R5bGVTaGVldCk7CiAKQEAgLTI0OCw3ICsyNTAsNyBAQCB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVz
ZXJTdHlsZVNoZWV0JiB1cwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAg
ICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVB
bGxVc2VyU3R5bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVy
KCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1bnNpZ25lZCB1c2VyU3R5bGVTaGVldHNSZW1v
dmVkID0gbV91c2VyU3R5bGVTaGVldHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNl
clN0eWxlU2hlZXQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVldCkgewogICAgICAgICBy
ZXR1cm4gJnVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkOwpAQCAt
MjY5LDcgKzI3MSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92
ZUFsbFVzZXJTdHlsZVNoZWV0cygpCiAgICAgICAgIHdvcmxkSWRlbnRpZmllcnMudW5jaGVja2Vk
QXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigpKTsKIAogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxl
U2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkpOwog
CiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAtMjkwLDcg
KzI5Miw3IEBAIGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlCiAgICAgbV9zY3JpcHRNZXNzYWdlSGFu
ZGxlcnMuYWRkKGhhbmRsZXIuaWRlbnRpZmllcigpLCAmaGFuZGxlcik7CiAKICAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnMoeyB7IGhhbmRsZXIuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigp
LCBoYW5kbGVyLm5hbWUoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVyKCksIHdvcmxkLT5p
ZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIoKSk7CiAgICAgCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMDAsNyArMzAyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBT
dHJpbmcKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5iZWdpbigp
LCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBuYW1lICYmICZpdC0+dmFsdWUtPnVz
ZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQpIHsKICAgICAgICAgICAgIGZvciAoV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXIod29ybGQuaWRlbnRpZmllcigpLCBpdC0+dmFsdWUtPmlkZW50aWZpZXIo
KSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0LT52YWx1ZS0+aWRlbnRpZmllcigp
KSwgaWRlbnRpZmllcigpKTsKIAogICAgICAgICAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMu
cmVtb3ZlKGl0KTsKIApAQCAtMzEzLDcgKzMxNSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5n
CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2Fn
ZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChXZWJQ
cm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHdvcmxkLmlk
ZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIG51bWJlclJlbW92
ZWQgPSAwOwogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBl
bnRyeSkgewpAQCAtMzI3LDcgKzMyOSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVuCiAgICAg
cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQsIG51bWJlclJlbW92ZWQpOwogfQogCi12
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJl
ZmVyZW5jZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0zNTEsNyArMzUzLDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkQ29udGVudFJ1bGVMaXN0KEFQSTo6Q29u
dGVudFJ1bGVMaXN0JiBjb24KICAgICBhdXRvIHBhaXIgPSBzdGQ6Om1ha2VfcGFpcihjb250ZW50
UnVsZUxpc3QubmFtZSgpLCBjb250ZW50UnVsZUxpc3QuY29tcGlsZWRSdWxlTGlzdCgpLmRhdGEo
KSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50
UnVsZUxpc3RzKHsgcGFpciB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRl
bnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChhdXRvKiBw
cm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7
IGlkZW50aWZpZXIoKSwgeyBwYWlyIH0gfSwgMCk7CkBAIC0zNjIsNyArMzY0LDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICBtX2NvbnRlbnRSdWxlTGlzdHMucmVtb3ZlKG5hbWUpOwogCiAg
ICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVM
aXN0KG5hbWUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVM
aXN0KG5hbWUpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9u
ZXR3b3JrUHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0IHsgaWRlbnRpZmll
cigpLCBuYW1lIH0sIDApOwpAQCAtMzczLDcgKzM3NSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogICAgIG1fY29udGVu
dFJ1bGVMaXN0cy5jbGVhcigpOwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNz
ZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkpOwogCiAgICAg
Zm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlQWxs
Q29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSB9LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDYyMzMwMTExNmVkMWQ2NTRmMmEzNDg5YTdmMGY2MjQ3
NzY2MTI0YWUuLjBlZDM2YTU5Y2MzYTcxZDlmMjE5ZTE5NDg0MjljOGE3OTFkMGM2MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTEwLDcg
KzExMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0
X3QgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJ
RCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgRnJhbWVJbmZv
RGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpOwogCiAgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoQVBJOjpVc2VyQ29u
dGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4MTcxNDM1
MWZjZTc3NWRhYmM0NzE4ZDQzZjg4ZTM2ZjVmNTBmZWU0Li4yNWE0ZTI5MTI3NGVlMDM2OWZkZDE2
ZWUwMDVjMmM5NWY5ZmFmMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSArMjQsNSBAQAogICovCiAKIG1lc3NhZ2Vz
IC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IHsKLURpZFBvc3RNZXNzYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2Fu
dHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
bWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRzQ29ubmVj
dGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAKaW5kZXggMjQ4MTgyZDgwOTIxZmUxYTE5ZTVjNjM0YjE2YTI0YzdjN2QxNzZlZi4u
MWU5MWFiYjZlZmRkMGNkNTk2Zjk0ZGFjZThmNzI2OGUzMTg0YTVjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC02NiwxMCAr
NjYsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1TY3JvbGxFdmVudFJhdGlvRm9yU3dp
cGUgPSAwLjU7CiBzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJU
cmVlU2l6ZVRhcmdldEZyYWN0aW9uID0gMC41OwogI2VuZGlmCiAKLXN0YXRpYyBIYXNoTWFwPHVp
bnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0Zv
ckFsbFBhZ2VzKCkKK3N0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkKIHsKICAgICAv
LyBUaGUga2V5IGluIHRoaXMgbWFwIGlzIHRoZSBhc3NvY2lhdGVkIHBhZ2UgSUQuCi0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIFZpZXdHZXN0dXJlQ29udHJvbGxl
cio+PiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1
cmVDb250cm9sbGVyczsKICAgICByZXR1cm4gdmlld0dlc3R1cmVDb250cm9sbGVycy5nZXQoKTsK
IH0KIApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb25u
ZWN0VG9Qcm9jZXNzKCkKICAgICBtX2lzQ29ubmVjdGVkVG9Qcm9jZXNzID0gdHJ1ZTsKIH0KIAot
Vmlld0dlc3R1cmVDb250cm9sbGVyKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbnRyb2xsZXJG
b3JHZXN0dXJlKHVpbnQ2NF90IHBhZ2VJRCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJl
SUQgZ2VzdHVyZUlEKQorVmlld0dlc3R1cmVDb250cm9sbGVyKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmNvbnRyb2xsZXJGb3JHZXN0dXJlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpHZXN0dXJlSUQgZ2VzdHVyZUlEKQogewogICAgIGF1dG8gZ2VzdHVyZUNv
bnRyb2xsZXJJdGVyID0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZmluZChw
YWdlSUQpOwogICAgIGlmIChnZXN0dXJlQ29udHJvbGxlckl0ZXIgPT0gdmlld0dlc3R1cmVDb250
cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZW5kKCkpCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmZvcmNlUmVwYWludElmTmVlZGVkKCkKIAogICAgIG1faGFzT3V0
c3RhbmRpbmdSZXBhaW50UmVxdWVzdCA9IHRydWU7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBt
X3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7
CiAgICAgbV93ZWJQYWdlUHJveHkuZm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtw
YWdlSUQsIGdlc3R1cmVJRF0gKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAg
aWYgKGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQs
IGdlc3R1cmVJRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oCmluZGV4IDQzMWMyNzY2ZDA4MjYxZTUyY2VmYjIwNmQ2Y2QyOTliMTJjZjEzOTQu
LmMxNjcwZDNhOTRjZWYzZDkwNmFmNDk0OWNkNTQxMzYwNDk0NzYzMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
QEAgLTE3NSw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
LgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250
cm9sbGVyRm9yR2VzdHVyZSh1aW50NjRfdCBwYWdlSUQsIEdlc3R1cmVJRCk7CisgICAgc3RhdGlj
IFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxlckZvckdlc3R1cmUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIEdlc3R1cmVJRCk7CiAKICAgICBzdGF0aWMgR2VzdHVyZUlEIHRha2VOZXh0
R2VzdHVyZUlEKCk7CiAgICAgdm9pZCB3aWxsQmVnaW5HZXN0dXJlKFZpZXdHZXN0dXJlVHlwZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCmluZGV4IGYy
ZTdiOTM0MDU3NjZlYTVlOGM3NWVhYmY1YWM2YTRmZDRjMDRkZWUuLjk5MWRjMmZjZmY5ZDQzYzVl
MDg3Njg2NGNjMjgwNDM4ZDllMzRhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
c2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0
b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6
Q29ubmUKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFZpc2l0ZWRMaW5rU3Rv
cmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU2hhcmVkU3Ry
aW5nSGFzaCBsaW5rSGFzaCkKK3ZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRlZExpbmtI
YXNoRnJvbVBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNoIGxpbmtI
YXNoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZUlEKSkgewogICAgICAgICBpZiAoIXdlYlBhZ2VQcm94eS0+YWRkc1Zpc2l0ZWRM
aW5rcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4
IDA2ZjIwYmE5MWNiZGJiYTI2Nzk1ZjM4YzYwYzgxYjY4ZDgxNzU5YTUuLjAyYjQ5YmFjNTVlMjQ4
NmJkM2U4OWE5ZWU4OGVhODgzMzZmMWVmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9W
aXNpdGVkTGlua1N0b3JlLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEludmFsaWRhdGVTaGFyZWRNZW1vcnkoKSBmaW5hbDsKICAgICB2b2lkIGRpZFVwZGF0ZVNoYXJl
ZFN0cmluZ0hhc2hlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaD4mIGFk
ZGVkSGFzaGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaD4mIHJlbW92
ZWRIYXNoZXMpIGZpbmFsOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1
aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gpOworICAgIHZvaWQgYWRk
VmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlNoYXJlZFN0cmluZ0hhc2gpOwogCiAgICAgdm9pZCBzZW5kU3RvcmVIYW5kbGVUb1Byb2Nlc3Mo
V2ViUHJvY2Vzc1Byb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9W
aXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCmluZGV4IGU3ODYyZTM2NWIwZmZlMTM5MTQ2M2Mw
MDcwNjFkN2U3ZjhmOGQ1NGIuLjJlNjZjNDI4MDhlYmI3ZWJjZjM5MzE5YjEwODZhOTI3ZjMzMTM2
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9y
ZS5tZXNzYWdlcy5pbgpAQCAtMjEsNSArMjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdl
cyAtPiBWaXNpdGVkTGlua1N0b3JlIHsKLSAgICBBZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGxpbmtIYXNoKQorICAgIEFkZFZpc2l0ZWRMaW5rSGFz
aEZyb21QYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgbGlua0hh
c2gpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlMGQz
NTY0MWI5OWQ3ZTVlY2E2MWI4MzE5NTg5ZWM2MTUyMzlhNWM4Li45OTJkNzY1ZTdmMzE5Y2VjMGFj
YzFlZGMwMGMxNDFhNWFmZmQ3MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTM4MiwxMiArMzgyLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JNb3N0
VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc2VsZWN0ZWRQYWdlKTsKIH0KIAotUmVmPFdlYlBhZ2VQcm94
eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNy
ZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmln
dXJhdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNs
aWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiB9CiAKLVdl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQorV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAg
ICAgOiBtX3BhZ2VDbGllbnQobWFrZVdlYWtQdHIocGFnZUNsaWVudCkpCiAgICAgLCBtX2NvbmZp
Z3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKICAgICAsIG1fbmF2aWdhdGlvbkNsaWVu
dChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKSkKQEAgLTQzNiw3ICs0MzYs
NyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogI2VuZGlmCiAgICAgLCBtX3Jlc2V0UmVjZW50
Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6cmVz
ZXRSZWNlbnRDcmFzaENvdW50KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJjb25zdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKIAogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5kcmF3c0JhY2tncm91bmQoKSkKICAgICAg
ICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwpAQCAtNDkw
LDcgKzQ5MCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VD
bGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAKIFdlYlBhZ2VQcm94eTo6fldl
YlBhZ2VQcm94eSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVz
dHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IEFTU0VSVChtX3Byb2Nlc3MtPndlYlBhZ2UobV9wYWdlSUQpICE9IHRoaXMpOwogI2lmICFBU1NF
UlRfRElTQUJMRUQKQEAgLTcwOSw3ICs3MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNo
UHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBBU1NFUlQoIWhhc1J1bm5pbmdQcm9jZXNzKCkpOwog
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzczogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1
bmNoUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcHJvY2Vz
cy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3Rv
cmU6Olllcyk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CkBAIC03NjQs
NyArNzY0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2li
bGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1
c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFp
bkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSk7CiAKLSAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUi
IFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBi
YWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKSwgc3VzcGVuZGVkUGFnZS0+bG9n
Z2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8g
ZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CisgICAgTE9HKFByb2Nlc3NTd2Fw
cGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVz
IGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlE
KCkudG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0
cmluZygpIDogMCk7CiAKICAgICAvLyBJZiB0aGUgY2xpZW50IGZvcmNlZCBhIHN3YXAgdGhlbiBp
dCBtYXkgbm90IGJlIHdlYi1jb21wYXRpYmxlIHRvIGtlZXAgdGhlIHByZXZpb3VzIHBhZ2UgYmVj
YXVzZSBvdGhlciB3aW5kb3dzIG1heSBoYXZlIGFuIG9wZW5lciBsaW5rIHRvIGl0LiBXZSB0aHVz
IGNsb3NlIGl0IGFzIHNvb24gYXMgd2UKICAgICAvLyBjYW4gZG8gc28gd2l0aG91dCBmbGFzaGlu
Zy4KQEAgLTc4Miw3ICs3ODIsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogdm9pZCBXZWJQ
YWdlUHJveHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlYSwgUmVmUHRy
PFdlYkZyYW1lUHJveHk+JiYgbWFpbkZyYW1lKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3dhcFRvV2ViUHJvY2Vzczog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
c3dhcFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1f
cHJvY2VzcyA9IFdURk1vdmUocHJvY2Vzcyk7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gbV9w
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CkBAIC04NzQsMTAgKzg3NCwxMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAKIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNo
UHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKQEAgLTg4Niw3ICs4
ODYsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nl
c3NGb3JSZWxvYWQoKQogICAgIGxhdW5jaFByb2Nlc3MocmVnaXN0cmFibGVEb21haW4pOwogCiAg
ICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBj
dXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3Vy
cmVudCBpdGVtIHRvIHJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC05MDEsMTAgKzkwMSwxMCBAQCBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQog
CiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NXaXRo
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dp
dGhJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9z
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJv
Y2Vzc1dpdGhJdGVtOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTog
cGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjbG9zZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwogCkBAIC0xMDMy
LDcgKzEwMzIsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5Q2xvc2U6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICAvLyBDbG9zZSB3aXRob3V0IGRlbGF5IGlmIHRoZSBwcm9j
ZXNzIGFsbG93cyBpdC4gT3VyIGdvYWwgaXMgdG8gdGVybWluYXRlCiAgICAgLy8gdGhlIHByb2Nl
c3MsIHNvIHdlIGNoZWNrIGEgcGVyLXByb2Nlc3Mgc3RhdHVzIGJpdC4KQEAgLTEwNzgsNyArMTA3
OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZFJlcXVlc3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNz
KFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC51cmwoKSB9KTsKQEAgLTEwOTIsNyArMTA5Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsK
IAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rp
b24oKTsKIApAQCAtMTEyMSwxMCArMTEyMSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJl
cXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlcwog
CiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0
cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxvYWRGaWxlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBw
YWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTMzLDcgKzExMzMsNyBAQCBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0
cmluZywgY29ucwogCiAgICAgVVJMIGZpbGVVUkwgPSBVUkwoVVJMKCksIGZpbGVVUkxTdHJpbmcp
OwogICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTQzLDcgKzExNDMsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVj
dG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAg
ICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwg
aXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2Fs
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTczLDEwICsxMTczLDEwIEBAIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJM
U3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9h
ZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibG9hZERhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9z
ZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApAQCAtMTE5MCw3ICsxMTkwLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0aE5h
dmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKIAogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAgLTEyMTYsMTMgKzEyMTYsMTMgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0
ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGluIHRoZSBw
cm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBub3QgYXR0
ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9hZCBhcyB0
aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKICAgICAvLyBo
YW5kbGVkIHByb3Blcmx5LgogICAgIGlmIChtX2lzQ2xvc2VkIHx8IG1faXNMb2FkaW5nQWx0ZXJu
YXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExvYWQpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xv
c2VkIChvciBvdGhlcik6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9y
IG90aGVyKTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTI1OSwxMCArMTI1OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFs
dGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgUwog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJj
aGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0
YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xvc2Vk
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMjg2LDEwICsxMjg2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2
ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9pbnQgc2NyZWVu
UG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9z
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzA1LDEwICsx
MzA1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywKIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0
b3BMb2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9w
TG9hZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAic3RvcExvYWRpbmc6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2Ug
aXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBh
Z2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMzIyLDcgKzEzMjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJl
bG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7CiAKQEAgLTEzOTksNyArMTM5OSw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0Jh
Y2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBl
IGZyYW1lTG9hZFR5cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
Z29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFj
a0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0
YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKQEAgLTE0MjEsMTAgKzE0MjEs
MTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJl
c3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVz
dG9yZVNjcm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1NTEsNyArMTU1MSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpjbGVhckluc3BlY3RvclRhcmdldHMoKQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCiB7Ci0gICAgU3RyaW5nIHBhZ2VUYXJnZXRJZCA9
IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQpOworICAgIFN0cmluZyBwYWdlVGFyZ2V0SWQg
PSBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgIG1faW5zcGVj
dG9yQ29udHJvbGxlci0+Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJZCwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0KIApAQCAtMjg3NCw3ICsyODc0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9u
IGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zp
c2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVp
bnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2Vy
dGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNv
cmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6
IHByZXZpb3VzUElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbWFpbkZyYW1lSURJ
blByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFrZU9wdGlvbmFsKG1fbWFpbkZyYW1l
LT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OwogCkBAIC0yOTE0LDcgKzI5MTQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0
aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVf
cHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlUHJveHksIFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
IHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBuZXdQcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIG5ld1Byb2Nlc3NQSUQgPSAlaSwgaGFzU3Vz
cGVuZGVkUGFnZSA9ICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRl
ZFBhZ2VQcm94eSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmlnYXRpb24gJSIg
UFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlv
bklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKIAogICAgIGlmIChtX3Byb3Zpc2lv
bmFsUGFnZSkgewpAQCAtMzA3NSw3ICszMDc1LDcgQEAgU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94
eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXQK
IAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlLCBib29sIG5hdmlnYXRlKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRl
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
IAogICAgIG1fc2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVyVHJlZVNpemUgPSAwOwogICAgIG1faGl0
UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQgPSBmYWxzZTsKQEAgLTM5MzMsOCArMzkzMyw4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2
aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdh
dGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIg
UFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAl
cyIsIG1fcGFnZUlELCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcmFtZUlELCBuYXZp
Z2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBMT0coTG9h
ZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBpZCAlaSBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRp
b25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQudG9VSW50NjQoKSwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24g
PSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMzk4Niw3ICszOTg2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGYKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQog
ewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZp
Z2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDE1LDcgKzQwMTUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
dXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1l
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIndpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90
ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDAyOCw3ICs0MDI4LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHIKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsK
IAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAg
LTQwNzUsOCArNDA3NSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxD
b250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1
NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
IHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFp
biA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQg
IiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRv
IHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQxNTQsOSArNDE1NCw5IEBAIHN0YXRpYyBPcHRpb25T
ZXQ8Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gY2hlY2tJZk5hdmlnYXRp
b25Db250YWluCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVG
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNv
bnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewot
ICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRD
b21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1fcGFnZUlELCBuYXZp
Z2F0aW9uSUQpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQ
Ukl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1f
cGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAi
KEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5v
dzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAg
IFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQyNjgs
NyArNDI2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCks
IGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVu
dCgpKTsKIApAQCAtNDI5Miw3ICs0MjkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmkKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
TE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSAtIFdlYlBh
Z2VQcm94eSAlcCB3aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiBkaWRGaW5pc2hMb2FkIiwg
dGhpcywgbmF2aWdhdGlvbklEKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
ZGlkRmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MzM3LDcgKzQzMzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBj
b2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQzNzksNyArNDM3OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25G
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90
IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBVUkwmJiB1cmwsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NTQ5LDcg
KzQ1NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25z
dCBVUkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxpc3RlbgogI2VuZGlmCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwK
LSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJ
RCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklE
LCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwKQEAgLTQ1NTcsNyArNDU1Nyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLAotICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAog
ICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKQEAg
LTQ1NzMsNyArNDU3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwK
LSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBz
ZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAl
cyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNDcxMyw3ICs0NzEzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5n
RnJhbWUgPT0gJmZyYW1lKQogICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRp
b25GcmFtZUluZm8uY29weVJlZigpOwogICAgICAgICBlbHNlIGlmICghZnJvbUFQSSkKLSAgICAg
ICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2Uob3Jp
Z2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8g
PSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2lu
YXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxs
cHRyKTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3MtPnVz
ZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2Vu
SWRlbnRpZmllcik7CiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxk
U3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgpAQCAtNDc4Niw3
ICs0Nzg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWcKICNlbmRpZgogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJh
bWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAt
NDgwNCw3ICs0ODA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXMKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5G
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtNDkzNyw3ICs0OTM3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdl
Yk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
Y29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90IGZyYW1lSUQpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGFTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTU3LDcgKzQ5NTcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3Ry
aW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90
IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTg0LDcgKzQ5ODQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291
cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZl
clJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcs
IHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMzIsMTQgKzUwMzIsMTQgQEAgV0VCUEFHRVBST1hZ
X0xPQURPUFRJTUlaRVJfQURESVRJT05TXzYKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVO
ZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVO
ZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpD
cmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNL
KG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEu
ZnJhbWVJRCkpOwotICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9y
aWdpbmF0aW5nUGFnZUlEKSk7CisgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1Bh
Z2VJRCA/IG1fcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7
CiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwo
KSA6IFVSTCgpOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RG
TW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0gICAgICAgICAgICByZXBseSgwLCBXVEY6Om51bGxvcHQp
OworICAgICAgICAgICAgcmVwbHkoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTU4NDgsNyArNTg0OCw3IEBAIElQQzo6Q29u
bmVjdGlvbiogV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAK
IHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dAogewotICAgIHJldHVybiBtX3BhZ2VJRDsKKyAgICByZXR1cm4gbV9wYWdlSUQudG9VSW50NjQo
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudShXZWJQ
b3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCkKQEAgLTY3MjksNyArNjcy
OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZVNldExhcmdlc3RGcmFtZUNoYW5nZWQodWlu
dDY0X3QgZnJhbWVJRCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY3NDEsNyArNjc0MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29t
ZVJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggMDdjNTUyNWE5YmJmNDU3M2Y3NGY2ODI4ZDkxMzAwMTE3ODM4
OThkMC4uNGIwMDNkNjg5ZDg4MmZmMmRjYTU2NjJkZjUxN2E1YjYyYWE3YjAxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgyLDYgKzgyLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVByb2R1Y2VyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg+CkBAIC0zODIsMTQg
KzM4MywxNCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpQYWdlPgogI2VuZGlmCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8V2ViUGFnZVByb3h5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJQYWdlUHJveHk+
IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBS
ZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2aXJ0dWFsIH5X
ZWJQYWdlUHJveHkoKTsKIAogICAgIHN0YXRpYyB2b2lkIGZvck1vc3RWaXNpYmxlV2ViUGFnZUlm
QW55KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlBhZ2VQcm94eSopPiYmKTsKIAogICAgIGNvbnN0IEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsKIAotICAgIHVpbnQ2
NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KIAogICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCkBAIC0xNTA1LDcgKzE1MDYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgdWludDY0
X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKLSAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCisgICAgICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwKICAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAogICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE1MTQs
NyArMTUxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKICAg
ICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
Y29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmKTsKICAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0
YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEm
JiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwK
ICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNv
bnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7
CkBAIC0xNTU0LDcgKzE1NTUsNyBAQCBXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpFUl9BRERJVElP
TlNfMQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2
NF90IGV4cGVjdGVkVXNhZ2UsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+
JiYpOwogCiBwcml2YXRlOgotICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vz
c1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CisgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZv
aWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKICAgICB2b2lkIG5vdGlmeVByb2Nlc3NQb29sVG9Q
cmV3YXJtKCk7CkBAIC0xNjMwLDEzICsxNjMxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRE
ZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCiAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZy
YW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAg
ICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3Qg
VXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJh
bWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1l
SW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29s
IGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVk
UmVwbHkmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNjU4LDcgKzE2NTksNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIC8vIFVJIGNs
aWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBjcmVh
dGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9p
ZCBzaG93UGFnZSgpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYp
OwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmKTsKQEAgLTIz
MzAsNyArMjMzMSw3IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU18yCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU+IG1fdmFsaWRhdGlvbkJ1YmJsZTsK
ICNlbmRpZgogCi0gICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBib29sIG1faXNQYWdlU3VzcGVuZGVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zpc2l0ZWRMaW5rcyB7IHRydWUgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0
MDQ2ZTJlMmIyNDYyMjkzZTI5ZmE0NTgwZjA3MTRhOTBjMzk5ODMzLi5hODQ5ODQ3YjUzNWQyNmUx
NGNiZDI4MDIwYjM3OWE3ZjE3NTdkNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBVSSBtZXNzYWdlcwotICAgIENyZWF0ZU5ld1BhZ2Uo
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgc3RydWN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzIHdpbmRvd0ZlYXR1cmVzLCBzdHJ1Y3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSkgLT4gKHVp
bnQ2NF90IG5ld1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzPiBuZXdQYWdlUGFyYW1ldGVycykgU3luY2hyb25vdXMKKyAgICBDcmVhdGVOZXdQYWdlKHN0
cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMg
d2luZG93RmVhdHVyZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmln
YXRpb25BY3Rpb25EYXRhKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5l
d1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXdQ
YWdlUGFyYW1ldGVycykgU3luY2hyb25vdXMKICAgICBTaG93UGFnZSgpCiAgICAgQ2xvc2VQYWdl
KGJvb2wgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIpCiAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVp
bnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpIFN5bmNocm9ub3VzCkBAIC0xMDQs
OCArMTA0LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgUG9saWN5IG1l
c3NhZ2VzCiAgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5n
IGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5m
b0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHks
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKLSAgICBEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkg
LT4gKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIs
IGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBuZXdOYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25h
bDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgU3luY2hyb25v
dXMKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3Bv
bnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQorICAg
IERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJv
b2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0
aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVk
aXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIGVudW06dWludDhfdCBX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9u
SUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnNp
dGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgU3luY2hyb25vdXMKICAgICBEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwCmluZGV4IGM4MDIzZGU0MTYxNjQ3NTAxMGY0Mjgy
MzlhN2JlZDA3YjE3Zjg1ZDcuLmY0OTcxNTFkNzVjNWU2ZjFmMjg2YWFhNzllOGE2NDdjNmE5ZjM2
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGlt
ZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlm
ZXRpbWVPYnNlcnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXZWJQcm9jZXNzTGlmZXRp
bWVPYnNlcnZlcjo6YWRkV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHJv
Y2UKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvY2Vzcy5pc1ByZXdhcm1lZCgpKTsKIAogICAgIGlm
IChtX3Byb2Nlc3Nlcy5hZGQoJnByb2Nlc3MpLmlzTmV3RW50cnkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBh
Z2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vz
c0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAgICAgUkVMRUFTRV9M
T0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lk
ZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgICAgICB3
ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHByb2Nlc3MsICpwcm9jZXNzLmNvbm5lY3Rpb24o
KSk7CiAgICAgfQogCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lT2Jz
ZXJ2ZXI6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYlByCiAg
ICAgd2ViUGFnZURpZENsb3NlQ29ubmVjdGlvbih3ZWJQYWdlUHJveHksICpwcm9jZXNzLmNvbm5l
Y3Rpb24oKSk7CiAKICAgICBpZiAobV9wcm9jZXNzZXMucmVtb3ZlKCZwcm9jZXNzKSkgewotICAg
ICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZl
cjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywg
cHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAg
ICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZl
cjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywg
cHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50
NjQoKSk7CiAgICAgICAgIHdlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24ocHJvY2VzcywgKnBy
b2Nlc3MuY29ubmVjdGlvbigpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOWJmYmZkZTMwN2U2NGIzZTZjY2VjNmJjY2IyYzRkZmQ3
YjRiOWE2YS4uZWNkOGQ5MDVlMDE1Y2YyNTA1ZDU5OWFmOGNiYWVkOTEzNTAxNjI5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTI5Niw5ICsxMjk2
LDkgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vy
cyhjb25zdCBXZWJzaXRlRGF0YVN0b3JlJiBzdG8KIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nl
c3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJ
RHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDx1aW50NjRfdD4oKSkuaXRl
cmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9Q
YWdlSURzTWFwLmFkZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIEhhc2hTZXQ8UGFnZUlkZW50aWZp
ZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3Rv
cmUuc2Vzc2lvbklEKCk7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRl
RGF0YQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0
ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CiAgICAgYXV0
byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CiAgICAgYXV0byBpdGVyYXRvciA9
IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Npb25JRCk7CkBAIC0yMjExLDcgKzIyMTEs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlv
blN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi1TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdv
cmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0X3QgcGFnZUlEKSBjb25zdAorU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHlGcm9tUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICAvLyBG
SVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7CkBAIC0yNTIwLDcg
KzI1MjAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhckN1cnJlbnRNb2RpZmllclN0YXRl
Rm9yVGVzdGluZygpCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNm
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJv
bURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBPcHRpb25TZXQ8Q3Jv
c3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gbmF2aWdhdGlvbkRhdGFUcmFuc2Zl
ciwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
RG9tYWluLCBPcHRpb25TZXQ8Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4g
bmF2aWdhdGlvbkRhdGFUcmFuc2ZlciwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlm
ICghbV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZDBhOTIzNjcyYmJkMjdkYTg5NGRiNmFkZDQ4YmMw
ODgxY2UzYzVjMS4uMWQyOTgyNWM4MzRmMTA0ZWQxOTc5YTQwMDFhMjUwYWVhNmI2ZTYxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xNTAsNiArMTUwLDE4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOworICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdl
UmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBP
YmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgeworICAgICAgICByZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpKTsKKyAgICB9CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsK
QEAgLTE5NSw4ICsyMDcsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVh
dGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAK
LSAgICB2b2lkIHBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQs
IFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3Rv
cmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVE
YXRhU3RvcmUmKTsKKyAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICBib29sIGhhc1BhZ2Vz
VXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKSBjb25zdDsKIAogICAgIGNv
bnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1
cmF0aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQpAQCAtMzY3LDcgKzM3OSw3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5Jiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsK
LSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIFNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKSBjb25zdDsKICAgICBjb25zdCBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9p
ZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3Mp
IHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0K
ICAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CkBA
IC00OTYsNyArNTA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJDdXJyZW50TW9kaWZpZXJT
dGF0ZUZvclRlc3RpbmcoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+LCB1aW50NjRfdCBwYWdl
SUQpOworICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWlu
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxX
ZWJDb3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdQRSkKQEAgLTc2Miw3ICs3NzQsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGF0aHMgbV9y
ZXNvbHZlZFBhdGhzOwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDx1aW50
NjRfdD4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gbV9zZXNzaW9uVG9QYWdlSURzTWFw
OwogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlByb2Nlc3NQb29sPiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXNUZXJtaW5hdGlvblRpbWVyOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDgyMDM0NjVjYjI4
MTRkMmNmYzMyOGZhNzk0NjYyYTIwZTAyYjQzMmMuLjY3ODMxZTIwNzgwOWMwZWM1YjYyOGFlYzBk
MzkxMTE4MzVmMzEwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTEwLDEwICsxMTAsOSBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQ
cm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZgogICAg
IHJldHVybiBhbGxQcm9jZXNzZXMoKS5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXVpbnQ2NF90IFdl
YlByb2Nlc3NQcm94eTo6Z2VuZXJhdGVQYWdlSUQoKQorUGFnZUlkZW50aWZpZXIgV2ViUHJvY2Vz
c1Byb3h5OjpnZW5lcmF0ZVBhZ2VJRCgpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVBh
Z2VJRDsKLSAgICByZXR1cm4gKyt1bmlxdWVQYWdlSUQ7CisgICAgcmV0dXJuIFBhZ2VJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOwogfQogCiBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJv
eHlNYXAmIGdsb2JhbFBhZ2VNYXAoKQpAQCAtMzMwLDcgKzMyOSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpzaHV0RG93bigpCiAgICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3Mo
dGhpcyk7CiB9CiAKLVdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdl
SUQpOwogfQpAQCAtMzYzLDcgKzM2Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQ
YWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAKIFJl
ZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJh
dGlvbikKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOworICAgIGF1
dG8gcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiB3ZWJQ
YWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwgV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgYWRkRXhpc3RpbmdXZWJQYWdlKHdlYlBh
Z2UuZ2V0KCksIEJlZ2luc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwpAQCAtNDE1LDEwICs0MTQsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlLCBFbmRzVXNpbmdEYXRhU3RvcmUgZW4KICAgICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0
b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExp
bmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8mIHVzZXJzID0gbV92
aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbnN1cmUoJnZpc2l0ZWRMaW5rU3RvcmUsIFtdIHsK
LSAgICAgICAgcmV0dXJuIEhhc2hTZXQ8dWludDY0X3Q+IHsgfTsKKyAgICAgICAgcmV0dXJuIEhh
c2hTZXQ8UGFnZUlkZW50aWZpZXI+IHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAg
ICBBU1NFUlQoIXVzZXJzLmNvbnRhaW5zKHBhZ2VJRCkpOwpAQCAtNDI4LDcgKzQyNyw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0
b3JlJiB2aXNpdGVkTGlua1N0b3JlCiAgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUuYWRkUHJvY2Vz
cygqdGhpcyk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVWaXNpdGVkTGlua1N0
b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdl
SUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlz
aXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIGF1dG8gaXQgPSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmZpbmQoJnZpc2l0
ZWRMaW5rU3RvcmUpOwogICAgIGlmIChpdCA9PSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJz
LmVuZCgpKQpAQCAtNTQxLDcgKzU0MCw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkKCkKIH0KICNlbmRpZgogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6
aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jvb2wgV2Vi
UHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGZvciAoYXV0byogcHJvdmlzaW9uYWxQYWdlIDogbV9wcm92aXNp
b25hbFBhZ2VzKSB7CiAgICAgICAgIGlmIChwcm92aXNpb25hbFBhZ2UtPnBhZ2UoKS5wYWdlSUQo
KSA9PSBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmlu
ZGV4IDlhNmNiZjFmNDYwOTlhNWY2ZjlmYTJmMGVlOGE2ZmEyYzgxODE2YTguLmFkM2YwMzhkZDY1
NDY1YzA0ODk5NzliNjdlNTg1Yzg1NmY5MmRjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9j
ZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFN0cmluZ0hhc2guaD4KQEAgLTk3LDcgKzk4LDcgQEAg
ZW51bSBjbGFzcyBBbGxvd1Byb2Nlc3NDYWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5IDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNp
dmVuZXNzVGltZXI6OkNsaWVudCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nl
c3NQcm94eT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRl
IFByb2Nlc3NUaHJvdHRsZXJDbGllbnQgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFwOwotICAgIHR5
cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5
Kj4gV2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKICAg
ICBlbnVtIGNsYXNzIElzUHJld2FybWVkIHsKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIHN0
YXRpYyBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCk7CisgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcik7CiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZW51bSBjbGFzcyBC
ZWdpbnNVc2luZ0RhdGFTdG9yZSA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0xNDksMTAgKzE1MCwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblBy
b2Nlc3ModWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nl
c3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0
b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHJl
bW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBwYWdl
SUQpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAg
ICB2b2lkIGFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGlk
RGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Jik7CkBAIC0zMTEsNyArMzEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ViUGFn
ZU1lZGlhU3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5Jik7CiAKIHByb3RlY3RlZDoKLSAgICBz
dGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQpOwogCiAgICAgLy8gQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC0zNTQsNyArMzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29u
dGV4dElEKTsKICNlbmRpZgogCi0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWlu
dDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0
ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7CiAKICAgICAv
LyBQbHVnaW5zCkBAIC00NDcsNyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFByb3Zp
c2lvbmFsUGFnZVByb3h5Kj4gbV9wcm92aXNpb25hbFBhZ2VzOwogICAgIFVzZXJJbml0aWF0ZWRB
Y3Rpb25NYXAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCi0gICAgSGFzaE1hcDxWaXNpdGVk
TGlua1N0b3JlKiwgSGFzaFNldDx1aW50NjRfdC8qIHBhZ2VJRCAqLz4+IG1fdmlzaXRlZExpbmtT
dG9yZXNXaXRoVXNlcnM7CisgICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAg
ICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveGllczsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJt
aW5hdGlvbldhc0Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVIYW5kbGVyLmNwcAppbmRleCBlMzU1MzE5ZWE0YzRlZTY1MWM2YmVkZjdjODZmYmRkMjFm
MjlkYzIzLi43ZDU3NWE0MDRiMDQ1YjkxYWQ3YWM4ZTY2NzYwZDA4YmUzOGI5MWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6dGFza0NvbXBsZXRlZChXZWJV
UkxTY2hlbWVUYXNrJiB0YXNrKQogICAgIHBsYXRmb3JtVGFza0NvbXBsZXRlZCh0YXNrKTsKIH0K
IAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBhZ2VNYXAodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJl
bW92ZVRhc2tGcm9tUGFnZU1hcChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJ
RCkKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZmluZChw
YWdlSUQpOwogICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5l
bmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgK
aW5kZXggODk5NzZjNjFmODNkNTJiODFmMmM0NDA3YzJjNWJiZDczYmYyYWU0OS4uYjdhZjA3NTk3
NWYzMmI4YWI4NWU4OGQxYmFmZmIwNWExNzA1YTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApAQCAtNjYsMTMgKzY2LDEzIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiwgV2ViVVJM
U2NoZW1lVGFzayYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1UYXNrQ29tcGxldGVk
KFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAKLSAgICB2b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1h
cCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCk7CisgICAgdm9pZCByZW1vdmVUYXNr
RnJvbVBhZ2VNYXAoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJRCk7CiAg
ICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9yVGFza0lkZW50aWZpZXIodWludDY0X3QpIGNv
bnN0OwogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogCiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmPFdlYlVSTFNjaGVtZVRhc2s+PiBtX3Rhc2tzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllcjsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFn
ZUlkZW50aWZpZXI7CiAgICAgCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNM
b2FkQ29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaAppbmRleCBiODcyMDczYmQyNzgxZmYwOWI5YmYyNTMzMTYyYzA1YWE2OWMwM2Vi
Li5hOTdmMTYwY2YyNTU2ZmExMzhmNTJiZDgxNWYyM2U4ZWE2YzdlYTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFdlYlVSTFNjaGVtZVRhc2s+IGNyZWF0ZShXZWJVUkxTY2hlbWVI
YW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgaWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXImJik7CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRl
bnRpZmllcjsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQpA
QCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAg
IFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50
aWZpZXI7Ci0gICAgdWludDY0X3QgbV9wYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCBtX3JlcXVlc3Q7CiAgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9y
ZXNwb25zZVNlbnQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA0ZmQwMjEyNjgxNzA1
YWNmNGY5YzgwYmUwOGQzYmMwNGE0ZjhlNTdjLi45YTA1ZWE4YmY2NjFhYjQzNjQ5ZDUxOTA3NTNh
YWM4ZTkwNmZkNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTU2NSw3ICsxNTY1LDcgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZChib29sIHZhbHVlLCBDb21wbGUKICAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKCkuc2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9zZXNzaW9u
SUQsIHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0
QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRv
bWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAppbmRleCA2NDJlMzMwOWQwNzYyNDNlMzdkOGUxZDI3NDY1YjExZjcxMmRiMGM4Li44MjJj
M2ZjNzYzN2Q3YzVlYjAwM2M2OWNlOTQ3NDViZDM4MjU5M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlT3Jp
ZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgpAQCAtMTM1LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7Cisg
ICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsK
ICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0
IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNw
cAppbmRleCBkYzhkNTNjYWZiYjYzYjE2YTc4Y2E2ODVkZDc0ZmFiN2M0MWQyYWNmLi5hY2Q2MGE0
NGMxZjAxMjI1ZTYxNzI4MDZmMTk3ZDU2NWI1ZmRkNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTM4MCw3ICszODAsNyBA
QCBzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3dlYmtpdGd0a19pbnRlcmZhY2Ugd2Via2l0Z3RrSW50
ZXJmYWNlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8qIGNvbXBvc2l0
b3IgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcio+KHdsX3Jlc291cmNlX2dldF91c2Vy
X2RhdGEocmVzb3VyY2UpKTsKLSAgICAgICAgY29tcG9zaXRvci0+YmluZFN1cmZhY2VUb1dlYlBh
Z2Uoc3VyZmFjZSwgcGFnZUlEKTsKKyAgICAgICAgY29tcG9zaXRvci0+YmluZFN1cmZhY2VUb1dl
YlBhZ2Uoc3VyZmFjZSwgbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihw
YWdlSUQpKTsKICAgICB9CiB9OwogCkBAIC01NDcsNyArNTQ3LDcgQEAgYm9vbCBXYXlsYW5kQ29t
cG9zaXRvcjo6Z2V0VGV4dHVyZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVuc2lnbmVkJiB0ZXh0
dXJlLCBJbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2F5bGFuZENvbXBvc2l0b3I6
OmJpbmRTdXJmYWNlVG9XZWJQYWdlKFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKiBzdXJmYWNl
LCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpiaW5kU3VyZmFjZVRv
V2ViUGFnZShXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZSogc3VyZmFjZSwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IG51bGxw
dHI7CiAgICAgZm9yIChhdXRvKiBwYWdlIDogbV9wYWdlTWFwLmtleXMoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaAppbmRleCAxNDgxOWY4
ZmFjNGVjODAyMzBiYTJjYmJiMThlNmQwOTU5YjlmODRhLi4yZDc4MGZmYjEyNTdkNDlmMDhkZWE5
YTE4NjhhOGE0MzJjNjFiZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2F5bGFuZENvbXBvc2l0b3IuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9kaXNwbGF5OyB9CiAgICAgU3RyaW5nIGRp
c3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQogCi0gICAgdm9pZCBi
aW5kU3VyZmFjZVRvV2ViUGFnZShTdXJmYWNlKiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lk
IGJpbmRTdXJmYWNlVG9XZWJQYWdlKFN1cmZhY2UqLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
CiAgICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyV2ViUGFnZShXZWJQYWdlUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMDgzZDZm
YWYxNTIwMWY4Y2VjNGQwMjhiYTMwOTg4YjdhY2E3NTBkNC4uY2VmZGU2MWM0OWI1MmFjZDZmMDg5
MDg4MjA2YjhkNjZjNzU1MDI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCkBAIC0yNTEsNyArMjUxLDcgQEAg
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRp
b25JbnRlcmFjdGl2ZVRyYW5zaXRpb24KICAgICAgICAgaWYgKGZpbmlzaCkKICAgICAgICAgICAg
IG1fd2ViUGFnZVByb3h5Rm9yQmFja0ZvcndhcmRMaXN0Rm9yQ3VycmVudFN3aXBlLT5uYXZpZ2F0
aW9uR2VzdHVyZVdpbGxFbmQodHJhbnNpdGlvbkNvbXBsZXRlZCwgKnRhcmdldEl0ZW0pOwogICAg
IH1dOwotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAg
IGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAgICAgR2VzdHVyZUlEIGdl
c3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBbbV9zd2lwZVRyYW5zaXRpb25Db250
ZXh0IF9zZXRDb21wbGV0aW9uSGFuZGxlcjpbcGFnZUlELCBnZXN0dXJlSUQsIHRhcmdldEl0ZW1d
IChfVUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db250ZXh0ICpjb250ZXh0LCBCT09MIGRpZENv
bXBsZXRlKSB7CiAgICAgICAgIGlmIChhdXRvIGdlc3R1cmVDb250cm9sbGVyID0gY29udHJvbGxl
ckZvckdlc3R1cmUocGFnZUlELCBnZXN0dXJlSUQpKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogdGFyZ2V0SXRlbSwKICAgICAgICAgbV93ZWJQYWdlUHJveHkuZGlkQ2hhbmdlQmFja2dy
b3VuZENvbG9yKCk7CiAgICAgfQogCi0gICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsK
ICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50R2VzdHVyZUlEOwogICAgIG1fbG9h
ZENhbGxiYWNrID0gW3RoaXMsIHBhZ2VJRCwgZ2VzdHVyZUlEXSB7CiAgICAgICAgIGF1dG8gZHJh
d2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5wcm92aXNpb25hbERyYXdpbmdBcmVhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuY3BwCmluZGV4IGZmNDQ5MzQxZDllNDQyZmMxNjJlNDE1NDRiMzg1YjE3YzA1
M2EwMzguLjU3ZjNmZTE3M2NjZDk1MTczNjQyYTE5NWU3Y2ZkMTAxODg2OTg4Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWlu
dDY0X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAgICByZXR1cm4gbV93
ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yOjp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFN0cmluZyYgdmFsaWRhdGlvblVSTFN0cmluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggYjFjYmM5NjNiMGVmY2M4NTI0
OTJkOTY4ZDllYWFjMzE4MjhlMTUyYi4uNDU0Y2E2YmM4NDQ5ODNmNTk5OGZmZWU0ZGEzNzRjY2Zj
YzYyMjVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTIzMSw3ICsy
MzEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93T2Jq
ZWN0Rm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgZXJy
b3JNZXNzYWdlLCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3Vt
ZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tU
aW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFy
Z3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJh
Y2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7
CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRF
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBmcmFtZUlELAogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxs
YmFja0lELCByZXN1bHQsIGVycm9yVHlwZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5h
bChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGlu
YWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zNTAsNyAr
MzUwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWkKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGls
ZEZyYW1lV2l0aE5vZGVIYW5kbGUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdl
YlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAg
ICAgaWYgKCFwYWdlKSB7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJ
RCwKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZyYW1lRnJvbUVsZW1lbnQt
PmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2
ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBh
Z2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJh
bWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVz
b2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRG
cmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHBh
cmVudEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpmb2N1c0ZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTUyNyw3ICs1
MjcsNyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjb252ZXJ0UG9pbnRGcm9tRnJhbWVD
bGllbnRUb1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1lVgogICAgIHJldHVybiBjbGllbnRQb2ludDsK
IH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91
dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBi
b29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5
c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJ
bnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExh
eW91dChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29v
cmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBX
ZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC02MzUsNyArNjM1
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91
dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBp
c09ic2N1cmVkKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RP
cHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9w
dGlvbkVsZW1lbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzAzLDcg
KzcwMyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdEZvclNjcmVlbnNo
b3QoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6RWxlbWVuCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbElu
dG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKIHsKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAKQEAgLTc1
MSw3ICs3NTEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5z
aG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRAogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIHsg
fSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNG
b3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29r
aWVzRm9yRnJhbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAt
Nzc2LDcgKzc3Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2ll
c0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpkZWxldGVDb29raWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCmluZGV4IDYyOTU0MWQyMGJhMTBkZjYyZGExZTI2
MDkxNjRlYWM4OTJiYTBkMTMuLjExNjc2NDUyNzdkYmMxOTMwYTVhN2E1OTdkY2JjMmRmM2VjZjU1
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNjAsMTcgKzYxLDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAog
ICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IG1lc3NhZ2VzCi0gICAg
dm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50
cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1l
b3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0
aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRp
bmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4m
Jik7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9p
ZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWUodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBmb2N1c0ZyYW1lKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCk7Ci0gICAgdm9pZCBjb21wdXRlRWxlbWVudExh
eW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9u
YWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJik7Ci0gICAgdm9pZCBzZWxlY3RPcHRpb25F
bGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOwotICAgIHZv
aWQgdGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1Zp
ZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldENvb2tpZXNGb3JGcmFt
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmKTsKLSAgICB2
b2lkIGRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYm
KTsKKyAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8
U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwg
aW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXNv
bHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5h
bWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRf
dCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBmb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlEKTsKKyAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5
b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9k
ZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3Qs
IE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYpOworICAgIHZvaWQgc2VsZWN0
T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
Pik+JiYpOworICAgIHZvaWQgdGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3
SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRf
dCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+KT4mJik7CisgICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKIAogICAgIFN0cmluZyBt
X3Nlc3Npb25JZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhYTEyMTllMmVmMWZjMDcwMDQ1OTZkMjRhMWI1NzE2ZDMwNmY3
OGJlLi5kNzJmODlkMjYzNTljZjAxY2NmZDUzMWU5NmUwMWY0NDQwOWFhZjU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDIxICsyMSwy
MSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5IHsKLSAgICBFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRz
LCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVv
dXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24o
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
ZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRD
YWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQogCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVy
cm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJ
RCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlUGFyZW50RnJhbWUodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRo
T3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0
X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJ
RCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUpIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZl
UGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFz
eW5jCiAKLSAgICBGb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkK
KyAgICBGb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCkKIAotICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lz
dGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVj
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlz
T2JzY3VyZWQpIEFzeW5jCisgICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9v
bCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRl
U3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwg
V2ViQ29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3
Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkgQXN5bmMKIAotICAgIFNlbGVjdE9wdGlvbkVs
ZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRs
ZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYworICAgIFNlbGVjdE9wdGlv
bkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3lu
YwogCi0gICAgVGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNs
aXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFRha2VTY3JlZW5zaG90KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9y
dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIEdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKLSAgICBEZWxldGVDb29r
aWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkg
LT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYworICAgIEdldENvb2tpZXNGb3JG
cmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+
IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29v
a2llcykgQXN5bmMKKyAgICBEZWxldGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0
cmluZz4gZXJyb3JUeXBlKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RXh0ZW5zaW9uLmNwcAppbmRleCAwODJkNjA5YTg3YmYzN2M3ZWYyZjRiNGRlOGUyNGNkZGEyNTEz
NjZkLi40YTIzYmY1NjAxMDdjMzFmMWE0ZGUyYzk2MTI5OWE3MDEwODE3NTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBA
IFdlYktpdFdlYlBhZ2UqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKFdlYktpdFdlYkV4
dGVuc2lvbiogZXh0ZW5zaW9uLCBndWluCiAgICAgV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZSog
cHJpdiA9IGV4dGVuc2lvbi0+cHJpdjsKICAgICBXZWJQYWdlTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBwcml2LT5wYWdlcy5lbmQoKTsKICAgICBmb3IgKFdlYlBhZ2VNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcHJpdi0+cGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBp
ZiAoaXQtPmtleS0+cGFnZUlEKCkgPT0gcGFnZUlEKQorICAgICAgICBpZiAoaXQtPmtleS0+cGFn
ZUlEKCkudG9VSW50NjQoKSA9PSBwYWdlSUQpCiAgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVl
LmdldCgpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5j
cHAKaW5kZXggZTU3ZTJlNzdlNTU4NDhlOGJhNzI1ZjlkMzIyNzcwOWZmZjE3OGFmZi4uY2ZjNTAz
MWVkNmU0YTI5NTRmZTAyYTAzZGE4N2ExNjFjZDJkMzA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlLmNwcApAQCAtNzYzLDcgKzc2Myw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl9w
YWdlX2dldF9pZChXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfUEFHRSh3ZWJQYWdlKSwgMCk7CiAKLSAgICByZXR1cm4gd2Vi
UGFnZS0+cHJpdi0+d2ViUGFnZS0+cGFnZUlEKCk7CisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYt
PndlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKaW5kZXggYWUzODgzZDg2YjY4OWU2NjZmMTZhY2VmOTAxNjcyOTRlNWQyNzg3Yy4u
OGIxYWQ1ZWRmMGU2YjkwZDU4YzI0ZTYxNWZhZGM5YzcxMDdhNWY2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVu
dGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAgIHdlYlBh
Z2UtPmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byB3ZWJQYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpCisg
ICAgICAgIGlmIChhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkKICAgICAgICAgICAgIHdlYlBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLT5k
aWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbgogCiAjaWYg
RU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViUGFnZShkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpCisgICAgICAgIGlmIChh
dXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkK
ICAgICAgICAgICAgIHdlYlBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLT5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwNGFlMGU0NWQ1ZTlkMjljYTBmMjcwYTA2NDE4
YTZhYjJkNTAxZmNiLi4yNzhiNjAxODQ3OWYzNjU5MDM0OGM4OTUxODU1YWNmNDNkY2I1OWY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UK
ICAgICBhdXRvJiBmcmFtZUxvYWRlckNsaWVudCA9IHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpOwogCiAgICAgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVy
cyB0cmFja2luZ1BhcmFtZXRlcnM7Ci0gICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCA9IGZy
YW1lTG9hZGVyQ2xpZW50LnBhZ2VJRCgpLnZhbHVlT3IoMCk7CisgICAgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50
aWZpZXIgeyB9KTsKICAgICB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCA9IGZyYW1lTG9hZGVy
Q2xpZW50LmZyYW1lSUQoKS52YWx1ZU9yKDApOwogICAgIHRyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEID0gaWRlbnRpZmllcjsKICAgICBhdXRvIHNlc3Npb25JRCA9IGZyYW1lTG9hZGVyQ2xp
ZW50LnNlc3Npb25JRCgpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJl
c291CiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcmVtZW1iZXIgdGhlIFJlc291cmNlTG9hZGVyIGlu
IG91ciByZWNvcmRzIGJ1dCBub3Qgc2NoZWR1bGUgaXQgaW4gdGhlIE5ldHdvcmtQcm9jZXNzLgog
ICAgIGlmIChyZXNvdXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5zY2hlZHVsZUFyY2hpdmVM
b2FkKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkpKSB7CiAgICAgICAg
IExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNv
dXJjZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9h
ZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFyY2hpdmUgcmVzb3VyY2UgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlm
aWVyKTsKICAgICAgICAgbV93ZWJSZXNvdXJjZUxvYWRlcnMuc2V0KGlkZW50aWZpZXIsIFdlYlJl
c291cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTc1LDE0ICsxNzUsMTQgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRl
ciwgQ2FjaGVkUmVzb3UKIAogICAgIGlmIChyZXNvdXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigp
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFJlc291cmNlKHJlc291cmNlTG9hZGVy
LCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwo
KSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgbG9hZGVkIGZyb20g
YXBwbGljYXRpb24gY2FjaGUuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIs
ICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hl
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAi
c2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZSAo
ZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIGlkZW50aWZpZXIpOwogICAgICAgICBtX3dlYlJlc291cmNlTG9hZGVycy5zZXQoaWRlbnRp
ZmllciwgV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQ
YXJhbWV0ZXJzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAocmVzb3VyY2VM
b2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNEYXRhKCkpIHsKICAgICAgICAgTE9HKE5l
dHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEuIiwgcmVzb3VyY2VMb2FkZXIu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBh
cyBkYXRhIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgYXMgZGF0YSAoZnJhbWUgPSAl
cCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOwogICAgICAgICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVz
b3UKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hl
ZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVy
bCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZS4iLCByZXNvdXJj
ZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
aGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRy
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
aGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9V
SW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAg
ICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
KFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAvLyBodHRw
czovL2Jsb2dzLmdub21lLm9yZy9hbGV4bC8yMDEyLzAxLzI2L3Jlc291cmNlcy1pbi1nbGliLwog
ICAgIGlmIChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJcygicmVzb3Vy
Y2UiKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFz
IGEgR1Jlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2No
ZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgR1Jlc291cmNlIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgR1Jlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAg
ICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTIxMSwxMSArMjExLDExIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAg
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5oYW5kbGVGZXRjaChyZXNvdXJj
ZUxvYWRlciwgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBbdGhpcywgdHJhY2tpbmdQYXJhbWV0ZXJzLCBpZGVudGlmaWVyLCBzZXNzaW9uSUQsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpLCByZXNvdXJjZUxvYWRlciA9IG1h
a2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBm
ZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNl
cnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRj
aCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+
ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJlc291cmNlTG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtl
cnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9h
ZDogdW5hYmxlIHRvIHNjaGVkdWxlIFVSTCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZl
dGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2No
ZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChm
cmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcmVzb3VyY2VM
b2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVyKV0gewogICAgICAgICAgICAgICAgIGF1dG8g
ZXJyb3IgPSBpbnRlcm5hbEVycm9yKHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkpOwog
ICAgICAgICAgICAgICAgIGVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2Vs
bGF0aW9uKTsKQEAgLTIyNywxMyArMjI3LDEzIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAg
ICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS50
cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyKSkKICAgICAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2NoZWR1bGVM
b2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLmdldCgpLCByZXNvdXJjZUxvYWRl
ci0+cmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJz
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRy
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMg
KGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAjZWxzZQogICAgIGlmICghdHJ5TG9hZGluZ1Vz
aW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlcikpCiAgICAgICAgIHNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKICAg
ICBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJz
Y2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6
IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICNlbmRp
ZgogfQogCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKICAgICBp
ZiAobG9hZFBhcmFtZXRlcnMub3B0aW9ucy5tb2RlICE9IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2
aWdhdGUpIHsKICAgICAgICAgQVNTRVJUKGxvYWRQYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbik7CiAg
ICAgICAgIGlmICghbG9hZFBhcmFtZXRlcnMuc291cmNlT3JpZ2luKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBubyBzb3VyY2VPcmlnaW4gKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2Fk
UGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hl
ZHVsZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVz
b3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMu
aWRlbnRpZmllcik7CiAgICAgICAgICAgICBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKHJl
c291cmNlTG9hZGVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzQ2LDkg
KzM0Niw5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3Jr
UHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAKICAgICBBU1NFUlQoKGxvYWRQYXJh
bWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFy
YW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6
OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNj
aGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAl
ZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGlu
dD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53
ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hl
ZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNl
TG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgp
LnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9h
ZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChm
cmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3Jp
dHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hl
ZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3Jp
dHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19j
YXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9h
ZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0
byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBo
YWQgY3Jhc2hlZC4KICAgICAgICAgLy8gVGhpcyBsb2FkIHdpbGwgbmV2ZXIgc3VjY2VlZCBzbyB3
ZSB3aWxsIHNjaGVkdWxlIGl0IHRvIGZhaWwgYXN5bmNocm9ub3VzbHkuCiAgICAgICAgIHNjaGVk
dWxlSW50ZXJuYWxseUZhaWxlZExvYWQocmVzb3VyY2VMb2FkZXIpOwpAQCAtNTA3LDE5ICs1MDcs
MTkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShG
cmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3
ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDog
bnVsbHB0cjsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFn
ZSgpIDogbnVsbHB0cjsKIAotICAgIGF1dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBh
Z2VJRCgpIDogMDsKKyAgICBhdXRvIHBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQo
KSA6IFBhZ2VJZGVudGlmaWVyIHsgfTsKICAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdl
YkZyYW1lLT5mcmFtZUlEKCkgOiAwOwogICAgIGF1dG8gc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdl
YlBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsK
IAogICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWVMb2FkZXIuZnJhbWUoKS5kb2N1bWVudCgpOwog
ICAgIGlmICghZG9jdW1lbnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBubyBkb2N1bWVudCAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVs
dSkiLCBwYWdlSUQsIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHk6IG5vIGRvY3VtZW50IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlE
LCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICAgICAgZXJyb3IgPSBpbnRlcm5hbEVycm9y
KHJlcXVlc3QudXJsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF1dG8g
c3luY0xvYWRSZXN1bHQgPSB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFu
ZGxlcihmcmFtZUxvYWRlciwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcmVxdWVzdCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgY2FsbGluZyB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVz
aW5nVVJMU2NoZW1lSGFuZGxlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSwgZXJyb3IgPSAlZCkiLCBwYWdlSUQsIGZyYW1lSUQs
IHJlc291cmNlTG9hZElkZW50aWZpZXIsIHN5bmNMb2FkUmVzdWx0LT5lcnJvci5lcnJvckNvZGUo
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9h
ZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIGNhbGxpbmcgdHJ5TG9hZGluZ1N5bmNocm9u
b3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUsIGVycm9yID0gJWQpIiwgcGFnZUlELnRv
VUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHN5bmNMb2FkUmVzdWx0
LT5lcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAgIGVycm9yID0gV1RGTW92ZShzeW5jTG9hZFJl
c3VsdC0+ZXJyb3IpOwogICAgICAgICByZXNwb25zZSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQt
PnJlc3BvbnNlKTsKICAgICAgICAgZGF0YSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQtPmRhdGEp
OwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgSGFuZ0Rl
dGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKIAogICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UGVyZm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFyYW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKSwgMCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgc2Vu
ZGluZyBzeW5jaHJvbm91cyBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQs
IGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZh
aWxlZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIs
IHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAg
ICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB3ZWJQYWdlID8gd2ViUGFnZS0+Y29yZVBhZ2UoKSA6IG51
bGxwdHIpCiAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0Rp
YWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxF
cnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnN5bmNocm9ub3VzTWVz
c2FnZUZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICAgICAgcmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJh
bWVMb2FkZXIsIHVuc2kKICAgICB9CiB9CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnBhZ2VM
b2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKIHsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBh
Z2VMb2FkQ29tcGxldGVkKHdlYlBhZ2VJRCksIDApOwogfQpAQCAtNjQ4LDEwICs2NDgsMTAgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiBmcmFtZUxv
YWRlciwgY29uc3QgVVJMJiB1cmwsIFMKIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0
IHsgdXJsIH07Ci0gICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+
cGFnZUlEKCkgOiAwOwotICAgIHBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lID8gd2Vi
RnJhbWUtPmZyYW1lSUQoKSA6IDA7CisgICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdl
LT5wYWdlSUQoKTsKKyAgICBwYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJ
RCgpOwogICAgIHBhcmFtZXRlcnMucGFyZW50UElEID0gcHJlc2VudGluZ0FwcGxpY2F0aW9uUElE
KCk7Ci0gICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lv
bklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgIHBhcmFtZXRl
cnMuc2Vzc2lvbklEID0gd2ViUGFnZS0+c2Vzc2lvbklEKCk7CiAgICAgcGFyYW1ldGVycy5zdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIHBhcmFt
ZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVzOwogICAgIHBh
cmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBzaG91bGRQZXJmb3Jt
U2VjdXJpdHlDaGVja3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDRhZjU5OTQxZTM0ZjcyYWQyNmU4MWVmYjU2
MDYwNjc1MTgxMWY4YzYuLmFjNTI0OTY2YTg1MjFlMGUzZDY1ZWI2MmI5ZjcwZTgyZjc4Y2MyMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBsb2Fk
UmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlv
bnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShX
ZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHBhZ2VMb2Fk
Q29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgZmluYWw7CisgICAgdm9pZCBwYWdlTG9hZENv
bXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgZmluYWw7CiAKICAgICB2b2lkIHJlbW92
ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9h
ZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGJmODhmZGEzMDA3ZTE2NGZmMzhhOTUyMmFiYjgxZmVmZDdlOWY4NTIuLjg4YmQ1M2JmMWY4
ZmI3MzZlYjE3M2VmNjRmMWUzMDNkMWJiMTAwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg4LDE2ICs4
OCwxNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBSZXNvdQogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRl
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNz
KSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IHRvICclcyciLCBwcm9wb3NlZFJl
cXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxs
U2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0
KG1fY29yZUxvYWRlci5nZXQoKSwgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRp
bmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZh
bHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5n
IGVhcmx5IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxz
ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fY29yZUxvYWRlci0+d2ls
bFNlbmRSZXF1ZXN0KFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KSB7CiAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBv
ciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVx
dWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG5vIGNvcmVsb2FkZXIgb3IgaWRlbnRpZmllciAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlEKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTMsMTIgKzExMywx
MiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1Nl
bnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlUwogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewogICAgIExPRyhOZXR3b3Jr
LCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9y
ICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgp
LmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCki
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgc3RhdHVzID0gJWQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogCiAgICAgUmVm
PFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmIChtX2Nv
cmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVM
b2FkRmFsbGJhY2tGb3JSZXNwb25zZShtX2NvcmVMb2FkZXIuZ2V0KCksIHJlc3BvbnNlKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBj
b250aW51aW5nIGxvYWQgYmVjYXVzZSB0aGUgY29udGVudCBpcyBhbHJlYWR5IGNhY2hlZCAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVp
bmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVhZHkgY2FjaGVkIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBib28KICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVz
cG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElE
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQp
OwogICAgICAgICB9OwogICAgIH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
aW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3Jr
UmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2Un
dmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0
YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICB9CiAgICAgbV9udW1C
eXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBpbnQ2NF90IGUKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291
cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsK
ICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJl
c291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRlc1JlY2VpdmVkKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRGaW5pc2hSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0
aCA9ICV6ZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwg
bV9udW1CeXRlc1JlY2VpdmVkKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9j
ZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTG9hZCBzaG91bGQgbm90IGJlIGFibGUgdG8gZmluaXNo
IGJlZm9yZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAgICAgbV9jb3JlTG9hZGVy
LT5kaWRGaW5pc2hMb2FkaW5nKG5ldHdvcmtMb2FkTWV0cmljcyk7CkBAIC0xNjcsNyArMTY3LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0wKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZh
aWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5l
dHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxv
YWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2Fk
IHNob3VsZCBub3QgYmUgYWJsZSB0byBmaW5pc2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUg
cmVzcG9uc2UiKTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
QmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXIt
PmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKIH0KQEAgLTE4Nyw3ICsxODcsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25z
T3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2Fk
ZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lE
ZW5pZWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFt
ZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xp
Y3lEZW5pZWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOwogCiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5z
dG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVk
KG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CkBAIC0xOTYsMTMgKzE5
NiwxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0
aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRs
ZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291
cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3Jh
cEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBm
cm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBj
cmVhdGUgU2hhcmVkQnVmZmVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2Nv
cmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgp
LmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50
ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNo
YXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CmluZGV4IDdmZDc4MzIyMzNhMzYyYzIzYTkwNGZjMTVlZjM0Y2E2NGE5NjdlYWUuLjU4NjU0Mzcx
OGU1ZTgzODhiOGI0MWFiMDIwMzdhYzc2ZTc4NjkzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKQEAgLTUwLDcgKzUxLDcgQEAgdHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxv
YWRJZGVudGlmaWVyOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGlj
OgogICAgIHN0cnVjdCBUcmFja2luZ1BhcmFtZXRlcnMgewotICAgICAgICB1aW50NjRfdCBwYWdl
SUQgeyAwIH07CisgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAg
ICAgdWludDY0X3QgZnJhbWVJRCB7IDAgfTsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciByZXNvdXJjZUlEIHsgMCB9OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKaW5kZXggMzRiNWE2NDNmMDNiZGE2MWZkYTRiMzNkODg3YjVkMWRiODlkYzYwNy4uYWRj
NDc2NjUyZTgwN2IyMzZhY2MxMTY1NGE1ZmMxNzE1NzM1YzkxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgY29uc3QgU2Vjb25k
cyBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTAwX21zIH07IC8vIE9ubHkgdXNlZCBi
eSBsYQogCiBjbGFzcyBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJs
aWMgRW1wdHlGcmFtZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgU2VydmljZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50KFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCisgICAgU2VydmljZVdvcmtlckZyYW1lTG9h
ZGVyQ2xpZW50KFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiAgICAgICAgIDogbV9jb25u
ZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAg
ICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKQEAgLTk1LDE4ICs5NSwxOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9mcmFtZUlEOyB9CiAgICAgU3RyaW5nIHVzZXJBZ2VudChjb25z
dCBVUkwmKSBmaW5hbCB7IHJldHVybiBtX3VzZXJBZ2VudDsgfQogCiAgICAgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24mIG1fY29ubmVjdGlvbjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQgeyAwIH07CiAgICAg
U3RyaW5nIG1fdXNlckFnZW50OwogfTsKIAotV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCitXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICA6IG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fcGFnZUdyb3VwSUQocGFnZUdy
b3VwSUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC0yMjYsMTIgKzIyNiwxMiBAQCB2b2lk
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIgc2VydgogewogICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9
LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFp
c1ZhbGlkRmV0Y2gocmVxdWVzdCwgb3B0aW9ucywgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5z
Y3JpcHRVUkwoKSwgcmVmZXJyZXIpKSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRs
ZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggNmNlODNkMWQwOWVhZWRj
YWU0ZmU4NzNmMThlYzUyYjU5ZTRmYTE3Mi4uZmJiNjMwZTRlMTliMzU5ZGMxNzBjY2VhMDE4YTQ5
ODMyMTY2ZGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01MSw3ICs1
MSw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2Vy
OjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVp
bnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmKTsKKyAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOwogICAg
IHVpbnQ2NF90IG1fcGFnZUdyb3VwSUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07Cisg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9wcmV2
aW91c1NlcnZpY2VXb3JrZXJJRCB7IDAgfTsKIAogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5OjpBbGxvd0FsbFN0b3JhZ2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggOGFlYmFmZjk2
MjIxZTk4NjMzN2MzZDIzZTA0MGYwNWI0NzU1YTc1Ni4uMjY0NGM5YzFkMTJiNmNkMDFkNTY2OTlk
MTMyYmMyZWY0YzYzNmExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3UKIHsKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UgeyByZXNwb25zZSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogCiAg
ICAgY2xlYW51cCgpOwogfQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JgogICAgIGlmIChtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogICAg
ICAgICBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSB0cnVl
OwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGJ1ZmZlciB9LCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgYnVmZmVyIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+
KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJl
ZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8
Rm9ybURhdGE+JgogICAgIC8vIEZvciBub3cgYW5kIGZvciB0aGUgY2FzZSBvZiBibG9icywgd2Ug
cmVhZCBpdCB0aGVyZSBhbmQgc2VuZCB0aGUgZGF0YSB0aHJvdWdoIElQQy4KICAgICBVUkwgYmxv
YlVSTCA9IGZvcm1EYXRhLT5hc0Jsb2JVUkwoKTsKICAgICBpZiAoYmxvYlVSTC5pc051bGwoKSkg
ewotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZN
b3ZlKGZvcm1EYXRhKSB9IH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZFJlY2VpdmVGb3JtRGF0YSB7IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZNb3ZlKGZvcm1E
YXRhKSB9IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFyKiBkYXRhLCBzaXplCiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0
X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURh
dGEgeyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0sIHN0
YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygp
CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogCiAgICAgY2xlYW51cCgp
OwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkRmluaXNoKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkRmluaXNoIHsg
fSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2ggeyB9LCBtX2ZldGNo
SWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWROb3RIYW5kbGUoKQogICAgIGlm
ICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIG1f
ZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOwogCiAgICAgY2xlYW51cCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmNwcAppbmRleCA0OTMzY2E0YzNhMDY3MmNhYzMwZjc3OTUxOTBkMjU4NTIxYzBjZjAyLi4y
YjI4ODY0YTlhYTA5ODQ0MmQ2MTUzMmM2NDBmNWI5M2E4NTk5ODBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcApAQCAtODIsMTQgKzgyLDE0IEBAIFJlZjxXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoVXNlckNv
bnRlbnRDCiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cihVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwg
KnRoaXMpOwogfQogCiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIoKQogewogICAgIEFTU0VSVCh1c2VyQ29udGVudENvbnRyb2xsZXJzKCkuY29udGFp
bnMobV9pZGVudGlmaWVyKSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKIAog
ICAgIHVzZXJDb250ZW50Q29udHJvbGxlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KQEAg
LTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPnBhZ2VJRCgpLCB3ZWJGcmFtZS0+aW5mbygp
LCBtX2lkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29u
dHJvbGxlci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlE
KCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZh
bHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAg
IFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggMjcyNmMyM2QyYTRmNDg0NTEwYWIwMTgzMjJlN2Q5MDI3OWIxNGY2
Ny4uODE0MTAxOTJhNzE2NmJmYzI1MGNjOWEyMDdhN2FmMDRhZjcxMDI5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlcwog
CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUp
OwogCi0gICAgdWludDY0X3QgbmV3UGFnZUlEID0gMDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gbmV3UGFnZUlEOwogICAgIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+
IHBhcmFtZXRlcnM7CiAgICAgaWYgKCF3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJh
bWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCksIHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCksIHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVy
cyksIG1fcGFnZS5wYWdlSUQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjk5LDgg
KzI5OSw4IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFt
ZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzCiAgICAgaWYgKHBhcmFtZXRlcnMtPnNl
c3Npb25JRCA9PSBtX3BhZ2Uuc2Vzc2lvbklEKCkpCiAgICAgICAgIHBhcmFtZXRlcnMtPm9sZFBh
Z2VJRCA9IG1fcGFnZS5wYWdlSUQoKTsKIAotICAgIHdlYlByb2Nlc3MuY3JlYXRlV2ViUGFnZShu
ZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMpKTsKLSAgICByZXR1cm4gd2ViUHJvY2Vzcy53
ZWJQYWdlKG5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7CisgICAgd2ViUHJvY2Vzcy5jcmVhdGVXZWJQ
YWdlKCpuZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gd2ViUHJv
Y2Vzcy53ZWJQYWdlKCpuZXdQYWdlSUQpLT5jb3JlUGFnZSgpOwogfQogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2hvdygpCkBAIC0xMzIyLDEyICsxMzIyLDEyIEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpCiB9CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3Jh
Z2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkNo
cm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1l
RG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UuaGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1
YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJh
YmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIG1fcGFnZS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1l
RG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBiMjg5ZmIyM2ZlNDFhYmJi
Y2ExY2UxNzJjZThhNGYyNWFjY2Q1ZWMwLi4zMTQ0NTFiNDAyOWQ4YTkyODlmY2E4NzVmMTg1ZWU1
ODg4NmIwYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNzIsOCArMzcyLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
ZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJikgZmluYWw7CisgICAgdm9pZCBo
YXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGY0MjhmZDIzOTdlZGRkNGQyNDExNzcwMzIzZWIzZmEy
NzkwMmQ4NWYuLjcwNTIwMjViOWRjZjkyNDE0Y2I2ZTQ4NDJkYWZhNzQ4YzBlMWY3NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyVW5kb1N0ZXAoVW5kb1N0ZXAmIHN0ZXApCiAgICAgYXV0byBzdGVwSUQgPSB3
ZWJTdGVwLT5zdGVwSUQoKTsKIAogICAgIG1fcGFnZS0+YWRkV2ViVW5kb1N0ZXAoc3RlcElELCBX
VEZNb3ZlKHdlYlN0ZXApKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oc3RlcElELCBzdGVwLmxhYmVsKCkpLCBtX3Bh
Z2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHN0ZXBJRCwgc3RlcC5sYWJlbCgpKSwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChVbmRvU3RlcCYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1MjljMDQ2NzAzMDFiMzUwYjEz
MjUxODM1NGE5ZTVhODU1YjljNDhkLi4zZGNkN2UyZWMxOTk4MTdkNzQ5NWVkMGE4MzYyNTM2NDM2
NjFjZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExMiw3ICsxMTIs
NyBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6fldlYkZyYW1lTG9hZGVyQ2xpZW50KCkKIHsKIH0K
IAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25z
dAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQo
KSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAg
cmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCk7CkBAIC01NDEsNyArNTQxLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNv
bnN0IFJlc291cmNlRXJyb3ImIGUKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBtX2ZyYW1lLT5m
cmFtZUlEKCkpOworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLnRv
VUludDY0KCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+
IHVzZXJEYXRhOwogCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBp
ZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmss
ICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkOiAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5w
YWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAi
JXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZDogKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFn
ZUlEKCkudG9VSW50NjQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAgIFJlZlB0cjxBUEk6
Ok9iamVjdD4gdXNlckRhdGE7CiAKQEAgLTkwMSw3ICs5MDEsOSBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
TmF2aWdhdAogICAgIGlmIChyZXF1ZXN0ZXIuZnJhbWVJRCgpICYmIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKHJlcXVlc3Rlci5mcmFtZUlEKCkpKQogICAgICAgICBvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IHJlcXVlc3Rlci5mcmFtZUlEKCk7CiAKLSAgICB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCA9IHJlcXVlc3Rlci5wYWdlSUQoKSAmJiBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5wYWdlSUQoKSkgPyByZXF1ZXN0ZXIucGFn
ZUlEKCkgOiAwOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RDsKKyAgICBpZiAocmVxdWVzdGVyLnBhZ2VJRCgpICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJRCgpKSkKKyAgICAgICAgb3JpZ2luYXRpbmdQYWdlSUQg
PSByZXF1ZXN0ZXIucGFnZUlEKCk7CiAKICAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0
aW9uQWN0aW9uRGF0YTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSA9
IGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggZjczYWI4Y2E3M2YxNzhiZjI2OGZmMmI4NDFjNDUxY2RkNDk4ZmFhMy4uYzhmYjJhZjIxMjU2
NmM2NDY4NjA3N2EwYzg5YWY4MTA1MzkwYTY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseVRvRG9jdW1lbnRM
b2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQo
KSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggZTFl
OTNhNmRlMzQ2N2VmMTQwOTQ1MzQ2ZDhkYjRmZGQyNzM4NjcwMy4uOWU0NmQ4MDczYjM4MGU0MjU1
NGJlYzVmNDQ0ODEzZjRlNmY5MzZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXVzaW5nIFBhc3N3b3JkQ2FsbGJhY2tNYXAgPSBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYpPj47Cit1c2luZyBQYXNzd29yZENhbGxiYWNrTWFwID0gSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4+
Owogc3RhdGljIFBhc3N3b3JkQ2FsbGJhY2tNYXAmIHBhc3N3b3JkQ2FsbGJhY2tzKCkKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UGFzc3dvcmRDYWxsYmFja01hcD4gY2FsbGJhY2tNYXA7
CiAgICAgcmV0dXJuIGNhbGxiYWNrTWFwLmdldCgpOwogfQogCi1XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgdXRpLCB1aW50NjRfdCBwYWdlSUQpCitXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2ZpbGVOYW1l
IHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdl
SUQgfQpAQCAtODUsNyArODUsNyBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJl
cXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZXF1ZXN0
UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fZmlsZU5hbWUpLCBtX3Bh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVBhc3N3
b3JkKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVBhc3N3b3JkKGNvbnN0IFN0cmluZyYgcGFzc3dv
cmQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQocGFzc3dv
cmRDYWxsYmFja3MoKS5jb250YWlucyhwYWdlSUQpKTsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gcGFzc3dvcmRDYWxsYmFja3MoKS50YWtlKHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IGY5OTg2ZTQxY2EyZjI1MWRiMmMzZTVkODhlMDhk
ZjUwNjg1NDA0ZTguLmJlODg3YWQ4YTdmMGI2NTdkMWZhNDUxZDE4MzNjZjFjZDQ0YjUzNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zNSwxNiArMzUsMTYg
QEAgY2xhc3MgV2ViRnJhbWU7CiAKIGNsYXNzIFdlYlByZXZpZXdMb2FkZXJDbGllbnQgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6UHJldmlld0xvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJQcmV2aWV3TG9hZGVyQ2xpZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIHVpbnQ2NF90IHBhZ2VJRCkKKyAgICBzdGF0aWMgUmVm
PFdlYlByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUHJldmlld0xvYWRlckNsaWVudChmaWxl
TmFtZSwgdXRpLCBwYWdlSUQpKTsKICAgICB9CiAgICAgfldlYlByZXZpZXdMb2FkZXJDbGllbnQo
KTsKIAotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVQYXNzd29yZChjb25zdCBTdHJpbmcmLCB1
aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVQYXNzd29yZChjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
UHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IHV0aSwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFp
bCgpIG92ZXJyaWRlOwpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU3Ry
aW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwotICAgIGNvbnN0IHVpbnQ2
NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlE
OwogICAgIFF1aWNrTG9va0RvY3VtZW50RGF0YSBtX2RhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggMjc2YjgwYmYy
OGYxZjVmZDQ5YTZmMGZiNDk5ZDMzNTEyYWRjMTAxMC4uYzA3Mzk2ZjAyZjFmYTY1ZjQ1YWNlZTcy
ZjEzNGY0ZmIyZDllODkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtNjgsNyArNjgsNyBAQCBEcmF3aW5nQXJlYTo6RHJhd2lu
Z0FyZWEoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIERyYXdpbmdBcmVhSWRlbnRpZmllciBpZGVudGlm
aWVyLAogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3dlYlBhZ2Uod2Vi
UGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIH0KIAogRHJhd2luZ0FyZWE6On5EcmF3aW5nQXJlYSgp
CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgRHJhd2luZ0FyZWE6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cklmTmVlZGVkKCkKICAgICBpZiAobV9oYXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVyKQogICAgICAg
ICByZXR1cm47CiAgICAgbV9oYXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVyID0gdHJ1ZTsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggNjkxODMwYjU5M2M2N2Fk
MzNkNzdhMGU2OGM1NDdhNjMxYzVhYjZkNy4uY2FjMTg4YjM0YTJiNzU0MDI0MjkwN2MwNWMzOWY4
MjMzNzcxZTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAg
ICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFdmVu
dERpc3BhdGNoZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1ZS5nZXQoKSwgdGhpcyk7
CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0
LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9v
bCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVu
dChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9v
bCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQogewogI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIFBsYXRmb3Jt
V2hlZWxFdmVudCBwbGF0Zm9ybVdoZWVsRXZlbnQgPSBwbGF0Zm9ybSh3aGVlbEV2ZW50KTsKQEAg
LTE0Miw3ICsxNDIsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbgogfQogCiAjaWYgRU5BQkxF
KE1BQ19HRVNUVVJFX0VWRU5UUykKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXN0dXJlRXZlbnQo
dWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2
ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaXNwYXRjaEdlc3R1cmVFdmVudChwYWdlSUQsIGdlc3R1cmVFdmVudCk7CkBAIC0xNjMs
NyArMTYzLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmdldFF1ZXVlZFRvdWNoRXZlbnRzRm9y
UGFnZShjb25zdCBXZWJQYWdlJiB3ZWJQYWdlLCBUb3VjaEUKICAgICBkZXN0aW5hdGlvblF1ZXVl
ID0gbV90b3VjaEV2ZW50cy50YWtlKHdlYlBhZ2UucGFnZUlEKCkpOwogfQogCi12b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2Vi
VG91Y2hFdmVudCYgdG91Y2hFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiB0b3Vj
aEV2ZW50KQogewogICAgIGJvb2wgdXBkYXRlTGlzdFdhc0VtcHR5OwogICAgIHsKQEAgLTE5NCw3
ICsxOTQsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgdAogCiB2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cygpCiB7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgVG91Y2hF
dmVudFF1ZXVlPiBsb2NhbENvcHk7CisgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVG91Y2hF
dmVudFF1ZXVlPiBsb2NhbENvcHk7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigm
bV90b3VjaEV2ZW50c0xvY2spOwogICAgICAgICBsb2NhbENvcHkuc3dhcChtX3RvdWNoRXZlbnRz
KTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hUb3Vj
aEV2ZW50cygpCiB9CiAjZW5kaWYKIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hl
ZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQp
Cit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVs
RXZlbnQmIHcKIH0KIAogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi12b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaEdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVF
dmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
QEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJl
RXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotdm9pZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRS
ZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJFdmVudCYgZXZlbnQsIGJvb2wg
ZGlkSGFuZGxlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6c2VuZERpZFJlY2VpdmVFdmVu
dChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiBldmVudCwgYm9vbCBkaWRI
YW5kbGVFdmVudCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVu
dChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXZlbnQudHlwZSgpKSwgZGlkSGFuZGxlRXZlbnQpLCBw
YWdlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVu
dERpc3BhdGNoZXIuaAppbmRleCAxZDQ3Nzg3N2VhYWU0MDQ1MjZhMDc0NTFjMDcxODY5OTdhNTUw
ZTU0Li5lMWJiYmQ0Nzk2OWJmYmI3NTJjNjFkMjFjNjFhMjllZWZhZDk2MmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAogI2luY2x1ZGUgIldlYkV2
ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2hlZWxFdmVudERlbHRhRmlsdGVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC03NywzOCArNzgsMzggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZvaWQgd2hlZWxFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmLCBib29sIGNhblJ1YmJlckJhbmRBdExl
ZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBi
b29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSk7CisgICAgdm9pZCB3aGVlbEV2ZW50KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRv
cCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZF
TlRTKQotICAgIHZvaWQgdG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlRvdWNo
RXZlbnQmKTsKKyAgICB2b2lkIHRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVO
VFMpCi0gICAgdm9pZCBnZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0
dXJlRXZlbnQmKTsKKyAgICB2b2lkIGdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAogCiAgICAgLy8gVGhpcyBpcyBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50KHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYpOworICAgIHZvaWQgZGlzcGF0Y2hX
aGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50Jik7
CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBkaXNwYXRjaFRvdWNoRXZl
bnRzKCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQg
ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZl
bnQmKTsKKyAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKLSAgICB2b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlkSGFuZGxlRXZlbnQpOworICAgIHZvaWQgc2VuZERp
ZFJlY2VpdmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViRXZlbnQmLCBi
b29sIGRpZEhhbmRsZUV2ZW50KTsKICNlbmRpZgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1
ZTsKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgTG9jayBtX3Njcm9sbGluZ1Ry
ZWVzTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVk
U2Nyb2xsaW5nVHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZT4+IG1f
c2Nyb2xsaW5nVHJlZXM7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2hl
ZWxFdmVudERlbHRhRmlsdGVyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YUZpbHRlcjsKICNpZiBF
TkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBMb2NrIG1fdG91Y2hFdmVudHNMb2NrOwotICAg
IEhhc2hNYXA8dWludDY0X3QsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBUb3VjaEV2ZW50UXVldWU+IG1fdG91Y2hF
dmVudHM7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgppbmRleCA1ZTE1NDNj
OThjY2ZhNDE0MDFjMjc1MzhjNjI5OWY5YTU4MGYzNjdiLi5hZjkwNGI0NTE2YTEwOTgwODU0YzFh
MzQ0ZTYxMjJjZmQ3MTY0Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCkBAIC0yMSwxMSAr
MjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gRXZlbnREaXNwYXRjaGVyIHsK
LSAgICBXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2
ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQs
IGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKKyAg
ICBXaGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJX
aGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVy
QmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRB
dEJvdHRvbSkKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICBUb3VjaEV2ZW50KHVp
bnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorICAgIFRvdWNoRXZl
bnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQg
ZXZlbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIEdlc3R1
cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQor
ICAgIEdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6
V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggYjc1MmMxYzU0ZDQ2ZjA4
ZGRhNjY1YjVmMzU2NGQ1NDJhNjY1ZWNmNi4uYjI5MWRmMGI3ZGZkZjc5MzllN2RhYWU3MjM0MjAy
NjVkYjE5YzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbQpAQCAtNzUsNyArNzUsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3Qg
VwogICAgIC8vIEZJWE1FOiBXaGlsZSB1c2luZyB0aGUgaGlnaCBlbmQgb2YgdGhlIHJhbmdlIG9m
IERpc3BsYXlJRHMgbWFrZXMgYSBjb2xsaXNpb24gd2l0aCByZWFsLCBub24tUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEKICAgICAvLyBEaXNwbGF5SURzIGxlc3MgbGlrZWx5LCBpdCBpcyBub3Qg
ZW50aXJlbHkgc2FmZSB0byBoYXZlIGEgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgYW5kIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhCiAgICAgLy8gY29lZXhpc3QgaW4gdGhlIHNhbWUg
cHJvY2Vzcy4KLSAgICB3ZWJQYWdlLndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSB3ZWJQYWdlLnBhZ2VJRCgpKTsKKyAgICB3ZWJQYWdl
LndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCkgLSB3ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogfQogCiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYTo6flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKCkKQEAgLTQzNCw3ICs0MzQs
NyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAg
UmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IGJhY2tpbmdTdG9yZUZsdXNoZXIgPSBCYWNraW5n
U3RvcmVGbHVzaGVyOjpjcmVhdGUoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKSwgV1RGTW92ZShjb21taXRFbmNvZGVyKSwgV1RGTW92ZShjb250ZXh0c1Rv
Rmx1c2gpKTsKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3Jl
Rmx1c2hlcjsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAg
ICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQoKTsKICAgICBkaXNwYXRjaF9hc3luYyht
X2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3Jl
Rmx1c2hlciksIHBhZ2VJRF0gewogICAgICAgICBiYWNraW5nU3RvcmVGbHVzaGVyLT5mbHVzaCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBk
YXRlRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
VXBkYXRlRGlzcGF0Y2hlci5jcHAKaW5kZXggYzNhOTUyNTY1MzI2ZTc0OWU1MjYxMTMyYjA0NGFh
NTg4ODAyYzA0Zi4uNWNmNDQ0MDdlM2ZiM2Y2N2EwMzQ3MDAzZDA0NzhkNzQxOTkzMjQzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3Bh
dGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRh
dGVEaXNwYXRjaGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRj
aGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAg
ICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3
VXBkYXRlRGlzcGF0Y2hlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0
aGlzKTsKIH0KIAotdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5m
byYgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbykKK3ZvaWQgVmlld1VwZGF0ZURpc3BhdGNo
ZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2libGVDb250ZW50UmVj
dFVwZGF0ZUluZm8pCiB7CiAgICAgYm9vbCB1cGRhdGVMaXN0V2FzRW1wdHk7CiAgICAgewpAQCAt
NzUsNyArNzUsNyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjp2aXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBWaXNpYgogCiB2b2lkIFZpZXdVcGRhdGVE
aXNwYXRjaGVyOjpkaXNwYXRjaFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSgpCiB7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgVXBkYXRlRGF0YT4gdXBkYXRlOworICAgIEhhc2hNYXA8UGFnZUlkZW50
aWZpZXIsIFVwZGF0ZURhdGE+IHVwZGF0ZTsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKCZtX2RhdGFNdXRleCk7CiAgICAgICAgIHVwZGF0ZSA9IFdURk1vdmUobV9sYXRlc3RVcGRh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1Vw
ZGF0ZURpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdV
cGRhdGVEaXNwYXRjaGVyLmgKaW5kZXggZTQ3ZGM0ZTFkNDE2ODIyMzQwYWZhZGVhMmEzYzgwNjIw
ZjRiMjA4OC4uY2E3ZDIwMGMyYmNmNjVlNzdiODBhMjlkZmFjMTk0M2VjMmRkNDE0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNo
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlz
cGF0Y2hlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCiAj
aW5jbHVkZSAiVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNDcsNyArNDgsNyBAQCBwcml2
YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mKTsKKyAgICB2b2lk
IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3Qg
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYpOwogCiAgICAgdm9pZCBkaXNwYXRjaFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZSgpOwogCkBAIC01OCw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIExvY2sgbV9kYXRhTXV0ZXg7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgVXBkYXRlRGF0YT4gbV9sYXRlc3RVcGRhdGU7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVXBkYXRlRGF0YT4gbV9sYXRlc3RVcGRhdGU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4K
aW5kZXggMTdlMmM4ZGQxODZhZDI3NmU1NThhY2M4ODBjMjY4OGQ1MDM1OGZlNi4uZDkyZWViODg5
ZDA5NTcyYTFkMjI2ZTgzYzdjZTEzZjU5NjEwMjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIu
bWVzc2FnZXMuaW4KQEAgLTIxLDUgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMg
LT4gVmlld1VwZGF0ZURpc3BhdGNoZXIgewotICAgIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSh1
aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyB2aXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKQorICAgIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlSW5mbyB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0
UHJveHkuY3BwCmluZGV4IDIxMWQ2MDFlZjBiNDRmNTJhYTJkZTk2M2U4NDUzZjg2YzUyZjhmZDQu
LjdhMGMwYzgwZmU4Y2M2MDExNjkzZDdiNDUyN2FiZWM3ZTllNWU3NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExp
c3RQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIElEVG9IaXN0b3J5SXRlbU1hcCYg
aWRUb0hpc3RvcnlJdGVtTWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi12b2lkIFdlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCB1aW50NjRfdCBw
YWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0pCit2b2lk
IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlz
dGluZ0l0ZW0pCiB7CiAgICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWlyIHNob3VsZCBub3QgYWxy
ZWFkeSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQob3ZlcndyaXRlRXhpc3Rp
bmdJdGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZ
ZXMgfHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlz
dFByb3h5LmgKaW5kZXggZjNiMWM4YWY1NDgyM2MzZTgyNjhkNmFlNThlNDBhNmY2MTU0ZDA4MS4u
ZDFiYWFkYjkxYzU1ODYxYjE1NDNiOTcxNzY0ODYyYjVkMjIzOTc3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNv
cmUvQmFja0ZvcndhcmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9Owot
ICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgdWludDY0X3QgcGFn
ZUlELCBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0pOworICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nl
c3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE92ZXJ3cml0ZUV4aXN0
aW5nSXRlbSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDE2MGVkZWZkNTlkMTBhMDIz
ZTRhZjI1MWJlMmIxYTliMmE5OGIyZDUuLjczOGJlOTJiOTJkYzczZDJkZjY3N2VlMzRlYzEzMDgx
YTYwZjFhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29va2llSmFyLmNwcApAQCAtMzgsNiArMzgsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIGNsYXNzIFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CiAgICAgLy8gTmV0
d29ya1N0b3JhZ2VTZXNzaW9ucyBhcmUgYWNjZXNzZWQgb25seSBpbiB0aGUgTmV0d29ya1Byb2Nl
c3MuCiAgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTQ5LDcgKzUxLDcgQEAgV2ViQ29v
a2llSmFyOjpXZWJDb29raWVKYXIoKQogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7
CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkucGFnZUlEKCk7CkBAIC02Niw3ICs2OCw3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6
OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29u
c3QKIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC04Myw3ICs4NSw3IEBAIGJvb2wgV2ViQ29va2llSmFy
Ojpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2Vj
dXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+
IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpT
ZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAg
ICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0g
ZmFsc2U7CkBAIC05NSw3ICs5Nyw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhCiBib29sIFdl
YkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAppbmRleCA5N2RkNzZmNjY0YzNmNTUzYWRm
YzhlNzZiYjg1ZWEzZjExMWU1MTFlLi41NTliZDBlNTBiYmVjMzVmZmIyNTZiOTEyYjdiNDZkYTk5
NGIyZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGNvb2tpZXMoV2Vi
Q29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldENv
b2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykgZmluYWw7CiAgICAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpE
b2N1bWVudCYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
UEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0Fj
Y2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25J
RCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNv
bnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA4OTBjNWU1NmFjMDRjZTczZjQ1
ZWUwN2Q5NzgzNTFmZDMxY2FhNTIxLi40YWY0OTVhNTFiOTAzNzI2ZjNiYjY0YzNhNGRlMzE1MWQ5
OWZiYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTGlzdGVuZXJJ
RCgpCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShXZWJQ
YWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKQogewogICAgIGF1dG8gZnJhbWUg
PSBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PihzdGF0aWNfY2Fz
dDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCZjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSkp
OwotICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZy
YW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVNYWluRnJhbWUoZnJhbWUtPmZyYW1lSUQo
KSkpOwogCiAgICAgZnJhbWUtPm1fY29yZUZyYW1lID0gY29yZUZyYW1lOwogICAgIGZyYW1lLT5t
X2NvcmVGcmFtZS0+dHJlZSgpLnNldE5hbWUoU3RyaW5nKCkpOwpAQCAtMTIxLDcgKzEyMSw3IEBA
IFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2Uq
IHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVT
dWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7CiAgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShz
dGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKLSAgICBwYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlE
KCkpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBhdXRvIGNv
cmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUocGFnZS0+Y29yZVBhZ2UoKSwgb3duZXJFbGVtZW50LCBm
cmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudC5nZXQoKSk7CiAgICAgZnJhbWUtPm1fY29yZUZyYW1l
ID0gY29yZUZyYW1lLnB0cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IGM5NjUyZTk0YWY4NmI2MGU3ZmRlNzM2MjVk
MTFiNWFiY2VhNGM5ZGEuLmJjZmY4ZTJhODk2ZmYwMmU4MjUxNjUyNzgxMTliZDFmZWI0NjIxZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
clVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJ
KFdlYlBhZ2UmIHBhZ2UpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJs
aXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRl
clRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmVz
dGFibGlzaENvbm5lY3Rpb24oUGFnZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIs
IGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiB7CiAgICAgbV9pbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIG1fZnJv
bnRlbmRBUElEaXNwYXRjaGVyLnJlc2V0KCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQogICAgIGlmIChtX2Zyb250ZW5kSG9zdCkKICAgICAg
ICAgbV9mcm9udGVuZEhvc3QtPmRpc2Nvbm5lY3RDbGllbnQoKTsKIAotICAgIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIgPSAwOworICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSB7IH07
CiAgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKaW5kZXggODM4MWJmMWNlZGVjYjY1YzVk
NDc0NzVjMjJiN2QzZGI2MmZiZmQ4ZS4uOTQyNGJmZTFmMjZjZmRjMTY5MDdjNzgxZmVmNGQ2ZDA1
YzVlY2UyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JVSS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKSBvdmVycmlkZSB7IGNsb3NlV2lu
ZG93KCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JVSSBtZXNzYWdlcwotICAg
IHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmll
ciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCk7CisgICAgdm9pZCBl
c3RhYmxpc2hDb25uZWN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKTsKICAg
ICB2b2lkIHVwZGF0ZUNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKQEAg
LTEzMyw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIC8vIGNvcmVQYWdlKCksIHNpbmNlIHdlIG1h
eSBuZWVkIGl0IGFmdGVyIHRoZSBmcm9udGVuZCdzIHBhZ2UgaGFzIHN0YXJ0ZWQgZGVzdHJ1Y3Rp
b24uCiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciogbV9mcm9udGVuZENvbnRyb2xs
ZXIgeyBudWxscHRyIH07CiAKLSAgICB1aW50NjRfdCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
IHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXI7CiAgICAgYm9vbCBtX3VuZGVyVGVzdCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvY2tp
bmdVbmF2YWlsYWJsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzVmlzaWJsZSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLm1lc3NhZ2VzLmluCmluZGV4IGRlYTBmZTU4NGQ0ZWYwZjg2ZmE5NzE2NjJiYjQ3
YjQxYTdmNjEzYmYuLjQzMTkwYWE4MzRkY2FhNjY5NjRiYmJhOTU1MDA4MjFmYjdkNjEwMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJIHsKLSAgICBFc3RhYmxpc2hDb25uZWN0aW9uKHVp
bnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQg
aW5zcGVjdGlvbkxldmVsKQorICAgIEVzdGFibGlzaENvbm5lY3Rpb24oV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25l
ZCBpbnNwZWN0aW9uTGV2ZWwpCiAgICAgVXBkYXRlQ29ubmVjdGlvbigpCiAKICAgICBBdHRhY2hl
ZEJvdHRvbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDc2ZjdjNWNiZjkwYzU1ZDM2NzM5Nzk0YzRlZTJjOTZjMTY3MjNiMDguLjhiMGIzMzgx
YmE5ZDFjYjAwYWYxY2Q1ZTRkNGZlMGMwMjc5ZTQ0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAgcHJpdmF0ZToK
IAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCB3
ZWJQYWdlQ291bnRlciwgKCJXZWJQYWdlIikpOwogCi1SZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3Jl
YXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCitSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgUmVmPFdlYlBh
Z2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKSk7CiAKQEAgLTM3MCw3ICszNzAsNyBAQCBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRl
KHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogICAg
IHJldHVybiBwYWdlOwogfQogCi1XZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX3ZpZXdTaXplKHBhcmFtZXRlcnMu
dmlld1NpemUpCiAgICAgLCBtX2Fsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyIHsgcGFyYW1l
dGVycy5hbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciB9CkBAIC04MzEsNyArODMxLDcgQEAg
SVBDOjpDb25uZWN0aW9uKiBXZWJQYWdlOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0
CiAKIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gcGFnZUlEKCk7CisgICAgcmV0dXJuIHBhZ2VJRCgpLnRvVUludDY0KCk7
CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZv
aWQgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IEJhY2tGb3J3YXJkSXRlbUlkCiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAK
LSAgICBMT0coTG9hZGluZywgIkluIFdlYlByb2Nlc3MgcGlkICVpLCBXZWJQYWdlICUiIFBSSXU2
NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFjay9mb3J3YXJkIFVSTCAlcyIsIGdldEN1cnJlbnRQcm9j
ZXNzSUQoKSwgbV9wYWdlSUQsIGl0ZW0tPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIExPRyhMb2FkaW5nLCAiSW4gV2ViUHJvY2VzcyBwaWQgJWksIFdlYlBhZ2UgJSIgUFJJdTY0
ICIgaXMgbmF2aWdhdGluZyB0byBiYWNrL2ZvcndhcmQgVVJMICVzIiwgZ2V0Q3VycmVudFByb2Nl
c3NJRCgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBpdGVtLT51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIAogICAgIEFTU0VSVCghbV9wZW5kaW5nTmF2aWdhdGlvbklEKTsKICAgICBtX3Bl
bmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CkBAIC0yMDc2LDcgKzIwNzYsNyBAQCBi
b29sIFdlYlBhZ2U6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IGlmICghdmlldyB8fCB2aWV3LT5maXhlZExheW91dFNpemUoKSA9PSBzaXplKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIHNldEZpeGVkTGF5b3V0U2l6ZSAiIDw8IHNp
emUpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFn
ZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBzZXRGaXhlZExheW91dFNpemUgIiA8PCBz
aXplKTsKICAgICB2aWV3LT5zZXRGaXhlZExheW91dFNpemUoc2l6ZSk7CiAKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpeGVkTGF5b3V0U2l6ZURpZENoYW5nZShzaXplKSk7CkBA
IC0yNTA0LDcgKzI1MDQsNyBAQCBjb25zdCBXZWJFdmVudCogV2ViUGFnZTo6Y3VycmVudEV2ZW50
KCkKIHZvaWQgV2ViUGFnZTo6ZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbiBy
ZWFzb24pCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlBh
Z2UgKFBhZ2VJRD0lbGx1KSAtIEFkZGluZyBhIHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJl
ZTsgY3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3
KCkpOworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1f
bGF5ZXJUcmVlRnJlZXplUmVhc29ucy5hZGQocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJl
YUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBAIC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFdl
YlBhZ2U6OmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogdm9p
ZCBXZWJQYWdlOjp1bmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29u
KQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQYWdlIChQ
YWdlSUQ9JWxsdSkgLSBSZW1vdmluZyBhIHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJlZTsg
Y3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkp
OworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1fbGF5
ZXJUcmVlRnJlZXplUmVhc29ucy5yZW1vdmUocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJl
YUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBAIC0zMTY4LDcgKzMxNjgsNyBAQCB2b2lkIFdl
YlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogCiB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5
U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxs
YmFja0lEPiYgY2FsbGJhY2tJRHMpCiB7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3Rh
dGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IHBhZ2VJRCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0
ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0
YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBwYWdlSUQoKS50b1VJbnQ2NCgpIDw8ICIgc2V0
QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOwogCiAgICAgYXV0byBjaGFuZ2Vk
ID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKICAgICBtX2FjdGl2aXR5U3RhdGUg
PSBhY3Rpdml0eVN0YXRlOwpAQCAtMzE3Niw3ICszMTc2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRB
Y3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRl
LCBBY3QKICAgICBpZiAoY2hhbmdlZCkKICAgICAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwog
Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BhZ2UsICJzZXRBY3Rpdml0eVN0YXRlIGNhbGxl
ZCBvbiAlIiBQUkl1NjQgIiBidXQgV2ViQ29yZSBwYWdlIHdhcyBudWxsIiwgcGFnZUlEKCkpOwor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wYWdlLCAic2V0QWN0aXZpdHlTdGF0ZSBjYWxsZWQg
b24gJSIgUFJJdTY0ICIgYnV0IFdlYkNvcmUgcGFnZSB3YXMgbnVsbCIsIHBhZ2VJRCgpLnRvVUlu
dDY0KCkpOwogICAgIGlmIChtX3BhZ2UpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uU2V0
PEFjdGl2aXR5U3RhdGU6OkZsYWc+PiBjdXJyZW50bHlDaGFuZ2luZ0FjdGl2aXR5U3RhdGUgeyBt
X2xhc3RBY3Rpdml0eVN0YXRlQ2hhbmdlcywgY2hhbmdlZCB9OwogICAgICAgICBtX3BhZ2UtPnNl
dEFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZSk7CkBAIC00MzM5LDcgKzQzMzksNyBAQCB2b2lk
IFdlYlBhZ2U6Om1haW5GcmFtZURpZExheW91dCgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpIHsKICAgICAg
ICAgSW50U2l6ZSBuZXdDb250ZW50U2l6ZSA9IGZyYW1lVmlldy0+Y29udGVudHNTaXplKCk7Ci0g
ICAgICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAi
IDw8IG1fcGFnZUlEIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXpl
IHRvICIgPDwgbmV3Q29udGVudFNpemUpOworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJs
ZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIg
bWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVu
dFNpemUpOwogICAgICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNT
aXplKG5ld0NvbnRlbnRTaXplKSkKICAgICAgICAgICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNo
YW5nZWQoKTsKICAgICB9CkBAIC01NzQyLDcgKzU3NDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZENv
bW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgIAogICAgIGJvb2wgdmlld3BvcnRDaGFuZ2Vk
ID0gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwg
IldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIGRpZENvbW1pdExvYWQgc2V0dGluZyBjb250ZW50
IHNpemUgdG8gIiA8PCBjb3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkpOworICAgIExP
R19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFn
ZUlELnRvVUludDY0KCkgPDwgIiBkaWRDb21taXRMb2FkIHNldHRpbmcgY29udGVudCBzaXplIHRv
ICIgPDwgY29yZUZyYW1lLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKICAgICBpZiAobV92aWV3
cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNTaXplKGNvcmVGcmFtZS0+dmlldygpLT5jb250
ZW50c1NpemUoKSkpCiAgICAgICAgIHZpZXdwb3J0Q2hhbmdlZCA9IHRydWU7CiAKQEAgLTYwNTYs
NyArNjA1Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2VuZEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICAv
LyBJZiB0aGF0IGlzIHRoZSBjYXNlLCBqdXN0IHNlbmQgd2hhdCB3ZSBoYXZlIChpLmUuIGRvbid0
IGluY2x1ZGUgcG9zdC1sYXlvdXQgZGF0YSkgYW5kIHdhaXQgdW50aWwgdGhlCiAgICAgLy8gbmV4
dCBsYXllciB0cmVlIGNvbW1pdCB0byBjb21wdXRlIGFuZCBzZW5kIHRoZSBjb21wbGV0ZSBFZGl0
b3JTdGF0ZSBvdmVyLgogICAgIGF1dG8gc3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSwgcGFnZUlE
KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2Vk
KHN0YXRlKSk7CiAKICAgICBpZiAoc3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAg
ICAgIHNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCk7CkBAIC02MjM3LDcgKzYyMzcsNyBA
QCB2b2lkIFdlYlBhZ2U6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQ
STo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIAogdm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZUlnbm9y
aW5nRnVsbHlTeW5jaHJvbm91c01vZGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkpKSwgcGFnZUlEKCksIElQ
Qzo6U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5jaHJvbm91c01vZGUpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEo
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdl
Qm9keSkpKSwgSVBDOjpTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6cG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JiByZXR1cm5EYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGFkN2NkOGQzMWRlZGI3NDVlODg0Mjc4MTgxZjM2ZTczNmNjODAyOGQu
LmZiYTA2YzQ5ZGJiYjRmNDNkZjkyN2RiNTY4NWVlYjVlMzA5MmQ4MDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemVIYXNoLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BvaW50ZXJJRC5oPgpAQCAtMjc0
LDcgKzI3NSw4IEBAIHVzaW5nIFdLRXZlbnRNb2RpZmllcnMgPSB1aW50MzJfdDsKIAogY2xhc3Mg
V2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRs
ZVBhZ2U+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYWdlPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworCiAgICAgdmlydHVh
bCB+V2ViUGFnZSgpOwogCiAgICAgdm9pZCByZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJik7CkBAIC0yODQsNyArMjg2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBXZWJQYWdlKiBmcm9tQ29yZVBhZ2UoV2ViQ29yZTo6UGFnZSopOwogCiAgICAgV2ViQ29yZTo6
UGFnZSogY29yZVBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KLSAgICB1aW50
NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQo
KTsgfQogICAgIGJvb2wgdXNlc0VwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7IH0KIApAQCAtMTE3MSw3ICsxMTczLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKICAgICAgICAgY2FuY2VsR2VzdHVyZXNCbG9j
a2VkT25TeW5jaHJvbm91c1JlcGxpZXMoKTsKLSAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1v
dmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX3BhZ2VJRCwgU2Vjb25kczo6aW5maW5pdHko
KSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQp
OworICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBs
eSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRm
b3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIpOwpAQCAtMTIwNCw3ICsxMjA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNl
cklzSW50ZXJhY3RpbmcoYm9vbCB1c2VySXNJbnRlcmFjdGluZykgeyBtX3VzZXJJc0ludGVyYWN0
aW5nID0gdXNlcklzSW50ZXJhY3Rpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBXZWJQYWdlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCiAg
ICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKQEAgLTE1OTEsNyArMTU5Myw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29t
bWl0dGluZ0xvYWQoKTsKIAotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBh
Z2U+IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdl
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0LmNwcAppbmRleCBkOTZhN2Q3ZGRhOWYyNmQxYzY1NmExNWNiODNkMDNjZjIwNGE3YTM4
Li5iNzc5OWI0ZmJiOGI1NWNiNjZiNjIyMjdhNmE2NWYzYWIxMmNhMDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0LmNwcApAQCAtNDEsNyArNDEsNyBAQCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjpXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0KFdlYlBhZ2UmIHBhZ2UpCiAKIFN0cmluZyBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0OjppZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZygi
cGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJwYWdlLSIs
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBjaGFubmVsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVk
U3VyZmFjZVdheWxhbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9B
Y2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgKaW5kZXggM2I3M2U0OGE3N2U2ZDU3NzAwMTU0MmJk
NmQyOGNjMWY1MDg4MzNlYy4uZmZmYjQ2NDgzZmM1NTJmMmU3OTQ4NTg5ZDFlN2Q5YTZlZWJkN2M1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2Vs
ZXJhdGVkU3VyZmFjZVdheWxhbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICB+QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCgpID0gZGVmYXVsdDsKIAogICAg
IHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDY0X3Q+KG1fd2luZG93KTsgfQotICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsgfQorICAgIHVpbnQ2NF90IHN1
cmZhY2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKXRvVUlu
dDY0KCk7IH0KICAgICB2b2lkIGNsaWVudFJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRQYWludE1pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9saWJ3cGUvQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuY3Bw
CmluZGV4IDk4M2I5MzE5YjI4NDk2NzY2ODhjYTY3MDVlMjc0ODU0OTJmZmFiZWQuLmI4OWRmYTgw
NDFmYjI2ZDZmY2JlZjdkZThiNDRkNmU4YTA0M2FmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRl
ZFN1cmZhY2VMaWJXUEUuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHVpbnQ2NF90IEFjY2VsZXJhdGVk
U3VyZmFjZUxpYldQRTo6d2luZG93KCkgY29uc3QKIAogdWludDY0X3QgQWNjZWxlcmF0ZWRTdXJm
YWNlTGliV1BFOjpzdXJmYWNlSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX3dlYlBhZ2UucGFn
ZUlEKCk7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpOwogfQogCiB2
b2lkIEFjY2VsZXJhdGVkU3VyZmFjZUxpYldQRTo6Y2xpZW50UmVzaXplKGNvbnN0IEludFNpemUm
IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCmluZGV4
IDMwMWIxMzllMWQyYzE2ZDg5YTJhYjg5M2NmODU1NzEwNzNkOGY1MWEuLjZiN2VjNWIxNmYyY2E2
YTA2MjYxMzhmMWZmMDk3ZDBiNTI5MTUyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC0yNiwxMyArMjYsMTUgQEAKICNpZm5kZWYgV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2VfaAogI2RlZmluZSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZV9oCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIH0KIAogQGludGVyZmFjZSBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZSA6IE5TT2JqZWN0IHsKICAgICBXZWJLaXQ6OldlYlBh
Z2UqIG1fcGFnZTsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBtX3BhZ2VJRDsKICAgICBpZCBtX3BhcmVudDsKICAgICBib29sIG1faGFzTWFpbkZy
YW1lUGx1Z2luOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
Lm1tCmluZGV4IDNkM2YzNTU1M2U2ZDRmYmVhNTU2NTM0NzgwODg4MDY5MTBmMDUwMDkuLjYxNjVh
MDFmZTYwODI0OGZkZTNiOTYwZjc4OTQ1MTM5MjM3MWRmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTE0OCw3ICsxNDgsNyBAQCAtICh2b2lk
KXNldFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSopcGFnZQogICAgICAgICBhdXRvKiBmcmFtZSA9
IHBhZ2UtPm1haW5GcmFtZSgpOwogICAgICAgICBtX2hhc01haW5GcmFtZVBsdWdpbiA9IGZyYW1l
ICYmIGZyYW1lLT5kb2N1bWVudCgpID8gZnJhbWUtPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1l
bnQoKSA6IGZhbHNlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fcGFnZUlEID0gMDsKKyAgICAg
ICAgbV9wYWdlSUQgPSB7IH07CiAgICAgICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gZmFsc2U7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDVj
ZTY5Y2NmODMzNGM5ZDhkMDg4YzIxMjhlNGYzNGM2Y2ZhZWFkZDguLjYxNzRiMGEzYmIwYjM3NGFl
OTg0ZDNhYjFiZDhiZjIzNzNiZDU3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAg
ICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlZChXVEZNb3ZlKHN0YXRpc3RpY3MpKSwgMCk7CiAgICAgfSk7CiAKLSAgICBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lckNhbGxiYWNrKFt0aGlzXSAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBv
cGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4pIHsKKyAg
ICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKFt0aGlzXSAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRl
bnRpZmllciBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21h
aW4pIHsKICAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0
U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKHNlc3Npb25JRCwgZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzLCBvcGVuZXJQYWdlSUQsIG9wZW5lckRvbWFpbiksIDApOwogICAgIH0pOwogI2VuZGlm
CkBAIC02NjcsMTYgKzY2NywxNiBAQCBXZWJQYWdlKiBXZWJQcm9jZXNzOjpmb2N1c2VkV2ViUGFn
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAgICAgCi1XZWJQYWdlKiBXZWJQcm9jZXNzOjp3
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK1dlYlBhZ2UqIFdlYlByb2Nlc3M6OndlYlBh
Z2UoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIHJldHVybiBtX3BhZ2VNYXAu
Z2V0KHBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBX
ZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5
IHRvIGNoZWNrIGZvciBwYWdlIGV4aXN0ZW5jZSBoZXJlIHNpbmNlIGR1cmluZyBhIHdpbmRvdy5v
cGVuKCkgKG9yIHRhcmdldGVkCiAgICAgLy8gbGluaykgdGhlIFdlYlBhZ2UgZ2V0cyBjcmVhdGVk
IGJvdGggaW4gdGhlIHN5bmNocm9ub3VzIGhhbmRsZXIgYW5kIHRocm91Z2ggdGhlIG5vcm1hbCB3
YXkuIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPj46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7CisgICAgYXV0byByZXN1bHQg
PSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7CiAgICAgYXV0byBvbGRQYWdlSUQgPSBw
YXJhbWV0ZXJzLm9sZFBhZ2VJRCA/IHBhcmFtZXRlcnMub2xkUGFnZUlELnZhbHVlKCkgOiBwYWdl
SUQ7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSk7CkBAIC02OTMsNyArNjkzLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpj
cmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmEKICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQobV9wYWdlTWFw
LmNvbnRhaW5zKHBhZ2VJRCkpOwogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uKQogCiAjZW5k
aWYKIAotdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZSh1aW50NjRf
dCwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpCit2b2lk
IFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFBhZ2VJZGVudGlmaWVyLCBP
cHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCkKIHsKICAgICBp
ZiAoY2hhbmdlZCAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKICAgICAgICAg
dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb246OlZpc2liaWxpdHlI
YXNDaGFuZ2VkKTsKQEAgLTE2MjQsMTMgKzE2MjQsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZW5k
UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFVSTCYgdXJsKQogICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkQ29sbGVjdFByZXdh
cm1JbmZvcm1hdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6
OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSksIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3M6
OnBhZ2VEaWRFbnRlcldpbmRvdyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnBh
Z2VEaWRFbnRlcldpbmRvdyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgbV9wYWdlc0lu
V2luZG93cy5hZGQocGFnZUlEKTsKICAgICBtX25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVy
LnN0b3AoKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2
NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGFnZVdpbGxMZWF2ZVdpbmRvdyhQYWdlSWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgbV9wYWdlc0luV2luZG93cy5yZW1vdmUocGFnZUlEKTsK
IApAQCAtMTY3Myw3ICsxNjczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjplbmFibGVQcml2YXRlQnJv
d3NpbmdGb3JUZXN0aW5nKGJvb2wgZW5hYmxlKQogICAgIGlmIChlbmFibGUpCiAgICAgICAgIGVu
c3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAKLSAg
ICBWZWN0b3I8dWludDY0X3Q+IHBhZ2VJRHM7CisgICAgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSURzOwogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcCkgewogICAgICAgICBpZiAo
cGFnZS52YWx1ZSkKICAgICAgICAgICAgIHBhZ2VJRHMuYXBwZW5kKHBhZ2Uua2V5KTsKQEAgLTE4
NTMsNyArMTg1Myw3IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05l
dHdvcmsoKQogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNz
Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0
X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCit2b2lkIFdlYlByb2Nl
c3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50
NjRfdCBwYWdlR3JvdXBJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKIHsKICAg
ICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhl
IGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJv
Y2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBT
V0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29u
bmVjdGlvbiBhcyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDUy
NWRmMTgzZjIyNjE1ZTRkOGU4OTlmNGU4OWVmNDg1YTdiYTc4MWMuLjE4NTdjZWEwZWQ5ZDlmYThj
MjEwNjk2ZjA5ODc2NzhiYmE0MjlmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lmIFBMQVRG
T1JNKE1BQykKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KQEAgLTE0NSw5
ICsxNDYsOSBAQCBwdWJsaWM6CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNv
bm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQo
KTsgfQogCi0gICAgV2ViUGFnZSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OwotICAg
IHZvaWQgY3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJik7Ci0gICAgdm9pZCByZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBwYWdlSUQpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
IGNvbnN0OworICAgIHZvaWQgY3JlYXRlV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFM
OjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBXZWJQYWdlKiBmb2N1
c2VkV2ViUGFnZSgpIGNvbnN0OwogCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVuZGxl
KCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQpAQCAtMTk5LDggKzIw
MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKIAotICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KHVp
bnQ2NF90IHBhZ2VJRCk7Ci0gICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBh
Z2VJRCk7CisgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3coV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyhXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cik7CiAKICAgICB2b2lkIG5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmlyZWQoKTsKIApA
QCAtMjE5LDcgKzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlUGFnZXMo
KTsKICAgICB2b2lkIGdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCBwYWdlQWN0aXZpdHlT
dGF0ZURpZENoYW5nZSh1aW50NjRfdCBwYWdlSUQsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKKyAgICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZz4gY2hhbmdlZCk7CiAKICAgICB2b2lkIHNldEhpZGRlblBhZ2VET01UaW1lclRo
cm90dGxpbmdJbmNyZWFzZUxpbWl0KGludCBtaWxsaXNlY29uZHMpOwogCkBAIC0zNTksNyArMzYw
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVp
bnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNzaW9u
SUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogI2VuZGlmCiAK
QEAgLTQ2MCw3ICs0NjEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5Pj4gbV9wYWdlR3JvdXBNYXA7CiAgICAgUmVmUHRyPElu
amVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwogCkBAIC01MTQsNyArNTE1LDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgbV9wcm9jZXNzSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCi0gICAg
SGFzaFNldDx1aW50NjRfdD4gbV9wYWdlc0luV2luZG93czsKKyAgICBIYXNoU2V0PFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBtX3BhZ2VzSW5XaW5kb3dzOwogICAgIFdlYkNvcmU6OlRpbWVyIG1f
bm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXI7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U+IG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGIzOWIz
OGMxODNjNjYzMjdkNDJlNmVkZmYxNzZiYmExYzljYWJiMTIuLjU3YTI2NTYzNDVmYmU5ZDMzMGRm
NjU1ZTM1MmMzOWJlYTUyYjQ1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
KHN0cnVjdCBXZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMp
CiAKICAgICAjIENyZWF0ZSBhIG5ldyBwYWdlLgotICAgIENyZWF0ZVdlYlBhZ2UodWludDY0X3Qg
bmV3UGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMpCisgICAgQ3JlYXRlV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBuZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
cGFnZUNyZWF0aW9uUGFyYW1ldGVycykKIAogICAgIFByZXdhcm1HbG9iYWxseSgpOwogICAgIFBy
ZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oc3RydWN0IFdlYkNvcmU6OlByZXdhcm1JbmZvcm1h
dGlvbiBwcmV3YXJtSW5mb3JtYXRpb24pCkBAIC0xMTEsNyArMTExLDcgQEAgbWVzc2FnZXMgLT4g
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgc3RydWN0IFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Np
b25JRCkKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
c3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQg
aW5pdGlhbFNlc3Npb25JRCkKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggMGJkOTBhZjkxODc4NjQ0MTA0NTNlYTFiYWYxZWNmNjAy
MzNjYjA5Ni4uMGU5NDI5NjA0OWU2YzA4N2FiNmU4ZjBjNWViZmU0YzFhMmUyYzA3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNo
U2Vzc2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjCiAKICAg
ICAvLyBOYW1lc3BhY2UgSURzIGZvciBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlcyBhcmUgZXF1
aXZhbGVudCB0byB3ZWIgcGFnZSBJRHMKICAgICAvLyBzbyB3ZSBjYW4gZ2V0IHRoZSByaWdodCBw
YWdlIGhlcmUuCi0gICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UobV9zdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJ
ZGVudGlmaWVyVHlwZT4obV9zdG9yYWdlTmFtZXNwYWNlSUQpKTsKICAgICBpZiAoIXdlYlBhZ2Up
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCBmYzY1OTg2MzI1MmJmZTRm
YThjMWUxMjliOWFlOGU4MzBmYWY3ODhhLi43NjVlZmY0MDRiMDllZDAwY2NlMWRkOWVhN2I1NjA1
NjI5Y2I1ZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29j
b2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtCiAgICAgYWRkQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdl
ckNvbnRleHRJZCk7CiAKICAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdl
KCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OlNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQobV9jb250cm9sc01hbmFnZXJD
b250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdl
cldpdGhJRChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQpAQCAtMjkxLDcg
KzI5MSw3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRy
b2xzTWFuYWdlcigpCiAgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSAwOwogCiAgICAg
bV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDbGVhclBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDbGVhclBsYXliYWNrQ29udHJvbHNN
YW5hZ2VyKCkpOwogfQogCiB1aW50NjRfdCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjb250ZXh0
SWRGb3JNZWRpYUVsZW1lbnQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50
KQpAQCAtMzE4LDI3ICszMTgsMjcgQEAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFBsYXliYWNrQ29udHJvbHNFbGVtZW4KIAogdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpkdXJhdGlvbkNoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBkb3VibGUgZHVyYXRpb24pCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChjb250ZXh0SWQsIGR1cmF0aW9u
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChjb250ZXh0SWQsIGR1cmF0aW9u
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFRpbWVDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGlt
ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6Q3VycmVudFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRp
bWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q3VycmVudFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgY3Vy
cmVudFRpbWUsIGFuY2hvclRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpidWZmZXJlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVk
VGltZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6QnVmZmVyZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpCdWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVyZWRU
aW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cGxheWJhY2tTdGFydGVk
VGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgcGxheWJhY2tTdGFydGVkVGlt
ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY29udGV4dElkLCBwbGF5YmFja1N0YXJ0
ZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2VkKGNv
bnRleHRJZCwgcGxheWJhY2tTdGFydGVkVGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OnJhdGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlpbmcs
IGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UmF0ZUNoYW5nZWQoY29udGV4dElkLCBpc1BsYXlpbmcs
IHBsYXliYWNrUmF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0SWQs
IGlzUGxheWluZywgcGxheWJhY2tSYXRlKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2Vi
Q29yZTo6VGltZVJhbmdlcyYgdGltZVJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmllZFRpbWUsIGRv
dWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwpCkBAIC0zNDksMzcgKzM0OSwzNyBAQCB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIGNvbnN0IFdlYgogICAgICAgICBkb3VibGUgZW5kID0gdGltZVJhbmdlcy5yYW5nZXMoKS5l
bmQoaSkudG9Eb3VibGUoKTsKICAgICAgICAgcmFuZ2VzVmVjdG9yLmFwcGVuZCh7IHN0YXJ0LCBl
bmQgfSk7CiAgICAgfQotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpTZWVrYWJsZVJhbmdlc1ZlY3RvckNoYW5nZWQoY29udGV4dElkLCBXVEZN
b3ZlKHJhbmdlc1ZlY3RvciksIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZhbCks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpTZWVrYWJsZVJhbmdlc1ZlY3RvckNoYW5nZWQoY29udGV4dElk
LCBXVEZNb3ZlKHJhbmdlc1ZlY3RvciksIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRl
cnZhbCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNhblBsYXlGYXN0UmV2
ZXJzZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewotICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDYW5QbGF5RmFz
dFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q2Fu
UGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjb250ZXh0SWQsIHZhbHVlKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVp
bnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0
aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFn
ZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRp
b25zLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBj
b25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxl
Y3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0
SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZElu
ZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxQbGF5YmFj
a0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFBsYXliYWNrU2Vzc2lv
bk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcgbG9j
YWxpemVkRGV2aWNlTmFtZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNr
U2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFuZ2VkKGNv
bnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdldFR5cGUpLCBsb2Nh
bGl6ZWREZXZpY2VOYW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkV4dGVybmFsUGxheWJhY2tQcm9w
ZXJ0aWVzQ2hhbmdlZChjb250ZXh0SWQsIGVuYWJsZWQsIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0
YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNlTmFtZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0X3QgY29u
dGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uSW5k
ZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpB
dWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCkp
OwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVjdGlv
bkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgp
CiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVjdGVk
SW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFu
Z2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDVkNjExMGI3OTA5
ZjM0Y2NlM2U3NjJiZmQzOGQyYjJmNzIxZDUyMTYuLjcwNjYzOTc3Mzc5YjViMWJmNTk3YzVkOGRl
YjJhZDQ2YzNmNmI1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2Nv
YS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxl
bWVudChIVE1MVmlkZW9FbGVtZW4KICAgICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250
ZXh0KCktPnNldFJvb3RMYXllcih2aWRlb0xheWVyKTsKICAgICB9CiAKLSAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVu
V2l0aElEKGNvbnRleHRJZCwgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRl
eHRJRCgpLCB2aWRlb1JlY3QsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW50ZXJmYWNl
LT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBzdGFuZGJ5KSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVyZmFj
ZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3BhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxsb3dz
UGljdHVyZUluUGljdHVyZSwgc3RhbmRieSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRNTFZp
ZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50KQpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJD
b3JlOjpIVE1MVmlkCiAgICAgICAgIHJldHVybjsKIAogICAgIGludGVyZmFjZS5zZXRJc0FuaW1h
dGluZyh0cnVlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkLCBpbmxpbmVWaWRlb0ZyYW1lKHZp
ZGVvRWxlbWVudCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElk
LCBpbmxpbmVWaWRlb0ZyYW1lKHZpZGVvRWxlbWVudCkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB0YXJnZXRNb2RlKQpAQCAtMzI0LDcg
KzMyNCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVl
blRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6CiAKICAgICBpbnRlcmZhY2Uuc2V0VGFy
Z2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRpb25U
b01vZGUoY29udGV4dElkLCB0YXJnZXRNb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxs
c2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShjb250ZXh0SWQsIHRhcmdldE1vZGUpKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKHZpZGVvRWxlbWVudCk7CiAgICAgVU5VU0VEX1BBUkFNKHRh
cmdldE1vZGUpOwpAQCAtMzM2LDEzICszMzYsMTMgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjoK
IHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aGFzVmlkZW9DaGFuZ2VkKHVpbnQ2NF90IGNv
bnRleHRJZCwgYm9vbCBoYXNWaWRlbykKIHsKICAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlk
ZW8oY29udGV4dElkLCBoYXNWaWRlbyksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlk
ZW8oY29udGV4dElkLCBoYXNWaWRlbykpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBGbG9h
dFNpemUmIHZpZGVvRGltZW5zaW9ucykKIHsKICAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0VmlkZW9E
aW1lbnNpb25zKGNvbnRleHRJZCwgdmlkZW9EaW1lbnNpb25zKSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29udGV4dElkLCB2aWRlb0RpbWVuc2lvbnMpKTsKIH0K
IAogI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OgpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVz
dFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4dElkKQogCiAgICAgYXV0byYgbW9kZWwg
PSBlbnN1cmVNb2RlbChjb250ZXh0SWQpOwogICAgIEludFJlY3QgaW5saW5lUmVjdCA9IGlubGlu
ZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxlbWVudCgpKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SW5saW5lUmVjdChjb250ZXh0
SWQsIGlubGluZVJlY3QsIGlubGluZVJlY3QgIT0gSW50UmVjdCgwLCAwLCAwLCAwKSksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpTZXRJbmxpbmVSZWN0KGNvbnRleHRJZCwgaW5saW5lUmVjdCwgaW5saW5l
UmVjdCAhPSBJbnRSZWN0KDAsIDAsIDAsIDApKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKQEAg
LTM3OCw3ICszNzgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RWaWRl
b0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgbW9kZWwtPnNldFZpZGVvRnVs
bHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlz
KSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAgICAgICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3Rl
Y3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJ
ZCwgdHJ1ZSksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAg
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpT
ZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIHRydWUpKTsKICAgICAgICAgfSk7CiAg
ICAgfSk7CiB9CkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
OjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgICAgICAg
ICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3By
b3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFu
YWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSwgcHJv
dGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFz
VmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRl
eHRJZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
dGhpcywgY29udGV4dElkXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0g
ICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+
cGFnZUlEKCkpOworICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9KTsK
ICNlbHNlCiAgICAgQ0FMYXllciogdmlkZW9MYXllciA9IGludGVyZmFjZS0+bGF5ZXJIb3N0aW5n
Q29udGV4dCgpLT5yb290TGF5ZXIoKTsKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAg
ICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRU
aGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAg
ICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNj
cmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAg
ICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgICAgICB9KTsKICAgICB9KTsK
ICNlbmRpZgpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6
d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIo
dGhpcyksIHZpZGVvRWxlbWVudCA9IFdURk1vdmUodmlkZW9FbGVtZW50KSwgY29udGV4dElkXSB7
CiAgICAgICAgIHZpZGVvRWxlbWVudC0+d2lsbEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgICAgIGlm
IChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRU
b0V4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlE
KCkpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihjb250
ZXh0SWQpKTsKICAgICB9KTsKIH0KIApAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQs
IGludGVyZmFjZV0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRo
aXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxs
c2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0pOwogI2Vsc2UKICAgICBtb2RlbC0+d2FpdEZvclBy
ZXBhcmVkRm9ySW5saW5lVGhlbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNv
bnRleHRJZCwgaW50ZXJmYWNlLCBtb2RlbF0gKCkgbXV0YWJsZSB7CkBAIC00OTgsNyArNDk4LDcg
QEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRf
dCBjb250ZXh0SWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UtPnNldExheWVy
SG9zdGluZ0NvbnRleHQobnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRU
aGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTU1NSw3ICs1NTUsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRfdCBj
b250ZXh0SWQsIGJvbwogCiAgICAgaWYgKCFpc1BhZ2VWaXNpYmxlKQogICAgICAgICBtb2RlbC52
aWRlb0VsZW1lbnQoKS0+c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoZmFsc2UpOwotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJl
ZFRvUmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCB0cnVlLCBpbmxpbmVWaWRlb0ZyYW1lKCptb2Rl
bC52aWRlb0VsZW1lbnQoKSkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVyblRv
SW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVt
ZW50KCkpKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFJvdXRl
U2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQodWludDY0X3QgY29udGV4dElkLCBNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENvbnRl
eHRVSUQ6OkFzeW5jUmVwbHkmJiByZXBseSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IDJlMTkwYjAzNWY3MjgwYjFmYmVkYjNh
ZjAwMWU2OTU4YzQyMDIxMTYuLmI5Y2U3OWQyNzRjNDEyN2JhNzhmNTRhNTJmNjM3ZTk1ZTg1MWY2
YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNz
Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3ND
b2NvYS5tbQpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBOU1VSTCAqb3JpZ2luKFdlYlBhZ2Um
IHBhZ2UpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZXRhaW5QdHI8TlNB
cnJheTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhhc2hNYXA8dWludDY0
X3QsIFJlZlB0cjxXZWJQYWdlPj4mIHBhZ2VNYXApCitzdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk8
TlNTdHJpbmcgKj4+IGFjdGl2ZVBhZ2VzT3JpZ2lucyhjb25zdCBIYXNoTWFwPFBhZ2VJZGVudGlm
aWVyLCBSZWZQdHI8V2ViUGFnZT4+JiBwYWdlTWFwKQogewogICAgIFJldGFpblB0cjxOU011dGFi
bGVBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlT3JpZ2lucyA9IGFkb3B0TlMoW1tOU011dGFibGVB
cnJheSBhbGxvY10gaW5pdF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAKaW5kZXggNjFlNmE3ZWM4ZDgw
ZTUxNDJiOGFkM2U2NzVjODM2ZTJjYjA1NTM5OS4uYmYyNWUxMDZkN2MxNzljN2NiNTM1YzJjMzNj
ODJiNzg5NjQyYmExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2d0ay9X
YXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9ndGsvV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2b2lk
IFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6YmluZFN1cmZhY2VUb1BhZ2Uoc3RydWN0IHdsX3N1
cmZhY2UqIHN1cmZhY2UsIFdlYgogICAgIGlmICghbV93ZWJraXRndGspCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHdsX3dlYmtpdGd0a19iaW5kX3N1cmZhY2VfdG9fcGFnZShyZWludGVycHJldF9j
YXN0PHN0cnVjdCB3bF93ZWJraXRndGsqPihtX3dlYmtpdGd0ay5nZXQoKSksIHN1cmZhY2UsIHBh
Z2UucGFnZUlEKCkpOworICAgIHdsX3dlYmtpdGd0a19iaW5kX3N1cmZhY2VfdG9fcGFnZShyZWlu
dGVycHJldF9jYXN0PHN0cnVjdCB3bF93ZWJraXRndGsqPihtX3dlYmtpdGd0ay5nZXQoKSksIHN1
cmZhY2UsIHBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgd2xfZGlzcGxheV9yb3VuZHRy
aXAobV9kaXNwbGF5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9XZWJD
b3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktpdExl
Z2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4IDk4
NzJjMzFiYTU4NGQ3MWRhMTU5MTFiNDU4ZjUxMTFkMWE3OTFjMWYuLjc5NjAyNGM4Y2U0OWE1YWNm
YThiMWZiNjU4NGZhYjgzMDU5NGNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
V2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAK
QEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZQogICAgIFJlc291cmNl
SGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGZyYW1lTG9hZGVyLm5ldHdvcmtpbmdD
b250ZXh0KCksIHJlcXVlc3QsIG9wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25zOjpD
cmVkZW50aWFsczo6T21pdCA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRf
dCAvKndlYlBhZ2VJRCovKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VMb2Fk
Q29tcGxldGVkKFBhZ2VJZGVudGlmaWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIvU291
cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aAppbmRleCA1NWIzNjk3NTMwNjU4MjE0YmM5NzlhODc5MmI2NjA3MjZkODI5NmRkLi41ZjYyZjc3
N2FhNzliMDA3NTU3M2U1YWZjY2M1NmQyZTYzNTUyZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkUmVzb3VyY2Uo
V2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4mJik+
JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXZWJDb3JlOjpG
cmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OkZldGNo
T3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYpIGZpbmFs
OwotICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSBmaW5hbDsK
KyAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBmaW5h
bDsKIAogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7CiAg
ICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9vbCkg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxMzg1NTgzYWYyOWQxNzQ0MTNk
NTA1Nzk1YWZhOTViNWM4ODk2NmJiLi5iMTQwM2QwNTYzOTNiMzk3ZDAxN2QwOTNkZTVmZTA0Y2Rj
Y2E4Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCkgZmluYWw7CiAgICAgYm9vbCBo
YXNXZWJWaWV3KCkgY29uc3QgZmluYWw7IC8vIG1haW5seSBmb3IgYXNzZXJ0aW9ucwogCi0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4
IDdmODY5ZjFkZGNiOWExOTA4MGFhYjIwMDVmOWJmNzMyYWU4N2RkZGYuLjdlYmEzYTk4YWEzZGE5
MDY2ZGZiN2M1YjkyMmQxMDkxMGIxNDIxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CkBAIC0yMDksNyArMjA5LDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9hZGVy
Q2xpZW50KFdlYkZyYW1lICp3ZWJGcmFtZSkKIHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZp
ZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNWM1ODEz
ZjkxYzFlZDA4N2M3ZDgyNDYxNDRhNmU1YmVlZDkwNDgwNy4uMmJjZjI2MjY5ZTEwODRjNGQ3MmY4
NDRhNzMxZTU5NTZlZTJlN2Y4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApAQCAt
MTIyLDcgKzEyMiw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVyRGVz
dHJveWVkKCkKIHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzMjJjMDkwMDVhYTVlZTU3M2I0
ZDcwMmQ2ZTFkYjI1MDYwNWQxYjVmLi42OTc1ZmQ4YTNmNmFhNTg3OTVlODY2OWY2ODY2Y2NmYzUy
MTBkODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFdlYkNv
cmU6OlBsdWdpblZpZXcmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQo
KSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFn
ZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBjb25z
dCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370698</attachid>
            <date>2019-05-27 10:52:28 -0700</date>
            <delta_ts>2019-05-27 11:57:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198206-20190527105223.patch</filename>
            <type>text/plain</type>
            <size>510607</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyNjVhYmRkMGVkYTI2ZTdmMWEyZDlk
NGZjNGVmMTJhYjVhM2M5OTguLmQwNGI5MzQwZmVhYWZiN2I5MTkyZDg2ODQ4NzYyNDM0OTgwOWVh
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZv
ciBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAq
IHd0Zi9PYmplY3RJZGVudGlmaWVyLmg6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPDwpOgorCiAy
MDE5LTA1LTIzICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBVc2UgdGFyZ2V0IG9yaWVudGVkIGRlc2lnbiBmb3IgYm1hbGxvYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDYyYTNlZWM4NGYxMmY5NjUyZjIzMDI5MjNiMTU0MzY2Mjg0M2Q2MjAuLmY5NWYxZjhl
M2NhZjg1NmMzMGZmMTcxMDYyMDM2MjJjNWFkYzhiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogV2ViQ29yZS8qOgorCiAyMDE5
LTA1LTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IE1vdmUgR3JhcGhpY3NMYXllckNBOjphZGp1c3RUaWxlZExheWVyVmlzaWJsZVJlY3QoKSB0byBU
aWxlQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYzIyODAyMGI1MzU3N2IyY2U0ZTJjMjNmZGQyMTky
YmE5YjYwZjc2Li5hZTA4ZWYzY2ZlMWNlNDUyNmI4OWRjMzVhNWNlZjYxZmZjN2ExM2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgc3Ryb25nbHktdHlwZWQgaWRlbnRpZmllciBmb3Ig
cGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODIwNgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBX
ZWJLaXQvKjoKKwogMjAxOS0wNS0yNyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtQb2ludGVyIEV2ZW50c10gVGVzdCBhdCBwb2ludGVyZXZlbnRzL2lvcy90
b3VjaC1hY3Rpb24tbm9uZS1pbi1vdmVyZmxvdy1zY3JvbGxpbmctdG91Y2guaHRtbCB0aW1lcyBv
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMWRkNTRlYWZhMzdmZDZiZDYxNzY3OTI4N2EzODVi
YmE0MDk0NjU4NS4uZTFkMzJmZTQ3ZWI3YjNjMTE3NTU4ZmZiYWE4NTYwZGExODVjZjk2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlk
ZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAy
MDE5LTA1LTE3ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBVc2UgYnVpbHRpbiBGaW5kSUNVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggZDYwZjM1OGVmMGY2MWJmYTBlMGNjN2QyMGEyMGFiZjRjODA0NWE1MS4uNmRhYzgwYzhl
ZGM0MTEwNzJiZGE0MGIxMGZkOGYxOGMyMWZhYTJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgc3Ryb25nbHktdHlwZWQgaWRlbnRpZmllciBmb3Ig
cGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODIwNgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnBhZ2VJRCBjb25zdCk6CisKIDIwMTktMDUtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRHJvcHBlZCB0ZXh0LCBhdHRhY2ht
ZW50cywgYW5kIGltYWdlcyBzaG91bGQgYW5pbWF0ZSBpbnRvIHBsYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJ
ZGVudGlmaWVyLmgKaW5kZXggNDA4OTdiNTlkMDdhM2MwNTUwYWUyMzIzYzFjMTliYjI5NTMzOWZk
OC4uYjNiY2FkZDlkZDE5NWFiMzBiMThjZjFkYWQzMzUyMzExOTI1MjZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09i
amVjdElkZW50aWZpZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPG11dGV4PgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEyMiw2ICsxMjMsMTMgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoPE9iamVjdElkZW50aWZpZXI8VD4+IHsK
ICAgICB0eXBlZGVmIE9iamVjdElkZW50aWZpZXJIYXNoPFQ+IEhhc2g7CiB9OwogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgT2JqZWN0SWRlbnRpZmllcjxUPiYgaWRlbnRpZmllcikKK3sKKyAgICB0cyA8PCBpZGVudGlm
aWVyLnRvVUludDY0KCk7CisgICAgcmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IAogdXNpbmcgV1RGOjpPYmplY3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMjNj
YzVmMTBmMzVkNzlhOTgxNDhmZWQ3Y2IxMjhjYzdlY2RkNzA4My4uZTIyNmQ4ZmMyOGU3MjA4OWU5
MTYyOGNkNjQ5MmI4M2MyYjA0MGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC03NzcsNiArNzc3
LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uaAogICAgIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaAogICAgIHBhZ2Uv
UGFnZUdyb3VwLmgKKyAgICBwYWdlL1BhZ2VJZGVudGlmaWVyLmgKICAgICBwYWdlL1BhZ2VPdmVy
bGF5LmgKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCiAgICAgcGFnZS9QZXJmb3Jt
YW5jZUxvZ2dpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGU5NWE4ZjkzMGU0YzM4MTU5YzEyYWQ2M2QzYWJmOWFhM2NmNzA0
YjQuLjZlMTJjOWUwMzc5ZWE0NzA2ZDQzYTBkMDBjNTQwZDJmNjg3OWU4OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTgs
NiArMTIxOCw3IEBACiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0
RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9N
UmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZF
OENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk1
MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEEyMDdENjMyODAwQTdEMkREIC8q
IEFic3RyYWN0RE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTYyMDdENjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThG
MjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTcyMDdENjM0MDAwQTdEMkREIC8q
IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3RDYzMkMwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTc2MDUsNiArNzYwNiw3IEBACiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBE
T01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01S
ZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1
c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QjY1MERCMjI5NjI2MjcwMEZE
OEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYWdlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4
QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZCOTUxOEMyMDdENjMyOTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJl
bW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAyMDks
NiArMjAyMTEsNyBAQAogCQkJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAu
aCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVy
cmVyLmNwcCAqLywKIAkJCQk3QTY3NEJEQTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9h
ZERlZmVycmVyLmggKi8sCisJCQkJNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggKi8sCiAJCQkJMkQ1QzlDRkIxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5
LmNwcCAqLywKIAkJCQkyRDVDOUNGQzE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCAq
LywKIAkJCQkyRDVDOUNGRDE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9sbGVy
LmNwcCAqLywKQEAgLTMwNzcyLDYgKzMwNzc1LDcgQEAKIAkJCQk5MzAyQjBCRjBENzlGODJDMDBD
N0VFODMgLyogUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTY3NEJEQzBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NUI4MUNDNDFGQUE0NEJDMDAzN0QxRTYgLyogUGFnZUhlYXBBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUNCMDUyNDFGQjUxRjMzMDAwODlCOTcgLyogUGFnZU5ldHdvcmtBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QzlEMDAxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VP
dmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwMjE5QzdCNTJFMDBCM0M1QzEgLyog
UGFnZU92ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmNwcAppbmRleCA3NjkxMmNhZWI4YTY0MGVkMTMzYWM0YWFmNGZhN2Q1YzI4OTdhZmEyLi4wZTdk
NTQyMDVjODM1NjdhYTY1ZTM2MGQ0N2FjMDUzM2EzMTUwZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29sYXRlZFRyZWUoKSk7
CiB9CiAKLVJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRpYWxpemVQYWdl
VHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYgY2FjaGUpCitSZWY8QVhJ
c29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjppbml0aWFsaXplUGFnZVRyZWVGb3JJRChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmIGNhY2hlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIHRyZWUgPSBjYWNoZS0+Z2VuZXJhdGVJ
c29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIFJlZlB0cjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEIHRy
ZWVJRCkKICAgICByZXR1cm4gdHJlZUlEQ2FjaGUoKS5nZXQodHJlZUlEKTsKIH0KIAotUmVmPEFY
SXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRf
dCBwYWdlSUQpCitSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tl
cihzX2NhY2hlTG9jayk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBB
WElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpCiAgICAg
cmV0dXJuIG5ld1RyZWU7CiB9CiAKLVJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OnRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKQorUmVmUHRyPEFYSXNvbGF0ZWRUcmVl
PiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoc19jYWNoZUxvY2spOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aAppbmRleCBjMDc1ZDViMDE2NzgxMjYwYzc2MDE5YjUwZTI2ZjYwNjAxOWRlMDNmLi42ZWVjMjY0
NTE5ODRmOGViYTg4ODRmNTljNTMzN2NlNTI2Y2Q5YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVF
KQogCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWVOb2RlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTQzLDkgKzQ0LDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZSgpOwogICAg
IHZpcnR1YWwgfkFYSXNvbGF0ZWRUcmVlKCk7CiAKLSAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRU
cmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQo
dWludDY0X3QgcGFnZUlELCBBWE9iamVjdENhY2hlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQp
OworICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFn
ZUlkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRy
ZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyLCBBWE9iamVjdENhY2hl
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJl
ZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlTm9kZT4gcm9vdE5vZGUoKTsKQEAg
LTcwLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVkVHJlZSgpOwogCiAgICAgc3Rh
dGljIEhhc2hNYXA8QVhJc29sYXRlZFRyZWVJRCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVJ
RENhY2hlKCk7Ci0gICAgc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFJlZjxBWElzb2xhdGVkVHJl
ZT4+JiB0cmVlUGFnZUNhY2hlKCk7CisgICAgc3RhdGljIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIs
IFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlUGFnZUNhY2hlKCk7CiAKICAgICAvLyBPbmx5IGFj
Y2VzcyBvbiBBWCB0aHJlYWQgcmVxdWVzdGluZyBkYXRhLgogICAgIEhhc2hNYXA8QVhJRCwgUmVm
PEFYSXNvbGF0ZWRUcmVlTm9kZT4+IG1fcmVhZGVyVGhyZWFkTm9kZU1hcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDFkNDMxNjZlZWMzMTczYzE0ODFlNGVjOTRhMzY2N2MxY2E3NDBiNzku
LmE4YTg0MDAyY2FlY2I1MWEzODYzZGViNjlhMGQ2NDM1NGNjODZkMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNzc3MCw3ICs3NzcwLDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2Vy
KCkKICAgICByZXR1cm4gKm1fbG9nZ2VyOwogfQogICAgIAotT3B0aW9uYWw8dWludDY0X3Q+IERv
Y3VtZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50
OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5wYWdlSUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggM2ZjNWEzMmYzODFlNjdmZDIw
OGFmMzEyNjcxNGQ0MjJhMGIzZWZkZC4uMTZkMDQxMGJiNjdkNGQ5OWYwNDU2N2VmMDE2YjYyZWEx
NmViMTdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1
ZGUgIk9yaWVudGF0aW9uTm90aWZpZXIuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgog
I2luY2x1ZGUgIlJlZ2lvbi5oIgpAQCAtNjM1LDcgKzYzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICAgdm9p
ZCBjbGVhckFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQo
KSBjb25zdDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7CiAg
ICAgLy8gdG8gZ2V0IHZpc3VhbGx5IG9yZGVyZWQgaGVicmV3IGFuZCBhcmFiaWMgcGFnZXMgcmln
aHQKICAgICB2b2lkIHNldFZpc3VhbGx5T3JkZXJlZCgpOwogICAgIGJvb2wgdmlzdWFsbHlPcmRl
cmVkKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxseU9yZGVyZWQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nvb2tpZUphci5jcHAKaW5kZXggYjFiZWQ4ZjAzMmY5Y2QyNzgxOTNlZWRjZmZjN2NmMTUzMTg5
NmIyNi4uMzNlMjc4NjM4MzY1NjkwZDE2ZDcyYjNkN2I1YmUwYmUyMDg1YjZjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RyaW5nIENvb2tpZUph
cjo6Y29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAg
IGF1dG8gaW5jbHVkZVNlY3VyZUNvb2tpZXMgPSBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhk
b2N1bWVudCwgdXJsKTsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAg
IGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBw
YWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xMTAsNyArMTEw
LDcgQEAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkgQ29va2llSmFyOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eShjb25zdCBEb2MKIHZvaWQgQ29va2llSmFyOjpzZXRDb29raWVz
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1l
SUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQg
PSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xMzEsNyArMTMxLDcgQEAg
Ym9vbCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nl
c3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6
OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNz
ZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpT
ZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9y
YWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGQ6OnBhaXI8U3RyaW5n
LCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdQogU3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
CiBib29sIENvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgY29va2llcykgY29uc3QKIHsKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDBkYjA3
YzZkMTJlOGQ5YmRhZmMzYzBhYmE2ZWU3MWE4OWJjMTk5NDcuLjI4MWY4NGM0OTAwNTI2N2VhMDU0
ZDUxZDc2OGE5ZWI3MzJjYmMyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb29r
aWVzKERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwog
CiAgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7
Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJl
Q29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6
OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBn
ZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4m
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50Jiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGYwYmI4NmRkZDUwOTll
MzExZDg5YTQ5YmUzYTNiZTQwNzdmNWU1Yi4uMWY3YTI5YzRiMzAxYTM2NTgyMmU0MjMzYjQxNWRk
MWMwMDE5MTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZnJh
bWVMb2FkZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6
bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVjMzkxMjdhMWFkNmMyNWUwZDM0
NmJlN2E0NjhjYjZlYTk4ZjNmYzkuLjA3NDg3NjExOGRjNjkxYWE3YzhhZGE5N2I3OTcxMzczM2Ey
OGE2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkxh
eW91dE1pbGVzdG9uZS5oIgogI2luY2x1ZGUgIkxpbmtJY29uLmgiCisjaW5jbHVkZSAiUGFnZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CkBAIC0xMjYsNyArMTI3LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciop
ID0gMDsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0ID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA4YTgyMzgxZjAxODE2NWU2NTNl
M2M0YjI1NGU1Njk3YjYzYzA5ZjcwLi40NWZlYjYzNWY3MGMzNWM5OWM3MTZkMzkxNDEyYTVmZDJk
MWRlZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNs
dWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kuaCIKQEAgLTU3LDcgKzU4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQg
TG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2Uo
RnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4mJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hy
b25vdXNseShGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29t
cGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9h
ZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZShSZXNvdXJjZUxvYWRlciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlciYsIGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uQWN0aW9uLmNwcAppbmRleCA3NzQ1MDAxZTc4YWM5N2JlMDI0YjIzZDQxMTBlYzRmZDI5
MGI3ZDNiLi5mMjZhOWFhZjJmZDc5NzRjZDNlNzFjODU5YWI0M2ZlZTIwZjgwM2ZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5hdmlnYXRpb25BY3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVz
dGVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fdXJsIHsgVVJMIHsgZG9jdW1l
bnQudXJsKCkgfSB9CiAgICAgLCBtX29yaWdpbiB7IG1ha2VSZWZQdHIoZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSkgfQotICAgICwgbV9wYWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZy
YW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5wYWdlSUQoKS52YWx1ZU9yKDApLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjx1aW50NjRfdCwgdWludDY0
X3Q+KDAsIDApIH0KKyAgICAsIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIgeyBkb2N1bWVudC5mcmFt
ZSgpID8gc3RkOjptYWtlX3BhaXIoZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pLCBkb2N1bWVudC5mcmFtZSgpLT5s
b2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjxQ
YWdlSWRlbnRpZmllciwgdWludDY0X3Q+KHsgfSwgMCkgfQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAppbmRleCAxYTQ0ZjkxZDM2ODFiODE0MDBlNzExMjdl
YTUyNzJjNzViZTRiZTA3Li5lZDdkMDljZjI4OTJiYjg0ZGYyZjI0OWIwNTE0NzVkOGRjNzM2Nzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCisjaW5jbHVkZSAi
UGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBA
IC02MywxNCArNjQsMTQgQEAgcHVibGljOgogICAgIE5hdmlnYXRpb25BY3Rpb24oTmF2aWdhdGlv
bkFjdGlvbiYmKTsKICAgICBOYXZpZ2F0aW9uQWN0aW9uJiBvcGVyYXRvcj0oTmF2aWdhdGlvbkFj
dGlvbiYmKTsKIAotICAgIHVzaW5nIFBhZ2VJREFuZEZyYW1lSURQYWlyID0gc3RkOjpwYWlyPHVp
bnQ2NF90IC8qIHBhZ2VJRCAqLywgdWludDY0X3QgLyogZnJhbWVJRCAqLz47CisgICAgdXNpbmcg
UGFnZUlEQW5kRnJhbWVJRFBhaXIgPSBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+OwogICAgIGNsYXNzIFJlcXVlc3RlciB7CiAgICAgcHVibGljOgogICAg
ICAgICBSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmKTsKIAogICAgICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICptX29yaWdpbjsgfQotICAgICAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZyYW1lSURQYWlyLmZp
cnN0OyB9CisgICAgICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KICAgICAgICAgdWludDY0X3QgZnJhbWVJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIuc2Vjb25kOyB9CiAgICAgcHJp
dmF0ZToKICAgICAgICAgVVJMIG1fdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggMTRiYzJmM2JlZWZhMmE2MDMyYTI2YzdkNmFkMmZj
ZmQ4N2I3Y2IyYi4uZmZhZGExYzQ1YmU0NjZiN2ZhZGNmZDA2OTEwMTMyNWVjYTM5ZDU1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRh
dGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFZlY3RvCiAgICAgbV9ub3RpZmljYXRpb25D
YWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9uQ2FsbGJhY2spOwogfQogCi12b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJh
Y2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3Bl
bmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxs
YmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVCghbV9yZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2spOwogICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CkBAIC0yMzQsNyArMjM0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJl
ZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVy
UGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCit2b2lkIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQp
CiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVuZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdp
c3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBvcGVuZXJVcmwgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggYzQ2NjFiMDQ3NjA3MzIwZmQ4
N2ZiYjNkYmJiODAzZTRkMTFkNGE0MS4uZGUxYzk0YTcyY2Q0NzFjY2Y3ZjgyYjVhMmNiYjkxNzdk
YjU2ODBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzQWN0
aXZpdHlSZWNvcmQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQo
VmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVpbnQ2NF90
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lk
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFBhZ2VJZGVudGlmaWVy
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldExvZ1VzZXJJbnRlcmFjdGlvbk5vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0TG9nV2ViU29ja2V0TG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNr
KEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxsVGltZSk+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TG9nU3VicmVzb3VyY2VMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4mJik7CkBAIC05NCwxMyArOTUsMTMgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3Rp
Y3MoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVu
ZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwOwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdURjo6V2FsbFRpbWU+
IG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwOwogICAgIEZ1bmN0aW9uPHZvaWQoVmVj
dG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwot
ICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNr
OwogICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJik+IG1fbG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dXZWJTb2NrZXRMb2FkaW5nTm90
aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1l
KT4gbV9sb2dTdWJyZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDE2ZDNmOWMxYWVkNWE3NWEwYTQ5Zjg0NWZlNDQxMDMw
MmRiNGUxN2YuLmFkNzA1ODgyYjEwMzNmMGMwMzJjZTcxMjFhNzdiNTE0MTIzM2JmMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNDg5LDggKzQ4OSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgPSAwOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJs
ZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZy
YW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIHVp
bnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8s
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOyB9CisgICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQq
LywgUGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZy
YW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50
NjRfdCAvKmZyYW1lSUQqLywgUGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaAppbmRleCAxNTZjOWNkMjA1ZDRjZjMyNGQ2ODFmOTc2
MTMyYzE2Y2UyZjE3NGQ0Li4wZDdiM2RiZjcyZjgxZTRmZDYyYTczZmVkMjU4MWNlYWVlMTY3YjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKQEAgLTI1
LDEzICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ly8gRnJhbWUgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQg
cHJvY2Vzc2VzLgogc3RydWN0IEdsb2JhbEZyYW1lSWRlbnRpZmllciB7Ci0gICAgdWludDY0X3Qg
cGFnZUlEOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICB1aW50NjRfdCBmcmFtZUlE
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9u
YWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxGcmFtZUlkZW50aWZpZXI6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBkZWNvZGVyID4+IHBhZ2VJRDsK
ICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGQ1ZjhkMjk3NTYzZWUwMjljNDEz
ZTljZGE3NDk0YzVmYTRkOGFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworZW51bSBQYWdlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGFnZUlkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkuaAppbmRleCAxMTU5MDUwY2QzMmM5M2NkM2IxMWNmMTMyMjU2
OWQ2NDFlNTBkNjM2Li5hNmY4MzY2NGNiMDE5NzI0NWFlYjdiYzhmMDQwOWY0ZWJiZWIwZWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2FtZVNpdGVJbmZvLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM4LDcgKzM5LDcgQEAgc3RydWN0IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5IHsKICAgICBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvOwog
ICAgIFVSTCB1cmw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzIHsgSW5jbHVk
ZVNlY3VyZUNvb2tpZXM6Ok5vIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC03MSw4ICs3MiwxMSBAQCBPcHRpb25hbDxDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk6
OmRlY29kZShEZQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmZyYW1lSUQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhZ2VJRCkpCisgICAgT3B0aW9uYWw8T3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBwYWdlSUQ7CisgICAgZGVjb2RlciA+PiBwYWdlSUQ7Cisg
ICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0
LnBhZ2VJRCA9ICpwYWdlSUQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggNDY1ZGE1N2JmMzg3Y2E1YmNmOWJiZWEy
NzJmMmMyNGZmMTI2NWRjYi4uN2EyN2ViNTM0MDZkNjE5MTliNTIwMTAwMzJiNTRhZGMxNTQ4MDg0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtNjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZv
ci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkg
Y29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hv
dWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51
cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0KICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hv
dWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVS
TCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSBjb25zdAogewogICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFy
dHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9t
YWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRv
bWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlE
KSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3JhbnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0
cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygp
IGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAgICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1w
dHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3Jh
bnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0K
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0g
bV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAgIGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1l
SUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNE
YXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9y
YWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwogICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nl
c3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAg
IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9
CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0
aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRS
ZXNvdXJjZS5hZGQocGFnZUlELCB0b0RvbWFpbik7CiB9CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKCkKICAgICBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0
TW9kZSA9IHRydWU7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK09wdGlvbmFsPFNlY29uZHM+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgfHwgIXBhZ2VJRCB8
fCBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmgKaW5kZXggODRkNGViNjZhNzQwNWU5YzY2Yzk0ZDY3YTgwOTE4YTA4ZDdkZGY3ZS4u
NThkYTg3ODkwN2ZmNzQwMjQ4YzNiMTU4NzRkOTEzMjk3OWE4ZDMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxT
dG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdpc3Ry
YWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29v
a2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRv
Y3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBj
b25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwzMCArMTM1LDMwIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5h
bWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVz
Rm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4s
IEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29v
a2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29u
c3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxv
Y2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMs
IGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVz
Rm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
Zmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWlu
dDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxs
U3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQgQEAgcHJpdmF0
ZToKICAgICBDcmVkZW50aWFsU3RvcmFnZSBtX2NyZWRlbnRpYWxTdG9yYWdlOwogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGll
bnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdDsKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGll
bnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvcjsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBIYXNoTWFwPHVpbnQ2NF90LCBSZWdpc3RyYWJsZURvbWFpbiwgRGVmYXVsdEhhc2g8
dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2
NF90Pj4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7Ci0g
ICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFi
bGVEb21haW4+LCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7
CisgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDx1aW50NjRfdCwgUmVnaXN0cmFi
bGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNz
OworICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4s
IFJlZ2lzdHJhYmxlRG9tYWluPj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwogICAgIE9w
dGlvbmFsPFNlY29uZHM+IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgeyB9
OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgeyB9
OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXNTaG9y
dCB7IH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRI
YXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
aW50NjRfdD4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291
cmNlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZ2lzdHJhYmxlRG9t
YWluPiBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsK
ICAgICBib29sIG1fbmF2aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlvblRlc3RNb2RlID0gZmFsc2U7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAppbmRleCA2
N2RmNzY0ZDJjNGFlNDVhOTY4NTk0NGFjNDIxNWNkNTUzYTJiMjUxLi4zMzBhYTYwODY2MTQwYjI0
ZDliNzA1MjM4M2E4MWNlY2Y5MGI5OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNG
TmV0V2luLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNv
b2tpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQogICAgIHJl
dHVybiBwYXJzZWRDb29raWVzOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFs
dWUpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlSUQpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zU2VjdXJl
Q29va2llcyhDRkFycmF5UmVmIGNvb2tpZXMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBA
IC0yNDAsNyArMjQwLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBj
b29raWVTdHJpbmcsIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0
CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gcG9saWN5ID09
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5
RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeUFsd2F5czsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURf
UEFSQU0ocGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4
IDYzNzQwMzUyYzRhNjI3ZWQ2ZmVlZDY5ZmZlYjA5ZDE5N2E4ODc0YzcuLjU1N2U5NzdiNGQ3MmFj
ODE5N2U5OWUyOTZlNGMyMTAwNzY3M2NjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbQpAQCAtMjk0LDcgKzI5NCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4g
ZmlsdGVyQ29va2llcyhOU0FycmF5ICp1bmZpbHRlcmVkQ29va2llcywgT3B0aW9uYWw8U2VjCiAg
ICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNG
b3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQp
CitzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJz
dFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCkBAIC0zMDcsNyArMzA3LDcgQEAgc3RhdGlj
IE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGYKIH0KIAogZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90
SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLXN0YXRpYyBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBP
bmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykKK3N0YXRpYyBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5
T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAKQEAgLTM2MywxMiArMzYzLDEyIEBAIHN0YXRp
YyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2ll
U3RvcmFnZSkKICAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQWxsQ29va2llcyhjb29raWVT
dG9yYWdlKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICByZXR1cm4g
Y29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2ll
cyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJl
Q29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcykgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIEluY2x1ZGVIVFRQT25s
eSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpAQCAtMzc4LDcgKzM3OCw3IEBAIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBoZWFk
ZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBo
ZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVs
ZFByb3h5LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVT
ZWN1cmVDb29raWVzKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0Cit2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7
CiAKQEAgLTQ0Myw3ICs0NDMsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
c0VuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
CiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcAppbmRleCAyYzExNTY4ZmNlNWIyODkxMjYwZGEzYmU5MWY4OTE3YzA4
NTEyN2E4Li4yOWI0MDA1MDI1MzMwMDc5YWY0NTcyYWI5ZGFjYTZjNWQ4M2ViMDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuY3BwCkBAIC01OSwxMCArNTksOSBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9u
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJl
dHVybiBjb29raWVzLnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKLSAgICBVTlVTRURfUEFS
QU0ocGFnZUlEKTsKIAogICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29v
a2llRGF0YWJhc2UoKTsKICAgICBjb29raWVKYXJEQi5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJs
LCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KTsKQEAgLTc0LDcgKzczLDcgQEAg
dm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3MKICAgICBjb29raWVKYXJEQi5zZXRDb29raWUoZmlyc3RQ
YXJ0eSwgdXJsLCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yayk7CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVzRm9yRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVT
RURfUEFSQU0ocGFnZUlEKTsKQEAgLTgzLDcgKzgyLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gQ29va2llSmFyQ3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24KICAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwsIGZhbHNlKSwgZmFsc2UgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2ll
SmFyQ3VybDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0xMTMsNyArMTEyLDcgQEAgYm9vbCBDb29raWVKYXJD
dXJsOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24p
IGNvbnN0CiAgICAgcmV0dXJuIHNlc3Npb24uY29va2llRGF0YWJhc2UoKS5pc0VuYWJsZWQoKTsK
IH0KIAotYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29s
IENvb2tpZUphckN1cmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBV
TlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaApp
bmRleCA4OTQxMDIzZjgwNjhlYTc0ODBiN2M1MGQ1Y2U2ZjhkZjU1Y2UyYjkzLi4yNGEwNWEyMjdh
ZTA2YWJhMTE0MzE1MmE4ZmFjODQ4MjllMDFmNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmgKQEAgLTI0LDYgKzI0LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CkBAIC00MSwxNSArNDIsMTUgQEAgZW51bSBjbGFzcyBDb29raWVBY2NlcHRQb2xp
Y3k7CiAKIGNsYXNzIENvb2tpZUphckN1cmwgewogcHVibGljOgotICAgIHN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIGNvbnN0OwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIElu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIENvb2tpZUFjY2VwdFBvbGljeSkgY29uc3Q7CiAgICAgQ29va2llQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBjb25zdDsKICAg
ICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIGNvbnN0
OwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dDsKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eSYpIGNvbnN0OwotICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OworICAgIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFZlY3RvcjxDb29raWU+JikgY29uc3Q7
CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIGhv
c3RuYW1lcykgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0
TmFtZXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5
NGM4NmFmZThmNzQwYWVkZDI4YWQ5NzI3Mjc1MWVlYmEzODQzMjMuLjY4NzJiMGFjOWIwMDE5ZGU1
ODNlYjI2OGM4Yzk0NTc5OWVmOTQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3Vy
bC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3QKIHsKICAgICBjb29raWVTdG9yYWdlKCkuc2V0Q29va2llc0Zyb21ET00o
KnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHZh
bHVlKTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNF
bmFibGVkKCp0aGlzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBy
ZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsK
IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENvb2tpZXMoY29uc3QgVVJMJikKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmdldFJhd0Nvb2tpZXMoKnRo
aXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJhd0Nv
b2tpZXMpOwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpmbHVzaENvb2tpZVN0b3JlKCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQg
dG8gdXNlLgogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDFmNzU4NzdhODJiMzE4Mzk0NzYxMTIzYmU2ZjU4
NWE0NzYxY2Y4OTYuLmY2NjQxZWZlYjQ0YzczNDM0ZTRkMTVhNGE1YWJlZGQ4NTZmMjBlNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29r
aWVzLCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFt
ZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBWZWN0
b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1
cmwpCiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIu
Z2V0KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9Q
QVJBTShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01MjIsNyAr
NTIyLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4gY29va2llc0ZvclNl
c3Npb24oKnRoaXMsIHVybCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQ
YXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDk2NjFi
YzQzN2U5ODU0MmI2YzVjMWQ2NjQ4OTZmNjAyODVhN2ZiM2QuLjU0MzkwMmZmNTM0ZWE1MGE0ZGVi
MDUxNjJjMmVlYjM1YmEyZDdkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNp
Zm5kZWYgUmVzb3VyY2VSZXF1ZXN0X2gKICNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2lu
Y2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
IgogI2luY2x1ZGUgIlVSTFNvdXAuaCIKIApAQCAtMzgsNyArMzksNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAg
ICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxh
Z3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5p
dGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDYsNyArNDYsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2Uo
dXJsLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkK
ICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3Nv
dXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwg
bV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01NCw3ICs1
Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQog
ICAgICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigw
KSkKLSAgICAgICAgICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTYzLDcgKzYx
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RC
YXNlKFVSTCgpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBv
bGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAg
LCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAg
ICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03
MSw3ICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VS
ZXF1ZXN0QmFzZShVUkwoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29s
Q2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAg
ICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0g
ICAgICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAg
ICB1cGRhdGVGcm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CkBAIC04MCw3
ICs3Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZShzb3VwVVJJVG9VUkwoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3QpKSwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAg
ICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxh
Z3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5p
dGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9tU291cFJl
cXVlc3Qoc291cFJlcXVlc3QpOwogICAgICAgICB9CkBAIC0xMDAsOCArOTUsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3Mgc291cE1lc3NhZ2VGbGFncygp
IGNvbnN0IHsgcmV0dXJuIG1fc291cEZsYWdzOyB9CiAgICAgICAgIHZvaWQgc2V0U291cE1lc3Nh
Z2VGbGFncyhTb3VwTWVzc2FnZUZsYWdzIHNvdXBGbGFncykgeyBtX3NvdXBGbGFncyA9IHNvdXBG
bGFnczsgfQogCi0gICAgICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCB7IHJl
dHVybiBtX2luaXRpYXRpbmdQYWdlSUQ7IH0KLSAgICAgICAgdm9pZCBzZXRJbml0aWF0aW5nUGFn
ZUlEKHVpbnQ2NF90IHBhZ2VJRCkgeyBtX2luaXRpYXRpbmdQYWdlSUQgPSBwYWdlSUQ7IH0KKyAg
ICAgICAgUGFnZUlkZW50aWZpZXIgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5pdGlhdGluZ1BhZ2VJRDsgfQorICAgICAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlSUQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKSB7IG1faW5pdGlhdGluZ1BhZ2VJRCA9IHBhZ2VJRDsgfQogCiAg
ICAgICAgIEdVbmlxdWVQdHI8U291cFVSST4gY3JlYXRlU291cFVSSSgpIGNvbnN0OwogCkBAIC0x
MTMsNyArMTA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hY2Nl
cHRFbmNvZGluZyA6IDE7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7Ci0g
ICAgICAgIHVpbnQ2NF90IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgUGFnZUlkZW50aWZp
ZXIgbV9pbml0aWF0aW5nUGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VN
ZW1iZXJzKFNvdXBNZXNzYWdlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3Nh
Z2VCb2R5KFNvdXBNZXNzYWdlKikgY29uc3Q7CkBAIC0xNjIsMTAgKzE1NywxMSBAQCBib29sIFJl
c291cmNlUmVxdWVzdDo6ZGVjb2RlV2l0aFBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zb3VwRmxhZ3MgPSBzdGF0aWNfY2FzdDxTb3Vw
TWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKTsKIAotICAgIHVpbnQ2NF90IGluaXRpYXRp
bmdQYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbml0aWF0aW5nUGFnZUlEKSkKKyAg
ICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBkZWNvZGVy
ID4+IGluaXRpYXRpbmdQYWdlSUQ7CisgICAgaWYgKCFpbml0aWF0aW5nUGFnZUlEKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2VJ
RDsKKyAgICBtX2luaXRpYXRpbmdQYWdlSUQgPSAqaW5pdGlhdGluZ1BhZ2VJRDsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDBmNmVhMTk3ODdhNDZj
NzQ3NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUuLjBlZDI1YjM3ZDVmODA4NzY4MTI1Mzg3NzA4OTBh
ZjliODhlOTM2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTE4Myw3ICsxODMsNyBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNv
dXBSZXF1ZXN0KSBjb25zdAogewogICAgIGlmIChtX2luaXRpYXRpbmdQYWdlSUQpIHsKICAgICAg
ICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1aW50NjRfdCo+
KGZhc3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSkpOwotICAgICAgICAqaW5pdGlhdGluZ1BhZ2VJ
RFB0ciA9IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgKmluaXRpYXRpbmdQYWdlSURQdHIg
PSBtX2luaXRpYXRpbmdQYWdlSUQudG9VSW50NjQoKTsKICAgICAgICAgZ19vYmplY3Rfc2V0X2Rh
dGFfZnVsbChHX09CSkVDVChzb3VwUmVxdWVzdCksIGdfaW50ZXJuX3N0YXRpY19zdHJpbmcoZ1Nv
dXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSksIGluaXRpYXRpbmdQYWdlSURQdHIsIGZhc3RG
cmVlKTsKICAgICB9CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0KSBjb25zdAogdm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21Tb3VwUmVxdWVzdChTb3VwUmVxdWVzdCogc291cFJl
cXVlc3QpCiB7CiAgICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2Fz
dDx1aW50NjRfdCo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBSZXF1ZXN0KSwgZ1Nv
dXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSkpOwotICAgIG1faW5pdGlhdGluZ1BhZ2VJRCA9
IGluaXRpYXRpbmdQYWdlSURQdHIgPyAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA6IDA7CisgICAgbV9p
bml0aWF0aW5nUGFnZUlEID0gbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBl
Pihpbml0aWF0aW5nUGFnZUlEUHRyID8gKmluaXRpYXRpbmdQYWdlSURQdHIgOiAwKTsKIH0KIAog
dW5zaWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAppbmRleCA4NzljMGIxOWU5NjZmMjk2OWJhMGFmNDc4YjZlODNlNjMwNWI5NDBiLi5iNjg5YzNl
MjVhZDgyM2VjZjZkMzA0ZWU3ODljYTlmMzQ1ZGEyZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3MTYs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3RvcmFn
ZUltbWVkaWF0ZWx5KCkKICAgICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQzLDcg
Kzc0Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywg
T3BlbmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9t
YWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwg
V1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsg
fSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURv
bWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChX
VEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQs
IHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlE
IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JF
YXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1l
SUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNzYwZDJhM2UxZWNi
ZGU4Yjc1ODUzNzU1ZTNhZTkwLi5iZmMyMzM5Njg1MzMyMDAyNjI2Nzg5NDMxYWUwNzNiMmQzOTc1
ZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlm
TmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQs
IE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9y
RG9tYWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpIG92ZXJyaWRlOwogCkBA
IC05MSw5ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVs
ZW1ldHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVE
b21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJv
b2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dV
c2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3
ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25l
ZCByZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNE
b21haW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBTdGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2
YWxlbnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMp
OwogICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0g
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BG
cmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0lu
dGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRU
b1ByZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFs
ZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVEYXRh
UmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwZWU3Zjk2Mzg5NDYx
NWRmZDEzNWIxODQwOTBiNTNmODFiZDlkZmY0Li5hNWYyNjI0ZTQzMzRjZTkwMzlmYWE1ZTJkMWU1
YzQxZmQwZDA4N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAgICAgICAgbV9w
ZXJzaXN0ZW50U3RvcmFnZS0+c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpZZXMpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlE
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIyNCw3
ICsyMjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgcwogICAgIH0pOwogfQogCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgRnJhbWVJRCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgRnJhbWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiBzdQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9w
ZW5lclBhZ2VJRCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4m
JiBvcGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyAhPSBvcGVuZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
Mjg3LDcgKzI4Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluCiAgICAgZ3JhbnRTdG9yYWdl
QWNjZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZN
b3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFn
ZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShz
dWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQs
IHByb21wdFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRv
cEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21w
dFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oCmluZGV4IDQ0ZWZiZjRkZWMxNGYyMDI3MDJhY2FkMDc3NjhmNWFjODIwYjgw
NWEuLjQ1ZjdlMWI3NTk2OTNjMTEwM2EzZDY2MjczMTZkNmZjZTAyZTRjZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmln
YXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNv
bnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJh
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1l
RG9tYWluJikgb3ZlcnJpZGU7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2ln
bmVkIHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFp
bihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21h
aW4+JiwgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVu
dChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVi
dWdNb2RlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3
OWNjMWYxYjk0NTYyMWI5YTA1NTI0ODRjMDk2YzUuLmQ3Nzk4YjI1ZDFlM2JiYmI3OGE4N2FiM2Ux
YTVhMzEzOWYxNGJhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKQEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWlu
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3Bl
bmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVy
UGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNp
bmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogICAgIAogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSgpOwpAQCAtMTEwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0
b3JhZ2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQ
YWdlSUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZv
aWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAgICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Rl
YnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH07CiAg
ICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQ
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1l
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZp
Z2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJv
bURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4
IDg3MWIxOWQyZjA3NDg2ZTBmNGJiNzYzYzY5ZGFhMWFhZmY4N2M5OTIuLjYyMjQzMGNkOGU0ZjA5
ZWNhZjhmYTM2OGEzODlmMGNhYjg3YzEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZl
Y3RvcjxXZWJDb3IKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3Vi
RnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
c3ViRnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CkBAIC0yOTgsMTIgKzI5OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcwog
ICAgIH0pOwogfQogCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
c291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBt
X25ldHdvcmtTZXNzaW9uID8gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCkuaGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlEKSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFu
ZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYm
IGNhbGxiYWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMxNSw3
ICszMTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUgogICAgIGNhbGxiYWNrKGZhbHNlKTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoc3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOjpObyk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBS
ZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGUK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWlu
Lmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVk
Q29weSgpLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMzk2LDcgKzM5
Niw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgfSk7CiB9CiAKLVN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00MDksNyAr
NDA5LDcgQEAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QKICAgICByZXR1cm4gaXNTdG9yYWdlR3Jh
bnRlZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxs
R3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hh
bmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAppbmRleCA4NzU5ZDYwMTY2YTU1MGVlNjlhNjJiMTcxZGVhODZmZTNhNDFiOTJmLi43
OWNmMjQ2MDFjMzJlNzA1Y2Q4YjQ1M2Y5MjNiZmQzNjYzMTE0ZDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNp
bmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04
Miw4ICs4Myw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2VzcyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFp
biA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9
IHVpbnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1l
SUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEw
NCw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNl
c0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwog
CkBAIC0xMTgsMTEgKzExNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFj
dGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURh
dGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVn
aXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdy
YW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
LSAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2
b2lkIHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lk
IGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3Jh
Z2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNj
ZXNzSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
T3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVB
bGxTdG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBj
YWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBW
ZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+Jik7Ci0gICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
cihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwg
UGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxI
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdv
cmtQcm9jZXNzKCk7CiAKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3Rp
ZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50
UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsK
IAogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlE
LCBPcGVuZXJEb21haW4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmlu
ZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5
NzE4MzZhZGE1YWU4Mjk3YjViNTc5MDZiYzkwNWMxODNjZWI2ZC4uNGQzZDE2OWY2YWY5ZjQzYjc2
MTA4MWNmYmZlNjBhZmM1YTM5M2ZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgICAgICBTdHJpbmcg
dXNlckFnZW50OwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7Ci0gICAgICAgIHVp
bnQ2NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwog
ICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCAzZDcxZjhmNmIxYjZjMjZkYjA1NTBmODhhYTVlZTExNDQyMTBh
OTA2Li45MmM4YjdhZTQ0ZmIzYjc3NGQ2YjA1OThjNDE5YzM4M2ZlYjA5MjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50
aWZpZXIKICAgICBBU1NFUlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBhZ2VM
b2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkK
IHsKICAgICBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHdlYlBhZ2VJRCk7
CiB9CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2kKICAgICBsb2Fk
ZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
IGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNz
aW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CiAgICAgYXV0byByZXN1bHQgPSBuZXR3
b3JrU3RvcmFnZVNlc3Npb24uY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBAIC01MjUsNyAr
NTI1LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRP
TShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29r
aWVTdHJpbmcpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNl
c3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24uc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKQEAgLTU0MiwxMyArNTQyLDEzIEBAIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZVNlc3Npb24o
bmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5jb29raWVzRW5hYmxlZCgpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9u
KG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZp
cnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpn
ZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHJlc3VsdDsK
ICAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmdldFJhd0Nv
b2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVz
dWx0KTsKQEAgLTYzOCwxMyArNjM4LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVT
dG9yYWdlQWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0
d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhw
YWdlSUQpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlCiAgICAg
fQogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1
YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAtNzA5
LDcgKzcwOSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dy
YW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24g
PSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKSB7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbkkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDo6WWVzLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVu
ZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAg
IGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKQEAgLTc0NSw3ICs3
NDUsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1do
aXRlbGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0
X3QgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWlu
UmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCitPcHRpb25hbDxOZXR3
b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRU
cmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElk
ZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNz
aW9uSUQmIHNlc3Npb25JRCkKIHsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5n
KCkKICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmNsZWFyKCk7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2lu
Z0ZvclBhZ2UodWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgZm9yIChhdXRvJiBhY3Rpdml0eVRyYWNrZXIgOiBtX25ldHdvcmtB
Y3Rpdml0eVRyYWNrZXJzKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVRyYWNrZXIucGFnZUlEID09
IHBhZ2VJRCkKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NAogICAg
IH0pOwogfQogCi1zaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290
TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCkKK3NpemVfdCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogICAgIHJldHVybiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmZpbmRNYXRjaGlu
ZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgewogICAgICAgICByZXR1cm4gaXRlbS5pc1Jvb3RBY3Rp
dml0eSAmJiBpdGVtLnBhZ2VJRCA9PSBwYWdlSUQ7CkBAIC05MDMsMTcgKzkwMywxNyBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRz
KCkKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6Q2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7
CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQo
KSwgc2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc1JlbW92ZWQo
bV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNl
c3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VzKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2Vk
KFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVy
PiYgcGFnZXMpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25DaGFu
Z2VkKG1fY29ubmVjdGlvbi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKaW5kZXggY2JjN2JiZmU4ZjU3ZDc1NDEzMTU4MTA0Zjg4YTU0NDAwOTQy
MDc2Yi4uMDZkNTc5Njg4Mjg2NThlMTY4YzJjODFmNzI4MWYxZjk2MGM4MDRiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzMsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBt
X25ldHdvcmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3Vy
Y2VMb2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlE
LCBib29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwg
Ym9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0
b3BUcmFja2luZ1Jlc291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQs
IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6
OkJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVh
ckNvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6
OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZv
aWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0g
ICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2Fz
QWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFM
OjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nl
c3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllcik7CkBAIC0xNzAsMTYgKzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIo
UmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50
NjRfdCB3ZWJQYWdlSUQpOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291
cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3Rh
cnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2
b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
IAotICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29v
a2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYp
PiYmKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0Fj
Y2Vzc2VkKT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
Jik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9i
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAg
cHJpdmF0ZToKICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNE
YXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQg
Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJh
Y3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9p
ZCBsb2dXZWJTb2NrZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIFdhbGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7
CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dGFyZ2V0RG9tYWluKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZl
Y3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0
b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9w
ZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwor
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAg
ICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIz
OSwyOSArMjQwLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyKGNvbnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAg
ICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2
aXR5VHJhY2tlciYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcih1aW50NjRfdCBwYWdlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBh
Z2VJRCB7IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAg
ICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6Okxh
YmVsOjpMb2FkUGFnZSB9CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNl
TmV0d29ya0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBy
ZXNvdXJjZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAg
LCByZXNvdXJjZUlEIHsgcmVzb3VyY2VJRCB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0
eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICB1aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRl
bnRpZmllciByZXNvdXJjZUlEIHsgMCB9OwogICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsg
ZmFsc2UgfTsKICAgICAgICAgTmV0d29ya0FjdGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7
CiAgICAgfTsKIAogICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0g
ICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBh
Z2VJRCk7Ci0gICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJ
RCk7CisgICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzaXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHko
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5
VHJhY2tlcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxF
KEFQUExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCBmN2M5N2VlYmIyMTNjZDc4M2NhZjRlMjA0NjliZmEzY2UxOTRjOGNlLi44
MzNlNzRmY2Y2MDAzZWI4M2FjMWRlMmQ4YzZiZmMwZmYyNWI5ZmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDE4ICsyNiwxOCBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
UGVyZm9ybVN5bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4gZGF0
YSkgU3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCiAgICAgUmVtb3ZlTG9hZElkZW50aWZp
ZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKLSAgICBQYWdlTG9hZENvbXBsZXRl
ZCh1aW50NjRfdCB3ZWJQYWdlSUQpCisgICAgUGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkK
ICAgICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAg
U3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1
Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIs
IFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tp
ZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2ll
U3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgU2V0
Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwg
c3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKLSAgICBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBm
aXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJM
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29v
a2llcykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNp
dGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNo
cm9ub3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2ll
U3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0
UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1
Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAg
IERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBj
b29raWVOYW1lKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0
aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJp
bmcgY29udGVudFR5cGUpCkBAIC01NiwxNiArNTYsMTYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEVuc3VyZUxlZ2FjeVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIENsZWFyUGFn
ZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCk7CisgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQogICAgIExvZ1dl
YlNvY2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZy
YW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZUxvYWRpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJn
ZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxs
VGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0
YXRpc3RpY3MpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwotICAgIFJlcXVlc3RTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChlbnVtOmJvb2wg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMK
LSAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9w
ZW5lckRvbWFpbikKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5j
CisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWlu
KQogI2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291
cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9u
SG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC04Nyw3ICs4Nyw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKIAogICAgIFNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJZGVudGlmaWVyKQogCi0gICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCi0gICAg
V2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdl
SUQpCi0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Np
b25JRCwgVmVjdG9yPHVpbnQ2NF90PiBwYWdlcykKKyAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKKyAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyAg
ICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBW
ZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGQxNGIx
ZGU5ZDkxYzAyMmI3ZTBlMDM4MjE3NGRhODgyMmI5M2EzMTguLjQwOTcxNGQ2NjcyNmE4NDc0YWZm
MjlhMTYwODE3ZjI0Nzk2N2IwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzU2FtZU9yaWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3Rv
Y29sSXNCbG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAot
TmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQorTmV0
d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1h
cCYmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3Ry
aW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQog
ICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNz
aW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMzFk
MTFjM2E4YWVjYjJhYWZkNDllNWMzMTAzOThlMGFjMTZkZGVlNy4uNTdkZjFkYTQ2ODBkMjU4NGVl
MjE2YWFkZmYwOGRlODJhMTM2YmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdv
cmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+
IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwg
T3RoZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNv
cmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hv
dWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVl
c3RMb2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5l
dHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhl
YWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJD
b3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdy
YWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIp
OwogICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRy
aXBsZXQgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1By
b2Nlc3M7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hl
Y2tzLgogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAv
LyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggODk2Mzk5ZDEzMzI1ZDAxNGEx
NzRiZjc3YjRjYTYzNmNhZjJlMGM0Ni4uODk3MzBjZjlmZDI2OTliY2ZkMzJkZGMzOGVmOGNlMDM3
NDZhMzAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTM4LDcgKzM5LDcgQEAg
ZW51bSBjbGFzcyBQcmVjb25uZWN0T25seSB7IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya0xv
YWRQYXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgeyAwIH07Cisg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEOwogICAgIHVpbnQ2NF90IHdlYkZy
YW1lSUQgeyAwIH07CiAgICAgV1RGOjpQcm9jZXNzSUQgcGFyZW50UElEIHsgMCB9OwogICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IGQ4MTMwODU0ZjEzZTQzNmE2YmFiNThiYWIyNzZhYmZkNTc0NGI1NjQuLmU1YzJiZWFl
NThjOGRhN2JhOTlhMjMwYzM5MjQ5M2FhZTczMjk2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFBBTDo6U2Vzc2lvbklEIHNlcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21E
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRh
VHJhbnNmZXIsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1p
dENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRh
VHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQoIW5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaXNF
bXB0eSgpKTsKIApAQCAtMTk2MSw3ICsxOTYxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCBhbGxvd3MsIENvbXBsZXQK
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dE
aWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVy
IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTk2OSw3ICsxOTY5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9n
RGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3MK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2Ny
aXB0aW9uLCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xv
Z2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91
bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5
NzcsNyArMTk3Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0CiAgICAgcGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRpb24s
IHJlc3VsdCwgU2hvdWxkU2FtcGxlOjpObyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVl
LCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMs
IFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVL
ZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNz
aW9uLT5yZW1vdmVLZXB0QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQogewogICAgIGlmICghcGFnZUlEIHx8ICFvbGRQYWdl
SUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgYWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlk
Iik7CkBAIC0yNjQ1LDEzICsyNjQ1LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VX
YXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklECiAgICAg
ICAgIHJldHVybiBzZXNzaW9uSUQ7CiAgICAgfSk7CiAKLSAgICBzdG9yYWdlTWFuYWdlci5jcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQsIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSk7Ci0gICAgc3RvcmFnZU1hbmFnZXIuYWRkQWxsb3dlZFNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQsIGNvbm5lY3Rpb24pOworICAgIHN0b3JhZ2VN
YW5hZ2VyLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgpLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIHN0b3JhZ2VNYW5hZ2Vy
LmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELnRvVUlu
dDY0KCksIGNvbm5lY3Rpb24pOwogICAgIGlmIChwYWdlSUQgIT0gb2xkUGFnZUlEKQotICAgICAg
ICBzdG9yYWdlTWFuYWdlci5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG9sZFBhZ2VJRCwg
cGFnZUlEKTsKKyAgICAgICAgc3RvcmFnZU1hbmFnZXIuY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShvbGRQYWdlSUQudG9VSW50NjQoKSwgcGFnZUlELnRvVUludDY0KCkpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBpZiAoIXBhZ2VJRCkgewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCByZW1vdmUgcGFn
ZSB3aXRoIGludmFsaWQgaWQiKTsKQEAgLTI2NjQsOCArMjY2NCw4IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFM
OjpTZXNzaW9uCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0g
c2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBzdG9yYWdlTWFuYWdlci5yZW1vdmVBbGxv
d2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRCwgY29ubmVjdGlvbik7
Ci0gICAgc3RvcmFnZU1hbmFnZXIuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJ
RCk7CisgICAgc3RvcmFnZU1hbmFnZXIucmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlQ29ubmVjdGlvbihwYWdlSUQudG9VSW50NjQoKSwgY29ubmVjdGlvbik7CisgICAgc3RvcmFn
ZU1hbmFnZXIuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0yNjgxLDcgKzI2ODEsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKICAgICBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5zdG9yYWdlTWFuYWdl
cigpLnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgcGFnZUlEcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hh
bmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZUlEcykKIHsKICAgICBhdXRv
IGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKICAgICBBU1NFUlQobV9zZXNz
aW9uQnlDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDYwMzBmOGZmYWFiZTE1MDA4
ZjNhZDI2ZmMyM2RiODA2Mzc5ZTkxZWUuLjExMTYzNWQyZTIwMDgxMjJkNzgyNWJjOTYzNzlhYzg5
NjdkYTE4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SURCU2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlw
ZXMuaD4KQEAgLTEzNyw4ICsxMzgsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9E
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2lu
ZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBP
cGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAg
ICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBOZXR3b3JrUHJvY2VzcyhBdXhpbGlh
cnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMTkxLDkgKzE5MCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gRGlhZ25vc3RpYyBtZXNzYWdl
cyBsb2dnaW5nLgotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50Rmln
dXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNz
YWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBs
b2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6
RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91
YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNh
bXBsZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBz
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtMjU5LDcgKzI1OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRp
cmVjdEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVk
aXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lk
IGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvRG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFU
cmFuc2Zlcjo6RmxhZz4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBkaWRDb21taXRDcm9z
c1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
T3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9h
ZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCkBAIC0yNzIsMTAgKzI3MSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lv
bklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFM
OjpTZXNzaW9uSUQpIGNvbnN0OwogCi0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25u
ZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFn
ZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQ
Qzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoSVBD
OjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHdlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJik7Ci0g
ICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NT
ZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYpOwogICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdl
T3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOGFmMTcz
NTE4ZmE3Mjk1MTkwZjA0NTdkNDBhMmM5ZWYxZTQzMmZjZi4uNmQwNjI0MDgzZjc1ZjMzMjcyNmFi
M2ZiMjFkYzFkMmNmZjkwYzIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzEsNyArMTMxLDcgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZWRpcmVjdGVkVG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVkaXJl
Y3RlZEZyb21Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0g
ICAgRGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIHVp
bnQ2NF90IHBhZ2VJRCkKKyAgICBEaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2Zl
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZy
b21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCBPcHRpb25TZXQ8
V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gbmF2aWdhdGlv
bkRhdGFUcmFuc2ZlciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIFNldENy
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1Np
dGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGlu
Y2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCmluZGV4IDU4YWFjYjk5M2RiOThhY2NkYTY1MjJkOTU2NGM5ZWFhODk0YmRhODEuLjMzY2Rj
NGQxN2RiZTJlMDg2NmUzNjEyZWYyMjc2MWEzODIzODA1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCkBAIC0xMDcsOCArMTA3LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndlYlBhZ2VJRCkpCisg
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHdl
YlBhZ2VJRDsKKyAgICBpZiAoIXdlYlBhZ2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJlc3VsdC53ZWJQYWdlSUQgPSAqd2ViUGFnZUlEOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQud2ViRnJhbWVJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBmZTI2NTM2ZjIxYzNlZTlhNzAxODk4Y2EwNTkzMmQ1NWQxNWQzNGIwLi4wZDRmOWEyYTFh
ZWE1Yzg4MDBhNWIxM2ZlMzdlMDE3YmJkYzQ5NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNzQsMTgg
KzE3NCwxOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICBt
X25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1
ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBXVEY6
OnN3aXRjaE9uKHJlc3VsdCwKICAgICAgICAgICAgICAgICBbdGhpc10gKFJlc291cmNlRXJyb3Im
IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0
YXJ0OiBlcnJvciBjaGVja2luZyAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBp
c1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkLCBlcnJvci5kb21haW4gPSAle3B1Ymxp
Y31zLCBlcnJvci5jb2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNv
dXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVy
cm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IGVycm9yIGNoZWNraW5n
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwg
cGFyZW50UElEID0gJWQsIGVycm9yLmRvbWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNvZGUgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwg
dGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21h
aW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMtPmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgICAgIFt0aGlzXSAoTmV0d29ya0xvYWRDaGVja2VyOjpSZWRpcmVjdGlvblRyaXBsZXQm
IHRyaXBsZXQpIHsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+bV9pc1dhaXRpbmdDb250aW51
ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgdGhpcy0+d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRyaXBsZXQucmVx
dWVzdCksIFdURk1vdmUodHJpcGxldC5yZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQu
cmVkaXJlY3RSZXNwb25zZSkpOwotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydDogc3ludGhldGljIHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVS
TCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5j
aHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlz
TWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVu
dFBJRCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2VudCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdhcyBtb2RpZmll
ZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQs
IHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01h
aW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQ
SUQpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMtPmNhblVz
ZUNhY2hlKHJlcXVlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5
bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciBy
ZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3Vz
ID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlz
LT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5w
YXJlbnRQSUQpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+cmV0cmlldmVDYWNoZUVu
dHJ5KHJlcXVlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0KCkKICAgICB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBv
bmNlIG1fbmV0d29ya0xvYWRDaGVja2VyIGlzIHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgog
ICAgIGlmIChjYW5Vc2VDYWNoZShvcmlnaW5hbFJlcXVlc3QoKSkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVu
dFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICByZXRyaWV2ZUNhY2hl
RW50cnkob3JpZ2luYWxSZXF1ZXN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI3
LDEzICsyMjcsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVF
bnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIGxvYWRlci0+bG9n
U2xvd0NhY2hlUmV0cmlldmVJZk5lZWRlZChpbmZvKTsKIAogICAgICAgICBpZiAoIWVudHJ5KSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6
IFJlc291cmNlIG5vdCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVk
LCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
aXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAg
ICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9h
ZDo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChlbnRyeS0+aGFzUmVhY2hlZFByZXZh
bGVudFJlc291cmNlQWdlQ2FwKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJl
c291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5j
aHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5j
aHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBj
YXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOwogICAgICAgICAgICAgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlv
biA9IFdURk1vdmUoZW50cnkpOwogICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRh
dGlvblJlcXVlc3QgPSBvcmlnaW5hbFJlcXVlc3QoKTsKICAgICAgICAgICAgIGxvYWRlci0+c3Rh
cnROZXR3b3JrTG9hZChXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBGaXJzdExvYWQ6Olll
cyk7CkBAIC0yNDEsMjEgKzI0MSwyMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0
cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAg
fQogI2VuZGlmCiAgICAgICAgIGlmIChlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxp
bmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJv
bm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2Fj
aGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2Ug
PSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBp
c01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5k
aXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShlbnRyeSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
IChsb2FkZXItPm1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnktPnJl
c3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1
aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmll
dmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNlcnRpZmljYXRl
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCki
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJl
cXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSB8fCByZXF1ZXN0LmNhY2hlUG9s
aWN5KCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlD
YWNoZURhdGEpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeTogVmFsaWRhdGluZyBjYWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01h
aW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91
cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdURk1vdmUoZW50
cnkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9t
IGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMo
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmV0cmlldmVkIHJlc291cmNlIGZyb20gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3Vy
Y2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICBsb2FkZXItPmRp
ZFJldHJpZXZlQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgfSk7CiB9CkBAIC0yNjMs
NyArMjYzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRy
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExv
YWQgbG9hZCkKIHsKICAgICBpZiAobG9hZCA9PSBGaXJzdExvYWQ6OlllcykgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNv
dXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAKICAgICAgICAgY29uc3Vt
ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGaXJzdExvYQogICAgIH0KICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNz
aW9uIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNl
c3Npb25JRC5zZXNzaW9uSUQoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3
aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25J
RD0lIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNl
c3Npb25JRCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRO
ZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNz
aW9uIHRoYXQgZG9lcyBub3QgZXhpc3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklEPSUiIFBSSXU2
NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5z
ZXNzaW9uSUQoKSk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5sb2dE
aWFnbm9zdGljTWVzc2FnZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lvbklES2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6
Tm8pOwogICAgICAgICBkaWRGYWlsTG9hZGluZyhpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZp
cnN0TG9hCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBt
X25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nv
bm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nl
c3Npb24pOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNj
cmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0
d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQpAQCAtMzIyLDcgKzMy
Miw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVz
dWx0KQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIFJFTEVBU0VfTE9HKExvYWRpbmcs
ICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1
NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdv
cmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
Zmllcik7CiAgICAgCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSByZXNvdXJjZSBjYW1l
IGZyb20gdGhlIGRpc2sgY2FjaGUuCiAgICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7CkBAIC0zNDAs
NyArMzQwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJv
cnQ6IENhbmNlbGluZyByZXNvdXJjZSBsb2FkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAgICAgICAgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAg
ICAgaWYgKG1fcGFyYW1ldGVycy5vcHRpb25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3BvbnNlLmlzTnVs
bCgpICYmICFtX2lzS2VwdEFsaXZlKSB7CiAgICAgICAgIG1faXNLZXB0QWxpdmUgPSB0cnVlOwpA
QCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRl
cnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvCiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgcmVjZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCBy
ZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0
dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOwogCiAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUo
cmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZl
ZFJlc3Bvbgogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQg
Kz0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24pOwpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEZpbmlzaExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNSZWNlaXZlZCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkRmluaXNoTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgaWYg
KHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5l
Y3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0
d29ya0xvYWRNZXRyaWNzKTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMbwogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
RmFpbExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlv
biA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlz
QWNjZXNzQ29udHJvbCgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBp
c0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXND
YW5jZWxsYXRpb24oKSwgZXJyb3IuaXNBY2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgp
KTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAg
ICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZp
ZXIoKSk7CkBAIC03MzEsNyArNzMxLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QKICAgICAg
ICAgfQogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAgICAgbV9pc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFscyA9IGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOwogCkBA
IC05ODgsNiArOTg4LDExIEBAIHN0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9w
dGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1i
ZXIodmFsdWUudmFsdWUoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOwogfTsKIAorc3RhdGljIFN0cmlu
ZyBlc2NhcGVJREZvckpTT04oY29uc3QgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gdmFsdWUgPyBTdHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkg
OiBTdHJpbmcoIk5vbmUiX3MpOworfTsKKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omxv
Z0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2ll
SW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCBzZXNzaW9uSUQoKSkpOwpAQCAtOTk4LDcgKzEwMDMs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBj
b25zdAogICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNv
dXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVz
dCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBw
YWdlSUQoKSwgaWRlbnRpZmllcigpKTsKIH0KIAotc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tp
ZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlm
aWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VS
VChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5l
Y3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDI1LDcg
KzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9B
TExPV0VECiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitz
dGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lk
KiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFT
U0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNv
bm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDg2
LDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aQogI3VuZGVmIExPQ0FMX0xPR19J
Rl9BTExPV0VECiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZv
cm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBP
cHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25J
RCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGE4YTMwMDVjMTQyMzA2MTM4ODc2ODIxYTQzYTA1N2EwYjZm
M2Q3ZmMuLmE4ZjZkMzE1Nzk4YzRhZGZmZjk5ZGE3ZTgyZmZjODMzYTk2NzY4M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnNlc3Npb25JRDsgfQogICAgIFJlc291cmNl
TG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyOyB9CiAgICAgdWludDY0X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlEOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KIAogICAg
IHN0cnVjdCBTeW5jaHJvbm91c0xvYWREYXRhOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwotICAg
IHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZv
aWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2
b2lkIGRpc2FibGVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0NhcHR1cmUoKSB7IG1fc2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA5N2UwYjI0NDA3OGQ4MzJhZWRjZGQ4YTY3OTE4
NDE0ZjI4NzBjNjAyLi41NTNjYmFkMTliYzVhMTk3ZTA2MjUyNzUwZjI4MmNlM2IwNDE2ZmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC00NSw0MCArNDUs
NDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25z
ZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVy
LmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVz
cG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0
YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpE
aWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJl
Y2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsK
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwg
bV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6ZGlkRmluaXNoKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRG
aW5pc2hGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVy
OiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhh
bmRsZSgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6
IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlm
aWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9p
ZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBkMzJjZDQ2Mzg5ZWMw
MjJiZmM1MDE0NWI3MzdlZjRjYWFlYzkzMjMxLi45MWZkYzcxNTk3MWQ3YjE5Y2JiOGI0MmM2NDdk
YjMwYzNhZmUyOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApA
QCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNo
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAgYXV0byogd29y
a2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIXdvcmtlcikgewogICAgICAgICBT
V1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRj
aDogZmV0Y2hJZGVudGlmaWVyOiAlcyAtPiBEaWROb3RIYW5kbGUgYmVjYXVzZSBubyBhY3RpdmUg
d29ya2VyIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0g
d29ya2VyLT5pZGVudGlmaWVyKCk7CkBAIC0xNzAsMTMgKzE3MCwxMyBAQCB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciBzZXJ2aQogCiAgICAgICAgIGlmICghc3VjY2VzcykgewogICAgICAgICAgICAgU1dTRVJW
RVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZl
dGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRpZCBub3QgYmVj
b21lIGFjdGl2YXRlZCIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1
dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwogICAgICAgICBpZiAoIXdvcmtlcikgewotICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUg
eyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5v
dEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dGFydEZldGNoKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4o
KmNvbnRleHRDb25uZWN0aW9uKS5zdGFydEZldGNoKG1fc2Vzc2lvbklELCBtX2NvbnRlbnRDb25u
ZWN0aW9uLmdldCgpLCB0aGlzLT5pZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZlcnJlcik7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElP
Tl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZp
ZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIGZhaWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgICAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlm
aWVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGM3ZjM4NmIz
ZDdjMzE0NTU4MGYyYWMwZTBlMzUyZWE2Yjg3MTU1YzEuLjhiYmMxNjk3ODU2MGU0NDYzMjIxZGY3
M2FjYjEwODc2MmFiNzY5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1
ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KQEAgLTg0
LDcgKzg1LDcgQEAgZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CiAgICAgTm9EdWVUb0V4cGlyZWRS
ZWRpcmVjdAogfTsKIAotdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAv
KndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47Cit1c2luZyBHbG9iYWxGcmFt
ZUlEID0gc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKndlYkZy
YW1lSUQqLz47CiAKIGNsYXNzIENhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGU+IHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCA5NjVjNmZhNjY0YmNkMTU1Zjc2Y2RiM2I0ZDcz
MjZlZWUwM2U5MTg4Li4yZGQwZTdkNDZiYzcxOWU5NmZhMTUwNzRmZWQwMGIxYzg4NjY1NjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9u
Q29jb2E7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3Jr
RGF0YVRhc2sgewogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdl
YkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGlu
Z1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFBy
ZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUo
TmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmlu
Z1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5l
Y3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwg
Y2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwg
ZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIp
KTsKICAgICB9CkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9h
ZE1ldHJpY3M7IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lSUQ7IH07Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7
IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSUQ7IH07CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5l
dHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFt
ZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3
b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlm
ZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOwogCiAgICAgYm9vbCB0cnlQYXNzd29y
ZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTbmlmZmlu
Z1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9fc3Ryb25nIE5TVVJM
UmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZik7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5T
VVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKLSAgICB1
aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsK
IAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYm9vbCBtX2hhc0Jl
ZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0KaW5kZXggMzVlNDQzYjllZTkxODA1N2FkMzRkZWYwNjhhODk5YmVhMDY3YWRmNi4uMjhh
MDVlODBkYjY4NWFmNjdiMjg0Yzg0MjMxNzE5NGY5N2U4N2UzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFza1dpdGhGaXJzdFBh
cnR5Rm9yU2FtZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0YXMKICNlbmRpZgog
fQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29ya0RhdGFUYXNrQ29j
b2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRh
VGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNz
aW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lz
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwg
bV9wYWdlSUQocGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0Rh
dGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigp
KQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlv
bjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogQmxvY2tpbmcg
Y29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAodW5zaWduZWQgbG9u
ZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5V
VEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2ll
SW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6
IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50b1VJbnQ2NCgpLCBm
cmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0
LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAgICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgW21fdGFzayB0
YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7
CiAjZW5kaWYKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAg
IGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29va2ll
bGVzcyB8fCBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNob3VsZEJsb2NrQ29v
a2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQot
ICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29y
aywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
Ojpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRh
c2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdl
SUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIChz
aG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjog
cGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBm
b3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgbV9mcmFtZUlE
LCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29v
a2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUg
JXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0s
IChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBAIC0zNzksNyArMzc5
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3VsZEJsb2NrQ29va2ll
cykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5z
aG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRpb246
IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IE5vdCBwYXJ0aXRp
b25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQsIG1fZnJh
bWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjog
cGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogTm90IHBhcnRpdGlv
bmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICAgICAgTE9H
KE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMgZm9yIHJlZGly
ZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmgKaW5kZXggYzRmYjAwYjA4M2M0MTEyYTIyYzgxZWM0NWYwODhkYTA5Y2I4NjllOC4u
M2VkZjgyYWRmM2I1YWUzYjI4NGM3ZGQ1OTE1Yjg4NWU3NTIzMTc2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTg2LDYgKzE4NiwzNiBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0Y2hl
ciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6
OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5p
dHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2Fp
dEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOworICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFU+CisgICAgdm9pZCBzZW5kV2l0aEFzeW5j
UmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgT2JqZWN0SWRlbnRpZmll
cjxVPiBkZXN0aW5hdGlvbklEID0geyB9KQorICAgIHsKKyAgICAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5PFQsIEM+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBk
ZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRl
bnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlv
bnMgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4gc2VuZDxUPihXVEZNb3ZlKG1lc3NhZ2Up
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICB2b2lkIHNlbmRXaXRoUmVw
bHkoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgRnVuY3Rp
b25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8dHlw
ZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4mJiByZXBseUhhbmRs
ZXIpCisgICAgeworICAgICAgICByZXR1cm4gc2VuZFdpdGhSZXBseTxUPihXVEZNb3ZlKG1lc3Nh
Z2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlcGx5RGlzcGF0Y2hlciwgV1RGTW92ZShy
ZXBseUhhbmRsZXIpKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KKyAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGlt
ZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCks
IHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwg
T3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+KGRlc3RpbmF0aW9u
SUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAgIH0KIAogICAgIGJv
b2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8U2VuZE9w
dGlvbj4gc2VuZE9wdGlvbnMpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkodWludDY0
X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIEZ1bmN0aW9uRGlzcGF0Y2hl
ciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
Pik+JiYgcmVwbHlIYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuaAppbmRleCBkNWY5ODFlNDUzNGIyYTliZDhiNGE1Y2M2MTRlODdjYTQ0OTU2ZDRhLi4z
ZDZmMzQyODkyYmM4ODM5MDY3OGU4YzM2NDYzOTExMGRlNGY1NzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC0zNCw5ICszNCw5IEBAIGNsYXNzIE1l
c3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lc3NhZ2VTZW5kZXIoKTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlLCBPcHRpb25T
ZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4g
c2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCB7IH0pOworICAgICAg
ICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCBzZW5k
T3B0aW9ucyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNv
bnN0IFUmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0
aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTQ4LDYgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0
aW9ucyk7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFQ+
CisgICAgYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VD4gZGVz
dGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAg
ICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBT
ZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNP
cHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKQEAgLTY1LDggKzcxLDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHNlbmRT
eW5jT3B0aW9ucyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJncz4KLSAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgorICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5
KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAgICBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoV1RGTW92ZShtZXNzYWdl
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IDllNmU5MzIwNmJkYzFiMDEwMjJkZWE1MDQ0ZDI4MzNiZDVlOTRlZGMuLmYwZWM4ZGMxYjcxNjli
Y2NhNTVhNjU0OTEyZWQyZmVmNTM3MGRmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtMjA1LDYgKzIwNSw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9u
c19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICdTdHJpbmcnLAogICAgICAgICAnV2Vi
Q29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRp
ZmllcicsCisgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCmluZGV4IGE2YTAwOTk1NTAwZTc2MzNlMGQ0
NWIxOGE0NDdjNzQyYTY5MjIwYWIuLmU2MDVhNDU5NDZmZmM3ZjFkMDdjYjg0ZThmNWNiOTg3YmJm
MzY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAKQEAg
LTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBhZ2VIYW5kbGU+IFBh
Z2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhhbmRsZT4gUGFnZUhh
bmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsKIH0KIAotUmVmPFBh
Z2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVpbnQ2NF90IHBhZ2VJ
RCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29udmVydGluZyhXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6UGFnZUhhbmRsZSh1
aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VIYW5kbGU6OlBhZ2VI
YW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlzQXV0b2NvbnZlcnRp
bmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2NvbnZlcnRpbmcoaXNB
dXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBhZ2VIYW5kbGU6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFnZUhhbmRsZTo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAg
ICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQorICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgZGVjb2RlciA+
PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQXV0b2Nv
bnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBpc0F1dG9j
b252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNyZWF0ZShwYWdlSUQp
OworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRvY29udmVydGluZygq
cGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFmYmRjMzFiNzkxYTlm
YzBhYTYyNmZjOTBhNzQ4ZWYwODk0OC4uNmExY2ZiNjk4MjU5YmY0OGQ0ZDhlZDU4ZWNiODdiMGYy
MjY3NDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5k
bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIEFQSVBhZ2VIYW5kbGVfaAogCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zOCwyMCArMzksMjAgQEAgbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIFBhZ2VIYW5kbGUgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5
cGU6OlBhZ2VIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNy
ZWF0ZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRl
QXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPFBhZ2VIYW5k
bGU+IGNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxQYWdl
SGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgdmlydHVhbCB+UGFnZUhhbmRsZSgpOwogCi0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIGJvb2wgaXNBdXRvY29udmVydGluZygp
IGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvY29udmVydGluZzsgfQogCiAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2Rl
ciYsIFJlZlB0cjxPYmplY3Q+Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGFnZUhhbmRs
ZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZyk7CisgICAgUGFnZUhhbmRs
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgYm9vbCBpc0F1dG9jb252ZXJ0aW5nKTsKIAotICAg
IGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOwogICAgIGNvbnN0IGJvb2wgbV9pc0F1dG9jb252ZXJ0aW5nOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaAppbmRleCA4NmY4MDQxNzA5YWJkNWMzY2Q2NGNkODIwZjg2MzUyY2FjMmE0ZDUxLi40
MDQwODE3ODAwMmE5NDY3MWQzNTBkZjI2MWUwOGM5NTBlZWYyYjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc1Rocm90dGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vha09iakNQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNzMsNyArNzQsNyBAQCBwcml2YXRlOgogICAg
IEZ1bmN0aW9uPHZvaWQoKT4gbV9sYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5OwogICAg
IEhhc2hNYXA8dWludDY0X3QsIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRv
a2VuPiBtX3BlbmRpbmdSZXBsaWVzOwogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRBc01lc3NhZ2VS
ZWNlaXZlciB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9tZXNzYWdlUmVjZWl2ZXJJRCB7IDAg
fTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX21lc3NhZ2VSZWNlaXZlcklEOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KaW5kZXggNThjYjFkZDJi
NWU3YzdjNmIwOTY1YWY2N2E1NTc2MmY0OTU5ODMwNi4uN2U5N2YxNzZjMDhhNTg1YjFiOWMyNDMw
ZmU5NjEzYmQzYTM5MTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgsNyArMjgsNyBAQAog
CiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAotLSAoaWQpX2luaXRX
aXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBhZ2VJRDooV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0gKGlkKV9pbml0V2l0
aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFzaAogewotICAgIHJl
dHVybiBfcGFnZUlEOworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7CiB9CiAKIC0gKEJP
T0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJPT0wpaXNFcXVhbDoo
aWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIHsK
LSAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdlSUQiXTsKKyAgICBb
Y29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpAInBhZ2VJRCJdOwog
fQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAgLTYxLDcgKzYxLDcg
QEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcGFnZUlEID0gW2Nv
ZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJRCA9IG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2NvZGVyIGRlY29kZUlu
dDY0Rm9yS2V5OkAicGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250
ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYTc0ZmI0MjhjMjBlOTdjYmVmNmFk
N2UzNjU4OTQzLi40M2U0MWUyNGNkMzYzMzZiNTQ3ODRiMDAzY2YxN2JiYzE2ZjY3YTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRI
YW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jy
b3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKQEAgLTI0LDExICsyNCwxMiBAQAogICovCiAK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlLmgiCisjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgKCkK
IAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXIgPSBfcGFnZUlEKSB1aW50
NjRfdCBwYWdlSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1fcGFn
ZUlEKSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAKLS0gKGlkKV9pbml0V2l0aFBh
Z2VJRDoodWludDY0X3QpcGFnZUlEOworLSAoaWQpX2luaXRXaXRoUGFnZUlEOihXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcilwYWdlSUQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRl
eCBlYjhhMGI2NjE3YWU1M2I1MDk4Zjg4NjIwNmNkZjczZTg4NDIxNDM1Li5kNGUxYzI1MDA4MTEy
YmJiZGY1ODM2Zjk2N2YwYzgzYzBjNmY3MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBA
IC02Niw3ICs2Niw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKm1fZGVzdGluYXRpb25JRDsKKyAgICByZXR1cm4gbV9kZXN0aW5hdGlvbklE
LT50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpjYW5N
YWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiByZXBseSkKQEAgLTg0
LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmkKICAgICBwbGF0Zm9ybU9wZW5QYXlt
ZW50U2V0dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQ
YXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpz
aG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRv
JiBjb29yZGluYXRvciA9IGFjdGl2ZVBheW1lbnRDb29yZGluYXRvclByb3h5KCkpCiAgICAgICAg
IGNvb3JkaW5hdG9yLT5kaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKaW5kZXggZDIzN2VhYjNkYWI4NzlhNWRhMzU3MWY4OTEwMWQ3ZWU5NzA1OTZiMi4uNmU0YTg1
Y2YyZTI3ZmU0NjVhYWQ3NWNlZTIzYmNhZTJkZTdmZTAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1
cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5O
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHNob3dQYXlt
ZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVS
TFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzaG93UGF5bWVudFVJ
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
bGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAgICB2b2lkIGNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBw
aW5nQ29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICBDbGllbnQmIG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2Rlc3Rp
bmF0aW9uSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fZGVzdGlu
YXRpb25JRDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90
aGluZydzIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggZGQzMTMxMjdiZjRhOGExYWEwYzZkZWNjNmQyMzRmOWJkYmFhYjdkMy4uMWRlNGNkZGNl
NGIxMjYzZTJkMGI5NGJmYjkzMTkxNDhiYmMxODIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKFN0
cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+IChib29sIGNhbk1ha2VQYXltZW50cykgQXN5bmMKICAgICBPcGVuUGF5
bWVudFNldHVwKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lKSAt
PiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKLSAgICBTaG93UGF5bWVudFVJKHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJM
U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQp
IFN5bmNocm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBvcmlnaW5hdGlu
Z1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdzLCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkgLT4gKGJvb2wgcmVz
dWx0KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKFdlYkNvcmU6
OlBheW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKICAgICBDb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0
aG9kVXBkYXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24o
T3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRhdGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcAppbmRleCA2ZWIzMzVmMDdkM2NmZTYyOTAwMDcxY2RhYTc4OTNmMDQz
MzViZWFhLi45ZGViNzZmZjEzMmM2Y2I1ZmRmNWViZjUyMjIzNGY2ZDQ0M2VmOTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdWludDY0X3QgQXV0aGVudGlj
YXRpb25NYW5hZ2VyOjphZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcChDaGFsbGVuZ2UmJiBjaGFs
bGVuZ2UKICAgICByZXR1cm4gY2hhbGxlbmdlSUQ7CiB9CiAKLWJvb2wgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBj
b25zdAorYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNob3VsZENvYWxlc2NlQ2hhbGxlbmdl
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0CiB7CiAgICAgaWYgKCFjYW5Db2Fs
ZXNjZUNoYWxsZW5nZShjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDgs
NyArMTA4LDcgQEAgVmVjdG9yPHVpbnQ2NF90PiBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNvYWxl
c2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWwKICAgICByZXR1cm4gY2hhbGxlbmdl
c1RvQ29hbGVzY2U7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChwYWdlSUQpOwogICAg
IEFTU0VSVChmcmFtZUlEKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgdQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICB1aW50NjRf
dCBkdW1teVBhZ2VJRCA9IDA7CisgICAgUGFnZUlkZW50aWZpZXIgZHVtbXlQYWdlSUQ7CiAgICAg
dWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7IGR1bW15
UGFnZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikgfSk7CiAgICAgCiAgICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0aGUgc2FtZSBwcm90
ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApp
bmRleCA3ZmUzOTllMGI3ZTk0NThiZDkxNzgyNTkzODQxZTRjNDQ5MzM1YWUxLi44NmU3NDRjMTA4
ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2
b2lkIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQs
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwm
Jik7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hh
bGxlbmdlIHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIGNoYWxsZW5nZTsKICAgICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXI7CiAgICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCiAgICAgdWludDY0X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdl
JiYpOwotICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSBjb25zdDsKKyAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gY29hbGVz
Y2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0NzVkYzJiYjhmZjc3
ZmE0MTcyNWMwODNiMGY3NTA5OTUzOS4uMTkyNTNlMmJhYjZhMTdiZWY0NjYzNjY3ZmQ0OGFiOWU5
ZTA1MTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtNjIs
NiArNjIsMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7
CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAgIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUlu
dDY0KCkpOworICAgIH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChi
b29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4
dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCmluZGV4IDRmNzVm
ZDgwNmY2OGQ2YTk5OWJiYTZhNDViMTQ1NzQ3NmZjYWI4OGMuLjU0ZDQyNzdiODUzOGZiYTQxNTZh
YjgzZDZhZGI4OTU3ODI4YTBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Rl
eHRJbnB1dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250
ZXh0LmgKQEAgLTI5LDEzICsyOSwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRleHRJbnB1dENvbnRleHQgewog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CiAKLSAgICB1aW50NjRfdCB3ZWJQ
YWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSWRlbnRp
ZmllcjsKICAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVy
OwogICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVudGlmaWVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4
IDlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdjZjRkODQyZGZmMzk2ZWQuLmQ5MDBhMTY3MzNhOWNl
NTNmNzZlOTdmODk1OWMxNDdhNzUwODk3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitS
ZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRl
KEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBwYWdlSUQp
KTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbShC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2
NF90IHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZNb3ZlKGJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2xhc3RQ
cm9jZXNzSWRlbnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4
IDg3MmVmMTgwOTVkMThjYzNhOWM1ZTc0NjNkMzBlN2Y2MTQ4NzJmNWUuLjQ0YWY3YzY2NTkwNzQ2
ZGY5ODJlMDVjMTNiZWVjZDA2YTc4NjRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ2LDcgKzQ3LDcg
QEAgY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmFja0Zvcndh
cmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0
SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdmlydHVh
bCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGljIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJik7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0
YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0
ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgbGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9jZXNzSWRlbnRpZmllcihj
b25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBtX2xhc3RQcm9j
ZXNzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4MiwxMiBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNz
UG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRlbVN0YXRlOwotICAg
IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlE
OwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVy
OwogICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCBlOWRhNjBhZWViZWZmMWRhNjkxZTFlNDUzMzczNTc3YTNhOTQwYTI1Li42OTk0ODI1
ZDA4MWNiMDk5NDg0MmFjY2RjZTQ4NDZlM2RkYjBlOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNTMsNyArNTMsNyBA
QCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1c2VyQWdlbnQ7CiAgICAgZW5jb2RlciA8PCBp
dGVtU3RhdGVzOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbklEOwotICAgIGVuY29kZXIgPDwgdXNl
ckNvbnRlbnRDb250cm9sbGVySUQudG9VSW50NjQoKTsKKyAgICBlbmNvZGVyIDw8IHVzZXJDb250
ZW50Q29udHJvbGxlcklEOwogICAgIGVuY29kZXIgPDwgdmlzaXRlZExpbmtUYWJsZUlEOwogICAg
IGVuY29kZXIgPDwgd2Vic2l0ZURhdGFTdG9yZUlEOwogICAgIGVuY29kZXIgPDwgY2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOwpAQCAtMTkzLDExICsxOTMsMTEgQEAgT3B0aW9uYWw8V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2Vzc2lvbklE
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIE9wdGlvbmFsPFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7
CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGlm
ICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEID0gbWFrZU9i
amVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllclR5cGU+KCp1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50
Q29udHJvbGxlcklEID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTM5Miw3ICszOTIsNyBAQCBPcHRpb25hbDxXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
YmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAotICAgIE9wdGlv
bmFsPE9wdGlvbmFsPHVpbnQ2NF90Pj4gb2xkUGFnZUlEOworICAgIE9wdGlvbmFsPE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4gb2xkUGFnZUlEOwog
ICAgIGlmICghb2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGMy
YmU4NDE0NmIzNGVhNzU2MTk3MDc1YWM4YjJjYmMzOGJlYzQyZTAuLjkwMTI3YmMzMTAzMGVlZTAz
ZjI2MjdlOTdjYWQ0NWY5YjdiNjljMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGJhY2tncm91
bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7CisgICAgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3Vw
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAppbmRl
eCA5NjM5ZDAxNWMyZjk0ZTY3Yjc2NzIyOGFkMjNiMWQ5YzQzYjM1MDA3Li44YzI4MzIwZDFkYWQy
ZGU3NjQ2NThjM2RjNDU2MDkzY2ZlMzRjN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlR3JvdXBEYXRhLmNwcApAQCAtMzQsNyArMzQsNyBAQCB2b2lkIFdlYlBhZ2VHcm91cERhdGE6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBp
ZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwSUQ7Ci0gICAgZW5jb2RlciA8PCB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLnRvVUludDY0KCk7CisgICAgZW5jb2RlciA8
PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfQogCiBPcHRpb25hbDxXZWJQYWdl
R3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQpAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VHcm91cERhdGE+IFdlYlBhZ2VH
cm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFwYWdlR3Jv
dXBJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBPcHRpb25hbDxV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsK
ICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIp
LCBXVEZNb3ZlKCpwYWdlR3JvdXBJRCksIG1ha2VPYmplY3RJZGVudGlmaWVyPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cikgfX07CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCAqcGFnZUdyb3VwSUQs
ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH19OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0
R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCmlu
ZGV4IGM2NTQ4NGY1NTEyMjBkZGJjOGI4NGI3OTZhY2IwNTk4ODcyNmI4NzMuLmZlNjZkZTY1OTJh
YTBhZjIzNDU4ODJkYjNkNDFhMTJjYTJiOWJjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL09iakNPYmplY3RHcmFwaC5tbQpAQCAtMjk4LDExICsyOTgsMTIgQEAgYm9vbCBPYmpDT2Jq
ZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJl
c3VsdCkKICAgICB9CiAKICAgICBjYXNlIE9iakNUeXBlOjpXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZTogewotICAgICAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFnZUlEKSkKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKKyAgICAgICAgZGVjb2RlciA+PiBwYWdlSUQ7CisgICAgICAgIGlmICghcGFnZUlEKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IGFkb3B0TlMoW1tX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZUlEOnBhZ2VJRF0pOwor
ICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2Nd
IF9pbml0V2l0aFBhZ2VJRDoqcGFnZUlEXSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcAppbmRleCAyYzFmM2U5NzdiMmU1MmRiZjljNTk1NDc5YzE2NGM5NmI1MTNmMjQ4Li45MzU2
ZWUzZTRiMjE4NTBkNDkxZjA1NWVhNWQzMTIyNWI0YzAwODBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTc0
OSw1ICsxNzQ5LDUgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0V2ViVmlld0Rlc3Ryb3llZChXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KgogCiBXZWJLaXRXZWJWaWV3KiB3
ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIHJldHVybiBwYWdlID8gY29udGV4dC0+cHJp
di0+d2ViVmlld3MuZ2V0KHBhZ2UtPnBhZ2VJRCgpKSA6IDA7CisgICAgcmV0dXJuIHBhZ2UgPyBj
b250ZXh0LT5wcml2LT53ZWJWaWV3cy5nZXQocGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSkgOiBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcAppbmRleCA4ODdmN2IzMWMwZTZkM2FlZDEyZmMxMDNkNDkwZWE1ZWEwYjM3
OTczLi5jZWI5MGQ3M2Q4M2Y3MmUxZWI2OWIwYjhhMmRjZmY5YTlkYTIxYWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAt
MjgxOCw3ICsyODE4LDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwogCi0gICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldyku
cGFnZUlEKCk7CisgICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldykucGFnZUlEKCkudG9VSW50NjQo
KTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDEwNzU3ODFhZjJjM2Y4YTdl
YTdjNjE4NmViY2Y3OWM3MDgxYzE5OTcuLjJmOWNmZTk0MjQwMjYxNzJkOTA2ZGJkMWEwM2M0Y2Qw
MTU0NGJiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBTdHJpbmcgQXV0b21hdGlvbkNvbW1hbmRFcnJvcjo6dG9Qcm90b2Nv
bFN0cmluZygpCiB7CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEK
ICAgICB9CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQ
YWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2Fs
bGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCiB7CiAgICAgSW5zcGVj
dG9yOjpFcnJvclN0cmluZyB0aW1lb3V0RXJyb3IgPSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJS
T1JfTkFNRShUaW1lb3V0KTsKICAgICBmb3IgKGF1dG8gaWQgOiBjb3B5VG9WZWN0b3IobWFwLmtl
eXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCA2NWViM2U0NmU1Yjg4YmE4MmFjMmQxMDI0
ZWNhZTYzY2IzNGQ3MDg3Li5mMzljMDYxYjU3ODkyYTkyNDhmZDA5ZGZmY2ZhN2I4YzUwYTA3NTM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2hhcmVh
YmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgiCiAjaW5j
bHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFnZShXZWJQYWdlUHJv
eHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5LCBT
ZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPiYm
KTsKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uRnJhbWUoV2ViRnJhbWVQ
cm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3ks
IFNlY29uZHMsIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+
JiYpOwotICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0
aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CisgICAgdm9pZCByZXNwb25kVG9QZW5kaW5nUGFnZU5h
dmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4m
KTsKICAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdGcmFtZU5hdmlnYXRpb25DYWxsYmFja3NXaXRo
VGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mKTsKICAgICB2b2lkIGxvYWRUaW1lckZpcmVkKCk7CiAKQEAg
LTI4MCwyMiArMjgxLDIyIEBAIHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlv
bkJhY2tlbmREaXNwYXRjaGVyPiBtX2RvbWFpbkRpc3BhdGNoZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5Ob3Rp
ZmllcjsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFw
OwotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJQYWdlTWFwOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxl
TWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbV9oYW5k
bGVXZWJQYWdlTWFwOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYkZyYW1l
SGFuZGxlTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJGcmFt
ZU1hcDsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93
c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdF
YWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFz
aE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dz
aW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZT4+IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3Np
bmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0Vh
Z2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7
CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5U
RVJBQ1RJT05TKQotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5j
dGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ01v
dXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKIAogICAgIHVpbnQ2NF90
IG1fbmV4dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQgeyAxIH07CkBAIC0zMTksNyArMzIw
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIgQVBJcyB0YWtl
IGEgc2V0IG9mIGlucHV0IHNvdXJjZXMuIFdlIGFsc28gaW50ZXJuIHRoZXNlCiAgICAgLy8gc28g
dGhhdCBwcmV2aW91cyBpbnB1dCBzb3VyY2Ugc3RhdGUgaXMgdXNlZCBhcyBpbml0aWFsIHN0YXRl
IGZvciBsYXRlciBjb21tYW5kcy4KICAgICBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJj
ZT4+IG1faW5wdXRTb3VyY2VzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI+PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1f
aW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZ
Qk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIEtlZXAgdHJhY2sgb2YgY3VycmVudGx5IGFjdGl2
ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9rZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDk4OTNkMzk4YjU3NDYy
YWQ5Yjg4ODM4ZTIyNzEwZmNhZjA0NjMwZDAuLjZiMDliYWRiOGQwY2ViYWJmMmM2OWY2MDA5YjFi
ZDFkMjNjMDllNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCkBAIC01MSw2ICs1MSwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRp
b25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIHNlbmRXaXRoQXN5bmNS
ZXBseShUJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJncy4uLik+JiYpOworICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCBzZW5kKFQmJiBtZXNz
YWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNl
bmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8
VD4oV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9u
cyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cisg
ICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwg
T2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3Ms
IE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisg
ICAgeworICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92
ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRp
b25zKTsKKyAgICB9CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdAog
ICAgIHsKQEAgLTY3LDYgKzc5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNl
aXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIAorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGlu
YXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAg
YWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9V
SW50NjQoKSwgcmVjZWl2ZXIpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisg
ICAgeworICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKKyAgICB9CiAKICAgICBlbnVtIGNsYXNzIFN0YXRl
IHsKICAgICAgICAgTGF1bmNoaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCmluZGV4IGYwNWQ3
OWMwZDAxYjg5ZDZiNjg0OGNhMjUwNmNjZjkxZGNmYjc2NzEuLjY3MDY1OTc2ODYxOGVkNzVmOTgw
YzExYWRhY2E5MWJlMjk5ZTRlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAgLTUyNyw5
NCArNTI3LDk0IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpoYW5kbGVDb250
cm9sbGVkRWxlbWVudElEUmVzcG9uc2UodWludDY0X3QgY29uCiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6cGF1c2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQ
bGF5U3RhdGUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4
dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnVi
YmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkJlZ2luU2NydWJiaW5nKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6ZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnVi
YmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnViYmluZyhjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlZWtUb1RpbWUodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIHRvbGVyYW5jZUJlZm9yZSwgZG91Ymxl
IHRvbGVyYW5jZUFmdGVyKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6U2Vla1RvVGltZShjb250ZXh0SWQsIHRpbWUsIHRvbGVyYW5jZUJlZm9y
ZSwgdG9sZXJhbmNlQWZ0ZXIpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0
aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFmdGVyKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSB0aW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhj
b250ZXh0SWQsIHRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3
YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0ZvcndhcmQoY29udGV4
dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5u
aW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCkpOwog
fQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nhbm5pbmcodWludDY0
X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY2Fu
bmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRl
eCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2VsZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0
X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihjb250
ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29u
dGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
dG9nZ2xlUGljdHVyZUluUGljdHVyZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQaWN0dXJlSW5Q
aWN0dXJlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShj
b250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2ds
ZU11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6VG9nZ2xlTXV0ZWQoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpzZXRNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCiB7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRN
dXRlZChjb250ZXh0SWQsIG11dGVkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRNdXRlZChjb250ZXh0SWQs
IG11dGVkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRWb2x1
bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdm9sdW1lKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwg
dm9sdW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRWb2x1bWUoY29udGV4dElkLCB2b2x1bWUpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFBsYXlpbmdPblNlY29uZFNj
cmVlbih1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKG1fcGFnZSkK
LSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpT
ZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OlNldFBsYXlpbmdPblNlY29uZFNjcmVlbihjb250ZXh0SWQsIHZhbHVlKSk7CiB9CiAKIHZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJ
RCgpCiB7CiAgICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQotICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkhhbmRsZUNvbnRyb2xs
ZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6SGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QobV9jb250cm9sc01hbmFn
ZXJDb250ZXh0SWQpKTsKIH0KIAogUGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCA2YmE0NzllMDYwYTA5NmM0Mzk1MWVhNzRiZjg5N2Jh
NjcxNjg5ZjdlLi5jOGQ2NWMzNjJhYWM4MmM2NDExOTUxMTY0OThhMTE3OWM1MzNlNDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC02MjAsNDMgKzYyMCw0MyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RGdWxs
c2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlz
aGVkV2l0aE1lZGlhKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpy
ZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0
KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVx
dWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRl
bnRMYXllcihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXll
cihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJl
dHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVu
dExheWVyKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIo
Y29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRT
ZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRp
ZEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3Jl
ZW4oY29udGV4dElkKSk7CiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVs
bHNjcmVlbigpOwogfQogCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAg
ICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVt
b3ZlRnJvbVN1cGVydmlld107CiAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0cik7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRD
bGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxs
c2NyZWVuKGNvbnRleHRJZCkpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRNb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIHJlbW92ZUNsaWVudEZv
ckNvbnRleHQoY29udGV4dElkKTsKQEAgLTY4OCwyNSArNjg4LDI1IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4dElk
LCBXZWJDb3JlCiAgICAgICAgIG1hY2hfcG9ydF9uYW1lX3QgZmVuY2VQb3J0ID0gZmVuY2VTZW5k
UmlnaHQubGVha1NlbmRSaWdodCgpOwogI2VuZGlmCiAKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQo
Y29udGV4dElkLCBmcmFtZSwgSVBDOjpBdHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NT1ZFX1NFTkQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVuY2Vk
KGNvbnRleHRJZCwgZnJhbWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNHX1RZ
UEVfTU9WRV9TRU5EKSkpOwogICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0
eUVudW0oY29udGV4dElkLCAodW5zaWduZWQpZ3Jhdml0eSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0Vmlk
ZW9MYXllckdyYXZpdHlFbnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpKTsKIH0KIAog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIG1fcGFnZS0+dWlDbGllbnQoKS5oYXNWaWRlb0lu
UGljdHVyZUluUGljdHVyZURpZENoYW5nZShtX3BhZ2UsIG1vZGUgJiBNZWRpYVBsYXllckVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQo
Y29udGV4dElkLCBtb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29u
dGV4dElkLCBtb2RlKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpm
dWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKQogewogICAgIGJv
b2wgaXNWaWV3VmlzaWJsZSA9IG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpOwotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVy
blRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSkpOwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5k
ZXggMmFhNzQ4ZjAwNGYyMjJhMDFkZGI3YWM4ZWVlNzEzMmNhNzg4OTBjYS4uMDhhM2QzMDhkM2E1
MGYxOTQ1NDRjMTNlNzkxYjM2YTcxM2IzZDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTE5OTcsMTMgKzE5OTcsMTMgQEAgZmxvYXQgV2Vi
Vmlld0ltcGw6OmludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBXZWJW
aWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0
YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4i
LCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZp
ZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwgdGhpcywgbV9w
YWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5k
b3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJ
bXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlzLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdl
ICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRv
VUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmUgfSk7CiB9CiAKQEAgLTIwNzEsNyArMjA3MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OndpbmRvd0RpZENoYW5nZUxheWVySG9zdGluZygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRv
d0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldl
YlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSIsIHRoaXMs
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAgLTIy
MzQsMTkgKzIyMzQsMTkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZENoYW5nZUJhY2tpbmdQ
cm9wZXJ0aWVzKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUoKQogewotICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUi
LCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZp
ZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRIaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dmll
d0RpZFVuaGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAo
cGFnZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
TE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkVW5o
aWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsK
IH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRDaGFuZ2UoKQogewotICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgYWN0aXZlU3BhY2VE
aWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0
ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNwYWNlRGlkQ2hhbmdlIiwgdGhp
cywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCBiNWI0ZTBh
ZDIyMTYyYzlkMGMwMGM5OGNkODM5MzUwOWZjZjZkZjgxLi5lY2Y1ZGEwYTkxMGI2Mzk0ODBhYzMy
YTVmYjFiMGZiMGNmZmZmNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIERyYXdpbmdBcmVhUHJveHk6OkRyYXdp
bmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdlYlBhZ2VQcm94eSYgd2ViUGFnZVBy
CiAgICAgLCBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZEcmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCkK
ICNlbmRpZgogewotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3
aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhp
cyk7CiB9CiAKIERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICBw
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBw
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAKIGJvb2wgRHJhd2lu
Z0FyZWFQcm94eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGU4NTI1M2IyMGE5NjEzYmQ5N2M0MGRhNDdm
ZTgzNTUzOGI4ZTc4ZmYuLjM0NmFjNjcyMGE2NTg4MWZkMDk4YjVjMzRmMWJkOGFkZDljY2UwOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgSVBDOjpB
dHRhCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90
IGNoYWxsZW5nZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAo
YXV0byogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG1fcHJvY2Vzc1Bvb2wuc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQocGFnZUlEKSkgewpAQCAtMzcxLDcgKzM3MSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVu
Y2hlciogbGF1bmNoZXIsIElQQzo6Q29uCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3Rp
Y01lc3NhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5
IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdv
bmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzgyLDcgKzM4Miw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCBTdHJpbmcmIG1lCiAgICAgcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2Uo
bWVzc2FnZSwgZGVzY3JpcHRpb24sIHNob3VsZFNhbXBsZSk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50
MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2Ft
cGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFn
ZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51bGwtY2hlY2sgYmVjYXVzZSBi
eSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUsIHRoZSBwYWdlIG1heSBiZSBn
b25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywKQEAgLTM5Myw3ICszOTMsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0CiAgICAgcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1bHQsIHNob3VsZFNhbXBsZSk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFs
dWUodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVj
ayBiZWNhdXNlIGJ5IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBh
Z2UgbWF5IGJlIGdvbmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtNzM2
LDcgKzczNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0R3JhbmRmYXRoZXJlZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0R3JhbmRmYXRoZXJlZChzZXNzaW9uSUQs
IHJlc291cmNlRG9tYWluLCBpc0dyYW5kZmF0aGVyZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29u
ZmlybShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2Vi
UGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtOTA4LDcgKzkwOCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6bm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRy
eUZpbmlzaGVkKHVuc2lnbmVkCiAgICAgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlz
dGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKG1lc3NhZ2VCb2R5
KS5wdHIoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
RG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zl
cjo6RmxhZz4gbmF2aWdhdGlvbkRhdGFUcmFuc2ZlciwgdWludDY0X3QgcGFnZUlEKQordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2Zl
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9t
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxXZWJD
b3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiBuYXZpZ2F0aW9uRGF0
YVRyYW5zZmVyLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVz
c2FnZSgpKQogICAgICAgICByZXR1cm47CkBAIC05MTYsNyArOTE2LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6
OlNlc3Npb25JRAogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEaWRDb21taXRD
cm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihzZXNzaW9uSUQsIGZyb21Eb21haW4sIHRvRG9t
YWluLCBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCBwYWdlSUQpLCAwKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZy
b21QcmV2YWxlbnRSZXNvdXJjZSh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVu
dFJlc291cmNlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIWNhblNlbmRNZXNz
YWdlKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzViOWU2NjU0ZjNkNjQyZjZm
Nzg5NjVhZGVkYjIyOTAzY2E1MDU1My4uOTcwODhlOWE0ZWVkYzkwNzQ1OTg3Zjc3YzM0MzgzNDg1
NDA1Yjk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTgyLDggKzgyLDYgQEAgcHVibGljOgogICAgIHVzaW5n
IE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNp
bmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47
Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0g
dWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogCiAgICAgZXhwbGljaXQg
TmV0d29ya1Byb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwpAQCAtMTMyLDcgKzEzMCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMpPiYmKTsKLSAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShQYWdlSUQsIEZyYW1lSUQsIGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgRnJhbWVJRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1v
ZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKQEAgLTE0Niw4ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklELCBib29sIGRlYnVn
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBi
b29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0
YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29u
c3QgTmF2aWdhdGVkVG9Eb21haW4mLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdh
dGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4sIFBhZ2VJRCk7Ci0gICAgdm9pZCBkaWRDb21taXRDcm9z
c1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShQYWdlSUQpOwor
ICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFp
biYsIE9wdGlvblNldDxXZWJDb3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpG
bGFnPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBj
b25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKQEAgLTIwOSwxMyArMjA3LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBo
YW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgSVBDOjpBdHRhY2htZW50Jik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCB1aW50NjRf
dCBjaGFsbGVuZ2VJRCk7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKICAgICB2b2lk
IGRpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURh
dGEmKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6
OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQo
dWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2
b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUs
IHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAg
ICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwor
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2
YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUp
OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBsb2dUZXN0
aW5nRXZlbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZXZlbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM2NzdiOGY2NWVlZDkzN2JlOWViYzcyNGI2ZjIyYmRh
Mjg1MzVhNjEuLjA0N2RmZTg4NzgxYmJjYjY4MjAxNjUwOTFiODY2ZDEzMzZmODhjYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZENyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRp
ZmllcikKIAotICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCisgICAgRGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKIAogICAgIERpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpCiAgICAgRGlk
RGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTM1LDkgKzM1LDkgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIAogICAgICMg
RGlhZ25vc3RpYyBtZXNzYWdlcyBsb2dnaW5nCi0gICAgTG9nRGlhZ25vc3RpY01lc3NhZ2UodWlu
dDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJv
b2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5n
IGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVp
bnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlw
dGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAg
TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0
LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWdu
ZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNo
b3VsZFNhbXBsZSkKICAgICBMb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShTdHJp
bmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRT
YW1wbGUpCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtNDYsOSAr
NDYsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBOb3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNo
ZWQoKQogICAgIE5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCkKICAgICBOb3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
dW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnMpCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3Vi
RnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAt
PiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nl
c3MpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWlucykgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNX
aXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykgQXN5bmMKLSAgICBEaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSh1aW50NjRfdCBwYWdlSUQpCisg
ICAgRGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVz
b3VyY2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogI2VuZGlmCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKICAgICBDb250ZW50RXh0ZW5zaW9uUnVsZXMoV2ViS2l0OjpV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggZmFlMWYzZmNhODg4NzE5YmU3ZjYyNzJk
MjA1NzIwYmI4OTAxNzdmZS4uMmFhZmYxZWMyYTY1NDkwZDg4NTQzOTk2YmY4MTAyYzJkNDljNTA0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTcsNyAr
OTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAgIHVpbnQ2NF90IGdsb2JhbE5v
dGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwogICAgIGF1dG8g
bm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25V
UkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklEKTsK
LSAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIgPSBz
dGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsKKyAg
ICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIg
PSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsK
ICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5v
dGlmaWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb25J
RFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24u
Y29weVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9u
LmdldCgpKTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwKICAg
ICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90LCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3N0
YXRpYyBib29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90LCBQ
YWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKIHsK
ICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29sIHBh
Z2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VO
b3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5kTm90
aWZpY2F0aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90
aWZpY2F0aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBwYWdl
SUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlu
cyhwYWdlTm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEzICsxNDEsMTMgQEAgdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkq
IHdlYlBhZ2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFy
Tm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRl
ckZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJ
RCgpOworICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CiAKICAgICBW
ZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAgICBnbG9iYWxOb3RpZmlj
YXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUoKSk7
CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKSwgZW5kID0gbV9u
b3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgdWludDY0X3Qg
d2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+
a2V5LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+a2V5
LnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VOb3Rp
ZmljYXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm90
CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAg
YXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQ
YWdlKQogICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qg
Z2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUu
Zmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAg
ICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNWJlZmE1YTIzZjNlMDQ0ZTBmZDQxOTA3MDQw
NGVmLi4xMTU3ODFlNDMzM2M4NTY4NGZiY2E1Y2E4NDE3NjU2NDRhOGM3MTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQ
b29sKik7CiAKLSAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiko
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIHVpbnQ2NF90IGRl
c2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0
aW9uSURzKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiko
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9u
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGNsZWFyTm90
aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlTm90
aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbik7CiAKICAgICAvLyBXZWJD
b250ZXh0U3VwcGxlbWVudApAQCAtODgsOSArODksOSBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAgLy8g
UGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlm
aWNhdGlvbiBJRAotICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWlu
dDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBz
dGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90Pj4gbV9nbG9iYWxOb3Rp
ZmljYXRpb25NYXA7CiAgICAgLy8gS2V5IHBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFu
ZCB0aGUgd2ViIHByb2Nlc3MncyBub3RpZmljYXRpb24gSUQ7IHZhbHVlIHBhaXIgY29tcHJpc2Vk
IG9mIGdsb2JhbCBub3RpZmljYXRpb24gSUQsIGFuZCBub3RpZmljYXRpb24gb2JqZWN0Ci0gICAg
SGFzaE1hcDxzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Piwgc3RkOjpwYWlyPHVpbnQ2NF90
LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKKyAgICBIYXNoTWFw
PHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8
dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmljYXRpb25zOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggNDVhMWYwZjViNWNiODBjY2M5YTBjZmJhMTYx
M2U0NGM4NzRhNTYwNy4uN2Q1NDhhNTMyMWVlY2JmYzY0YmMxNGU5MTY4ODFlOTkwYzk2OTBkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cApAQCAtNDcsNiArNDcsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBjaGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsICMjX19W
QV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwg
Zm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQogCkBAIC02MSw3ICs2Myw3IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNz
UHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVn
cm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQg
PSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdlOiAl
cCIsIG1fcGFnZS5wYWdlSUQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdldCgpKTsK
KyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zp
c2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQ
Ukl1NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBu
YXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCiAgICAgbV9wcm9jZXNzLT5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lv
bmFsUGFnZVByb3h5KCp0aGlzKTsKQEAgLTExNyw3ICsxMTksNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsK
LSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nl
c3NEaWRUZXJtaW5hdGU6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NE
aWRUZXJtaW5hdGU6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0
KCkpOwogICAgIG1fcGFnZS5wcm92aXNpb25hbFByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKIH0KIApA
QCAtMTMyLDcgKzEzNCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAg
ICAgaWYgKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNp
bXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZSBmb3IgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50
NjQoKSk7CiAgICAgQVNTRVJUKG1fbWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0
OjpjYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsKQEAgLTE1MSwxNCArMTUzLDE0IEBA
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKIAogdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxv
YWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkRGF0YTogcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3BhZ2UubG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBk
YXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsK
IH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9h
ZFJlcXVlc3Q6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkp
OwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcg
aW4gYSBuZXcgcHJvY2VzcywgdGhlbiB0aGUgbmV3IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhl
IGZyb21JdGVtJ3MgVVJMLiBJbiB0aGlzIGNhc2UsCiAgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1
cmUgd2UgdXBkYXRlIGZyb21JdGVtJ3MgcHJvY2Vzc0lkZW50aWZpZXIgYXMgd2Ugd2FudCBmdXR1
cmUgbmF2aWdhdGlvbnMgdG8gdGhpcyBCYWNrRm9yd2FyZCBpdGVtIHRvIGhhcHBlbiBpbiB0aGUK
QEAgLTE3MSw3ICsxNzMsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVz
dChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFn
ZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0g
PSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3Vz
cGVuZGVkUGFnZSgpKSB7CkBAIC0xOTYsNyArMTk4LDcgQEAgaW5saW5lIGJvb2wgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgT3B0aW9u
YWwKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0
KCksIGZyYW1lSUQpOwogICAgIEFTU0VSVCghbV9tYWluRnJhbWUpOwogCiAgICAgbV9tYWluRnJh
bWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUobV9wYWdlLCBmcmFtZUlEKTsKQEAgLTIzNCw3ICsy
MzYsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbgogICAgIGlmICghdmFsaWRhdGVJbnB1dChm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmln
YXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9u
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCku
dG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKICAgICBBU1NFUlQobV9wcm92aXNp
b25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0gdXJsOwog
CkBAIC0yNTQsNyArMjU2LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnMKICAgICBpZiAoIXZh
bGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQp
OwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJv
dmlzaW9uYWxMb2FkVVJMID0geyB9OwogCkBAIC0yNzAsNyArMjcyLDcgQEAgdm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmkKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklE
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBh
Z2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQs
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOwogICAg
IG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKIApAQCAtMjk1LDcgKzI5Nyw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWluCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7
CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCkBAIC0zNDEs
NyArMzQzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRl
bShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGUKIH0KIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3Qg
ZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKaW5kZXggNjQ1NmMxZjkxNmQ1OTc1NTA2YzE1Mjc5NGFmMmU2YjY2OGMwYmY2Yy4uN2QyZjM5
MDIzMWFlYWIzNzBjNzdmYzFhZjAyY2U0ZWQ1MjVhNWRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC05NCw3ICs5NCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwg
RnJhbWVJbmZvRGF0YSYmLAotICAgICAgICB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisg
ICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLAogICAgICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRV
UkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgYmFja0Zv
cndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYpOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJh
bWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yzo6RGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlkUmVx
dWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkubW0KaW5kZXggMDU1OWM5ODc0YmRjMzM1Y2VhOGFkNGE4NzdiMmFjMjk3MDgwNWYyNi4uNWIw
MmRkYjI0ODlmZTNiOTczMTY0MWVkYjNiZmIzNzAzNDY1NWEyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTExNSw3ICsxMTUsNyBAQCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5KFdlYlBhZ2VQcm94eSYgdwogICAgIElPU3VyZmFjZVBvb2w6OnNoYXJlZFBvb2woKS5z
ZXRQb29sU2l6ZSgwKTsKICNlbmRpZgogCi0gICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBwcm9jZXNzLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIAogICAgIGlm
IChtX3dlYlBhZ2VQcm94eS5wcmVmZXJlbmNlcygpLnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlz
aWJsZSgpKQogICAgICAgICBpbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKTsKQEAgLTEyNCw3ICsx
MjQsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5KFdlYlBhZ2VQcm94eSYgdwogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoKQogewogICAgIG1fY2Fs
bGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRl
ZCk7Ci0gICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2lkZW50aWZpZXIpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBb
bV9kaXNwbGF5TGlua0hhbmRsZXIgaW52YWxpZGF0ZV07CkBAIC00NjMsNyArNDYzLDcgQEAgdm9p
ZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZShBY3Rpdml0eVN0YXQKICAgICB9KCk7CiAKICAgICBhdXRvIHN0YXJ0VGltZSA9IE1v
bm90b25pY1RpbWU6Om5vdygpOwotICAgIHdoaWxlIChwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlPihtX2lkZW50aWZpZXIudG9VSW50NjQoKSwg
YWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFy
dFRpbWUpLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdl
QXJyaXZlcykpIHsKKyAgICB3aGlsZSAocHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFu
ZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OkNvbW1pdExheWVyVHJlZT4obV9pZGVudGlmaWVyLCBhY3Rpdml0eVN0YXRlVXBkYXRl
VGltZW91dCAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSksIElQQzo6V2FpdEZv
ck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkgewogICAgICAg
ICBpZiAoYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID09IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hy
b25vdXMgfHwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEIDw9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggNWExNGZiZTRkY2Q0
YjM4YzdhMGJmZDVjMmY3MGEwNmM1YzU3NWY4Ni4uYjJmNzcyOWZkMzkzNWY3MmUxYmM5MTE1YTMw
YTE4ZjY0ZTM5ZmQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5PiYmIGNoYWxsZW5nZSkKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYg
Y2hhbGxlbmdlKQogewogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwogICAgIFVOVVNFRF9QQVJB
TShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuaAppbmRleCA5MzI0NWYwZGM3NmYyNjU3NTdlYzJiZmU3MTYzZTllZGFh
ZTljMGYwLi5lOTM2NWFmYWM0ZjQ3ZDdmZDc0N2Y5ODk4M2FkOTk5MGU4YWI5NzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5o
CkBAIC00MSwxNCArNDEsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
PiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk+JiYpOwogCiAgICAgdm9pZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpOwogICAgIHZv
aWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSB7IHJldHVybiBtX3JlZ2lz
dHJhYmxlRG9tYWluOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VyUGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAKIHByaXZhdGU6CiAg
ICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAg
ICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1aW50NjRfdCBt
X3NlcnZpY2VXb3JrZXJQYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9zZXJ2aWNlV29ya2VyUGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCAxMzQ2
ZmNjMDVjNWEyOWNkYjA4NmY3MmVmNDk2NzgyY2IyYjAwNWFlLi5mNmQzYjUzNmRmOGFhYjE5N2Q5
MTFlZDE0ZDJlYTQwZmVmZjJlMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFN1c3BlbmRlZFBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsCiAKIGNvbnN0IGNoYXIqIFN1c3BlbmRlZFBhZ2VQcm94eTo6bG9nZ2luZ1N0cmluZygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoMHgiLCBoZXgocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBwYWdlIElEICIsIG1fcGFnZS5wYWdlSUQoKSwgIiwg
bV9zdXNwZW5zaW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc3VzcGVuc2lvblN0
YXRlKSwgJyknKTsKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgpLnRv
VUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDk3MTFiMjMzNzIxNTg3OTExNmMzZGQ4YjQ2NmVm
NTU4NWFlOTg1ODIuLjgzNGRiN2FlMDc5MmFjYjU0NTkzODAwODA2YzkyYjJmZmE1Y2MzMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQ5LDYgKzQ5LDgg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBz
dGF0aWMgSGFzaE1hcDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eSo+JiB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+PiBwcm94aWVzOwpA
QCAtNzMsNyArNzUsNyBAQCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KCkKIHsKICAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94aWVzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDog
bV9wcm9jZXNzZXMpIHsKLSAgICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKICAgICAgICAgcHJvY2Vzcy0+ZGlk
RGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCp0aGlzKTsKICAgICB9CiAjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTg1LDcgKzg3LDcgQEAgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpCiB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKFdlYlByb2Nlc3NQcm94
eSYgd2ViUHJvY2Vzc1Byb3h5LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQoJndlYlByb2Nlc3NQcm94eSkuaXNOZXdFbnRy
eSkKLSAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCksICp0aGlzKTsKKyAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLCAqdGhpcyk7CiAKICAgICBBU1NF
UlQocGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcy5pc0VtcHR5KCkpOwogICAgIGZvciAoY29u
c3QgYXV0byYgd29ybGQgOiBtX3VzZXJDb250ZW50V29ybGRzKQpAQCAtMTE1LDcgKzExNyw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5z
KCZ3ZWJQcm9jZXNzUHJveHkpKTsKIAogICAgIG1fcHJvY2Vzc2VzLnJlbW92ZSgmd2ViUHJvY2Vz
c1Byb3h5KTsKLSAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250
ZW50V29ybGQmIHdvcmxkKQpAQCAtMTI2LDcgKzEyOCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdv
cmxkCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3VzZXJDb250ZW50V29ybGRzLmFkZCgmd29ybGQp
OwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyQ29udGVudFdvcmxk
cyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwgd29ybGQubmFtZSgpKSB9KSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyQ29udGVudFdvcmxkcyh7IHN0
ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwgd29ybGQubmFtZSgpKSB9KSwgaWRlbnRp
ZmllcigpKTsKICAgICB9CiB9CiAKQEAgLTE1MCw3ICsxNTIsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJD
b250ZW50VwogewogICAgIGlmIChzaG91bGRTZW5kUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNz
YWdlKHdvcmxkLCBudW1iZXJPZlVzZXNUb1JlbW92ZSkpIHsKICAgICAgICAgZm9yIChXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRX
b3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlk
ZW50aWZpZXIoKSk7CiAgICAgfQogfQogCkBAIC0xNjMsNyArMTY1LDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoSGFzaENv
dW50ZWRTZXQ8UmUKICAgICB9CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHdvcmxk
c1RvUmVtb3ZlKSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQsIElu
amVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSkKQEAgLTE3NSw3ICsxNzcsNyBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6
VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSQogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCku
YXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNz
IDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmll
cigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGlt
bWVkaWF0ZWx5KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRzKHsg
eyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlw
dC51c2VyU2NyaXB0KCkgfSB9LCBpbW1lZGlhdGVseSksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpV
c2VyU2NyaXB0JiB1c2VyU2NyaXB0KQpAQCAtMTgzLDcgKzE4NSw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0CiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2Ny
aXB0LnVzZXJDb250ZW50V29ybGQoKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdCh3b3JsZC0+aWRlbnRpZmllcigp
LCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmll
cigpKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkucmVt
b3ZlQWxsKCZ1c2VyU2NyaXB0KTsKIApAQCAtMTkzLDcgKzE5NSw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlw
dHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigp
KTsKIAogICAgIHVuc2lnbmVkIHVzZXJTY3JpcHRzUmVtb3ZlZCA9IG1fdXNlclNjcmlwdHMtPnJl
bW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclNjcmlwdD4oWyZdKGNvbnN0IGF1dG8mIHVz
ZXJTY3JpcHQpIHsKICAgICAgICAgcmV0dXJuICZ1c2VyU2NyaXB0LT51c2VyQ29udGVudFdvcmxk
KCkgPT0gJndvcmxkOwpAQCAtMjE0LDcgKzIxNiw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKICAgICAgICAgd29ybGRJZGVudGlm
aWVycy51bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIua2V5LT5pZGVudGlmaWVyKCkpOwog
CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1v
dmVBbGxVc2VyU2NyaXB0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVy
KCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCkBAIC0yMzAs
NyArMjMyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0
eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclMKICAgICBtX3VzZXJTdHlsZVNoZWV0
cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTdHlsZVNoZWV0KTsKIAogICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsg
eyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJT
dHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IHsgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpLCB3
b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC51c2VyU3R5bGVTaGVldCgpIH0gfSks
IGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0
KQpAQCAtMjM4LDcgKzI0MCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzCiAgICAgUmVmPEFQ
STo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5bGVTaGVldC51c2VyQ29udGVudFdv
cmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNo
ZWV0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2Vy
U3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVy
KCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCku
cmVtb3ZlQWxsKCZ1c2VyU3R5bGVTaGVldCk7CiAKQEAgLTI0OCw3ICsyNTAsNyBAQCB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVz
ZXJTdHlsZVNoZWV0JiB1cwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAg
ICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVB
bGxVc2VyU3R5bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVy
KCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1bnNpZ25lZCB1c2VyU3R5bGVTaGVldHNSZW1v
dmVkID0gbV91c2VyU3R5bGVTaGVldHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNl
clN0eWxlU2hlZXQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVldCkgewogICAgICAgICBy
ZXR1cm4gJnVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkOwpAQCAt
MjY5LDcgKzI3MSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92
ZUFsbFVzZXJTdHlsZVNoZWV0cygpCiAgICAgICAgIHdvcmxkSWRlbnRpZmllcnMudW5jaGVja2Vk
QXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigpKTsKIAogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxl
U2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkpOwog
CiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAtMjkwLDcg
KzI5Miw3IEBAIGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlCiAgICAgbV9zY3JpcHRNZXNzYWdlSGFu
ZGxlcnMuYWRkKGhhbmRsZXIuaWRlbnRpZmllcigpLCAmaGFuZGxlcik7CiAKICAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnMoeyB7IGhhbmRsZXIuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigp
LCBoYW5kbGVyLm5hbWUoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVyKCksIHdvcmxkLT5p
ZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIoKSk7CiAgICAgCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMDAsNyArMzAyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBT
dHJpbmcKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5iZWdpbigp
LCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBuYW1lICYmICZpdC0+dmFsdWUtPnVz
ZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQpIHsKICAgICAgICAgICAgIGZvciAoV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXIod29ybGQuaWRlbnRpZmllcigpLCBpdC0+dmFsdWUtPmlkZW50aWZpZXIo
KSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0LT52YWx1ZS0+aWRlbnRpZmllcigp
KSwgaWRlbnRpZmllcigpKTsKIAogICAgICAgICAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMu
cmVtb3ZlKGl0KTsKIApAQCAtMzEzLDcgKzMxNSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5n
CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2Fn
ZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChXZWJQ
cm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHdvcmxkLmlk
ZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIG51bWJlclJlbW92
ZWQgPSAwOwogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBl
bnRyeSkgewpAQCAtMzI3LDcgKzMyOSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVuCiAgICAg
cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQsIG51bWJlclJlbW92ZWQpOwogfQogCi12
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJl
ZmVyZW5jZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0zNTEsNyArMzUzLDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkQ29udGVudFJ1bGVMaXN0KEFQSTo6Q29u
dGVudFJ1bGVMaXN0JiBjb24KICAgICBhdXRvIHBhaXIgPSBzdGQ6Om1ha2VfcGFpcihjb250ZW50
UnVsZUxpc3QubmFtZSgpLCBjb250ZW50UnVsZUxpc3QuY29tcGlsZWRSdWxlTGlzdCgpLmRhdGEo
KSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50
UnVsZUxpc3RzKHsgcGFpciB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRl
bnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChhdXRvKiBw
cm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7
IGlkZW50aWZpZXIoKSwgeyBwYWlyIH0gfSwgMCk7CkBAIC0zNjIsNyArMzY0LDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICBtX2NvbnRlbnRSdWxlTGlzdHMucmVtb3ZlKG5hbWUpOwogCiAg
ICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVM
aXN0KG5hbWUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVM
aXN0KG5hbWUpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9u
ZXR3b3JrUHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0IHsgaWRlbnRpZmll
cigpLCBuYW1lIH0sIDApOwpAQCAtMzczLDcgKzM3NSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogICAgIG1fY29udGVu
dFJ1bGVMaXN0cy5jbGVhcigpOwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNz
ZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkpOwogCiAgICAg
Zm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlQWxs
Q29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSB9LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDYyMzMwMTExNmVkMWQ2NTRmMmEzNDg5YTdmMGY2MjQ3
NzY2MTI0YWUuLjBlZDM2YTU5Y2MzYTcxZDlmMjE5ZTE5NDg0MjljOGE3OTFkMGM2MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTEwLDcg
KzExMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0
X3QgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJ
RCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgRnJhbWVJbmZv
RGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpOwogCiAgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoQVBJOjpVc2VyQ29u
dGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4MTcxNDM1
MWZjZTc3NWRhYmM0NzE4ZDQzZjg4ZTM2ZjVmNTBmZWU0Li4yNWE0ZTI5MTI3NGVlMDM2OWZkZDE2
ZWUwMDVjMmM5NWY5ZmFmMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSArMjQsNSBAQAogICovCiAKIG1lc3NhZ2Vz
IC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IHsKLURpZFBvc3RNZXNzYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2Fu
dHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
bWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRzQ29ubmVj
dGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAKaW5kZXggMjQ4MTgyZDgwOTIxZmUxYTE5ZTVjNjM0YjE2YTI0YzdjN2QxNzZlZi4u
MWU5MWFiYjZlZmRkMGNkNTk2Zjk0ZGFjZThmNzI2OGUzMTg0YTVjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC02NiwxMCAr
NjYsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1TY3JvbGxFdmVudFJhdGlvRm9yU3dp
cGUgPSAwLjU7CiBzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJU
cmVlU2l6ZVRhcmdldEZyYWN0aW9uID0gMC41OwogI2VuZGlmCiAKLXN0YXRpYyBIYXNoTWFwPHVp
bnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0Zv
ckFsbFBhZ2VzKCkKK3N0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkKIHsKICAgICAv
LyBUaGUga2V5IGluIHRoaXMgbWFwIGlzIHRoZSBhc3NvY2lhdGVkIHBhZ2UgSUQuCi0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIFZpZXdHZXN0dXJlQ29udHJvbGxl
cio+PiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1
cmVDb250cm9sbGVyczsKICAgICByZXR1cm4gdmlld0dlc3R1cmVDb250cm9sbGVycy5nZXQoKTsK
IH0KIApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb25u
ZWN0VG9Qcm9jZXNzKCkKICAgICBtX2lzQ29ubmVjdGVkVG9Qcm9jZXNzID0gdHJ1ZTsKIH0KIAot
Vmlld0dlc3R1cmVDb250cm9sbGVyKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbnRyb2xsZXJG
b3JHZXN0dXJlKHVpbnQ2NF90IHBhZ2VJRCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJl
SUQgZ2VzdHVyZUlEKQorVmlld0dlc3R1cmVDb250cm9sbGVyKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmNvbnRyb2xsZXJGb3JHZXN0dXJlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpHZXN0dXJlSUQgZ2VzdHVyZUlEKQogewogICAgIGF1dG8gZ2VzdHVyZUNv
bnRyb2xsZXJJdGVyID0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZmluZChw
YWdlSUQpOwogICAgIGlmIChnZXN0dXJlQ29udHJvbGxlckl0ZXIgPT0gdmlld0dlc3R1cmVDb250
cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZW5kKCkpCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmZvcmNlUmVwYWludElmTmVlZGVkKCkKIAogICAgIG1faGFzT3V0
c3RhbmRpbmdSZXBhaW50UmVxdWVzdCA9IHRydWU7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBt
X3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7
CiAgICAgbV93ZWJQYWdlUHJveHkuZm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtw
YWdlSUQsIGdlc3R1cmVJRF0gKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAg
aWYgKGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQs
IGdlc3R1cmVJRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oCmluZGV4IDQzMWMyNzY2ZDA4MjYxZTUyY2VmYjIwNmQ2Y2QyOTliMTJjZjEzOTQu
LmMxNjcwZDNhOTRjZWYzZDkwNmFmNDk0OWNkNTQxMzYwNDk0NzYzMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
QEAgLTE3NSw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
LgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250
cm9sbGVyRm9yR2VzdHVyZSh1aW50NjRfdCBwYWdlSUQsIEdlc3R1cmVJRCk7CisgICAgc3RhdGlj
IFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxlckZvckdlc3R1cmUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIEdlc3R1cmVJRCk7CiAKICAgICBzdGF0aWMgR2VzdHVyZUlEIHRha2VOZXh0
R2VzdHVyZUlEKCk7CiAgICAgdm9pZCB3aWxsQmVnaW5HZXN0dXJlKFZpZXdHZXN0dXJlVHlwZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCmluZGV4IGYy
ZTdiOTM0MDU3NjZlYTVlOGM3NWVhYmY1YWM2YTRmZDRjMDRkZWUuLjk5MWRjMmZjZmY5ZDQzYzVl
MDg3Njg2NGNjMjgwNDM4ZDllMzRhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
c2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0
b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6
Q29ubmUKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFZpc2l0ZWRMaW5rU3Rv
cmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU2hhcmVkU3Ry
aW5nSGFzaCBsaW5rSGFzaCkKK3ZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRlZExpbmtI
YXNoRnJvbVBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNoIGxpbmtI
YXNoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZUlEKSkgewogICAgICAgICBpZiAoIXdlYlBhZ2VQcm94eS0+YWRkc1Zpc2l0ZWRM
aW5rcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4
IDA2ZjIwYmE5MWNiZGJiYTI2Nzk1ZjM4YzYwYzgxYjY4ZDgxNzU5YTUuLjAyYjQ5YmFjNTVlMjQ4
NmJkM2U4OWE5ZWU4OGVhODgzMzZmMWVmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9W
aXNpdGVkTGlua1N0b3JlLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEludmFsaWRhdGVTaGFyZWRNZW1vcnkoKSBmaW5hbDsKICAgICB2b2lkIGRpZFVwZGF0ZVNoYXJl
ZFN0cmluZ0hhc2hlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaD4mIGFk
ZGVkSGFzaGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaD4mIHJlbW92
ZWRIYXNoZXMpIGZpbmFsOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1
aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gpOworICAgIHZvaWQgYWRk
VmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlNoYXJlZFN0cmluZ0hhc2gpOwogCiAgICAgdm9pZCBzZW5kU3RvcmVIYW5kbGVUb1Byb2Nlc3Mo
V2ViUHJvY2Vzc1Byb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9W
aXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCmluZGV4IGU3ODYyZTM2NWIwZmZlMTM5MTQ2M2Mw
MDcwNjFkN2U3ZjhmOGQ1NGIuLjJlNjZjNDI4MDhlYmI3ZWJjZjM5MzE5YjEwODZhOTI3ZjMzMTM2
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9y
ZS5tZXNzYWdlcy5pbgpAQCAtMjEsNSArMjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdl
cyAtPiBWaXNpdGVkTGlua1N0b3JlIHsKLSAgICBBZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGxpbmtIYXNoKQorICAgIEFkZFZpc2l0ZWRMaW5rSGFz
aEZyb21QYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgbGlua0hh
c2gpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlMGQz
NTY0MWI5OWQ3ZTVlY2E2MWI4MzE5NTg5ZWM2MTUyMzlhNWM4Li45OTJkNzY1ZTdmMzE5Y2VjMGFj
YzFlZGMwMGMxNDFhNWFmZmQ3MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTM4MiwxMiArMzgyLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JNb3N0
VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc2VsZWN0ZWRQYWdlKTsKIH0KIAotUmVmPFdlYlBhZ2VQcm94
eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNy
ZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmln
dXJhdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNs
aWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiB9CiAKLVdl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQorV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAg
ICAgOiBtX3BhZ2VDbGllbnQobWFrZVdlYWtQdHIocGFnZUNsaWVudCkpCiAgICAgLCBtX2NvbmZp
Z3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKICAgICAsIG1fbmF2aWdhdGlvbkNsaWVu
dChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKSkKQEAgLTQzNiw3ICs0MzYs
NyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogI2VuZGlmCiAgICAgLCBtX3Jlc2V0UmVjZW50
Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6cmVz
ZXRSZWNlbnRDcmFzaENvdW50KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJjb25zdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKIAogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5kcmF3c0JhY2tncm91bmQoKSkKICAgICAg
ICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwpAQCAtNDkw
LDcgKzQ5MCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VD
bGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAKIFdlYlBhZ2VQcm94eTo6fldl
YlBhZ2VQcm94eSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVz
dHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IEFTU0VSVChtX3Byb2Nlc3MtPndlYlBhZ2UobV9wYWdlSUQpICE9IHRoaXMpOwogI2lmICFBU1NF
UlRfRElTQUJMRUQKQEAgLTcwOSw3ICs3MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNo
UHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBBU1NFUlQoIWhhc1J1bm5pbmdQcm9jZXNzKCkpOwog
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzczogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1
bmNoUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcHJvY2Vz
cy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3Rv
cmU6Olllcyk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CkBAIC03NjQs
NyArNzY0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2li
bGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1
c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFp
bkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSk7CiAKLSAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUi
IFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBi
YWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKSwgc3VzcGVuZGVkUGFnZS0+bG9n
Z2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8g
ZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CisgICAgTE9HKFByb2Nlc3NTd2Fw
cGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVz
IGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlE
KCkudG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0
cmluZygpIDogMCk7CiAKICAgICAvLyBJZiB0aGUgY2xpZW50IGZvcmNlZCBhIHN3YXAgdGhlbiBp
dCBtYXkgbm90IGJlIHdlYi1jb21wYXRpYmxlIHRvIGtlZXAgdGhlIHByZXZpb3VzIHBhZ2UgYmVj
YXVzZSBvdGhlciB3aW5kb3dzIG1heSBoYXZlIGFuIG9wZW5lciBsaW5rIHRvIGl0LiBXZSB0aHVz
IGNsb3NlIGl0IGFzIHNvb24gYXMgd2UKICAgICAvLyBjYW4gZG8gc28gd2l0aG91dCBmbGFzaGlu
Zy4KQEAgLTc4Miw3ICs3ODIsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogdm9pZCBXZWJQ
YWdlUHJveHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlYSwgUmVmUHRy
PFdlYkZyYW1lUHJveHk+JiYgbWFpbkZyYW1lKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3dhcFRvV2ViUHJvY2Vzczog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
c3dhcFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1f
cHJvY2VzcyA9IFdURk1vdmUocHJvY2Vzcyk7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gbV9w
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CkBAIC04NzQsMTAgKzg3NCwxMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAKIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNo
UHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKQEAgLTg4Niw3ICs4
ODYsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nl
c3NGb3JSZWxvYWQoKQogICAgIGxhdW5jaFByb2Nlc3MocmVnaXN0cmFibGVEb21haW4pOwogCiAg
ICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBj
dXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3Vy
cmVudCBpdGVtIHRvIHJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC05MDEsMTAgKzkwMSwxMCBAQCBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQog
CiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NXaXRo
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dp
dGhJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9z
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJv
Y2Vzc1dpdGhJdGVtOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTog
cGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjbG9zZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwogCkBAIC0xMDMy
LDcgKzEwMzIsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5Q2xvc2U6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICAvLyBDbG9zZSB3aXRob3V0IGRlbGF5IGlmIHRoZSBwcm9j
ZXNzIGFsbG93cyBpdC4gT3VyIGdvYWwgaXMgdG8gdGVybWluYXRlCiAgICAgLy8gdGhlIHByb2Nl
c3MsIHNvIHdlIGNoZWNrIGEgcGVyLXByb2Nlc3Mgc3RhdHVzIGJpdC4KQEAgLTEwNzgsNyArMTA3
OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZFJlcXVlc3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNz
KFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC51cmwoKSB9KTsKQEAgLTEwOTIsNyArMTA5Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsK
IAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rp
b24oKTsKIApAQCAtMTEyMSwxMCArMTEyMSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJl
cXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlcwog
CiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0
cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxvYWRGaWxlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBw
YWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTMzLDcgKzExMzMsNyBAQCBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0
cmluZywgY29ucwogCiAgICAgVVJMIGZpbGVVUkwgPSBVUkwoVVJMKCksIGZpbGVVUkxTdHJpbmcp
OwogICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTQzLDcgKzExNDMsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVj
dG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAg
ICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwg
aXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2Fs
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTczLDEwICsxMTczLDEwIEBAIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJM
U3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9h
ZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibG9hZERhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9z
ZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApAQCAtMTE5MCw3ICsxMTkwLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0aE5h
dmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKIAogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAgLTEyMTYsMTMgKzEyMTYsMTMgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0
ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGluIHRoZSBw
cm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBub3QgYXR0
ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9hZCBhcyB0
aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKICAgICAvLyBo
YW5kbGVkIHByb3Blcmx5LgogICAgIGlmIChtX2lzQ2xvc2VkIHx8IG1faXNMb2FkaW5nQWx0ZXJu
YXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExvYWQpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xv
c2VkIChvciBvdGhlcik6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9y
IG90aGVyKTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTI1OSwxMCArMTI1OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFs
dGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgUwog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJj
aGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0
YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xvc2Vk
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMjg2LDEwICsxMjg2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2
ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9pbnQgc2NyZWVu
UG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9z
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzA1LDEwICsx
MzA1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywKIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0
b3BMb2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9w
TG9hZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAic3RvcExvYWRpbmc6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2Ug
aXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBh
Z2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMzIyLDcgKzEzMjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJl
bG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7CiAKQEAgLTEzOTksNyArMTM5OSw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0Jh
Y2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBl
IGZyYW1lTG9hZFR5cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
Z29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFj
a0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0
YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKQEAgLTE0MjEsMTAgKzE0MjEs
MTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJl
c3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVz
dG9yZVNjcm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1NTEsNyArMTU1MSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpjbGVhckluc3BlY3RvclRhcmdldHMoKQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCiB7Ci0gICAgU3RyaW5nIHBhZ2VUYXJnZXRJZCA9
IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQpOworICAgIFN0cmluZyBwYWdlVGFyZ2V0SWQg
PSBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgIG1faW5zcGVj
dG9yQ29udHJvbGxlci0+Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJZCwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0KIApAQCAtMjg3NCw3ICsyODc0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9u
IGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zp
c2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVp
bnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2Vy
dGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNv
cmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6
IHByZXZpb3VzUElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbWFpbkZyYW1lSURJ
blByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFrZU9wdGlvbmFsKG1fbWFpbkZyYW1l
LT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OwogCkBAIC0yOTE0LDcgKzI5MTQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0
aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVf
cHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlUHJveHksIFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
IHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBuZXdQcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIG5ld1Byb2Nlc3NQSUQgPSAlaSwgaGFzU3Vz
cGVuZGVkUGFnZSA9ICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRl
ZFBhZ2VQcm94eSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmlnYXRpb24gJSIg
UFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlv
bklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKIAogICAgIGlmIChtX3Byb3Zpc2lv
bmFsUGFnZSkgewpAQCAtMzA3NSw3ICszMDc1LDcgQEAgU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94
eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXQK
IAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlLCBib29sIG5hdmlnYXRlKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRl
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
IAogICAgIG1fc2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVyVHJlZVNpemUgPSAwOwogICAgIG1faGl0
UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQgPSBmYWxzZTsKQEAgLTM5MzMsOCArMzkzMyw4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2
aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdh
dGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIg
UFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAl
cyIsIG1fcGFnZUlELCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcmFtZUlELCBuYXZp
Z2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBMT0coTG9h
ZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBpZCAlaSBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRp
b25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQudG9VSW50NjQoKSwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24g
PSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMzk4Niw3ICszOTg2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGYKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQog
ewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZp
Z2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDE1LDcgKzQwMTUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
dXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1l
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIndpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90
ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDAyOCw3ICs0MDI4LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHIKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsK
IAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAg
LTQwNzUsOCArNDA3NSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxD
b250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1
NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
IHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFp
biA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQg
IiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRv
IHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQxNTQsOSArNDE1NCw5IEBAIHN0YXRpYyBPcHRpb25T
ZXQ8Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gY2hlY2tJZk5hdmlnYXRp
b25Db250YWluCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVG
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNv
bnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewot
ICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRD
b21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1fcGFnZUlELCBuYXZp
Z2F0aW9uSUQpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQ
Ukl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1f
cGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAi
KEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5v
dzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAg
IFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQyNjgs
NyArNDI2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCks
IGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVu
dCgpKTsKIApAQCAtNDI5Miw3ICs0MjkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmkKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
TE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSAtIFdlYlBh
Z2VQcm94eSAlcCB3aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiBkaWRGaW5pc2hMb2FkIiwg
dGhpcywgbmF2aWdhdGlvbklEKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
ZGlkRmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MzM3LDcgKzQzMzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBj
b2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQzNzksNyArNDM3OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25G
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90
IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBVUkwmJiB1cmwsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NTQ5LDcg
KzQ1NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25z
dCBVUkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxpc3RlbgogI2VuZGlmCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwK
LSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJ
RCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklE
LCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwKQEAgLTQ1NTcsNyArNDU1Nyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLAotICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAog
ICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKQEAg
LTQ1NzMsNyArNDU3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwK
LSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBz
ZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAl
cyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNDcxMyw3ICs0NzEzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5n
RnJhbWUgPT0gJmZyYW1lKQogICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRp
b25GcmFtZUluZm8uY29weVJlZigpOwogICAgICAgICBlbHNlIGlmICghZnJvbUFQSSkKLSAgICAg
ICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2Uob3Jp
Z2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8g
PSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2lu
YXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxs
cHRyKTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3MtPnVz
ZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2Vu
SWRlbnRpZmllcik7CiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxk
U3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgpAQCAtNDc4Niw3
ICs0Nzg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWcKICNlbmRpZgogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJh
bWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAt
NDgwNCw3ICs0ODA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXMKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5G
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtNDkzNyw3ICs0OTM3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdl
Yk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
Y29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90IGZyYW1lSUQpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGFTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTU3LDcgKzQ5NTcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3Ry
aW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90
IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTg0LDcgKzQ5ODQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291
cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZl
clJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcs
IHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMzIsMTQgKzUwMzIsMTQgQEAgV0VCUEFHRVBST1hZ
X0xPQURPUFRJTUlaRVJfQURESVRJT05TXzYKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVO
ZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVO
ZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpD
cmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNL
KG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEu
ZnJhbWVJRCkpOwotICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9y
aWdpbmF0aW5nUGFnZUlEKSk7CisgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1Bh
Z2VJRCA/IG1fcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7
CiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwo
KSA6IFVSTCgpOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RG
TW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0gICAgICAgICAgICByZXBseSgwLCBXVEY6Om51bGxvcHQp
OworICAgICAgICAgICAgcmVwbHkoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTU4NDgsNyArNTg0OCw3IEBAIElQQzo6Q29u
bmVjdGlvbiogV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAK
IHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dAogewotICAgIHJldHVybiBtX3BhZ2VJRDsKKyAgICByZXR1cm4gbV9wYWdlSUQudG9VSW50NjQo
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudShXZWJQ
b3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCkKQEAgLTY3MjksNyArNjcy
OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZVNldExhcmdlc3RGcmFtZUNoYW5nZWQodWlu
dDY0X3QgZnJhbWVJRCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY3NDEsNyArNjc0MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29t
ZVJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggMDdjNTUyNWE5YmJmNDU3M2Y3NGY2ODI4ZDkxMzAwMTE3ODM4
OThkMC4uNGIwMDNkNjg5ZDg4MmZmMmRjYTU2NjJkZjUxN2E1YjYyYWE3YjAxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgyLDYgKzgyLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVByb2R1Y2VyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg+CkBAIC0zODIsMTQg
KzM4MywxNCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpQYWdlPgogI2VuZGlmCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8V2ViUGFnZVByb3h5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJQYWdlUHJveHk+
IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBS
ZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2aXJ0dWFsIH5X
ZWJQYWdlUHJveHkoKTsKIAogICAgIHN0YXRpYyB2b2lkIGZvck1vc3RWaXNpYmxlV2ViUGFnZUlm
QW55KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlBhZ2VQcm94eSopPiYmKTsKIAogICAgIGNvbnN0IEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsKIAotICAgIHVpbnQ2
NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KIAogICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCkBAIC0xNTA1LDcgKzE1MDYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgdWludDY0
X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKLSAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCisgICAgICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwKICAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAogICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE1MTQs
NyArMTUxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKICAg
ICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
Y29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmKTsKICAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0
YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEm
JiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwK
ICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNv
bnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7
CkBAIC0xNTU0LDcgKzE1NTUsNyBAQCBXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpFUl9BRERJVElP
TlNfMQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2
NF90IGV4cGVjdGVkVXNhZ2UsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+
JiYpOwogCiBwcml2YXRlOgotICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vz
c1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CisgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZv
aWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKICAgICB2b2lkIG5vdGlmeVByb2Nlc3NQb29sVG9Q
cmV3YXJtKCk7CkBAIC0xNjMwLDEzICsxNjMxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRE
ZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCiAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZy
YW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAg
ICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3Qg
VXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJh
bWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1l
SW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29s
IGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVk
UmVwbHkmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNjU4LDcgKzE2NTksNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIC8vIFVJIGNs
aWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBjcmVh
dGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9p
ZCBzaG93UGFnZSgpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYp
OwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmKTsKQEAgLTIz
MzAsNyArMjMzMSw3IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU18yCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU+IG1fdmFsaWRhdGlvbkJ1YmJsZTsK
ICNlbmRpZgogCi0gICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBib29sIG1faXNQYWdlU3VzcGVuZGVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zpc2l0ZWRMaW5rcyB7IHRydWUgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0
MDQ2ZTJlMmIyNDYyMjkzZTI5ZmE0NTgwZjA3MTRhOTBjMzk5ODMzLi5hODQ5ODQ3YjUzNWQyNmUx
NGNiZDI4MDIwYjM3OWE3ZjE3NTdkNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBVSSBtZXNzYWdlcwotICAgIENyZWF0ZU5ld1BhZ2Uo
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgc3RydWN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzIHdpbmRvd0ZlYXR1cmVzLCBzdHJ1Y3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSkgLT4gKHVp
bnQ2NF90IG5ld1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzPiBuZXdQYWdlUGFyYW1ldGVycykgU3luY2hyb25vdXMKKyAgICBDcmVhdGVOZXdQYWdlKHN0
cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMg
d2luZG93RmVhdHVyZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmln
YXRpb25BY3Rpb25EYXRhKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5l
d1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXdQ
YWdlUGFyYW1ldGVycykgU3luY2hyb25vdXMKICAgICBTaG93UGFnZSgpCiAgICAgQ2xvc2VQYWdl
KGJvb2wgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIpCiAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVp
bnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpIFN5bmNocm9ub3VzCkBAIC0xMDQs
OCArMTA0LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgUG9saWN5IG1l
c3NhZ2VzCiAgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5n
IGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5m
b0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHks
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKLSAgICBEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkg
LT4gKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIs
IGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBuZXdOYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25h
bDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgU3luY2hyb25v
dXMKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3Bv
bnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQorICAg
IERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJv
b2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0
aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVk
aXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIGVudW06dWludDhfdCBX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9u
SUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnNp
dGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgU3luY2hyb25vdXMKICAgICBEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwCmluZGV4IGM4MDIzZGU0MTYxNjQ3NTAxMGY0Mjgy
MzlhN2JlZDA3YjE3Zjg1ZDcuLmY0OTcxNTFkNzVjNWU2ZjFmMjg2YWFhNzllOGE2NDdjNmE5ZjM2
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGlt
ZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlm
ZXRpbWVPYnNlcnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXZWJQcm9jZXNzTGlmZXRp
bWVPYnNlcnZlcjo6YWRkV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHJv
Y2UKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvY2Vzcy5pc1ByZXdhcm1lZCgpKTsKIAogICAgIGlm
IChtX3Byb2Nlc3Nlcy5hZGQoJnByb2Nlc3MpLmlzTmV3RW50cnkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBh
Z2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vz
c0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAgICAgUkVMRUFTRV9M
T0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lk
ZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgICAgICB3
ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHByb2Nlc3MsICpwcm9jZXNzLmNvbm5lY3Rpb24o
KSk7CiAgICAgfQogCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lT2Jz
ZXJ2ZXI6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYlByCiAg
ICAgd2ViUGFnZURpZENsb3NlQ29ubmVjdGlvbih3ZWJQYWdlUHJveHksICpwcm9jZXNzLmNvbm5l
Y3Rpb24oKSk7CiAKICAgICBpZiAobV9wcm9jZXNzZXMucmVtb3ZlKCZwcm9jZXNzKSkgewotICAg
ICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZl
cjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywg
cHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAg
ICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZl
cjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywg
cHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50
NjQoKSk7CiAgICAgICAgIHdlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24ocHJvY2VzcywgKnBy
b2Nlc3MuY29ubmVjdGlvbigpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOWJmYmZkZTMwN2U2NGIzZTZjY2VjNmJjY2IyYzRkZmQ3
YjRiOWE2YS4uZWNkOGQ5MDVlMDE1Y2YyNTA1ZDU5OWFmOGNiYWVkOTEzNTAxNjI5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTI5Niw5ICsxMjk2
LDkgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vy
cyhjb25zdCBXZWJzaXRlRGF0YVN0b3JlJiBzdG8KIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nl
c3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJ
RHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDx1aW50NjRfdD4oKSkuaXRl
cmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9Q
YWdlSURzTWFwLmFkZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIEhhc2hTZXQ8UGFnZUlkZW50aWZp
ZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3Rv
cmUuc2Vzc2lvbklEKCk7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRl
RGF0YQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0
ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CiAgICAgYXV0
byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CiAgICAgYXV0byBpdGVyYXRvciA9
IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Npb25JRCk7CkBAIC0yMjExLDcgKzIyMTEs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlv
blN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi1TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdv
cmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0X3QgcGFnZUlEKSBjb25zdAorU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHlGcm9tUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICAvLyBG
SVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7CkBAIC0yNTIwLDcg
KzI1MjAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhckN1cnJlbnRNb2RpZmllclN0YXRl
Rm9yVGVzdGluZygpCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNm
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJv
bURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBPcHRpb25TZXQ8Q3Jv
c3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gbmF2aWdhdGlvbkRhdGFUcmFuc2Zl
ciwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
RG9tYWluLCBPcHRpb25TZXQ8Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4g
bmF2aWdhdGlvbkRhdGFUcmFuc2ZlciwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlm
ICghbV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZDBhOTIzNjcyYmJkMjdkYTg5NGRiNmFkZDQ4YmMw
ODgxY2UzYzVjMS4uMWQyOTgyNWM4MzRmMTA0ZWQxOTc5YTQwMDFhMjUwYWVhNmI2ZTYxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xNTAsNiArMTUwLDE4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOworICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdl
UmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBP
YmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgeworICAgICAgICByZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpKTsKKyAgICB9CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsK
QEAgLTE5NSw4ICsyMDcsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVh
dGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAK
LSAgICB2b2lkIHBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQs
IFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3Rv
cmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVE
YXRhU3RvcmUmKTsKKyAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICBib29sIGhhc1BhZ2Vz
VXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKSBjb25zdDsKIAogICAgIGNv
bnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1
cmF0aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQpAQCAtMzY3LDcgKzM3OSw3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5Jiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsK
LSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIFNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKSBjb25zdDsKICAgICBjb25zdCBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9p
ZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3Mp
IHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0K
ICAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CkBA
IC00OTYsNyArNTA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJDdXJyZW50TW9kaWZpZXJT
dGF0ZUZvclRlc3RpbmcoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+LCB1aW50NjRfdCBwYWdl
SUQpOworICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWlu
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxX
ZWJDb3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdQRSkKQEAgLTc2Miw3ICs3NzQsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGF0aHMgbV9y
ZXNvbHZlZFBhdGhzOwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDx1aW50
NjRfdD4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gbV9zZXNzaW9uVG9QYWdlSURzTWFw
OwogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlByb2Nlc3NQb29sPiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXNUZXJtaW5hdGlvblRpbWVyOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDgyMDM0NjVjYjI4
MTRkMmNmYzMyOGZhNzk0NjYyYTIwZTAyYjQzMmMuLjY3ODMxZTIwNzgwOWMwZWM1YjYyOGFlYzBk
MzkxMTE4MzVmMzEwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTEwLDEwICsxMTAsOSBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQ
cm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZgogICAg
IHJldHVybiBhbGxQcm9jZXNzZXMoKS5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXVpbnQ2NF90IFdl
YlByb2Nlc3NQcm94eTo6Z2VuZXJhdGVQYWdlSUQoKQorUGFnZUlkZW50aWZpZXIgV2ViUHJvY2Vz
c1Byb3h5OjpnZW5lcmF0ZVBhZ2VJRCgpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVBh
Z2VJRDsKLSAgICByZXR1cm4gKyt1bmlxdWVQYWdlSUQ7CisgICAgcmV0dXJuIFBhZ2VJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOwogfQogCiBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJv
eHlNYXAmIGdsb2JhbFBhZ2VNYXAoKQpAQCAtMzMwLDcgKzMyOSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpzaHV0RG93bigpCiAgICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3Mo
dGhpcyk7CiB9CiAKLVdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdl
SUQpOwogfQpAQCAtMzYzLDcgKzM2Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQ
YWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAKIFJl
ZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJh
dGlvbikKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOworICAgIGF1
dG8gcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiB3ZWJQ
YWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwgV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgYWRkRXhpc3RpbmdXZWJQYWdlKHdlYlBh
Z2UuZ2V0KCksIEJlZ2luc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwpAQCAtNDE1LDEwICs0MTQsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlLCBFbmRzVXNpbmdEYXRhU3RvcmUgZW4KICAgICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0
b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExp
bmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8mIHVzZXJzID0gbV92
aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbnN1cmUoJnZpc2l0ZWRMaW5rU3RvcmUsIFtdIHsK
LSAgICAgICAgcmV0dXJuIEhhc2hTZXQ8dWludDY0X3Q+IHsgfTsKKyAgICAgICAgcmV0dXJuIEhh
c2hTZXQ8UGFnZUlkZW50aWZpZXI+IHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAg
ICBBU1NFUlQoIXVzZXJzLmNvbnRhaW5zKHBhZ2VJRCkpOwpAQCAtNDI4LDcgKzQyNyw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0
b3JlJiB2aXNpdGVkTGlua1N0b3JlCiAgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUuYWRkUHJvY2Vz
cygqdGhpcyk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVWaXNpdGVkTGlua1N0
b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdl
SUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlz
aXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIGF1dG8gaXQgPSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmZpbmQoJnZpc2l0
ZWRMaW5rU3RvcmUpOwogICAgIGlmIChpdCA9PSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJz
LmVuZCgpKQpAQCAtNTQxLDcgKzU0MCw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkKCkKIH0KICNlbmRpZgogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6
aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jvb2wgV2Vi
UHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGZvciAoYXV0byogcHJvdmlzaW9uYWxQYWdlIDogbV9wcm92aXNp
b25hbFBhZ2VzKSB7CiAgICAgICAgIGlmIChwcm92aXNpb25hbFBhZ2UtPnBhZ2UoKS5wYWdlSUQo
KSA9PSBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmlu
ZGV4IDlhNmNiZjFmNDYwOTlhNWY2ZjlmYTJmMGVlOGE2ZmEyYzgxODE2YTguLmFkM2YwMzhkZDY1
NDY1YzA0ODk5NzliNjdlNTg1Yzg1NmY5MmRjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9j
ZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFN0cmluZ0hhc2guaD4KQEAgLTk3LDcgKzk4LDcgQEAg
ZW51bSBjbGFzcyBBbGxvd1Byb2Nlc3NDYWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5IDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNp
dmVuZXNzVGltZXI6OkNsaWVudCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nl
c3NQcm94eT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRl
IFByb2Nlc3NUaHJvdHRsZXJDbGllbnQgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFwOwotICAgIHR5
cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5
Kj4gV2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKICAg
ICBlbnVtIGNsYXNzIElzUHJld2FybWVkIHsKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIHN0
YXRpYyBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCk7CisgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcik7CiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZW51bSBjbGFzcyBC
ZWdpbnNVc2luZ0RhdGFTdG9yZSA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0xNDksMTAgKzE1MCwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblBy
b2Nlc3ModWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nl
c3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0
b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHJl
bW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBwYWdl
SUQpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAg
ICB2b2lkIGFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGlk
RGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Jik7CkBAIC0zMTEsNyArMzEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ViUGFn
ZU1lZGlhU3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5Jik7CiAKIHByb3RlY3RlZDoKLSAgICBz
dGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQpOwogCiAgICAgLy8gQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC0zNTQsNyArMzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29u
dGV4dElEKTsKICNlbmRpZgogCi0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWlu
dDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0
ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7CiAKICAgICAv
LyBQbHVnaW5zCkBAIC00NDcsNyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFByb3Zp
c2lvbmFsUGFnZVByb3h5Kj4gbV9wcm92aXNpb25hbFBhZ2VzOwogICAgIFVzZXJJbml0aWF0ZWRB
Y3Rpb25NYXAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCi0gICAgSGFzaE1hcDxWaXNpdGVk
TGlua1N0b3JlKiwgSGFzaFNldDx1aW50NjRfdC8qIHBhZ2VJRCAqLz4+IG1fdmlzaXRlZExpbmtT
dG9yZXNXaXRoVXNlcnM7CisgICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAg
ICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveGllczsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJt
aW5hdGlvbldhc0Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVIYW5kbGVyLmNwcAppbmRleCBlMzU1MzE5ZWE0YzRlZTY1MWM2YmVkZjdjODZmYmRkMjFm
MjlkYzIzLi43ZDU3NWE0MDRiMDQ1YjkxYWQ3YWM4ZTY2NzYwZDA4YmUzOGI5MWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6dGFza0NvbXBsZXRlZChXZWJV
UkxTY2hlbWVUYXNrJiB0YXNrKQogICAgIHBsYXRmb3JtVGFza0NvbXBsZXRlZCh0YXNrKTsKIH0K
IAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBhZ2VNYXAodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJl
bW92ZVRhc2tGcm9tUGFnZU1hcChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJ
RCkKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZmluZChw
YWdlSUQpOwogICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5l
bmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgK
aW5kZXggODk5NzZjNjFmODNkNTJiODFmMmM0NDA3YzJjNWJiZDczYmYyYWU0OS4uYjdhZjA3NTk3
NWYzMmI4YWI4NWU4OGQxYmFmZmIwNWExNzA1YTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApAQCAtNjYsMTMgKzY2LDEzIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiwgV2ViVVJM
U2NoZW1lVGFzayYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1UYXNrQ29tcGxldGVk
KFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAKLSAgICB2b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1h
cCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCk7CisgICAgdm9pZCByZW1vdmVUYXNr
RnJvbVBhZ2VNYXAoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJRCk7CiAg
ICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9yVGFza0lkZW50aWZpZXIodWludDY0X3QpIGNv
bnN0OwogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogCiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmPFdlYlVSTFNjaGVtZVRhc2s+PiBtX3Rhc2tzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllcjsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFn
ZUlkZW50aWZpZXI7CiAgICAgCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNM
b2FkQ29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaAppbmRleCBiODcyMDczYmQyNzgxZmYwOWI5YmYyNTMzMTYyYzA1YWE2OWMwM2Vi
Li5hOTdmMTYwY2YyNTU2ZmExMzhmNTJiZDgxNWYyM2U4ZWE2YzdlYTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFdlYlVSTFNjaGVtZVRhc2s+IGNyZWF0ZShXZWJVUkxTY2hlbWVI
YW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgaWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXImJik7CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRl
bnRpZmllcjsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQpA
QCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAg
IFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50
aWZpZXI7Ci0gICAgdWludDY0X3QgbV9wYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCBtX3JlcXVlc3Q7CiAgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9y
ZXNwb25zZVNlbnQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA0ZmQwMjEyNjgxNzA1
YWNmNGY5YzgwYmUwOGQzYmMwNGE0ZjhlNTdjLi45YTA1ZWE4YmY2NjFhYjQzNjQ5ZDUxOTA3NTNh
YWM4ZTkwNmZkNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTU2NSw3ICsxNTY1LDcgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZChib29sIHZhbHVlLCBDb21wbGUKICAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKCkuc2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9zZXNzaW9u
SUQsIHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0
QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRv
bWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAppbmRleCA2NDJlMzMwOWQwNzYyNDNlMzdkOGUxZDI3NDY1YjExZjcxMmRiMGM4Li44MjJj
M2ZjNzYzN2Q3YzVlYjAwM2M2OWNlOTQ3NDViZDM4MjU5M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlT3Jp
ZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgpAQCAtMTM1LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7Cisg
ICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsK
ICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0
IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNw
cAppbmRleCBkYzhkNTNjYWZiYjYzYjE2YTc4Y2E2ODVkZDc0ZmFiN2M0MWQyYWNmLi5hY2Q2MGE0
NGMxZjAxMjI1ZTYxNzI4MDZmMTk3ZDU2NWI1ZmRkNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTM4MCw3ICszODAsNyBA
QCBzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3dlYmtpdGd0a19pbnRlcmZhY2Ugd2Via2l0Z3RrSW50
ZXJmYWNlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8qIGNvbXBvc2l0
b3IgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcio+KHdsX3Jlc291cmNlX2dldF91c2Vy
X2RhdGEocmVzb3VyY2UpKTsKLSAgICAgICAgY29tcG9zaXRvci0+YmluZFN1cmZhY2VUb1dlYlBh
Z2Uoc3VyZmFjZSwgcGFnZUlEKTsKKyAgICAgICAgY29tcG9zaXRvci0+YmluZFN1cmZhY2VUb1dl
YlBhZ2Uoc3VyZmFjZSwgbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihw
YWdlSUQpKTsKICAgICB9CiB9OwogCkBAIC01NDcsNyArNTQ3LDcgQEAgYm9vbCBXYXlsYW5kQ29t
cG9zaXRvcjo6Z2V0VGV4dHVyZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVuc2lnbmVkJiB0ZXh0
dXJlLCBJbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2F5bGFuZENvbXBvc2l0b3I6
OmJpbmRTdXJmYWNlVG9XZWJQYWdlKFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKiBzdXJmYWNl
LCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpiaW5kU3VyZmFjZVRv
V2ViUGFnZShXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZSogc3VyZmFjZSwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IG51bGxw
dHI7CiAgICAgZm9yIChhdXRvKiBwYWdlIDogbV9wYWdlTWFwLmtleXMoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaAppbmRleCAxNDgxOWY4
ZmFjNGVjODAyMzBiYTJjYmJiMThlNmQwOTU5YjlmODRhLi4yZDc4MGZmYjEyNTdkNDlmMDhkZWE5
YTE4NjhhOGE0MzJjNjFiZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2F5bGFuZENvbXBvc2l0b3IuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9kaXNwbGF5OyB9CiAgICAgU3RyaW5nIGRp
c3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQogCi0gICAgdm9pZCBi
aW5kU3VyZmFjZVRvV2ViUGFnZShTdXJmYWNlKiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lk
IGJpbmRTdXJmYWNlVG9XZWJQYWdlKFN1cmZhY2UqLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
CiAgICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyV2ViUGFnZShXZWJQYWdlUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMDgzZDZm
YWYxNTIwMWY4Y2VjNGQwMjhiYTMwOTg4YjdhY2E3NTBkNC4uY2VmZGU2MWM0OWI1MmFjZDZmMDg5
MDg4MjA2YjhkNjZjNzU1MDI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCkBAIC0yNTEsNyArMjUxLDcgQEAg
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRp
b25JbnRlcmFjdGl2ZVRyYW5zaXRpb24KICAgICAgICAgaWYgKGZpbmlzaCkKICAgICAgICAgICAg
IG1fd2ViUGFnZVByb3h5Rm9yQmFja0ZvcndhcmRMaXN0Rm9yQ3VycmVudFN3aXBlLT5uYXZpZ2F0
aW9uR2VzdHVyZVdpbGxFbmQodHJhbnNpdGlvbkNvbXBsZXRlZCwgKnRhcmdldEl0ZW0pOwogICAg
IH1dOwotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAg
IGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAgICAgR2VzdHVyZUlEIGdl
c3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBbbV9zd2lwZVRyYW5zaXRpb25Db250
ZXh0IF9zZXRDb21wbGV0aW9uSGFuZGxlcjpbcGFnZUlELCBnZXN0dXJlSUQsIHRhcmdldEl0ZW1d
IChfVUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db250ZXh0ICpjb250ZXh0LCBCT09MIGRpZENv
bXBsZXRlKSB7CiAgICAgICAgIGlmIChhdXRvIGdlc3R1cmVDb250cm9sbGVyID0gY29udHJvbGxl
ckZvckdlc3R1cmUocGFnZUlELCBnZXN0dXJlSUQpKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogdGFyZ2V0SXRlbSwKICAgICAgICAgbV93ZWJQYWdlUHJveHkuZGlkQ2hhbmdlQmFja2dy
b3VuZENvbG9yKCk7CiAgICAgfQogCi0gICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsK
ICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50R2VzdHVyZUlEOwogICAgIG1fbG9h
ZENhbGxiYWNrID0gW3RoaXMsIHBhZ2VJRCwgZ2VzdHVyZUlEXSB7CiAgICAgICAgIGF1dG8gZHJh
d2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5wcm92aXNpb25hbERyYXdpbmdBcmVhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuY3BwCmluZGV4IGZmNDQ5MzQxZDllNDQyZmMxNjJlNDE1NDRiMzg1YjE3YzA1
M2EwMzguLjU3ZjNmZTE3M2NjZDk1MTczNjQyYTE5NWU3Y2ZkMTAxODg2OTg4Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWlu
dDY0X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAgICByZXR1cm4gbV93
ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yOjp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFN0cmluZyYgdmFsaWRhdGlvblVSTFN0cmluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggYjFjYmM5NjNiMGVmY2M4NTI0
OTJkOTY4ZDllYWFjMzE4MjhlMTUyYi4uNDU0Y2E2YmM4NDQ5ODNmNTk5OGZmZWU0ZGEzNzRjY2Zj
YzYyMjVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTIzMSw3ICsy
MzEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93T2Jq
ZWN0Rm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgZXJy
b3JNZXNzYWdlLCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3Vt
ZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tU
aW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFy
Z3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJh
Y2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7
CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRF
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBmcmFtZUlELAogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxs
YmFja0lELCByZXN1bHQsIGVycm9yVHlwZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5h
bChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGlu
YWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zNTAsNyAr
MzUwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWkKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGls
ZEZyYW1lV2l0aE5vZGVIYW5kbGUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdl
YlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAg
ICAgaWYgKCFwYWdlKSB7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJ
RCwKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZyYW1lRnJvbUVsZW1lbnQt
PmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2
ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBh
Z2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJh
bWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVz
b2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRG
cmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHBh
cmVudEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpmb2N1c0ZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTUyNyw3ICs1
MjcsNyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjb252ZXJ0UG9pbnRGcm9tRnJhbWVD
bGllbnRUb1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1lVgogICAgIHJldHVybiBjbGllbnRQb2ludDsK
IH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91
dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBi
b29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5
c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJ
bnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExh
eW91dChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29v
cmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBX
ZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC02MzUsNyArNjM1
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91
dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBp
c09ic2N1cmVkKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RP
cHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9w
dGlvbkVsZW1lbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzAzLDcg
KzcwMyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdEZvclNjcmVlbnNo
b3QoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6RWxlbWVuCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbElu
dG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKIHsKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAKQEAgLTc1
MSw3ICs3NTEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5z
aG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRAogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIHsg
fSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNG
b3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29r
aWVzRm9yRnJhbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAt
Nzc2LDcgKzc3Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2ll
c0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpkZWxldGVDb29raWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCmluZGV4IDYyOTU0MWQyMGJhMTBkZjYyZGExZTI2
MDkxNjRlYWM4OTJiYTBkMTMuLjExNjc2NDUyNzdkYmMxOTMwYTVhN2E1OTdkY2JjMmRmM2VjZjU1
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNjAsMTcgKzYxLDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAog
ICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IG1lc3NhZ2VzCi0gICAg
dm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50
cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1l
b3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0
aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRp
bmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4m
Jik7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9p
ZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWUodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBmb2N1c0ZyYW1lKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCk7Ci0gICAgdm9pZCBjb21wdXRlRWxlbWVudExh
eW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9u
YWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJik7Ci0gICAgdm9pZCBzZWxlY3RPcHRpb25F
bGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOwotICAgIHZv
aWQgdGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1Zp
ZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldENvb2tpZXNGb3JGcmFt
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmKTsKLSAgICB2
b2lkIGRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYm
KTsKKyAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8
U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwg
aW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXNv
bHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5h
bWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRf
dCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBmb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlEKTsKKyAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5
b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9k
ZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3Qs
IE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYpOworICAgIHZvaWQgc2VsZWN0
T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
Pik+JiYpOworICAgIHZvaWQgdGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3
SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRf
dCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+KT4mJik7CisgICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKIAogICAgIFN0cmluZyBt
X3Nlc3Npb25JZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhYTEyMTllMmVmMWZjMDcwMDQ1OTZkMjRhMWI1NzE2ZDMwNmY3
OGJlLi5kNzJmODlkMjYzNTljZjAxY2NmZDUzMWU5NmUwMWY0NDQwOWFhZjU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDIxICsyMSwy
MSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5IHsKLSAgICBFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRz
LCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVv
dXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24o
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
ZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRD
YWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQogCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVy
cm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJ
RCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlUGFyZW50RnJhbWUodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRo
T3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0
X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJ
RCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUpIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZl
UGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFz
eW5jCiAKLSAgICBGb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkK
KyAgICBGb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCkKIAotICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lz
dGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVj
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlz
T2JzY3VyZWQpIEFzeW5jCisgICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9v
bCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRl
U3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwg
V2ViQ29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3
Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkgQXN5bmMKIAotICAgIFNlbGVjdE9wdGlvbkVs
ZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRs
ZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYworICAgIFNlbGVjdE9wdGlv
bkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3lu
YwogCi0gICAgVGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNs
aXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFRha2VTY3JlZW5zaG90KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9y
dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIEdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKLSAgICBEZWxldGVDb29r
aWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkg
LT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYworICAgIEdldENvb2tpZXNGb3JG
cmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+
IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29v
a2llcykgQXN5bmMKKyAgICBEZWxldGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0
cmluZz4gZXJyb3JUeXBlKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RXh0ZW5zaW9uLmNwcAppbmRleCAwODJkNjA5YTg3YmYzN2M3ZWYyZjRiNGRlOGUyNGNkZGEyNTEz
NjZkLi40YTIzYmY1NjAxMDdjMzFmMWE0ZGUyYzk2MTI5OWE3MDEwODE3NTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBA
IFdlYktpdFdlYlBhZ2UqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKFdlYktpdFdlYkV4
dGVuc2lvbiogZXh0ZW5zaW9uLCBndWluCiAgICAgV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZSog
cHJpdiA9IGV4dGVuc2lvbi0+cHJpdjsKICAgICBXZWJQYWdlTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBwcml2LT5wYWdlcy5lbmQoKTsKICAgICBmb3IgKFdlYlBhZ2VNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcHJpdi0+cGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBp
ZiAoaXQtPmtleS0+cGFnZUlEKCkgPT0gcGFnZUlEKQorICAgICAgICBpZiAoaXQtPmtleS0+cGFn
ZUlEKCkudG9VSW50NjQoKSA9PSBwYWdlSUQpCiAgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVl
LmdldCgpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5j
cHAKaW5kZXggZTU3ZTJlNzdlNTU4NDhlOGJhNzI1ZjlkMzIyNzcwOWZmZjE3OGFmZi4uY2ZjNTAz
MWVkNmU0YTI5NTRmZTAyYTAzZGE4N2ExNjFjZDJkMzA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlLmNwcApAQCAtNzYzLDcgKzc2Myw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl9w
YWdlX2dldF9pZChXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfUEFHRSh3ZWJQYWdlKSwgMCk7CiAKLSAgICByZXR1cm4gd2Vi
UGFnZS0+cHJpdi0+d2ViUGFnZS0+cGFnZUlEKCk7CisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYt
PndlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKaW5kZXggYWUzODgzZDg2YjY4OWU2NjZmMTZhY2VmOTAxNjcyOTRlNWQyNzg3Yy4u
OGIxYWQ1ZWRmMGU2YjkwZDU4YzI0ZTYxNWZhZGM5YzcxMDdhNWY2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVu
dGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAgIHdlYlBh
Z2UtPmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byB3ZWJQYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpCisg
ICAgICAgIGlmIChhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkKICAgICAgICAgICAgIHdlYlBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLT5k
aWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbgogCiAjaWYg
RU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViUGFnZShkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpCisgICAgICAgIGlmIChh
dXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkK
ICAgICAgICAgICAgIHdlYlBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLT5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwNGFlMGU0NWQ1ZTlkMjljYTBmMjcwYTA2NDE4
YTZhYjJkNTAxZmNiLi4yNzhiNjAxODQ3OWYzNjU5MDM0OGM4OTUxODU1YWNmNDNkY2I1OWY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UK
ICAgICBhdXRvJiBmcmFtZUxvYWRlckNsaWVudCA9IHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpOwogCiAgICAgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVy
cyB0cmFja2luZ1BhcmFtZXRlcnM7Ci0gICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCA9IGZy
YW1lTG9hZGVyQ2xpZW50LnBhZ2VJRCgpLnZhbHVlT3IoMCk7CisgICAgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50
aWZpZXIgeyB9KTsKICAgICB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCA9IGZyYW1lTG9hZGVy
Q2xpZW50LmZyYW1lSUQoKS52YWx1ZU9yKDApOwogICAgIHRyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEID0gaWRlbnRpZmllcjsKICAgICBhdXRvIHNlc3Npb25JRCA9IGZyYW1lTG9hZGVyQ2xp
ZW50LnNlc3Npb25JRCgpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJl
c291CiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcmVtZW1iZXIgdGhlIFJlc291cmNlTG9hZGVyIGlu
IG91ciByZWNvcmRzIGJ1dCBub3Qgc2NoZWR1bGUgaXQgaW4gdGhlIE5ldHdvcmtQcm9jZXNzLgog
ICAgIGlmIChyZXNvdXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5zY2hlZHVsZUFyY2hpdmVM
b2FkKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkpKSB7CiAgICAgICAg
IExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNv
dXJjZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9h
ZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFyY2hpdmUgcmVzb3VyY2UgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlm
aWVyKTsKICAgICAgICAgbV93ZWJSZXNvdXJjZUxvYWRlcnMuc2V0KGlkZW50aWZpZXIsIFdlYlJl
c291cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTc1LDE0ICsxNzUsMTQgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRl
ciwgQ2FjaGVkUmVzb3UKIAogICAgIGlmIChyZXNvdXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigp
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFJlc291cmNlKHJlc291cmNlTG9hZGVy
LCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwo
KSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgbG9hZGVkIGZyb20g
YXBwbGljYXRpb24gY2FjaGUuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIs
ICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hl
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAi
c2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZSAo
ZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIGlkZW50aWZpZXIpOwogICAgICAgICBtX3dlYlJlc291cmNlTG9hZGVycy5zZXQoaWRlbnRp
ZmllciwgV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQ
YXJhbWV0ZXJzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAocmVzb3VyY2VM
b2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNEYXRhKCkpIHsKICAgICAgICAgTE9HKE5l
dHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEuIiwgcmVzb3VyY2VMb2FkZXIu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBh
cyBkYXRhIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgYXMgZGF0YSAoZnJhbWUgPSAl
cCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOwogICAgICAgICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVz
b3UKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hl
ZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVy
bCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZS4iLCByZXNvdXJj
ZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
aGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRy
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
aGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9V
SW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAg
ICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
KFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAvLyBodHRw
czovL2Jsb2dzLmdub21lLm9yZy9hbGV4bC8yMDEyLzAxLzI2L3Jlc291cmNlcy1pbi1nbGliLwog
ICAgIGlmIChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJcygicmVzb3Vy
Y2UiKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFz
IGEgR1Jlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2No
ZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgR1Jlc291cmNlIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgR1Jlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAg
ICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTIxMSwxMSArMjExLDExIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAg
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5oYW5kbGVGZXRjaChyZXNvdXJj
ZUxvYWRlciwgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBbdGhpcywgdHJhY2tpbmdQYXJhbWV0ZXJzLCBpZGVudGlmaWVyLCBzZXNzaW9uSUQsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpLCByZXNvdXJjZUxvYWRlciA9IG1h
a2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBm
ZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNl
cnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRj
aCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+
ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJlc291cmNlTG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtl
cnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9h
ZDogdW5hYmxlIHRvIHNjaGVkdWxlIFVSTCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZl
dGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2No
ZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChm
cmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcmVzb3VyY2VM
b2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVyKV0gewogICAgICAgICAgICAgICAgIGF1dG8g
ZXJyb3IgPSBpbnRlcm5hbEVycm9yKHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkpOwog
ICAgICAgICAgICAgICAgIGVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2Vs
bGF0aW9uKTsKQEAgLTIyNywxMyArMjI3LDEzIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAg
ICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS50
cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyKSkKICAgICAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2NoZWR1bGVM
b2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLmdldCgpLCByZXNvdXJjZUxvYWRl
ci0+cmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJz
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRy
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMg
KGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAjZWxzZQogICAgIGlmICghdHJ5TG9hZGluZ1Vz
aW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlcikpCiAgICAgICAgIHNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKICAg
ICBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJz
Y2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6
IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICNlbmRp
ZgogfQogCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKICAgICBp
ZiAobG9hZFBhcmFtZXRlcnMub3B0aW9ucy5tb2RlICE9IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2
aWdhdGUpIHsKICAgICAgICAgQVNTRVJUKGxvYWRQYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbik7CiAg
ICAgICAgIGlmICghbG9hZFBhcmFtZXRlcnMuc291cmNlT3JpZ2luKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBubyBzb3VyY2VPcmlnaW4gKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2Fk
UGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hl
ZHVsZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVz
b3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMu
aWRlbnRpZmllcik7CiAgICAgICAgICAgICBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKHJl
c291cmNlTG9hZGVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzQ2LDkg
KzM0Niw5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3Jr
UHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAKICAgICBBU1NFUlQoKGxvYWRQYXJh
bWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFy
YW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6
OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNj
aGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAl
ZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGlu
dD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53
ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hl
ZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNl
TG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgp
LnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9h
ZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChm
cmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3Jp
dHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hl
ZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3Jp
dHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19j
YXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9h
ZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0
byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBo
YWQgY3Jhc2hlZC4KICAgICAgICAgLy8gVGhpcyBsb2FkIHdpbGwgbmV2ZXIgc3VjY2VlZCBzbyB3
ZSB3aWxsIHNjaGVkdWxlIGl0IHRvIGZhaWwgYXN5bmNocm9ub3VzbHkuCiAgICAgICAgIHNjaGVk
dWxlSW50ZXJuYWxseUZhaWxlZExvYWQocmVzb3VyY2VMb2FkZXIpOwpAQCAtNTA3LDE5ICs1MDcs
MTkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShG
cmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3
ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDog
bnVsbHB0cjsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFn
ZSgpIDogbnVsbHB0cjsKIAotICAgIGF1dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBh
Z2VJRCgpIDogMDsKKyAgICBhdXRvIHBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQo
KSA6IFBhZ2VJZGVudGlmaWVyIHsgfTsKICAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdl
YkZyYW1lLT5mcmFtZUlEKCkgOiAwOwogICAgIGF1dG8gc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdl
YlBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsK
IAogICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWVMb2FkZXIuZnJhbWUoKS5kb2N1bWVudCgpOwog
ICAgIGlmICghZG9jdW1lbnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBubyBkb2N1bWVudCAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVs
dSkiLCBwYWdlSUQsIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHk6IG5vIGRvY3VtZW50IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlE
LCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICAgICAgZXJyb3IgPSBpbnRlcm5hbEVycm9y
KHJlcXVlc3QudXJsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF1dG8g
c3luY0xvYWRSZXN1bHQgPSB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFu
ZGxlcihmcmFtZUxvYWRlciwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcmVxdWVzdCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgY2FsbGluZyB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVz
aW5nVVJMU2NoZW1lSGFuZGxlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSwgZXJyb3IgPSAlZCkiLCBwYWdlSUQsIGZyYW1lSUQs
IHJlc291cmNlTG9hZElkZW50aWZpZXIsIHN5bmNMb2FkUmVzdWx0LT5lcnJvci5lcnJvckNvZGUo
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9h
ZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIGNhbGxpbmcgdHJ5TG9hZGluZ1N5bmNocm9u
b3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUsIGVycm9yID0gJWQpIiwgcGFnZUlELnRv
VUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHN5bmNMb2FkUmVzdWx0
LT5lcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAgIGVycm9yID0gV1RGTW92ZShzeW5jTG9hZFJl
c3VsdC0+ZXJyb3IpOwogICAgICAgICByZXNwb25zZSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQt
PnJlc3BvbnNlKTsKICAgICAgICAgZGF0YSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQtPmRhdGEp
OwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgSGFuZ0Rl
dGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKIAogICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UGVyZm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFyYW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKSwgMCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgc2Vu
ZGluZyBzeW5jaHJvbm91cyBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQs
IGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZh
aWxlZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIs
IHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAg
ICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB3ZWJQYWdlID8gd2ViUGFnZS0+Y29yZVBhZ2UoKSA6IG51
bGxwdHIpCiAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0Rp
YWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxF
cnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnN5bmNocm9ub3VzTWVz
c2FnZUZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICAgICAgcmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJh
bWVMb2FkZXIsIHVuc2kKICAgICB9CiB9CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnBhZ2VM
b2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKIHsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBh
Z2VMb2FkQ29tcGxldGVkKHdlYlBhZ2VJRCksIDApOwogfQpAQCAtNjQ4LDEwICs2NDgsMTAgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiBmcmFtZUxv
YWRlciwgY29uc3QgVVJMJiB1cmwsIFMKIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0
IHsgdXJsIH07Ci0gICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+
cGFnZUlEKCkgOiAwOwotICAgIHBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lID8gd2Vi
RnJhbWUtPmZyYW1lSUQoKSA6IDA7CisgICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdl
LT5wYWdlSUQoKTsKKyAgICBwYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJ
RCgpOwogICAgIHBhcmFtZXRlcnMucGFyZW50UElEID0gcHJlc2VudGluZ0FwcGxpY2F0aW9uUElE
KCk7Ci0gICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lv
bklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgIHBhcmFtZXRl
cnMuc2Vzc2lvbklEID0gd2ViUGFnZS0+c2Vzc2lvbklEKCk7CiAgICAgcGFyYW1ldGVycy5zdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIHBhcmFt
ZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVzOwogICAgIHBh
cmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBzaG91bGRQZXJmb3Jt
U2VjdXJpdHlDaGVja3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDRhZjU5OTQxZTM0ZjcyYWQyNmU4MWVmYjU2
MDYwNjc1MTgxMWY4YzYuLmFjNTI0OTY2YTg1MjFlMGUzZDY1ZWI2MmI5ZjcwZTgyZjc4Y2MyMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBsb2Fk
UmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlv
bnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShX
ZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHBhZ2VMb2Fk
Q29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgZmluYWw7CisgICAgdm9pZCBwYWdlTG9hZENv
bXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgZmluYWw7CiAKICAgICB2b2lkIHJlbW92
ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9h
ZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGJmODhmZGEzMDA3ZTE2NGZmMzhhOTUyMmFiYjgxZmVmZDdlOWY4NTIuLjg4YmQ1M2JmMWY4
ZmI3MzZlYjE3M2VmNjRmMWUzMDNkMWJiMTAwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg4LDE2ICs4
OCwxNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBSZXNvdQogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRl
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNz
KSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IHRvICclcyciLCBwcm9wb3NlZFJl
cXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxs
U2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0
KG1fY29yZUxvYWRlci5nZXQoKSwgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRp
bmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZh
bHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5n
IGVhcmx5IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxz
ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fY29yZUxvYWRlci0+d2ls
bFNlbmRSZXF1ZXN0KFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KSB7CiAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBv
ciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVx
dWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG5vIGNvcmVsb2FkZXIgb3IgaWRlbnRpZmllciAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlEKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTMsMTIgKzExMywx
MiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1Nl
bnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlUwogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewogICAgIExPRyhOZXR3b3Jr
LCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9y
ICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgp
LmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCki
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgc3RhdHVzID0gJWQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogCiAgICAgUmVm
PFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmIChtX2Nv
cmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVM
b2FkRmFsbGJhY2tGb3JSZXNwb25zZShtX2NvcmVMb2FkZXIuZ2V0KCksIHJlc3BvbnNlKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBj
b250aW51aW5nIGxvYWQgYmVjYXVzZSB0aGUgY29udGVudCBpcyBhbHJlYWR5IGNhY2hlZCAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVp
bmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVhZHkgY2FjaGVkIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBib28KICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVz
cG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElE
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQp
OwogICAgICAgICB9OwogICAgIH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
aW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3Jr
UmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2Un
dmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0
YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICB9CiAgICAgbV9udW1C
eXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBpbnQ2NF90IGUKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291
cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsK
ICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJl
c291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRlc1JlY2VpdmVkKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRGaW5pc2hSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0
aCA9ICV6ZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwg
bV9udW1CeXRlc1JlY2VpdmVkKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9j
ZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTG9hZCBzaG91bGQgbm90IGJlIGFibGUgdG8gZmluaXNo
IGJlZm9yZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAgICAgbV9jb3JlTG9hZGVy
LT5kaWRGaW5pc2hMb2FkaW5nKG5ldHdvcmtMb2FkTWV0cmljcyk7CkBAIC0xNjcsNyArMTY3LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0wKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZh
aWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5l
dHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxv
YWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2Fk
IHNob3VsZCBub3QgYmUgYWJsZSB0byBmaW5pc2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUg
cmVzcG9uc2UiKTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
QmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXIt
PmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKIH0KQEAgLTE4Nyw3ICsxODcsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25z
T3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2Fk
ZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lE
ZW5pZWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFt
ZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xp
Y3lEZW5pZWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOwogCiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5z
dG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVk
KG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CkBAIC0xOTYsMTMgKzE5
NiwxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0
aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRs
ZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291
cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3Jh
cEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBm
cm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBj
cmVhdGUgU2hhcmVkQnVmZmVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2Nv
cmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgp
LmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50
ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNo
YXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CmluZGV4IDdmZDc4MzIyMzNhMzYyYzIzYTkwNGZjMTVlZjM0Y2E2NGE5NjdlYWUuLjU4NjU0Mzcx
OGU1ZTgzODhiOGI0MWFiMDIwMzdhYzc2ZTc4NjkzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKQEAgLTUwLDcgKzUxLDcgQEAgdHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxv
YWRJZGVudGlmaWVyOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGlj
OgogICAgIHN0cnVjdCBUcmFja2luZ1BhcmFtZXRlcnMgewotICAgICAgICB1aW50NjRfdCBwYWdl
SUQgeyAwIH07CisgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAg
ICAgdWludDY0X3QgZnJhbWVJRCB7IDAgfTsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciByZXNvdXJjZUlEIHsgMCB9OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKaW5kZXggMzRiNWE2NDNmMDNiZGE2MWZkYTRiMzNkODg3YjVkMWRiODlkYzYwNy4uYWRj
NDc2NjUyZTgwN2IyMzZhY2MxMTY1NGE1ZmMxNzE1NzM1YzkxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgY29uc3QgU2Vjb25k
cyBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTAwX21zIH07IC8vIE9ubHkgdXNlZCBi
eSBsYQogCiBjbGFzcyBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJs
aWMgRW1wdHlGcmFtZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgU2VydmljZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50KFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCisgICAgU2VydmljZVdvcmtlckZyYW1lTG9h
ZGVyQ2xpZW50KFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiAgICAgICAgIDogbV9jb25u
ZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAg
ICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKQEAgLTk1LDE4ICs5NSwxOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9mcmFtZUlEOyB9CiAgICAgU3RyaW5nIHVzZXJBZ2VudChjb25z
dCBVUkwmKSBmaW5hbCB7IHJldHVybiBtX3VzZXJBZ2VudDsgfQogCiAgICAgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24mIG1fY29ubmVjdGlvbjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQgeyAwIH07CiAgICAg
U3RyaW5nIG1fdXNlckFnZW50OwogfTsKIAotV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCitXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICA6IG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fcGFnZUdyb3VwSUQocGFnZUdy
b3VwSUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC0yMjYsMTIgKzIyNiwxMiBAQCB2b2lk
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIgc2VydgogewogICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9
LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFp
c1ZhbGlkRmV0Y2gocmVxdWVzdCwgb3B0aW9ucywgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5z
Y3JpcHRVUkwoKSwgcmVmZXJyZXIpKSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRs
ZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggNmNlODNkMWQwOWVhZWRj
YWU0ZmU4NzNmMThlYzUyYjU5ZTRmYTE3Mi4uZmJiNjMwZTRlMTliMzU5ZGMxNzBjY2VhMDE4YTQ5
ODMyMTY2ZGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01MSw3ICs1
MSw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2Vy
OjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVp
bnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmKTsKKyAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOwogICAg
IHVpbnQ2NF90IG1fcGFnZUdyb3VwSUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07Cisg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9wcmV2
aW91c1NlcnZpY2VXb3JrZXJJRCB7IDAgfTsKIAogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5OjpBbGxvd0FsbFN0b3JhZ2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggOGFlYmFmZjk2
MjIxZTk4NjMzN2MzZDIzZTA0MGYwNWI0NzU1YTc1Ni4uMjY0NGM5YzFkMTJiNmNkMDFkNTY2OTlk
MTMyYmMyZWY0YzYzNmExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3UKIHsKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UgeyByZXNwb25zZSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogCiAg
ICAgY2xlYW51cCgpOwogfQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JgogICAgIGlmIChtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogICAg
ICAgICBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSB0cnVl
OwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGJ1ZmZlciB9LCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgYnVmZmVyIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+
KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJl
ZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8
Rm9ybURhdGE+JgogICAgIC8vIEZvciBub3cgYW5kIGZvciB0aGUgY2FzZSBvZiBibG9icywgd2Ug
cmVhZCBpdCB0aGVyZSBhbmQgc2VuZCB0aGUgZGF0YSB0aHJvdWdoIElQQy4KICAgICBVUkwgYmxv
YlVSTCA9IGZvcm1EYXRhLT5hc0Jsb2JVUkwoKTsKICAgICBpZiAoYmxvYlVSTC5pc051bGwoKSkg
ewotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZN
b3ZlKGZvcm1EYXRhKSB9IH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZFJlY2VpdmVGb3JtRGF0YSB7IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZNb3ZlKGZvcm1E
YXRhKSB9IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFyKiBkYXRhLCBzaXplCiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0
X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURh
dGEgeyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0sIHN0
YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygp
CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogCiAgICAgY2xlYW51cCgp
OwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkRmluaXNoKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkRmluaXNoIHsg
fSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2ggeyB9LCBtX2ZldGNo
SWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWROb3RIYW5kbGUoKQogICAgIGlm
ICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIG1f
ZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOwogCiAgICAgY2xlYW51cCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmNwcAppbmRleCA0OTMzY2E0YzNhMDY3MmNhYzMwZjc3OTUxOTBkMjU4NTIxYzBjZjAyLi4y
YjI4ODY0YTlhYTA5ODQ0MmQ2MTUzMmM2NDBmNWI5M2E4NTk5ODBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcApAQCAtODIsMTQgKzgyLDE0IEBAIFJlZjxXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoVXNlckNv
bnRlbnRDCiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cihVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwg
KnRoaXMpOwogfQogCiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIoKQogewogICAgIEFTU0VSVCh1c2VyQ29udGVudENvbnRyb2xsZXJzKCkuY29udGFp
bnMobV9pZGVudGlmaWVyKSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKIAog
ICAgIHVzZXJDb250ZW50Q29udHJvbGxlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KQEAg
LTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPnBhZ2VJRCgpLCB3ZWJGcmFtZS0+aW5mbygp
LCBtX2lkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29u
dHJvbGxlci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlE
KCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZh
bHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAg
IFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggMjcyNmMyM2QyYTRmNDg0NTEwYWIwMTgzMjJlN2Q5MDI3OWIxNGY2
Ny4uODE0MTAxOTJhNzE2NmJmYzI1MGNjOWEyMDdhN2FmMDRhZjcxMDI5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlcwog
CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUp
OwogCi0gICAgdWludDY0X3QgbmV3UGFnZUlEID0gMDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gbmV3UGFnZUlEOwogICAgIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+
IHBhcmFtZXRlcnM7CiAgICAgaWYgKCF3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJh
bWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCksIHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCksIHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVy
cyksIG1fcGFnZS5wYWdlSUQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjk5LDgg
KzI5OSw4IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFt
ZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzCiAgICAgaWYgKHBhcmFtZXRlcnMtPnNl
c3Npb25JRCA9PSBtX3BhZ2Uuc2Vzc2lvbklEKCkpCiAgICAgICAgIHBhcmFtZXRlcnMtPm9sZFBh
Z2VJRCA9IG1fcGFnZS5wYWdlSUQoKTsKIAotICAgIHdlYlByb2Nlc3MuY3JlYXRlV2ViUGFnZShu
ZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMpKTsKLSAgICByZXR1cm4gd2ViUHJvY2Vzcy53
ZWJQYWdlKG5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7CisgICAgd2ViUHJvY2Vzcy5jcmVhdGVXZWJQ
YWdlKCpuZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gd2ViUHJv
Y2Vzcy53ZWJQYWdlKCpuZXdQYWdlSUQpLT5jb3JlUGFnZSgpOwogfQogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2hvdygpCkBAIC0xMzIyLDEyICsxMzIyLDEyIEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpCiB9CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3Jh
Z2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkNo
cm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1l
RG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UuaGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1
YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJh
YmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIG1fcGFnZS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1l
RG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBiMjg5ZmIyM2ZlNDFhYmJi
Y2ExY2UxNzJjZThhNGYyNWFjY2Q1ZWMwLi4zMTQ0NTFiNDAyOWQ4YTkyODlmY2E4NzVmMTg1ZWU1
ODg4NmIwYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNzIsOCArMzcyLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
ZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJikgZmluYWw7CisgICAgdm9pZCBo
YXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGY0MjhmZDIzOTdlZGRkNGQyNDExNzcwMzIzZWIzZmEy
NzkwMmQ4NWYuLjcwNTIwMjViOWRjZjkyNDE0Y2I2ZTQ4NDJkYWZhNzQ4YzBlMWY3NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyVW5kb1N0ZXAoVW5kb1N0ZXAmIHN0ZXApCiAgICAgYXV0byBzdGVwSUQgPSB3
ZWJTdGVwLT5zdGVwSUQoKTsKIAogICAgIG1fcGFnZS0+YWRkV2ViVW5kb1N0ZXAoc3RlcElELCBX
VEZNb3ZlKHdlYlN0ZXApKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oc3RlcElELCBzdGVwLmxhYmVsKCkpLCBtX3Bh
Z2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHN0ZXBJRCwgc3RlcC5sYWJlbCgpKSwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChVbmRvU3RlcCYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1MjljMDQ2NzAzMDFiMzUwYjEz
MjUxODM1NGE5ZTVhODU1YjljNDhkLi4zZGNkN2UyZWMxOTk4MTdkNzQ5NWVkMGE4MzYyNTM2NDM2
NjFjZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExMiw3ICsxMTIs
NyBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6fldlYkZyYW1lTG9hZGVyQ2xpZW50KCkKIHsKIH0K
IAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25z
dAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQo
KSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAg
cmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCk7CkBAIC01NDEsNyArNTQxLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNv
bnN0IFJlc291cmNlRXJyb3ImIGUKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBtX2ZyYW1lLT5m
cmFtZUlEKCkpOworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLnRv
VUludDY0KCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+
IHVzZXJEYXRhOwogCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBp
ZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmss
ICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkOiAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5w
YWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAi
JXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZDogKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFn
ZUlEKCkudG9VSW50NjQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAgIFJlZlB0cjxBUEk6
Ok9iamVjdD4gdXNlckRhdGE7CiAKQEAgLTkwMSw3ICs5MDEsOSBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
TmF2aWdhdAogICAgIGlmIChyZXF1ZXN0ZXIuZnJhbWVJRCgpICYmIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKHJlcXVlc3Rlci5mcmFtZUlEKCkpKQogICAgICAgICBvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IHJlcXVlc3Rlci5mcmFtZUlEKCk7CiAKLSAgICB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCA9IHJlcXVlc3Rlci5wYWdlSUQoKSAmJiBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5wYWdlSUQoKSkgPyByZXF1ZXN0ZXIucGFn
ZUlEKCkgOiAwOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RDsKKyAgICBpZiAocmVxdWVzdGVyLnBhZ2VJRCgpICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJRCgpKSkKKyAgICAgICAgb3JpZ2luYXRpbmdQYWdlSUQg
PSByZXF1ZXN0ZXIucGFnZUlEKCk7CiAKICAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0
aW9uQWN0aW9uRGF0YTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSA9
IGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggZjczYWI4Y2E3M2YxNzhiZjI2OGZmMmI4NDFjNDUxY2RkNDk4ZmFhMy4uYzhmYjJhZjIxMjU2
NmM2NDY4NjA3N2EwYzg5YWY4MTA1MzkwYTY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseVRvRG9jdW1lbnRM
b2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQo
KSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggZTFl
OTNhNmRlMzQ2N2VmMTQwOTQ1MzQ2ZDhkYjRmZGQyNzM4NjcwMy4uOWU0NmQ4MDczYjM4MGU0MjU1
NGJlYzVmNDQ0ODEzZjRlNmY5MzZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXVzaW5nIFBhc3N3b3JkQ2FsbGJhY2tNYXAgPSBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYpPj47Cit1c2luZyBQYXNzd29yZENhbGxiYWNrTWFwID0gSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4+
Owogc3RhdGljIFBhc3N3b3JkQ2FsbGJhY2tNYXAmIHBhc3N3b3JkQ2FsbGJhY2tzKCkKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UGFzc3dvcmRDYWxsYmFja01hcD4gY2FsbGJhY2tNYXA7
CiAgICAgcmV0dXJuIGNhbGxiYWNrTWFwLmdldCgpOwogfQogCi1XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgdXRpLCB1aW50NjRfdCBwYWdlSUQpCitXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2ZpbGVOYW1l
IHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdl
SUQgfQpAQCAtODUsNyArODUsNyBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJl
cXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZXF1ZXN0
UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fZmlsZU5hbWUpLCBtX3Bh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVBhc3N3
b3JkKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVBhc3N3b3JkKGNvbnN0IFN0cmluZyYgcGFzc3dv
cmQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQocGFzc3dv
cmRDYWxsYmFja3MoKS5jb250YWlucyhwYWdlSUQpKTsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gcGFzc3dvcmRDYWxsYmFja3MoKS50YWtlKHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IGY5OTg2ZTQxY2EyZjI1MWRiMmMzZTVkODhlMDhk
ZjUwNjg1NDA0ZTguLmJlODg3YWQ4YTdmMGI2NTdkMWZhNDUxZDE4MzNjZjFjZDQ0YjUzNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zNSwxNiArMzUsMTYg
QEAgY2xhc3MgV2ViRnJhbWU7CiAKIGNsYXNzIFdlYlByZXZpZXdMb2FkZXJDbGllbnQgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6UHJldmlld0xvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJQcmV2aWV3TG9hZGVyQ2xpZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIHVpbnQ2NF90IHBhZ2VJRCkKKyAgICBzdGF0aWMgUmVm
PFdlYlByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUHJldmlld0xvYWRlckNsaWVudChmaWxl
TmFtZSwgdXRpLCBwYWdlSUQpKTsKICAgICB9CiAgICAgfldlYlByZXZpZXdMb2FkZXJDbGllbnQo
KTsKIAotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVQYXNzd29yZChjb25zdCBTdHJpbmcmLCB1
aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVQYXNzd29yZChjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
UHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IHV0aSwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFp
bCgpIG92ZXJyaWRlOwpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU3Ry
aW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwotICAgIGNvbnN0IHVpbnQ2
NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlE
OwogICAgIFF1aWNrTG9va0RvY3VtZW50RGF0YSBtX2RhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggMjc2YjgwYmYy
OGYxZjVmZDQ5YTZmMGZiNDk5ZDMzNTEyYWRjMTAxMC4uYzA3Mzk2ZjAyZjFmYTY1ZjQ1YWNlZTcy
ZjEzNGY0ZmIyZDllODkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtNjgsNyArNjgsNyBAQCBEcmF3aW5nQXJlYTo6RHJhd2lu
Z0FyZWEoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIERyYXdpbmdBcmVhSWRlbnRpZmllciBpZGVudGlm
aWVyLAogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3dlYlBhZ2Uod2Vi
UGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIH0KIAogRHJhd2luZ0FyZWE6On5EcmF3aW5nQXJlYSgp
CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgRHJhd2luZ0FyZWE6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cklmTmVlZGVkKCkKICAgICBpZiAobV9oYXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVyKQogICAgICAg
ICByZXR1cm47CiAgICAgbV9oYXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVyID0gdHJ1ZTsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggNjkxODMwYjU5M2M2N2Fk
MzNkNzdhMGU2OGM1NDdhNjMxYzVhYjZkNy4uY2FjMTg4YjM0YTJiNzU0MDI0MjkwN2MwNWMzOWY4
MjMzNzcxZTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAg
ICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFdmVu
dERpc3BhdGNoZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1ZS5nZXQoKSwgdGhpcyk7
CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0
LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9v
bCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVu
dChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9v
bCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQogewogI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIFBsYXRmb3Jt
V2hlZWxFdmVudCBwbGF0Zm9ybVdoZWVsRXZlbnQgPSBwbGF0Zm9ybSh3aGVlbEV2ZW50KTsKQEAg
LTE0Miw3ICsxNDIsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbgogfQogCiAjaWYgRU5BQkxF
KE1BQ19HRVNUVVJFX0VWRU5UUykKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXN0dXJlRXZlbnQo
dWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2
ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaXNwYXRjaEdlc3R1cmVFdmVudChwYWdlSUQsIGdlc3R1cmVFdmVudCk7CkBAIC0xNjMs
NyArMTYzLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmdldFF1ZXVlZFRvdWNoRXZlbnRzRm9y
UGFnZShjb25zdCBXZWJQYWdlJiB3ZWJQYWdlLCBUb3VjaEUKICAgICBkZXN0aW5hdGlvblF1ZXVl
ID0gbV90b3VjaEV2ZW50cy50YWtlKHdlYlBhZ2UucGFnZUlEKCkpOwogfQogCi12b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2Vi
VG91Y2hFdmVudCYgdG91Y2hFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiB0b3Vj
aEV2ZW50KQogewogICAgIGJvb2wgdXBkYXRlTGlzdFdhc0VtcHR5OwogICAgIHsKQEAgLTE5NCw3
ICsxOTQsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgdAogCiB2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cygpCiB7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgVG91Y2hF
dmVudFF1ZXVlPiBsb2NhbENvcHk7CisgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVG91Y2hF
dmVudFF1ZXVlPiBsb2NhbENvcHk7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigm
bV90b3VjaEV2ZW50c0xvY2spOwogICAgICAgICBsb2NhbENvcHkuc3dhcChtX3RvdWNoRXZlbnRz
KTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hUb3Vj
aEV2ZW50cygpCiB9CiAjZW5kaWYKIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hl
ZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQp
Cit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVs
RXZlbnQmIHcKIH0KIAogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi12b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaEdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVF
dmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
QEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJl
RXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotdm9pZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRS
ZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJFdmVudCYgZXZlbnQsIGJvb2wg
ZGlkSGFuZGxlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6c2VuZERpZFJlY2VpdmVFdmVu
dChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiBldmVudCwgYm9vbCBkaWRI
YW5kbGVFdmVudCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVu
dChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXZlbnQudHlwZSgpKSwgZGlkSGFuZGxlRXZlbnQpLCBw
YWdlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVu
dERpc3BhdGNoZXIuaAppbmRleCAxZDQ3Nzg3N2VhYWU0MDQ1MjZhMDc0NTFjMDcxODY5OTdhNTUw
ZTU0Li5lMWJiYmQ0Nzk2OWJmYmI3NTJjNjFkMjFjNjFhMjllZWZhZDk2MmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAogI2luY2x1ZGUgIldlYkV2
ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2hlZWxFdmVudERlbHRhRmlsdGVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC03NywzOCArNzgsMzggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZvaWQgd2hlZWxFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmLCBib29sIGNhblJ1YmJlckJhbmRBdExl
ZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBi
b29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSk7CisgICAgdm9pZCB3aGVlbEV2ZW50KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRv
cCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZF
TlRTKQotICAgIHZvaWQgdG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlRvdWNo
RXZlbnQmKTsKKyAgICB2b2lkIHRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVO
VFMpCi0gICAgdm9pZCBnZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0
dXJlRXZlbnQmKTsKKyAgICB2b2lkIGdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAogCiAgICAgLy8gVGhpcyBpcyBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50KHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYpOworICAgIHZvaWQgZGlzcGF0Y2hX
aGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50Jik7
CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBkaXNwYXRjaFRvdWNoRXZl
bnRzKCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQg
ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZl
bnQmKTsKKyAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKLSAgICB2b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlkSGFuZGxlRXZlbnQpOworICAgIHZvaWQgc2VuZERp
ZFJlY2VpdmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViRXZlbnQmLCBi
b29sIGRpZEhhbmRsZUV2ZW50KTsKICNlbmRpZgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1
ZTsKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgTG9jayBtX3Njcm9sbGluZ1Ry
ZWVzTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVk
U2Nyb2xsaW5nVHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZT4+IG1f
c2Nyb2xsaW5nVHJlZXM7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2hl
ZWxFdmVudERlbHRhRmlsdGVyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YUZpbHRlcjsKICNpZiBF
TkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBMb2NrIG1fdG91Y2hFdmVudHNMb2NrOwotICAg
IEhhc2hNYXA8dWludDY0X3QsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBUb3VjaEV2ZW50UXVldWU+IG1fdG91Y2hF
dmVudHM7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgppbmRleCA1ZTE1NDNj
OThjY2ZhNDE0MDFjMjc1MzhjNjI5OWY5YTU4MGYzNjdiLi5hZjkwNGI0NTE2YTEwOTgwODU0YzFh
MzQ0ZTYxMjJjZmQ3MTY0Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCkBAIC0yMSwxMSAr
MjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gRXZlbnREaXNwYXRjaGVyIHsK
LSAgICBXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2
ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQs
IGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKKyAg
ICBXaGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJX
aGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVy
QmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRB
dEJvdHRvbSkKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICBUb3VjaEV2ZW50KHVp
bnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorICAgIFRvdWNoRXZl
bnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQg
ZXZlbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIEdlc3R1
cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQor
ICAgIEdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6
V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggYjc1MmMxYzU0ZDQ2ZjA4
ZGRhNjY1YjVmMzU2NGQ1NDJhNjY1ZWNmNi4uYjI5MWRmMGI3ZGZkZjc5MzllN2RhYWU3MjM0MjAy
NjVkYjE5YzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbQpAQCAtNzUsNyArNzUsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3Qg
VwogICAgIC8vIEZJWE1FOiBXaGlsZSB1c2luZyB0aGUgaGlnaCBlbmQgb2YgdGhlIHJhbmdlIG9m
IERpc3BsYXlJRHMgbWFrZXMgYSBjb2xsaXNpb24gd2l0aCByZWFsLCBub24tUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEKICAgICAvLyBEaXNwbGF5SURzIGxlc3MgbGlrZWx5LCBpdCBpcyBub3Qg
ZW50aXJlbHkgc2FmZSB0byBoYXZlIGEgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgYW5kIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhCiAgICAgLy8gY29lZXhpc3QgaW4gdGhlIHNhbWUg
cHJvY2Vzcy4KLSAgICB3ZWJQYWdlLndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSB3ZWJQYWdlLnBhZ2VJRCgpKTsKKyAgICB3ZWJQYWdl
LndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCkgLSB3ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogfQogCiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYTo6flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKCkKQEAgLTQzNCw3ICs0MzQs
NyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAg
UmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IGJhY2tpbmdTdG9yZUZsdXNoZXIgPSBCYWNraW5n
U3RvcmVGbHVzaGVyOjpjcmVhdGUoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKSwgV1RGTW92ZShjb21taXRFbmNvZGVyKSwgV1RGTW92ZShjb250ZXh0c1Rv
Rmx1c2gpKTsKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3Jl
Rmx1c2hlcjsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAg
ICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQoKTsKICAgICBkaXNwYXRjaF9hc3luYyht
X2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3Jl
Rmx1c2hlciksIHBhZ2VJRF0gewogICAgICAgICBiYWNraW5nU3RvcmVGbHVzaGVyLT5mbHVzaCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBk
YXRlRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
VXBkYXRlRGlzcGF0Y2hlci5jcHAKaW5kZXggYzNhOTUyNTY1MzI2ZTc0OWU1MjYxMTMyYjA0NGFh
NTg4ODAyYzA0Zi4uNWNmNDQ0MDdlM2ZiM2Y2N2EwMzQ3MDAzZDA0NzhkNzQxOTkzMjQzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3Bh
dGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRh
dGVEaXNwYXRjaGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRj
aGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAg
ICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3
VXBkYXRlRGlzcGF0Y2hlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0
aGlzKTsKIH0KIAotdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5m
byYgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbykKK3ZvaWQgVmlld1VwZGF0ZURpc3BhdGNo
ZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2libGVDb250ZW50UmVj
dFVwZGF0ZUluZm8pCiB7CiAgICAgYm9vbCB1cGRhdGVMaXN0V2FzRW1wdHk7CiAgICAgewpAQCAt
NzUsNyArNzUsNyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjp2aXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBWaXNpYgogCiB2b2lkIFZpZXdVcGRhdGVE
aXNwYXRjaGVyOjpkaXNwYXRjaFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSgpCiB7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgVXBkYXRlRGF0YT4gdXBkYXRlOworICAgIEhhc2hNYXA8UGFnZUlkZW50
aWZpZXIsIFVwZGF0ZURhdGE+IHVwZGF0ZTsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKCZtX2RhdGFNdXRleCk7CiAgICAgICAgIHVwZGF0ZSA9IFdURk1vdmUobV9sYXRlc3RVcGRh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1Vw
ZGF0ZURpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdV
cGRhdGVEaXNwYXRjaGVyLmgKaW5kZXggZTQ3ZGM0ZTFkNDE2ODIyMzQwYWZhZGVhMmEzYzgwNjIw
ZjRiMjA4OC4uY2E3ZDIwMGMyYmNmNjVlNzdiODBhMjlkZmFjMTk0M2VjMmRkNDE0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNo
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlz
cGF0Y2hlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCiAj
aW5jbHVkZSAiVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNDcsNyArNDgsNyBAQCBwcml2
YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mKTsKKyAgICB2b2lk
IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3Qg
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYpOwogCiAgICAgdm9pZCBkaXNwYXRjaFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZSgpOwogCkBAIC01OCw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIExvY2sgbV9kYXRhTXV0ZXg7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgVXBkYXRlRGF0YT4gbV9sYXRlc3RVcGRhdGU7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVXBkYXRlRGF0YT4gbV9sYXRlc3RVcGRhdGU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4K
aW5kZXggMTdlMmM4ZGQxODZhZDI3NmU1NThhY2M4ODBjMjY4OGQ1MDM1OGZlNi4uZDkyZWViODg5
ZDA5NTcyYTFkMjI2ZTgzYzdjZTEzZjU5NjEwMjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIu
bWVzc2FnZXMuaW4KQEAgLTIxLDUgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMg
LT4gVmlld1VwZGF0ZURpc3BhdGNoZXIgewotICAgIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSh1
aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyB2aXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKQorICAgIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlSW5mbyB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0
UHJveHkuY3BwCmluZGV4IDIxMWQ2MDFlZjBiNDRmNTJhYTJkZTk2M2U4NDUzZjg2YzUyZjhmZDQu
LjdhMGMwYzgwZmU4Y2M2MDExNjkzZDdiNDUyN2FiZWM3ZTllNWU3NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExp
c3RQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIElEVG9IaXN0b3J5SXRlbU1hcCYg
aWRUb0hpc3RvcnlJdGVtTWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi12b2lkIFdlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCB1aW50NjRfdCBw
YWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0pCit2b2lk
IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlz
dGluZ0l0ZW0pCiB7CiAgICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWlyIHNob3VsZCBub3QgYWxy
ZWFkeSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQob3ZlcndyaXRlRXhpc3Rp
bmdJdGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZ
ZXMgfHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlz
dFByb3h5LmgKaW5kZXggZjNiMWM4YWY1NDgyM2MzZTgyNjhkNmFlNThlNDBhNmY2MTU0ZDA4MS4u
ZDFiYWFkYjkxYzU1ODYxYjE1NDNiOTcxNzY0ODYyYjVkMjIzOTc3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNv
cmUvQmFja0ZvcndhcmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9Owot
ICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgdWludDY0X3QgcGFn
ZUlELCBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0pOworICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nl
c3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE92ZXJ3cml0ZUV4aXN0
aW5nSXRlbSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDE2MGVkZWZkNTlkMTBhMDIz
ZTRhZjI1MWJlMmIxYTliMmE5OGIyZDUuLjczOGJlOTJiOTJkYzczZDJkZjY3N2VlMzRlYzEzMDgx
YTYwZjFhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29va2llSmFyLmNwcApAQCAtMzgsNiArMzgsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIGNsYXNzIFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CiAgICAgLy8gTmV0
d29ya1N0b3JhZ2VTZXNzaW9ucyBhcmUgYWNjZXNzZWQgb25seSBpbiB0aGUgTmV0d29ya1Byb2Nl
c3MuCiAgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTQ5LDcgKzUxLDcgQEAgV2ViQ29v
a2llSmFyOjpXZWJDb29raWVKYXIoKQogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7
CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkucGFnZUlEKCk7CkBAIC02Niw3ICs2OCw3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6
OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29u
c3QKIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC04Myw3ICs4NSw3IEBAIGJvb2wgV2ViQ29va2llSmFy
Ojpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2Vj
dXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+
IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpT
ZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAg
ICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0g
ZmFsc2U7CkBAIC05NSw3ICs5Nyw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhCiBib29sIFdl
YkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAppbmRleCA5N2RkNzZmNjY0YzNmNTUzYWRm
YzhlNzZiYjg1ZWEzZjExMWU1MTFlLi41NTliZDBlNTBiYmVjMzVmZmIyNTZiOTEyYjdiNDZkYTk5
NGIyZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGNvb2tpZXMoV2Vi
Q29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldENv
b2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykgZmluYWw7CiAgICAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpE
b2N1bWVudCYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
UEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0Fj
Y2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25J
RCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNv
bnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA4OTBjNWU1NmFjMDRjZTczZjQ1
ZWUwN2Q5NzgzNTFmZDMxY2FhNTIxLi40YWY0OTVhNTFiOTAzNzI2ZjNiYjY0YzNhNGRlMzE1MWQ5
OWZiYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTGlzdGVuZXJJ
RCgpCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShXZWJQ
YWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKQogewogICAgIGF1dG8gZnJhbWUg
PSBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PihzdGF0aWNfY2Fz
dDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCZjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSkp
OwotICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZy
YW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVNYWluRnJhbWUoZnJhbWUtPmZyYW1lSUQo
KSkpOwogCiAgICAgZnJhbWUtPm1fY29yZUZyYW1lID0gY29yZUZyYW1lOwogICAgIGZyYW1lLT5t
X2NvcmVGcmFtZS0+dHJlZSgpLnNldE5hbWUoU3RyaW5nKCkpOwpAQCAtMTIxLDcgKzEyMSw3IEBA
IFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2Uq
IHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVT
dWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7CiAgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShz
dGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKLSAgICBwYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlE
KCkpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBhdXRvIGNv
cmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUocGFnZS0+Y29yZVBhZ2UoKSwgb3duZXJFbGVtZW50LCBm
cmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudC5nZXQoKSk7CiAgICAgZnJhbWUtPm1fY29yZUZyYW1l
ID0gY29yZUZyYW1lLnB0cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IGM5NjUyZTk0YWY4NmI2MGU3ZmRlNzM2MjVk
MTFiNWFiY2VhNGM5ZGEuLmJjZmY4ZTJhODk2ZmYwMmU4MjUxNjUyNzgxMTliZDFmZWI0NjIxZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
clVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJ
KFdlYlBhZ2UmIHBhZ2UpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJs
aXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRl
clRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmVz
dGFibGlzaENvbm5lY3Rpb24oUGFnZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIs
IGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiB7CiAgICAgbV9pbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIG1fZnJv
bnRlbmRBUElEaXNwYXRjaGVyLnJlc2V0KCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQogICAgIGlmIChtX2Zyb250ZW5kSG9zdCkKICAgICAg
ICAgbV9mcm9udGVuZEhvc3QtPmRpc2Nvbm5lY3RDbGllbnQoKTsKIAotICAgIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIgPSAwOworICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSB7IH07
CiAgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKaW5kZXggODM4MWJmMWNlZGVjYjY1YzVk
NDc0NzVjMjJiN2QzZGI2MmZiZmQ4ZS4uOTQyNGJmZTFmMjZjZmRjMTY5MDdjNzgxZmVmNGQ2ZDA1
YzVlY2UyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JVSS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKSBvdmVycmlkZSB7IGNsb3NlV2lu
ZG93KCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JVSSBtZXNzYWdlcwotICAg
IHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmll
ciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCk7CisgICAgdm9pZCBl
c3RhYmxpc2hDb25uZWN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKTsKICAg
ICB2b2lkIHVwZGF0ZUNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKQEAg
LTEzMyw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIC8vIGNvcmVQYWdlKCksIHNpbmNlIHdlIG1h
eSBuZWVkIGl0IGFmdGVyIHRoZSBmcm9udGVuZCdzIHBhZ2UgaGFzIHN0YXJ0ZWQgZGVzdHJ1Y3Rp
b24uCiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciogbV9mcm9udGVuZENvbnRyb2xs
ZXIgeyBudWxscHRyIH07CiAKLSAgICB1aW50NjRfdCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
IHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXI7CiAgICAgYm9vbCBtX3VuZGVyVGVzdCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvY2tp
bmdVbmF2YWlsYWJsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzVmlzaWJsZSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLm1lc3NhZ2VzLmluCmluZGV4IGRlYTBmZTU4NGQ0ZWYwZjg2ZmE5NzE2NjJiYjQ3
YjQxYTdmNjEzYmYuLjQzMTkwYWE4MzRkY2FhNjY5NjRiYmJhOTU1MDA4MjFmYjdkNjEwMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJIHsKLSAgICBFc3RhYmxpc2hDb25uZWN0aW9uKHVp
bnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQg
aW5zcGVjdGlvbkxldmVsKQorICAgIEVzdGFibGlzaENvbm5lY3Rpb24oV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25l
ZCBpbnNwZWN0aW9uTGV2ZWwpCiAgICAgVXBkYXRlQ29ubmVjdGlvbigpCiAKICAgICBBdHRhY2hl
ZEJvdHRvbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDc2ZjdjNWNiZjkwYzU1ZDM2NzM5Nzk0YzRlZTJjOTZjMTY3MjNiMDguLjhiMGIzMzgx
YmE5ZDFjYjAwYWYxY2Q1ZTRkNGZlMGMwMjc5ZTQ0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAgcHJpdmF0ZToK
IAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCB3
ZWJQYWdlQ291bnRlciwgKCJXZWJQYWdlIikpOwogCi1SZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3Jl
YXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCitSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgUmVmPFdlYlBh
Z2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKSk7CiAKQEAgLTM3MCw3ICszNzAsNyBAQCBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRl
KHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogICAg
IHJldHVybiBwYWdlOwogfQogCi1XZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX3ZpZXdTaXplKHBhcmFtZXRlcnMu
dmlld1NpemUpCiAgICAgLCBtX2Fsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyIHsgcGFyYW1l
dGVycy5hbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciB9CkBAIC04MzEsNyArODMxLDcgQEAg
SVBDOjpDb25uZWN0aW9uKiBXZWJQYWdlOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0
CiAKIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gcGFnZUlEKCk7CisgICAgcmV0dXJuIHBhZ2VJRCgpLnRvVUludDY0KCk7
CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZv
aWQgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IEJhY2tGb3J3YXJkSXRlbUlkCiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAK
LSAgICBMT0coTG9hZGluZywgIkluIFdlYlByb2Nlc3MgcGlkICVpLCBXZWJQYWdlICUiIFBSSXU2
NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFjay9mb3J3YXJkIFVSTCAlcyIsIGdldEN1cnJlbnRQcm9j
ZXNzSUQoKSwgbV9wYWdlSUQsIGl0ZW0tPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIExPRyhMb2FkaW5nLCAiSW4gV2ViUHJvY2VzcyBwaWQgJWksIFdlYlBhZ2UgJSIgUFJJdTY0
ICIgaXMgbmF2aWdhdGluZyB0byBiYWNrL2ZvcndhcmQgVVJMICVzIiwgZ2V0Q3VycmVudFByb2Nl
c3NJRCgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBpdGVtLT51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIAogICAgIEFTU0VSVCghbV9wZW5kaW5nTmF2aWdhdGlvbklEKTsKICAgICBtX3Bl
bmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CkBAIC0yMDc2LDcgKzIwNzYsNyBAQCBi
b29sIFdlYlBhZ2U6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IGlmICghdmlldyB8fCB2aWV3LT5maXhlZExheW91dFNpemUoKSA9PSBzaXplKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIHNldEZpeGVkTGF5b3V0U2l6ZSAiIDw8IHNp
emUpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFn
ZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBzZXRGaXhlZExheW91dFNpemUgIiA8PCBz
aXplKTsKICAgICB2aWV3LT5zZXRGaXhlZExheW91dFNpemUoc2l6ZSk7CiAKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpeGVkTGF5b3V0U2l6ZURpZENoYW5nZShzaXplKSk7CkBA
IC0yNTA0LDcgKzI1MDQsNyBAQCBjb25zdCBXZWJFdmVudCogV2ViUGFnZTo6Y3VycmVudEV2ZW50
KCkKIHZvaWQgV2ViUGFnZTo6ZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbiBy
ZWFzb24pCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlBh
Z2UgKFBhZ2VJRD0lbGx1KSAtIEFkZGluZyBhIHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJl
ZTsgY3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3
KCkpOworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1f
bGF5ZXJUcmVlRnJlZXplUmVhc29ucy5hZGQocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJl
YUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBAIC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFdl
YlBhZ2U6OmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogdm9p
ZCBXZWJQYWdlOjp1bmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29u
KQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQYWdlIChQ
YWdlSUQ9JWxsdSkgLSBSZW1vdmluZyBhIHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJlZTsg
Y3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkp
OworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1fbGF5
ZXJUcmVlRnJlZXplUmVhc29ucy5yZW1vdmUocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJl
YUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBAIC0zMTY4LDcgKzMxNjgsNyBAQCB2b2lkIFdl
YlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogCiB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5
U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxs
YmFja0lEPiYgY2FsbGJhY2tJRHMpCiB7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3Rh
dGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IHBhZ2VJRCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0
ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0
YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBwYWdlSUQoKS50b1VJbnQ2NCgpIDw8ICIgc2V0
QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOwogCiAgICAgYXV0byBjaGFuZ2Vk
ID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKICAgICBtX2FjdGl2aXR5U3RhdGUg
PSBhY3Rpdml0eVN0YXRlOwpAQCAtMzE3Niw3ICszMTc2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRB
Y3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRl
LCBBY3QKICAgICBpZiAoY2hhbmdlZCkKICAgICAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwog
Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BhZ2UsICJzZXRBY3Rpdml0eVN0YXRlIGNhbGxl
ZCBvbiAlIiBQUkl1NjQgIiBidXQgV2ViQ29yZSBwYWdlIHdhcyBudWxsIiwgcGFnZUlEKCkpOwor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wYWdlLCAic2V0QWN0aXZpdHlTdGF0ZSBjYWxsZWQg
b24gJSIgUFJJdTY0ICIgYnV0IFdlYkNvcmUgcGFnZSB3YXMgbnVsbCIsIHBhZ2VJRCgpLnRvVUlu
dDY0KCkpOwogICAgIGlmIChtX3BhZ2UpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uU2V0
PEFjdGl2aXR5U3RhdGU6OkZsYWc+PiBjdXJyZW50bHlDaGFuZ2luZ0FjdGl2aXR5U3RhdGUgeyBt
X2xhc3RBY3Rpdml0eVN0YXRlQ2hhbmdlcywgY2hhbmdlZCB9OwogICAgICAgICBtX3BhZ2UtPnNl
dEFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZSk7CkBAIC00MzM5LDcgKzQzMzksNyBAQCB2b2lk
IFdlYlBhZ2U6Om1haW5GcmFtZURpZExheW91dCgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpIHsKICAgICAg
ICAgSW50U2l6ZSBuZXdDb250ZW50U2l6ZSA9IGZyYW1lVmlldy0+Y29udGVudHNTaXplKCk7Ci0g
ICAgICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAi
IDw8IG1fcGFnZUlEIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXpl
IHRvICIgPDwgbmV3Q29udGVudFNpemUpOworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJs
ZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIg
bWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVu
dFNpemUpOwogICAgICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNT
aXplKG5ld0NvbnRlbnRTaXplKSkKICAgICAgICAgICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNo
YW5nZWQoKTsKICAgICB9CkBAIC01NzQyLDcgKzU3NDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZENv
bW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgIAogICAgIGJvb2wgdmlld3BvcnRDaGFuZ2Vk
ID0gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwg
IldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIGRpZENvbW1pdExvYWQgc2V0dGluZyBjb250ZW50
IHNpemUgdG8gIiA8PCBjb3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkpOworICAgIExP
R19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFn
ZUlELnRvVUludDY0KCkgPDwgIiBkaWRDb21taXRMb2FkIHNldHRpbmcgY29udGVudCBzaXplIHRv
ICIgPDwgY29yZUZyYW1lLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKICAgICBpZiAobV92aWV3
cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNTaXplKGNvcmVGcmFtZS0+dmlldygpLT5jb250
ZW50c1NpemUoKSkpCiAgICAgICAgIHZpZXdwb3J0Q2hhbmdlZCA9IHRydWU7CiAKQEAgLTYwNTYs
NyArNjA1Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2VuZEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICAv
LyBJZiB0aGF0IGlzIHRoZSBjYXNlLCBqdXN0IHNlbmQgd2hhdCB3ZSBoYXZlIChpLmUuIGRvbid0
IGluY2x1ZGUgcG9zdC1sYXlvdXQgZGF0YSkgYW5kIHdhaXQgdW50aWwgdGhlCiAgICAgLy8gbmV4
dCBsYXllciB0cmVlIGNvbW1pdCB0byBjb21wdXRlIGFuZCBzZW5kIHRoZSBjb21wbGV0ZSBFZGl0
b3JTdGF0ZSBvdmVyLgogICAgIGF1dG8gc3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSwgcGFnZUlE
KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2Vk
KHN0YXRlKSk7CiAKICAgICBpZiAoc3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAg
ICAgIHNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCk7CkBAIC02MjM3LDcgKzYyMzcsNyBA
QCB2b2lkIFdlYlBhZ2U6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQ
STo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIAogdm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZUlnbm9y
aW5nRnVsbHlTeW5jaHJvbm91c01vZGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkpKSwgcGFnZUlEKCksIElQ
Qzo6U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5jaHJvbm91c01vZGUpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEo
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdl
Qm9keSkpKSwgSVBDOjpTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6cG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JiByZXR1cm5EYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGFkN2NkOGQzMWRlZGI3NDVlODg0Mjc4MTgxZjM2ZTczNmNjODAyOGQu
LmZiYTA2YzQ5ZGJiYjRmNDNkZjkyN2RiNTY4NWVlYjVlMzA5MmQ4MDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemVIYXNoLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BvaW50ZXJJRC5oPgpAQCAtMjc0
LDcgKzI3NSw4IEBAIHVzaW5nIFdLRXZlbnRNb2RpZmllcnMgPSB1aW50MzJfdDsKIAogY2xhc3Mg
V2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRs
ZVBhZ2U+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYWdlPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworCiAgICAgdmlydHVh
bCB+V2ViUGFnZSgpOwogCiAgICAgdm9pZCByZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJik7CkBAIC0yODQsNyArMjg2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBXZWJQYWdlKiBmcm9tQ29yZVBhZ2UoV2ViQ29yZTo6UGFnZSopOwogCiAgICAgV2ViQ29yZTo6
UGFnZSogY29yZVBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KLSAgICB1aW50
NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQo
KTsgfQogICAgIGJvb2wgdXNlc0VwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7IH0KIApAQCAtMTE3MSw3ICsxMTczLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKICAgICAgICAgY2FuY2VsR2VzdHVyZXNCbG9j
a2VkT25TeW5jaHJvbm91c1JlcGxpZXMoKTsKLSAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1v
dmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX3BhZ2VJRCwgU2Vjb25kczo6aW5maW5pdHko
KSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQp
OworICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBs
eSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRm
b3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIpOwpAQCAtMTIwNCw3ICsxMjA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNl
cklzSW50ZXJhY3RpbmcoYm9vbCB1c2VySXNJbnRlcmFjdGluZykgeyBtX3VzZXJJc0ludGVyYWN0
aW5nID0gdXNlcklzSW50ZXJhY3Rpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBXZWJQYWdlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCiAg
ICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKQEAgLTE1OTEsNyArMTU5Myw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29t
bWl0dGluZ0xvYWQoKTsKIAotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBh
Z2U+IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdl
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0LmNwcAppbmRleCBkOTZhN2Q3ZGRhOWYyNmQxYzY1NmExNWNiODNkMDNjZjIwNGE3YTM4
Li5iNzc5OWI0ZmJiOGI1NWNiNjZiNjIyMjdhNmE2NWYzYWIxMmNhMDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0LmNwcApAQCAtNDEsNyArNDEsNyBAQCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjpXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0KFdlYlBhZ2UmIHBhZ2UpCiAKIFN0cmluZyBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0OjppZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZygi
cGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJwYWdlLSIs
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBjaGFubmVsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVk
U3VyZmFjZVdheWxhbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9B
Y2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgKaW5kZXggM2I3M2U0OGE3N2U2ZDU3NzAwMTU0MmJk
NmQyOGNjMWY1MDg4MzNlYy4uZmZmYjQ2NDgzZmM1NTJmMmU3OTQ4NTg5ZDFlN2Q5YTZlZWJkN2M1
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2Vs
ZXJhdGVkU3VyZmFjZVdheWxhbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICB+QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCgpID0gZGVmYXVsdDsKIAogICAg
IHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDY0X3Q+KG1fd2luZG93KTsgfQotICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsgfQorICAgIHVpbnQ2NF90IHN1
cmZhY2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKXRvVUlu
dDY0KCk7IH0KICAgICB2b2lkIGNsaWVudFJlc2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikg
b3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRQYWludE1pcnJvcmVkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9saWJ3cGUvQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuY3Bw
CmluZGV4IDk4M2I5MzE5YjI4NDk2NzY2ODhjYTY3MDVlMjc0ODU0OTJmZmFiZWQuLmI4OWRmYTgw
NDFmYjI2ZDZmY2JlZjdkZThiNDRkNmU4YTA0M2FmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2xpYndwZS9BY2NlbGVyYXRl
ZFN1cmZhY2VMaWJXUEUuY3BwCkBAIC04OCw3ICs4OCw3IEBAIHVpbnQ2NF90IEFjY2VsZXJhdGVk
U3VyZmFjZUxpYldQRTo6d2luZG93KCkgY29uc3QKIAogdWludDY0X3QgQWNjZWxlcmF0ZWRTdXJm
YWNlTGliV1BFOjpzdXJmYWNlSUQoKSBjb25zdAogewotICAgIHJldHVybiBtX3dlYlBhZ2UucGFn
ZUlEKCk7CisgICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpOwogfQogCiB2
b2lkIEFjY2VsZXJhdGVkU3VyZmFjZUxpYldQRTo6Y2xpZW50UmVzaXplKGNvbnN0IEludFNpemUm
IHNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCmluZGV4
IDMwMWIxMzllMWQyYzE2ZDg5YTJhYjg5M2NmODU1NzEwNzNkOGY1MWEuLjZiN2VjNWIxNmYyY2E2
YTA2MjYxMzhmMWZmMDk3ZDBiNTI5MTUyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlX
ZWJQYWdlT2JqZWN0QmFzZS5oCkBAIC0yNiwxMyArMjYsMTUgQEAKICNpZm5kZWYgV0tBY2Nlc3Np
YmlsaXR5V2ViUGFnZU9iamVjdEJhc2VfaAogI2RlZmluZSBXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0QmFzZV9oCiAKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CisKIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZTsKIH0KIAogQGludGVyZmFjZSBXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZSA6IE5TT2JqZWN0IHsKICAgICBXZWJLaXQ6OldlYlBh
Z2UqIG1fcGFnZTsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBtX3BhZ2VJRDsKICAgICBpZCBtX3BhcmVudDsKICAgICBib29sIG1faGFzTWFpbkZy
YW1lUGx1Z2luOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNl
Lm1tCmluZGV4IDNkM2YzNTU1M2U2ZDRmYmVhNTU2NTM0NzgwODg4MDY5MTBmMDUwMDkuLjYxNjVh
MDFmZTYwODI0OGZkZTNiOTYwZjc4OTQ1MTM5MjM3MWRmOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0
QmFzZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UubW0KQEAgLTE0OCw3ICsxNDgsNyBAQCAtICh2b2lk
KXNldFdlYlBhZ2U6KFdlYktpdDo6V2ViUGFnZSopcGFnZQogICAgICAgICBhdXRvKiBmcmFtZSA9
IHBhZ2UtPm1haW5GcmFtZSgpOwogICAgICAgICBtX2hhc01haW5GcmFtZVBsdWdpbiA9IGZyYW1l
ICYmIGZyYW1lLT5kb2N1bWVudCgpID8gZnJhbWUtPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1l
bnQoKSA6IGZhbHNlOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fcGFnZUlEID0gMDsKKyAgICAg
ICAgbV9wYWdlSUQgPSB7IH07CiAgICAgICAgIG1faGFzTWFpbkZyYW1lUGx1Z2luID0gZmFsc2U7
CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDVj
ZTY5Y2NmODMzNGM5ZDhkMDg4YzIxMjhlNGYzNGM2Y2ZhZWFkZDguLjYxNzRiMGEzYmIwYjM3NGFl
OTg0ZDNhYjFiZDhiZjIzNzNiZDU3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBXZWJQcm9jZXNzOjpXZWJQcm9jZXNzKCkKICAg
ICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVXBkYXRlZChXVEZNb3ZlKHN0YXRpc3RpY3MpKSwgMCk7CiAgICAgfSk7CiAKLSAgICBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lckNhbGxiYWNrKFt0aGlzXSAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBv
cGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21haW4pIHsKKyAg
ICBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuc2V0UmVxdWVzdFN0b3JhZ2VBY2Nlc3NV
bmRlck9wZW5lckNhbGxiYWNrKFt0aGlzXSAoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRl
bnRpZmllciBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBvcGVuZXJEb21h
aW4pIHsKICAgICAgICAgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlv
bigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpSZXF1ZXN0
U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKHNlc3Npb25JRCwgZG9tYWluSW5OZWVkT2ZTdG9yYWdl
QWNjZXNzLCBvcGVuZXJQYWdlSUQsIG9wZW5lckRvbWFpbiksIDApOwogICAgIH0pOwogI2VuZGlm
CkBAIC02NjcsMTYgKzY2NywxNiBAQCBXZWJQYWdlKiBXZWJQcm9jZXNzOjpmb2N1c2VkV2ViUGFn
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAgICAgCi1XZWJQYWdlKiBXZWJQcm9jZXNzOjp3
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK1dlYlBhZ2UqIFdlYlByb2Nlc3M6OndlYlBh
Z2UoUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIHJldHVybiBtX3BhZ2VNYXAu
Z2V0KHBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZSh1aW50NjRf
dCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQordm9pZCBX
ZWJQcm9jZXNzOjpjcmVhdGVXZWJQYWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5
IHRvIGNoZWNrIGZvciBwYWdlIGV4aXN0ZW5jZSBoZXJlIHNpbmNlIGR1cmluZyBhIHdpbmRvdy5v
cGVuKCkgKG9yIHRhcmdldGVkCiAgICAgLy8gbGluaykgdGhlIFdlYlBhZ2UgZ2V0cyBjcmVhdGVk
IGJvdGggaW4gdGhlIHN5bmNocm9ub3VzIGhhbmRsZXIgYW5kIHRocm91Z2ggdGhlIG5vcm1hbCB3
YXkuIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxXZWJQYWdlPj46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7CisgICAgYXV0byByZXN1bHQg
PSBtX3BhZ2VNYXAuYWRkKHBhZ2VJRCwgbnVsbHB0cik7CiAgICAgYXV0byBvbGRQYWdlSUQgPSBw
YXJhbWV0ZXJzLm9sZFBhZ2VJRCA/IHBhcmFtZXRlcnMub2xkUGFnZUlELnZhbHVlKCkgOiBwYWdl
SUQ7CiAgICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZSk7CkBAIC02OTMsNyArNjkzLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpj
cmVhdGVXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYm
IHBhcmEKICAgICBBU1NFUlQocmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKLXZvaWQgV2Vi
UHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90
IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzczo6cmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQobV9wYWdlTWFw
LmNvbnRhaW5zKHBhZ2VJRCkpOwogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCB2b2lkIFdlYlByb2Nl
c3M6OnVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uKQogCiAjZW5k
aWYKIAotdm9pZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZSh1aW50NjRf
dCwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpCit2b2lk
IFdlYlByb2Nlc3M6OnBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hhbmdlKFBhZ2VJZGVudGlmaWVyLCBP
cHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCkKIHsKICAgICBp
ZiAoY2hhbmdlZCAmIFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSkKICAgICAgICAg
dXBkYXRlQ1BVTW9uaXRvclN0YXRlKENQVU1vbml0b3JVcGRhdGVSZWFzb246OlZpc2liaWxpdHlI
YXNDaGFuZ2VkKTsKQEAgLTE2MjQsMTMgKzE2MjQsMTMgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZW5k
UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFVSTCYgdXJsKQogICAgIHBhcmVudFByb2Nlc3NDb25u
ZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkQ29sbGVjdFByZXdh
cm1JbmZvcm1hdGlvbihyZWdpc3RyYWJsZURvbWFpbiwgV2ViQ29yZTo6UHJvY2Vzc1dhcm1pbmc6
OmNvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oKSksIDApOwogfQogCi12b2lkIFdlYlByb2Nlc3M6
OnBhZ2VEaWRFbnRlcldpbmRvdyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnBh
Z2VEaWRFbnRlcldpbmRvdyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgbV9wYWdlc0lu
V2luZG93cy5hZGQocGFnZUlEKTsKICAgICBtX25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVy
LnN0b3AoKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2
NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGFnZVdpbGxMZWF2ZVdpbmRvdyhQYWdlSWRl
bnRpZmllciBwYWdlSUQpCiB7CiAgICAgbV9wYWdlc0luV2luZG93cy5yZW1vdmUocGFnZUlEKTsK
IApAQCAtMTY3Myw3ICsxNjczLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjplbmFibGVQcml2YXRlQnJv
d3NpbmdGb3JUZXN0aW5nKGJvb2wgZW5hYmxlKQogICAgIGlmIChlbmFibGUpCiAgICAgICAgIGVu
c3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAKLSAg
ICBWZWN0b3I8dWludDY0X3Q+IHBhZ2VJRHM7CisgICAgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiBw
YWdlSURzOwogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZU1hcCkgewogICAgICAgICBpZiAo
cGFnZS52YWx1ZSkKICAgICAgICAgICAgIHBhZ2VJRHMuYXBwZW5kKHBhZ2Uua2V5KTsKQEAgLTE4
NTMsNyArMTg1Myw3IEBAIExpYldlYlJUQ05ldHdvcmsmIFdlYlByb2Nlc3M6OmxpYldlYlJUQ05l
dHdvcmsoKQogfQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotdm9pZCBXZWJQcm9jZXNz
Ojplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0
X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9y
ZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCit2b2lkIFdlYlByb2Nl
c3M6OmVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1aW50
NjRfdCBwYWdlR3JvdXBJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJl
bmNlc1N0b3JlJiBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Npb25JRCkKIHsKICAg
ICAvLyBXZSBhcmUgaW4gdGhlIFNlcnZpY2UgV29ya2VyIGNvbnRleHQgcHJvY2VzcyBhbmQgdGhl
IGNhbGwgYmVsb3cgZXN0YWJsaXNoZXMgb3VyIGNvbm5lY3Rpb24gdG8gdGhlIE5ldHdvcmsgUHJv
Y2VzcwogICAgIC8vIGJ5IGNhbGxpbmcgZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLiBT
V0NvbnRleHRNYW5hZ2VyIG5lZWRzIHRvIHVzZSB0aGUgc2FtZSB1bmRlcmx5aW5nIElQQzo6Q29u
bmVjdGlvbiBhcyB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCmluZGV4IDUy
NWRmMTgzZjIyNjE1ZTRkOGU4OTlmNGU4OWVmNDg1YTdiYTc4MWMuLjE4NTdjZWEwZWQ5ZDlmYThj
MjEwNjk2ZjA5ODc2NzhiYmE0MjlmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2lmIFBMQVRG
T1JNKE1BQykKICNpbmNsdWRlIDxXZWJDb3JlL1NjcmVlblByb3BlcnRpZXMuaD4KQEAgLTE0NSw5
ICsxNDYsOSBAQCBwdWJsaWM6CiAKICAgICBXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MqIHdlYkNv
bm5lY3Rpb25Ub1VJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViQ29ubmVjdGlvbi5nZXQo
KTsgfQogCi0gICAgV2ViUGFnZSogd2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OwotICAg
IHZvaWQgY3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMmJik7Ci0gICAgdm9pZCByZW1vdmVXZWJQYWdlKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBwYWdlSUQpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
IGNvbnN0OworICAgIHZvaWQgY3JlYXRlV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICB2b2lkIHJlbW92ZVdlYlBhZ2UoUEFM
OjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKICAgICBXZWJQYWdlKiBmb2N1
c2VkV2ViUGFnZSgpIGNvbnN0OwogCiAgICAgSW5qZWN0ZWRCdW5kbGUqIGluamVjdGVkQnVuZGxl
KCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZEJ1bmRsZS5nZXQoKTsgfQpAQCAtMTk5LDggKzIw
MCw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZW5zdXJlTGVnYWN5UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbkluTmV0d29ya1Byb2Nlc3MoKTsKIAotICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KHVp
bnQ2NF90IHBhZ2VJRCk7Ci0gICAgdm9pZCBwYWdlV2lsbExlYXZlV2luZG93KHVpbnQ2NF90IHBh
Z2VJRCk7CisgICAgdm9pZCBwYWdlRGlkRW50ZXJXaW5kb3coV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOworICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyhXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cik7CiAKICAgICB2b2lkIG5vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyRmlyZWQoKTsKIApA
QCAtMjE5LDcgKzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXBkYXRlQWN0aXZlUGFnZXMo
KTsKICAgICB2b2lkIGdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7Ci0gICAgdm9pZCBwYWdlQWN0aXZpdHlT
dGF0ZURpZENoYW5nZSh1aW50NjRfdCBwYWdlSUQsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0
eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKTsKKyAgICB2b2lkIHBhZ2VBY3Rpdml0eVN0YXRlRGlkQ2hh
bmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZpdHlT
dGF0ZTo6RmxhZz4gY2hhbmdlZCk7CiAKICAgICB2b2lkIHNldEhpZGRlblBhZ2VET01UaW1lclRo
cm90dGxpbmdJbmNyZWFzZUxpbWl0KGludCBtaWxsaXNlY29uZHMpOwogCkBAIC0zNTksNyArMzYw
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVp
bnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmLCBQQUw6OlNlc3Npb25JRCk7CisgICAgdm9pZCBlc3RhYmxpc2hXb3JrZXJDb250ZXh0
Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiwgUEFMOjpTZXNzaW9u
SUQpOwogICAgIHZvaWQgcmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpOwogI2VuZGlmCiAK
QEAgLTQ2MCw3ICs0NjEsNyBAQCBwcml2YXRlOgogCiAgICAgUmVmUHRyPFdlYkNvbm5lY3Rpb25U
b1VJUHJvY2Vzcz4gbV93ZWJDb25uZWN0aW9uOwogCi0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVm
UHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciwgUmVmUHRyPFdlYlBhZ2U+PiBtX3BhZ2VNYXA7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
UmVmUHRyPFdlYlBhZ2VHcm91cFByb3h5Pj4gbV9wYWdlR3JvdXBNYXA7CiAgICAgUmVmUHRyPElu
amVjdGVkQnVuZGxlPiBtX2luamVjdGVkQnVuZGxlOwogCkBAIC01MTQsNyArNTE1LDcgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgbV9wcm9jZXNzSXNTdXNwZW5kZWQgeyBmYWxzZSB9OwogCi0gICAg
SGFzaFNldDx1aW50NjRfdD4gbV9wYWdlc0luV2luZG93czsKKyAgICBIYXNoU2V0PFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiBtX3BhZ2VzSW5XaW5kb3dzOwogICAgIFdlYkNvcmU6OlRpbWVyIG1f
bm9uVmlzaWJsZVByb2Nlc3NDbGVhbnVwVGltZXI7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U+IG1fYXBwbGljYXRpb25DYWNoZVN0b3JhZ2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGIzOWIz
OGMxODNjNjYzMjdkNDJlNmVkZmYxNzZiYmExYzljYWJiMTIuLjU3YTI2NTYzNDVmYmU5ZDMzMGRm
NjU1ZTM1MmMzOWJlYTUyYjQ1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0yNSw3ICsyNSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
KHN0cnVjdCBXZWJLaXQ6OldlYlByb2Nlc3NEYXRhU3RvcmVQYXJhbWV0ZXJzIHBhcmFtZXRlcnMp
CiAKICAgICAjIENyZWF0ZSBhIG5ldyBwYWdlLgotICAgIENyZWF0ZVdlYlBhZ2UodWludDY0X3Qg
bmV3UGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIHBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMpCisgICAgQ3JlYXRlV2ViUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRp
ZmllciBuZXdQYWdlSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMg
cGFnZUNyZWF0aW9uUGFyYW1ldGVycykKIAogICAgIFByZXdhcm1HbG9iYWxseSgpOwogICAgIFBy
ZXdhcm1XaXRoRG9tYWluSW5mb3JtYXRpb24oc3RydWN0IFdlYkNvcmU6OlByZXdhcm1JbmZvcm1h
dGlvbiBwcmV3YXJtSW5mb3JtYXRpb24pCkBAIC0xMTEsNyArMTExLDcgQEAgbWVzc2FnZXMgLT4g
V2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNF
X1dPUktFUikKLSAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3ModWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgc3RydWN0IFdlYktp
dDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQgaW5pdGlhbFNlc3Np
b25JRCkKKyAgICBFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3ModWludDY0X3QgcGFnZUdyb3VwSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
c3RydWN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXNTdG9yZSBzdG9yZSwgUEFMOjpTZXNzaW9uSUQg
aW5pdGlhbFNlc3Npb25JRCkKICAgICBSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRzKCkKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9T
dG9yYWdlQXJlYU1hcC5jcHAKaW5kZXggMGJkOTBhZjkxODc4NjQ0MTA0NTNlYTFiYWYxZWNmNjAy
MzNjYjA5Ni4uMGU5NDI5NjA0OWU2YzA4N2FiNmU4ZjBjNWViZmU0YzFhMmUyYzA3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZUFyZWFNYXAu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVh
TWFwLmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmRpc3BhdGNo
U2Vzc2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjCiAKICAg
ICAvLyBOYW1lc3BhY2UgSURzIGZvciBzZXNzaW9uIHN0b3JhZ2UgbmFtZXNwYWNlcyBhcmUgZXF1
aXZhbGVudCB0byB3ZWIgcGFnZSBJRHMKICAgICAvLyBzbyB3ZSBjYW4gZ2V0IHRoZSByaWdodCBw
YWdlIGhlcmUuCi0gICAgV2ViUGFnZSogd2ViUGFnZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UobV9zdG9yYWdlTmFtZXNwYWNlSUQpOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJ
ZGVudGlmaWVyVHlwZT4obV9zdG9yYWdlTmFtZXNwYWNlSUQpKTsKICAgICBpZiAoIXdlYlBhZ2Up
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCmluZGV4IGIzOTA4MWU2
ZTNjMWJiYWI5MmRhMjFmMmNhOWU4YTE5ZGI0ZmJmMTUuLjdlYTVlN2RkOTAyNDJlMzYwZWYyZjA5
OWJkZWVlNjc5YWNjYzVlNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKQEAgLTk2LDcgKzk2
LDcgQEAgUmVmPFN0b3JhZ2VOYW1lc3BhY2U+IFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjb3B5KFBh
Z2UqIG5ld1BhZ2UpCiAgICAgQVNTRVJUKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKIAogICAgIGlm
IChtX3N0b3JhZ2VUeXBlID09IFN0b3JhZ2VUeXBlOjpTZXNzaW9uKQotICAgICAgICByZXR1cm4g
Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1Bh
Z2UpLT5wYWdlSUQoKSwgbV9xdW90YUluQnl0ZXMpOworICAgICAgICByZXR1cm4gY3JlYXRlU2Vz
c2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKG5ld1BhZ2UpLT5wYWdl
SUQoKS50b1VJbnQ2NCgpLCBtX3F1b3RhSW5CeXRlcyk7CiAKICAgICBBU1NFUlQobV9zdG9yYWdl
VHlwZSA9PSBTdG9yYWdlVHlwZTo6RXBoZW1lcmFsTG9jYWwpOwogICAgIGF1dG8gbmV3TmFtZXNw
YWNlID0gYWRvcHRSZWYoKm5ldyBTdG9yYWdlTmFtZXNwYWNlSW1wbChtX3N0b3JhZ2VUeXBlLCBt
X3N0b3JhZ2VOYW1lc3BhY2VJRCwgbV90b3BMZXZlbE9yaWdpbi5nZXQoKSwgbV9xdW90YUluQnl0
ZXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dl
YlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCmluZGV4IDgyNTU3Yjcy
NzE0YWQ4NzI2NTdlYWY4NDk2ODUyMWE3MTM2MDM5ZTYuLjlhNmI2ZjM3MDBhMGI5NTg1MWRlYTgx
MDZmY2JiMzJhNGIzMDczZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNw
cApAQCAtNjcsMTIgKzY3LDEyIEBAIFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6fldlYlN0
b3JhZ2VOYW1lc3BhY2VQcm92aWRlcigpCiAKIFJlZjxXZWJDb3JlOjpTdG9yYWdlTmFtZXNwYWNl
PiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3RhKQogewotICAgIHJldHVybiBTdG9yYWdlTmFt
ZXNwYWNlSW1wbDo6Y3JlYXRlU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNv
cmVQYWdlKCZwYWdlKS0+cGFnZUlEKCksIHF1b3RhKTsKKyAgICByZXR1cm4gU3RvcmFnZU5hbWVz
cGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3Jl
UGFnZSgmcGFnZSktPnBhZ2VJRCgpLnRvVUludDY0KCksIHF1b3RhKTsKIH0KIAogUmVmPFdlYkNv
cmU6OlN0b3JhZ2VOYW1lc3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRl
RXBoZW1lcmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFBhZ2UmIHBhZ2UsIHVuc2lnbmVkIHF1b3Rh
KQogewotICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1lcmFsTG9j
YWxTdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgp
LCBxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1lc3BhY2VJbXBsOjpjcmVhdGVFcGhlbWVy
YWxMb2NhbFN0b3JhZ2VOYW1lc3BhY2UoV2ViUGFnZTo6ZnJvbUNvcmVQYWdlKCZwYWdlKS0+cGFn
ZUlEKCkudG9VSW50NjQoKSwgcXVvdGEpOwogfQogCiBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVz
cGFjZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVMb2NhbFN0b3JhZ2VOYW1l
c3BhY2UodW5zaWduZWQgcXVvdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCmluZGV4IGZjNjU5ODYzMjUyYmZl
NGZhOGMxZTEyOWI5YWU4ZTgzMGZhZjc4OGEuLjc2NWVmZjQwNGIwOWVkMDBjY2UxZGQ5ZWE3YjU2
MDU2MjljYjVkOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9Q
bGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpzZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKFdlYkNv
cmU6OkhUTUxNZWRpYUVsZW0KICAgICBhZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5h
Z2VyQ29udGV4dElkKTsKIAogICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFu
Z2UoKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6U2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRChtX2NvbnRyb2xzTWFuYWdl
ckNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyV2l0aElEKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6Y2xlYXJQbGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCkBAIC0yOTEs
NyArMjkxLDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyKCkKICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CiAKICAg
ICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tD
b250cm9sc01hbmFnZXIoKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNsZWFyUGxheWJhY2tDb250cm9s
c01hbmFnZXIoKSk7CiB9CiAKIHVpbnQ2NF90IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNvbnRl
eHRJZEZvck1lZGlhRWxlbWVudChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1l
bnQpCkBAIC0zMTgsMjcgKzMxOCwyNyBAQCBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50UGxheWJhY2tDb250cm9sc0VsZW1lbgogCiB2b2lk
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmR1cmF0aW9uQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0
SWQsIGRvdWJsZSBkdXJhdGlvbikKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRp
b24pLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGNvbnRleHRJZCwgZHVyYXRp
b24pKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjdXJyZW50VGltZUNoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgY3VycmVudFRpbWUsIGRvdWJsZSBhbmNob3JU
aW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBjdXJyZW50VGltZSwgYW5jaG9y
VGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDdXJyZW50VGltZUNoYW5nZWQoY29udGV4dElkLCBj
dXJyZW50VGltZSwgYW5jaG9yVGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OmJ1ZmZlcmVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgYnVmZmVy
ZWRUaW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpCdWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVyZWRUaW1lKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkJ1ZmZlcmVkVGltZUNoYW5nZWQoY29udGV4dElkLCBidWZmZXJl
ZFRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpwbGF5YmFja1N0YXJ0
ZWRUaW1lQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSBwbGF5YmFja1N0YXJ0ZWRU
aW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5OjpQbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIHBsYXliYWNrU3Rh
cnRlZFRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQo
Y29udGV4dElkLCBwbGF5YmFja1N0YXJ0ZWRUaW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6cmF0ZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGlzUGxheWlu
ZywgZmxvYXQgcGxheWJhY2tSYXRlKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0SWQsIGlzUGxheWlu
ZywgcGxheWJhY2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJhdGVDaGFuZ2VkKGNvbnRleHRJ
ZCwgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyOjpzZWVrYWJsZVJhbmdlc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBX
ZWJDb3JlOjpUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzLCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwg
ZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCkKQEAgLTM0OSwzNyArMzQ5LDM3IEBAIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgY29uc3QgV2ViCiAgICAgICAgIGRvdWJsZSBlbmQgPSB0aW1lUmFuZ2VzLnJhbmdlcygp
LmVuZChpKS50b0RvdWJsZSgpOwogICAgICAgICByYW5nZXNWZWN0b3IuYXBwZW5kKHsgc3RhcnQs
IGVuZCB9KTsKICAgICB9Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0SWQsIFdU
Rk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUludGVydmFs
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OlNlZWthYmxlUmFuZ2VzVmVjdG9yQ2hhbmdlZChjb250ZXh0
SWQsIFdURk1vdmUocmFuZ2VzVmVjdG9yKSwgbGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUlu
dGVydmFsKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2FuUGxheUZhc3RS
ZXZlcnNlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7Ci0gICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkNhblBsYXlG
YXN0UmV2ZXJzZUNoYW5nZWQoY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpD
YW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpKTsKIH0KIAogdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
dWludDY0X3QgY29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBv
cHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9w
dGlvbnMsIHNlbGVjdGVkSW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpsZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQs
IGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIG9wdGlvbnMsIHVpbnQ2NF90IHNl
bGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnRl
eHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVk
SW5kZXgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpleHRlcm5hbFBsYXli
YWNrQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgZW5hYmxlZCwgUGxheWJhY2tTZXNz
aW9uTW9kZWw6OkV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlIHRhcmdldFR5cGUsIFN0cmluZyBs
b2NhbGl6ZWREZXZpY2VOYW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpFeHRlcm5hbFBsYXliYWNrUHJvcGVydGllc0NoYW5nZWQo
Y29udGV4dElkLCBlbmFibGVkLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4odGFyZ2V0VHlwZSksIGxv
Y2FsaXplZERldmljZU5hbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1By
b3BlcnRpZXNDaGFuZ2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KHRhcmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBj
b250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkF1ZGlvTWVkaWFTZWxlY3Rpb25J
bmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7
CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OkF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0
aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0
ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENo
YW5nZWQoY29udGV4dElkLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCBkaXNhYmxlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KaW5kZXggNWQ2MTEwYjc5
MDlmMzRjY2UzZTc2MmJmZDM4ZDJiMmY3MjFkNTIxNi4uNzA2NjM5NzczNzliNWIxYmY1OTdjNWQ4
ZGViMmFkNDZjM2Y2YjVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2Nv
Y29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIubW0KQEAgLTI5MCw3ICsyOTAsNyBAQCB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmVudGVyVmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9F
bGVtZW50KEhUTUxWaWRlb0VsZW1lbgogICAgICAgICBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0Nv
bnRleHQoKS0+c2V0Um9vdExheWVyKHZpZGVvTGF5ZXIpOwogICAgIH0KIAotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXR1cEZ1bGxzY3Jl
ZW5XaXRoSUQoY29udGV4dElkLCBpbnRlcmZhY2UtPmxheWVySG9zdGluZ0NvbnRleHQoKS0+Y29u
dGV4dElEKCksIHZpZGVvUmVjdCwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpLCBpbnRlcmZh
Y2UtPmZ1bGxzY3JlZW5Nb2RlKCksIGFsbG93c1BpY3R1cmVJblBpY3R1cmUsIHN0YW5kYnkpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2NyZWVuV2l0aElEKGNvbnRleHRJZCwgaW50ZXJm
YWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNvbnRleHRJRCgpLCB2aWRlb1JlY3QsIG1fcGFn
ZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW50ZXJmYWNlLT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxv
d3NQaWN0dXJlSW5QaWN0dXJlLCBzdGFuZGJ5KSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVu
TWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQpCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuRm9yVmlkZW9FbGVtZW50KFdl
YkNvcmU6OkhUTUxWaWQKICAgICAgICAgcmV0dXJuOwogCiAgICAgaW50ZXJmYWNlLnNldElzQW5p
bWF0aW5nKHRydWUpOwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQsIGlubGluZVZpZGVvRnJhbWUo
dmlkZW9FbGVtZW50KSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbihjb250ZXh0
SWQsIGlubGluZVZpZGVvRnJhbWUodmlkZW9FbGVtZW50KSkpOwogfQogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9u
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQmIHZpZGVvRWxlbWVudCwgV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIHRhcmdldE1vZGUpCkBAIC0zMjQs
NyArMzI0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2Ny
ZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3JlOjoKIAogICAgIGludGVyZmFjZS5zZXRU
YXJnZXRJc0Z1bGxzY3JlZW4oZmFsc2UpOwogCi0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlv
blRvTW9kZShjb250ZXh0SWQsIHRhcmdldE1vZGUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1
bGxzY3JlZW5XaXRob3V0QW5pbWF0aW9uVG9Nb2RlKGNvbnRleHRJZCwgdGFyZ2V0TW9kZSkpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0odmlkZW9FbGVtZW50KTsKICAgICBVTlVTRURfUEFSQU0o
dGFyZ2V0TW9kZSk7CkBAIC0zMzYsMTMgKzMzNiwxMyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Ub01vZGVXaXRob3V0QW5pbWF0aW9uKFdlYkNvcmU6
Ogogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpoYXNWaWRlb0NoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBib29sIGhhc1ZpZGVvKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNW
aWRlbyhjb250ZXh0SWQsIGhhc1ZpZGVvKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRIYXNW
aWRlbyhjb250ZXh0SWQsIGhhc1ZpZGVvKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6dmlkZW9EaW1lbnNpb25zQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IEZs
b2F0U2l6ZSYgdmlkZW9EaW1lbnNpb25zKQogewogICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRWaWRl
b0RpbWVuc2lvbnMoY29udGV4dElkLCB2aWRlb0RpbWVuc2lvbnMpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OlNldFZpZGVvRGltZW5zaW9ucyhjb250ZXh0SWQsIHZpZGVvRGltZW5zaW9ucykpOwog
fQogCiAjcHJhZ21hIG1hcmsgTWVzc2FnZXMgZnJvbSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6CkBAIC0zNjQsNyArMzY0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1
ZXN0VXBkYXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiAKICAgICBhdXRvJiBtb2Rl
bCA9IGVuc3VyZU1vZGVsKGNvbnRleHRJZCk7CiAgICAgSW50UmVjdCBpbmxpbmVSZWN0ID0gaW5s
aW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9FbGVtZW50KCkpOwotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRJbmxpbmVSZWN0KGNvbnRl
eHRJZCwgaW5saW5lUmVjdCwgaW5saW5lUmVjdCAhPSBJbnRSZWN0KDAsIDAsIDAsIDApKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OlNldElubGluZVJlY3QoY29udGV4dElkLCBpbmxpbmVSZWN0LCBpbmxp
bmVSZWN0ICE9IEludFJlY3QoMCwgMCwgMCwgMCkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyOjpyZXF1ZXN0VmlkZW9Db250ZW50TGF5ZXIodWludDY0X3QgY29udGV4dElkKQpA
QCAtMzc4LDcgKzM3OCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFZp
ZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBtb2RlbC0+c2V0VmlkZW9G
dWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRo
aXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewogICAgICAgICBkaXNwYXRjaF9hc3lu
YyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJv
dGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAgICAgICAgICAgaWYgKHByb3RlY3Rl
ZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4
dElkLCB0cnVlKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAg
ICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6
OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgdHJ1ZSkpOwogICAgICAgICB9KTsK
ICAgICB9KTsKIH0KQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OnJldHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICAgICAg
ICAgIG1vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwsIFtwcm90ZWN0ZWRUaGlzID0g
V1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
cHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0g
ewogICAgICAgICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAg
ICAgICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRleHRJZCwgZmFsc2UpLCBw
cm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpTZXRI
YXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSk7CiAgICAgICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC00MTMsNyArNDEzLDcgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRTZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29u
dGV4dElkKQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMp
LCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkK
LSAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdl
LT5wYWdlSUQoKSk7CisgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0p
OwogI2Vsc2UKICAgICBDQUxheWVyKiB2aWRlb0xheWVyID0gaW50ZXJmYWNlLT5sYXllckhvc3Rp
bmdDb250ZXh0KCktPnJvb3RMYXllcigpOwpAQCAtNDIxLDcgKzQyMSw3IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
ICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIodmlkZW9MYXllciwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzLCBjb250ZXh0SWRdICgpIG11dGFibGUgewog
ICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVj
dGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gewogICAg
ICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RW50ZXJGdWxs
c2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAg
ICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgICAgIH0pOwogICAgIH0p
OwogI2VuZGlmCkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
Ojp3aWxsRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKSwgdmlkZW9FbGVtZW50ID0gV1RGTW92ZSh2aWRlb0VsZW1lbnQpLCBjb250ZXh0SWRd
IHsKICAgICAgICAgdmlkZW9FbGVtZW50LT53aWxsRXhpdEZ1bGxzY3JlZW4oKTsKICAgICAgICAg
aWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1f
cGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJl
ZFRvRXhpdEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdl
SUQoKSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKGNv
bnRleHRJZCkpOwogICAgIH0pOwogfQogCkBAIC00ODYsNyArNDg2LDcgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIGNvbnRleHRJ
ZCwgaW50ZXJmYWNlXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAg
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVk
VGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5tX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6Q2xlYW51cEZ1
bGxzY3JlZW4oY29udGV4dElkKSk7CiAgICAgfSk7CiAjZWxzZQogICAgIG1vZGVsLT53YWl0Rm9y
UHJlcGFyZWRGb3JJbmxpbmVUaGVuKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwg
Y29udGV4dElkLCBpbnRlcmZhY2UsIG1vZGVsXSAoKSBtdXRhYmxlIHsKQEAgLTQ5OCw3ICs0OTgs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS0+c2V0TGF5
ZXJIb3N0aW5nQ29udGV4dChudWxscHRyKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3Rl
ZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVj
dGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNTU1LDcgKzU1NSw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5lKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vCiAKICAgICBpZiAoIWlzUGFnZVZpc2libGUpCiAgICAgICAgIG1vZGVs
LnZpZGVvRWxlbWVudCgpLT5zY3JvbGxJbnRvVmlld0lmTm90VmlzaWJsZShmYWxzZSk7Ci0gICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBh
cmVkVG9SZXR1cm5Ub0lubGluZShjb250ZXh0SWQsIHRydWUsIGlubGluZVZpZGVvRnJhbWUoKm1v
ZGVsLnZpZGVvRWxlbWVudCgpKSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVwYXJlZFRvUmV0dXJu
VG9JbmxpbmUoY29udGV4dElkLCB0cnVlLCBpbmxpbmVWaWRlb0ZyYW1lKCptb2RlbC52aWRlb0Vs
ZW1lbnQoKSkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpyZXF1ZXN0Um91
dGVTaGFyaW5nUG9saWN5QW5kQ29udGV4dFVJRCh1aW50NjRfdCBjb250ZXh0SWQsIE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0Um91dGVTaGFyaW5nUG9saWN5QW5kQ29u
dGV4dFVJRDo6QXN5bmNSZXBseSYmIHJlcGx5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggMmUxOTBiMDM1ZjcyODBiMWZiZWRi
M2FmMDAxZTY5NThjNDIwMjExNi4uYjljZTc5ZDI3NGM0MTI3YmE3OGY1NGE1MmY2MzdlOTVlODUx
ZjZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCkBAIC01MzksNyArNTM5LDcgQEAgc3RhdGljIE5TVVJMICpvcmlnaW4oV2ViUGFn
ZSYgcGFnZSkKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RhdGljIFJldGFpblB0cjxO
U0FycmF5PE5TU3RyaW5nICo+PiBhY3RpdmVQYWdlc09yaWdpbnMoY29uc3QgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFdlYlBhZ2U+PiYgcGFnZU1hcCkKK3N0YXRpYyBSZXRhaW5QdHI8TlNBcnJh
eTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhhc2hNYXA8UGFnZUlkZW50
aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4mIHBhZ2VNYXApCiB7CiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PE5TU3RyaW5nICo+PiBhY3RpdmVPcmlnaW5zID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcAppbmRleCA2MWU2YTdlYzhk
ODBlNTE0MmI4YWQzZTY3NWM4MzZlMmNiMDU1Mzk5Li5iZjI1ZTEwNmQ3YzE3OWM3Y2I1MzVjMmMz
M2M4MmI3ODk2NDJiYTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvZ3Rr
L1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHZv
aWQgV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5OjpiaW5kU3VyZmFjZVRvUGFnZShzdHJ1Y3Qgd2xf
c3VyZmFjZSogc3VyZmFjZSwgV2ViCiAgICAgaWYgKCFtX3dlYmtpdGd0aykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgd2xfd2Via2l0Z3RrX2JpbmRfc3VyZmFjZV90b19wYWdlKHJlaW50ZXJwcmV0
X2Nhc3Q8c3RydWN0IHdsX3dlYmtpdGd0ayo+KG1fd2Via2l0Z3RrLmdldCgpKSwgc3VyZmFjZSwg
cGFnZS5wYWdlSUQoKSk7CisgICAgd2xfd2Via2l0Z3RrX2JpbmRfc3VyZmFjZV90b19wYWdlKHJl
aW50ZXJwcmV0X2Nhc3Q8c3RydWN0IHdsX3dlYmtpdGd0ayo+KG1fd2Via2l0Z3RrLmdldCgpKSwg
c3VyZmFjZSwgcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICB3bF9kaXNwbGF5X3JvdW5k
dHJpcChtX2Rpc3BsYXkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1dl
YkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXgg
OTg3MmMzMWJhNTg0ZDcxZGExNTkxMWI0NThmNTExMWQxYTc5MWMxZi4uNzk2MDI0YzhjZTQ5YTVh
Y2ZhOGIxZmI2NTg0ZmFiODMwNTk0Y2U0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNw
cApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpsb2Fk
UmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9hZGVyJiBmcmFtZUxvYWRlCiAgICAgUmVzb3Vy
Y2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoZnJhbWVMb2FkZXIubmV0d29ya2lu
Z0NvbnRleHQoKSwgcmVxdWVzdCwgb3B0aW9ucy5jcmVkZW50aWFscyA9PSBGZXRjaE9wdGlvbnM6
OkNyZWRlbnRpYWxzOjpPbWl0ID8gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OkRvTm90VXNlIDog
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsKIH0K
IAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VMb2FkQ29tcGxldGVkKHVpbnQ2
NF90IC8qd2ViUGFnZUlEKi8pCit2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxv
YWRDb21wbGV0ZWQoUGFnZUlkZW50aWZpZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmggYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxl
ci5oCmluZGV4IDU1YjM2OTc1MzA2NTgyMTRiYzk3OWE4NzkyYjY2MDcyNmQ4Mjk2ZGQuLjVmNjJm
Nzc3YWE3OWIwMDc1NTczZTVhZmNjYzU2ZDJlNjM1NTJlYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgKKysr
IGIvU291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hl
ZHVsZXIuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWRSZXNvdXJj
ZShXZWJDb3JlOjpGcmFtZSYsIFdlYkNvcmU6OkNhY2hlZFJlc291cmNlJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9ucyYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVmUHRyPFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyPiYm
KT4mJikgZmluYWw7CiAgICAgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdlYkNvcmU6
OkZyYW1lTG9hZGVyJiwgdW5zaWduZWQgbG9uZywgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0
Y2hPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JikgZmlu
YWw7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50NjRfdCB3ZWJQYWdlSUQpIGZpbmFs
OworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpIGZp
bmFsOwogCiAgICAgdm9pZCByZW1vdmUoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXIqKSBmaW5hbDsK
ICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmcoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImLCBib29s
KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDEzODU1ODNhZjI5ZDE3NDQx
M2Q1MDU3OTVhZmE5NWI1Yzg4OTY2YmIuLmIxNDAzZDA1NjM5M2IzOTdkMDE3ZDA5M2RlNWZlMDRj
ZGNjYThjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNjMsNyArNjMsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95ZWQoKSBmaW5hbDsKICAgICBib29s
IGhhc1dlYlZpZXcoKSBjb25zdCBmaW5hbDsgLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCiAKLSAg
ICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEKCkgY29uc3QgZmluYWw7CisgICAgT3B0aW9uYWw8
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOwogICAgIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29uc3QgZmluYWw7CiAgICAgUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklEKCkgY29uc3QgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5k
ZXggN2Y4NjlmMWRkY2I5YTE5MDgwYWFiMjAwNWY5YmY3MzJhZTg3ZGRkZi4uN2ViYTNhOThhYTNk
YTkwNjZkZmI3YzViOTIyZDEwOTEwYjE0MjEzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0KQEAgLTIwOSw3ICsyMDksNyBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6V2ViRnJhbWVMb2Fk
ZXJDbGllbnQoV2ViRnJhbWUgKndlYkZyYW1lKQogewogfQogCi1PcHRpb25hbDx1aW50NjRfdD4g
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CitPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1YzU4
MTNmOTFjMWVkMDg3YzdkODI0NjE0NGE2ZTViZWVkOTA0ODA3Li4yYmNmMjYyNjllMTA4NGM0ZDcy
Zjg0NGE3MzFlNTk1NmVlMmU3Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC0xMjIsNyArMTIyLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZnJhbWVMb2FkZXJE
ZXN0cm95ZWQoKQogewogfQogCi1PcHRpb25hbDx1aW50NjRfdD4gV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OnBhZ2VJRCgpIGNvbnN0CitPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OnBhZ2VJRCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDMyMmMwOTAwNWFhNWVlNTcz
YjRkNzAyZDZlMWRiMjUwNjA1ZDFiNWYuLjY5NzVmZDhhM2Y2YWE1ODc5NWU4NjY5ZjY4NjZjY2Zj
NTIxMGQ4NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNTEsNyArNTEsNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGRpc3BhdGNoRGlkRmFpbFRvU3RhcnRQbHVnaW4oY29uc3QgV2Vi
Q29yZTo6UGx1Z2luVmlldyYpIGNvbnN0OwogCi0gICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJ
RCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBw
YWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNv
bnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsOwog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370701</attachid>
            <date>2019-05-27 11:57:24 -0700</date>
            <delta_ts>2019-05-27 13:31:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-198206-20190527115720.patch</filename>
            <type>text/plain</type>
            <size>510608</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1Nzk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGMyNjVhYmRkMGVkYTI2ZTdmMWEyZDlk
NGZjNGVmMTJhYjVhM2M5OTguLmQwNGI5MzQwZmVhYWZiN2I5MTkyZDg2ODQ4NzYyNDM0OTgwOWVh
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMDUtMjQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgYSBzdHJvbmdseS10eXBlZCBpZGVudGlmaWVyIGZv
ciBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk4MjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKworICAgICAgICAq
IHd0Zi9PYmplY3RJZGVudGlmaWVyLmg6CisgICAgICAgIChXVEY6Om9wZXJhdG9yPDwpOgorCiAy
MDE5LTA1LTIzICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBVc2UgdGFyZ2V0IG9yaWVudGVkIGRlc2lnbiBmb3IgYm1hbGxvYwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDYyYTNlZWM4NGYxMmY5NjUyZjIzMDI5MjNiMTU0MzY2Mjg0M2Q2MjAuLmY5NWYxZjhl
M2NhZjg1NmMzMGZmMTcxMDYyMDM2MjJjNWFkYzhiMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MiBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAg
ICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlkZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogV2ViQ29yZS8qOgorCiAyMDE5
LTA1LTI2ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAg
IE1vdmUgR3JhcGhpY3NMYXllckNBOjphZGp1c3RUaWxlZExheWVyVmlzaWJsZVJlY3QoKSB0byBU
aWxlQ29udHJvbGxlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBmYzIyODAyMGI1MzU3N2IyY2U0ZTJjMjNmZGQyMTky
YmE5YjYwZjc2Li5hZTA4ZWYzY2ZlMWNlNDUyNmI4OWRjMzVhNWNlZjYxZmZjN2ExM2I2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgc3Ryb25nbHktdHlwZWQgaWRlbnRpZmllciBmb3Ig
cGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODIwNgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBX
ZWJLaXQvKjoKKwogMjAxOS0wNS0yNyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29t
PgogCiAgICAgICAgIFtQb2ludGVyIEV2ZW50c10gVGVzdCBhdCBwb2ludGVyZXZlbnRzL2lvcy90
b3VjaC1hY3Rpb24tbm9uZS1pbi1vdmVyZmxvdy1zY3JvbGxpbmctdG91Y2guaHRtbCB0aW1lcyBv
dXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggMWRkNTRlYWZhMzdmZDZiZDYxNzY3OTI4N2EzODVi
YmE0MDk0NjU4NS4uZTFkMzJmZTQ3ZWI3YjNjMTE3NTU4ZmZiYWE4NTYwZGExODVjZjk2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wNS0yNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhIHN0cm9uZ2x5LXR5cGVkIGlk
ZW50aWZpZXIgZm9yIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTgyMDYKKworICAgICAgICBSZXZpZXdlZCBieSBZb3Vlbm4gRmFibGV0Lgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoK
KyAgICAgICAgKFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6cGFnZUxvYWRDb21wbGV0ZWQpOgor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oOgorCiAy
MDE5LTA1LTE3ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAg
ICAgW0NNYWtlXSBVc2UgYnVpbHRpbiBGaW5kSUNVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cK
aW5kZXggZDYwZjM1OGVmMGY2MWJmYTBlMGNjN2QyMGEyMGFiZjRjODA0NWE1MS4uNmRhYzgwYzhl
ZGM0MTEwNzJiZGE0MGIxMGZkOGYxOGMyMWZhYTJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA1LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgVXNlIGEgc3Ryb25nbHktdHlwZWQgaWRlbnRpZmllciBmb3Ig
cGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
ODIwNgorCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OnBhZ2VJRCBjb25zdCk6CisKIDIwMTktMDUtMjYgIFdlbnNvbiBIc2llaCAgPHdlbnNv
bl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRHJvcHBlZCB0ZXh0LCBhdHRhY2ht
ZW50cywgYW5kIGltYWdlcyBzaG91bGQgYW5pbWF0ZSBpbnRvIHBsYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9PYmplY3RJZGVudGlmaWVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9PYmplY3RJ
ZGVudGlmaWVyLmgKaW5kZXggNDA4OTdiNTlkMDdhM2MwNTUwYWUyMzIzYzFjMTliYjI5NTMzOWZk
OC4uYjNiY2FkZDlkZDE5NWFiMzBiMThjZjFkYWQzMzUyMzExOTI1MjZmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvT2JqZWN0SWRlbnRpZmllci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL09i
amVjdElkZW50aWZpZXIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPG11dGV4PgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTEyMiw2ICsxMjMsMTMgQEAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRIYXNoPE9iamVjdElkZW50aWZpZXI8VD4+IHsK
ICAgICB0eXBlZGVmIE9iamVjdElkZW50aWZpZXJIYXNoPFQ+IEhhc2g7CiB9OwogCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPgorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgT2JqZWN0SWRlbnRpZmllcjxUPiYgaWRlbnRpZmllcikKK3sKKyAgICB0cyA8PCBpZGVudGlm
aWVyLnRvVUludDY0KCk7CisgICAgcmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXVEYK
IAogdXNpbmcgV1RGOjpPYmplY3RJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggMjNj
YzVmMTBmMzVkNzlhOTgxNDhmZWQ3Y2IxMjhjYzdlY2RkNzA4My4uZTIyNmQ4ZmMyOGU3MjA4OWU5
MTYyOGNkNjQ5MmI4M2MyYjA0MGRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVy
cy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC03NzcsNiArNzc3
LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBhZ2UvUGFn
ZUNvbmZpZ3VyYXRpb24uaAogICAgIHBhZ2UvUGFnZUNvbnNvbGVDbGllbnQuaAogICAgIHBhZ2Uv
UGFnZUdyb3VwLmgKKyAgICBwYWdlL1BhZ2VJZGVudGlmaWVyLmgKICAgICBwYWdlL1BhZ2VPdmVy
bGF5LmgKICAgICBwYWdlL1BhZ2VPdmVybGF5Q29udHJvbGxlci5oCiAgICAgcGFnZS9QZXJmb3Jt
YW5jZUxvZ2dpbmcuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGU5NWE4ZjkzMGU0YzM4MTU5YzEyYWQ2M2QzYWJmOWFhM2NmNzA0
YjQuLjZlMTJjOWUwMzc5ZWE0NzA2ZDQzYTBkMDBjNTQwZDJmNjg3OWU4OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEyMTgs
NiArMTIxOCw3IEBACiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50
aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0
RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9N
UmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NkI2M0Y2QzFDNkU4RDE5MDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1c3RvbS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCNjNGNkIxQzZF
OENERjAwMkU5MTRCIC8qIEpTRXZlbnRUYXJnZXRDdXN0b20uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0NkI2NTBERDIyOTYyNjI3MDBGRDhBQTQg
LyogUGFnZUlkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2QjY1MERCMjI5NjI2MjcwMEZEOEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2Qjk1MTk1
MjA3RDYzMzQwMEE3RDJERCAvKiBBYnN0cmFjdERPTVdpbmRvdy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZCOTUxOEEyMDdENjMyODAwQTdEMkREIC8q
IEFic3RyYWN0RE9NV2luZG93LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTYyMDdENjMzQTAwQTdEMkREIC8qIEFic3RyYWN0RnJhbWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MThG
MjA3RDYzMkIwMEE3RDJERCAvKiBBYnN0cmFjdEZyYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDZCOTUxOTcyMDdENjM0MDAwQTdEMkREIC8q
IEdsb2JhbFdpbmRvd0lkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2Qjk1MTkwMjA3RDYzMkMwMEE3RDJERCAvKiBHbG9iYWxXaW5kb3dJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTc2MDUsNiArNzYwNiw3IEBACiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBE
T01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERFMUVEREZBNUYwMEI3Nzk1QiAvKiBET01S
ZWN0TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01SZWN0TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkI2M0Y2QjFDNkU4Q0RGMDAyRTkxNEIgLyogSlNFdmVudFRhcmdldEN1
c3RvbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Q3Vz
dG9tLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2QjY1MERCMjI5NjI2MjcwMEZE
OEFBNCAvKiBQYWdlSWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBQYWdlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkI5NTE4
QTIwN0Q2MzI4MDBBN0QyREQgLyogQWJzdHJhY3RET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RET01XaW5kb3cuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDZCOTUxOEMyMDdENjMyOTAwQTdEMkREIC8qIFJlbW90ZUZyYW1lLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbW90ZUZyYW1lLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZCOTUxOEQyMDdENjMyQTAwQTdEMkREIC8qIFJl
bW90ZURPTVdpbmRvdy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW1vdGVET01XaW5kb3cuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjAyMDks
NiArMjAyMTEsNyBAQAogCQkJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAu
aCAqLywKIAkJCQk3QTY3NEJEOTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVy
cmVyLmNwcCAqLywKIAkJCQk3QTY3NEJEQTBGOUVCRjRFMDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9h
ZERlZmVycmVyLmggKi8sCisJCQkJNDZCNjUwREIyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVu
dGlmaWVyLmggKi8sCiAJCQkJMkQ1QzlDRkIxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VPdmVybGF5
LmNwcCAqLywKIAkJCQkyRDVDOUNGQzE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXkuaCAq
LywKIAkJCQkyRDVDOUNGRDE5QzdCNTJFMDBCM0M1QzEgLyogUGFnZU92ZXJsYXlDb250cm9sbGVy
LmNwcCAqLywKQEAgLTMwNzcyLDYgKzMwNzc1LDcgQEAKIAkJCQk5MzAyQjBCRjBENzlGODJDMDBD
N0VFODMgLyogUGFnZUdyb3VwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTY3NEJEQzBGOUVCRjRF
MDA2Q0YwOTkgLyogUGFnZUdyb3VwTG9hZERlZmVycmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NUI4MUNDNDFGQUE0NEJDMDAzN0QxRTYgLyogUGFnZUhlYXBBZ2VudC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNDZCNjUwREQyMjk2MjYyNzAwRkQ4QUE0IC8qIFBhZ2VJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUNCMDUyNDFGQjUxRjMzMDAwODlCOTcgLyogUGFnZU5ldHdvcmtBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ1QzlEMDAxOUM3QjUyRTAwQjNDNUMxIC8qIFBhZ2VP
dmVybGF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDVDOUQwMjE5QzdCNTJFMDBCM0M1QzEgLyog
UGFnZU92ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVl
LmNwcAppbmRleCA3NjkxMmNhZWI4YTY0MGVkMTMzYWM0YWFmNGZhN2Q1YzI4OTdhZmEyLi4wZTdk
NTQyMDVjODM1NjdhYTY1ZTM2MGQ0N2FjMDUzM2EzMTUwZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRy
ZWUuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OmNyZWF0ZSgpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQVhJc29sYXRlZFRyZWUoKSk7
CiB9CiAKLVJlZjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OmluaXRpYWxpemVQYWdl
VHJlZUZvcklEKHVpbnQ2NF90IHBhZ2VJRCwgQVhPYmplY3RDYWNoZSYgY2FjaGUpCitSZWY8QVhJ
c29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjppbml0aWFsaXplUGFnZVRyZWVGb3JJRChQYWdl
SWRlbnRpZmllciBwYWdlSUQsIEFYT2JqZWN0Q2FjaGUmIGNhY2hlKQogewogICAgIFJFTEVBU0Vf
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBhdXRvIHRyZWUgPSBjYWNoZS0+Z2VuZXJhdGVJ
c29sYXRlZEFjY2Vzc2liaWxpdHlUcmVlKCk7CkBAIC04Nyw3ICs4Nyw3IEBAIFJlZlB0cjxBWElz
b2xhdGVkVHJlZT4gQVhJc29sYXRlZFRyZWU6OnRyZWVGb3JJRChBWElzb2xhdGVkVHJlZUlEIHRy
ZWVJRCkKICAgICByZXR1cm4gdHJlZUlEQ2FjaGUoKS5nZXQodHJlZUlEKTsKIH0KIAotUmVmPEFY
SXNvbGF0ZWRUcmVlPiBBWElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRf
dCBwYWdlSUQpCitSZWY8QVhJc29sYXRlZFRyZWU+IEFYSXNvbGF0ZWRUcmVlOjpjcmVhdGVUcmVl
Rm9yUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBMb2NrSG9sZGVyIGxvY2tl
cihzX2NhY2hlTG9jayk7CiAKQEAgLTk3LDcgKzk3LDcgQEAgUmVmPEFYSXNvbGF0ZWRUcmVlPiBB
WElzb2xhdGVkVHJlZTo6Y3JlYXRlVHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpCiAgICAg
cmV0dXJuIG5ld1RyZWU7CiB9CiAKLVJlZlB0cjxBWElzb2xhdGVkVHJlZT4gQVhJc29sYXRlZFRy
ZWU6OnRyZWVGb3JQYWdlSUQodWludDY0X3QgcGFnZUlEKQorUmVmUHRyPEFYSXNvbGF0ZWRUcmVl
PiBBWElzb2xhdGVkVHJlZTo6dHJlZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgTG9ja0hvbGRlciBsb2NrZXIoc19jYWNoZUxvY2spOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZFRyZWUu
aAppbmRleCBjMDc1ZDViMDE2NzgxMjYwYzc2MDE5YjUwZTI2ZjYwNjAxOWRlMDNmLi42ZWVjMjY0
NTE5ODRmOGViYTg4ODRmNTljNTMzN2NlNTI2Y2Q5YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkVHJlZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRUcmVlLmgK
QEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFCTEUoQUNDRVNTSUJJTElUWV9JU09MQVRFRF9UUkVF
KQogCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWVOb2RlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50
aWZpZXIuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KQEAgLTQzLDkgKzQ0LDkg
QEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZSgpOwogICAg
IHZpcnR1YWwgfkFYSXNvbGF0ZWRUcmVlKCk7CiAKLSAgICBzdGF0aWMgUmVmPEFYSXNvbGF0ZWRU
cmVlPiBjcmVhdGVUcmVlRm9yUGFnZUlEKHVpbnQ2NF90IHBhZ2VJRCk7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIFJlZjxBWElzb2xhdGVkVHJlZT4gaW5pdGlhbGl6ZVBhZ2VUcmVlRm9ySUQo
dWludDY0X3QgcGFnZUlELCBBWE9iamVjdENhY2hlJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgc3Rh
dGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvclBhZ2VJRCh1aW50NjRfdCBwYWdlSUQp
OworICAgIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRyZWU+IGNyZWF0ZVRyZWVGb3JQYWdlSUQoUGFn
ZUlkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8QVhJc29sYXRlZFRy
ZWU+IGluaXRpYWxpemVQYWdlVHJlZUZvcklEKFBhZ2VJZGVudGlmaWVyLCBBWE9iamVjdENhY2hl
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJl
ZUZvclBhZ2VJRChQYWdlSWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJl
ZlB0cjxBWElzb2xhdGVkVHJlZT4gdHJlZUZvcklEKEFYSXNvbGF0ZWRUcmVlSUQpOwogCiAgICAg
V0VCQ09SRV9FWFBPUlQgUmVmUHRyPEFYSXNvbGF0ZWRUcmVlTm9kZT4gcm9vdE5vZGUoKTsKQEAg
LTcwLDcgKzcxLDcgQEAgcHJpdmF0ZToKICAgICBBWElzb2xhdGVkVHJlZSgpOwogCiAgICAgc3Rh
dGljIEhhc2hNYXA8QVhJc29sYXRlZFRyZWVJRCwgUmVmPEFYSXNvbGF0ZWRUcmVlPj4mIHRyZWVJ
RENhY2hlKCk7Ci0gICAgc3RhdGljIEhhc2hNYXA8dWludDY0X3QsIFJlZjxBWElzb2xhdGVkVHJl
ZT4+JiB0cmVlUGFnZUNhY2hlKCk7CisgICAgc3RhdGljIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIs
IFJlZjxBWElzb2xhdGVkVHJlZT4+JiB0cmVlUGFnZUNhY2hlKCk7CiAKICAgICAvLyBPbmx5IGFj
Y2VzcyBvbiBBWCB0aHJlYWQgcmVxdWVzdGluZyBkYXRhLgogICAgIEhhc2hNYXA8QVhJRCwgUmVm
PEFYSXNvbGF0ZWRUcmVlTm9kZT4+IG1fcmVhZGVyVGhyZWFkTm9kZU1hcDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDFkNDMxNjZlZWMzMTczYzE0ODFlNGVjOTRhMzY2N2MxY2E3NDBiNzku
LmE4YTg0MDAyY2FlY2I1MWEzODYzZGViNjlhMGQ2NDM1NGNjODZkMGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcApAQCAtNzc3MCw3ICs3NzcwLDcgQEAgTG9nZ2VyJiBEb2N1bWVudDo6bG9nZ2Vy
KCkKICAgICByZXR1cm4gKm1fbG9nZ2VyOwogfQogICAgIAotT3B0aW9uYWw8dWludDY0X3Q+IERv
Y3VtZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IERvY3VtZW50
OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQo
KS5wYWdlSUQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggM2ZjNWEzMmYzODFlNjdmZDIw
OGFmMzEyNjcxNGQ0MjJhMGIzZWZkZC4uMTZkMDQxMGJiNjdkNGQ5OWYwNDU2N2VmMDE2YjYyZWEx
NmViMTdjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRl
ICJNZWRpYVByb2R1Y2VyLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1
ZGUgIk9yaWVudGF0aW9uTm90aWZpZXIuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtRXZlbnQuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5oIgog
I2luY2x1ZGUgIlJlZ2lvbi5oIgpAQCAtNjM1LDcgKzYzNiw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCBBWE9iamVjdENhY2hlKiBheE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICAgdm9p
ZCBjbGVhckFYT2JqZWN0Q2FjaGUoKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQo
KSBjb25zdDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlEKCkgY29uc3Q7CiAg
ICAgLy8gdG8gZ2V0IHZpc3VhbGx5IG9yZGVyZWQgaGVicmV3IGFuZCBhcmFiaWMgcGFnZXMgcmln
aHQKICAgICB2b2lkIHNldFZpc3VhbGx5T3JkZXJlZCgpOwogICAgIGJvb2wgdmlzdWFsbHlPcmRl
cmVkKCkgY29uc3QgeyByZXR1cm4gbV92aXN1YWxseU9yZGVyZWQ7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0Nvb2tpZUphci5jcHAKaW5kZXggYjFiZWQ4ZjAzMmY5Y2QyNzgxOTNlZWRjZmZjN2NmMTUzMTg5
NmIyNi4uMzNlMjc4NjM4MzY1NjkwZDE2ZDcyYjNkN2I1YmUwYmUyMDg1YjZjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgU3RyaW5nIENvb2tpZUph
cjo6Y29va2llcyhEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAg
IGF1dG8gaW5jbHVkZVNlY3VyZUNvb2tpZXMgPSBzaG91bGRJbmNsdWRlU2VjdXJlQ29va2llcyhk
b2N1bWVudCwgdXJsKTsKIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAg
IGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBw
YWdlSUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xMTAsNyArMTEw
LDcgQEAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHkgQ29va2llSmFyOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRQcm94eShjb25zdCBEb2MKIHZvaWQgQ29va2llSmFyOjpzZXRDb29raWVz
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQogewogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsK
ICAgICBpZiAoYXV0byogZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1l
SUQgPSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQg
PSBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC0xMzEsNyArMTMxLDcgQEAg
Ym9vbCBDb29raWVKYXI6OmNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIFNlY3VyZUNvb2tpZXNBY2Nl
c3NlZD4gQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6
OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNz
ZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpT
ZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2Ft
ZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1
ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbV9zdG9y
YWdlU2Vzc2lvblByb3ZpZGVyLT5zdG9yYWdlU2Vzc2lvbigpKSB7CiAgICAgICAgIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IHJlc3VsdCA9IHNlc3Npb24tPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGlu
Y2x1ZGVTZWN1cmVDb29raWVzKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdGQ6OnBhaXI8U3RyaW5n
LCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdQogU3RyaW5nIENvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKICAgICBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlEOworICAg
IE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZyYW1lID0g
ZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRlcigpLmNs
aWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigpLmNsaWVu
dCgpLnBhZ2VJRCgpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIFN0cmluZyBDb29raWVKYXI6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVVJMJiB1
CiBib29sIENvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgY29va2llcykgY29uc3QKIHsKICAgICBP
cHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
OworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAgICAgaWYgKGF1dG8qIGZy
YW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlEID0gZnJhbWUtPmxvYWRl
cigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0gZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLnBhZ2VJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nv
b2tpZUphci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nvb2tpZUphci5oCmluZGV4IDBkYjA3
YzZkMTJlOGQ5YmRhZmMzYzBhYmE2ZWU3MWE4OWJjMTk5NDcuLjI4MWY4NGM0OTAwNTI2N2VhMDU0
ZDUxZDc2OGE5ZWI3MzJjYmMyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9D
b29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRDb29r
aWVzKERvY3VtZW50JiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwog
CiAgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7
Ci0gICAgdmlydHVhbCBzdGQ6OnBhaXI8U3RyaW5nLCBTZWN1cmVDb29raWVzQWNjZXNzZWQ+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiwgY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpwYWlyPFN0cmluZywgU2VjdXJl
Q29va2llc0FjY2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6
OlNlc3Npb25JRCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBn
ZXRSYXdDb29raWVzKGNvbnN0IERvY3VtZW50JiwgY29uc3QgVVJMJiwgVmVjdG9yPENvb2tpZT4m
KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IERvY3VtZW50Jiwg
Y29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9FbXB0eUZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNGYwYmI4NmRkZDUwOTll
MzExZDg5YTQ5YmUzYTNiZTQwNzdmNWU1Yi4uMWY3YTI5YzRiMzAxYTM2NTgyMmU0MjMzYjQxNWRk
MWMwMDE5MTMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5RnJhbWVM
b2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlGcmFtZUxvYWRl
ckNsaWVudC5oCkBAIC0zMyw3ICszMyw3IEBAIGNsYXNzIFdFQkNPUkVfRVhQT1JUIEVtcHR5RnJh
bWVMb2FkZXJDbGllbnQgOiBwdWJsaWMgRnJhbWVMb2FkZXJDbGllbnQgewogICAgIHZvaWQgZnJh
bWVMb2FkZXJEZXN0cm95ZWQoKSBvdmVycmlkZSB7IH0KIAogICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlEKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gV1RGOjpudWxsb3B0OyB9Ci0gICAg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFdURjo6
bnVsbG9wdDsgfQorICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBXVEY6Om51bGxvcHQ7IH0KICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCBvdmVycmlkZTsKIAogICAgIGJvb2wgaGFzV2ViVmlldygpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0gLy8gbWFpbmx5IGZvciBhc3NlcnRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGVjMzkxMjdhMWFkNmMyNWUwZDM0
NmJlN2E0NjhjYjZlYTk4ZjNmYzkuLjA3NDg3NjExOGRjNjkxYWE3YzhhZGE5N2I3OTcxMzczM2Ey
OGE2OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0z
Miw2ICszMiw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkxh
eW91dE1pbGVzdG9uZS5oIgogI2luY2x1ZGUgIkxpbmtJY29uLmgiCisjaW5jbHVkZSAiUGFnZUlk
ZW50aWZpZXIuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CkBAIC0xMjYsNyArMTI3LDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB2b2lkIG1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciop
ID0gMDsKIAotICAgIHZpcnR1YWwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0ID0gMDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0xvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaAppbmRleCA4YTgyMzgxZjAxODE2NWU2NTNl
M2M0YjI1NGU1Njk3YjYzYzA5ZjcwLi40NWZlYjYzNWY3MGMzNWM5OWM3MTZkMzkxNDEyYTVmZDJk
MWRlZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3ku
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjYsNiAr
MjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGZXRjaE9wdGlvbnMuaCIKKyNpbmNs
dWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3kuaCIKQEAgLTU3LDcgKzU4LDcgQEAgY2xhc3MgV0VCQ09SRV9FWFBPUlQg
TG9hZGVyU3RyYXRlZ3kgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBsb2FkUmVzb3VyY2Uo
RnJhbWUmLCBDYWNoZWRSZXNvdXJjZSYsIFJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBSZXNvdXJj
ZUxvYWRlck9wdGlvbnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxTdWJyZXNvdXJj
ZUxvYWRlcj4mJik+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZFJlc291cmNlU3luY2hy
b25vdXNseShGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSwgY29uc3QgRmV0Y2hPcHRpb25z
JiwgY29uc3QgSFRUUEhlYWRlck1hcCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNl
JiwgVmVjdG9yPGNoYXI+JiBkYXRhKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VMb2FkQ29t
cGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlTG9h
ZENvbXBsZXRlZChQYWdlSWRlbnRpZmllcikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92
ZShSZXNvdXJjZUxvYWRlciopID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RGVmZXJzTG9hZGlu
ZyhSZXNvdXJjZUxvYWRlciYsIGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uQWN0aW9uLmNwcAppbmRleCA3NzQ1MDAxZTc4YWM5N2JlMDI0YjIzZDQxMTBlYzRmZDI5
MGI3ZDNiLi5mMjZhOWFhZjJmZDc5NzRjZDNlNzFjODU5YWI0M2ZlZTIwZjgwM2ZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25BY3Rpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIE5hdmlnYXRpb25BY3Rpb246OlJlcXVlc3Rlcjo6UmVxdWVz
dGVyKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkKICAgICA6IG1fdXJsIHsgVVJMIHsgZG9jdW1l
bnQudXJsKCkgfSB9CiAgICAgLCBtX29yaWdpbiB7IG1ha2VSZWZQdHIoZG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSkgfQotICAgICwgbV9wYWdlSURBbmRGcmFtZUlEUGFpciB7IGRvY3VtZW50LmZy
YW1lKCkgPyBzdGQ6Om1ha2VfcGFpcihkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5wYWdlSUQoKS52YWx1ZU9yKDApLCBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQo
KS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjx1aW50NjRfdCwgdWludDY0
X3Q+KDAsIDApIH0KKyAgICAsIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIgeyBkb2N1bWVudC5mcmFt
ZSgpID8gc3RkOjptYWtlX3BhaXIoZG9jdW1lbnQuZnJhbWUoKS0+bG9hZGVyKCkuY2xpZW50KCku
cGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRpZmllciB7IH0pLCBkb2N1bWVudC5mcmFtZSgpLT5s
b2FkZXIoKS5jbGllbnQoKS5mcmFtZUlEKCkudmFsdWVPcigwKSkgOiBzdGQ6Om1ha2VfcGFpcjxQ
YWdlSWRlbnRpZmllciwgdWludDY0X3Q+KHsgfSwgMCkgfQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL05hdmlnYXRpb25BY3Rpb24uaAppbmRleCAxYTQ0ZjkxZDM2ODFiODE0MDBlNzExMjdl
YTUyNzJjNzViZTRiZTA3Li5lZDdkMDljZjI4OTJiYjg0ZGYyZjI0OWIwNTE0NzVkOGRjNzM2Nzkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvbkFjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uQWN0aW9uLmgKQEAgLTMyLDYgKzMy
LDcgQEAKICNpbmNsdWRlICJCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkxheW91dFBvaW50LmgiCisjaW5jbHVkZSAi
UGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlVzZXJHZXN0dXJlSW5kaWNhdG9yLmgiCkBA
IC02MywxNCArNjQsMTQgQEAgcHVibGljOgogICAgIE5hdmlnYXRpb25BY3Rpb24oTmF2aWdhdGlv
bkFjdGlvbiYmKTsKICAgICBOYXZpZ2F0aW9uQWN0aW9uJiBvcGVyYXRvcj0oTmF2aWdhdGlvbkFj
dGlvbiYmKTsKIAotICAgIHVzaW5nIFBhZ2VJREFuZEZyYW1lSURQYWlyID0gc3RkOjpwYWlyPHVp
bnQ2NF90IC8qIHBhZ2VJRCAqLywgdWludDY0X3QgLyogZnJhbWVJRCAqLz47CisgICAgdXNpbmcg
UGFnZUlEQW5kRnJhbWVJRFBhaXIgPSBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90
IC8qIGZyYW1lSUQgKi8+OwogICAgIGNsYXNzIFJlcXVlc3RlciB7CiAgICAgcHVibGljOgogICAg
ICAgICBSZXF1ZXN0ZXIoY29uc3QgRG9jdW1lbnQmKTsKIAogICAgICAgICBjb25zdCBVUkwmIHVy
bCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CiAgICAgICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
JiBzZWN1cml0eU9yaWdpbigpIGNvbnN0IHsgcmV0dXJuICptX29yaWdpbjsgfQotICAgICAgICB1
aW50NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJREFuZEZyYW1lSURQYWlyLmZp
cnN0OyB9CisgICAgICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFnZUlEQW5kRnJhbWVJRFBhaXIuZmlyc3Q7IH0KICAgICAgICAgdWludDY0X3QgZnJhbWVJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEQW5kRnJhbWVJRFBhaXIuc2Vjb25kOyB9CiAgICAgcHJp
dmF0ZToKICAgICAgICAgVVJMIG1fdXJsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRPYnNlcnZlci5jcHAKaW5kZXggMTRiYzJmM2JlZWZhMmE2MDMyYTI2YzdkNmFkMmZj
ZmQ4N2I3Y2IyYi4uZmZhZGExYzQ1YmU0NjZiN2ZhZGNmZDA2OTEwMTMyNWVjYTM5ZDU1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFN0YXRpc3RpY3NVcGRh
dGVkQ2FsbGJhY2soV1RGOjpGdW5jdGlvbjx2b2lkKFZlY3RvCiAgICAgbV9ub3RpZmljYXRpb25D
YWxsYmFjayA9IFdURk1vdmUobm90aWZpY2F0aW9uQ2FsbGJhY2spOwogfQogCi12b2lkIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzZXRSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJh
Y2soV1RGOjpGdW5jdGlvbjx2b2lkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3Bl
bmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKT4mJiBjYWxs
YmFjaykKK3ZvaWQgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNldFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXJDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQYWdlSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiBvcGVuZXJEb21haW4pPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVCghbV9yZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyQ2FsbGJhY2spOwogICAgIG1fcmVxdWVzdFN0b3JhZ2VBY2Nl
c3NVbmRlck9wZW5lckNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CkBAIC0yMzQsNyArMjM0
LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6bG9nVXNlckludGVyYWN0aW9uV2l0aFJl
ZHVjZWRUaW1lUmVzb2x1dGlvbihjb25zdCBEb2MKIH0KIAogI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi12b2lkIFJlc291cmNlTG9hZE9ic2VydmVyOjpyZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qgb3BlbmVy
UGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQpCit2b2lkIFJlc291cmNlTG9hZE9ic2Vy
dmVyOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBEb2N1bWVudCYgb3BlbmVyRG9jdW1lbnQp
CiB7CiAgICAgYXV0byBvcGVuZXJVcmwgPSBvcGVuZXJEb2N1bWVudC51cmwoKTsKICAgICBSZWdp
c3RyYWJsZURvbWFpbiBvcGVuZXJEb21haW4geyBvcGVuZXJVcmwgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRPYnNlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmgKaW5kZXggYzQ2NjFiMDQ3NjA3MzIwZmQ4
N2ZiYjNkYmJiODAzZTRkMTFkNGE0MS4uZGUxYzk0YTcyY2Q0NzFjY2Y3ZjgyYjVhMmNiYjkxNzdk
YjU2ODBiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9i
c2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVy
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ2FudmFzQWN0
aXZpdHlSZWNvcmQuaCIKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJl
c291cmNlTG9hZFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CkBAIC03Myw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBTdHJpbmcgc3RhdGlzdGljc0ZvclVSTChjb25zdCBVUkwmKTsKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0U3RhdGlzdGljc1VwZGF0ZWRDYWxsYmFjayhXVEY6OkZ1bmN0aW9uPHZvaWQo
VmVjdG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlv
bjx2b2lkKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIHVpbnQ2NF90
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXJDYWxsYmFjayhGdW5jdGlvbjx2b2lk
KFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFBhZ2VJZGVudGlmaWVy
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpPiYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHNldExvZ1VzZXJJbnRlcmFjdGlvbk5vdGlmaWNhdGlvbkNhbGxiYWNrKEZ1bmN0aW9uPHZvaWQo
UEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+JiYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgc2V0TG9nV2ViU29ja2V0TG9hZGluZ05vdGlmaWNhdGlvbkNhbGxiYWNr
KEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBXYWxsVGltZSk+JiYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TG9nU3VicmVzb3VyY2VMb2FkaW5nTm90aWZpY2F0aW9uQ2FsbGJhY2soRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4mJik7CkBAIC05NCwxMyArOTUsMTMgQEAg
cHJpdmF0ZToKICAgICBWZWN0b3I8UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4gdGFrZVN0YXRpc3Rp
Y3MoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVu
ZXJQYWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CisgICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIERvY3VtZW50JiBvcGVuZXJEb2N1bWVudCk7CiAjZW5kaWYKIAogICAgIEhhc2hNYXA8
UmVnaXN0cmFibGVEb21haW4sIFJlc291cmNlTG9hZFN0YXRpc3RpY3M+IG1fcmVzb3VyY2VTdGF0
aXN0aWNzTWFwOwogICAgIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4sIFdURjo6V2FsbFRpbWU+
IG1fbGFzdFJlcG9ydGVkVXNlckludGVyYWN0aW9uTWFwOwogICAgIEZ1bmN0aW9uPHZvaWQoVmVj
dG9yPFJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYpPiBtX25vdGlmaWNhdGlvbkNhbGxiYWNrOwot
ICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgdWludDY0X3QsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lckNhbGxiYWNrOworICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgUGFnZUlkZW50aWZpZXIsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJik+IG1fcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lckNhbGxiYWNr
OwogICAgIEZ1bmN0aW9uPHZvaWQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJik+IG1fbG9nVXNlckludGVyYWN0aW9uTm90aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVu
Y3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25z
dCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1lKT4gbV9sb2dXZWJTb2NrZXRMb2FkaW5nTm90
aWZpY2F0aW9uQ2FsbGJhY2s7CiAgICAgRnVuY3Rpb248dm9pZChQQUw6OlNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFdhbGxUaW1l
KT4gbV9sb2dTdWJyZXNvdXJjZUxvYWRpbmdOb3RpZmljYXRpb25DYWxsYmFjazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0Nocm9tZUNsaWVudC5oCmluZGV4IDE2ZDNmOWMxYWVkNWE3NWEwYTQ5Zjg0NWZlNDQxMDMw
MmRiNGUxN2YuLmFkNzA1ODgyYjEwMzNmMGMwMzJjZTcxMjFhNzdiNTE0MTIzM2JmMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaApAQCAtNDg5LDggKzQ4OSw4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIFJlZlB0cjxJY29uPiBjcmVhdGVJY29uRm9yRmlsZXMoY29uc3QgVmVjdG9yPFN0
cmluZz4mIC8qIGZpbGVuYW1lcyAqLykgPSAwOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKLSAgICB2aXJ0dWFsIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJs
ZURvbWFpbiYmIC8qc3ViRnJhbWVEb21haW4qLywgUmVnaXN0cmFibGVEb21haW4mJiAvKnRvcEZy
YW1lRG9tYWluKi8sIHVpbnQ2NF90IC8qZnJhbWVJRCovLCB1aW50NjRfdCAvKnBhZ2VJRCovLCBX
VEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgLypzdWJGcmFtZURvbWFpbiovLCBSZWdpc3Ry
YWJsZURvbWFpbiYmIC8qdG9wRnJhbWVEb21haW4qLywgdWludDY0X3QgLypmcmFtZUlEKi8sIHVp
bnQ2NF90IC8qcGFnZUlEKi8sIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZDo6Tm8s
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOyB9CisgICAgdmlydHVhbCB2b2lkIGhh
c1N0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZyYW1lRG9tYWluKi8sIFJl
Z2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50NjRfdCAvKmZyYW1lSUQq
LywgUGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiAvKnN1YkZy
YW1lRG9tYWluKi8sIFJlZ2lzdHJhYmxlRG9tYWluJiYgLyp0b3BGcmFtZURvbWFpbiovLCB1aW50
NjRfdCAvKmZyYW1lSUQqLywgUGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxlcihTdG9yYWdlQWNjZXNz
V2FzR3JhbnRlZDo6Tm8sIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjo6Tm8pOyB9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9HbG9iYWxGcmFtZUlkZW50aWZpZXIuaAppbmRleCAxNTZjOWNkMjA1ZDRjZjMyNGQ2ODFmOTc2
MTMyYzE2Y2UyZjE3NGQ0Li4wZDdiM2RiZjcyZjgxZTRmZDYyYTczZmVkMjU4MWNlYWVlMTY3YjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dsb2JhbEZyYW1lSWRlbnRpZmllci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2xvYmFsRnJhbWVJZGVudGlmaWVyLmgKQEAgLTI1
LDEzICsyNSwxNCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ly8gRnJhbWUgaWRlbnRpZmllciB0aGF0IGlzIHVuaXF1ZSBhY3Jvc3MgYWxsIFdlYkNvbnRlbnQg
cHJvY2Vzc2VzLgogc3RydWN0IEdsb2JhbEZyYW1lSWRlbnRpZmllciB7Ci0gICAgdWludDY0X3Qg
cGFnZUlEOworICAgIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICB1aW50NjRfdCBmcmFtZUlE
OwogCiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OwpAQCAtNDcsNyArNDgsNyBAQCB2b2lkIEdsb2JhbEZyYW1lSWRlbnRpZmllcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgogT3B0aW9u
YWw8R2xvYmFsRnJhbWVJZGVudGlmaWVyPiBHbG9iYWxGcmFtZUlkZW50aWZpZXI6OmRlY29kZShE
ZWNvZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7CisgICAg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBkZWNvZGVyID4+IHBhZ2VJRDsK
ICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGQ1ZjhkMjk3NTYzZWUwMjljNDEz
ZTljZGE3NDk0YzVmYTRkOGFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlSWRlbnRpZmllci5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPHd0Zi9PYmplY3RJZGVudGlmaWVyLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworZW51bSBQYWdlSWRlbnRpZmllclR5cGUgeyB9OwordXNpbmcgUGFnZUlkZW50
aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT47CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ29va2llUmVx
dWVzdEhlYWRlckZpZWxkUHJveHkuaAppbmRleCAxMTU5MDUwY2QzMmM5M2NkM2IxMWNmMTMyMjU2
OWQ2NDFlNTBkNjM2Li5hNmY4MzY2NGNiMDE5NzI0NWFlYjdiYzhmMDQwOWY0ZWJiZWIwZWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9D
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkNvb2tpZUphci5oIgorI2luY2x1ZGUgIlBhZ2VJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSAiU2FtZVNpdGVJbmZvLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5o
PgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KQEAgLTM4LDcgKzM5LDcgQEAgc3RydWN0IENvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFByb3h5IHsKICAgICBTYW1lU2l0ZUluZm8gc2FtZVNpdGVJbmZvOwog
ICAgIFVSTCB1cmw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQ7Ci0gICAgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
OwogICAgIEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzIHsgSW5jbHVk
ZVNlY3VyZUNvb2tpZXM6Ok5vIH07CiAKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC03MSw4ICs3MiwxMSBAQCBPcHRpb25hbDxDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4gQ29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk6
OmRlY29kZShEZQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmZyYW1lSUQpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnBhZ2VJRCkpCisgICAgT3B0aW9uYWw8T3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+PiBwYWdlSUQ7CisgICAgZGVjb2RlciA+PiBwYWdlSUQ7Cisg
ICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmVzdWx0
LnBhZ2VJRCA9ICpwYWdlSUQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHJldHVy
biByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5jcHAKaW5kZXggNDY1ZGE1N2JmMzg3Y2E1YmNmOWJiZWEy
NzJmMmMyNGZmMTI2NWRjYi4uN2EyN2ViNTM0MDZkNjE5MTliNTIwMTAwMzJiNTRhZGMxNTQ4MDg0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmNwcApAQCAtNjYsMTIgKzY2LDEyIEBAIGJvb2wgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja1RoaXJkUGFydHlDb29raWVzKGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluCiAgICAgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZv
ci5jb250YWlucyhyZWdpc3RyYWJsZURvbWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkg
Y29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gc2hv
dWxkQmxvY2tDb29raWVzKHJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgcmVxdWVzdC51
cmwoKSwgZnJhbWVJRCwgcGFnZUlEKTsKIH0KICAgICAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywg
Y29uc3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2hv
dWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IFVS
TCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRl
bnRpZmllcj4gcGFnZUlEKSBjb25zdAogewogICAgIFJlZ2lzdHJhYmxlRG9tYWluIGZpcnN0UGFy
dHlEb21haW4geyBmaXJzdFBhcnR5Rm9yQ29va2llcyB9OwogICAgIGlmIChmaXJzdFBhcnR5RG9t
YWluLmlzRW1wdHkoKSkKQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6cmVtb3ZlUHJldmFsZW50RG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21h
aQogICAgICAgICBtX3JlZ2lzdHJhYmxlRG9tYWluc1RvQmxvY2tDb29raWVGb3IucmVtb3ZlKGRv
bWFpbik7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1
aW50NjRfdCBwYWdlSUQpIGNvbnN0Citib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6aGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKSBjb25zdAogewogICAgIGlmIChmcmFtZUlE
KSB7CiAgICAgICAgIGF1dG8gZnJhbWVzR3JhbnRlZEl0ZXJhdG9yID0gbV9mcmFtZXNHcmFudGVk
U3RvcmFnZUFjY2Vzcy5maW5kKHBhZ2VJRCk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgVmVjdG9yPFN0
cmluZz4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcygp
IGNvbnN0CiAgICAgcmV0dXJuIGVudHJpZXM7CiB9CiAgICAgCi12b2lkIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNv
dXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21h
aW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7
CiAgICAgaWYgKCFmcmFtZUlEKSB7CiAgICAgICAgIGlmIChmaXJzdFBhcnR5RG9tYWluLmlzRW1w
dHkoKSkKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z3Jh
bnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZQogICAgIH0K
IH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBhdXRvIGl0ZXJhdGlvbiA9IG1fZnJhbWVz
R3JhbnRlZFN0b3JhZ2VBY2Nlc3MuZmluZChwYWdlSUQpOwogICAgIGlmIChpdGVyYXRpb24gPT0g
bV9mcmFtZXNHcmFudGVkU3RvcmFnZUFjY2Vzcy5lbmQoKSkKQEAgLTE5MSw3ICsxOTEsNyBAQCB2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6cmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NAogICAgIGl0ZXJhdGlvbi0+dmFsdWUucmVtb3ZlKGZyYW1l
SUQpOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNE
YXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyhQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgbV9wYWdlc0dyYW50ZWRTdG9y
YWdlQWNjZXNzLnJlbW92ZShwYWdlSUQpOwogICAgIG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nl
c3MucmVtb3ZlKHBhZ2VJRCk7CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoKQogICAg
IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgPSBXVEY6Om51bGxvcHQ7CiB9
CiAKLXZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0
aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCkKIHsKICAgICBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRS
ZXNvdXJjZS5hZGQocGFnZUlELCB0b0RvbWFpbik7CiB9CkBAIC0yMjYsNyArMjI2LDcgQEAgdm9p
ZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKCkKICAgICBtX25hdmlnYXRpb25XaXRoTGlua0RlY29yYXRpb25UZXN0
TW9kZSA9IHRydWU7CiB9CiAKLU9wdGlvbmFsPFNlY29uZHM+IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0
eSwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3QKK09wdGlvbmFsPFNlY29uZHM+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y2xpZW50U2lkZUNvb2tpZUNhcChjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkgY29u
c3QKIHsKICAgICBpZiAoIW1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgfHwgIXBhZ2VJRCB8
fCBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZS5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBtX2FnZUNhcEZvckNsaWVudFNpZGVDb29raWVzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmgKaW5kZXggODRkNGViNjZhNzQwNWU5YzY2Yzk0ZDY3YTgwOTE4YTA4ZDdkZGY3ZS4u
NThkYTg3ODkwN2ZmNzQwMjQ4YzNiMTU4NzRkOTEzMjk3OWE4ZDMzOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
CkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNyZWRlbnRpYWxT
dG9yYWdlLmgiCisjaW5jbHVkZSAiUGFnZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWdpc3Ry
YWJsZURvbWFpbi5oIgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KQEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBjb29raWVzRW5hYmxlZCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
c2V0Q29va2llKGNvbnN0IENvb2tpZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29v
a2llcyhjb25zdCBWZWN0b3I8Q29va2llPiYsIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRv
Y3VtZW50VVJMKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIGNvbnN0
IFN0cmluZyYpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwm
LCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBj
b25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBDb29raWUmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBVUkwmLCBjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoKTsKQEAgLTEzNCwzMCArMTM1LDMwIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGNvb2tpZUhvc3ROYW1lcywgSW5jbHVkZUh0dHBPbmx5Q29va2llcyk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgVmVjdG9yPENvb2tpZT4gZ2V0QWxsQ29va2llcygpOwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxDb29raWU+IGdldENvb2tpZXMoY29uc3QgVVJMJik7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQs
IE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JikgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgVmVjdG9yPENvb2tpZT4mKSBjb25zdDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZsdXNoQ29va2llU3RvcmUoKTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5h
bWVzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVz
Rm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3Qg
VVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2Vj
dXJlQ29va2llcykgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpwYWlyPFN0cmluZywg
Ym9vbD4gY29va2llc0ZvckRPTShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQ
YWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4s
IEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eSYpIGNvbnN0OwogCiAjaWYgRU5BQkxFKFJFU09VUkNF
X0xPQURfU1RBVElTVElDUykKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIHNob3VsZEJsb2NrQ29v
a2llcyhjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBzaG91bGRCbG9ja0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29u
c3QgVVJMJiByZXNvdXJjZSwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxkQmxv
Y2tDb29raWVzKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgc2hvdWxkQmxvY2tDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMs
IGNvbnN0IFVSTCYgcmVzb3VyY2UsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2hvdWxk
QmxvY2tUaGlyZFBhcnR5Q29va2llcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0Owog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVz
Rm9yKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mKTsKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldEFnZUNhcEZvckNsaWVudFNpZGVDb29raWVzKE9wdGlvbmFsPFNlY29uZHM+KTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZVByZXZhbGVudERvbWFpbnMoY29uc3QgVmVj
dG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3Vy
Y2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIpIGNvbnN0OwogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
Zmlyc3RQYXJ0eURvbWFpbiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBh
Z2VJRCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlEKTsKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3ModWlu
dDY0X3QgcGFnZUlEKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdyYW50U3RvcmFnZUFjY2Vz
cyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJh
YmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
UGFnZUlkZW50aWZpZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsZWFyUGFnZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRp
c3RpY3MoUGFnZUlkZW50aWZpZXIpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVtb3ZlQWxs
U3RvcmFnZUFjY2VzcygpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q2FjaGVNYXhBZ2VD
YXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoU2Vjb25kcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKCk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgT3B0aW9uYWw8U2Vjb25kcz4gbWF4QWdlQ2FjaGVDYXAoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9Eb21haW4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNv
dXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIFBhZ2VJZGVudGlmaWVyKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29y
YXRpb25Gb3JUZXN0aW5nKCk7CiAjZW5kaWYKIApAQCAtMTgyLDE0ICsxODMsMTQgQEAgcHJpdmF0
ZToKICAgICBDcmVkZW50aWFsU3RvcmFnZSBtX2NyZWRlbnRpYWxTdG9yYWdlOwogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGll
bnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlEKSBjb25zdDsKKyAgICBPcHRpb25hbDxTZWNvbmRzPiBjbGll
bnRTaWRlQ29va2llQ2FwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5LCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4pIGNvbnN0OwogICAgIEhhc2hTZXQ8UmVnaXN0cmFibGVEb21h
aW4+IG1fcmVnaXN0cmFibGVEb21haW5zVG9CbG9ja0Nvb2tpZUZvcjsKLSAgICBIYXNoTWFwPHVp
bnQ2NF90LCBIYXNoTWFwPHVpbnQ2NF90LCBSZWdpc3RyYWJsZURvbWFpbiwgRGVmYXVsdEhhc2g8
dWludDY0X3Q+OjpIYXNoLCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnQ2
NF90Pj4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJv
S2V5SGFzaFRyYWl0czx1aW50NjRfdD4+IG1fZnJhbWVzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7Ci0g
ICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgUmVnaXN0cmFi
bGVEb21haW4+LCBEZWZhdWx0SGFzaDx1aW50NjRfdD46Okhhc2gsIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8dWludDY0X3Q+PiBtX3BhZ2VzR3JhbnRlZFN0b3JhZ2VBY2Nlc3M7
CisgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgSGFzaE1hcDx1aW50NjRfdCwgUmVnaXN0cmFi
bGVEb21haW4sIERlZmF1bHRIYXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGha
ZXJvS2V5SGFzaFRyYWl0czx1aW50NjRfdD4+PiBtX2ZyYW1lc0dyYW50ZWRTdG9yYWdlQWNjZXNz
OworICAgIEhhc2hNYXA8UGFnZUlkZW50aWZpZXIsIEhhc2hNYXA8UmVnaXN0cmFibGVEb21haW4s
IFJlZ2lzdHJhYmxlRG9tYWluPj4gbV9wYWdlc0dyYW50ZWRTdG9yYWdlQWNjZXNzOwogICAgIE9w
dGlvbmFsPFNlY29uZHM+IG1fY2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMgeyB9
OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXMgeyB9
OwogICAgIE9wdGlvbmFsPFNlY29uZHM+IG1fYWdlQ2FwRm9yQ2xpZW50U2lkZUNvb2tpZXNTaG9y
dCB7IH07Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVnaXN0cmFibGVEb21haW4sIERlZmF1bHRI
YXNoPHVpbnQ2NF90Pjo6SGFzaCwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1
aW50NjRfdD4+IG1fbmF2aWdhdGVkVG9XaXRoTGlua0RlY29yYXRpb25CeVByZXZhbGVudFJlc291
cmNlOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFJlZ2lzdHJhYmxlRG9t
YWluPiBtX25hdmlnYXRlZFRvV2l0aExpbmtEZWNvcmF0aW9uQnlQcmV2YWxlbnRSZXNvdXJjZTsK
ICAgICBib29sIG1fbmF2aWdhdGlvbldpdGhMaW5rRGVjb3JhdGlvblRlc3RNb2RlID0gZmFsc2U7
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAppbmRleCA2
N2RmNzY0ZDJjNGFlNDVhOTY4NTk0NGFjNDIxNWNkNTUzYTJiMjUxLi4zMzBhYTYwODY2MTQwYjI0
ZDliNzA1MjM4M2E4MWNlY2Y5MGI5OWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0V2luLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNG
TmV0V2luLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBDRkFycmF5UmVmIGNyZWF0ZUNv
b2tpZXMoQ0ZEaWN0aW9uYXJ5UmVmIGhlYWRlckZpZWxkcywgQ0ZVUkxSZWYgdXJsKQogICAgIHJl
dHVybiBwYXJzZWRDb29raWVzOwogfQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8m
LCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVp
bnQ2NF90PiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGNvbnN0Cit2b2lkIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZy
YW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIGNvbnN0IFN0cmluZyYgdmFs
dWUpIGNvbnN0CiB7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwogICAgIFVOVVNFRF9QQVJB
TShwYWdlSUQpOwpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zU2VjdXJl
Q29va2llcyhDRkFycmF5UmVmIGNvb2tpZXMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00o
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQs
IEluY2x1ZGVTZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAorc3RkOjpw
YWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsK
ICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBA
IC0yNDAsNyArMjQwLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4geyBj
b29raWVTdHJpbmcsIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMgfTsKIH0KIAotc3RkOjpwYWlyPFN0
cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0
IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+
IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0
CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0yNjQsNyArMjY0LDcgQEAgYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNvb2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gcG9saWN5ID09
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUV4Y2x1c2l2ZWx5
RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeUFsd2F5czsKIH0KIAotYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldFJh
d0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25z
dCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90
PiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVTRURf
UEFSQU0ocGFnZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NvY29hL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNvY29hLm1tCmluZGV4
IDYzNzQwMzUyYzRhNjI3ZWQ2ZmVlZDY5ZmZlYjA5ZDE5N2E4ODc0YzcuLjU1N2U5NzdiNGQ3MmFj
ODE5N2U5OWUyOTZlNGMyMTAwNzY3M2NjNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY29jb2EvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ29jb2EubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9OZXR3b3JrU3RvcmFnZVNlc3Np
b25Db2NvYS5tbQpAQCAtMjk0LDcgKzI5NCw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4g
ZmlsdGVyQ29va2llcyhOU0FycmF5ICp1bmZpbHRlcmVkQ29va2llcywgT3B0aW9uYWw8U2VjCiAg
ICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotc3RhdGljIE5TQXJyYXkgKmNvb2tpZXNG
b3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVy
bCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQp
CitzdGF0aWMgTlNBcnJheSAqY29va2llc0ZvclVSTChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCkKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQogICAgIGlmIChzZXNzaW9uLnNob3VsZEJsb2NrQ29va2llcyhmaXJz
dFBhcnR5LCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCkpCkBAIC0zMDcsNyArMzA3LDcgQEAgc3RhdGlj
IE5TQXJyYXkgKmNvb2tpZXNGb3JVUkwoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBVUkwmIGYKIH0KIAogZW51bSBJbmNsdWRlSFRUUE9ubHlPck5vdCB7IERvTm90
SW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlSFRUUE9ubHkgfTsKLXN0YXRpYyBzdGQ6OnBhaXI8U3Ry
aW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5T3JOb3QgaW5jbHVkZUhUVFBP
bmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykKK3N0YXRpYyBz
dGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5
T3JOb3QgaW5jbHVkZUhUVFBPbmx5LCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykKIHsKICAgICBBU1NFUlQoaGFzUHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmls
ZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7CiAKQEAgLTM2MywxMiArMzYzLDEyIEBAIHN0YXRp
YyB2b2lkIGRlbGV0ZUFsbEhUVFBDb29raWVzKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2ll
U3RvcmFnZSkKICAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRlQWxsQ29va2llcyhjb29raWVT
dG9yYWdlKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICByZXR1cm4g
Y29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBm
cmFtZUlELCBwYWdlSUQsIERvTm90SW5jbHVkZUhUVFBPbmx5LCBpbmNsdWRlU2VjdXJlQ29va2ll
cyk7CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBJbmNsdWRlU2VjdXJl
Q29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKK3N0ZDo6cGFpcjxTdHJpbmcsIGJv
b2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywg
Y29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdl
SWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29v
a2llcykgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24oKnRoaXMsIGZpcnN0
UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIEluY2x1ZGVIVFRQT25s
eSwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpAQCAtMzc4LDcgKzM3OCw3IEBAIHN0ZDo6cGFp
cjxTdHJpbmcsIGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29uCiAgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKCp0aGlzLCBoZWFk
ZXJGaWVsZFByb3h5LmZpcnN0UGFydHksIGhlYWRlckZpZWxkUHJveHkuc2FtZVNpdGVJbmZvLCBo
ZWFkZXJGaWVsZFByb3h5LnVybCwgaGVhZGVyRmllbGRQcm94eS5mcmFtZUlELCBoZWFkZXJGaWVs
ZFByb3h5LnBhZ2VJRCwgSW5jbHVkZUhUVFBPbmx5LCBoZWFkZXJGaWVsZFByb3h5LmluY2x1ZGVT
ZWN1cmVDb29raWVzKTsKIH0KIAotdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpIGNvbnN0Cit2
b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikgY29uc3QKIHsKICAgICBBU1NFUlQoaGFz
UHJvY2Vzc1ByaXZpbGVnZShQcm9jZXNzUHJpdmlsZWdlOjpDYW5BY2Nlc3NSYXdDb29raWVzKSk7
CiAKQEAgLTQ0Myw3ICs0NDMsNyBAQCBib29sIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2ll
c0VuYWJsZWQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBT
YW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2
NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykgY29uc3QKK2Jvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29r
aWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0
CiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
b29raWVKYXJDdXJsLmNwcAppbmRleCAyYzExNTY4ZmNlNWIyODkxMjYwZGEzYmU5MWY4OTE3YzA4
NTEyN2E4Li4yOWI0MDA1MDI1MzMwMDc5YWY0NTcyYWI5ZGFjYTZjNWQ4M2ViMDI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuY3BwCkBAIC01OSwxMCArNTksOSBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9u
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJgogICAgIHJl
dHVybiBjb29raWVzLnRvU3RyaW5nKCk7CiB9CiAKLXZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29v
a2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgY29uc3QKK3ZvaWQgQ29va2llSmFyQ3VybDo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50
NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+LCBjb25zdCBTdHJpbmcmIHZh
bHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKLSAgICBVTlVTRURfUEFS
QU0ocGFnZUlEKTsKIAogICAgIENvb2tpZUphckRCJiBjb29raWVKYXJEQiA9IHNlc3Npb24uY29v
a2llRGF0YWJhc2UoKTsKICAgICBjb29raWVKYXJEQi5zZXRDb29raWUoZmlyc3RQYXJ0eSwgdXJs
LCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6U2NyaXB0KTsKQEAgLTc0LDcgKzczLDcgQEAg
dm9pZCBDb29raWVKYXJDdXJsOjpzZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3MKICAgICBjb29raWVKYXJEQi5zZXRDb29raWUoZmlyc3RQ
YXJ0eSwgdXJsLCB2YWx1ZSwgQ29va2llSmFyREI6OlNvdXJjZTo6TmV0d29yayk7CiB9CiAKLXN0
ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IENvb2tpZUphckN1cmw6OmNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNv
bnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVzRm9yRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICBVTlVT
RURfUEFSQU0ocGFnZUlEKTsKQEAgLTgzLDcgKzgyLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9v
bD4gQ29va2llSmFyQ3VybDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24KICAgICByZXR1cm4geyBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwsIGZhbHNlKSwgZmFsc2UgfTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gQ29va2ll
SmFyQ3VybDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBh
aXI8U3RyaW5nLCBib29sPiBDb29raWVKYXJDdXJsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFVSTCYgZmly
c3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRl
U2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VJRCk7CkBAIC0xMTMsNyArMTEyLDcgQEAgYm9vbCBDb29raWVKYXJD
dXJsOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24p
IGNvbnN0CiAgICAgcmV0dXJuIHNlc3Npb24uY29va2llRGF0YWJhc2UoKS5pc0VuYWJsZWQoKTsK
IH0KIAotYm9vbCBDb29raWVKYXJDdXJsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0
ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpIGNvbnN0Citib29s
IENvb2tpZUphckN1cmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBV
TlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgVU5VU0VEX1BBUkFNKHBhZ2VJRCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuaApp
bmRleCA4OTQxMDIzZjgwNjhlYTc0ODBiN2M1MGQ1Y2U2ZjhkZjU1Y2UyYjkzLi4yNGEwNWEyMjdh
ZTA2YWJhMTE0MzE1MmE4ZmFjODQ4MjllMDFmNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmgKQEAgLTI0LDYgKzI0LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQYWdlSWRlbnRpZmllci5oIgogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3
dGYvVVJMLmg+CkBAIC00MSwxNSArNDIsMTUgQEAgZW51bSBjbGFzcyBDb29raWVBY2NlcHRQb2xp
Y3k7CiAKIGNsYXNzIENvb2tpZUphckN1cmwgewogcHVibGljOgotICAgIHN0ZDo6cGFpcjxTdHJp
bmcsIGJvb2w+IGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVk
ZVNlY3VyZUNvb2tpZXMpIGNvbnN0OwotICAgIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1l
U2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9u
YWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgc3RkOjpwYWly
PFN0cmluZywgYm9vbD4gY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYs
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIElu
Y2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdDsKKyAgICB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPFBhZ2VJZGVudGlmaWVyPiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBz
ZXRDb29raWVzRnJvbUhUVFBSZXNwb25zZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYpIGNvbnN0Owog
ICAgIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIENvb2tpZUFjY2VwdFBvbGljeSkgY29uc3Q7CiAgICAgQ29va2llQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKSBjb25zdDsKICAg
ICBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpIGNvbnN0
OwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIGJvb2w+IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dDsKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIEluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25z
dDsKICAgICBzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eSYpIGNvbnN0OwotICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRl
SW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYpIGNvbnN0OworICAgIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4sIFZlY3RvcjxDb29raWU+JikgY29uc3Q7
CiAgICAgdm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgVVJMJiwgY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCBnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIGhv
c3RuYW1lcykgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBjb29raWVIb3N0
TmFtZXMpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCmluZGV4IDg5
NGM4NmFmZThmNzQwYWVkZDI4YWQ5NzI3Mjc1MWVlYmEzODQzMjMuLjY4NzJiMGFjOWIwMDE5ZGU1
ODNlYjI2OGM4Yzk0NTc5OWVmOTQzN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3Vy
bC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgQ29va2llSmFyREImIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6Y29va2llRGF0YWJhc2UoKSBjb25zdAogICAgIHJldHVybiBtX2Nvb2tpZURhdGFiYXNlOwog
fQogCi12b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3Qg
VVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkgY29uc3QKIHsKICAgICBjb29raWVTdG9yYWdlKCkuc2V0Q29va2llc0Zyb21ET00o
KnRoaXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHZh
bHVlKTsKIH0KQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZXNFbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNF
bmFibGVkKCp0aGlzKTsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjb29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2Ft
ZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRf
dD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tp
ZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJ
bmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBy
ZXR1cm4gY29va2llU3RvcmFnZSgpLmNvb2tpZXNGb3JET00oKnRoaXMsIGZpcnN0UGFydHksIHNh
bWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsK
IH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBWZWN0b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmdldENvb2tpZXMoY29uc3QgVVJMJikKICAgICByZXR1cm4geyB9OwogfQogCi1ib29sIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Z2V0UmF3Q29va2llcyhjb25zdCBVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKSBjb25zdAorYm9vbCBOZXR3b3JrU3RvcmFnZVNlc3Npb246Omdl
dFJhd0Nvb2tpZXMoY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBP
cHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykgY29uc3QKIHsKICAgICByZXR1cm4gY29va2llU3RvcmFnZSgpLmdldFJhd0Nvb2tpZXMoKnRo
aXMsIGZpcnN0UGFydHksIHNhbWVTaXRlSW5mbywgdXJsLCBmcmFtZUlELCBwYWdlSUQsIHJhd0Nv
b2tpZXMpOwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpmbHVzaENvb2tpZVN0b3JlKCkKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGZvciBXZWJLaXQg
dG8gdXNlLgogfQogCi1zdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNl
Y3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5n
LCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUlu
Zm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3Vy
ZUNvb2tpZXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2UoKS5jb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZSgqdGhpcywgZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmws
IGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVkZVNlY3VyZUNvb2tpZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lv
blNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtT
dG9yYWdlU2Vzc2lvblNvdXAuY3BwCmluZGV4IDFmNzU4NzdhODJiMzE4Mzk0NzYxMTIzYmU2ZjU4
NWE0NzYxY2Y4OTYuLmY2NjQxZWZlYjQ0YzczNDM0ZTRkMTVhNGE1YWJlZGQ4NTZmMjBlNmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25Tb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU291cC5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoY29uc3QgR1NMaXN0KiBjb29r
aWVzLCBjb25zdCBnY2hhciogbmFtZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmIHZhbHVl
KSBjb25zdAordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmws
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFn
ZUlELCBjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewogICAgIFVOVVNFRF9QQVJBTShmcmFt
ZUlEKTsKICAgICBVTlVTRURfUEFSQU0ocGFnZUlEKTsKQEAgLTQ0NCw3ICs0NDQsNyBAQCBWZWN0
b3I8Q29va2llPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmdldENvb2tpZXMoY29uc3QgVVJMJiB1
cmwpCiAgICAgcmV0dXJuIGNvb2tpZXM7CiB9CiAKLWJvb2wgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZv
JiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykgY29uc3QKK2Jvb2wg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpnZXRSYXdDb29raWVzKGNvbnN0IFVSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90
PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQYXJ0eSk7CiAg
ICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpAQCAtNTE0LDcgKzUxNCw3IEBAIHN0YXRpYyBzdGQ6
OnBhaXI8U3RyaW5nLCBib29sPiBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlCiAgICAgcmV0dXJuIHsgU3RyaW5nOjpmcm9tVVRGOChjb29raWVIZWFkZXIu
Z2V0KCkpLCBkaWRBY2Nlc3NTZWN1cmVDb29raWVzIH07CiB9CiAKLXN0ZDo6cGFpcjxTdHJpbmcs
IGJvb2w+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llc0ZvckRPTShjb25zdCBVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1
aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3Vy
ZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBi
b29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZXNGb3JET00oY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQsIEluY2x1ZGVT
ZWN1cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzKSBjb25zdAogewogICAgIFVOVVNFRF9Q
QVJBTShmaXJzdFBhcnR5KTsKICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CkBAIC01MjIsNyAr
NTIyLDcgQEAgc3RkOjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVzRm9yRE9NKGNvbnN0IFVSTCYgZmlyc3RQYXIKICAgICByZXR1cm4gY29va2llc0ZvclNl
c3Npb24oKnRoaXMsIHVybCwgZmFsc2UsIGluY2x1ZGVTZWN1cmVDb29raWVzKTsKIH0KIAotc3Rk
OjpwYWlyPFN0cmluZywgYm9vbD4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5m
byYsIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8
dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpIGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBib29sPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgU2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBJbmNsdWRlU2VjdXJlQ29va2ll
cyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAgICBVTlVTRURfUEFSQU0oZmlyc3RQ
YXJ0eSk7CiAgICAgVU5VU0VEX1BBUkFNKGZyYW1lSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDk2NjFi
YzQzN2U5ODU0MmI2YzVjMWQ2NjQ4OTZmNjAyODVhN2ZiM2QuLjU0MzkwMmZmNTM0ZWE1MGE0ZGVi
MDUxNjJjMmVlYjM1YmEyZDdkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNp
Zm5kZWYgUmVzb3VyY2VSZXF1ZXN0X2gKICNkZWZpbmUgUmVzb3VyY2VSZXF1ZXN0X2gKIAorI2lu
Y2x1ZGUgIlBhZ2VJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0QmFzZS5o
IgogI2luY2x1ZGUgIlVSTFNvdXAuaCIKIApAQCAtMzgsNyArMzksNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2UoVVJMKHsgfSwgdXJsKSwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAg
ICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxh
Z3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5p
dGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNDYsNyArNDYsNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICA6IFJlc291cmNlUmVxdWVzdEJhc2Uo
dXJsLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSkK
ICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAgLCBtX3Nv
dXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAgICAgICwg
bV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC01NCw3ICs1
Myw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1ZXN0
QmFzZSh1cmwsIHBvbGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQog
ICAgICAgICAgICAgLCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigw
KSkKLSAgICAgICAgICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTYzLDcgKzYx
LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgOiBSZXNvdXJjZVJlcXVlc3RC
YXNlKFVSTCgpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBv
bGljeSkKICAgICAgICAgICAgICwgbV9hY2NlcHRFbmNvZGluZyh0cnVlKQogICAgICAgICAgICAg
LCBtX3NvdXBGbGFncyhzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZUZsYWdzPigwKSkKLSAgICAgICAg
ICAgICwgbV9pbml0aWF0aW5nUGFnZUlEKDApCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03
MSw3ICs2OCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VS
ZXF1ZXN0QmFzZShVUkwoKSwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29s
Q2FjaGVQb2xpY3kpCiAgICAgICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAg
ICAgICAgICwgbV9zb3VwRmxhZ3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0g
ICAgICAgICAgICAsIG1faW5pdGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAg
ICB1cGRhdGVGcm9tU291cE1lc3NhZ2Uoc291cE1lc3NhZ2UpOwogICAgICAgICB9CkBAIC04MCw3
ICs3Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIDogUmVzb3VyY2VSZXF1
ZXN0QmFzZShzb3VwVVJJVG9VUkwoc291cF9yZXF1ZXN0X2dldF91cmkoc291cFJlcXVlc3QpKSwg
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kpCiAgICAg
ICAgICAgICAsIG1fYWNjZXB0RW5jb2RpbmcodHJ1ZSkKICAgICAgICAgICAgICwgbV9zb3VwRmxh
Z3Moc3RhdGljX2Nhc3Q8U291cE1lc3NhZ2VGbGFncz4oMCkpCi0gICAgICAgICAgICAsIG1faW5p
dGlhdGluZ1BhZ2VJRCgwKQogICAgICAgICB7CiAgICAgICAgICAgICB1cGRhdGVGcm9tU291cFJl
cXVlc3Qoc291cFJlcXVlc3QpOwogICAgICAgICB9CkBAIC0xMDAsOCArOTUsOCBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3Mgc291cE1lc3NhZ2VGbGFncygp
IGNvbnN0IHsgcmV0dXJuIG1fc291cEZsYWdzOyB9CiAgICAgICAgIHZvaWQgc2V0U291cE1lc3Nh
Z2VGbGFncyhTb3VwTWVzc2FnZUZsYWdzIHNvdXBGbGFncykgeyBtX3NvdXBGbGFncyA9IHNvdXBG
bGFnczsgfQogCi0gICAgICAgIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCB7IHJl
dHVybiBtX2luaXRpYXRpbmdQYWdlSUQ7IH0KLSAgICAgICAgdm9pZCBzZXRJbml0aWF0aW5nUGFn
ZUlEKHVpbnQ2NF90IHBhZ2VJRCkgeyBtX2luaXRpYXRpbmdQYWdlSUQgPSBwYWdlSUQ7IH0KKyAg
ICAgICAgUGFnZUlkZW50aWZpZXIgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1f
aW5pdGlhdGluZ1BhZ2VJRDsgfQorICAgICAgICB2b2lkIHNldEluaXRpYXRpbmdQYWdlSUQoUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKSB7IG1faW5pdGlhdGluZ1BhZ2VJRCA9IHBhZ2VJRDsgfQogCiAg
ICAgICAgIEdVbmlxdWVQdHI8U291cFVSST4gY3JlYXRlU291cFVSSSgpIGNvbnN0OwogCkBAIC0x
MTMsNyArMTA4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9hY2Nl
cHRFbmNvZGluZyA6IDE7CiAgICAgICAgIFNvdXBNZXNzYWdlRmxhZ3MgbV9zb3VwRmxhZ3M7Ci0g
ICAgICAgIHVpbnQ2NF90IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgUGFnZUlkZW50aWZp
ZXIgbV9pbml0aWF0aW5nUGFnZUlEOwogCiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3NhZ2VN
ZW1iZXJzKFNvdXBNZXNzYWdlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgdXBkYXRlU291cE1lc3Nh
Z2VCb2R5KFNvdXBNZXNzYWdlKikgY29uc3Q7CkBAIC0xNjIsMTAgKzE1NywxMSBAQCBib29sIFJl
c291cmNlUmVxdWVzdDo6ZGVjb2RlV2l0aFBsYXRmb3JtRGF0YShEZWNvZGVyJiBkZWNvZGVyKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgbV9zb3VwRmxhZ3MgPSBzdGF0aWNfY2FzdDxTb3Vw
TWVzc2FnZUZsYWdzPihzb3VwTWVzc2FnZUZsYWdzKTsKIAotICAgIHVpbnQ2NF90IGluaXRpYXRp
bmdQYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShpbml0aWF0aW5nUGFnZUlEKSkKKyAg
ICBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gaW5pdGlhdGluZ1BhZ2VJRDsKKyAgICBkZWNvZGVy
ID4+IGluaXRpYXRpbmdQYWdlSUQ7CisgICAgaWYgKCFpbml0aWF0aW5nUGFnZUlEKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgbV9pbml0aWF0aW5nUGFnZUlEID0gaW5pdGlhdGluZ1BhZ2VJ
RDsKKyAgICBtX2luaXRpYXRpbmdQYWdlSUQgPSAqaW5pdGlhdGluZ1BhZ2VJRDsKIAogICAgIHJl
dHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdFNvdXAuY3BwCmluZGV4IDBmNmVhMTk3ODdhNDZj
NzQ3NGI0MTY0OGYyNDU4NDk1N2IwMGQyYTUuLjBlZDI1YjM3ZDVmODA4NzY4MTI1Mzg3NzA4OTBh
ZjliODhlOTM2NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHAKQEAgLTE4Myw3ICsxODMsNyBA
QCB2b2lkIFJlc291cmNlUmVxdWVzdDo6dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNv
dXBSZXF1ZXN0KSBjb25zdAogewogICAgIGlmIChtX2luaXRpYXRpbmdQYWdlSUQpIHsKICAgICAg
ICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2FzdDx1aW50NjRfdCo+
KGZhc3RNYWxsb2Moc2l6ZW9mKHVpbnQ2NF90KSkpOwotICAgICAgICAqaW5pdGlhdGluZ1BhZ2VJ
RFB0ciA9IG1faW5pdGlhdGluZ1BhZ2VJRDsKKyAgICAgICAgKmluaXRpYXRpbmdQYWdlSURQdHIg
PSBtX2luaXRpYXRpbmdQYWdlSUQudG9VSW50NjQoKTsKICAgICAgICAgZ19vYmplY3Rfc2V0X2Rh
dGFfZnVsbChHX09CSkVDVChzb3VwUmVxdWVzdCksIGdfaW50ZXJuX3N0YXRpY19zdHJpbmcoZ1Nv
dXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSksIGluaXRpYXRpbmdQYWdlSURQdHIsIGZhc3RG
cmVlKTsKICAgICB9CiAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFJlc291cmNlUmVxdWVzdDo6
dXBkYXRlU291cFJlcXVlc3QoU291cFJlcXVlc3QqIHNvdXBSZXF1ZXN0KSBjb25zdAogdm9pZCBS
ZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZUZyb21Tb3VwUmVxdWVzdChTb3VwUmVxdWVzdCogc291cFJl
cXVlc3QpCiB7CiAgICAgdWludDY0X3QqIGluaXRpYXRpbmdQYWdlSURQdHIgPSBzdGF0aWNfY2Fz
dDx1aW50NjRfdCo+KGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKHNvdXBSZXF1ZXN0KSwgZ1Nv
dXBSZXF1ZXN0SW5pdGlhdGluZ1BhZ2VJREtleSkpOwotICAgIG1faW5pdGlhdGluZ1BhZ2VJRCA9
IGluaXRpYXRpbmdQYWdlSURQdHIgPyAqaW5pdGlhdGluZ1BhZ2VJRFB0ciA6IDA7CisgICAgbV9p
bml0aWF0aW5nUGFnZUlEID0gbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBl
Pihpbml0aWF0aW5nUGFnZUlEUHRyID8gKmluaXRpYXRpbmdQYWdlSURQdHIgOiAwKTsKIH0KIAog
dW5zaWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50UGVySG9zdCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAppbmRleCA4NzljMGIxOWU5NjZmMjk2OWJhMGFmNDc4YjZlODNlNjMwNWI5NDBiLi5iNjg5YzNl
MjVhZDgyM2VjZjZkMzA0ZWU3ODljYTlmMzQ1ZGEyZDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmll
ci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTcxNiw3ICs3MTYs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpzeW5jU3RvcmFn
ZUltbWVkaWF0ZWx5KCkKICAgICBtX2RhdGFiYXNlLnJ1blZhY3V1bUNvbW1hbmQoKTsKIH0KIAot
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6aGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlEIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQsIFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtNzQzLDcg
Kzc0Myw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mCiAgICAgfSk7CiB9CiAKLXZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlEIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIEZyYW1lSUQgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC03OTUsNyArNzk1LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJgogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vzcywg
T3BlbmVyUGFnZUlEIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYgb3BlbmVyRG9tYWluKQor
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwgT3BlbmVyRG9t
YWluJiYgb3BlbmVyRG9tYWluKQogewogICAgIEFTU0VSVChkb21haW5Jbk5lZWRPZlN0b3JhZ2VB
Y2Nlc3MgIT0gb3BlbmVyRG9tYWluKTsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
QEAgLTgxNCw3ICs4MTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbgogICAgIGdyYW50U3Rv
cmFnZUFjY2Vzc0ludGVybmFsKFdURk1vdmUoZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzKSwg
V1RGTW92ZShvcGVuZXJEb21haW4pLCBXVEY6Om51bGxvcHQsIG9wZW5lclBhZ2VJRCwgU3RvcmFn
ZUFjY2Vzc1Byb21wdFdhc1Nob3duOjpObywgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsg
fSk7CiB9CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdyYW50
U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURv
bWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3MoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0
b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC04MjgsNyArODI4LDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdlQWNj
ZXNzKFN1YkZyYW1lRG9tYWluJiYgc3UKICAgICBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChX
VEZNb3ZlKHN1YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQs
IHBhZ2VJRCwgcHJvbXB0V2FzU2hvd24sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzSW50ZXJuYWwoU3ViRnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlE
IHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duTm93T3JF
YXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJh
bWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1l
SUQ+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duIHByb21wdFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAppbmRleCBiYWIyYjdhZWFiNzYwZDJhM2UxZWNi
ZGU4Yjc1ODUzNzU1ZTNhZTkwLi5iZmMyMzM5Njg1MzMyMDAyNjI2Nzg5NDMxYWUwNzNiMmQzOTc1
ZjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuaApAQCAtNjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzeW5jU3RvcmFnZUlm
TmVlZGVkKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWlu
SW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIE9wZW5lclBhZ2VJRCwgT3BlbmVyRG9tYWluJiYpIG92
ZXJyaWRlOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQs
IE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZ3JhbmRmYXRoZXJEYXRhRm9y
RG9tYWlucyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpIG92ZXJyaWRlOwogCkBA
IC05MSw5ICs5MSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVs
ZW1ldHJ5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29u
c3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVE
b21haW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOworICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJG
cmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZpZ2F0ZWRUb0RvbWFp
biYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJvbURvbWFpbiYsIGJv
b2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBsb2dV
c2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKQEAgLTE1Miw3
ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mLCBSZXNvdXJjZUxvYWRQcmV2YWxlbmNlKTsKICAgICB1bnNpZ25l
ZCByZWN1cnNpdmVseUZpbmROb25QcmV2YWxlbnREb21haW5zVGhhdFJlZGlyZWN0ZWRUb1RoaXNE
b21haW4odW5zaWduZWQgcHJpbWFyeURvbWFpbklELCBTdGRTZXQ8dW5zaWduZWQ+JiBub25QcmV2
YWxlbnRSZWRpcmVjdGlvblNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUmVjdXJzaXZlQ2FsbHMp
OwogICAgIHZvaWQgc2V0RG9tYWluc0FzUHJldmFsZW50KFN0ZFNldDx1bnNpZ25lZD4mJik7Ci0g
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BG
cmFtZURvbWFpbiYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzUHJvbXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0lu
dGVybmFsKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1l
SUQ+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRU
b1ByZXZhbGVudCgpOwogICAgIFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4gZW5zdXJlUHJldmFs
ZW50UmVzb3VyY2VzRm9yRGVidWdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVEYXRh
UmVjb3JkcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCAwZWU3Zjk2Mzg5NDYx
NWRmZDEzNWIxODQwOTBiNTNmODFiZDlkZmY0Li5hNWYyNjI0ZTQzMzRjZTkwMzlmYWE1ZTJkMWU1
YzQxZmQwZDA4N2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmNwcApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpzeW5jU3RvcmFnZUltbWVkaWF0ZWx5KCkKICAgICAgICAgbV9w
ZXJzaXN0ZW50U3RvcmFnZS0+c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpZZXMpOwog
fQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9uYWw8RnJhbWVJRD4gZnJhbWVJRCwgUGFnZUlE
IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpoYXNTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgVG9wRnJhbWVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTIyNCw3
ICsyMjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYgcwogICAgIH0pOwogfQogCi12b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgRnJhbWVJRCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgVG9wRnJhbWVEb21haW4mJiB0b3BGcmFtZURv
bWFpbiwgRnJhbWVJRCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTI2Niw3ICsyNjYsNyBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoU3ViRnJhbWVEb21haW4mJiBzdQogICAgIH0pOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihEb21h
aW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIE9w
ZW5lclBhZ2VJRCBvcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmIG9wZW5lckRvbWFpbikKK3Zv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpyZXF1ZXN0U3RvcmFnZUFjY2Vz
c1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmIGRvbWFpbkluTmVlZE9m
U3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBPcGVuZXJEb21haW4m
JiBvcGVuZXJEb21haW4pCiB7CiAgICAgQVNTRVJUKGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyAhPSBvcGVuZXJEb21haW4pOwogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAt
Mjg3LDcgKzI4Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluCiAgICAgZ3JhbnRTdG9yYWdl
QWNjZXNzSW50ZXJuYWwoV1RGTW92ZShkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MpLCBXVEZN
b3ZlKG9wZW5lckRvbWFpbiksIFdURjo6bnVsbG9wdCwgb3BlbmVyUGFnZUlELCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd246Ok5vLCBbXShTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCkgeyB9KTsK
IH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50U3RvcmFn
ZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYm
IHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKFN1
YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRvcEZyYW1lRG9tYWluJiYgdG9wRnJhbWVE
b21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFj
Y2Vzc1Byb21wdFdhc1Nob3duIHByb21wdFdhc1Nob3duLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJh
bWVEb21haW4mJiBzdWJGCiAgICAgZ3JhbnRTdG9yYWdlQWNjZXNzSW50ZXJuYWwoV1RGTW92ZShz
dWJGcmFtZURvbWFpbiksIFdURk1vdmUodG9wRnJhbWVEb21haW4pLCBmcmFtZUlELCBwYWdlSUQs
IHByb21wdFdhc1Nob3duLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3NJbnRl
cm5hbChTdWJGcmFtZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBUb3BGcmFtZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCBPcHRpb25hbDxGcmFtZUlEPiBmcmFtZUlELCBQYWdlSUQgcGFnZUlELCBT
dG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd25Ob3dPckVhcmxpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQordm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1YkZyYW1lRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFRv
cEZyYW1lRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPEZyYW1lSUQ+IGZyYW1lSUQs
IFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duIHByb21w
dFdhc1Nob3duTm93T3JFYXJsaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oCmluZGV4IDQ0ZWZiZjRkZWMxNGYyMDI3MDJhY2FkMDc3NjhmNWFjODIwYjgw
NWEuLjQ1ZjdlMWI3NTk2OTNjMTEwM2EzZDY2MjczMTZkNmZjZTAyZTRjZTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpIG92ZXJyaWRlOwog
ICAgIHZvaWQgc3luY1N0b3JhZ2VJbW1lZGlhdGVseSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBy
ZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2Vz
cyYmLCBPcGVuZXJQYWdlSUQsIE9wZW5lckRvbWFpbiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBPcGVuZXJEb21haW4mJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGdyYW5kZmF0aGVyRGF0YUZvckRvbWFpbnMoY29uc3QgSGFzaFNldDxSZWdpc3Ry
YWJsZURvbWFpbj4mKSBvdmVycmlkZTsKIApAQCAtOTcsOSArOTcsOSBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNz
KFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1lSUQsIFBhZ2VJRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50
ZWQpPiYmKSBvdmVycmlkZTsKKyAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJh
bWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3Zl
cnJpZGU7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBU
b3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgRnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nl
c3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBsb2dGcmFtZU5hdmln
YXRpb24oY29uc3QgTmF2aWdhdGVkVG9Eb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNv
bnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJh
bWUpIG92ZXJyaWRlOwogICAgIHZvaWQgbG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFRvcEZyYW1l
RG9tYWluJikgb3ZlcnJpZGU7CkBAIC0xMjMsNyArMTIzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGluY3JlbWVudFJlY29yZHNEZWxldGVkQ291bnRGb3JEb21haW5zKEhhc2hTZXQ8UmVnaXN0cmFi
bGVEb21haW4+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UHJldmFsZW50UmVzb3VyY2UoUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyYsIFJlc291cmNlTG9hZFByZXZhbGVuY2UpOwogICAgIHVuc2ln
bmVkIHJlY3Vyc2l2ZWx5R2V0QWxsRG9tYWluc1RoYXRIYXZlUmVkaXJlY3RlZFRvVGhpc0RvbWFp
bihjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgSGFzaFNldDxSZWRpcmVjdGVkVG9Eb21h
aW4+JiwgdW5zaWduZWQgbnVtYmVyT2ZSZWN1cnNpdmVDYWxscykgY29uc3Q7Ci0gICAgdm9pZCBn
cmFudFN0b3JhZ2VBY2Nlc3NJbnRlcm5hbChTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFp
biYmLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJv
bXB0V2FzU2hvd24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQpPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzc0ludGVybmFsKFN1
YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVk
KT4mJik7CiAgICAgdm9pZCBtYXJrQXNQcmV2YWxlbnRJZkhhc1JlZGlyZWN0ZWRUb1ByZXZhbGVu
dChSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgYm9vbCBpc1ByZXZhbGVudER1ZVRvRGVi
dWdNb2RlKFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICBWZWN0b3I8UmVnaXN0cmFibGVE
b21haW4+IGVuc3VyZVByZXZhbGVudFJlc291cmNlc0ZvckRlYnVnTW9kZSgpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDBiNTc3NWJiYjc3
OWNjMWYxYjk0NTYyMWI5YTA1NTI0ODRjMDk2YzUuLmQ3Nzk4YjI1ZDFlM2JiYmI3OGE4N2FiM2Ux
YTVhMzEzOWYxNGJhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmgKQEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHVzaW5nIE5hdmlnYXRlZFRvRG9tYWlu
ID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgRG9tYWluSW5OZWVkT2ZT
dG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNpbmcgT3Bl
bmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47Ci0gICAgdXNpbmcgT3BlbmVy
UGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0gdWludDY0X3Q7CiAgICAgdXNp
bmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogICAgIAogICAgIHZpcnR1YWwgflJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSgpOwpAQCAtMTEwLDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc3luY1N0b3JhZ2VJZk5lZWRlZCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc3luY1N0
b3JhZ2VJbW1lZGlhdGVseSgpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBPcGVuZXJQ
YWdlSUQsIE9wZW5lckRvbWFpbiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RTdG9y
YWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJEb21haW4mJikgPSAwOwogICAgIHZv
aWQgcmVtb3ZlQWxsU3RvcmFnZUFjY2VzcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
CiAgICAgdm9pZCBncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKQEAgLTE2MSw5ICsxNTksOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0Rl
YnVnTW9kZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH07CiAg
ICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYpOwogCi0gICAgdmlydHVhbCB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3Vi
RnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPEZyYW1lSUQ+LCBQ
YWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21h
aW4mJiwgRnJhbWVJRCwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nl
c3NTdGF0dXMpPiYmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhT
dWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBQYWdlSUQsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1l
RG9tYWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIEZyYW1l
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3Jh
Z2VBY2Nlc3NTdGF0dXMpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdyYW50U3RvcmFnZUFj
Y2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBGcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4m
JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIGxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBOYXZp
Z2F0ZWRUb0RvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgTmF2aWdhdGVkRnJv
bURvbWFpbiYsIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01haW5GcmFtZSkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBsb2dVc2VySW50ZXJhY3Rpb24oY29uc3QgVG9wRnJhbWVEb21haW4mKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4
IDg3MWIxOWQyZjA3NDg2ZTBmNGJiNzYzYzY5ZGFhMWFhZmY4N2M5OTIuLjYyMjQzMGNkOGU0ZjA5
ZWNhZjhmYTM2OGEzODlmMGNhYjg3YzEwM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZl
Y3RvcjxXZWJDb3IKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6Omhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1l
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFs
PHVpbnQ2NF90PiBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3Vi
RnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0
aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQo
c3ViRnJhbWVEb21haW4gIT0gdG9wRnJhbWVEb21haW4pOwogICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CkBAIC0yOTgsMTIgKzI5OCwxMiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcwog
ICAgIH0pOwogfQogCi1ib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6aGFzU3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFp
biwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK2Jvb2wgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJl
c291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwg
dWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBt
X25ldHdvcmtTZXNzaW9uID8gbV9uZXR3b3JrU2Vzc2lvbi0+bmV0d29ya1N0b3JhZ2VTZXNzaW9u
KCkuaGFzU3RvcmFnZUFjY2VzcyhyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlEKSA6IGZhbHNlOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6Y2FsbEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHJlc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZmly
c3RQYXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wgaGFzQWNjZXNzKT4mJiBjYWxsYmFjaykKK3ZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFu
ZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRl
bnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYm
IGNhbGxiYWNrKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKQEAgLTMxNSw3
ICszMTUsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoY29uc3QgUgogICAgIGNhbGxiYWNrKGZhbHNlKTsK
IH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBp
ZiAoc3ViRnJhbWVEb21haW4gPT0gdG9wRnJhbWVEb21haW4pIHsKICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQ6OlllcywgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duOjpObyk7CkBAIC0zNjIsNyArMzYyLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWkKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGVEb21haW4mJiBkb21haW5J
bk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9wZW5lclBhZ2VJRCwgUmVnaXN0cmFibGVE
b21haW4mJiBvcGVuZXJEb21haW4pCit2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihSZWdpc3RyYWJsZURvbWFpbiYmIGRv
bWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlkZW50aWZpZXIgb3BlbmVyUGFnZUlELCBS
ZWdpc3RyYWJsZURvbWFpbiYmIG9wZW5lckRvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCkBAIC0zNzUsNyArMzc1LDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoUmVnaXN0cmFibGUK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgcGFnZUlELCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hv
d24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFN0b3Jh
Z2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIFN0
b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93biwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1No
b3duKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIHBvc3RUYXNrKFt0aGlzLCBzdWJGcmFtZURvbWFpbiA9IHN1YkZyYW1lRG9tYWlu
Lmlzb2xhdGVkQ29weSgpLCB0b3BGcmFtZURvbWFpbiA9IHRvcEZyYW1lRG9tYWluLmlzb2xhdGVk
Q29weSgpLCBmcmFtZUlELCBwYWdlSUQsIHByb21wdFdhc1Nob3duLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMzk2LDcgKzM5
Niw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFudFN0b3JhZ2VB
Y2Nlc3MoY29uc3QgUmVnaXN0cmFibGVEb21haW4mCiAgICAgfSk7CiB9CiAKLVN0b3JhZ2VBY2Nl
c3NXYXNHcmFudGVkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbnRTdG9yYWdl
QWNjZXNzKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZXNvdXJjZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFt
ZUlELCB1aW50NjRfdCBwYWdlSUQpCitTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmaXJzdFBh
cnR5RG9tYWluLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogICAgIGJvb2wgaXNTdG9yYWdlR3JhbnRlZCA9IGZhbHNlOwogCkBAIC00MDksNyAr
NDA5LDcgQEAgU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QKICAgICByZXR1cm4gaXNTdG9yYWdlR3Jh
bnRlZCA/IFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOjpZZXMgOiBTdG9yYWdlQWNjZXNzV2FzR3Jh
bnRlZDo6Tm87CiB9CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjYWxs
R3JhbnRTdG9yYWdlQWNjZXNzSGFuZGxlcihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJh
bWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgT3B0aW9u
YWw8dWludDY0X3Q+IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y2FsbEdyYW50U3RvcmFnZUFjY2Vzc0hh
bmRsZXIoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlE
LCBQYWdlSWRlbnRpZmllciBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaAppbmRleCA4NzU5ZDYwMTY2YTU1MGVlNjlhNjJiMTcxZGVhODZmZTNhNDFiOTJmLi43
OWNmMjQ2MDFjMzJlNzA1Y2Q4YjQ1M2Y5MjNiZmQzNjYzMTE0ZDgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNp
bmNsdWRlICJXZWJzaXRlRGF0YVR5cGUuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CkBAIC04
Miw4ICs4Myw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBOYXZpZ2F0ZWRUb0RvbWFpbiA9IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIERvbWFpbkluTmVlZE9mU3RvcmFnZUFj
Y2VzcyA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIE9wZW5lckRvbWFp
biA9IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluOwotICAgIHVzaW5nIE9wZW5lclBhZ2VJRCA9
IHVpbnQ2NF90OwotICAgIHVzaW5nIFBhZ2VJRCA9IHVpbnQ2NF90OwogICAgIHVzaW5nIEZyYW1l
SUQgPSB1aW50NjRfdDsKICAgICB1c2luZyBTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCA9IFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkOwogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93biA9IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bjsKQEAgLTEw
NCw3ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNl
c0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCi0gICAgdm9p
ZCBncmFudFN0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFt
ZURvbWFpbiYsIEZyYW1lSUQsIFBhZ2VJRCwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKKyAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25z
dCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgU3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duKT4mJik7CiAKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpOwog
CkBAIC0xMTgsMTEgKzExNywxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhclVzZXJJbnRlcmFj
dGlvbihjb25zdCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBkZWxldGVXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25T
ZXQ8V2Vic2l0ZURhdGFUeXBlPiwgSGFzaE1hcDxSZWdpc3RyYWJsZURvbWFpbiwgV2Vic2l0ZURh
dGFUb1JlbW92ZT4mJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVn
aXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+
LCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxS
ZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwotICAgIFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIGdy
YW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFBhZ2VJRCk7CisgICAgU3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQgZ3JhbnRTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIp
OwogICAgIHZvaWQgaGFzSGFkVXNlckludGVyYWN0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAgdm9pZCBoYXNTdG9yYWdl
QWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRp
b25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsK
LSAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwgUGFnZUlEKTsKLSAgICB2b2lkIHJlcXVl
c3RTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mLCBGcmFtZUlELCBQYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vz
c1dhc0dyYW50ZWQsIFN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOworICAgIHZvaWQg
aGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9t
YWluJiwgT3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICBib29sIGhhc1N0b3JhZ2VBY2Nlc3NGb3JG
cmFtZShjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJ
RCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIEZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VB
Y2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmKTsKICAgICB2
b2lkIHNldExhc3RTZWVuKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vjb25kcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlKGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldFZlcnlQcmV2YWxlbnRSZXNvdXJjZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0xNjYsMTEgKzE2NSwxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRQcmV2YWxlbnRSZXNvdXJjZUZvckRlYnVnTW9kZShjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAgICB2b2lk
IGxvZ1Rlc3RpbmdFdmVudChjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGNhbGxHcmFudFN0b3Jh
Z2VBY2Nlc3NIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21h
aW4mLCBPcHRpb25hbDxGcmFtZUlEPiwgUGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CisgICAgdm9pZCBjYWxsR3JhbnRTdG9yYWdlQWNj
ZXNzSGFuZGxlcihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwg
T3B0aW9uYWw8RnJhbWVJRD4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJik7CiAgICAgdm9pZCByZW1vdmVB
bGxTdG9yYWdlQWNjZXNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBj
YWxsVXBkYXRlUHJldmFsZW50RG9tYWluc1RvQmxvY2tDb29raWVzRm9ySGFuZGxlcihjb25zdCBW
ZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIGNhbGxSZW1vdmVEb21haW5zSGFuZGxlcihjb25zdCBWZWN0b3I8UmVnaXN0cmFi
bGVEb21haW4+Jik7Ci0gICAgdm9pZCBjYWxsSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
cihjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgRnJhbWVJRCwg
UGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGNhbGxI
YXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29u
c3QgVG9wRnJhbWVEb21haW4mLCBGcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGRpZENyZWF0ZU5ldHdv
cmtQcm9jZXNzKCk7CiAKQEAgLTE4Miw3ICsxODEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBub3Rp
ZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIHRvdGFsUHJldmFsZW50
UmVzb3VyY2VzLCB1bnNpZ25lZCB0b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24sIHVuc2lnbmVkIHRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zKSBjb25zdDsK
IAogICAgIHZvaWQgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFJlc291cmNl
TG9hZFN0YXRpc3RpY3M+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9w
ZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgdWludDY0X3Qgb3BlbmVyUGFnZUlE
LCBPcGVuZXJEb21haW4mJik7CisgICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3Bl
bmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmlu
ZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgKaW5kZXggMmM5
NzE4MzZhZGE1YWU4Mjk3YjViNTc5MDZiYzkwNWMxODNjZWI2ZC4uNGQzZDE2OWY2YWY5ZjQzYjc2
MTA4MWNmYmZlNjBhZmM1YTM5M2ZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCkBAIC00OSw3ICs0
OSw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RyaW5nIHJlZmVycmVyOwogICAgICAgICBTdHJpbmcg
dXNlckFnZW50OwogICAgICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQ7Ci0gICAgICAgIHVp
bnQ2NF90IHBhZ2VJRDsKKyAgICAgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEOwog
ICAgICAgICB1aW50NjRfdCBmcmFtZUlEOwogICAgICAgICBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAppbmRleCAzZDcxZjhmNmIxYjZjMjZkYjA1NTBmODhhYTVlZTExNDQyMTBh
OTA2Li45MmM4YjdhZTQ0ZmIzYjc3NGQ2YjA1OThjNDE5YzM4M2ZlYjA5MjBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZUxvYWRJZGVudGlmaWVyKFJlc291cmNlTG9hZElkZW50
aWZpZXIKICAgICBBU1NFUlQoIW1fbmV0d29ya1Jlc291cmNlTG9hZGVycy5jb250YWlucyhpZGVu
dGlmaWVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnBhZ2VM
b2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkK
IHsKICAgICBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHdlYlBhZ2VJRCk7
CiB9CkBAIC01MTIsNyArNTEyLDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6U2Vzc2kKICAgICBsb2Fk
ZXItPmNvbnZlcnRUb0Rvd25sb2FkKGRvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0K
IAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMg
aW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNp
dGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4g
ZnJhbWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
IGNvb2tpZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIGF1dG8mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiA9IHN0b3JhZ2VTZXNz
aW9uKG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCk7CiAgICAgYXV0byByZXN1bHQgPSBuZXR3
b3JrU3RvcmFnZVNlc3Npb24uY29va2llc0ZvckRPTShmaXJzdFBhcnR5LCBzYW1lU2l0ZUluZm8s
IHVybCwgZnJhbWVJRCwgcGFnZUlELCBpbmNsdWRlU2VjdXJlQ29va2llcyk7CkBAIC01MjUsNyAr
NTI1LDcgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRP
TShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnMKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKHJlc3VsdC5maXJzdCksIHJlc3VsdC5zZWNvbmQpOwogfQogCi12b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBzYW1l
U2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJ
bmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJh
bWVJRCwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgY29uc3QgU3RyaW5nJiBjb29r
aWVTdHJpbmcpCiB7CiAgICAgYXV0byYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uID0gc3RvcmFnZVNl
c3Npb24obmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKTsKICAgICBuZXR3b3JrU3RvcmFnZVNl
c3Npb24uc2V0Q29va2llc0Zyb21ET00oZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZy
YW1lSUQsIHBhZ2VJRCwgY29va2llU3RyaW5nKTsKQEAgLTU0MiwxMyArNTQyLDEzIEBAIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgQ29tCiAgICAgY29tcGxldGlvbkhhbmRsZXIoc3RvcmFnZVNlc3Npb24o
bmV0d29ya1Byb2Nlc3MoKSwgc2Vzc2lvbklEKS5jb29raWVzRW5hYmxlZCgpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIEluY2x1ZGVTZWN1
cmVDb29raWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0
cmluZywgYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgU2FtZVNpdGVJbmZvJiBz
YW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwg
T3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRCwgSW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5j
bHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nLCBib29sKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBhdXRvIHJlc3VsdCA9IHN0b3JhZ2VTZXNzaW9u
KG5ldHdvcmtQcm9jZXNzKCksIHNlc3Npb25JRCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgaW5jbHVk
ZVNlY3VyZUNvb2tpZXMpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVzdWx0LmZp
cnN0KSwgcmVzdWx0LnNlY29uZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmdldFJhd0Nvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwm
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpn
ZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IHJlc3VsdDsK
ICAgICBzdG9yYWdlU2Vzc2lvbihuZXR3b3JrUHJvY2VzcygpLCBzZXNzaW9uSUQpLmdldFJhd0Nv
b2tpZXMoZmlyc3RQYXJ0eSwgc2FtZVNpdGVJbmZvLCB1cmwsIGZyYW1lSUQsIHBhZ2VJRCwgcmVz
dWx0KTsKQEAgLTYzOCwxMyArNjM4LDEzIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogfQogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCkKIHsKICAgICBpZiAoYXV0byogc3RvcmFnZVNlc3Npb24gPSBuZXR3b3JrUHJvY2VzcygpLnN0
b3JhZ2VTZXNzaW9uKHNlc3Npb25JRCkpCiAgICAgICAgIHN0b3JhZ2VTZXNzaW9uLT5yZW1vdmVT
dG9yYWdlQWNjZXNzRm9yRnJhbWUoZnJhbWVJRCwgcGFnZUlEKTsKIH0KIAotdm9pZCBOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VM
b2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNsZWFyUGFnZVNwZWNpZmljRGF0
YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdl
SWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0
d29ya1Byb2Nlc3MoKS5zdG9yYWdlU2Vzc2lvbihzZXNzaW9uSUQpKQogICAgICAgICBzdG9yYWdl
U2Vzc2lvbi0+Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhw
YWdlSUQpOwpAQCAtNjk3LDcgKzY5Nyw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlCiAgICAg
fQogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpoYXNTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHN1
YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6Omhhc1N0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWlu
JiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewog
ICAgIGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vz
c2lvbihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewpAQCAtNzA5
LDcgKzcwOSw3IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6Omhhc1N0b3Jh
Z2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjCiAgICAgY29tcGxldGlvbkhhbmRs
ZXIodHJ1ZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlcXVl
c3RTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCB3YXNHcmFudGVkLCBX
ZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24gcHJvbXB0V2FzU2hvd24pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVx
dWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgc3ViRnJhbWVEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BG
cmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkIHdhc0dy
YW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93
bik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8gbmV0d29ya1Nlc3Npb24g
PSBuZXR3b3JrUHJvY2VzcygpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKICAgICAgICAg
aWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKSB7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbkkKICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZDo6WWVzLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd246Ok5vKTsK
IH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VB
Y2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCB1aW50NjRfdCBvcGVu
ZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRl
ck9wZW5lcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9t
YWluJiYgZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzLCBQYWdlSWRlbnRpZmllciBvcGVuZXJQ
YWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgb3BlbmVyRG9tYWluKQogewogICAg
IGlmIChhdXRvIG5ldHdvcmtTZXNzaW9uID0gbmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vzc2lv
bihzZXNzaW9uSUQpKSB7CiAgICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkKQEAgLTc0NSw3ICs3
NDUsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKQogICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1do
aXRlbGlzdHMoKTsKIH0KIAotT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4gTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQodWludDY0
X3QgcGFnZUlELCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQsIGJvb2wgaXNNYWlu
UmVzb3VyY2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCitPcHRpb25hbDxOZXR3
b3JrQWN0aXZpdHlUcmFja2VyPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRU
cmFja2luZ1Jlc291cmNlTG9hZChQYWdlSWRlbnRpZmllciBwYWdlSUQsIFJlc291cmNlTG9hZElk
ZW50aWZpZXIgcmVzb3VyY2VJRCwgYm9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNz
aW9uSUQmIHNlc3Npb25JRCkKIHsKICAgICBpZiAoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCiAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CkBAIC04MTQsNyArODE0LDcgQEAgdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5n
KCkKICAgICBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmNsZWFyKCk7CiB9CiAKLXZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0b3BBbGxOZXR3b3JrQWN0aXZpdHlUcmFja2lu
Z0ZvclBhZ2UodWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6c3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nRm9yUGFnZShQYWdlSWRlbnRpZmll
ciBwYWdlSUQpCiB7CiAgICAgZm9yIChhdXRvJiBhY3Rpdml0eVRyYWNrZXIgOiBtX25ldHdvcmtB
Y3Rpdml0eVRyYWNrZXJzKSB7CiAgICAgICAgIGlmIChhY3Rpdml0eVRyYWNrZXIucGFnZUlEID09
IHBhZ2VJRCkKQEAgLTgyNiw3ICs4MjYsNyBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NAogICAg
IH0pOwogfQogCi1zaXplX3QgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmZpbmRSb290
TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJRCkKK3NpemVfdCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6ZmluZFJvb3ROZXR3b3JrQWN0aXZpdHkoUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKQogewogICAgIHJldHVybiBtX25ldHdvcmtBY3Rpdml0eVRyYWNrZXJzLmZpbmRNYXRjaGlu
ZyhbJl0oY29uc3QgYXV0byYgaXRlbSkgewogICAgICAgICByZXR1cm4gaXRlbS5pc1Jvb3RBY3Rp
dml0eSAmJiBpdGVtLnBhZ2VJRCA9PSBwYWdlSUQ7CkBAIC05MDMsMTcgKzkwMywxNyBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjbGVhckNvbm5lY3Rpb25IYXNVcGxvYWRz
KCkKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUG9vbDo6Q2xlYXJXZWJQcm9jZXNzSGFzVXBsb2FkcyhtX3dl
YlByb2Nlc3NJZGVudGlmaWVyKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OndlYlBhZ2VXYXNBZGRlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6d2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBvbGRQYWdlSUQpCiB7
CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc0FkZGVkKG1fY29ubmVjdGlvbi5nZXQo
KSwgc2Vzc2lvbklELCBwYWdlSUQsIG9sZFBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6d2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBQYWdlSWRlbnRp
ZmllciBwYWdlSUQpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUGFnZVdhc1JlbW92ZWQo
bV9jb25uZWN0aW9uLmdldCgpLCBzZXNzaW9uSUQsIHBhZ2VJRCk7CiB9CiAKLXZvaWQgTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNl
c3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHBhZ2VzKQordm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6d2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2Vk
KFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVy
PiYgcGFnZXMpCiB7CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+d2ViUHJvY2Vzc1Nlc3Npb25DaGFu
Z2VkKG1fY29ubmVjdGlvbi5nZXQoKSwgbmV3U2Vzc2lvbklELCBwYWdlcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmgKaW5kZXggY2JjN2JiZmU4ZjU3ZDc1NDEzMTU4MTA0Zjg4YTU0NDAwOTQy
MDc2Yi4uMDZkNTc5Njg4Mjg2NThlMTY4YzJjODFmNzI4MWYxZjk2MGM4MDRiYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtSZXNv
dXJjZUxvYWRNYXAuaCIKICNpbmNsdWRlICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya0xvYWRJbmZvcm1hdGlvbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Byb2Nlc3NJZGVudGlm
aWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CkBAIC0xMzMsNyArMTM0LDcgQEAgcHVibGljOgogICAgICAgICBt
X25ldHdvcmtMb2FkSW5mb3JtYXRpb25CeUlELnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAK
LSAgICBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBzdGFydFRyYWNraW5nUmVzb3Vy
Y2VMb2FkKHVpbnQ2NF90IHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciByZXNvdXJjZUlE
LCBib29sIGlzTWFpblJlc291cmNlLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOworICAgIE9wdGlv
bmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+IHN0YXJ0VHJhY2tpbmdSZXNvdXJjZUxvYWQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgcmVzb3VyY2VJRCwg
Ym9vbCBpc01haW5SZXNvdXJjZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmKTsKICAgICB2b2lkIHN0
b3BUcmFja2luZ1Jlc291cmNlTG9hZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQs
IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkNvbXBsZXRpb25Db2RlKTsKIAogICAgIFdlYkNvcmU6
OkJsb2JSZWdpc3RyeUltcGwmIGJsb2JSZWdpc3RyeSgpOwpAQCAtMTQ0LDkgKzE0NSw5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldENvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAgICAgdm9pZCBjbGVh
ckNvbm5lY3Rpb25IYXNVcGxvYWRzKCk7CiAKLSAgICB2b2lkIHdlYlBhZ2VXYXNBZGRlZChQQUw6
OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpOwotICAgIHZv
aWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCk7Ci0g
ICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lv
bklELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlcyk7CisgICAgdm9pZCB3ZWJQYWdlV2Fz
QWRkZWQoUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBvbGRQYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoUEFM
OjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHdlYlByb2Nl
c3NTZXNzaW9uQ2hhbmdlZChQQUw6OlNlc3Npb25JRCBuZXdTZXNzaW9uSUQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4mIHBhZ2VzKTsKIAogcHJpdmF0ZToKICAgICBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyhOZXR3b3JrUHJvY2VzcyYsIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllcik7CkBAIC0xNzAsMTYgKzE3MSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
cHJlY29ubmVjdFRvKHVpbnQ2NF90IHByZWNvbm5lY3Rpb25JZGVudGlmaWVyLCBOZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycyYmKTsKIAogICAgIHZvaWQgcmVtb3ZlTG9hZElkZW50aWZpZXIo
UmVzb3VyY2VMb2FkSWRlbnRpZmllcik7Ci0gICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZCh1aW50
NjRfdCB3ZWJQYWdlSUQpOworICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgY3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291
cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFVSTCYgcmVkaXJlY3RVUkwpOwogICAgIHZvaWQgc3Rh
cnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKICAgICB2
b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZChQQUw6OlNlc3Npb25JRCwgdWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIERvd25sb2FkSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsK
IAotICAgIHZvaWQgY29va2llc0ZvckRPTShQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8mLCBjb25zdCBVUkwmLCBPcHRpb25h
bDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKLSAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBjb25zdCBTdHJpbmcmKTsKKyAgICB2
b2lkIGNvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0
X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6
SW5jbHVkZVNlY3VyZUNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nIGNvb2tp
ZVN0cmluZywgYm9vbCBzZWN1cmVDb29raWVzQWNjZXNzZWQpPiYmKTsKKyAgICB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBm
cmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4sIGNvbnN0IFN0cmluZyYp
OwogICAgIHZvaWQgY29va2llc0VuYWJsZWQoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9w
dGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29v
a2llc0FjY2Vzc2VkKT4mJik7Ci0gICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklE
LCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNv
bnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4g
cGFnZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JiYp
PiYmKTsKKyAgICB2b2lkIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFBBTDo6U2Vzc2lv
bklELCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYs
IGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29raWVzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgc2VjdXJlQ29va2llc0Fj
Y2Vzc2VkKT4mJik7CisgICAgdm9pZCBnZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVS
TCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
Jik+JiYpOwogICAgIHZvaWQgZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpOwogCiAgICAgdm9pZCByZWdpc3RlckZpbGVCbG9i
VVJMKGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlJiYsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwpAQCAtMjE4LDE3ICsyMTksMTcgQEAg
cHJpdmF0ZToKICAgICBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VD
b25uZWN0aW9uKCk7CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IHZvaWQgcmVtb3ZlU3RvcmFnZUFjY2Vzc0ZvckZyYW1lKFBBTDo6U2Vzc2lvbklELCB1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgY2xlYXJQYWdlU3BlY2lmaWNE
YXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFn
ZUlEKTsKKyAgICB2b2lkIHJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFtZShQQUw6OlNlc3Npb25J
RCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQg
Y2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Np
b25JRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCiAgICAgdm9pZCBsb2dVc2VySW50ZXJh
Y3Rpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJik7CiAgICAgdm9p
ZCBsb2dXZWJTb2NrZXRMb2FkaW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgdGFyZ2V0RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21h
aW4sIFdhbGxUaW1lIGxhc3RTZWVuKTsKICAgICB2b2lkIGxvZ1N1YnJlc291cmNlTG9hZGluZyhQ
QUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2Vlbik7
CiAgICAgdm9pZCBsb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dGFyZ2V0RG9tYWluKTsKICAgICB2b2lkIHJlc291cmNlTG9hZFN0YXRpc3RpY3NVcGRhdGVkKFZl
Y3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzPiYmKTsKLSAgICB2b2lkIGhhc1N0
b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJG
cmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOwotICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQsIGNv
bnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQs
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93bik+JiYpOwotICAgIHZvaWQgcmVx
dWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIHVpbnQ2NF90IG9w
ZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwor
ICAgIHZvaWQgaGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJh
bWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNj
ZXNzKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc3ViRnJhbWVEb21h
aW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9t
cHRXYXNTaG93bik+JiYpOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5l
cihQQUw6OlNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBkb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lclBhZ2VJRCwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBvcGVuZXJEb21haW4pOwogI2VuZGlmCiAKICAg
ICB2b2lkIGFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0cmluZyYgc291cmNl
T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKQEAgLTIz
OSwyOSArMjQwLDI5IEBAIHByaXZhdGU6CiAgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcigpID0gZGVmYXVsdDsKICAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFj
a2VyKGNvbnN0IFJlc291cmNlTmV0d29ya0FjdGl2aXR5VHJhY2tlciYpID0gZGVmYXVsdDsKICAg
ICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2VyKFJlc291cmNlTmV0d29ya0FjdGl2
aXR5VHJhY2tlciYmKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcih1aW50NjRfdCBwYWdlSUQpCisgICAgICAgIFJlc291cmNlTmV0d29ya0FjdGl2aXR5
VHJhY2tlcihXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgICAgICAgICA6IHBh
Z2VJRCB7IHBhZ2VJRCB9CiAgICAgICAgICAgICAsIGlzUm9vdEFjdGl2aXR5IHsgdHJ1ZSB9CiAg
ICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6Okxh
YmVsOjpMb2FkUGFnZSB9CiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIFJlc291cmNl
TmV0d29ya0FjdGl2aXR5VHJhY2tlcih1aW50NjRfdCBwYWdlSUQsIFJlc291cmNlTG9hZElkZW50
aWZpZXIgcmVzb3VyY2VJRCkKKyAgICAgICAgUmVzb3VyY2VOZXR3b3JrQWN0aXZpdHlUcmFja2Vy
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciBy
ZXNvdXJjZUlEKQogICAgICAgICAgICAgOiBwYWdlSUQgeyBwYWdlSUQgfQogICAgICAgICAgICAg
LCByZXNvdXJjZUlEIHsgcmVzb3VyY2VJRCB9CiAgICAgICAgICAgICAsIG5ldHdvcmtBY3Rpdml0
eSB7IE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI6OkxhYmVsOjpMb2FkUmVzb3VyY2UgfQogICAgICAg
ICB7CiAgICAgICAgIH0KIAotICAgICAgICB1aW50NjRfdCBwYWdlSUQgeyAwIH07CisgICAgICAg
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRl
bnRpZmllciByZXNvdXJjZUlEIHsgMCB9OwogICAgICAgICBib29sIGlzUm9vdEFjdGl2aXR5IHsg
ZmFsc2UgfTsKICAgICAgICAgTmV0d29ya0FjdGl2aXR5VHJhY2tlciBuZXR3b3JrQWN0aXZpdHk7
CiAgICAgfTsKIAogICAgIHZvaWQgc3RvcEFsbE5ldHdvcmtBY3Rpdml0eVRyYWNraW5nKCk7Ci0g
ICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKHVpbnQ2NF90IHBh
Z2VJRCk7Ci0gICAgc2l6ZV90IGZpbmRSb290TmV0d29ya0FjdGl2aXR5KHVpbnQ2NF90IHBhZ2VJ
RCk7CisgICAgdm9pZCBzdG9wQWxsTmV0d29ya0FjdGl2aXR5VHJhY2tpbmdGb3JQYWdlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICBzaXplX3QgZmluZFJvb3ROZXR3b3JrQWN0aXZpdHko
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHNpemVfdCBmaW5kTmV0d29ya0FjdGl2aXR5
VHJhY2tlcihSZXNvdXJjZUxvYWRJZGVudGlmaWVyIHJlc291cmNlSUQpOwogCiAjaWYgRU5BQkxF
KEFQUExFX1BBWV9SRU1PVEVfVUkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlcy5pbgppbmRleCBmN2M5N2VlYmIyMTNjZDc4M2NhZjRlMjA0NjliZmEzY2UxOTRjOGNlLi44
MzNlNzRmY2Y2MDAzZWI4M2FjMWRlMmQ4YzZiZmMwZmYyNWI5ZmMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTI2LDE4ICsyNiwxOCBAQCBtZXNzYWdl
cyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAg
UGVyZm9ybVN5bmNocm9ub3VzTG9hZChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yLCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4gZGF0
YSkgU3luY2hyb25vdXMKICAgICBMb2FkUGluZyhXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzIHJlc291cmNlTG9hZFBhcmFtZXRlcnMpCiAgICAgUmVtb3ZlTG9hZElkZW50aWZp
ZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikKLSAgICBQYWdlTG9hZENvbXBsZXRl
ZCh1aW50NjRfdCB3ZWJQYWdlSUQpCisgICAgUGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkK
ICAgICBQcmVjb25uZWN0VG8odWludDY0X3QgcHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnMpOwogCiAgICAg
U3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJ
RCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1
Z2dlc3RlZE5hbWUpCiAgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIs
IFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSkKIAotICAgIENvb2tp
ZXNGb3JET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0
IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlELCBlbnVtOmJvb2wgV2Vi
Q29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJp
bmcgY29va2llU3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3Vz
Ci0gICAgU2V0Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmly
c3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1
cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRfdD4gcGFnZUlE
LCBTdHJpbmcgY29va2llU3RyaW5nKQorICAgIENvb2tpZXNGb3JET00oUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2ll
U3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgU2V0
Q29va2llc0Zyb21ET00oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwg
c3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlELCBTdHJpbmcgY29va2llU3RyaW5nKQogICAgIENvb2tpZXNFbmFibGVkKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgZW5hYmxlZCkgU3luY2hyb25vdXMKLSAgICBDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBm
aXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJM
IHVybCwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQsIGVudW06Ym9vbCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJl
Q29va2llcykgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2VjdXJlQ29v
a2llcykgU3luY2hyb25vdXMKLSAgICBHZXRSYXdDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNp
dGVJbmZvLCBVUkwgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWlu
dDY0X3Q+IHBhZ2VJRCkgLT4gKFZlY3RvcjxXZWJDb3JlOjpDb29raWU+IGNvb2tpZXMpIFN5bmNo
cm9ub3VzCisgICAgQ29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBVUkwgZmlyc3RQYXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBz
YW1lU2l0ZUluZm8sIFVSTCB1cmwsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5j
bHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMpIC0+IChTdHJpbmcgY29va2ll
U3RyaW5nLCBib29sIGRpZEFjY2Vzc1NlY3VyZUNvb2tpZXMpIFN5bmNocm9ub3VzCisgICAgR2V0
UmF3Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCBmaXJzdFBhcnR5LCBzdHJ1
Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVybCwgT3B0aW9uYWw8
dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdl
SUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6Q29va2llPiBjb29raWVzKSBTeW5jaHJvbm91cwogICAg
IERlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyBj
b29raWVOYW1lKQogCiAgICAgUmVnaXN0ZXJGaWxlQmxvYlVSTChVUkwgdXJsLCBTdHJpbmcgcGF0
aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgZXh0ZW5zaW9uSGFuZGxlLCBTdHJp
bmcgY29udGVudFR5cGUpCkBAIC01NiwxNiArNTYsMTYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIEVuc3VyZUxlZ2FjeVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKQogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLSAgICBSZW1vdmVTdG9yYWdlQWNjZXNzRm9yRnJhbWUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpOwotICAgIENsZWFyUGFn
ZVNwZWNpZmljRGF0YUZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIFJlbW92ZVN0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCk7CisgICAgQ2xlYXJQYWdlU3BlY2lmaWNEYXRhRm9yUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCk7CiAgICAgTG9nVXNlckludGVyYWN0aW9uKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluKQogICAgIExvZ1dl
YlNvY2tldExvYWRpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbiB0YXJnZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZy
YW1lRG9tYWluLCBXYWxsVGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZUxvYWRpbmco
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJn
ZXREb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXYWxs
VGltZSBsYXN0U2VlbikKICAgICBMb2dTdWJyZXNvdXJjZVJlZGlyZWN0KFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc291cmNlRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0YXJnZXREb21haW4pCiAgICAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+IHN0
YXRpc3RpY3MpCi0gICAgSGFzU3RvcmFnZUFjY2VzcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qg
cGFnZUlEKSAtPiAoYm9vbCBoYXNTdG9yYWdlQWNjZXNzKSBBc3luYwotICAgIFJlcXVlc3RTdG9y
YWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVE
b21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1l
RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQpIC0+IChlbnVtOmJvb2wg
V2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQgd2FzR3JhbnRlZCwgZW51bTpib29sIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biBwcm9tcHRXYXNTaG93bikgQXN5bmMK
LSAgICBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1VuZGVyT3BlbmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNj
ZXNzLCB1aW50NjRfdCBvcGVuZXJQYWdlSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIG9w
ZW5lckRvbWFpbikKKyAgICBIYXNTdG9yYWdlQWNjZXNzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBwYWdlSUQpIC0+IChib29sIGhhc1N0b3JhZ2VBY2Nlc3MpIEFzeW5j
CisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4gdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkgLT4gKGVudW06Ym9vbCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2Fz
R3JhbnRlZCB3YXNHcmFudGVkLCBlbnVtOmJvb2wgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21w
dFdhc1Nob3duIHByb21wdFdhc1Nob3duKSBBc3luYworICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBkb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG9wZW5lclBhZ2VJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gb3BlbmVyRG9tYWlu
KQogI2VuZGlmCiAKICAgICBBZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShTdHJpbmcgc291
cmNlT3JpZ2luLCBTdHJpbmcgZGVzdGluYXRpb25Qcm90b2NvbCwgU3RyaW5nIGRlc3RpbmF0aW9u
SG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CkBAIC04Nyw3ICs4Nyw3IEBA
IG1lc3NhZ2VzIC0+IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIExlZ2FjeVJlY2VpdmVy
IHsKIAogICAgIFNldFdlYlByb2Nlc3NJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlm
aWVyIHByb2Nlc3NJZGVudGlmaWVyKQogCi0gICAgV2ViUGFnZVdhc0FkZGVkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCi0gICAg
V2ViUGFnZVdhc1JlbW92ZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCBwYWdl
SUQpCi0gICAgV2ViUHJvY2Vzc1Nlc3Npb25DaGFuZ2VkKFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Np
b25JRCwgVmVjdG9yPHVpbnQ2NF90PiBwYWdlcykKKyAgICBXZWJQYWdlV2FzQWRkZWQoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIG9sZFBhZ2VJRCkKKyAgICBXZWJQYWdlV2FzUmVtb3ZlZChQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKKyAg
ICBXZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoUEFMOjpTZXNzaW9uSUQgbmV3U2Vzc2lvbklELCBW
ZWN0b3I8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBhZ2VzKQogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuY3BwCmluZGV4IGQxNGIx
ZGU5ZDkxYzAyMmI3ZTBlMDM4MjE3NGRhODgyMmI5M2EzMTguLjQwOTcxNGQ2NjcyNmE4NDc0YWZm
MjlhMTYwODE3ZjI0Nzk2N2IwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGlzU2FtZU9yaWdpbihjb25zdCBVUkwmIHVybCwgY29uc3QgU2VjdXJpdHlPcmln
aW4qIG9yaWdpbikKICAgICByZXR1cm4gdXJsLnByb3RvY29sSXNEYXRhKCkgfHwgdXJsLnByb3Rv
Y29sSXNCbG9iKCkgfHwgIW9yaWdpbiB8fCBvcmlnaW4tPmNhblJlcXVlc3QodXJsKTsKIH0KIAot
TmV0d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5l
dHdvcmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1hcCYm
IG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENhcHR1
cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQorTmV0
d29ya0xvYWRDaGVja2VyOjpOZXR3b3JrTG9hZENoZWNrZXIoTmV0d29ya1Byb2Nlc3MmIG5ldHdv
cmtQcm9jZXNzLCBGZXRjaE9wdGlvbnMmJiBvcHRpb25zLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgSFRUUEhlYWRlck1h
cCYmIG9yaWdpbmFsUmVxdWVzdEhlYWRlcnMsIFVSTCYmIHVybCwgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiYmIHNvdXJjZU9yaWdpbiwgUHJlZmxpZ2h0UG9saWN5IHByZWZsaWdodFBvbGljeSwgU3Ry
aW5nJiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkLCBib29sIHNob3VsZENh
cHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcywgTG9hZFR5cGUgcmVxdWVzdExvYWRUeXBlKQog
ICAgIDogbV9vcHRpb25zKFdURk1vdmUob3B0aW9ucykpCiAgICAgLCBtX3Nlc3Npb25JRChzZXNz
aW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWRDaGVja2VyLmgKaW5kZXggMzFk
MTFjM2E4YWVjYjJhYWZkNDllNWMzMTAzOThlMGFjMTZkZGVlNy4uNTdkZjFkYTQ2ODBkMjU4NGVl
MjE2YWFkZmYwOGRlODJhMTM2YmNlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZENoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtMb2FkQ2hlY2tlci5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE5ldHdv
cmtMb2FkQ2hlY2tlciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxOZXR3b3JrTG9hZENoZWNrZXI+
IHsKIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIExvYWRUeXBlIDogYm9vbCB7IE1haW5GcmFtZSwg
T3RoZXIgfTsKIAotICAgIE5ldHdvcmtMb2FkQ2hlY2tlcihOZXR3b3JrUHJvY2VzcyYsIFdlYkNv
cmU6OkZldGNoT3B0aW9ucyYmLCBQQUw6OlNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpIVFRQSGVhZGVyTWFwJiYsIFVSTCYmLCBSZWZQdHI8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4+JiYsIFdlYkNvcmU6OlByZWZsaWdodFBvbGljeSwgU3RyaW5n
JiYgcmVmZXJyZXIsIGJvb2wgaXNIVFRQU1VwZ3JhZGVFbmFibGVkID0gZmFsc2UsIGJvb2wgc2hv
dWxkQ2FwdHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2UsIExvYWRUeXBlIHJlcXVl
c3RMb2FkVHlwZSA9IExvYWRUeXBlOjpPdGhlcik7CisgICAgTmV0d29ya0xvYWRDaGVja2VyKE5l
dHdvcmtQcm9jZXNzJiwgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiYsIFBBTDo6U2Vzc2lvbklELCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6SFRUUEhl
YWRlck1hcCYmLCBVUkwmJiwgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiYmLCBXZWJD
b3JlOjpQcmVmbGlnaHRQb2xpY3ksIFN0cmluZyYmIHJlZmVycmVyLCBib29sIGlzSFRUUFNVcGdy
YWRlRW5hYmxlZCA9IGZhbHNlLCBib29sIHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0
cmljcyA9IGZhbHNlLCBMb2FkVHlwZSByZXF1ZXN0TG9hZFR5cGUgPSBMb2FkVHlwZTo6T3RoZXIp
OwogICAgIH5OZXR3b3JrTG9hZENoZWNrZXIoKTsKIAogICAgIHN0cnVjdCBSZWRpcmVjdGlvblRy
aXBsZXQgewpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kgbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeTsKICAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1By
b2Nlc3M7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9mcmFtZUlEOwogICAgIFdlYkNvcmU6OkhUVFBI
ZWFkZXJNYXAgbV9vcmlnaW5hbFJlcXVlc3RIZWFkZXJzOyAvLyBOZWVkZWQgZm9yIENPUlMgY2hl
Y2tzLgogICAgIFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAgbV9maXJzdFJlcXVlc3RIZWFkZXJzOyAv
LyBOZWVkZWQgZm9yIENPUlMgY2hlY2tzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgKaW5kZXggODk2Mzk5ZDEzMzI1ZDAxNGEx
NzRiZjc3YjRjYTYzNmNhZjJlMGM0Ni4uODk3MzBjZjlmZDI2OTliY2ZkMzJkZGMzOGVmOGNlMDM3
NDZhMzAzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkUGFyYW1ldGVycy5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3Jr
QWN0aXZpdHlUcmFja2VyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9CbG9iRGF0YUZpbGVSZWZlcmVu
Y2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
UmVxdWVzdC5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KQEAgLTM4LDcgKzM5LDcgQEAg
ZW51bSBjbGFzcyBQcmVjb25uZWN0T25seSB7IE5vLCBZZXMgfTsKIAogY2xhc3MgTmV0d29ya0xv
YWRQYXJhbWV0ZXJzIHsKIHB1YmxpYzoKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgeyAwIH07Cisg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEOwogICAgIHVpbnQ2NF90IHdlYkZy
YW1lSUQgeyAwIH07CiAgICAgV1RGOjpQcm9jZXNzSUQgcGFyZW50UElEIHsgMCB9OwogICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCB7IFBBTDo6U2Vzc2lvbklEOjplbXB0eVNlc3Npb25JRCgp
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IGQ4MTMwODU0ZjEzZTQzNmE2YmFiNThiYWIyNzZhYmZkNTc0NGI1NjQuLmU1YzJiZWFl
NThjOGRhN2JhOTlhMjMwYzM5MjQ5M2FhZTczMjk2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0xMTU1LDcgKzExNTUsNyBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFBBTDo6U2Vzc2lvbklEIHNlcwogICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiB9CiAKLXZv
aWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVy
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21E
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRh
VHJhbnNmZXIsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmRpZENvbW1p
dENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRh
VHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQoIW5hdmlnYXRpb25EYXRhVHJhbnNmZXIuaXNF
bXB0eSgpKTsKIApAQCAtMTk2MSw3ICsxOTYxLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0
QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQoYm9vbCBhbGxvd3MsIENvbXBsZXQK
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dE
aWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlKFBhZ2VJZGVudGlmaWVy
IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQogewogICAgIGlmICghRGlhZ25vc3RpY0xv
Z2dpbmdDbGllbnQ6OnNob3VsZExvZ0FmdGVyU2FtcGxpbmcoc2hvdWxkU2FtcGxlKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMTk2OSw3ICsxOTY5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6bG9n
RGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3MK
ICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZSh3ZWJQYWdlSUQsIG1lc3NhZ2UsIGRlc2Ny
aXB0aW9uLCBTaG91bGRTYW1wbGU6Ok5vKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6
OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgRGlhZ25vc3RpY0xv
Z2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQg
TmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRlbnRp
ZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlIHJlc3VsdCwgU2hvdWxkU2FtcGxl
IHNob3VsZFNhbXBsZSkKIHsKICAgICBpZiAoIURpYWdub3N0aWNMb2dnaW5nQ2xpZW50OjpzaG91
bGRMb2dBZnRlclNhbXBsaW5nKHNob3VsZFNhbXBsZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5
NzcsNyArMTk3Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmxvZ0RpYWdub3N0aWNNZXNzYWdl
V2l0aFJlc3VsdCh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0IFN0CiAgICAgcGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6TG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHdlYlBhZ2VJRCwgbWVzc2FnZSwgZGVzY3JpcHRpb24s
IHJlc3VsdCwgU2hvdWxkU2FtcGxlOjpObyksIDApOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZSh1aW50NjRfdCB3ZWJQYWdlSUQsIGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVl
LCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUp
Cit2b2lkIE5ldHdvcmtQcm9jZXNzOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdl
SWRlbnRpZmllciB3ZWJQYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMs
IFNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgaWYgKCFEaWFnbm9zdGljTG9nZ2lu
Z0NsaWVudDo6c2hvdWxkTG9nQWZ0ZXJTYW1wbGluZyhzaG91bGRTYW1wbGUpKQogICAgICAgICBy
ZXR1cm47CkBAIC0yNjI2LDcgKzI2MjYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpyZW1vdmVL
ZXB0QWxpdmVMb2FkKE5ldHdvcmtSZXNvdXJjZUxvYWRlciYgbG9hZGVyKQogICAgICAgICBzZXNz
aW9uLT5yZW1vdmVLZXB0QWxpdmVMb2FkKGxvYWRlcik7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OndlYlBhZ2VXYXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBvbGRQYWdlSUQpCit2
b2lkIE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
UGFnZUlkZW50aWZpZXIgb2xkUGFnZUlEKQogewogICAgIGlmICghcGFnZUlEIHx8ICFvbGRQYWdl
SUQpIHsKICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgYWRkIHBhZ2Ugd2l0aCBpbnZhbGlkIGlk
Iik7CkBAIC0yNjQ1LDEzICsyNjQ1LDEzIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlBhZ2VX
YXNBZGRlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklECiAgICAg
ICAgIHJldHVybiBzZXNzaW9uSUQ7CiAgICAgfSk7CiAKLSAgICBzdG9yYWdlTWFuYWdlci5jcmVh
dGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShwYWdlSUQsIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5z
aWduZWQ+OjptYXgoKSk7Ci0gICAgc3RvcmFnZU1hbmFnZXIuYWRkQWxsb3dlZFNlc3Npb25TdG9y
YWdlTmFtZXNwYWNlQ29ubmVjdGlvbihwYWdlSUQsIGNvbm5lY3Rpb24pOworICAgIHN0b3JhZ2VN
YW5hZ2VyLmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgpLCBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIHN0b3JhZ2VNYW5hZ2Vy
LmFkZEFsbG93ZWRTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZUNvbm5lY3Rpb24ocGFnZUlELnRvVUlu
dDY0KCksIGNvbm5lY3Rpb24pOwogICAgIGlmIChwYWdlSUQgIT0gb2xkUGFnZUlEKQotICAgICAg
ICBzdG9yYWdlTWFuYWdlci5jbG9uZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKG9sZFBhZ2VJRCwg
cGFnZUlEKTsKKyAgICAgICAgc3RvcmFnZU1hbmFnZXIuY2xvbmVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShvbGRQYWdlSUQudG9VSW50NjQoKSwgcGFnZUlELnRvVUludDY0KCkpOwogfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjp3ZWJQYWdlV2FzUmVtb3ZlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5l
Y3Rpb24sIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3QgcGFnZUlEKQordm9pZCBO
ZXR3b3JrUHJvY2Vzczo6d2ViUGFnZVdhc1JlbW92ZWQoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0
aW9uLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsK
ICAgICBpZiAoIXBhZ2VJRCkgewogICAgICAgICBMT0dfRVJST1IoIkNhbm5vdCByZW1vdmUgcGFn
ZSB3aXRoIGludmFsaWQgaWQiKTsKQEAgLTI2NjQsOCArMjY2NCw4IEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OndlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbiwgUEFM
OjpTZXNzaW9uCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8mIHN0b3JhZ2VNYW5hZ2VyID0g
c2Vzc2lvbi0+c3RvcmFnZU1hbmFnZXIoKTsKLSAgICBzdG9yYWdlTWFuYWdlci5yZW1vdmVBbGxv
d2VkU2Vzc2lvblN0b3JhZ2VOYW1lc3BhY2VDb25uZWN0aW9uKHBhZ2VJRCwgY29ubmVjdGlvbik7
Ci0gICAgc3RvcmFnZU1hbmFnZXIuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJ
RCk7CisgICAgc3RvcmFnZU1hbmFnZXIucmVtb3ZlQWxsb3dlZFNlc3Npb25TdG9yYWdlTmFtZXNw
YWNlQ29ubmVjdGlvbihwYWdlSUQudG9VSW50NjQoKSwgY29ubmVjdGlvbik7CisgICAgc3RvcmFn
ZU1hbmFnZXIuZGVzdHJveVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKHBhZ2VJRC50b1VJbnQ2NCgp
KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6d2ViUHJvY2Vzc1dhc0Rpc2Nvbm5lY3RlZChJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCkBAIC0yNjgxLDcgKzI2ODEsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjp3ZWJQcm9jZXNzV2FzRGlzY29ubmVjdGVkKElQQzo6Q29ubmVjdGlvbiYg
Y29ubmVjdGlvbikKICAgICBuZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpLT5zdG9yYWdlTWFuYWdl
cigpLnByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24oY29ubmVjdGlvbik7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mIGNv
bm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Npb25JRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgcGFnZUlEcykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OndlYlByb2Nlc3NTZXNzaW9uQ2hh
bmdlZChJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFBBTDo6U2Vzc2lvbklEIG5ld1Nlc3Np
b25JRCwgY29uc3QgVmVjdG9yPFBhZ2VJZGVudGlmaWVyPiYgcGFnZUlEcykKIHsKICAgICBhdXRv
IGNvbm5lY3Rpb25JRCA9IGNvbm5lY3Rpb24udW5pcXVlSUQoKTsKICAgICBBU1NFUlQobV9zZXNz
aW9uQnlDb25uZWN0aW9uLmNvbnRhaW5zKGNvbm5lY3Rpb25JRCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDYwMzBmOGZmYWFiZTE1MDA4
ZjNhZDI2ZmMyM2RiODA2Mzc5ZTkxZWUuLjExMTYzNWQyZTIwMDgxMjJkNzgyNWJjOTYzNzlhYzg5
NjdkYTE4ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSURCS2V5RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
SURCU2VydmVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXJ2aWNlV29ya2VyVHlw
ZXMuaD4KQEAgLTEzNyw4ICsxMzgsNiBAQCBwdWJsaWM6CiAgICAgdXNpbmcgTmF2aWdhdGVkVG9E
b21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBEb21haW5Jbk5l
ZWRPZlN0b3JhZ2VBY2Nlc3MgPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2lu
ZyBPcGVuZXJEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1c2luZyBP
cGVuZXJQYWdlSUQgPSB1aW50NjRfdDsKLSAgICB1c2luZyBQYWdlSUQgPSB1aW50NjRfdDsKICAg
ICB1c2luZyBGcmFtZUlEID0gdWludDY0X3Q7CiAKICAgICBOZXR3b3JrUHJvY2VzcyhBdXhpbGlh
cnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYpOwpAQCAtMTkxLDkgKzE5MCw5IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gRGlhZ25vc3RpYyBtZXNzYWdl
cyBsb2dnaW5nLgotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qgd2ViUGFn
ZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdl
YkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhS
ZXN1bHQodWludDY0X3Qgd2ViUGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0
cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZSwg
V2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKHVpbnQ2NF90IHdlYlBhZ2VJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBT
dHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNpZ25pZmljYW50Rmln
dXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNz
YWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7CisgICAgdm9pZCBs
b2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6
RGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOworICAg
IHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91
YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNh
bXBsZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBz
b3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YSgpIGNvbnN0OwpAQCAtMjU5LDcgKzI1OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25J
RCwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdGVkVG9Eb21haW4mLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRp
cmVjdEZyb20oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVk
aXJlY3RlZEZyb21Eb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgcmVnaXN0cmFibGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklELCBPcHRp
b25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiYpPiYmKTsKLSAgICB2b2lk
IGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRvRG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFU
cmFuc2Zlcjo6RmxhZz4sIHVpbnQ2NF90IHBhZ2VJRCk7CisgICAgdm9pZCBkaWRDb21taXRDcm9z
c1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
T3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXRDcm9zc1NpdGVMb2FkV2l0
aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFi
bGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlc2V0Q3Jvc3NTaXRlTG9h
ZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogI2VuZGlmCkBAIC0yNzIsMTAgKzI3MSwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRTZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0aW9uKFBBTDo6U2Vzc2lv
bklELCBib29sKTsKICAgICBib29sIHNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFM
OjpTZXNzaW9uSUQpIGNvbnN0OwogCi0gICAgdm9pZCB3ZWJQYWdlV2FzQWRkZWQoSVBDOjpDb25u
ZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3Qgb2xkUGFn
ZUlEKTsKLSAgICB2b2lkIHdlYlBhZ2VXYXNSZW1vdmVkKElQQzo6Q29ubmVjdGlvbiYsIFBBTDo6
U2Vzc2lvbklELCB1aW50NjRfdCBwYWdlSUQpOworICAgIHZvaWQgd2ViUGFnZVdhc0FkZGVkKElQ
Qzo6Q29ubmVjdGlvbiYsIFBBTDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwg
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgd2ViUGFnZVdhc1JlbW92ZWQoSVBD
OjpDb25uZWN0aW9uJiwgUEFMOjpTZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsK
ICAgICB2b2lkIHdlYlByb2Nlc3NXYXNEaXNjb25uZWN0ZWQoSVBDOjpDb25uZWN0aW9uJik7Ci0g
ICAgdm9pZCB3ZWJQcm9jZXNzU2Vzc2lvbkNoYW5nZWQoSVBDOjpDb25uZWN0aW9uJiwgUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NT
ZXNzaW9uQ2hhbmdlZChJUEM6OkNvbm5lY3Rpb24mLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgVmVj
dG9yPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiYpOwogICAgIHZvaWQgZ2V0TG9jYWxTdG9yYWdl
T3JpZ2luRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7CiAK
ICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggOGFmMTcz
NTE4ZmE3Mjk1MTkwZjA0NTdkNDBhMmM5ZWYxZTQzMmZjZi4uNmQwNjI0MDgzZjc1ZjMzMjcyNmFi
M2ZiMjFkYzFkMmNmZjkwYzIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMzEsNyArMTMxLDcgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldFRvcEZy
YW1lVW5pcXVlUmVkaXJlY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFp
biByZWRpcmVjdGVkVG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgU2V0VG9wRnJhbWVVbmlxdWVS
ZWRpcmVjdEZyb20oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiB0b3BGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVkaXJl
Y3RlZEZyb21Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDYWNoZU1heEFnZUNhcEZvclBy
ZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCi0g
ICAgRGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBmcm9tRG9tYWluLCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0
ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIHVp
bnQ2NF90IHBhZ2VJRCkKKyAgICBEaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2Zl
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIGZy
b21Eb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvRG9tYWluLCBPcHRpb25TZXQ8
V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gbmF2aWdhdGlv
bkRhdGFUcmFuc2ZlciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIFNldENy
b3NzU2l0ZUxvYWRXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZnJvbURvbWFpbiwgV2ViQ29yZTo6
UmVnaXN0cmFibGVEb21haW4gdG9Eb21haW4pIC0+ICgpIEFzeW5jCiAgICAgUmVzZXRDcm9zc1Np
dGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSAtPiAoKSBBc3luYwogICAgIERlbGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gZG9tYWluLCBib29sIGlu
Y2x1ZGVIdHRwT25seUNvb2tpZXMpIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMu
Y3BwCmluZGV4IDU4YWFjYjk5M2RiOThhY2NkYTY1MjJkOTU2NGM5ZWFhODk0YmRhODEuLjMzY2Rj
NGQxN2RiZTJlMDg2NmUzNjEyZWYyMjc2MWEzODIzODA1OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuY3BwCkBAIC0xMDcsOCArMTA3LDExIEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBh
cmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LndlYlBhZ2VJRCkpCisg
ICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHdlYlBhZ2VJRDsKKyAgICBkZWNvZGVyID4+IHdl
YlBhZ2VJRDsKKyAgICBpZiAoIXdlYlBhZ2VJRCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJlc3VsdC53ZWJQYWdlSUQgPSAqd2ViUGFnZUlEOwogCiAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShyZXN1bHQud2ViRnJhbWVJRCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApp
bmRleCBmZTI2NTM2ZjIxYzNlZTlhNzAxODk4Y2EwNTkzMmQ1NWQxNWQzNGIwLi4wZDRmOWEyYTFh
ZWE1Yzg4MDBhNWIxM2ZlMzdlMDE3YmJkYzQ5NTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNzQsMTgg
KzE3NCwxOCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQoKQogICAgICAgICBt
X25ldHdvcmtMb2FkQ2hlY2tlci0+Y2hlY2soUmVzb3VyY2VSZXF1ZXN0IHsgb3JpZ2luYWxSZXF1
ZXN0KCkgfSwgdGhpcywgW3RoaXNdIChhdXRvJiYgcmVzdWx0KSB7CiAgICAgICAgICAgICBXVEY6
OnN3aXRjaE9uKHJlc3VsdCwKICAgICAgICAgICAgICAgICBbdGhpc10gKFJlc291cmNlRXJyb3Im
IGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0
YXJ0OiBlcnJvciBjaGVja2luZyAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBp
c1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVkLCBlcnJvci5kb21haW4gPSAle3B1Ymxp
Y31zLCBlcnJvci5jb2RlID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNv
dXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQsIGVy
cm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IGVycm9yIGNoZWNraW5n
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwg
cGFyZW50UElEID0gJWQsIGVycm9yLmRvbWFpbiA9ICV7cHVibGljfXMsIGVycm9yLmNvZGUgPSAl
ZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgdGhpcy0+aXNNYWluUmVzb3VyY2UoKSwg
dGhpcy0+aXNTeW5jaHJvbm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElELCBlcnJvci5kb21h
aW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAgICAgICAgICAg
ICAgIGlmICghZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHRoaXMtPmRpZEZhaWxMb2FkaW5nKGVycm9yKTsKICAgICAgICAgICAgICAgICB9LAogICAgICAg
ICAgICAgICAgIFt0aGlzXSAoTmV0d29ya0xvYWRDaGVja2VyOjpSZWRpcmVjdGlvblRyaXBsZXQm
IHRyaXBsZXQpIHsKICAgICAgICAgICAgICAgICAgICAgdGhpcy0+bV9pc1dhaXRpbmdDb250aW51
ZVdpbGxTZW5kUmVxdWVzdEZvckNhY2hlZFJlZGlyZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICAgICAgdGhpcy0+d2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKHRyaXBsZXQucmVx
dWVzdCksIFdURk1vdmUodHJpcGxldC5yZWRpcmVjdFJlcXVlc3QpLCBXVEZNb3ZlKHRyaXBsZXQu
cmVkaXJlY3RSZXNwb25zZSkpOwotICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJzdGFydDogc3ludGhldGljIHJlZGlyZWN0IHNlbnQgYmVjYXVzZSByZXF1ZXN0IFVS
TCB3YXMgbW9kaWZpZWQgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5j
aHJvbm91cyA9ICVkLCBwYXJlbnRQSUQgPSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBt
X3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHRoaXMtPmlz
TWFpblJlc291cmNlKCksIHRoaXMtPmlzU3luY2hyb25vdXMoKSwgbV9wYXJhbWV0ZXJzLnBhcmVu
dFBJRCk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInN0YXJ0
OiBzeW50aGV0aWMgcmVkaXJlY3Qgc2VudCBiZWNhdXNlIHJlcXVlc3QgVVJMIHdhcyBtb2RpZmll
ZCAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQs
IHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9w
YXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01h
aW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQ
SUQpOwogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgW3RoaXNdIChSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMtPmNhblVz
ZUNhY2hlKHJlcXVlc3QpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJzdGFydDogQ2hlY2tpbmcgY2FjaGUgZm9yIHJlc291cmNlIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCwgcGFyZW50UElEID0g
JWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1f
cGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlzLT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5
bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciBy
ZXNvdXJjZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3Vz
ID0gJWQsIHBhcmVudFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQo
KSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCB0aGlz
LT5pc01haW5SZXNvdXJjZSgpLCB0aGlzLT5pc1N5bmNocm9ub3VzKCksIG1fcGFyYW1ldGVycy5w
YXJlbnRQSUQpOwogICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy0+cmV0cmlldmVDYWNoZUVu
dHJ5KHJlcXVlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgICAgICB9CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2Fk
ZXI6OnN0YXJ0KCkKICAgICB9CiAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGF0IGNvZGUgcGF0aCBv
bmNlIG1fbmV0d29ya0xvYWRDaGVja2VyIGlzIHVzZWQgZm9yIGFsbCBuZXR3b3JrIGxvYWRzLgog
ICAgIGlmIChjYW5Vc2VDYWNoZShvcmlnaW5hbFJlcXVlc3QoKSkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVu
dFBJRCA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpLCBtX3BhcmFtZXRlcnMucGFyZW50UElEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgic3RhcnQ6IENoZWNraW5nIGNhY2hlIGZvciByZXNvdXJjZSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
LCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQsIHBhcmVudFBJRCA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCksIG1fcGFyYW1ldGVycy5wYXJlbnRQSUQpOwogICAgICAgICByZXRyaWV2ZUNhY2hl
RW50cnkob3JpZ2luYWxSZXF1ZXN0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjI3
LDEzICsyMjcsMTMgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVF
bnRyeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgICAgIGxvYWRlci0+bG9n
U2xvd0NhY2hlUmV0cmlldmVJZk5lZWRlZChpbmZvKTsKIAogICAgICAgICBpZiAoIWVudHJ5KSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6
IFJlc291cmNlIG5vdCBpbiBjYWNoZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVk
LCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0
ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgp
LCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
cmV0cmlldmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBub3QgaW4gY2FjaGUgKHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwg
aXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAg
ICAgICAgbG9hZGVyLT5zdGFydE5ldHdvcmtMb2FkKFdURk1vdmUocmVxdWVzdCksIEZpcnN0TG9h
ZDo6WWVzKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChlbnRyeS0+aGFzUmVhY2hlZFByZXZh
bGVudFJlc291cmNlQWdlQ2FwKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJl
c291cmNlIGFnZSBjYXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0
ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5j
aHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJG
cmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5j
aHJvbm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeTogUmVzb3VyY2UgaGFzIHJlYWNoZWQgcHJldmFsZW50IHJlc291cmNlIGFnZSBj
YXAgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNl
SUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVk
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNo
cm9ub3VzKCkpOwogICAgICAgICAgICAgbV9jYWNoZUVudHJ5Rm9yTWF4QWdlQ2FwVmFsaWRhdGlv
biA9IFdURk1vdmUoZW50cnkpOwogICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJldmFsaWRh
dGlvblJlcXVlc3QgPSBvcmlnaW5hbFJlcXVlc3QoKTsKICAgICAgICAgICAgIGxvYWRlci0+c3Rh
cnROZXR3b3JrTG9hZChXVEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBGaXJzdExvYWQ6Olll
cyk7CkBAIC0yNDEsMjEgKzI0MSwyMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0
cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICAgICAg
fQogI2VuZGlmCiAgICAgICAgIGlmIChlbnRyeS0+cmVkaXJlY3RSZXF1ZXN0KCkpIHsKLSAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogSGFuZGxp
bmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2UgPSAlZCwgaXNTeW5jaHJv
bm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2Fj
aGVFbnRyeTogSGFuZGxpbmcgcmVkaXJlY3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3VyY2Ug
PSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50
NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBp
c01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICAgICAgbG9hZGVyLT5k
aXNwYXRjaFdpbGxTZW5kUmVxdWVzdEZvckNhY2hlRW50cnkoV1RGTW92ZShyZXF1ZXN0KSwgV1RG
TW92ZShlbnRyeSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
IChsb2FkZXItPm1fcGFyYW1ldGVycy5uZWVkc0NlcnRpZmljYXRlSW5mbyAmJiAhZW50cnktPnJl
c3BvbnNlKCkuY2VydGlmaWNhdGVJbmZvKCkpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTogUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSByZXF1
aXJlZCBjZXJ0aWZpY2F0ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1
NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNvdXJjZSA9ICVkLCBpc1N5
bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01haW5SZXNvdXJjZSgpLCBpc1N5
bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgicmV0cmll
dmVDYWNoZUVudHJ5OiBSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHJlcXVpcmVkIGNlcnRpZmljYXRl
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCki
LCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFt
ZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJv
bm91cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+c3RhcnROZXR3b3JrTG9hZChXVEZNb3ZlKHJl
cXVlc3QpLCBGaXJzdExvYWQ6Olllcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSB8fCByZXF1ZXN0LmNhY2hlUG9s
aWN5KCkgPT0gV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlZnJlc2hBbnlD
YWNoZURhdGEpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeTogVmFsaWRhdGluZyBjYWNoZSBlbnRyeSAocGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5S
ZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJ
RCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBpc01h
aW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgicmV0cmlldmVDYWNoZUVudHJ5OiBWYWxpZGF0aW5nIGNhY2hlIGVudHJ5IChw
YWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0g
JSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMgPSAlZCkiLCBt
X3BhcmFtZXRlcnMud2ViUGFnZUlELnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlE
LCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllciwgaXNNYWluUmVzb3VyY2UoKSwgaXNTeW5jaHJvbm91
cygpKTsKICAgICAgICAgICAgIGxvYWRlci0+dmFsaWRhdGVDYWNoZUVudHJ5KFdURk1vdmUoZW50
cnkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJyZXRyaWV2ZUNhY2hlRW50cnk6IFJldHJpZXZlZCByZXNvdXJjZSBmcm9t
IGNhY2hlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNv
dXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzTWFpblJlc291cmNlID0gJWQsIGlzU3luY2hyb25vdXMg
PSAlZCkiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwg
bV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMo
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZlQ2FjaGVFbnRyeTog
UmV0cmlldmVkIHJlc291cmNlIGZyb20gY2FjaGUgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgaXNNYWluUmVzb3Vy
Y2UgPSAlZCwgaXNTeW5jaHJvbm91cyA9ICVkKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9V
SW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOwogICAgICAgICBsb2FkZXItPmRp
ZFJldHJpZXZlQ2FjaGVFbnRyeShXVEZNb3ZlKGVudHJ5KSk7CiAgICAgfSk7CiB9CkBAIC0yNjMs
NyArMjYzLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRy
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBGaXJzdExv
YWQgbG9hZCkKIHsKICAgICBpZiAobG9hZCA9PSBGaXJzdExvYWQ6OlllcykgewotICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBp
c01haW5SZXNvdXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndl
YlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVy
LCBpc01haW5SZXNvdXJjZSgpLCBpc1N5bmNocm9ub3VzKCkpOworICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBpc01haW5SZXNv
dXJjZSA9ICVkLCBpc1N5bmNocm9ub3VzID0gJWQpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50
b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZp
ZXIsIGlzTWFpblJlc291cmNlKCksIGlzU3luY2hyb25vdXMoKSk7CiAKICAgICAgICAgY29uc3Vt
ZVNhbmRib3hFeHRlbnNpb25zKCk7CiAKQEAgLTI4OSw3ICsyODksNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6c3RhcnROZXR3b3JrTG9hZChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBGaXJzdExvYQogICAgIH0KICAgICBpZiAoIW5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIFdU
RkxvZ0Fsd2F5cygiQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNz
aW9uIChpZD0lIiBQUkl1NjQgIikgdGhhdCBkb2VzIG5vdCBleGlzdC4iLCBwYXJhbWV0ZXJzLnNl
c3Npb25JRC5zZXNzaW9uSUQoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9X
RUQoInN0YXJ0TmV0d29ya0xvYWQ6IEF0dGVtcHRlZCB0byBjcmVhdGUgYSBOZXR3b3JrTG9hZCB3
aXRoIGEgc2Vzc2lvbiB0aGF0IGRvZXMgbm90IGV4aXN0IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIHNlc3Npb25J
RD0lIiBQUkl1NjQgIikiLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2Vi
RnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIHBhcmFtZXRlcnMuc2Vzc2lvbklELnNl
c3Npb25JRCgpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRO
ZXR3b3JrTG9hZDogQXR0ZW1wdGVkIHRvIGNyZWF0ZSBhIE5ldHdvcmtMb2FkIHdpdGggYSBzZXNz
aW9uIHRoYXQgZG9lcyBub3QgZXhpc3QgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgc2Vzc2lvbklEPSUiIFBSSXU2
NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndl
YkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBwYXJhbWV0ZXJzLnNlc3Npb25JRC5z
ZXNzaW9uSUQoKSk7CiAgICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3MoKS5sb2dE
aWFnbm9zdGljTWVzc2FnZShtX3BhcmFtZXRlcnMud2ViUGFnZUlELCBXZWJDb3JlOjpEaWFnbm9z
dGljTG9nZ2luZ0tleXM6OmludGVybmFsRXJyb3JLZXkoKSwgV2ViQ29yZTo6RGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjppbnZhbGlkU2Vzc2lvbklES2V5KCksIFdlYkNvcmU6OlNob3VsZFNhbXBsZTo6
Tm8pOwogICAgICAgICBkaWRGYWlsTG9hZGluZyhpbnRlcm5hbEVycm9yKHJlcXVlc3QudXJsKCkp
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjk4LDcgKzI5OCw3IEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlTG9hZGVyOjpzdGFydE5ldHdvcmtMb2FkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIEZp
cnN0TG9hCiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gV1RGTW92ZShyZXF1ZXN0KTsKICAgICBt
X25ldHdvcmtMb2FkID0gc3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrTG9hZD4oKnRoaXMsICZtX2Nv
bm5lY3Rpb24tPmJsb2JSZWdpc3RyeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqbmV0d29ya1Nl
c3Npb24pOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RhcnROZXR3b3JrTG9hZDog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgZGVzY3JpcHRpb24gPSAle3B1YmxpY31zKSIsIG1fcGFyYW1ldGVycy53
ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmll
ciwgbV9uZXR3b3JrTG9hZC0+ZGVzY3JpcHRpb24oKS51dGY4KCkuZGF0YSgpKTsKKyAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJzdGFydE5ldHdvcmtMb2FkOiAocGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBkZXNj
cmlwdGlvbiA9ICV7cHVibGljfXMpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIsIG1fbmV0
d29ya0xvYWQtPmRlc2NyaXB0aW9uKCkudXRmOCgpLmRhdGEoKSk7CiB9CiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVzdWx0KQpAQCAtMzIyLDcgKzMy
Miw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjbGVhbnVwKExvYWRSZXN1bHQgcmVz
dWx0KQogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQoRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIFJFTEVBU0VfTE9HKExvYWRpbmcs
ICJDb252ZXJ0aW5nIE5ldHdvcmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1
NjQgIiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3Vy
Y2VJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIpOworICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJDb252ZXJ0aW5nIE5ldHdv
cmtSZXNvdXJjZUxvYWRlciAlcCB0byBkb3dubG9hZCAlIiBQUkl1NjQgIiAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHRoaXMsIGRvd25sb2FkSUQuZG93bmxvYWRJRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZUlE
LnRvVUludDY0KCksIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
Zmllcik7CiAgICAgCiAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSByZXNvdXJjZSBjYW1l
IGZyb20gdGhlIGRpc2sgY2FjaGUuCiAgICAgaWYgKCFtX25ldHdvcmtMb2FkKSB7CkBAIC0zNDAs
NyArMzQwLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmFib3J0KCkKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiYWJv
cnQ6IENhbmNlbGluZyByZXNvdXJjZSBsb2FkIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwKLSAgICAgICAgbV9w
YXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVy
cy5pZGVudGlmaWVyKTsKKyAgICAgICAgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAg
ICAgaWYgKG1fcGFyYW1ldGVycy5vcHRpb25zLmtlZXBBbGl2ZSAmJiBtX3Jlc3BvbnNlLmlzTnVs
bCgpICYmICFtX2lzS2VwdEFsaXZlKSB7CiAgICAgICAgIG1faXNLZXB0QWxpdmUgPSB0cnVlOwpA
QCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpzaG91bGRJbnRl
cnJ1cHRMb2FkRm9yQ1NQRnJhbWVBbmNlc3RvcnNPclhGcmFtZU9wdGlvCiAKIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VSZXNwb25zZSYmIHJl
Y2VpdmVkUmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3Bh
cmFtZXRlcnMuaWRlbnRpZmllciwgcmVjZWl2ZWRSZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpLCBy
ZWNlaXZlZFJlc3BvbnNlLmV4cGVjdGVkQ29udGVudExlbmd0aCgpKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwg
ZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGh0dHBTdGF0
dXNDb2RlID0gJWQsIGxlbmd0aCA9ICUiIFBSSWQ2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQsIG1fcGFyYW1ldGVycy5pZGVu
dGlmaWVyLCByZWNlaXZlZFJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCksIHJlY2VpdmVkUmVzcG9u
c2UuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOwogCiAgICAgbV9yZXNwb25zZSA9IFdURk1vdmUo
cmVjZWl2ZWRSZXNwb25zZSk7CiAKQEAgLTUwNSw3ICs1MDUsNyBAQCB2b2lkIE5ldHdvcmtSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZWNlaXZl
ZFJlc3Bvbgogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIGludCByZXBvcnRlZEVuY29kZWREYXRhTGVuZ3RoKQog
ewogICAgIGlmICghbV9udW1CeXRlc1JlY2VpdmVkKQotICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRSZWNlaXZlQnVmZmVyOiBTdGFydGVkIHJlY2VpdmluZyBkYXRhIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZUJ1ZmZlcjogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZy
YW1lSUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyKTsKICAgICBtX251bUJ5dGVzUmVjZWl2ZWQg
Kz0gYnVmZmVyLT5zaXplKCk7CiAKICAgICBBU1NFUlQoIW1fY2FjaGVFbnRyeUZvclZhbGlkYXRp
b24pOwpAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQnVmZmVyKFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBpbnQgcmVwCiAKIHZvaWQg
TmV0d29ya1Jlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEZpbmlzaExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0aCA9ICV6ZCkiLCBtX3Bh
cmFtZXRlcnMud2ViUGFnZUlELCBtX3BhcmFtZXRlcnMud2ViRnJhbWVJRCwgbV9wYXJhbWV0ZXJz
LmlkZW50aWZpZXIsIG1fbnVtQnl0ZXNSZWNlaXZlZCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiZGlkRmluaXNoTG9hZGluZzogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1f
cGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1lSUQs
IG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBtX251bUJ5dGVzUmVjZWl2ZWQpOwogCiAgICAgaWYg
KHNob3VsZENhcHR1cmVFeHRyYU5ldHdvcmtMb2FkTWV0cmljcygpKQogICAgICAgICBtX2Nvbm5l
Y3Rpb24tPmFkZE5ldHdvcmtMb2FkSW5mb3JtYXRpb25NZXRyaWNzKGlkZW50aWZpZXIoKSwgbmV0
d29ya0xvYWRNZXRyaWNzKTsKQEAgLTU2OSw3ICs1NjksNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdv
cmtMbwogCiB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbExvYWRpbmcoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
RmFpbExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBpc0NhbmNlbGxhdGlv
biA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIsIG1fcGFyYW1ldGVy
cy53ZWJQYWdlSUQsIG1fcGFyYW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRp
ZmllciwgZXJyb3IuaXNUaW1lb3V0KCksIGVycm9yLmlzQ2FuY2VsbGF0aW9uKCksIGVycm9yLmlz
QWNjZXNzQ29udHJvbCgpLCBlcnJvci5lcnJvckNvZGUoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkRmFpbExvYWRpbmc6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGlzVGltZW91dCA9ICVkLCBp
c0NhbmNlbGxhdGlvbiA9ICVkLCBpc0FjY2Vzc0NvbnRyb2wgPSAlZCwgZXJyQ29kZSA9ICVkKSIs
IG1fcGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbV9wYXJhbWV0ZXJzLndlYkZyYW1l
SUQsIG1fcGFyYW1ldGVycy5pZGVudGlmaWVyLCBlcnJvci5pc1RpbWVvdXQoKSwgZXJyb3IuaXND
YW5jZWxsYXRpb24oKSwgZXJyb3IuaXNBY2Nlc3NDb250cm9sKCksIGVycm9yLmVycm9yQ29kZSgp
KTsKIAogICAgIGlmIChzaG91bGRDYXB0dXJlRXh0cmFOZXR3b3JrTG9hZE1ldHJpY3MoKSkKICAg
ICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVOZXR3b3JrTG9hZEluZm9ybWF0aW9uKGlkZW50aWZp
ZXIoKSk7CkBAIC03MzEsNyArNzMxLDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QKICAgICAg
ICAgfQogICAgIH0KIAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNvbnRpbnVlV2lsbFNl
bmRSZXF1ZXN0OiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQsIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlELCBtX3BhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiY29udGludWVXaWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRC50b1VJbnQ2NCgpLCBtX3BhcmFtZXRlcnMud2ViRnJh
bWVJRCwgbV9wYXJhbWV0ZXJzLmlkZW50aWZpZXIpOwogCiAgICAgbV9pc0FsbG93ZWRUb0Fza1Vz
ZXJGb3JDcmVkZW50aWFscyA9IGlzQWxsb3dlZFRvQXNrVXNlckZvckNyZWRlbnRpYWxzOwogCkBA
IC05ODgsNiArOTg4LDExIEBAIHN0YXRpYyBTdHJpbmcgZXNjYXBlSURGb3JKU09OKGNvbnN0IE9w
dGlvbmFsPHVpbnQ2NF90PiYgdmFsdWUpCiAgICAgcmV0dXJuIHZhbHVlID8gU3RyaW5nOjpudW1i
ZXIodmFsdWUudmFsdWUoKSkgOiBTdHJpbmcoIk5vbmUiX3MpOwogfTsKIAorc3RhdGljIFN0cmlu
ZyBlc2NhcGVJREZvckpTT04oY29uc3QgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+JiB2YWx1ZSkK
K3sKKyAgICByZXR1cm4gdmFsdWUgPyBTdHJpbmc6Om51bWJlcih2YWx1ZS0+dG9VSW50NjQoKSkg
OiBTdHJpbmcoIk5vbmUiX3MpOworfTsKKwogdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6Omxv
Z0Nvb2tpZUluZm9ybWF0aW9uKCkgY29uc3QKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29va2ll
SW5mb3JtYXRpb24obV9jb25uZWN0aW9uLCBzZXNzaW9uSUQoKSkpOwpAQCAtOTk4LDcgKzEwMDMs
NyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6bG9nQ29va2llSW5mb3JtYXRpb24oKSBj
b25zdAogICAgIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKG1fY29ubmVjdGlvbiwgIk5ldHdvcmtSZXNv
dXJjZUxvYWRlciIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCo+KHRoaXMpLCAqbmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBvcmlnaW5hbFJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygp
LCBTYW1lU2l0ZUluZm86OmNyZWF0ZShvcmlnaW5hbFJlcXVlc3QoKSksIG9yaWdpbmFsUmVxdWVz
dCgpLnVybCgpLCBvcmlnaW5hbFJlcXVlc3QoKS5odHRwUmVmZXJyZXIoKSwgZnJhbWVJRCgpLCBw
YWdlSUQoKSwgaWRlbnRpZmllcigpKTsKIH0KIAotc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tp
ZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1l
SUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlm
aWVyKQorc3RhdGljIHZvaWQgbG9nQmxvY2tlZENvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25z
dCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFNh
bWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVudGlm
aWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFTU0VS
VChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNvbm5l
Y3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDI1LDcg
KzEwMzAsNyBAQCBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5mb3JtYXRpb24oTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3RpbwogI3VuZGVmIExPQ0FMX0xPR19JRl9B
TExPV0VECiB9CiAKLXN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uSW50ZXJuYWwoTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm5lY3Rpb24sIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIGNvbnN0IHZvaWQqIGxvZ2dlZE9iamVjdCwgY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBuZXR3b3JrU3RvcmFnZVNlc3Npb24sIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0
aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpCitz
dGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzJiBjb25uZWN0aW9uLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lk
KiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgbmV0
d29ya1N0b3JhZ2VTZXNzaW9uLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OlNhbWVTaXRlSW5mbyYgc2FtZVNpdGVJbmZvLCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiByZWZlcnJlciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFBhZ2VJZGVu
dGlmaWVyPiBwYWdlSUQsIE9wdGlvbmFsPHVpbnQ2NF90PiBpZGVudGlmaWVyKQogewogICAgIEFT
U0VSVChOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OnNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9uKGNv
bm5lY3Rpb24sIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5zZXNzaW9uSUQoKSkpOwogCkBAIC0xMDg2
LDcgKzEwOTEsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb29raWVJbmZvcm1hdGlvbkludGVybmFsKE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uZWN0aQogI3VuZGVmIExPQ0FMX0xPR19J
Rl9BTExPV0VECiB9CiAKLXZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZv
cm1hdGlvbihOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIG5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKK3ZvaWQgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpsb2dDb29raWVJbmZvcm1hdGlvbihOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2VzcyYgY29ubmVjdGlvbiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9p
ZCogbG9nZ2VkT2JqZWN0LCBjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIG5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBTYW1lU2l0ZUluZm8mIHNh
bWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIE9wdGlv
bmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBP
cHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQoc2hvdWxkTG9nQ29v
a2llSW5mb3JtYXRpb24oY29ubmVjdGlvbiwgbmV0d29ya1N0b3JhZ2VTZXNzaW9uLnNlc3Npb25J
RCgpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IGE4YTMwMDVjMTQyMzA2MTM4ODc2ODIxYTQzYTA1N2EwYjZm
M2Q3ZmMuLmE4ZjZkMzE1Nzk4YzRhZGZmZjk5ZGE3ZTgyZmZjODMzYTk2NzY4M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIu
aApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLnNlc3Npb25JRDsgfQogICAgIFJlc291cmNl
TG9hZElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5p
ZGVudGlmaWVyOyB9CiAgICAgdWludDY0X3QgZnJhbWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy53ZWJGcmFtZUlEOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLndlYlBhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy53ZWJQYWdlSUQ7IH0KIAogICAg
IHN0cnVjdCBTeW5jaHJvbm91c0xvYWREYXRhOwogCkBAIC0xMTAsNyArMTEwLDcgQEAgcHVibGlj
OgogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykgJiYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgc3RhdGljIGJvb2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24oTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBjb25zdCBQQUw6OlNlc3Npb25JRCYpOwotICAg
IHN0YXRpYyB2b2lkIGxvZ0Nvb2tpZUluZm9ybWF0aW9uKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkT2JqZWN0LCBj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmlu
ZyYgcmVmZXJyZXIsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDx1aW50NjRf
dD4gcGFnZUlELCBPcHRpb25hbDx1aW50NjRfdD4gaWRlbnRpZmllcik7CisgICAgc3RhdGljIHZv
aWQgbG9nQ29va2llSW5mb3JtYXRpb24oTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCB2b2lkKiBsb2dnZWRPYmplY3QsIGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyPiwgT3B0aW9uYWw8dWludDY0X3Q+IGlkZW50aWZpZXIpOwogI2VuZGlmCiAKICAgICB2
b2lkIGRpc2FibGVFeHRyYU5ldHdvcmtMb2FkTWV0cmljc0NhcHR1cmUoKSB7IG1fc2hvdWxkQ2Fw
dHVyZUV4dHJhTmV0d29ya0xvYWRNZXRyaWNzID0gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2
aWNlV29ya2VyRmV0Y2hUYXNrLmNwcAppbmRleCA5N2UwYjI0NDA3OGQ4MzJhZWRjZGQ4YTY3OTE4
NDE0ZjI4NzBjNjAyLi41NTNjYmFkMTliYzVhMTk3ZTA2MjUyNzUwZjI4MmNlM2IwNDE2ZmIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlckZldGNoVGFzay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwCkBAIC00NSw0MCArNDUs
NDAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZWRpcmVjdFJlc3Bv
bnNlOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdv
cmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSB7IHJlc3BvbnNlIH0s
IG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0
aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZFJlY2VpdmVS
ZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZldGNoVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5lZWRzQ29udGludWVEaWRS
ZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdl
czo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25z
ZSwgbmVlZHNDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgfSwgbV9pZGVudGlmaWVy
LmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZVJlc3BvbnNlIHsgcmVz
cG9uc2UsIG5lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlIH0sIG1faWRlbnRp
Zmllci5mZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6
OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgaW50NjRfdCBl
bmNvZGVkRGF0YUxlbmd0aCkKIHsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZURhdGEgeyBkYXRhLCBlbmNvZGVkRGF0
YUxlbmd0aCB9LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAg
IG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpE
aWRSZWNlaXZlRGF0YSB7IGRhdGEsIGVuY29kZWREYXRhTGVuZ3RoIH0sIG1faWRlbnRpZmllci5m
ZXRjaElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZFJl
Y2VpdmVGb3JtRGF0YShjb25zdCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiBmb3JtRGF0YSkKIHsK
LSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRj
aDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRl
bnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNl
cnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkUmVjZWl2ZUZvcm1EYXRhIHsgZm9ybURhdGEgfSwg
bV9pZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU2VydmljZVdvcmtlckZl
dGNoVGFzazo6ZGlkRmluaXNoKCkKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRG
aW5pc2hGZXRjaDogZmV0Y2hJZGVudGlmaWVyOiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50
aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+
c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9LCBt
X2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWRGaW5pc2ggeyB9
LCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
RmV0Y2hUYXNrOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIFJF
TEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoImRpZEZhaWxGZXRjaDogZmV0Y2hJZGVudGlmaWVy
OiAlcyIsIG1faWRlbnRpZmllci5mZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0Zjgo
KS5kYXRhKCkpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9pZGVudGlmaWVyLmZldGNoSWRlbnRp
Zmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZp
Y2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkRmFpbCB7IGVycm9yIH0sIG1faWRlbnRpZmllci5mZXRj
aElkZW50aWZpZXIpOwogfQogCiB2b2lkIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OmRpZE5vdEhh
bmRsZSgpCiB7CiAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkTm90SGFuZGxlRmV0Y2g6
IGZldGNoSWRlbnRpZmllcjogJXMiLCBtX2lkZW50aWZpZXIuZmV0Y2hJZGVudGlmaWVyLmxvZ2dp
bmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2Fn
ZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9pZGVudGlm
aWVyLmZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgbV9p
ZGVudGlmaWVyLmZldGNoSWRlbnRpZmllcik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCBkMzJjZDQ2Mzg5ZWMw
MjJiZmM1MDE0NWI3MzdlZjRjYWFlYzkzMjMxLi45MWZkYzcxNTk3MWQ3YjE5Y2JiOGI0MmM2NDdk
YjMwYzNhZmUyOWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Nl
cnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApA
QCAtMTU5LDcgKzE1OSw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzdGFydEZldGNo
KFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAgYXV0byogd29y
a2VyID0gc2VydmVyKCkuYWN0aXZlV29ya2VyRnJvbVJlZ2lzdHJhdGlvbklEKHNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyKTsKICAgICBpZiAoIXdvcmtlcikgewogICAgICAgICBT
V1NFUlZFUkNPTk5FQ1RJT05fUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgic3RhcnRGZXRj
aDogZmV0Y2hJZGVudGlmaWVyOiAlcyAtPiBEaWROb3RIYW5kbGUgYmVjYXVzZSBubyBhY3RpdmUg
d29ya2VyIiwgZmV0Y2hJZGVudGlmaWVyLmxvZ2dpbmdTdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsK
LSAgICAgICAgbV9jb250ZW50Q29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtl
ckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUgeyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQo
KSk7CisgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VX
b3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0g
d29ya2VyLT5pZGVudGlmaWVyKCk7CkBAIC0xNzAsMTMgKzE3MCwxMyBAQCB2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6c3RhcnRGZXRjaChTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRp
ZmllciBzZXJ2aQogCiAgICAgICAgIGlmICghc3VjY2VzcykgewogICAgICAgICAgICAgU1dTRVJW
RVJDT05ORUNUSU9OX1JFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoInN0YXJ0RmV0Y2g6IGZl
dGNoSWRlbnRpZmllcjogJXMgRGlkTm90SGFuZGxlIGJlY2F1c2Ugd29ya2VyIGRpZCBub3QgYmVj
b21lIGFjdGl2YXRlZCIsIGZldGNoSWRlbnRpZmllci5sb2dnaW5nU3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7Ci0gICAgICAgICAgICBtX2NvbnRlbnRDb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpT
ZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5vdEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmll
ci50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVz
c2FnZXM6OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJ
ZGVudGlmaWVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGF1
dG8qIHdvcmtlciA9IHNlcnZlcigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIp
OwogICAgICAgICBpZiAoIXdvcmtlcikgewotICAgICAgICAgICAgbV9jb250ZW50Q29ubmVjdGlv
bi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckNsaWVudEZldGNoOjpEaWROb3RIYW5kbGUg
eyB9LCBmZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRD
b25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyQ2xpZW50RmV0Y2g6OkRpZE5v
dEhhbmRsZSB7IH0sIGZldGNoSWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpz
dGFydEZldGNoKFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyIHNlcnZpCiAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJj4o
KmNvbnRleHRDb25uZWN0aW9uKS5zdGFydEZldGNoKG1fc2Vzc2lvbklELCBtX2NvbnRlbnRDb25u
ZWN0aW9uLmdldCgpLCB0aGlzLT5pZGVudGlmaWVyKCksIGZldGNoSWRlbnRpZmllciwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIHJlcXVlc3QsIG9wdGlvbnMsIGZvcm1EYXRhLCByZWZlcnJlcik7
CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFNXU0VSVkVSQ09OTkVDVElP
Tl9SRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKCJzdGFydEZldGNoOiBmZXRjaElkZW50aWZp
ZXI6ICVzIERpZE5vdEhhbmRsZSBiZWNhdXNlIGZhaWxlZCB0byBydW4gc2VydmljZSB3b3JrZXIi
LCBmZXRjaElkZW50aWZpZXIubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAg
ICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3Jr
ZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0
KCkpOworICAgICAgICAgICAgICAgIG1fY29udGVudENvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6
OlNlcnZpY2VXb3JrZXJDbGllbnRGZXRjaDo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlm
aWVyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCmluZGV4IGM3ZjM4NmIz
ZDdjMzE0NTU4MGYyYWMwZTBlMzUyZWE2Yjg3MTU1YzEuLjhiYmMxNjk3ODU2MGU0NDYzMjIxZGY3
M2FjYjEwODc2MmFiNzY5YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIk5ldHdv
cmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlU3RvcmFnZS5oIgogI2luY2x1
ZGUgIlNoYXJlYWJsZVJlc291cmNlLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0
Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KQEAgLTg0
LDcgKzg1LDcgQEAgZW51bSBjbGFzcyBVc2VEZWNpc2lvbiB7CiAgICAgTm9EdWVUb0V4cGlyZWRS
ZWRpcmVjdAogfTsKIAotdXNpbmcgR2xvYmFsRnJhbWVJRCA9IHN0ZDo6cGFpcjx1aW50NjRfdCAv
KndlYlBhZ2VJRCovLCB1aW50NjRfdCAvKndlYkZyYW1lSUQqLz47Cit1c2luZyBHbG9iYWxGcmFt
ZUlEID0gc3RkOjpwYWlyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCAvKndlYkZy
YW1lSUQqLz47CiAKIGNsYXNzIENhY2hlIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FjaGU+IHsKIHB1
YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya0RhdGFUYXNrQ29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2Ev
TmV0d29ya0RhdGFUYXNrQ29jb2EuaAppbmRleCA5NjVjNmZhNjY0YmNkMTU1Zjc2Y2RiM2I0ZDcz
MjZlZWUwM2U5MTg4Li4yZGQwZTdkNDZiYzcxOWU5NmZhMTUwNzRmZWQwMGIxYzg4NjY1NjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrRGF0YVRhc2tDb2NvYS5oCkBAIC00Miw3ICs0Miw3IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9u
Q29jb2E7CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDb2NvYSBmaW5hbCA6IHB1YmxpYyBOZXR3b3Jr
RGF0YVRhc2sgewogICAgIGZyaWVuZCBjbGFzcyBOZXR3b3JrU2Vzc2lvbkNvY29hOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUoTmV0d29ya1Nlc3Npb24m
IHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJ
RCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdl
YkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGlu
Z1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFBy
ZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWlu
RnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3Jr
QWN0aXZpdHlUcmFja2VyKQorICAgIHN0YXRpYyBSZWY8TmV0d29ya0RhdGFUYXNrPiBjcmVhdGUo
TmV0d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmlu
Z1BvbGljeSBzaG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZm
aW5nUG9saWN5IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5l
Y3RPbmx5LCBib29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxO
ZXR3b3JrQWN0aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTmV0d29ya0RhdGFUYXNrQ29jb2Eoc2Vzc2lvbiwg
Y2xpZW50LCByZXF1ZXN0LCBmcmFtZUlELCBwYWdlSUQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LCBzaG91bGRDb250ZW50U25pZmYsIHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBzaG91bGRD
bGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBzaG91bGRQcmVjb25uZWN0T25seSwg
ZGF0YVRhc2tJc0Zvck1haW5GcmFtZU5hdmlnYXRpb24sIG5ldHdvcmtBY3Rpdml0eVRyYWNrZXIp
KTsKICAgICB9CkBAIC03MCwxMiArNzAsMTIgQEAgcHVibGljOgogICAgIFdlYkNvcmU6Ok5ldHdv
cmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKCkgeyByZXR1cm4gbV9uZXR3b3JrTG9h
ZE1ldHJpY3M7IH0KIAogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2Zy
YW1lSUQ7IH07Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7
IH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4g
bV9wYWdlSUQ7IH07CiAKICAgICBTdHJpbmcgZGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5l
dHdvcmtEYXRhVGFza0NsaWVudCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSwgV2ViQ29yZTo6Q29udGVu
dEVuY29kaW5nU25pZmZpbmdQb2xpY3ksIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNU
b0hUVFBSZWRpcmVjdCwgUHJlY29ubmVjdE9ubHksIGJvb2wgZGF0YVRhc2tJc0Zvck1haW5GcmFt
ZU5hdmlnYXRpb24sIE9wdGlvbmFsPE5ldHdvcmtBY3Rpdml0eVRyYWNrZXI+KTsKKyAgICBOZXR3
b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYsIE5ldHdvcmtEYXRhVGFza0NsaWVudCYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgV2Vi
Q29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5LCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlm
ZmluZ1BvbGljeSwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
LCBQcmVjb25uZWN0T25seSwgYm9vbCBkYXRhVGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwg
T3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJhY2tlcj4pOwogCiAgICAgYm9vbCB0cnlQYXNzd29y
ZEJhc2VkQXV0aGVudGljYXRpb24oY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYpOwogICAgIHZvaWQgYXBwbHlTbmlmZmlu
Z1BvbGljaWVzQW5kQmluZFJlcXVlc3RUb0luZmVyZmFjZUlmTmVlZGVkKF9fc3Ryb25nIE5TVVJM
UmVxdWVzdComLCBib29sIHNob3VsZENvbnRlbnRTbmlmZiwgYm9vbCBzaG91bGRDb250ZW50RW5j
b2RpbmdTbmlmZik7CkBAIC05Myw3ICs5Myw3IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5T
VVJMU2Vzc2lvbkRhdGFUYXNrPiBtX3Rhc2s7CiAgICAgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRy
aWNzIG1fbmV0d29ya0xvYWRNZXRyaWNzOwogICAgIHVpbnQ2NF90IG1fZnJhbWVJRDsKLSAgICB1
aW50NjRfdCBtX3BhZ2VJRDsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX3BhZ2VJRDsK
IAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgYm9vbCBtX2hhc0Jl
ZW5TZXRUb1VzZVN0YXRlbGVzc0Nvb2tpZVN0b3JhZ2UgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29j
b2EubW0KaW5kZXggMzVlNDQzYjllZTkxODA1N2FkMzRkZWYwNjhhODk5YmVhMDY3YWRmNi4uMjhh
MDVlODBkYjY4NWFmNjdiMjg0Yzg0MjMxNzE5NGY5N2U4N2UzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29h
Lm1tCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlVGFza1dpdGhGaXJzdFBh
cnR5Rm9yU2FtZVNpdGVDb29raWVzKE5TVVJMU2Vzc2lvbkRhdGFUYXNrKiB0YXMKICNlbmRpZgog
fQogCi1OZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0d29ya0RhdGFUYXNrQ29jb2EoTmV0d29ya1Nl
c3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYgY2xpZW50LCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHBhZ2VJRCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kg
c3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIFdlYkNvcmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeSBz
aG91bGRDb250ZW50U25pZmYsIFdlYkNvcmU6OkNvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5
IHNob3VsZENvbnRlbnRFbmNvZGluZ1NuaWZmLCBib29sIHNob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3QsIFByZWNvbm5lY3RPbmx5IHNob3VsZFByZWNvbm5lY3RPbmx5LCBi
b29sIGRhdGFUYXNrSXNGb3JNYWluRnJhbWVOYXZpZ2F0aW9uLCBPcHRpb25hbDxOZXR3b3JrQWN0
aXZpdHlUcmFja2VyPiBuZXR3b3JrQWN0aXZpdHlUcmFja2VyKQorTmV0d29ya0RhdGFUYXNrQ29j
b2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3Jr
RGF0YVRhc2tDbGllbnQmIGNsaWVudCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0V2l0aENyZWRlbnRpYWxzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciBwYWdlSUQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5LCBXZWJDb3JlOjpDb250ZW50U25pZmZpbmdQb2xpY3kgc2hvdWxkQ29u
dGVudFNuaWZmLCBXZWJDb3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeSBzaG91bGRD
b250ZW50RW5jb2RpbmdTbmlmZiwgYm9vbCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRU
UFJlZGlyZWN0LCBQcmVjb25uZWN0T25seSBzaG91bGRQcmVjb25uZWN0T25seSwgYm9vbCBkYXRh
VGFza0lzRm9yTWFpbkZyYW1lTmF2aWdhdGlvbiwgT3B0aW9uYWw8TmV0d29ya0FjdGl2aXR5VHJh
Y2tlcj4gbmV0d29ya0FjdGl2aXR5VHJhY2tlcikKICAgICA6IE5ldHdvcmtEYXRhVGFzayhzZXNz
aW9uLCBjbGllbnQsIHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMsIHN0b3JlZENyZWRlbnRpYWxzUG9s
aWN5LCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCBkYXRhVGFza0lz
Rm9yTWFpbkZyYW1lTmF2aWdhdGlvbikKICAgICAsIG1fZnJhbWVJRChmcmFtZUlEKQogICAgICwg
bV9wYWdlSUQocGFnZUlEKQpAQCAtMjM2LDcgKzIzNiw3IEBAIE5ldHdvcmtEYXRhVGFza0NvY29h
OjpOZXR3b3JrRGF0YVRhc2tDb2NvYShOZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgTmV0d29ya0Rh
dGFUCiAgICAgaWYgKHNob3VsZEJsb2NrQ29va2llcykgewogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigp
KQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCks
IE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFza0NvY29hOjpsb2dDb29raWVJbmZvcm1hdGlv
bjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogQmxvY2tpbmcg
Y29va2llcyBmb3IgVVJMICVzIiwgdGhpcywgcGFnZUlELCBmcmFtZUlELCAodW5zaWduZWQgbG9u
ZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5V
VEY4U3RyaW5nKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5n
QWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6bG9nQ29va2ll
SW5mb3JtYXRpb246IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6
IEJsb2NraW5nIGNvb2tpZXMgZm9yIFVSTCAlcyIsIHRoaXMsIHBhZ2VJRC50b1VJbnQ2NCgpLCBm
cmFtZUlELCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgbnNSZXF1ZXN0
LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKICNlbHNlCiAgICAgICAgIExPRyhOZXR3
b3JrU2Vzc2lvbiwgIiVsbHUgQmxvY2tpbmcgY29va2llcyBmb3IgVVJMICVzIiwgW21fdGFzayB0
YXNrSWRlbnRpZmllcl0sIG5zUmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7
CiAjZW5kaWYKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJgogICAg
IGJvb2wgc2hvdWxkQmxvY2tDb29raWVzID0gbV9zdG9yZWRDcmVkZW50aWFsc1BvbGljeSA9PSBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RXBoZW1lcmFsU3RhdGVsZXNzQ29va2ll
bGVzcyB8fCBtX3Nlc3Npb24tPm5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLnNob3VsZEJsb2NrQ29v
a2llcyhyZXF1ZXN0LCBtX2ZyYW1lSUQsIG1fcGFnZUlEKTsKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKICAgICBpZiAobV9zZXNzaW9uLT5zaG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQot
ICAgICAgICBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29y
aywgIiVwIC0gTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9u
Ojpsb2dDb29raWVJbmZvcm1hdGlvbjogcGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRh
c2tJRCA9ICVsdTogJXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdl
SUQsIG1fZnJhbWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIChz
aG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjog
cGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogJXMgY29va2llcyBm
b3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQudG9VSW50NjQoKSwgbV9mcmFtZUlE
LCAodW5zaWduZWQgbG9uZylbbV90YXNrIHRhc2tJZGVudGlmaWVyXSwgKHNob3VsZEJsb2NrQ29v
a2llcyA/ICJCbG9ja2luZyIgOiAiTm90IGJsb2NraW5nIiksIHJlcXVlc3QudXJsKCkuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSk7CiAjZWxzZQogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUg
JXMgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgW21fdGFzayB0YXNrSWRlbnRpZmllcl0s
IChzaG91bGRCbG9ja0Nvb2tpZXMgPyAiQmxvY2tpbmciIDogIk5vdCBibG9ja2luZyIpLCByZXF1
ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCkBAIC0zNzksNyArMzc5
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYKICAgICBpZiAoIXNob3VsZEJsb2NrQ29va2ll
cykgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBpZiAobV9zZXNzaW9uLT5z
aG91bGRMb2dDb29raWVJbmZvcm1hdGlvbigpKQotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUYo
aXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIE5ldHdvcmssICIlcCAtIE5ldHdvcmtEYXRhVGFz
a0NvY29hOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbjo6bG9nQ29va2llSW5mb3JtYXRpb246
IHBhZ2VJRCA9ICVsbHUsIGZyYW1lSUQgPSAlbGx1LCB0YXNrSUQgPSAlbHU6IE5vdCBwYXJ0aXRp
b25pbmcgY29va2llcyBmb3IgcmVkaXJlY3QgVVJMICVzIiwgdGhpcywgbV9wYWdlSUQsIG1fZnJh
bWVJRCwgKHVuc2lnbmVkIGxvbmcpW21fdGFzayB0YXNrSWRlbnRpZmllcl0sIHJlcXVlc3QudXJs
KCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gTmV0d29ya0RhdGFUYXNr
Q29jb2E6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uOjpsb2dDb29raWVJbmZvcm1hdGlvbjog
cGFnZUlEID0gJWxsdSwgZnJhbWVJRCA9ICVsbHUsIHRhc2tJRCA9ICVsdTogTm90IHBhcnRpdGlv
bmluZyBjb29raWVzIGZvciByZWRpcmVjdCBVUkwgJXMiLCB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpLCBtX2ZyYW1lSUQsICh1bnNpZ25lZCBsb25nKVttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCBy
ZXF1ZXN0LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogI2Vsc2UKICAgICAgICAgTE9H
KE5ldHdvcmtTZXNzaW9uLCAiJWxsdSBOb3QgcGFydGl0aW9uaW5nIGNvb2tpZXMgZm9yIHJlZGly
ZWN0IFVSTCAlcyIsIFttX3Rhc2sgdGFza0lkZW50aWZpZXJdLCByZXF1ZXN0LnVybCgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25u
ZWN0aW9uLmgKaW5kZXggYzRmYjAwYjA4M2M0MTEyYTIyYzgxZWM0NWYwODhkYTA5Y2I4NjllOC4u
M2VkZjgyYWRmM2I1YWUzYjI4NGM3ZGQ1OTE1Yjg4NWU3NTIzMTc2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtMTg2LDYgKzE4NiwzNiBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kV2l0aFJlcGx5KFQmJiBtZXNzYWdlLCB1
aW50NjRfdCBkZXN0aW5hdGlvbklELCBGdW5jdGlvbkRpc3BhdGNoZXImIHJlcGx5RGlzcGF0Y2hl
ciwgRnVuY3Rpb248dm9pZChPcHRpb25hbDx0eXBlbmFtZSBDb2RpbmdUeXBlPHR5cGVuYW1lIFQ6
OlJlcGx5Pjo6VHlwZT4pPiYmIHJlcGx5SGFuZGxlcik7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gU2Vjb25kczo6aW5maW5p
dHkoKSwgT3B0aW9uU2V0PFNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pOwog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHkodWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0LCBPcHRpb25TZXQ8V2Fp
dEZvck9wdGlvbj4gd2FpdEZvck9wdGlvbnMgPSB7IH0pOworICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIFU+CisgICAgdm9pZCBzZW5kV2l0aEFzeW5j
UmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgT2JqZWN0SWRlbnRpZmll
cjxVPiBkZXN0aW5hdGlvbklEID0geyB9KQorICAgIHsKKyAgICAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5PFQsIEM+KFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBk
ZXN0aW5hdGlvbklELnRvVUludDY0KCkpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBVPgorICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0SWRl
bnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlv
bnMgPSB7IH0pCisgICAgeworICAgICAgICByZXR1cm4gc2VuZDxUPihXVEZNb3ZlKG1lc3NhZ2Up
LCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHNlbmRPcHRpb25zKTsKKyAgICB9CisgICAgCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KKyAgICB2b2lkIHNlbmRXaXRoUmVw
bHkoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgRnVuY3Rp
b25EaXNwYXRjaGVyJiByZXBseURpc3BhdGNoZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8dHlw
ZW5hbWUgQ29kaW5nVHlwZTx0eXBlbmFtZSBUOjpSZXBseT46OlR5cGU+KT4mJiByZXBseUhhbmRs
ZXIpCisgICAgeworICAgICAgICByZXR1cm4gc2VuZFdpdGhSZXBseTxUPihXVEZNb3ZlKG1lc3Nh
Z2UpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCksIHJlcGx5RGlzcGF0Y2hlciwgV1RGTW92ZShy
ZXBseUhhbmRsZXIpKTsKKyAgICB9CisgICAgCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KKyAgICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBs
eSYmIHJlcGx5LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGlt
ZW91dCA9IFNlY29uZHM6OmluZmluaXR5KCksIE9wdGlvblNldDxTZW5kU3luY09wdGlvbj4gc2Vu
ZFN5bmNPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmRTeW5jPFQ+KFdU
Rk1vdmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBkZXN0aW5hdGlvbklELnRvVUludDY0KCks
IHRpbWVvdXQsIHNlbmRTeW5jT3B0aW9ucyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseShPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIFNlY29uZHMgdGltZW91dCwg
T3B0aW9uU2V0PFdhaXRGb3JPcHRpb24+IHdhaXRGb3JPcHRpb25zID0geyB9KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHdhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PFQ+KGRlc3RpbmF0aW9u
SUQudG9VSW50NjQoKSwgdGltZW91dCwgd2FpdEZvck9wdGlvbnMpOworICAgIH0KIAogICAgIGJv
b2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPEVuY29kZXI+LCBPcHRpb25TZXQ8U2VuZE9w
dGlvbj4gc2VuZE9wdGlvbnMpOwogICAgIHZvaWQgc2VuZE1lc3NhZ2VXaXRoUmVwbHkodWludDY0
X3QgcmVxdWVzdElELCBzdGQ6OnVuaXF1ZV9wdHI8RW5jb2Rlcj4sIEZ1bmN0aW9uRGlzcGF0Y2hl
ciYgcmVwbHlEaXNwYXRjaGVyLCBGdW5jdGlvbjx2b2lkKHN0ZDo6dW5pcXVlX3B0cjxEZWNvZGVy
Pik+JiYgcmVwbHlIYW5kbGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL01lc3NhZ2VTZW5kZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL01lc3NhZ2VT
ZW5kZXIuaAppbmRleCBkNWY5ODFlNDUzNGIyYTliZDhiNGE1Y2M2MTRlODdjYTQ0OTU2ZDRhLi4z
ZDZmMzQyODkyYmM4ODM5MDY3OGU4YzM2NDYzOTExMGRlNGY1NzI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9NZXNzYWdlU2VuZGVyLmgKKysrIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9JUEMvTWVzc2FnZVNlbmRlci5oCkBAIC0zNCw5ICszNCw5IEBAIGNsYXNzIE1l
c3NhZ2VTZW5kZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfk1lc3NhZ2VTZW5kZXIoKTsKIAot
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlKQorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGJvb2wgc2VuZChjb25zdCBVJiBtZXNzYWdlLCBPcHRpb25T
ZXQ8U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCiAgICAgewotICAgICAgICByZXR1cm4g
c2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCB7IH0pOworICAgICAg
ICByZXR1cm4gc2VuZChtZXNzYWdlLCBtZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgpLCBzZW5k
T3B0aW9ucyk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gYm9vbCBzZW5kKGNv
bnN0IFUmIG1lc3NhZ2UsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxTZW5kT3B0
aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTQ4LDYgKzQ4LDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgCiAgICAgICAgIHJldHVybiBzZW5kTWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0
aW9ucyk7CiAgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFQ+
CisgICAgYm9vbCBzZW5kKGNvbnN0IFUmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VD4gZGVz
dGluYXRpb25JRCwgT3B0aW9uU2V0PFNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8VT4obWVzc2FnZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpLCBzZW5kT3B0aW9ucyk7CisgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAg
ICBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdlLCB0eXBlbmFtZSBUOjpSZXBseSYmIHJlcGx5LCBT
ZWNvbmRzIHRpbWVvdXQgPSBTZWNvbmRzOjppbmZpbml0eSgpLCBPcHRpb25TZXQ8U2VuZFN5bmNP
cHRpb24+IHNlbmRTeW5jT3B0aW9ucyA9IHsgfSkKQEAgLTY1LDggKzcxLDggQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gbWVzc2FnZVNlbmRlckNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoV1RGTW92
ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBseSksIGRlc3RpbmF0aW9uSUQsIHRpbWVvdXQsIHNlbmRT
eW5jT3B0aW9ucyk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUu
Li4gQXJncz4KLSAgICB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPgorICAgIHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5
KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIpCiAgICAgewogICAgICAgICBtZXNz
YWdlU2VuZGVyQ29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoV1RGTW92ZShtZXNzYWdl
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklE
KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVz
c2FnZXMucHkgYi9Tb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CmluZGV4
IDllNmU5MzIwNmJkYzFiMDEwMjJkZWE1MDQ0ZDI4MzNiZDVlOTRlZGMuLmYwZWM4ZGMxYjcxNjli
Y2NhNTVhNjU0OTEyZWQyZmVmNTM3MGRmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2Ny
aXB0cy93ZWJraXQvbWVzc2FnZXMucHkKKysrIGIvU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtp
dC9tZXNzYWdlcy5weQpAQCAtMjA1LDYgKzIwNSw3IEBAIGRlZiBmb3J3YXJkX2RlY2xhcmF0aW9u
c19hbmRfaGVhZGVycyhyZWNlaXZlcik6CiAgICAgICAgICdTdHJpbmcnLAogICAgICAgICAnV2Vi
Q29yZTo6RG9jdW1lbnRJZGVudGlmaWVyJywKICAgICAgICAgJ1dlYkNvcmU6OkZldGNoSWRlbnRp
ZmllcicsCisgICAgICAgICdXZWJDb3JlOjpQYWdlSWRlbnRpZmllcicsCiAgICAgICAgICdXZWJD
b3JlOjpQb2ludGVySUQnLAogICAgICAgICAnV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXInLAog
ICAgICAgICAnV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXInLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuY3BwCmluZGV4IGE2YTAwOTk1NTAwZTc2MzNlMGQ0
NWIxOGE0NDdjNzQyYTY5MjIwYWIuLmU2MDVhNDU5NDZmZmM3ZjFkMDdjYjg0ZThmNWNiOTg3YmJm
MzY3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5jcHAKQEAg
LTMxLDE3ICszMSwxNyBAQAogCiBuYW1lc3BhY2UgQVBJIHsKIAotUmVmPFBhZ2VIYW5kbGU+IFBh
Z2VIYW5kbGU6OmNyZWF0ZSh1aW50NjRfdCBwYWdlSUQpCitSZWY8UGFnZUhhbmRsZT4gUGFnZUhh
bmRsZTo6Y3JlYXRlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQYWdlSGFuZGxlKHBhZ2VJRCwgZmFsc2UpKTsKIH0KIAotUmVmPFBh
Z2VIYW5kbGU+IFBhZ2VIYW5kbGU6OmNyZWF0ZUF1dG9jb252ZXJ0aW5nKHVpbnQ2NF90IHBhZ2VJ
RCkKK1JlZjxQYWdlSGFuZGxlPiBQYWdlSGFuZGxlOjpjcmVhdGVBdXRvY29udmVydGluZyhXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
UGFnZUhhbmRsZShwYWdlSUQsIHRydWUpKTsKIH0KIAotUGFnZUhhbmRsZTo6UGFnZUhhbmRsZSh1
aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZykKK1BhZ2VIYW5kbGU6OlBhZ2VI
YW5kbGUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBib29sIGlzQXV0b2NvbnZlcnRp
bmcpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2lzQXV0b2NvbnZlcnRpbmcoaXNB
dXRvY29udmVydGluZykKIHsKQEAgLTU5LDE1ICs1OSwxNiBAQCB2b2lkIFBhZ2VIYW5kbGU6OmVu
Y29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKIGJvb2wgUGFnZUhhbmRsZTo6ZGVj
b2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPE9iamVjdD4mIHJlc3VsdCkKIHsKLSAg
ICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShwYWdlSUQpKQorICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CisgICAgZGVjb2RlciA+
PiBwYWdlSUQ7CisgICAgaWYgKCFwYWdlSUQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGJvb2wgaXNBdXRvY29udmVydGluZzsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQXV0b2Nv
bnZlcnRpbmcpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICByZXN1bHQgPSBpc0F1dG9j
b252ZXJ0aW5nID8gY3JlYXRlQXV0b2NvbnZlcnRpbmcocGFnZUlEKSA6IGNyZWF0ZShwYWdlSUQp
OworICAgIHJlc3VsdCA9IGlzQXV0b2NvbnZlcnRpbmcgPyBjcmVhdGVBdXRvY29udmVydGluZygq
cGFnZUlEKSA6IGNyZWF0ZSgqcGFnZUlEKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5kbGUuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElQYWdlSGFuZGxlLmgKaW5kZXggZjMwZmFmYmRjMzFiNzkxYTlm
YzBhYTYyNmZjOTBhNzQ4ZWYwODk0OC4uNmExY2ZiNjk4MjU5YmY0OGQ0ZDhlZDU4ZWNiODdiMGYy
MjY3NDMyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVBhZ2VIYW5k
bGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJUGFnZUhhbmRsZS5oCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIEFQSVBhZ2VIYW5kbGVfaAogCiAjaW5jbHVkZSAiQVBJT2Jq
ZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIAogbmFtZXNwYWNlIElQQyB7CkBAIC0zOCwyMCArMzksMjAgQEAgbmFtZXNwYWNl
IEFQSSB7CiAKIGNsYXNzIFBhZ2VIYW5kbGUgOiBwdWJsaWMgT2JqZWN0SW1wbDxPYmplY3Q6OlR5
cGU6OlBhZ2VIYW5kbGU+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBhZ2VIYW5kbGU+IGNy
ZWF0ZSh1aW50NjRfdCBwYWdlSUQpOwotICAgIHN0YXRpYyBSZWY8UGFnZUhhbmRsZT4gY3JlYXRl
QXV0b2NvbnZlcnRpbmcodWludDY0X3QgcGFnZUlEKTsKKyAgICBzdGF0aWMgUmVmPFBhZ2VIYW5k
bGU+IGNyZWF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CisgICAgc3RhdGljIFJlZjxQYWdl
SGFuZGxlPiBjcmVhdGVBdXRvY29udmVydGluZyhXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAg
ICAgdmlydHVhbCB+UGFnZUhhbmRsZSgpOwogCi0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIGJvb2wgaXNBdXRvY29udmVydGluZygp
IGNvbnN0IHsgcmV0dXJuIG1faXNBdXRvY29udmVydGluZzsgfQogCiAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2Rl
ciYsIFJlZlB0cjxPYmplY3Q+Jik7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUGFnZUhhbmRs
ZSh1aW50NjRfdCBwYWdlSUQsIGJvb2wgaXNBdXRvY29udmVydGluZyk7CisgICAgUGFnZUhhbmRs
ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgYm9vbCBpc0F1dG9jb252ZXJ0aW5nKTsKIAotICAg
IGNvbnN0IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIG1fcGFnZUlEOwogICAgIGNvbnN0IGJvb2wgbV9pc0F1dG9jb252ZXJ0aW5nOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1JlbW90ZU9iamVjdFJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaAppbmRleCA4NmY4MDQxNzA5YWJkNWMzY2Q2NGNkODIwZjg2MzUyY2FjMmE0ZDUxLi40
MDQwODE3ODAwMmE5NDY3MWQzNTBkZjI2MWUwOGM5NTBlZWYyYjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvUmVtb3RlT2JqZWN0UmVnaXN0cnkuaApAQCAt
MjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAi
UHJvY2Vzc1Rocm90dGxlci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIuaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvV2Vha09iakNQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNzMsNyArNzQsNyBAQCBwcml2YXRlOgogICAg
IEZ1bmN0aW9uPHZvaWQoKT4gbV9sYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5OwogICAg
IEhhc2hNYXA8dWludDY0X3QsIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tncm91bmRBY3Rpdml0eVRv
a2VuPiBtX3BlbmRpbmdSZXBsaWVzOwogICAgIGJvb2wgbV9pc1JlZ2lzdGVyZWRBc01lc3NhZ2VS
ZWNlaXZlciB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9tZXNzYWdlUmVjZWl2ZXJJRCB7IDAg
fTsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBtX21lc3NhZ2VSZWNlaXZlcklEOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGUubW0KaW5kZXggNThjYjFkZDJi
NWU3YzdjNmIwOTY1YWY2N2E1NTc2MmY0OTU5ODMwNi4uN2U5N2YxNzZjMDhhNTg1YjFiOWMyNDMw
ZmU5NjEzYmQzYTM5MTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0Nv
Y29hL1dLQnJvd3NpbmdDb250ZXh0SGFuZGxlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dEhhbmRsZS5tbQpAQCAtMjgsNyArMjgsNyBAQAog
CiBAaW1wbGVtZW50YXRpb24gV0tCcm93c2luZ0NvbnRleHRIYW5kbGUKIAotLSAoaWQpX2luaXRX
aXRoUGFnZUlEOih1aW50NjRfdClwYWdlSUQKKy0gKGlkKV9pbml0V2l0aFBhZ2VJRDooV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIpcGFnZUlECiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCiAgICAgICAgIHJldHVybiBuaWw7CkBAIC00MCw3ICs0MCw3IEBAIC0gKGlkKV9pbml0V2l0
aFBhZ2VJRDoodWludDY0X3QpcGFnZUlECiAKIC0gKE5TVUludGVnZXIpaGFzaAogewotICAgIHJl
dHVybiBfcGFnZUlEOworICAgIHJldHVybiBfcGFnZUlELnRvVUludDY0KCk7CiB9CiAKIC0gKEJP
T0wpaXNFcXVhbDooaWQpb2JqZWN0CkBAIC01Myw3ICs1Myw3IEBAIC0gKEJPT0wpaXNFcXVhbDoo
aWQpb2JqZWN0CiAKIC0gKHZvaWQpZW5jb2RlV2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKIHsK
LSAgICBbY29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRCBmb3JLZXk6QCJwYWdlSUQiXTsKKyAgICBb
Y29kZXIgZW5jb2RlSW50NjQ6X3BhZ2VJRC50b1VJbnQ2NCgpIGZvcktleTpAInBhZ2VJRCJdOwog
fQogCiAtIChpZClpbml0V2l0aENvZGVyOihOU0NvZGVyICopY29kZXIKQEAgLTYxLDcgKzYxLDcg
QEAgLSAoaWQpaW5pdFdpdGhDb2RlcjooTlNDb2RlciAqKWNvZGVyCiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcGFnZUlEID0gW2Nv
ZGVyIGRlY29kZUludDY0Rm9yS2V5OkAicGFnZUlEIl07CisgICAgX3BhZ2VJRCA9IG1ha2VPYmpl
Y3RJZGVudGlmaWVyPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyVHlwZT4oW2NvZGVyIGRlY29kZUlu
dDY0Rm9yS2V5OkAicGFnZUlEIl0pOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRIYW5kbGVJ
bnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250
ZXh0SGFuZGxlSW50ZXJuYWwuaAppbmRleCAyYTllNjQ2MjgxYTc0ZmI0MjhjMjBlOTdjYmVmNmFk
N2UzNjU4OTQzLi40M2U0MWUyNGNkMzYzMzZiNTQ3ODRiMDAzY2YxN2JiYzE2ZjY3YTY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRI
YW5kbGVJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9Db2NvYS9XS0Jy
b3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgKQEAgLTI0LDExICsyNCwxMiBAQAogICovCiAK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlLmgiCisjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2VJZGVudGlmaWVyLmg+CiAKIEBpbnRlcmZhY2UgV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgKCkK
IAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXIgPSBfcGFnZUlEKSB1aW50
NjRfdCBwYWdlSUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1fcGFn
ZUlEKSBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQ7CiAKLS0gKGlkKV9pbml0V2l0aFBh
Z2VJRDoodWludDY0X3QpcGFnZUlEOworLSAoaWQpX2luaXRXaXRoUGFnZUlEOihXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllcilwYWdlSUQ7CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRl
eCBlYjhhMGI2NjE3YWU1M2I1MDk4Zjg4NjIwNmNkZjczZTg4NDIxNDM1Li5kNGUxYzI1MDA4MTEy
YmJiZGY1ODM2Zjk2N2YwYzgzYzBjNmY3MTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBA
IC02Niw3ICs2Niw3IEBAIElQQzo6Q29ubmVjdGlvbiogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWludDY0X3QgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gKm1fZGVzdGluYXRpb25JRDsKKyAgICByZXR1cm4gbV9kZXN0aW5hdGlvbklE
LT50b1VJbnQ2NCgpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpjYW5N
YWtlUGF5bWVudHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiByZXBseSkKQEAgLTg0
LDcgKzg0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6b3BlblBheW1lbnRT
ZXR1cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmkKICAgICBwbGF0Zm9ybU9wZW5QYXlt
ZW50U2V0dXAobWVyY2hhbnRJZGVudGlmaWVyLCBkb21haW5OYW1lLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnNob3dQ
YXltZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdCYgcGF5bWVudFJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpz
aG93UGF5bWVudFVJKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywg
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3QmIHBheW1lbnRSZXF1ZXN0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRv
JiBjb29yZGluYXRvciA9IGFjdGl2ZVBheW1lbnRDb29yZGluYXRvclByb3h5KCkpCiAgICAgICAg
IGNvb3JkaW5hdG9yLT5kaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LmgKaW5kZXggZDIzN2VhYjNkYWI4NzlhNWRhMzU3MWY4OTEwMWQ3ZWU5NzA1OTZiMi4uNmU0YTg1
Y2YyZTI3ZmU0NjVhYWQ3NWNlZTIzYmNhZTJkZTdmZTAyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5o
CkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVk
ZSAiTWVzc2FnZVNlbmRlci5oIgogI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExNSw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY2FuTWFrZVBheW1lbnRzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgY2FuTWFrZVBheW1lbnRzV2l0aEFjdGl2ZUNhcmQoY29uc3QgU3RyaW5nJiBtZXJjaGFu
dElkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZG9tYWluTmFtZSwgUEFMOjpTZXNzaW9uSUQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgb3BlblBheW1lbnRTZXR1
cChjb25zdCBTdHJpbmcmIG1lcmNoYW50SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkb21haW5O
YW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKLSAgICB2b2lkIHNob3dQYXlt
ZW50VUkodWludDY0X3QgZGVzdGluYXRpb25JRCwgUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmlu
ZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBsaW5rSWNvblVS
TFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0Jiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBzaG93UGF5bWVudFVJ
KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc3RpbmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklELCBj
b25zdCBTdHJpbmcmIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
bGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAgIHZvaWQgY29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vz
c2lvbiYpOwogICAgIHZvaWQgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVwZGF0ZT4mKTsKICAgICB2b2lkIGNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBw
aW5nQ29udGFjdFVwZGF0ZT4mKTsKQEAgLTE0Nyw3ICsxNDgsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICBDbGllbnQmIG1fY2xpZW50OwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX2Rlc3Rp
bmF0aW9uSUQ7CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG1fZGVzdGlu
YXRpb25JRDsKIAogICAgIGVudW0gY2xhc3MgU3RhdGUgewogICAgICAgICAvLyBJZGxlIC0gTm90
aGluZydzIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxl
UGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggZGQzMTMxMjdiZjRhOGExYWEwYzZkZWNjNmQyMzRmOWJkYmFhYjdkMy4uMWRlNGNkZGNl
NGIxMjYzZTJkMGI5NGJmYjkzMTkxNDhiYmMxODIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkubWVzc2FnZXMuaW4KQEAgLTMwLDcgKzMwLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkgewogICAgIENhbk1ha2VQYXltZW50c1dpdGhBY3RpdmVDYXJkKFN0
cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lLCBQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+IChib29sIGNhbk1ha2VQYXltZW50cykgQXN5bmMKICAgICBPcGVuUGF5
bWVudFNldHVwKFN0cmluZyBtZXJjaGFudElkZW50aWZpZXIsIFN0cmluZyBkb21haW5OYW1lKSAt
PiAoYm9vbCByZXN1bHQpIEFzeW5jCiAKLSAgICBTaG93UGF5bWVudFVJKHVpbnQ2NF90IGRlc3Rp
bmF0aW9uSUQsIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU3RyaW5nIG9yaWdpbmF0aW5nVVJM
U3RyaW5nLCBWZWN0b3I8U3RyaW5nPiBsaW5rSWNvblVSTFN0cmluZ3MsIFdlYkNvcmU6OkFwcGxl
UGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0IHBheW1lbnRSZXF1ZXN0KSAtPiAoYm9vbCByZXN1bHQp
IFN5bmNocm9ub3VzCisgICAgU2hvd1BheW1lbnRVSShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBk
ZXN0aW5hdGlvbklELCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFN0cmluZyBvcmlnaW5hdGlu
Z1VSTFN0cmluZywgVmVjdG9yPFN0cmluZz4gbGlua0ljb25VUkxTdHJpbmdzLCBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCBwYXltZW50UmVxdWVzdCkgLT4gKGJvb2wgcmVz
dWx0KSBTeW5jaHJvbm91cwogICAgIENvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKFdlYkNvcmU6
OlBheW1lbnRNZXJjaGFudFNlc3Npb24gcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKICAgICBDb21w
bGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0
aG9kVXBkYXRlPiB1cGRhdGUpCiAgICAgQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24o
T3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiB1cGRhdGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGlj
YXRpb25NYW5hZ2VyLmNwcAppbmRleCA2ZWIzMzVmMDdkM2NmZTYyOTAwMDcxY2RhYTc4OTNmMDQz
MzViZWFhLi45ZGViNzZmZjEzMmM2Y2I1ZmRmNWViZjUyMjIzNGY2ZDQ0M2VmOTRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdWludDY0X3QgQXV0aGVudGlj
YXRpb25NYW5hZ2VyOjphZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcChDaGFsbGVuZ2UmJiBjaGFs
bGVuZ2UKICAgICByZXR1cm4gY2hhbGxlbmdlSUQ7CiB9CiAKLWJvb2wgQXV0aGVudGljYXRpb25N
YW5hZ2VyOjpzaG91bGRDb2FsZXNjZUNoYWxsZW5nZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGNoYWxsZW5nZUlELCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlKSBj
b25zdAorYm9vbCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OnNob3VsZENvYWxlc2NlQ2hhbGxlbmdl
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgY2hhbGxlbmdlSUQsIGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UpIGNvbnN0CiB7CiAgICAgaWYgKCFjYW5Db2Fs
ZXNjZUNoYWxsZW5nZShjaGFsbGVuZ2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDgs
NyArMTA4LDcgQEAgVmVjdG9yPHVpbnQ2NF90PiBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmNvYWxl
c2NlQ2hhbGxlbmdlc01hdGNoaW5nKHVpbnQ2NF90IGNoYWwKICAgICByZXR1cm4gY2hhbGxlbmdl
c1RvQ29hbGVzY2U7CiB9CiAKLXZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Us
IENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEF1
dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChwYWdlSUQpOwogICAg
IEFTU0VSVChmcmFtZUlEKTsKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIEF1dGhlbnRpY2F0aW9u
TWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IHBhZ2VJ
RCwgdQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICB1aW50NjRf
dCBkdW1teVBhZ2VJRCA9IDA7CisgICAgUGFnZUlkZW50aWZpZXIgZHVtbXlQYWdlSUQ7CiAgICAg
dWludDY0X3QgY2hhbGxlbmdlSUQgPSBhZGRDaGFsbGVuZ2VUb0NoYWxsZW5nZU1hcCh7IGR1bW15
UGFnZUlELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikgfSk7CiAgICAgCiAgICAgLy8gQ29hbGVzY2UgY2hhbGxlbmdlcyBpbiB0aGUgc2FtZSBwcm90
ZWN0aW9uIHNwYWNlIGFuZCBpbiB0aGUgc2FtZSBwYWdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApp
bmRleCA3ZmUzOTllMGI3ZTk0NThiZDkxNzgyNTkzODQxZTRjNDQ5MzM1YWUxLi44NmU3NDRjMTA4
ZGY0Y2JjZjVkMDQ3NjA5YWNmOTZjNjgyM2Q2YjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuaApA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzU3VwcGxlbWVudC5oIgog
I2luY2x1ZGUgIldlYlByb2Nlc3NTdXBwbGVtZW50LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlkZW50aWZpZXIu
aD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC02MCw3ICs2MSw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENo
YWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKElQQzo6TWVzc2FnZVNlbmRlciYgZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2
b2lkIGNvbXBsZXRlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgY2hhbGxlbmdlSUQs
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIFdlYkNvcmU6OkNyZWRlbnRpYWwm
Jik7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2hh
bGxlbmdlIHsKLSAgICAgICAgdWludDY0X3QgcGFnZUlEOworICAgICAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBwYWdlSUQ7CiAgICAgICAgIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlIGNoYWxsZW5nZTsKICAgICAgICAgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgY29tcGxl
dGlvbkhhbmRsZXI7CiAgICAgfTsKQEAgLTgzLDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCiAgICAgdWludDY0X3QgYWRkQ2hhbGxlbmdlVG9DaGFsbGVuZ2VNYXAoQ2hhbGxlbmdl
JiYpOwotICAgIGJvb2wgc2hvdWxkQ29hbGVzY2VDaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1
aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmKSBjb25zdDsKKyAgICBib29sIHNob3VsZENvYWxlc2NlQ2hhbGxlbmdlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCwgY29uc3QgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmKSBjb25zdDsKIAogICAgIFZlY3Rvcjx1aW50NjRfdD4gY29hbGVz
Y2VDaGFsbGVuZ2VzTWF0Y2hpbmcodWludDY0X3QgY2hhbGxlbmdlSUQpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BdXhpbGlhcnlQcm9jZXNzLmgKaW5kZXggMzJiMGE0NzVkYzJiYjhmZjc3
ZmE0MTcyNWMwODNiMGY3NTA5OTUzOS4uMTkyNTNlMmJhYjZhMTdiZWY0NjYzNjY3ZmQ0OGFiOWU5
ZTA1MTUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXV4aWxpYXJ5UHJvY2Vz
cy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0F1eGlsaWFyeVByb2Nlc3MuaApAQCAtNjIs
NiArNjIsMTggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6
U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNl
IG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6TWVzc2FnZVJlY2VpdmVyJik7CisgICAgCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cisg
ICAgdm9pZCBhZGRNZXNzYWdlUmVjZWl2ZXIoSVBDOjpTdHJpbmdSZWZlcmVuY2UgbWVzc2FnZVJl
Y2VpdmVyTmFtZSwgT2JqZWN0SWRlbnRpZmllcjxUPiBkZXN0aW5hdGlvbklELCBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlciYgcmVjZWl2ZXIpCisgICAgeworICAgICAgICBhZGRNZXNzYWdlUmVjZWl2ZXIo
bWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCByZWNlaXZlcik7
CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgcmVtb3Zl
TWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUs
IE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCkKKyAgICB7CisgICAgICAgIHJlbW92
ZU1lc3NhZ2VSZWNlaXZlcihtZXNzYWdlUmVjZWl2ZXJOYW1lLCBkZXN0aW5hdGlvbklELnRvVUlu
dDY0KCkpOworICAgIH0KIAogICAgIHZvaWQgc2V0UHJvY2Vzc1N1cHByZXNzaW9uRW5hYmxlZChi
b29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4
dC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVGV4dElucHV0Q29udGV4dC5oCmluZGV4IDRmNzVm
ZDgwNmY2OGQ2YTk5OWJiYTZhNDViMTQ1NzQ3NmZjYWI4OGMuLjU0ZDQyNzdiODUzOGZiYTQxNTZh
YjgzZDZhZGI4OTU3ODI4YTBkNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Rl
eHRJbnB1dENvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9UZXh0SW5wdXRDb250
ZXh0LmgKQEAgLTI5LDEzICsyOSwxNCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRJZGVu
dGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9FbGVtZW50SWRlbnRpZmllci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmll
ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRleHRJbnB1dENvbnRleHQgewog
ICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBib3VuZGluZ1JlY3Q7CiAKLSAgICB1aW50NjRfdCB3ZWJQ
YWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciB3ZWJQYWdlSWRlbnRp
ZmllcjsKICAgICBXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZG9jdW1lbnRJZGVudGlmaWVy
OwogICAgIFdlYkNvcmU6OkVsZW1lbnRJZGVudGlmaWVyIGVsZW1lbnRJZGVudGlmaWVyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJCYWNrRm9yd2FyZExpc3RJdGVtLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCmluZGV4
IDlkYmIzNmE0NTUzNmFhMzczYmM5N2QwYTdjZjRkODQyZGZmMzk2ZWQuLmQ5MDBhMTY3MzNhOWNl
NTNmNzZlOTdmODk1OWMxNDdhNzUwODk3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uY3BwCkBAIC0zNSwxMiArMzUsMTIgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLVJlZjxXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtPiBXZWJCYWNrRm9yd2FyZExpc3RJdGVtOjpjcmVhdGUoQmFja0ZvcndhcmRMaXN0
SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCB1aW50NjRfdCBwYWdlSUQpCitS
ZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6Y3JlYXRl
KEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmIGJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSwgUGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0oV1RGTW92ZShiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUpLCBwYWdlSUQp
KTsKIH0KIAotV2ViQmFja0ZvcndhcmRMaXN0SXRlbTo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbShC
YWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmJiBiYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUsIHVpbnQ2
NF90IHBhZ2VJRCkKK1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYgYmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlLCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2l0ZW1TdGF0ZShXVEZNb3ZlKGJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSkpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX2xhc3RQ
cm9jZXNzSWRlbnRpZmllcihtX2l0ZW1TdGF0ZS5pZGVudGlmaWVyLnByb2Nlc3NJZGVudGlmaWVy
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRl
bS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oCmluZGV4
IDg3MmVmMTgwOTVkMThjYzNhOWM1ZTc0NjNkMzBlN2Y2MTQ4NzJmNWUuLjQ0YWY3YzY2NTkwNzQ2
ZGY5ODJlMDVjMTNiZWVjZDA2YTc4NjRlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkJhY2tGb3J3YXJkTGlzdEl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJCYWNrRm9yd2FyZExpc3RJdGVtLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkFQ
SU9iamVjdC5oIgogI2luY2x1ZGUgIlNlc3Npb25TdGF0ZS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dl
YWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ2LDcgKzQ3LDcg
QEAgY2xhc3MgU3VzcGVuZGVkUGFnZVByb3h5OwogCiBjbGFzcyBXZWJCYWNrRm9yd2FyZExpc3RJ
dGVtIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QmFja0Zvcndh
cmRMaXN0SXRlbT4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0
SXRlbT4gY3JlYXRlKEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQp
OworICAgIHN0YXRpYyBSZWY8V2ViQmFja0ZvcndhcmRMaXN0SXRlbT4gY3JlYXRlKEJhY2tGb3J3
YXJkTGlzdEl0ZW1TdGF0ZSYmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgdmlydHVh
bCB+V2ViQmFja0ZvcndhcmRMaXN0SXRlbSgpOwogCiAgICAgc3RhdGljIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIGl0ZW1Gb3JJRChjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlm
aWVyJik7CkBAIC01NCw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFdlYkNvcmU6OkJh
Y2tGb3J3YXJkSXRlbUlkZW50aWZpZXImIGl0ZW1JRCgpIGNvbnN0IHsgcmV0dXJuIG1faXRlbVN0
YXRlLmlkZW50aWZpZXI7IH0KICAgICBjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3RhdGUmIGl0
ZW1TdGF0ZSgpIHsgcmV0dXJuIG1faXRlbVN0YXRlOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkg
Y29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KKyAgICBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBw
YWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQogCiAgICAgV2ViQ29yZTo6UHJvY2Vz
c0lkZW50aWZpZXIgbGFzdFByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0
UHJvY2Vzc0lkZW50aWZpZXI7IH0KICAgICB2b2lkIHNldExhc3RQcm9jZXNzSWRlbnRpZmllcihj
b25zdCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyBtX2xhc3RQcm9j
ZXNzSWRlbnRpZmllciA9IGlkZW50aWZpZXI7IH0KQEAgLTgxLDEyICs4MiwxMiBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
KEJhY2tGb3J3YXJkTGlzdEl0ZW1TdGF0ZSYmLCB1aW50NjRfdCBwYWdlSUQpOworICAgIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0oQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlJiYsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKTsKIAogICAgIHZvaWQgcmVtb3ZlU3VzcGVuZGVkUGFnZUZyb21Qcm9jZXNz
UG9vbCgpOwogCiAgICAgQmFja0ZvcndhcmRMaXN0SXRlbVN0YXRlIG1faXRlbVN0YXRlOwotICAg
IHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlE
OwogICAgIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyIG1fbGFzdFByb2Nlc3NJZGVudGlmaWVy
OwogICAgIFdlYWtQdHI8U3VzcGVuZGVkUGFnZVByb3h5PiBtX3N1c3BlbmRlZFBhZ2U7CiB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCBlOWRhNjBhZWViZWZmMWRhNjkxZTFlNDUzMzczNTc3YTNhOTQwYTI1Li42OTk0ODI1
ZDA4MWNiMDk5NDg0MmFjY2RjZTQ4NDZlM2RkYjBlOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtNTMsNyArNTMsNyBA
QCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1c2VyQWdlbnQ7CiAgICAgZW5jb2RlciA8PCBp
dGVtU3RhdGVzOwogICAgIGVuY29kZXIgPDwgc2Vzc2lvbklEOwotICAgIGVuY29kZXIgPDwgdXNl
ckNvbnRlbnRDb250cm9sbGVySUQudG9VSW50NjQoKTsKKyAgICBlbmNvZGVyIDw8IHVzZXJDb250
ZW50Q29udHJvbGxlcklEOwogICAgIGVuY29kZXIgPDwgdmlzaXRlZExpbmtUYWJsZUlEOwogICAg
IGVuY29kZXIgPDwgd2Vic2l0ZURhdGFTdG9yZUlEOwogICAgIGVuY29kZXIgPDwgY2FuUnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsOwpAQCAtMTkzLDExICsxOTMsMTEgQEAgT3B0aW9uYWw8V2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KElQQzo6RGVjb2QKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMuc2Vzc2lvbklE
KSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90
PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOworICAgIE9wdGlvbmFsPFVzZXJDb250
ZW50Q29udHJvbGxlcklkZW50aWZpZXI+IHVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7
CiAgICAgZGVjb2RlciA+PiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogICAgIGlm
ICghdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKLSAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50Q29udHJvbGxlcklEID0gbWFrZU9i
amVjdElkZW50aWZpZXI8VXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllclR5cGU+KCp1c2Vy
Q29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyKTsKKyAgICBwYXJhbWV0ZXJzLnVzZXJDb250ZW50
Q29udHJvbGxlcklEID0gKnVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXI7CiAKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudmlzaXRlZExpbmtUYWJsZUlEKSkKICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKQEAgLTM5Miw3ICszOTIsNyBAQCBPcHRpb25hbDxXZWJQ
YWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUo
SVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBhcmFtZXRlcnMu
YmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAotICAgIE9wdGlv
bmFsPE9wdGlvbmFsPHVpbnQ2NF90Pj4gb2xkUGFnZUlEOworICAgIE9wdGlvbmFsPE9wdGlvbmFs
PFBhZ2VJZGVudGlmaWVyPj4gb2xkUGFnZUlEOwogICAgIGRlY29kZXIgPj4gb2xkUGFnZUlEOwog
ICAgIGlmICghb2xkUGFnZUlEKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGMy
YmU4NDE0NmIzNGVhNzU2MTk3MDc1YWM4YjJjYmMzOGJlYzQyZTAuLjkwMTI3YmMzMTAzMGVlZTAz
ZjI2MjdlOTdjYWQ0NWY5YjdiNjljMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL0ludFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQcm9kdWNlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2luYXRpb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNl
TGF5b3V0RGlyZWN0aW9uLmg+CkBAIC0yMDIsNyArMjAzLDcgQEAgc3RydWN0IFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMgewogCiAgICAgT3B0aW9uYWw8V2ViQ29yZTo6Q29sb3I+IGJhY2tncm91
bmRDb2xvcjsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBvbGRQYWdlSUQ7CisgICAgT3B0aW9u
YWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9sZFBhZ2VJRDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUdyb3Vw
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAppbmRl
eCA5NjM5ZDAxNWMyZjk0ZTY3Yjc2NzIyOGFkMjNiMWQ5YzQzYjM1MDA3Li44YzI4MzIwZDFkYWQy
ZGU3NjQ2NThjM2RjNDU2MDkzY2ZlMzRjN2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlR3JvdXBEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQ
YWdlR3JvdXBEYXRhLmNwcApAQCAtMzQsNyArMzQsNyBAQCB2b2lkIFdlYlBhZ2VHcm91cERhdGE6
OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2RlciA8PCBp
ZGVudGlmaWVyOwogICAgIGVuY29kZXIgPDwgcGFnZUdyb3VwSUQ7Ci0gICAgZW5jb2RlciA8PCB1
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLnRvVUludDY0KCk7CisgICAgZW5jb2RlciA8
PCB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyOwogfQogCiBPcHRpb25hbDxXZWJQYWdl
R3JvdXBEYXRhPiBXZWJQYWdlR3JvdXBEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
KQpAQCAtNDksMTIgKzQ5LDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VHcm91cERhdGE+IFdlYlBhZ2VH
cm91cERhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFwYWdlR3Jv
dXBJRCkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICAKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsKKyAgICBPcHRpb25hbDxV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyPiB1c2VyQ29udGVudENvbnRyb2xsZXJJZGVu
dGlmaWVyOwogICAgIGRlY29kZXIgPj4gdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmllcjsK
ICAgICBpZiAoIXVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAgICAgCi0gICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIp
LCBXVEZNb3ZlKCpwYWdlR3JvdXBJRCksIG1ha2VPYmplY3RJZGVudGlmaWVyPFVzZXJDb250ZW50
Q29udHJvbGxlcklkZW50aWZpZXJUeXBlPigqdXNlckNvbnRlbnRDb250cm9sbGVySWRlbnRpZmll
cikgfX07CisgICAgcmV0dXJuIHt7IFdURk1vdmUoKmlkZW50aWZpZXIpLCAqcGFnZUdyb3VwSUQs
ICp1c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIH19OwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9PYmpDT2JqZWN0
R3JhcGgubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoLm1tCmlu
ZGV4IGM2NTQ4NGY1NTEyMjBkZGJjOGI4NGI3OTZhY2IwNTk4ODcyNmI4NzMuLmZlNjZkZTY1OTJh
YTBhZjIzNDU4ODJkYjNkNDFhMTJjYTJiOWJjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGgubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
bWFjL09iakNPYmplY3RHcmFwaC5tbQpAQCAtMjk4LDExICsyOTgsMTIgQEAgYm9vbCBPYmpDT2Jq
ZWN0R3JhcGg6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxpZD4mIHJl
c3VsdCkKICAgICB9CiAKICAgICBjYXNlIE9iakNUeXBlOjpXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZTogewotICAgICAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocGFnZUlEKSkKKyAgICAgICAgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IHBh
Z2VJRDsKKyAgICAgICAgZGVjb2RlciA+PiBwYWdlSUQ7CisgICAgICAgIGlmICghcGFnZUlEKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIHJlc3VsdCA9IGFkb3B0TlMoW1tX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZSBhbGxvY10gX2luaXRXaXRoUGFnZUlEOnBhZ2VJRF0pOwor
ICAgICAgICByZXN1bHQgPSBhZG9wdE5TKFtbV0tCcm93c2luZ0NvbnRleHRIYW5kbGUgYWxsb2Nd
IF9pbml0V2l0aFBhZ2VJRDoqcGFnZUlEXSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0
LmNwcAppbmRleCAyYzFmM2U5NzdiMmU1MmRiZjljNTk1NDc5YzE2NGM5NmI1MTNmMjQ4Li45MzU2
ZWUzZTRiMjE4NTBkNDkxZjA1NWVhNWQzMTIyNWI0YzAwODBhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJDb250ZXh0LmNwcApAQCAtMTc0
OSw1ICsxNzQ5LDUgQEAgdm9pZCB3ZWJraXRXZWJDb250ZXh0V2ViVmlld0Rlc3Ryb3llZChXZWJL
aXRXZWJDb250ZXh0KiBjb250ZXh0LCBXZWJLaXRXZWJWaWV3KgogCiBXZWJLaXRXZWJWaWV3KiB3
ZWJraXRXZWJDb250ZXh0R2V0V2ViVmlld0ZvclBhZ2UoV2ViS2l0V2ViQ29udGV4dCogY29udGV4
dCwgV2ViUGFnZVByb3h5KiBwYWdlKQogewotICAgIHJldHVybiBwYWdlID8gY29udGV4dC0+cHJp
di0+d2ViVmlld3MuZ2V0KHBhZ2UtPnBhZ2VJRCgpKSA6IDA7CisgICAgcmV0dXJuIHBhZ2UgPyBj
b250ZXh0LT5wcml2LT53ZWJWaWV3cy5nZXQocGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSkgOiBu
dWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJL
aXRXZWJWaWV3LmNwcAppbmRleCA4ODdmN2IzMWMwZTZkM2FlZDEyZmMxMDNkNDkwZWE1ZWEwYjM3
OTczLi5jZWI5MGQ3M2Q4M2Y3MmUxZWI2OWIwYjhhMmRjZmY5YTlkYTIxYWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAt
MjgxOCw3ICsyODE4LDcgQEAgZ3VpbnQ2NCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3BhZ2VfaWQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldyksIDApOwogCi0gICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldyku
cGFnZUlEKCk7CisgICAgcmV0dXJuIGdldFBhZ2Uod2ViVmlldykucGFnZUlEKCkudG9VSW50NjQo
KTsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCmluZGV4IDEwNzU3ODFhZjJjM2Y4YTdl
YTdjNjE4NmViY2Y3OWM3MDgxYzE5OTcuLjJmOWNmZTk0MjQwMjYxNzJkOTA2ZGJkMWEwM2M0Y2Qw
MTU0NGJiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCkBAIC01NCw2ICs1NCw3IEBACiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCiBTdHJpbmcgQXV0b21hdGlvbkNvbW1hbmRFcnJvcjo6dG9Qcm90b2Nv
bFN0cmluZygpCiB7CkBAIC01MjIsNyArNTIzLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6d2FpdEZvck5hdmlnYXRpb25Ub0NvbXBsZXRlT25GcmFtZShXZWJGcmFtZVByb3h5JiBmcmEK
ICAgICB9CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJlc3BvbmRUb1BlbmRpbmdQ
YWdlTmF2aWdhdGlvbkNhbGxiYWNrc1dpdGhUaW1lb3V0KEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiYgbWFwKQordm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2Fs
bGJhY2tzV2l0aFRpbWVvdXQoSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rv
cjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+JiBtYXApCiB7CiAgICAgSW5zcGVj
dG9yOjpFcnJvclN0cmluZyB0aW1lb3V0RXJyb3IgPSBTVFJJTkdfRk9SX1BSRURFRklORURfRVJS
T1JfTkFNRShUaW1lb3V0KTsKICAgICBmb3IgKGF1dG8gaWQgOiBjb3B5VG9WZWN0b3IobWFwLmtl
eXMoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb24uaAppbmRleCA2NWViM2U0NmU1Yjg4YmE4MmFjMmQxMDI0
ZWNhZTYzY2IzNGQ3MDg3Li5mMzljMDYxYjU3ODkyYTkyNDhmZDA5ZGZmY2ZhN2I4YzUwYTA3NTM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5oCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU2hhcmVh
YmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmgiCiAjaW5j
bHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAj
aW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgpAQCAtMjI1LDcgKzIyNiw3IEBAIHByaXZhdGU6
CiAKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uUGFnZShXZWJQYWdlUHJv
eHkmLCBJbnNwZWN0b3I6OlByb3RvY29sOjpBdXRvbWF0aW9uOjpQYWdlTG9hZFN0cmF0ZWd5LCBT
ZWNvbmRzLCBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPiYm
KTsKICAgICB2b2lkIHdhaXRGb3JOYXZpZ2F0aW9uVG9Db21wbGV0ZU9uRnJhbWUoV2ViRnJhbWVQ
cm94eSYsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkF1dG9tYXRpb246OlBhZ2VMb2FkU3RyYXRlZ3ks
IFNlY29uZHMsIFJlZjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+
JiYpOwotICAgIHZvaWQgcmVzcG9uZFRvUGVuZGluZ1BhZ2VOYXZpZ2F0aW9uQ2FsbGJhY2tzV2l0
aFRpbWVvdXQoSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+Jik7CisgICAgdm9pZCByZXNwb25kVG9QZW5kaW5nUGFnZU5h
dmlnYXRpb25DYWxsYmFja3NXaXRoVGltZW91dChIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4m
KTsKICAgICB2b2lkIHJlc3BvbmRUb1BlbmRpbmdGcmFtZU5hdmlnYXRpb25DYWxsYmFja3NXaXRo
VGltZW91dChIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0
Y2hlcjo6Q2FsbGJhY2tCYXNlPj4mKTsKICAgICB2b2lkIGxvYWRUaW1lckZpcmVkKCk7CiAKQEAg
LTI4MCwyMiArMjgxLDIyIEBAIHByaXZhdGU6CiAgICAgUmVmPEluc3BlY3Rvcjo6QXV0b21hdGlv
bkJhY2tlbmREaXNwYXRjaGVyPiBtX2RvbWFpbkRpc3BhdGNoZXI7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcj4gbV9kb21haW5Ob3Rp
ZmllcjsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxlTWFw
OwotICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJQYWdlTWFwOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0cmluZz4gbV93ZWJQYWdlSGFuZGxl
TWFwOworICAgIEhhc2hNYXA8U3RyaW5nLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gbV9oYW5k
bGVXZWJQYWdlTWFwOwogCiAgICAgSGFzaE1hcDx1aW50NjRfdCwgU3RyaW5nPiBtX3dlYkZyYW1l
SGFuZGxlTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCB1aW50NjRfdD4gbV9oYW5kbGVXZWJGcmFt
ZU1hcDsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdOb3JtYWxOYXZpZ2F0aW9uSW5Ccm93
c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0
cjxJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyOjpDYWxsYmFja0Jhc2U+PiBtX3BlbmRpbmdF
YWdlck5hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFz
aE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERp
c3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ05vcm1hbE5hdmlnYXRpb25JbkJyb3dz
aW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFz
ZT4+IG1fcGVuZGluZ0VhZ2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVy
UGFnZTsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8SW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcjo6Q2FsbGJhY2tCYXNlPj4gbV9wZW5kaW5nTm9ybWFsTmF2aWdhdGlvbkluQnJvd3Np
bmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0Vh
Z2VyTmF2aWdhdGlvbkluQnJvd3NpbmdDb250ZXh0Q2FsbGJhY2tzUGVyRnJhbWU7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI6OkNhbGxi
YWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7CisgICAgSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6QmFja2VuZERpc3Bh
dGNoZXI6OkNhbGxiYWNrQmFzZT4+IG1fcGVuZGluZ0luc3BlY3RvckNhbGxiYWNrc1BlclBhZ2U7
CiAjaWYgRU5BQkxFKFdFQkRSSVZFUl9LRVlCT0FSRF9JTlRFUkFDVElPTlMpCi0gICAgSGFzaE1h
cDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChPcHRpb25hbDxBdXRvbWF0aW9uQ29tbWFuZEVycm9y
Pik+PiBtX3BlbmRpbmdLZXlib2FyZEV2ZW50c0ZsdXNoZWRDYWxsYmFja3NQZXJQYWdlOworICAg
IEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nS2V5Ym9hcmRFdmVudHNGbHVzaGVk
Q2FsbGJhY2tzUGVyUGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfTU9VU0VfSU5U
RVJBQ1RJT05TKQotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoT3B0aW9uYWw8
QXV0b21hdGlvbkNvbW1hbmRFcnJvcj4pPj4gbV9wZW5kaW5nTW91c2VFdmVudHNGbHVzaGVkQ2Fs
bGJhY2tzUGVyUGFnZTsKKyAgICBIYXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBGdW5j
dGlvbjx2b2lkKE9wdGlvbmFsPEF1dG9tYXRpb25Db21tYW5kRXJyb3I+KT4+IG1fcGVuZGluZ01v
dXNlRXZlbnRzRmx1c2hlZENhbGxiYWNrc1BlclBhZ2U7CiAjZW5kaWYKIAogICAgIHVpbnQ2NF90
IG1fbmV4dEV2YWx1YXRlSmF2YVNjcmlwdENhbGxiYWNrSUQgeyAxIH07CkBAIC0zMTksNyArMzIw
LDcgQEAgcHJpdmF0ZToKICAgICAvLyBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIgQVBJcyB0YWtl
IGEgc2V0IG9mIGlucHV0IHNvdXJjZXMuIFdlIGFsc28gaW50ZXJuIHRoZXNlCiAgICAgLy8gc28g
dGhhdCBwcmV2aW91cyBpbnB1dCBzb3VyY2Ugc3RhdGUgaXMgdXNlZCBhcyBpbml0aWFsIHN0YXRl
IGZvciBsYXRlciBjb21tYW5kcy4KICAgICBIYXNoU2V0PFJlZjxTaW11bGF0ZWRJbnB1dFNvdXJj
ZT4+IG1faW5wdXRTb3VyY2VzOwotICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXI+PiBtX2lucHV0RGlzcGF0Y2hlcnNCeVBhZ2U7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgUmVmPFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlcj4+IG1f
aW5wdXREaXNwYXRjaGVyc0J5UGFnZTsKICNlbmRpZgogI2lmIEVOQUJMRShXRUJEUklWRVJfS0VZ
Qk9BUkRfSU5URVJBQ1RJT05TKQogICAgIC8vIEtlZXAgdHJhY2sgb2YgY3VycmVudGx5IGFjdGl2
ZSBtb2RpZmllcnMgYWNyb3NzIG11bHRpcGxlIGtleXN0cm9rZXMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDk4OTNkMzk4YjU3NDYy
YWQ5Yjg4ODM4ZTIyNzEwZmNhZjA0NjMwZDAuLjZiMDliYWRiOGQwY2ViYWJmMmM2OWY2MDA5YjFi
ZDFkMjNjMDllNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFy
eVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVBy
b2Nlc3NQcm94eS5oCkBAIC01MSw2ICs1MSwxOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVw
bHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRp
b25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPiB2b2lkIHNlbmRXaXRoQXN5bmNS
ZXBseShUJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoQXJncy4uLik+JiYpOworICAgIAorICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CisgICAgYm9vbCBzZW5kKFQmJiBtZXNz
YWdlLCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNl
bmRPcHRpb24+IHNlbmRPcHRpb25zID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNlbmQ8
VD4oV1RGTW92ZShtZXNzYWdlKSwgZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpLCBzZW5kT3B0aW9u
cyk7CisgICAgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+Cisg
ICAgYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiByZXBseSwg
T2JqZWN0SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRpbWVvdXQgPSAxX3Ms
IE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlvbnMgPSB7IH0pCisg
ICAgeworICAgICAgICByZXR1cm4gc2VuZFN5bmM8VD4oV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92
ZShyZXBseSksIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgdGltZW91dCwgc2VuZFN5bmNPcHRp
b25zKTsKKyAgICB9CiAKICAgICBJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24oKSBjb25zdAog
ICAgIHsKQEAgLTY3LDYgKzc5LDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNl
aXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBk
ZXN0aW5hdGlvbklELCBJUEM6Ok1lc3NhZ2VSZWNlaXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVz
c2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVp
bnQ2NF90IGRlc3RpbmF0aW9uSUQpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQ
Qzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOworICAgIAorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPgorICAgIHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5n
UmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGlu
YXRpb25JRCwgSVBDOjpNZXNzYWdlUmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAg
YWRkTWVzc2FnZVJlY2VpdmVyKG1lc3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9V
SW50NjQoKSwgcmVjZWl2ZXIpOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KKyAgICB2b2lkIHJlbW92ZU1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBt
ZXNzYWdlUmVjZWl2ZXJOYW1lLCBPYmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisg
ICAgeworICAgICAgICByZW1vdmVNZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwg
ZGVzdGluYXRpb25JRC50b1VJbnQ2NCgpKTsKKyAgICB9CiAKICAgICBlbnVtIGNsYXNzIFN0YXRl
IHsKICAgICAgICAgTGF1bmNoaW5nLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCmluZGV4IGYwNWQ3
OWMwZDAxYjg5ZDZiNjg0OGNhMjUwNmNjZjkxZGNmYjc2NzEuLjY3MDY1OTc2ODYxOGVkNzVmOTgw
YzExYWRhY2E5MWJlMjk5ZTRlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KQEAgLTUyNyw5
NCArNTI3LDk0IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpoYW5kbGVDb250
cm9sbGVkRWxlbWVudElEUmVzcG9uc2UodWludDY0X3QgY29uCiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlBsYXkoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXJQcm94eTo6cGF1c2UodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0g
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQ
bGF5U3RhdGUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4
dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnVi
YmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjcnViYmluZyhjb250ZXh0SWQpLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OkJlZ2luU2NydWJiaW5nKGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6ZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnVi
YmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnViYmluZyhjb250ZXh0SWQpKTsK
IH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlZWtUb1RpbWUodWludDY0
X3QgY29udGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIHRvbGVyYW5jZUJlZm9yZSwgZG91Ymxl
IHRvbGVyYW5jZUFmdGVyKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlcjo6U2Vla1RvVGltZShjb250ZXh0SWQsIHRpbWUsIHRvbGVyYW5jZUJlZm9y
ZSwgdG9sZXJhbmNlQWZ0ZXIpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0
aW1lLCB0b2xlcmFuY2VCZWZvcmUsIHRvbGVyYW5jZUFmdGVyKSk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJs
ZSB0aW1lKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhj
b250ZXh0SWQsIHRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OmJlZ2luU2Nhbm5pbmdGb3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5pbmdGb3J3
YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0ZvcndhcmQoY29udGV4
dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjYW5u
aW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCkpOwog
fQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nhbm5pbmcodWludDY0
X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7Cisg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY2Fu
bmluZyhjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6
OnNlbGVjdEF1ZGlvTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRl
eCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2VsZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0
X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihjb250
ZXh0SWQsIGluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29u
dGV4dElkLCBpbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
dG9nZ2xlUGljdHVyZUluUGljdHVyZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQaWN0dXJlSW5Q
aWN0dXJlKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShj
b250ZXh0SWQpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2ds
ZU11dGVkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6VG9nZ2xlTXV0ZWQoY29udGV4dElkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpzZXRNdXRlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCiB7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRN
dXRlZChjb250ZXh0SWQsIG11dGVkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRNdXRlZChjb250ZXh0SWQs
IG11dGVkKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRWb2x1
bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdm9sdW1lKQogewotICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwg
dm9sdW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRWb2x1bWUoY29udGV4dElkLCB2b2x1bWUpKTsKIH0K
IAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFBsYXlpbmdPblNlY29uZFNj
cmVlbih1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCiB7CiAgICAgaWYgKG1fcGFnZSkK
LSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpT
ZXRQbGF5aW5nT25TZWNvbmRTY3JlZW4oY29udGV4dElkLCB2YWx1ZSksIG1fcGFnZS0+cGFnZUlE
KCkpOworICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI6OlNldFBsYXlpbmdPblNlY29uZFNjcmVlbihjb250ZXh0SWQsIHZhbHVlKSk7CiB9CiAKIHZv
aWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpyZXF1ZXN0Q29udHJvbGxlZEVsZW1lbnRJ
RCgpCiB7CiAgICAgaWYgKG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKQotICAgICAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkhhbmRsZUNvbnRyb2xs
ZWRFbGVtZW50SURSZXF1ZXN0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5w
YWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6SGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlcXVlc3QobV9jb250cm9sc01hbmFn
ZXJDb250ZXh0SWQpKTsKIH0KIAogUGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y29udHJvbHNNYW5hZ2VySW50ZXJmYWNlKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNj
cmVlbk1hbmFnZXJQcm94eS5tbQppbmRleCA2YmE0NzllMDYwYTA5NmM0Mzk1MWVhNzRiZjg5N2Jh
NjcxNjg5ZjdlLi5jOGQ2NWMzNjJhYWM4MmM2NDExOTUxMTY0OThhMTE3OWM1MzNlNDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5Lm1tCkBAIC02MjAsNDMgKzYyMCw0MyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1hbmFnZXJQcm94eTo6cHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCkKIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJlcXVlc3RGdWxs
c2NyZWVuTW9kZSh1aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQog
ewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKGNvbnRleHRJZCwgbW9kZSwgZmluaXNoZWRXaXRoTWVkaWEpLCBt
X3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OlJlcXVlc3RGdWxsc2NyZWVuTW9kZShjb250ZXh0SWQsIG1vZGUsIGZpbmlz
aGVkV2l0aE1lZGlhKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpy
ZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpSZXF1ZXN0VXBkYXRlSW5s
aW5lUmVjdChjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RVcGRhdGVJbmxpbmVSZWN0
KGNvbnRleHRJZCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6cmVx
dWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRl
bnRMYXllcihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJlcXVlc3RWaWRlb0NvbnRlbnRMYXll
cihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OnJl
dHVyblZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OlJldHVyblZpZGVvQ29udGVu
dExheWVyKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmV0dXJuVmlkZW9Db250ZW50TGF5ZXIo
Y29udGV4dElkKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpkaWRT
ZXR1cEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRl
eHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6Vmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkU2V0dXBGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogfQog
CiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6d2lsbEV4aXRGdWxsc2NyZWVuKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVs
bHNjcmVlbk1hbmFnZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXI6OldpbGxFeGl0RnVsbHNjcmVlbihjb250ZXh0SWQpKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OmRpZEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkK
IHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRp
ZEV4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RGlkRXhpdEZ1bGxzY3Jl
ZW4oY29udGV4dElkKSk7CiAgICAgbV9wYWdlLT5kaWRFeGl0RnVsbHNjcmVlbigpOwogfQogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6ZGlkRW50ZXJGdWxsc2NyZWVuKHVpbnQ2
NF90IGNvbnRleHRJZCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNj
cmVlbk1hbmFnZXI6OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6
OkRpZEVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICBtX3BhZ2UtPmRpZEVudGVyRnVs
bHNjcmVlbigpOwogfQogCkBAIC02NzAsNyArNjcwLDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyUHJveHk6OmRpZENsZWFudXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAg
ICBbQ0FUcmFuc2FjdGlvbiBmbHVzaF07CiAgICAgW21vZGVsLT5sYXllckhvc3RWaWV3KCkgcmVt
b3ZlRnJvbVN1cGVydmlld107CiAgICAgbW9kZWwtPnNldExheWVySG9zdFZpZXcobnVsbHB0cik7
Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpEaWRD
bGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3Bh
Z2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OkRpZENsZWFudXBGdWxs
c2NyZWVuKGNvbnRleHRJZCkpOwogCiAgICAgaW50ZXJmYWNlLT5zZXRNb2RlKEhUTUxNZWRpYUVs
ZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOwogICAgIHJlbW92ZUNsaWVudEZv
ckNvbnRleHQoY29udGV4dElkKTsKQEAgLTY4OCwyNSArNjg4LDI1IEBAIHZvaWQgVmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpzZXRWaWRlb0xheWVyRnJhbWUodWludDY0X3QgY29udGV4dElk
LCBXZWJDb3JlCiAgICAgICAgIG1hY2hfcG9ydF9uYW1lX3QgZmVuY2VQb3J0ID0gZmVuY2VTZW5k
UmlnaHQubGVha1NlbmRSaWdodCgpOwogI2VuZGlmCiAKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyRnJhbWVGZW5jZWQo
Y29udGV4dElkLCBmcmFtZSwgSVBDOjpBdHRhY2htZW50KGZlbmNlUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NT1ZFX1NFTkQpKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0VmlkZW9MYXllckZyYW1lRmVuY2Vk
KGNvbnRleHRJZCwgZnJhbWUsIElQQzo6QXR0YWNobWVudChmZW5jZVBvcnQsIE1BQ0hfTVNHX1RZ
UEVfTU9WRV9TRU5EKSkpOwogICAgIH0KIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
UHJveHk6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KHVpbnQ2NF90IGNvbnRleHRJZCwgV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6VmlkZW9HcmF2aXR5IGdyYXZpdHkpCiB7Ci0gICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpTZXRWaWRlb0xheWVyR3Jhdml0
eUVudW0oY29udGV4dElkLCAodW5zaWduZWQpZ3Jhdml0eSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6U2V0Vmlk
ZW9MYXllckdyYXZpdHlFbnVtKGNvbnRleHRJZCwgKHVuc2lnbmVkKWdyYXZpdHkpKTsKIH0KIAog
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZCh1
aW50NjRfdCBjb250ZXh0SWQsIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIG1fcGFnZS0+dWlDbGllbnQoKS5oYXNWaWRlb0lu
UGljdHVyZUluUGljdHVyZURpZENoYW5nZShtX3BhZ2UsIG1vZGUgJiBNZWRpYVBsYXllckVudW1z
OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSk7Ci0gICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQo
Y29udGV4dElkLCBtb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpGdWxsc2NyZWVuTW9kZUNoYW5nZWQoY29u
dGV4dElkLCBtb2RlKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojpm
dWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUodWludDY0X3QgY29udGV4dElkKQogewogICAgIGJv
b2wgaXNWaWV3VmlzaWJsZSA9IG1fcGFnZS0+aXNWaWV3VmlzaWJsZSgpOwotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNjcmVlbk1heVJldHVy
blRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSksIG1fcGFnZS0+cGFnZUlEKCkpOwor
ICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6RnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKGNvbnRleHRJZCwgaXNWaWV3VmlzaWJsZSkpOwogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJ
bXBsLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5k
ZXggMmFhNzQ4ZjAwNGYyMjJhMDFkZGI3YWM4ZWVlNzEzMmNhNzg4OTBjYS4uMDhhM2QzMDhkM2E1
MGYxOTQ1NDRjMTNlNzkxYjM2YTcxM2IzZDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTE5OTcsMTMgKzE5OTcsMTMgQEAgZmxvYXQgV2Vi
Vmlld0ltcGw6OmludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKCkgY29uc3QKIAogdm9pZCBXZWJW
aWV3SW1wbDo6d2luZG93RGlkT3JkZXJPZmZTY3JlZW4oKQogewotICAgIExPRyhBY3Rpdml0eVN0
YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgd2luZG93RGlkT3JkZXJPZmZTY3JlZW4i
LCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZp
ZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT2ZmU2NyZWVuIiwgdGhpcywgbV9w
YWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRD
aGFuZ2UoeyBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUsIFdlYkNvcmU6OkFjdGl2
aXR5U3RhdGU6OldpbmRvd0lzQWN0aXZlIH0pOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjp3aW5k
b3dEaWRPcmRlck9uU2NyZWVuKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJ
bXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlzLCBtX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZpZXdJbXBsICVwIChwYWdl
ICVsbHUpIHdpbmRvd0RpZE9yZGVyT25TY3JlZW4iLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpLnRv
VUludDY0KCkpOwogICAgIG1fcGFnZS0+YWN0aXZpdHlTdGF0ZURpZENoYW5nZSh7IFdlYkNvcmU6
OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSwgV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6V2luZG93
SXNBY3RpdmUgfSk7CiB9CiAKQEAgLTIwNzEsNyArMjA3MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6
OndpbmRvd0RpZENoYW5nZUxheWVySG9zdGluZygpCiAKIHZvaWQgV2ViVmlld0ltcGw6OndpbmRv
d0RpZENoYW5nZU9jY2x1c2lvblN0YXRlKCkKIHsKLSAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldl
YlZpZXdJbXBsICVwIChwYWdlICVsbHUpIHdpbmRvd0RpZENoYW5nZU9jY2x1c2lvblN0YXRlIiwg
dGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3
SW1wbCAlcCAocGFnZSAlbGx1KSB3aW5kb3dEaWRDaGFuZ2VPY2NsdXNpb25TdGF0ZSIsIHRoaXMs
IG1fcGFnZS0+cGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgbV9wYWdlLT5hY3Rpdml0eVN0YXRl
RGlkQ2hhbmdlKFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OklzVmlzaWJsZSk7CiB9CiAKQEAgLTIy
MzQsMTkgKzIyMzQsMTkgQEAgdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZENoYW5nZUJhY2tpbmdQ
cm9wZXJ0aWVzKCkKIAogdm9pZCBXZWJWaWV3SW1wbDo6dmlld0RpZEhpZGUoKQogewotICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgdmlld0RpZEhpZGUi
LCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0ZSwgIldlYlZp
ZXdJbXBsICVwIChwYWdlICVsbHUpIHZpZXdEaWRIaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQo
KS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29y
ZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6dmll
d0RpZFVuaGlkZSgpCiB7Ci0gICAgTE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAo
cGFnZSAlbGx1KSB2aWV3RGlkVW5oaWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
TE9HKEFjdGl2aXR5U3RhdGUsICJXZWJWaWV3SW1wbCAlcCAocGFnZSAlbGx1KSB2aWV3RGlkVW5o
aWRlIiwgdGhpcywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFj
dGl2aXR5U3RhdGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsK
IH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6YWN0aXZlU3BhY2VEaWRDaGFuZ2UoKQogewotICAgIExP
RyhBY3Rpdml0eVN0YXRlLCAiV2ViVmlld0ltcGwgJXAgKHBhZ2UgJWxsdSkgYWN0aXZlU3BhY2VE
aWRDaGFuZ2UiLCB0aGlzLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBMT0coQWN0aXZpdHlTdGF0
ZSwgIldlYlZpZXdJbXBsICVwIChwYWdlICVsbHUpIGFjdGl2ZVNwYWNlRGlkQ2hhbmdlIiwgdGhp
cywgbV9wYWdlLT5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKICAgICBtX3BhZ2UtPmFjdGl2aXR5U3Rh
dGVEaWRDaGFuZ2UoV2ViQ29yZTo6QWN0aXZpdHlTdGF0ZTo6SXNWaXNpYmxlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5nQXJlYVByb3h5LmNwcAppbmRleCBiNWI0ZTBh
ZDIyMTYyYzlkMGMwMGM5OGNkODM5MzUwOWZjZjZkZjgxLi5lY2Y1ZGEwYTkxMGI2Mzk0ODBhYzMy
YTVmYjFiMGZiMGNmZmZmNmViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9E
cmF3aW5nQXJlYVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9EcmF3aW5n
QXJlYVByb3h5LmNwcApAQCAtNDgsMTIgKzQ4LDEyIEBAIERyYXdpbmdBcmVhUHJveHk6OkRyYXdp
bmdBcmVhUHJveHkoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIFdlYlBhZ2VQcm94eSYgd2ViUGFnZVBy
CiAgICAgLCBtX3ZpZXdFeHBvc2VkUmVjdENoYW5nZWRUaW1lcihSdW5Mb29wOjptYWluKCksIHRo
aXMsICZEcmF3aW5nQXJlYVByb3h5Ojp2aWV3RXhwb3NlZFJlY3RDaGFuZ2VkVGltZXJGaXJlZCkK
ICNlbmRpZgogewotICAgIHByb2Nlc3MuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3
aW5nQXJlYVByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2
NCgpLCAqdGhpcyk7CisgICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLCAqdGhp
cyk7CiB9CiAKIERyYXdpbmdBcmVhUHJveHk6On5EcmF3aW5nQXJlYVByb3h5KCkKIHsKLSAgICBw
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBw
cm9jZXNzKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYVByb3h5
OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7CiB9CiAKIGJvb2wgRHJhd2lu
Z0FyZWFQcm94eTo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplLCBjb25zdCBJbnRTaXplJiBz
Y3JvbGxEZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGU4NTI1M2IyMGE5NjEzYmQ5N2M0MGRhNDdm
ZTgzNTUzOGI4ZTc4ZmYuLjM0NmFjNjcyMGE2NTg4MWZkMDk4YjVjMzRmMWJkOGFkZDljY2UwOWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMzExLDcgKzMxMSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6ZGlkQ3JlYXRlTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgSVBDOjpB
dHRhCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2NF90
IGNoYWxsZW5nZUlEKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNvcmVDaGFsbGVuZ2UsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKQogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBpZiAo
YXV0byogc2VydmljZVdvcmtlclByb2Nlc3NQcm94eSA9IG1fcHJvY2Vzc1Bvb2wuc2VydmljZVdv
cmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQocGFnZUlEKSkgewpAQCAtMzcxLDcgKzM3MSw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVu
Y2hlciogbGF1bmNoZXIsIElQQzo6Q29uCiAjZW5kaWYKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgV2ViQ29yZTo6U2hvdWxkU2Ft
cGxlIHNob3VsZFNhbXBsZSkKK3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3Rp
Y01lc3NhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1w
bGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdl
KHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVjayBiZWNhdXNlIGJ5
IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBhZ2UgbWF5IGJlIGdv
bmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtMzgyLDcgKzM4Miw3IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3Qg
cGFnZUlELCBjb25zdCBTdHJpbmcmIG1lCiAgICAgcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2Uo
bWVzc2FnZSwgZGVzY3JpcHRpb24sIHNob3VsZFNhbXBsZSk7CiB9CiAKLXZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KHVpbnQ2NF90IHBhZ2VJ
RCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCB1aW50
MzJfdCByZXN1bHQsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCit2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3VsdChQYWdlSWRl
bnRpZmllciBwYWdlSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNj
cmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2Ft
cGxlKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFn
ZShwYWdlSUQpOwogICAgIC8vIEZJWE1FOiBXZSBkbyB0aGlzIG51bGwtY2hlY2sgYmVjYXVzZSBi
eSB0aGUgdGltZSB0aGUgZGVjaXNpb24gdG8gbG9nIGlzIG1hZGUsIHRoZSBwYWdlIG1heSBiZSBn
b25lLiBXZSBzaG91bGQgcmVmYWN0b3IgdG8gYXZvaWQgdGhpcywKQEAgLTM5Myw3ICszOTMsNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFJlc3Vs
dCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0CiAgICAgcGFnZS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoUmVzdWx0KG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCByZXN1bHQsIHNob3VsZFNhbXBsZSk7CiB9
CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFs
dWUodWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
ZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBX
ZWJDb3JlOjpTaG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQordm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShQYWdlSWRlbnRpZmllciBwYWdlSUQs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBs
ZSBzaG91bGRTYW1wbGUpCiB7CiAgICAgV2ViUGFnZVByb3h5KiBwYWdlID0gV2ViUHJvY2Vzc1By
b3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAgICAgLy8gRklYTUU6IFdlIGRvIHRoaXMgbnVsbC1jaGVj
ayBiZWNhdXNlIGJ5IHRoZSB0aW1lIHRoZSBkZWNpc2lvbiB0byBsb2cgaXMgbWFkZSwgdGhlIHBh
Z2UgbWF5IGJlIGdvbmUuIFdlIHNob3VsZCByZWZhY3RvciB0byBhdm9pZCB0aGlzLApAQCAtNzM2
LDcgKzczNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0R3JhbmRmYXRoZXJlZChQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzCiAgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0R3JhbmRmYXRoZXJlZChzZXNzaW9uSUQs
IHJlc291cmNlRG9tYWluLCBpc0dyYW5kZmF0aGVyZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHN1YkZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9w
RnJhbWVEb21haW4sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlcXVlc3RTdG9yYWdlQWNjZXNzQ29u
ZmlybShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiBzdWJGcmFtZURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
cEZyYW1lRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2Vi
UGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtOTA4LDcgKzkwOCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6bm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRy
eUZpbmlzaGVkKHVuc2lnbmVkCiAgICAgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlz
dGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKG1lc3NhZ2VCb2R5
KS5wdHIoKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
RG9tYWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zl
cjo6RmxhZz4gbmF2aWdhdGlvbkRhdGFUcmFuc2ZlciwgdWludDY0X3QgcGFnZUlEKQordm9pZCBO
ZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2Zl
cihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9t
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxXZWJD
b3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiBuYXZpZ2F0aW9uRGF0
YVRyYW5zZmVyLCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgaWYgKCFjYW5TZW5kTWVz
c2FnZSgpKQogICAgICAgICByZXR1cm47CkBAIC05MTYsNyArOTE2LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6
OlNlc3Npb25JRAogICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpEaWRDb21taXRD
cm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihzZXNzaW9uSUQsIGZyb21Eb21haW4sIHRvRG9t
YWluLCBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCBwYWdlSUQpLCAwKTsKIH0KIAotdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZy
b21QcmV2YWxlbnRSZXNvdXJjZSh1aW50NjRfdCBwYWdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVu
dFJlc291cmNlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBpZiAoIWNhblNlbmRNZXNz
YWdlKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzViOWU2NjU0ZjNkNjQyZjZm
Nzg5NjVhZGVkYjIyOTAzY2E1MDU1My4uOTcwODhlOWE0ZWVkYzkwNzQ1OTg3Zjc3YzM0MzgzNDg1
NDA1Yjk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTgyLDggKzgyLDYgQEAgcHVibGljOgogICAgIHVzaW5n
IE5hdmlnYXRlZFRvRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47CiAgICAgdXNp
bmcgRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW47CiAgICAgdXNpbmcgT3BlbmVyRG9tYWluID0gV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW47
Ci0gICAgdXNpbmcgT3BlbmVyUGFnZUlEID0gdWludDY0X3Q7Ci0gICAgdXNpbmcgUGFnZUlEID0g
dWludDY0X3Q7CiAgICAgdXNpbmcgRnJhbWVJRCA9IHVpbnQ2NF90OwogCiAgICAgZXhwbGljaXQg
TmV0d29ya1Byb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYpOwpAQCAtMTMyLDcgKzEzMCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNldFByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRWZXJ5UHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9u
SUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIGdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+IGRvbWFpbnMpPiYmKTsKLSAgICB2
b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShQYWdlSUQsIEZyYW1lSUQsIGNvbnN0IFN1
YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzQ29uZmlybShXZWJD
b3JlOjpQYWdlSWRlbnRpZmllciwgRnJhbWVJRCwgY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25z
dCBUb3BGcmFtZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogICAg
IHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5
QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1v
ZGlmaWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKQEAgLTE0Niw4ICsxNDQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2RlKFBBTDo6U2Vzc2lvbklELCBib29sIGRlYnVn
TW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldFNob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKFBBTDo6U2Vzc2lvbklELCBi
b29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzZXRDYWNoZU1h
eEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIGRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0
YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklELCBjb25zdCBOYXZpZ2F0ZWRGcm9tRG9tYWluJiwgY29u
c3QgTmF2aWdhdGVkVG9Eb21haW4mLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdh
dGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4sIFBhZ2VJRCk7Ci0gICAgdm9pZCBkaWRDb21taXRDcm9z
c1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShQYWdlSUQpOwor
ICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNz
aW9uSUQsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBjb25zdCBOYXZpZ2F0ZWRUb0RvbWFp
biYsIE9wdGlvblNldDxXZWJDb3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpG
bGFnPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOworICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVzb3VyY2UoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIpOwogICAgIHZvaWQgc2V0Q3Jvc3NTaXRlTG9hZFdpdGhMaW5rRGVjb3JhdGlv
bkZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IE5hdmlnYXRlZEZyb21Eb21haW4mLCBj
b25zdCBOYXZpZ2F0ZWRUb0RvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCByZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQ
QUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRl
bGV0ZUNvb2tpZXNGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYsIGJvb2wgaW5jbHVkZUh0dHBPbmx5Q29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKQEAgLTIwOSwxMyArMjA3LDEzIEBAIHByaXZhdGU6CiAgICAgLy8gTWVzc2FnZSBo
YW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwogICAgIHZvaWQgZGlkQ3JlYXRlTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoY29uc3QgSVBDOjpBdHRhY2htZW50Jik7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWludDY0X3QgcGFnZUlELCB1aW50
NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCB1aW50NjRf
dCBjaGFsbGVuZ2VJRCk7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKICAgICB2b2lk
IGRpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURh
dGEmKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQp
OwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2UodWludDY0X3QgcGFnZUlELCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6
OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQo
dWludDY0X3QgcGFnZUlELCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVz
Y3JpcHRpb24sIHVpbnQzMl90IHJlc3VsdCwgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKLSAgICB2
b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUs
IHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsKKyAg
ICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFdlYkNvcmU6OlNo
b3VsZFNhbXBsZSk7CisgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhSZXN1bHQoV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0LCBXZWJDb3JlOjpTaG91bGRTYW1wbGUpOwor
ICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
ZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3Vs
ZFNhbXBsZSk7CiAgICAgdm9pZCBsb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGRvdWJsZSB2
YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3JlOjpTaG91bGRTYW1wbGUp
OwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgdm9pZCBsb2dUZXN0
aW5nRXZlbnQoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgZXZlbnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDM2NzdiOGY2NWVlZDkzN2JlOWViYzcyNGI2ZjIyYmRh
Mjg1MzVhNjEuLjA0N2RmZTg4NzgxYmJjYjY4MjAxNjUwOTFiODY2ZDEzMzZmODhjYmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKIG1lc3NhZ2VzIC0+
IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZENyZWF0ZU5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKElQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRp
ZmllcikKIAotICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
IGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCisgICAgRGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCB1aW50
NjRfdCBjaGFsbGVuZ2VJRCkKIAogICAgIERpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpCiAgICAgRGlk
RGVsZXRlV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTM1LDkgKzM1LDkgQEAg
bWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKIAogICAgICMg
RGlhZ25vc3RpYyBtZXNzYWdlcyBsb2dnaW5nCi0gICAgTG9nRGlhZ25vc3RpY01lc3NhZ2UodWlu
dDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBlbnVtOmJv
b2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKLSAgICBMb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhSZXN1bHQodWludDY0X3QgcGFnZUlELCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5n
IGRlc2NyaXB0aW9uLCB1aW50MzJfdCByZXN1bHQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRT
YW1wbGUgc2hvdWxkU2FtcGxlKQotICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKHVp
bnQ2NF90IHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgZG91Ymxl
IHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpT
aG91bGRTYW1wbGUgc2hvdWxkU2FtcGxlKQorICAgIExvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlw
dGlvbiwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRTYW1wbGUpCisgICAg
TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoUmVzdWx0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBh
Z2VJRCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBkZXNjcmlwdGlvbiwgdWludDMyX3QgcmVzdWx0
LCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNob3VsZFNhbXBsZSkKKyAgICBMb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgZGVzY3JpcHRpb24sIGRvdWJsZSB2YWx1ZSwgdW5zaWdu
ZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkU2FtcGxlIHNo
b3VsZFNhbXBsZSkKICAgICBMb2dHbG9iYWxEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShTdHJp
bmcgbWVzc2FnZSwgU3RyaW5nIGRlc2NyaXB0aW9uLCBkb3VibGUgdmFsdWUsIHVuc2lnbmVkIHNp
Z25pZmljYW50RmlndXJlcywgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZFNhbXBsZSBzaG91bGRT
YW1wbGUpCiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpAQCAtNDYsOSAr
NDYsOSBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2FjeVJlY2VpdmVyIHsK
ICAgICBOb3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNo
ZWQoKQogICAgIE5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0Zpbmlz
aGVkKCkKICAgICBOb3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
dW5zaWduZWQgdG90YWxQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIHRvdGFsUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM1N1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnMpCi0gICAgUmVxdWVzdFN0b3JhZ2VBY2Nlc3NDb25maXJtKHVpbnQ2NF90
IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3Vi
RnJhbWVEb21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAt
PiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nlc3MpIEFzeW5jCisgICAgUmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJ
RCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVEb21haW4sIFdlYkNvcmU6OlJl
Z2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9vbCB1c2VyRGlkR3JhbnRBY2Nl
c3MpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJvY2Vzc0ZvclJlZ2lzdHJhYmxl
RG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YUZldGNo
T3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4g
ZG9tYWlucykgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnNX
aXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykgQXN5bmMKLSAgICBEaWRDb21taXRDcm9zc1NpdGVMb2Fk
V2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZSh1aW50NjRfdCBwYWdlSUQpCisg
ICAgRGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJGcm9tUHJldmFsZW50UmVz
b3VyY2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogI2VuZGlmCiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKICAgICBDb250ZW50RXh0ZW5zaW9uUnVsZXMoV2ViS2l0OjpV
c2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFn
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5v
dGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKaW5kZXggZmFlMWYzZmNhODg4NzE5YmU3ZjYyNzJk
MjA1NzIwYmI4OTAxNzdmZS4uMmFhZmYxZWMyYTY1NDkwZDg4NTQzOTk2YmY4MTAyYzJkNDljNTA0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApAQCAtOTcsNyAr
OTcsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eTo6c2hvdyhXZWJQYWdlUHJv
eHkqIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgdGl0bAogewogICAgIHVpbnQ2NF90IGdsb2JhbE5v
dGlmaWNhdGlvbklEID0gZ2VuZXJhdGVHbG9iYWxOb3RpZmljYXRpb25JRCgpOwogICAgIGF1dG8g
bm90aWZpY2F0aW9uID0gV2ViTm90aWZpY2F0aW9uOjpjcmVhdGUodGl0bGUsIGJvZHksIGljb25V
UkwsIHRhZywgbGFuZywgZGlyLCBvcmlnaW5TdHJpbmcsIGdsb2JhbE5vdGlmaWNhdGlvbklEKTsK
LSAgICBzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIgPSBz
dGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsKKyAg
ICBzdGQ6OnBhaXI8UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90PiBub3RpZmljYXRpb25JRFBhaXIg
PSBzdGQ6Om1ha2VfcGFpcih3ZWJQYWdlLT5wYWdlSUQoKSwgcGFnZU5vdGlmaWNhdGlvbklEKTsK
ICAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcC5zZXQoZ2xvYmFsTm90aWZpY2F0aW9uSUQsIG5v
dGlmaWNhdGlvbklEUGFpcik7CiAgICAgbV9ub3RpZmljYXRpb25zLnNldChub3RpZmljYXRpb25J
RFBhaXIsIHN0ZDo6bWFrZV9wYWlyKGdsb2JhbE5vdGlmaWNhdGlvbklELCBub3RpZmljYXRpb24u
Y29weVJlZigpKSk7CiAgICAgbV9wcm92aWRlci0+c2hvdygqd2ViUGFnZSwgbm90aWZpY2F0aW9u
LmdldCgpKTsKQEAgLTExOSwxMiArMTE5LDEyIEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5OjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKFdlYlBhZ2VQcm94eSogd2ViUGFnZSwKICAg
ICB9CiB9CiAKLXN0YXRpYyBib29sIHBhZ2VJRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90LCB1aW50NjRfdCBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKK3N0
YXRpYyBib29sIHBhZ2VJRHNNYXRjaChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90LCBQ
YWdlSWRlbnRpZmllciBkZXNpcmVkUGFnZUlELCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JikKIHsK
ICAgICByZXR1cm4gcGFnZUlEID09IGRlc2lyZWRQYWdlSUQ7CiB9CiAKLXN0YXRpYyBib29sIHBh
Z2VBbmROb3RpZmljYXRpb25JRHNNYXRjaCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHBhZ2VO
b3RpZmljYXRpb25JRCwgdWludDY0X3QgZGVzaXJlZFBhZ2VJRCwgY29uc3QgVmVjdG9yPHVpbnQ2
NF90PiYgZGVzaXJlZFBhZ2VOb3RpZmljYXRpb25JRHMpCitzdGF0aWMgYm9vbCBwYWdlQW5kTm90
aWZpY2F0aW9uSURzTWF0Y2goUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90
aWZpY2F0aW9uSUQsIFBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKQogewogICAgIHJldHVybiBwYWdl
SUQgPT0gZGVzaXJlZFBhZ2VJRCAmJiBkZXNpcmVkUGFnZU5vdGlmaWNhdGlvbklEcy5jb250YWlu
cyhwYWdlTm90aWZpY2F0aW9uSUQpOwogfQpAQCAtMTQxLDEzICsxNDEsMTMgQEAgdm9pZCBXZWJO
b3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFyTm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkq
IHdlYlBhZ2UsIGNvbnMKIAogdm9pZCBXZWJOb3RpZmljYXRpb25NYW5hZ2VyUHJveHk6OmNsZWFy
Tm90aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqIHdlYlBhZ2UsIGNvbnN0IFZlY3Rvcjx1aW50NjRf
dD4mIHBhZ2VOb3RpZmljYXRpb25JRHMsIE5vdGlmaWNhdGlvbkZpbHRlckZ1bmN0aW9uIGZpbHRl
ckZ1bmN0aW9uKQogewotICAgIHVpbnQ2NF90IHRhcmdldFBhZ2VJRCA9IHdlYlBhZ2UtPnBhZ2VJ
RCgpOworICAgIGF1dG8gdGFyZ2V0UGFnZUlEID0gd2ViUGFnZS0+cGFnZUlEKCk7CiAKICAgICBW
ZWN0b3I8dWludDY0X3Q+IGdsb2JhbE5vdGlmaWNhdGlvbklEczsKICAgICBnbG9iYWxOb3RpZmlj
YXRpb25JRHMucmVzZXJ2ZUNhcGFjaXR5KG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLnNpemUoKSk7
CiAKICAgICBmb3IgKGF1dG8gaXQgPSBtX25vdGlmaWNhdGlvbnMuYmVnaW4oKSwgZW5kID0gbV9u
b3RpZmljYXRpb25zLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgdWludDY0X3Qg
d2ViUGFnZUlEID0gaXQtPmtleS5maXJzdDsKKyAgICAgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+
a2V5LmZpcnN0OwogICAgICAgICB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQgPSBpdC0+a2V5
LnNlY29uZDsKICAgICAgICAgaWYgKCFmaWx0ZXJGdW5jdGlvbih3ZWJQYWdlSUQsIHBhZ2VOb3Rp
ZmljYXRpb25JRCwgdGFyZ2V0UGFnZUlELCBwYWdlTm90aWZpY2F0aW9uSURzKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uTWFu
YWdlclByb3h5Ojpwcm92aWRlckRpZFNob3dOb3RpZmljYXRpb24odWludDY0X3QgZ2xvYmFsTm90
CiAgICAgaWYgKGl0ID09IG1fZ2xvYmFsTm90aWZpY2F0aW9uTWFwLmVuZCgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CisgICAg
YXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFnZVByb3h5KiB3ZWJQ
YWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAgICAgaWYgKCF3ZWJQ
YWdlKQogICAgICAgICByZXR1cm47CkBAIC0xODUsNyArMTg1LDcgQEAgdm9pZCBXZWJOb3RpZmlj
YXRpb25NYW5hZ2VyUHJveHk6OnByb3ZpZGVyRGlkQ2xpY2tOb3RpZmljYXRpb24odWludDY0X3Qg
Z2xvYmFsTm8KICAgICBpZiAoaXQgPT0gbV9nbG9iYWxOb3RpZmljYXRpb25NYXAuZW5kKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICB1aW50NjRfdCB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUu
Zmlyc3Q7CisgICAgYXV0byB3ZWJQYWdlSUQgPSBpdC0+dmFsdWUuZmlyc3Q7CiAgICAgV2ViUGFn
ZVByb3h5KiB3ZWJQYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHdlYlBhZ2VJRCk7CiAg
ICAgaWYgKCF3ZWJQYWdlKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25N
YW5hZ2VyUHJveHkuaAppbmRleCBmNzI3ZWQ0NzJjNWJlZmE1YTIzZjNlMDQ0ZTBmZDQxOTA3MDQw
NGVmLi4xMTU3ODFlNDMzM2M4NTY4NGZiY2E1Y2E4NDE3NjU2NDRhOGM3MTQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1h
bmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMv
V2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0U3VwcGxlbWVudC5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uQ2xpZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC03OCw3ICs3OSw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgZXhwbGljaXQgV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5KFdlYlByb2Nlc3NQ
b29sKik7CiAKLSAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiko
dWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9uSUQsIHVpbnQ2NF90IGRl
c2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0
aW9uSURzKTsKKyAgICB0eXBlZGVmIGJvb2wgKCpOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbiko
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBwYWdlTm90aWZpY2F0aW9u
SUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGRlc2lyZWRQYWdlSUQsIGNvbnN0IFZlY3Rvcjx1
aW50NjRfdD4mIGRlc2lyZWRQYWdlTm90aWZpY2F0aW9uSURzKTsKICAgICB2b2lkIGNsZWFyTm90
aWZpY2F0aW9ucyhXZWJQYWdlUHJveHkqLCBjb25zdCBWZWN0b3I8dWludDY0X3Q+JiBwYWdlTm90
aWZpY2F0aW9uSURzLCBOb3RpZmljYXRpb25GaWx0ZXJGdW5jdGlvbik7CiAKICAgICAvLyBXZWJD
b250ZXh0U3VwcGxlbWVudApAQCAtODgsOSArODksOSBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPEFQSTo6Tm90aWZpY2F0aW9uUHJvdmlkZXI+IG1fcHJvdmlkZXI7CiAgICAgLy8g
UGFpciBjb21wcmlzZWQgb2Ygd2ViIHBhZ2UgSUQgYW5kIHRoZSB3ZWIgcHJvY2VzcydzIG5vdGlm
aWNhdGlvbiBJRAotICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6cGFpcjx1aW50NjRfdCwgdWlu
dDY0X3Q+PiBtX2dsb2JhbE5vdGlmaWNhdGlvbk1hcDsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBz
dGQ6OnBhaXI8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90Pj4gbV9nbG9iYWxOb3Rp
ZmljYXRpb25NYXA7CiAgICAgLy8gS2V5IHBhaXIgY29tcHJpc2VkIG9mIHdlYiBwYWdlIElEIGFu
ZCB0aGUgd2ViIHByb2Nlc3MncyBub3RpZmljYXRpb24gSUQ7IHZhbHVlIHBhaXIgY29tcHJpc2Vk
IG9mIGdsb2JhbCBub3RpZmljYXRpb24gSUQsIGFuZCBub3RpZmljYXRpb24gb2JqZWN0Ci0gICAg
SGFzaE1hcDxzdGQ6OnBhaXI8dWludDY0X3QsIHVpbnQ2NF90Piwgc3RkOjpwYWlyPHVpbnQ2NF90
LCBSZWZQdHI8V2ViTm90aWZpY2F0aW9uPj4+IG1fbm90aWZpY2F0aW9uczsKKyAgICBIYXNoTWFw
PHN0ZDo6cGFpcjxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3Q+LCBzdGQ6OnBhaXI8
dWludDY0X3QsIFJlZlB0cjxXZWJOb3RpZmljYXRpb24+Pj4gbV9ub3RpZmljYXRpb25zOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
cm92aXNpb25hbFBhZ2VQcm94eS5jcHAKaW5kZXggNDVhMWYwZjViNWNiODBjY2M5YTBjZmJhMTYx
M2U0NGM4NzRhNTYwNy4uN2Q1NDhhNTMyMWVlY2JmYzY0YmMxNGU5MTY4ODFlOTkwYzk2OTBkNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5LmNw
cApAQCAtNDcsNiArNDcsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChjaGFubmVsLCBm
bXQsIC4uLikgUkVMRUFTRV9MT0dfSUYobV9wYWdlLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBjaGFubmVsLCAiJXAgLSBQcm92aXNpb25hbFBhZ2VQcm94eTo6IiBmbXQsIHRoaXMsICMjX19W
QV9BUkdTX18pCiAjZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoY2hhbm5lbCwg
Zm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKG1fcGFnZS5pc0Fsd2F5c09uTG9nZ2luZ0Fs
bG93ZWQoKSwgY2hhbm5lbCwgIiVwIC0gUHJvdmlzaW9uYWxQYWdlUHJveHk6OiIgZm10LCB0aGlz
LCAjI19fVkFfQVJHU19fKQogCkBAIC02MSw3ICs2Myw3IEBAIFByb3Zpc2lvbmFsUGFnZVByb3h5
OjpQcm92aXNpb25hbFBhZ2VQcm94eShXZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxXZWJQcm9jZXNz
UHJvCiAgICAgLCBtX3N1c3BlbnNpb25Ub2tlbihtX3Byb2Nlc3MtPnRocm90dGxlcigpLmZvcmVn
cm91bmRBY3Rpdml0eVRva2VuKCkpCiAjZW5kaWYKIHsKLSAgICBSRUxFQVNFX0xPR19FUlJPUl9J
Rl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zpc2lvbmFsUGFnZVByb3h5OiBwYWdlSUQg
PSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQgIiBzdXNwZW5kZWRQYWdlOiAl
cCIsIG1fcGFnZS5wYWdlSUQoKSwgbmF2aWdhdGlvbklELCBzdXNwZW5kZWRQYWdlLmdldCgpKTsK
KyAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgIlByb3Zp
c2lvbmFsUGFnZVByb3h5OiBwYWdlSUQgPSAlIiBQUkl1NjQgIiBuYXZpZ2F0aW9uSUQgPSAlIiBQ
Ukl1NjQgIiBzdXNwZW5kZWRQYWdlOiAlcCIsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBu
YXZpZ2F0aW9uSUQsIHN1c3BlbmRlZFBhZ2UuZ2V0KCkpOwogCiAgICAgbV9wcm9jZXNzLT5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBtX3BhZ2UucGFnZUlEKCksICp0aGlzKTsKICAgICBtX3Byb2Nlc3MtPmFkZFByb3Zpc2lv
bmFsUGFnZVByb3h5KCp0aGlzKTsKQEAgLTExNyw3ICsxMTksNyBAQCB2b2lkIFByb3Zpc2lvbmFs
UGFnZVByb3h5Ojpjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
KQogCiB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpwcm9jZXNzRGlkVGVybWluYXRlKCkKIHsK
LSAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nl
c3NEaWRUZXJtaW5hdGU6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAg
ICBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgInByb2Nlc3NE
aWRUZXJtaW5hdGU6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0
KCkpOwogICAgIG1fcGFnZS5wcm92aXNpb25hbFByb2Nlc3NEaWRUZXJtaW5hdGUoKTsKIH0KIApA
QCAtMTMyLDcgKzEzNCw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmNhbmNlbCgpCiAg
ICAgaWYgKG1fcHJvdmlzaW9uYWxMb2FkVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJjYW5jZWw6IFNp
bXVsYXRpbmcgYSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgZm9yIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFBy
b2Nlc3NTd2FwcGluZywgImNhbmNlbDogU2ltdWxhdGluZyBhIGRpZEZhaWxQcm92aXNpb25hbExv
YWRGb3JGcmFtZSBmb3IgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50
NjQoKSk7CiAgICAgQVNTRVJUKG1fbWFpbkZyYW1lKTsKICAgICBhdXRvIGVycm9yID0gV2ViS2l0
OjpjYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpOwogICAgIGVycm9yLnNldFR5cGUoV2ViQ29yZTo6
UmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKTsKQEAgLTE1MSwxNCArMTUzLDE0IEBA
IHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmluaXRpYWxpemVXZWJQYWdlKCkKIAogdm9pZCBQ
cm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZERhdGEoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9u
LCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGNvbnN0IFN0cmluZyYgTUlNRVR5cGUs
IGNvbnN0IFN0cmluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgYmFzZVVSTCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmIHdlYnNpdGVQb2xp
Y2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImxv
YWREYXRhOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJsb2FkRGF0YTogcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3BhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAKICAgICBtX3BhZ2UubG9hZERh
dGFXaXRoTmF2aWdhdGlvblNoYXJlZChtX3Byb2Nlc3MuY29weVJlZigpLCBuYXZpZ2F0aW9uLCBk
YXRhLCBNSU1FVHlwZSwgZW5jb2RpbmcsIGJhc2VVUkwsIHVzZXJEYXRhLCBXZWJDb3JlOjpTaG91
bGRUcmVhdEFzQ29udGludWluZ0xvYWQ6OlllcywgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsK
IH0KIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6bG9hZFJlcXVlc3QoQVBJOjpOYXZpZ2F0
aW9uJiBuYXZpZ2F0aW9uLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBXZWJD
b3JlOjpTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5IHNob3VsZE9wZW5FeHRlcm5hbFVSTHNQ
b2xpY3ksIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgT3B0aW9uYWw8V2Vic2l0ZVBvbGljaWVzRGF0
YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJsb2FkUmVxdWVzdDogcGFnZUlEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFn
ZUlEKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAibG9h
ZFJlcXVlc3Q6IHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkp
OwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGNsaWVudC1zaWRlIHJlZGlyZWN0IGNvbnRpbnVpbmcg
aW4gYSBuZXcgcHJvY2VzcywgdGhlbiB0aGUgbmV3IHByb2Nlc3Mgd2lsbCBvdmVyd3JpdGUgdGhl
IGZyb21JdGVtJ3MgVVJMLiBJbiB0aGlzIGNhc2UsCiAgICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1
cmUgd2UgdXBkYXRlIGZyb21JdGVtJ3MgcHJvY2Vzc0lkZW50aWZpZXIgYXMgd2Ugd2FudCBmdXR1
cmUgbmF2aWdhdGlvbnMgdG8gdGhpcyBCYWNrRm9yd2FyZCBpdGVtIHRvIGhhcHBlbiBpbiB0aGUK
QEAgLTE3MSw3ICsxNzMsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5Ojpsb2FkUmVxdWVz
dChBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIFdlYkNvcmU6OlJlcwogCiB2b2lkIFByb3Zp
c2lvbmFsUGFnZVByb3h5Ojpnb1RvQmFja0ZvcndhcmRJdGVtKEFQSTo6TmF2aWdhdGlvbiYgbmF2
aWdhdGlvbiwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYgaXRlbSwgT3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4mJiB3ZWJzaXRlUG9saWNpZXMpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChQcm9jZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9j
ZXNzU3dhcHBpbmcsICJnb1RvQmFja0ZvcndhcmRJdGVtOiBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIAogICAgIGF1dG8gaXRlbVN0YXRlcyA9IG1fcGFn
ZS5iYWNrRm9yd2FyZExpc3QoKS5maWx0ZXJlZEl0ZW1TdGF0ZXMoW3RoaXMsIHRhcmdldEl0ZW0g
PSAmaXRlbV0oYXV0byYgaXRlbSkgewogICAgICAgICBpZiAoYXV0byogcGFnZSA9IGl0ZW0uc3Vz
cGVuZGVkUGFnZSgpKSB7CkBAIC0xOTYsNyArMTk4LDcgQEAgaW5saW5lIGJvb2wgUHJvdmlzaW9u
YWxQYWdlUHJveHk6OnZhbGlkYXRlSW5wdXQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgT3B0aW9u
YWwKIAogdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkQ3JlYXRlTWFpbkZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBp
bmcsICJkaWRDcmVhdGVNYWluRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCksIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ3JlYXRlTWFpbkZyYW1lOiBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLnRvVUludDY0
KCksIGZyYW1lSUQpOwogICAgIEFTU0VSVCghbV9tYWluRnJhbWUpOwogCiAgICAgbV9tYWluRnJh
bWUgPSBXZWJGcmFtZVByb3h5OjpjcmVhdGUobV9wYWdlLCBmcmFtZUlEKTsKQEAgLTIzNCw3ICsy
MzYsNyBAQCB2b2lkIFByb3Zpc2lvbmFsUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbgogICAgIGlmICghdmFsaWRhdGVJbnB1dChm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKFByb2Nlc3NTd2FwcGluZywgImRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
RnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmln
YXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9u
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgbmF2aWdhdGlvbklEID0gJSIgUFJJdTY0LCBtX3BhZ2UucGFnZUlEKCku
dG9VSW50NjQoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklEKTsKICAgICBBU1NFUlQobV9wcm92aXNp
b25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJvdmlzaW9uYWxMb2FkVVJMID0gdXJsOwog
CkBAIC0yNTQsNyArMjU2LDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6ZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnMKICAgICBpZiAoIXZh
bGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklEKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChQcm9jZXNzU3dhcHBpbmcsICJkaWRGYWls
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBhZ2VJRCgpLCBm
cmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
UHJvY2Vzc1N3YXBwaW5nLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQ
Ukl1NjQsIG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQp
OwogICAgIEFTU0VSVCghbV9wcm92aXNpb25hbExvYWRVUkwuaXNOdWxsKCkpOwogICAgIG1fcHJv
dmlzaW9uYWxMb2FkVVJMID0geyB9OwogCkBAIC0yNzAsNyArMjcyLDcgQEAgdm9pZCBQcm92aXNp
b25hbFBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmkKICAgICBpZiAoIXZhbGlkYXRlSW5wdXQoZnJhbWVJRCwgbmF2aWdhdGlvbklE
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNz
U3dhcHBpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0ICIsIG5hdmlnYXRpb25JRCA9ICUiIFBSSXU2NCwgbV9wYWdlLnBh
Z2VJRCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoUHJvY2Vzc1N3YXBwaW5nLCAiZGlkQ29tbWl0TG9hZEZvckZyYW1lOiBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgPSAlIiBQUkl1NjQs
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpLCBmcmFtZUlELCBuYXZpZ2F0aW9uSUQpOwogICAg
IG1fcHJvdmlzaW9uYWxMb2FkVVJMID0geyB9OwogICAgIG1fcHJvY2Vzcy0+cmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9wYWdlLnBhZ2VJRCgpKTsKIApAQCAtMjk1LDcgKzI5Nyw3IEBAIHZvaWQgUHJvdmlzaW9uYWxQ
YWdlUHJveHk6OmRpZENoYW5nZVByb3Zpc2lvbmFsVVJMRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWluCiB9CiAKIHZvaWQgUHJvdmlzaW9uYWxQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25Bc3luYyh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50
aWZpZXIgaWRlbnRpZmllciwKLSAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUlu
Zm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRh
JiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFn
ZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwKICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJl
bmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJl
c3BvbnNlLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiB7
CiAgICAgaWYgKCF2YWxpZGF0ZUlucHV0KGZyYW1lSUQsIG5hdmlnYXRpb25JRCkpCkBAIC0zNDEs
NyArMzQzLDcgQEAgdm9pZCBQcm92aXNpb25hbFBhZ2VQcm94eTo6YmFja0ZvcndhcmRHb1RvSXRl
bShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGUKIH0KIAogdm9pZCBQcm92aXNpb25h
bFBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3Qg
ZnJhbWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50
aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYm
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYg
ZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlE
LAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNl
JiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3Bv
bnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJl
cGx5KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb3Zpc2lvbmFsUGFnZVByb3h5
LmgKaW5kZXggNjQ1NmMxZjkxNmQ1OTc1NTA2YzE1Mjc5NGFmMmU2YjY2OGMwYmY2Yy4uN2QyZjM5
MDIzMWFlYWIzNzBjNzdmYzFhZjAyY2U0ZWQ1MjVhNWRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvdmlzaW9uYWxQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm92aXNpb25hbFBhZ2VQcm94eS5oCkBAIC05NCw3ICs5NCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBD
OjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1l
SUQsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwg
RnJhbWVJbmZvRGF0YSYmLAotICAgICAgICB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisg
ICAgICAgIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLAogICAgICAgICBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBkb3dubG9hZEF0dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRV
UkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYpOwogICAgIHZvaWQgYmFja0Zv
cndhcmRHb1RvSXRlbShjb25zdCBXZWJDb3JlOjpCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJik+JiYpOwog
ICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJh
bWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZp
Z2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9y
aWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFs
UmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVu
Y2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25hbDxXZWJD
b3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
JiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAgICAgICBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRhdGEmLCBN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3lu
Yzo6RGVsYXllZFJlcGx5JiYpOwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIHZvaWQgZGlkUmVx
dWVzdFBhc3N3b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Lm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJv
eHkubW0KaW5kZXggMDU1OWM5ODc0YmRjMzM1Y2VhOGFkNGE4NzdiMmFjMjk3MDgwNWYyNi4uNWIw
MmRkYjI0ODlmZTNiOTczMTY0MWVkYjNiZmIzNzAzNDY1NWEyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdB
cmVhUHJveHkubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkubW0KQEAgLTExNSw3ICsxMTUsNyBAQCBS
ZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5KFdlYlBhZ2VQcm94eSYgdwogICAgIElPU3VyZmFjZVBvb2w6OnNoYXJlZFBvb2woKS5z
ZXRQb29sU2l6ZSgwKTsKICNlbmRpZgogCi0gICAgcHJvY2Vzcy5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHk6Om1lc3NhZ2VSZWNlaXZl
ck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKKyAgICBwcm9jZXNzLmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94
eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIAogICAgIGlm
IChtX3dlYlBhZ2VQcm94eS5wcmVmZXJlbmNlcygpLnRpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yVmlz
aWJsZSgpKQogICAgICAgICBpbml0aWFsaXplRGVidWdJbmRpY2F0b3IoKTsKQEAgLTEyNCw3ICsx
MjQsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5OjpSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYVByb3h5KFdlYlBhZ2VQcm94eSYgdwogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eTo6flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkoKQogewogICAgIG1fY2Fs
bGJhY2tzLmludmFsaWRhdGUoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6T3duZXJXYXNJbnZhbGlkYXRl
ZCk7Ci0gICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSk7CisgICAgcHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eTo6bWVzc2FnZVJlY2VpdmVy
TmFtZSgpLCBtX2lkZW50aWZpZXIpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBb
bV9kaXNwbGF5TGlua0hhbmRsZXIgaW52YWxpZGF0ZV07CkBAIC00NjMsNyArNDYzLDcgQEAgdm9p
ZCBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5Ojp3YWl0Rm9yRGlkVXBkYXRlQWN0aXZp
dHlTdGF0ZShBY3Rpdml0eVN0YXQKICAgICB9KCk7CiAKICAgICBhdXRvIHN0YXJ0VGltZSA9IE1v
bm90b25pY1RpbWU6Om5vdygpOwotICAgIHdoaWxlIChwcm9jZXNzKCkuY29ubmVjdGlvbigpLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6UmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWFQcm94eTo6Q29tbWl0TGF5ZXJUcmVlPihtX2lkZW50aWZpZXIudG9VSW50NjQoKSwg
YWN0aXZpdHlTdGF0ZVVwZGF0ZVRpbWVvdXQgLSAoTW9ub3RvbmljVGltZTo6bm93KCkgLSBzdGFy
dFRpbWUpLCBJUEM6OldhaXRGb3JPcHRpb246OkludGVycnVwdFdhaXRpbmdJZlN5bmNNZXNzYWdl
QXJyaXZlcykpIHsKKyAgICB3aGlsZSAocHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFu
ZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2FnZXM6OlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVh
UHJveHk6OkNvbW1pdExheWVyVHJlZT4obV9pZGVudGlmaWVyLCBhY3Rpdml0eVN0YXRlVXBkYXRl
VGltZW91dCAtIChNb25vdG9uaWNUaW1lOjpub3coKSAtIHN0YXJ0VGltZSksIElQQzo6V2FpdEZv
ck9wdGlvbjo6SW50ZXJydXB0V2FpdGluZ0lmU3luY01lc3NhZ2VBcnJpdmVzKSkgewogICAgICAg
ICBpZiAoYWN0aXZpdHlTdGF0ZUNoYW5nZUlEID09IEFjdGl2aXR5U3RhdGVDaGFuZ2VBc3luY2hy
b25vdXMgfHwgYWN0aXZpdHlTdGF0ZUNoYW5nZUlEIDw9IG1fYWN0aXZpdHlTdGF0ZUNoYW5nZUlE
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1NlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKaW5kZXggNWExNGZiZTRkY2Q0
YjM4YzdhMGJmZDVjMmY3MGEwNmM1YzU3NWY4Ni4uYjJmNzcyOWZkMzkzNWY3MmUxYmM5MTE1YTMw
YTE4ZjY0ZTM5ZmQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Vy
dmljZVdvcmtlclByb2Nlc3NQcm94eS5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyUHJvY2Vzc1Byb3h5Ojp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZl
cmVuY2VzU3RvcmUKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6VXBkYXRlUHJlZmVyZW5jZXNTdG9yZSB7IHN0b3JlIH0sIDApOwogfQogCi12b2lkIFNl
cnZpY2VXb3JrZXJQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5PiYmIGNoYWxsZW5nZSkKK3ZvaWQgU2VydmljZVdvcmtlclByb2Nlc3NQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYg
Y2hhbGxlbmdlKQogewogICAgIFVOVVNFRF9QQVJBTShwYWdlSUQpOwogICAgIFVOVVNFRF9QQVJB
TShmcmFtZUlEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VX
b3JrZXJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1NlcnZpY2VXb3Jr
ZXJQcm9jZXNzUHJveHkuaAppbmRleCA5MzI0NWYwZGM3NmYyNjU3NTdlYzJiZmU3MTYzZTllZGFh
ZTljMGYwLi5lOTM2NWFmYWM0ZjQ3ZDdmZDc0N2Y5ODk4M2FkOTk5MGU4YWI5NzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2VydmljZVdvcmtlclByb2Nlc3NQcm94eS5o
CkBAIC00MSwxNCArNDEsMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIGJvb2wgaGFzUmVnaXN0
ZXJlZFNlcnZpY2VXb3JrZXJzKGNvbnN0IFN0cmluZyYgc2VydmljZVdvcmtlckRpcmVjdG9yeSk7
CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5
PiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk+JiYpOwogCiAgICAgdm9pZCBzdGFydChjb25zdCBXZWJQcmVmZXJlbmNlc1N0
b3JlJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+IGluaXRpYWxTZXNzaW9uSUQpOwogICAgIHZv
aWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAKICAgICBjb25zdCBXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSB7IHJldHVybiBtX3JlZ2lz
dHJhYmxlRG9tYWluOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9z
ZXJ2aWNlV29ya2VyUGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlE
KCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUGFnZUlEOyB9CiAKIHByaXZhdGU6CiAg
ICAgLy8gQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC01OSw3ICs1OSw3IEBAIHByaXZhdGU6CiAg
ICAgU2VydmljZVdvcmtlclByb2Nlc3NQcm94eShXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluJiwgV2Vic2l0ZURhdGFTdG9yZSYpOwogCiAgICAgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb21haW4gbV9yZWdpc3RyYWJsZURvbWFpbjsKLSAgICB1aW50NjRfdCBt
X3NlcnZpY2VXb3JrZXJQYWdlSUQgeyAwIH07CisgICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
bV9zZXJ2aWNlV29ya2VyUGFnZUlEOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU3VzcGVuZGVkUGFnZVByb3h5LmNwcAppbmRleCAxMzQ2
ZmNjMDVjNWEyOWNkYjA4NmY3MmVmNDk2NzgyY2IyYjAwNWFlLi5mNmQzYjUzNmRmOGFhYjE5N2Q5
MTFlZDE0ZDJlYTQwZmVmZjJlMWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9TdXNwZW5kZWRQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1N1
c3BlbmRlZFBhZ2VQcm94eS5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFN1c3BlbmRlZFBh
Z2VQcm94eTo6ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYsCiAKIGNvbnN0IGNoYXIqIFN1c3BlbmRlZFBhZ2VQcm94eTo6bG9nZ2luZ1N0cmluZygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlYnVnU3RyaW5nKCIoMHgiLCBoZXgocmVpbnRlcnByZXRf
Y2FzdDx1aW50cHRyX3Q+KHRoaXMpKSwgIiBwYWdlIElEICIsIG1fcGFnZS5wYWdlSUQoKSwgIiwg
bV9zdXNwZW5zaW9uU3RhdGUgIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fc3VzcGVuc2lvblN0
YXRlKSwgJyknKTsKKyAgICByZXR1cm4gZGVidWdTdHJpbmcoIigweCIsIGhleChyZWludGVycHJl
dF9jYXN0PHVpbnRwdHJfdD4odGhpcykpLCAiIHBhZ2UgSUQgIiwgbV9wYWdlLnBhZ2VJRCgpLnRv
VUludDY0KCksICIsIG1fc3VzcGVuc2lvblN0YXRlICIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
X3N1c3BlbnNpb25TdGF0ZSksICcpJyk7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IDk3MTFiMjMzNzIxNTg3OTExNmMzZGQ4YjQ2NmVm
NTU4NWFlOTg1ODIuLjgzNGRiN2FlMDc5MmFjYjU0NTkzODAwODA2YzkyYjJmZmE1Y2MzMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTQ5LDYgKzQ5LDgg
QEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCiBz
dGF0aWMgSGFzaE1hcDxVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyLCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eSo+JiB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94aWVzKCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxVc2VyQ29udGVudENvbnRyb2xs
ZXJJZGVudGlmaWVyLCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+PiBwcm94aWVzOwpA
QCAtNzMsNyArNzUsNyBAQCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6fldlYlVzZXJD
b250ZW50Q29udHJvbGxlclByb3h5KCkKIHsKICAgICB3ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94aWVzKCkucmVtb3ZlKG1faWRlbnRpZmllcik7CiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDog
bV9wcm9jZXNzZXMpIHsKLSAgICAgICAgcHJvY2Vzcy0+cmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1l
c3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFt
ZSgpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKICAgICAgICAgcHJvY2Vzcy0+ZGlk
RGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KCp0aGlzKTsKICAgICB9CiAjaWYg
RU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTg1LDcgKzg3LDcgQEAgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHk6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSgpCiB2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRQcm9jZXNzKFdlYlByb2Nlc3NQcm94
eSYgd2ViUHJvY2Vzc1Byb3h5LCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
KQogewogICAgIGlmIChtX3Byb2Nlc3Nlcy5hZGQoJndlYlByb2Nlc3NQcm94eSkuaXNOZXdFbnRy
eSkKLSAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRl
bnRpZmllcigpLnRvVUludDY0KCksICp0aGlzKTsKKyAgICAgICAgd2ViUHJvY2Vzc1Byb3h5LmFk
ZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpLCAqdGhpcyk7CiAKICAgICBBU1NF
UlQocGFyYW1ldGVycy51c2VyQ29udGVudFdvcmxkcy5pc0VtcHR5KCkpOwogICAgIGZvciAoY29u
c3QgYXV0byYgd29ybGQgOiBtX3VzZXJDb250ZW50V29ybGRzKQpAQCAtMTE1LDcgKzExNyw3IEBA
IHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVByb2Nlc3MoV2ViUHJv
Y2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJvCiAgICAgQVNTRVJUKG1fcHJvY2Vzc2VzLmNvbnRhaW5z
KCZ3ZWJQcm9jZXNzUHJveHkpKTsKIAogICAgIG1fcHJvY2Vzc2VzLnJlbW92ZSgmd2ViUHJvY2Vz
c1Byb3h5KTsKLSAgICB3ZWJQcm9jZXNzUHJveHkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3Nh
Z2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgd2ViUHJvY2Vzc1Byb3h5LnJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6Om1l
c3NhZ2VSZWNlaXZlck5hbWUoKSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlckNvbnRlbnRXb3JsZFVzZShBUEk6OlVzZXJDb250
ZW50V29ybGQmIHdvcmxkKQpAQCAtMTI2LDcgKzEyOCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OmFkZFVzZXJDb250ZW50V29ybGRVc2UoQVBJOjpVc2VyQ29udGVudFdv
cmxkCiAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3VzZXJDb250ZW50V29ybGRzLmFkZCgmd29ybGQp
OwogICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBmb3IgKFdlYlByb2Nl
c3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyQ29udGVudFdvcmxk
cyh7IHN0ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwgd29ybGQubmFtZSgpKSB9KSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRVc2VyQ29udGVudFdvcmxkcyh7IHN0
ZDo6bWFrZV9wYWlyKHdvcmxkLmlkZW50aWZpZXIoKSwgd29ybGQubmFtZSgpKSB9KSwgaWRlbnRp
ZmllcigpKTsKICAgICB9CiB9CiAKQEAgLTE1MCw3ICsxNTIsNyBAQCB2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyQ29udGVudFdvcmxkVXNlcyhBUEk6OlVzZXJD
b250ZW50VwogewogICAgIGlmIChzaG91bGRTZW5kUmVtb3ZlVXNlckNvbnRlbnRXb3JsZHNNZXNz
YWdlKHdvcmxkLCBudW1iZXJPZlVzZXNUb1JlbW92ZSkpIHsKICAgICAgICAgZm9yIChXZWJQcm9j
ZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRX
b3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsK
KyAgICAgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlVXNlckNvbnRlbnRXb3JsZHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlk
ZW50aWZpZXIoKSk7CiAgICAgfQogfQogCkBAIC0xNjMsNyArMTY1LDcgQEAgdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoSGFzaENv
dW50ZWRTZXQ8UmUKICAgICB9CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6
IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHdvcmxkc1RvUmVtb3ZlKSwg
aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJDb250ZW50V29ybGRzKHdvcmxk
c1RvUmVtb3ZlKSwgaWRlbnRpZmllcigpKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eTo6YWRkVXNlclNjcmlwdChBUEk6OlVzZXJTY3JpcHQmIHVzZXJTY3JpcHQsIElu
amVjdFVzZXJTY3JpcHRJbW1lZGlhdGVseSBpbW1lZGlhdGVseSkKQEAgLTE3NSw3ICsxNzcsNyBA
QCB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjphZGRVc2VyU2NyaXB0KEFQSTo6
VXNlclNjcmlwdCYgdXNlclNjcmlwdCwgSQogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCku
YXBwZW5kKCZ1c2VyU2NyaXB0KTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNz
IDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6QWRkVXNlclNjcmlwdHMoeyB7IHVzZXJTY3JpcHQuaWRlbnRpZmll
cigpLCB3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU2NyaXB0LnVzZXJTY3JpcHQoKSB9IH0sIGlt
bWVkaWF0ZWx5KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRzKHsg
eyB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSwgd29ybGQtPmlkZW50aWZpZXIoKSwgdXNlclNjcmlw
dC51c2VyU2NyaXB0KCkgfSB9LCBpbW1lZGlhdGVseSksIGlkZW50aWZpZXIoKSk7CiB9CiAKIHZv
aWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpV
c2VyU2NyaXB0JiB1c2VyU2NyaXB0KQpAQCAtMTgzLDcgKzE4NSw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0CiAgICAgUmVmPEFQSTo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU2Ny
aXB0LnVzZXJDb250ZW50V29ybGQoKTsKIAogICAgIGZvciAoV2ViUHJvY2Vzc1Byb3h5KiBwcm9j
ZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlVXNlclNjcmlwdCh3b3JsZC0+aWRlbnRpZmllcigp
LCB1c2VyU2NyaXB0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVVc2VyU2NyaXB0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTY3JpcHQuaWRlbnRpZmll
cigpKSwgaWRlbnRpZmllcigpKTsKIAogICAgIG1fdXNlclNjcmlwdHMtPmVsZW1lbnRzKCkucmVt
b3ZlQWxsKCZ1c2VyU2NyaXB0KTsKIApAQCAtMTkzLDcgKzE5NSw3IEBAIHZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJTY3JpcHQoQVBJOjpVc2VyU2NyaXB0JiB1
c2VyU2NyaXB0CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxV
c2VyU2NyaXB0cyhBUEk6OlVzZXJDb250ZW50V29ybGQmIHdvcmxkKQogewogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlw
dHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAg
ICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpS
ZW1vdmVBbGxVc2VyU2NyaXB0cyh7IHdvcmxkLmlkZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigp
KTsKIAogICAgIHVuc2lnbmVkIHVzZXJTY3JpcHRzUmVtb3ZlZCA9IG1fdXNlclNjcmlwdHMtPnJl
bW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNlclNjcmlwdD4oWyZdKGNvbnN0IGF1dG8mIHVz
ZXJTY3JpcHQpIHsKICAgICAgICAgcmV0dXJuICZ1c2VyU2NyaXB0LT51c2VyQ29udGVudFdvcmxk
KCkgPT0gJndvcmxkOwpAQCAtMjE0LDcgKzIxNiw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZUFsbFVzZXJTY3JpcHRzKCkKICAgICAgICAgd29ybGRJZGVudGlm
aWVycy51bmNoZWNrZWRBcHBlbmQod29ybGRDb3VudFBhaXIua2V5LT5pZGVudGlmaWVyKCkpOwog
CiAgICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAg
ICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1v
dmVBbGxVc2VyU2NyaXB0cyh3b3JsZElkZW50aWZpZXJzKSwgaWRlbnRpZmllcigpLnRvVUludDY0
KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OlJlbW92ZUFsbFVzZXJTY3JpcHRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVy
KCkpOwogCiAgICAgbV91c2VyU2NyaXB0cy0+ZWxlbWVudHMoKS5jbGVhcigpOwogCkBAIC0yMzAs
NyArMjMyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkVXNlclN0
eWxlU2hlZXQoQVBJOjpVc2VyU3R5bGVTaGVldCYgdXNlclMKICAgICBtX3VzZXJTdHlsZVNoZWV0
cy0+ZWxlbWVudHMoKS5hcHBlbmQoJnVzZXJTdHlsZVNoZWV0KTsKIAogICAgIGZvciAoV2ViUHJv
Y2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNlclN0eWxlU2hlZXRzKHsg
eyB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVyKCksIHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJT
dHlsZVNoZWV0LnVzZXJTdHlsZVNoZWV0KCkgfSB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkp
OworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OkFkZFVzZXJTdHlsZVNoZWV0cyh7IHsgdXNlclN0eWxlU2hlZXQuaWRlbnRpZmllcigpLCB3
b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC51c2VyU3R5bGVTaGVldCgpIH0gfSks
IGlkZW50aWZpZXIoKSk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzZXJTdHlsZVNoZWV0
KQpAQCAtMjM4LDcgKzI0MCw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6
OnJlbW92ZVVzZXJTdHlsZVNoZWV0KEFQSTo6VXNlclN0eWxlU2hlZXQmIHVzCiAgICAgUmVmPEFQ
STo6VXNlckNvbnRlbnRXb3JsZD4gd29ybGQgPSB1c2VyU3R5bGVTaGVldC51c2VyQ29udGVudFdv
cmxkKCk7CiAKICAgICBmb3IgKFdlYlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2Vz
KQotICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXI6OlJlbW92ZVVzZXJTdHlsZVNoZWV0KHdvcmxkLT5pZGVudGlmaWVyKCksIHVzZXJTdHlsZVNo
ZWV0LmlkZW50aWZpZXIoKSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2Vy
U3R5bGVTaGVldCh3b3JsZC0+aWRlbnRpZmllcigpLCB1c2VyU3R5bGVTaGVldC5pZGVudGlmaWVy
KCkpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCku
cmVtb3ZlQWxsKCZ1c2VyU3R5bGVTaGVldCk7CiAKQEAgLTI0OCw3ICsyNTAsNyBAQCB2b2lkIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVVc2VyU3R5bGVTaGVldChBUEk6OlVz
ZXJTdHlsZVNoZWV0JiB1cwogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAg
ICAgZm9yIChXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAg
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVB
bGxVc2VyU3R5bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVyKCkgfSksIGlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU3R5bGVTaGVldHMoeyB3b3JsZC5pZGVudGlmaWVy
KCkgfSksIGlkZW50aWZpZXIoKSk7CiAKICAgICB1bnNpZ25lZCB1c2VyU3R5bGVTaGVldHNSZW1v
dmVkID0gbV91c2VyU3R5bGVTaGVldHMtPnJlbW92ZUFsbE9mVHlwZU1hdGNoaW5nPEFQSTo6VXNl
clN0eWxlU2hlZXQ+KFsmXShjb25zdCBhdXRvJiB1c2VyU3R5bGVTaGVldCkgewogICAgICAgICBy
ZXR1cm4gJnVzZXJTdHlsZVNoZWV0LT51c2VyQ29udGVudFdvcmxkKCkgPT0gJndvcmxkOwpAQCAt
MjY5LDcgKzI3MSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OnJlbW92
ZUFsbFVzZXJTdHlsZVNoZWV0cygpCiAgICAgICAgIHdvcmxkSWRlbnRpZmllcnMudW5jaGVja2Vk
QXBwZW5kKHdvcmxkQ291bnRQYWlyLmtleS0+aWRlbnRpZmllcigpKTsKIAogICAgIGZvciAoV2Vi
UHJvY2Vzc1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclN0eWxl
U2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAg
ICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVt
b3ZlQWxsVXNlclN0eWxlU2hlZXRzKHdvcmxkSWRlbnRpZmllcnMpLCBpZGVudGlmaWVyKCkpOwog
CiAgICAgbV91c2VyU3R5bGVTaGVldHMtPmVsZW1lbnRzKCkuY2xlYXIoKTsKIApAQCAtMjkwLDcg
KzI5Miw3IEBAIGJvb2wgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHk6OmFkZFVzZXJTY3Jp
cHRNZXNzYWdlSGFuZGxlcihXZWJTY3JpcHRNZXNzYWdlCiAgICAgbV9zY3JpcHRNZXNzYWdlSGFu
ZGxlcnMuYWRkKGhhbmRsZXIuaWRlbnRpZmllcigpLCAmaGFuZGxlcik7CiAKICAgICBmb3IgKFdl
YlByb2Nlc3NQcm94eSogcHJvY2VzcyA6IG1fcHJvY2Vzc2VzKQotICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZFVzZXJTY3JpcHRNZXNz
YWdlSGFuZGxlcnMoeyB7IGhhbmRsZXIuaWRlbnRpZmllcigpLCB3b3JsZC0+aWRlbnRpZmllcigp
LCBoYW5kbGVyLm5hbWUoKSB9IH0pLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAg
IHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6QWRkVXNl
clNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHsgaGFuZGxlci5pZGVudGlmaWVyKCksIHdvcmxkLT5p
ZGVudGlmaWVyKCksIGhhbmRsZXIubmFtZSgpIH0gfSksIGlkZW50aWZpZXIoKSk7CiAgICAgCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zMDAsNyArMzAyLDcgQEAgdm9pZCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlVXNlck1lc3NhZ2VIYW5kbGVyRm9yTmFtZShjb25zdCBT
dHJpbmcKICAgICBmb3IgKGF1dG8gaXQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5iZWdpbigp
LCBlbmQgPSBtX3NjcmlwdE1lc3NhZ2VIYW5kbGVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgIGlmIChpdC0+dmFsdWUtPm5hbWUoKSA9PSBuYW1lICYmICZpdC0+dmFsdWUtPnVz
ZXJDb250ZW50V29ybGQoKSA9PSAmd29ybGQpIHsKICAgICAgICAgICAgIGZvciAoV2ViUHJvY2Vz
c1Byb3h5KiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgICAgICAgICAgcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXIod29ybGQuaWRlbnRpZmllcigpLCBpdC0+dmFsdWUtPmlkZW50aWZpZXIo
KSksIGlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OlJlbW92ZVVzZXJTY3JpcHRN
ZXNzYWdlSGFuZGxlcih3b3JsZC5pZGVudGlmaWVyKCksIGl0LT52YWx1ZS0+aWRlbnRpZmllcigp
KSwgaWRlbnRpZmllcigpKTsKIAogICAgICAgICAgICAgbV9zY3JpcHRNZXNzYWdlSGFuZGxlcnMu
cmVtb3ZlKGl0KTsKIApAQCAtMzEzLDcgKzMxNSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHk6OnJlbW92ZVVzZXJNZXNzYWdlSGFuZGxlckZvck5hbWUoY29uc3QgU3RyaW5n
CiB2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpyZW1vdmVBbGxVc2VyTWVzc2Fn
ZUhhbmRsZXJzKEFQSTo6VXNlckNvbnRlbnRXb3JsZCYgd29ybGQpCiB7CiAgICAgZm9yIChXZWJQ
cm9jZXNzUHJveHkqIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpSZW1vdmVBbGxVc2VyU2NyaXB0
TWVzc2FnZUhhbmRsZXJzKHsgd29ybGQuaWRlbnRpZmllcigpIH0pLCBpZGVudGlmaWVyKCkudG9V
SW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50
Q29udHJvbGxlcjo6UmVtb3ZlQWxsVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyh7IHdvcmxkLmlk
ZW50aWZpZXIoKSB9KSwgaWRlbnRpZmllcigpKTsKIAogICAgIHVuc2lnbmVkIG51bWJlclJlbW92
ZWQgPSAwOwogICAgIG1fc2NyaXB0TWVzc2FnZUhhbmRsZXJzLnJlbW92ZUlmKFsmXShhdXRvJiBl
bnRyeSkgewpAQCAtMzI3LDcgKzMyOSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OnJlbW92ZUFsbFVzZXJNZXNzYWdlSGFuZGxlcnMoQVBJOjpVc2VyQ29udGVuCiAgICAg
cmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMod29ybGQsIG51bWJlclJlbW92ZWQpOwogfQogCi12
b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5OjpkaWRQb3N0TWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mIGNvbm5lY3Rpb24sIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJRCwgY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhUmVmZXJlbmNlKQordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eTo6ZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQYWdl
SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIGZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJl
ZmVyZW5jZSkKIHsKICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0zNTEsNyArMzUzLDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6YWRkQ29udGVudFJ1bGVMaXN0KEFQSTo6Q29u
dGVudFJ1bGVMaXN0JiBjb24KICAgICBhdXRvIHBhaXIgPSBzdGQ6Om1ha2VfcGFpcihjb250ZW50
UnVsZUxpc3QubmFtZSgpLCBjb250ZW50UnVsZUxpc3QuY29tcGlsZWRSdWxlTGlzdCgpLmRhdGEo
KSk7CiAKICAgICBmb3IgKGF1dG8qIHByb2Nlc3MgOiBtX3Byb2Nlc3NlcykKLSAgICAgICAgcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpBZGRDb250ZW50
UnVsZUxpc3RzKHsgcGFpciB9KSwgaWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OkFkZENvbnRl
bnRSdWxlTGlzdHMoeyBwYWlyIH0pLCBpZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChhdXRvKiBw
cm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6QWRkQ29udGVudFJ1bGVMaXN0cyB7
IGlkZW50aWZpZXIoKSwgeyBwYWlyIH0gfSwgMCk7CkBAIC0zNjIsNyArMzY0LDcgQEAgdm9pZCBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6cmVtb3ZlQ29udGVudFJ1bGVMaXN0KGNvbnN0
IFN0cmluZyYgbmFtZSkKICAgICBtX2NvbnRlbnRSdWxlTGlzdHMucmVtb3ZlKG5hbWUpOwogCiAg
ICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNzZXMpCi0gICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVM
aXN0KG5hbWUpLCBpZGVudGlmaWVyKCkudG9VSW50NjQoKSk7CisgICAgICAgIHByb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6UmVtb3ZlQ29udGVudFJ1bGVM
aXN0KG5hbWUpLCBpZGVudGlmaWVyKCkpOwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9u
ZXR3b3JrUHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlQ29udGVudFJ1bGVMaXN0IHsgaWRlbnRpZmll
cigpLCBuYW1lIH0sIDApOwpAQCAtMzczLDcgKzM3NSw3IEBAIHZvaWQgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyUHJveHk6OnJlbW92ZUFsbENvbnRlbnRSdWxlTGlzdHMoKQogICAgIG1fY29udGVu
dFJ1bGVMaXN0cy5jbGVhcigpOwogCiAgICAgZm9yIChhdXRvKiBwcm9jZXNzIDogbV9wcm9jZXNz
ZXMpCi0gICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkudG9VSW50NjQo
KSk7CisgICAgICAgIHByb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6UmVtb3ZlQWxsQ29udGVudFJ1bGVMaXN0cygpLCBpZGVudGlmaWVyKCkpOwogCiAgICAg
Zm9yIChhdXRvKiBwcm9jZXNzIDogbV9uZXR3b3JrUHJvY2Vzc2VzKQogICAgICAgICBwcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjo6UmVtb3ZlQWxs
Q29udGVudFJ1bGVMaXN0cyB7IGlkZW50aWZpZXIoKSB9LCAwKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oCmluZGV4IDYyMzMwMTExNmVkMWQ2NTRmMmEzNDg5YTdmMGY2MjQ3
NzY2MTI0YWUuLjBlZDM2YTU5Y2MzYTcxZDlmMjE5ZTE5NDg0MjljOGE3OTFkMGM2MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaENvdW50ZWRTZXQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTEwLDcg
KzExMSw3IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIuCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVy
cmlkZTsKIAotICAgIHZvaWQgZGlkUG9zdE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgdWludDY0
X3QgcGFnZUlELCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3QgbWVzc2FnZUhhbmRsZXJJ
RCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBkaWRQb3N0TWVzc2FnZShJ
UEM6OkNvbm5lY3Rpb24mLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgRnJhbWVJbmZv
RGF0YSYsIHVpbnQ2NF90IG1lc3NhZ2VIYW5kbGVySUQsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpOwogCiAgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkVXNlKEFQSTo6VXNlckNvbnRlbnRX
b3JsZCYpOwogICAgIHZvaWQgcmVtb3ZlVXNlckNvbnRlbnRXb3JsZFVzZXMoQVBJOjpVc2VyQ29u
dGVudFdvcmxkJiwgdW5zaWduZWQgbnVtYmVyT2ZVc2VzVG9SZW1vdmUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA4MTcxNDM1
MWZjZTc3NWRhYmM0NzE4ZDQzZjg4ZTM2ZjVmNTBmZWU0Li4yNWE0ZTI5MTI3NGVlMDM2OWZkZDE2
ZWUwMDVjMmM5NWY5ZmFmMjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNSArMjQsNSBAQAogICovCiAKIG1lc3NhZ2Vz
IC0+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5IHsKLURpZFBvc3RNZXNzYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBmcmFtZUluZm9EYXRhLCB1
aW50NjRfdCBtZXNzYWdlSGFuZGxlcklELCBJUEM6OkRhdGFSZWZlcmVuY2UgbWVzc2FnZSkgV2Fu
dHNDb25uZWN0aW9uCitEaWRQb3N0TWVzc2FnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qg
bWVzc2FnZUhhbmRsZXJJRCwgSVBDOjpEYXRhUmVmZXJlbmNlIG1lc3NhZ2UpIFdhbnRzQ29ubmVj
dGlvbgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVD
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJv
bGxlci5jcHAKaW5kZXggMjQ4MTgyZDgwOTIxZmUxYTE5ZTVjNjM0YjE2YTI0YzdjN2QxNzZlZi4u
MWU5MWFiYjZlZmRkMGNkNTk2Zjk0ZGFjZThmNzI2OGUzMTg0YTVjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIuY3BwCkBAIC02NiwxMCAr
NjYsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IG1pbmltdW1TY3JvbGxFdmVudFJhdGlvRm9yU3dp
cGUgPSAwLjU7CiBzdGF0aWMgY29uc3QgZmxvYXQgc3dpcGVTbmFwc2hvdFJlbW92YWxSZW5kZXJU
cmVlU2l6ZVRhcmdldEZyYWN0aW9uID0gMC41OwogI2VuZGlmCiAKLXN0YXRpYyBIYXNoTWFwPHVp
bnQ2NF90LCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0Zv
ckFsbFBhZ2VzKCkKK3N0YXRpYyBIYXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNv
bnRyb2xsZXIqPiYgdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkKIHsKICAgICAv
LyBUaGUga2V5IGluIHRoaXMgbWFwIGlzIHRoZSBhc3NvY2lhdGVkIHBhZ2UgSUQuCi0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8dWludDY0X3QsIFZpZXdHZXN0dXJlQ29udHJvbGxl
cio+PiB2aWV3R2VzdHVyZUNvbnRyb2xsZXJzOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxI
YXNoTWFwPFBhZ2VJZGVudGlmaWVyLCBWaWV3R2VzdHVyZUNvbnRyb2xsZXIqPj4gdmlld0dlc3R1
cmVDb250cm9sbGVyczsKICAgICByZXR1cm4gdmlld0dlc3R1cmVDb250cm9sbGVycy5nZXQoKTsK
IH0KIApAQCAtMTE2LDcgKzExNiw3IEBAIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpjb25u
ZWN0VG9Qcm9jZXNzKCkKICAgICBtX2lzQ29ubmVjdGVkVG9Qcm9jZXNzID0gdHJ1ZTsKIH0KIAot
Vmlld0dlc3R1cmVDb250cm9sbGVyKiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmNvbnRyb2xsZXJG
b3JHZXN0dXJlKHVpbnQ2NF90IHBhZ2VJRCwgVmlld0dlc3R1cmVDb250cm9sbGVyOjpHZXN0dXJl
SUQgZ2VzdHVyZUlEKQorVmlld0dlc3R1cmVDb250cm9sbGVyKiBWaWV3R2VzdHVyZUNvbnRyb2xs
ZXI6OmNvbnRyb2xsZXJGb3JHZXN0dXJlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgVmlld0dlc3R1
cmVDb250cm9sbGVyOjpHZXN0dXJlSUQgZ2VzdHVyZUlEKQogewogICAgIGF1dG8gZ2VzdHVyZUNv
bnRyb2xsZXJJdGVyID0gdmlld0dlc3R1cmVDb250cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZmluZChw
YWdlSUQpOwogICAgIGlmIChnZXN0dXJlQ29udHJvbGxlckl0ZXIgPT0gdmlld0dlc3R1cmVDb250
cm9sbGVyc0ZvckFsbFBhZ2VzKCkuZW5kKCkpCkBAIC01NDcsNyArNTQ3LDcgQEAgdm9pZCBWaWV3
R2VzdHVyZUNvbnRyb2xsZXI6OmZvcmNlUmVwYWludElmTmVlZGVkKCkKIAogICAgIG1faGFzT3V0
c3RhbmRpbmdSZXBhaW50UmVxdWVzdCA9IHRydWU7CiAKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBt
X3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsKKyAgICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5
LnBhZ2VJRCgpOwogICAgIEdlc3R1cmVJRCBnZXN0dXJlSUQgPSBtX2N1cnJlbnRHZXN0dXJlSUQ7
CiAgICAgbV93ZWJQYWdlUHJveHkuZm9yY2VSZXBhaW50KFZvaWRDYWxsYmFjazo6Y3JlYXRlKFtw
YWdlSUQsIGdlc3R1cmVJRF0gKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKICAgICAgICAg
aWYgKGF1dG8gZ2VzdHVyZUNvbnRyb2xsZXIgPSBjb250cm9sbGVyRm9yR2VzdHVyZShwYWdlSUQs
IGdlc3R1cmVJRCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaWV3R2Vz
dHVyZUNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29u
dHJvbGxlci5oCmluZGV4IDQzMWMyNzY2ZDA4MjYxZTUyY2VmYjIwNmQ2Y2QyOTliMTJjZjEzOTQu
LmMxNjcwZDNhOTRjZWYzZDkwNmFmNDk0OWNkNTQxMzYwNDk0NzYzMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW5jbHVkZSAiU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
QEAgLTE3NSw3ICsxNzYsNyBAQCBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVy
LgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAKLSAgICBzdGF0aWMgVmlld0dlc3R1cmVDb250cm9sbGVyKiBjb250
cm9sbGVyRm9yR2VzdHVyZSh1aW50NjRfdCBwYWdlSUQsIEdlc3R1cmVJRCk7CisgICAgc3RhdGlj
IFZpZXdHZXN0dXJlQ29udHJvbGxlciogY29udHJvbGxlckZvckdlc3R1cmUoV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIsIEdlc3R1cmVJRCk7CiAKICAgICBzdGF0aWMgR2VzdHVyZUlEIHRha2VOZXh0
R2VzdHVyZUlEKCk7CiAgICAgdm9pZCB3aWxsQmVnaW5HZXN0dXJlKFZpZXdHZXN0dXJlVHlwZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9WaXNpdGVkTGlua1N0b3JlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCmluZGV4IGYy
ZTdiOTM0MDU3NjZlYTVlOGM3NWVhYmY1YWM2YTRmZDRjMDRkZWUuLjk5MWRjMmZjZmY5ZDQzYzVl
MDg3Njg2NGNjMjgwNDM4ZDllMzRhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zp
c2l0ZWRMaW5rU3RvcmUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBWaXNpdGVkTGlua1N0
b3JlOjp3ZWJQcm9jZXNzRGlkQ2xvc2VDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIElQQzo6
Q29ubmUKICAgICAvLyBGSVhNRTogSW1wbGVtZW50LgogfQogCi12b2lkIFZpc2l0ZWRMaW5rU3Rv
cmU6OmFkZFZpc2l0ZWRMaW5rSGFzaEZyb21QYWdlKHVpbnQ2NF90IHBhZ2VJRCwgU2hhcmVkU3Ry
aW5nSGFzaCBsaW5rSGFzaCkKK3ZvaWQgVmlzaXRlZExpbmtTdG9yZTo6YWRkVmlzaXRlZExpbmtI
YXNoRnJvbVBhZ2UoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBTaGFyZWRTdHJpbmdIYXNoIGxpbmtI
YXNoKQogewogICAgIGlmIChhdXRvKiB3ZWJQYWdlUHJveHkgPSBXZWJQcm9jZXNzUHJveHk6Ondl
YlBhZ2UocGFnZUlEKSkgewogICAgICAgICBpZiAoIXdlYlBhZ2VQcm94eS0+YWRkc1Zpc2l0ZWRM
aW5rcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtT
dG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9yZS5oCmluZGV4
IDA2ZjIwYmE5MWNiZGJiYTI2Nzk1ZjM4YzYwYzgxYjY4ZDgxNzU5YTUuLjAyYjQ5YmFjNTVlMjQ4
NmJkM2U4OWE5ZWU4OGVhODgzMzZmMWVmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9W
aXNpdGVkTGlua1N0b3JlLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRp
ZEludmFsaWRhdGVTaGFyZWRNZW1vcnkoKSBmaW5hbDsKICAgICB2b2lkIGRpZFVwZGF0ZVNoYXJl
ZFN0cmluZ0hhc2hlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaD4mIGFk
ZGVkSGFzaGVzLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2hhcmVkU3RyaW5nSGFzaD4mIHJlbW92
ZWRIYXNoZXMpIGZpbmFsOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1
aW50NjRfdCBwYWdlSUQsIFdlYkNvcmU6OlNoYXJlZFN0cmluZ0hhc2gpOworICAgIHZvaWQgYWRk
VmlzaXRlZExpbmtIYXNoRnJvbVBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlNoYXJlZFN0cmluZ0hhc2gpOwogCiAgICAgdm9pZCBzZW5kU3RvcmVIYW5kbGVUb1Byb2Nlc3Mo
V2ViUHJvY2Vzc1Byb3h5Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1Zpc2l0ZWRMaW5rU3RvcmUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9W
aXNpdGVkTGlua1N0b3JlLm1lc3NhZ2VzLmluCmluZGV4IGU3ODYyZTM2NWIwZmZlMTM5MTQ2M2Mw
MDcwNjFkN2U3ZjhmOGQ1NGIuLjJlNjZjNDI4MDhlYmI3ZWJjZjM5MzE5YjEwODZhOTI3ZjMzMTM2
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Zpc2l0ZWRMaW5rU3RvcmUu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVmlzaXRlZExpbmtTdG9y
ZS5tZXNzYWdlcy5pbgpAQCAtMjEsNSArMjEsNSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdl
cyAtPiBWaXNpdGVkTGlua1N0b3JlIHsKLSAgICBBZGRWaXNpdGVkTGlua0hhc2hGcm9tUGFnZSh1
aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGxpbmtIYXNoKQorICAgIEFkZFZpc2l0ZWRMaW5rSGFz
aEZyb21QYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgbGlua0hh
c2gpCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBlMGQz
NTY0MWI5OWQ3ZTVlY2E2MWI4MzE5NTg5ZWM2MTUyMzlhNWM4Li45OTJkNzY1ZTdmMzE5Y2VjMGFj
YzFlZGMwMGMxNDFhNWFmZmQ3MjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKQEAgLTM4MiwxMiArMzgyLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpmb3JNb3N0
VmlzaWJsZVdlYlBhZ2VJZkFueShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFNlCiAg
ICAgY29tcGxldGlvbkhhbmRsZXIoc2VsZWN0ZWRQYWdlKTsKIH0KIAotUmVmPFdlYlBhZ2VQcm94
eT4gV2ViUGFnZVByb3h5OjpjcmVhdGUoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzLCB1aW50NjRfdCBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0
aW9uPiYmIGNvbmZpZ3VyYXRpb24pCitSZWY8V2ViUGFnZVByb3h5PiBXZWJQYWdlUHJveHk6OmNy
ZWF0ZShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYgY29uZmln
dXJhdGlvbikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJQYWdlUHJveHkocGFnZUNs
aWVudCwgcHJvY2VzcywgcGFnZUlELCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiB9CiAKLVdl
YlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nl
c3NQcm94eSYgcHJvY2VzcywgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJh
dGlvbj4mJiBjb25maWd1cmF0aW9uKQorV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNs
aWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmIGNvbmZpZ3VyYXRpb24pCiAg
ICAgOiBtX3BhZ2VDbGllbnQobWFrZVdlYWtQdHIocGFnZUNsaWVudCkpCiAgICAgLCBtX2NvbmZp
Z3VyYXRpb24oV1RGTW92ZShjb25maWd1cmF0aW9uKSkKICAgICAsIG1fbmF2aWdhdGlvbkNsaWVu
dChtYWtlVW5pcXVlUmVmPEFQSTo6TmF2aWdhdGlvbkNsaWVudD4oKSkKQEAgLTQzNiw3ICs0MzYs
NyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50LCBX
ZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIHVpbgogI2VuZGlmCiAgICAgLCBtX3Jlc2V0UmVjZW50
Q3Jhc2hDb3VudFRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJldlYlBhZ2VQcm94eTo6cmVz
ZXRSZWNlbnRDcmFzaENvdW50KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGlu
ZywgImNvbnN0cnVjdG9yOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJjb25zdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKIAogICAgIGlmICghbV9jb25maWd1cmF0aW9uLT5kcmF3c0JhY2tncm91bmQoKSkKICAgICAg
ICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpOwpAQCAtNDkw
LDcgKzQ5MCw3IEBAIFdlYlBhZ2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VD
bGllbnQsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcywgdWluCiAKIFdlYlBhZ2VQcm94eTo6fldl
YlBhZ2VQcm94eSgpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGVz
dHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGVzdHJ1Y3Rvcjogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAg
IEFTU0VSVChtX3Byb2Nlc3MtPndlYlBhZ2UobV9wYWdlSUQpICE9IHRoaXMpOwogI2lmICFBU1NF
UlRfRElTQUJMRUQKQEAgLTcwOSw3ICs3MDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNo
UHJvY2Vzcyhjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4pCiAgICAg
QVNTRVJUKCFtX2lzQ2xvc2VkKTsKICAgICBBU1NFUlQoIWhhc1J1bm5pbmdQcm9jZXNzKCkpOwog
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzczogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmll
cigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1
bmNoUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1fcHJvY2Vz
cy0+cmVtb3ZlV2ViUGFnZSgqdGhpcywgV2ViUHJvY2Vzc1Byb3h5OjpFbmRzVXNpbmdEYXRhU3Rv
cmU6Olllcyk7CiAgICAgbV9wcm9jZXNzLT5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3BhZ2VJRCk7CkBAIC03NjQs
NyArNzY0LDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2li
bGUoQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBPcHQKICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKFByb2Nlc3NTd2FwcGluZywgInN1c3BlbmRDdXJyZW50UGFnZUlmUG9zc2libGU6IFN1
c3BlbmRpbmcgY3VycmVudCBwYWdlIGZvciBwcm9jZXNzIHBpZCAlaSIsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSk7CiAgICAgYXV0byBzdXNwZW5kZWRQYWdlID0gc3RkOjptYWtlX3Vu
aXF1ZTxTdXNwZW5kZWRQYWdlUHJveHk+KCp0aGlzLCBtX3Byb2Nlc3MuY29weVJlZigpLCAqbWFp
bkZyYW1lSUQsIHNob3VsZERlbGF5Q2xvc2luZ1VudGlsRW50ZXJpbmdBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZSk7CiAKLSAgICBMT0coUHJvY2Vzc1N3YXBwaW5nLCAiV2ViUGFnZVByb3h5ICUi
IFBSSXU2NCAiIGNyZWF0ZWQgc3VzcGVuZGVkIHBhZ2UgJXMgZm9yIHByb2Nlc3MgcGlkICVpLCBi
YWNrL2ZvcndhcmQgaXRlbSAlcyIgUFJJdTY0LCBwYWdlSUQoKSwgc3VzcGVuZGVkUGFnZS0+bG9n
Z2luZ1N0cmluZygpLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8g
ZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0cmluZygpIDogMCk7CisgICAgTE9HKFByb2Nlc3NTd2Fw
cGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBjcmVhdGVkIHN1c3BlbmRlZCBwYWdlICVz
IGZvciBwcm9jZXNzIHBpZCAlaSwgYmFjay9mb3J3YXJkIGl0ZW0gJXMiIFBSSXU2NCwgcGFnZUlE
KCkudG9VSW50NjQoKSwgc3VzcGVuZGVkUGFnZS0+bG9nZ2luZ1N0cmluZygpLCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIGZyb21JdGVtID8gZnJvbUl0ZW0tPml0ZW1JRCgpLmxvZ1N0
cmluZygpIDogMCk7CiAKICAgICAvLyBJZiB0aGUgY2xpZW50IGZvcmNlZCBhIHN3YXAgdGhlbiBp
dCBtYXkgbm90IGJlIHdlYi1jb21wYXRpYmxlIHRvIGtlZXAgdGhlIHByZXZpb3VzIHBhZ2UgYmVj
YXVzZSBvdGhlciB3aW5kb3dzIG1heSBoYXZlIGFuIG9wZW5lciBsaW5rIHRvIGl0LiBXZSB0aHVz
IGNsb3NlIGl0IGFzIHNvb24gYXMgd2UKICAgICAvLyBjYW4gZG8gc28gd2l0aG91dCBmbGFzaGlu
Zy4KQEAgLTc4Miw3ICs3ODIsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6c3VzcGVuZEN1cnJlbnRQ
YWdlSWZQb3NzaWJsZShBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIE9wdAogdm9pZCBXZWJQ
YWdlUHJveHk6OnN3YXBUb1dlYlByb2Nlc3MoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXNz
LCBzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4mJiBkcmF3aW5nQXJlYSwgUmVmUHRy
PFdlYkZyYW1lUHJveHk+JiYgbWFpbkZyYW1lKQogewogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAic3dhcFRvV2ViUHJvY2Vzczog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
c3dhcFRvV2ViUHJvY2Vzczogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1f
cHJvY2VzcyA9IFdURk1vdmUocHJvY2Vzcyk7CiAgICAgbV93ZWJzaXRlRGF0YVN0b3JlID0gbV9w
cm9jZXNzLT53ZWJzaXRlRGF0YVN0b3JlKCk7CkBAIC04NzQsMTAgKzg3NCwxMCBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQXR0YWNoVG9SdW5uaW5nUHJvY2VzcygpCiAKIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZCgpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
bGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwg
bV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAog
ICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9h
ZGluZywgImxhdW5jaFByb2Nlc3NGb3JSZWxvYWQ6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNo
UHJvY2Vzc0ZvclJlbG9hZDogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50
NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKQEAgLTg4Niw3ICs4
ODYsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nl
c3NGb3JSZWxvYWQoKQogICAgIGxhdW5jaFByb2Nlc3MocmVnaXN0cmFibGVEb21haW4pOwogCiAg
ICAgaWYgKCFtX2JhY2tGb3J3YXJkTGlzdC0+Y3VycmVudEl0ZW0oKSkgewotICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsYXVuY2hQcm9jZXNzRm9yUmVsb2FkOiBubyBj
dXJyZW50IGl0ZW0gdG8gcmVsb2FkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc0ZvclJlbG9hZDogbm8gY3Vy
cmVudCBpdGVtIHRvIHJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC05MDEsMTAgKzkwMSwxMCBAQCBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NGb3JSZWxvYWQoKQog
CiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxhdW5jaFByb2Nlc3NXaXRo
SXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtKQogewotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJvY2Vzc1dp
dGhJdGVtOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9z
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibGF1bmNoUHJv
Y2Vzc1dpdGhJdGVtOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxhdW5jaFByb2Nlc3NXaXRoSXRlbTog
cGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtOTU3LDcgKzk1Nyw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpjbG9zZSgpCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImNsb3NlOiB3ZWJQSUQgPSAlaSwgcGFn
ZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlE
KTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjbG9zZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIG1faXNDbG9zZWQgPSB0cnVlOwogCkBAIC0xMDMy
LDcgKzEwMzIsNyBAQCBib29sIFdlYlBhZ2VQcm94eTo6dHJ5Q2xvc2UoKQogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlDbG9zZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5Q2xvc2U6IHdlYlBJRCA9ICVpLCBw
YWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdl
SUQudG9VSW50NjQoKSk7CiAKICAgICAvLyBDbG9zZSB3aXRob3V0IGRlbGF5IGlmIHRoZSBwcm9j
ZXNzIGFsbG93cyBpdC4gT3VyIGdvYWwgaXMgdG8gdGVybWluYXRlCiAgICAgLy8gdGhlIHByb2Nl
c3MsIHNvIHdlIGNoZWNrIGEgcGVyLXByb2Nlc3Mgc3RhdHVzIGJpdC4KQEAgLTEwNzgsNyArMTA3
OCw3IEBAIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZFJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU2hvCiAgICAgaWYgKG1faXNDbG9zZWQpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAibG9hZFJlcXVlc3Q6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkp
OwogCiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBsYXVuY2hQcm9jZXNz
KFJlZ2lzdHJhYmxlRG9tYWluIHsgcmVxdWVzdC51cmwoKSB9KTsKQEAgLTEwOTIsNyArMTA5Miw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzCiB7CiAgICAgQVNTRVJUKCFtX2lzQ2xvc2VkKTsK
IAotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRSZXF1ZXN0V2l0aE5h
dmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkUmVxdWVzdFdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0g
JSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rp
b24oKTsKIApAQCAtMTEyMSwxMCArMTEyMSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFJl
cXVlc3RXaXRoTmF2aWdhdGlvblNoYXJlZChSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHByb2Nlcwog
CiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0
cmluZyYgZmlsZVVSTFN0cmluZywgY29uc3QgU3RyaW5nJiByZXNvdXJjZURpcmVjdG9yeVVSTFN0
cmluZywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoTG9hZGluZywgImxvYWRGaWxlOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRmlsZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUi
IFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2
NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBwYWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBw
YWdlIGlzIGNsb3NlZDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNz
LT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTMzLDcgKzExMzMsNyBAQCBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmluZyYgZmlsZVVSTFN0
cmluZywgY29ucwogCiAgICAgVVJMIGZpbGVVUkwgPSBVUkwoVVJMKCksIGZpbGVVUkxTdHJpbmcp
OwogICAgIGlmICghZmlsZVVSTC5pc0xvY2FsRmlsZSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRCk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxv
YWRGaWxlOiBmaWxlIGlzIG5vdCBsb2NhbDogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xMTQzLDcgKzExNDMsNyBAQCBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OmxvYWRGaWxlKGNvbnN0IFN0cmlu
ZyYgZmlsZVVSTFN0cmluZywgY29ucwogICAgIGVsc2UgewogICAgICAgICByZXNvdXJjZURpcmVj
dG9yeVVSTCA9IFVSTChVUkwoKSwgcmVzb3VyY2VEaXJlY3RvcnlVUkxTdHJpbmcpOwogICAgICAg
ICBpZiAoIXJlc291cmNlRGlyZWN0b3J5VVJMLmlzTG9jYWxGaWxlKCkpIHsKLSAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwg
aXMgbm90IGxvY2FsOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRGaWxlOiByZXNvdXJjZSBVUkwgaXMgbm90IGxvY2Fs
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMTczLDEwICsxMTczLDEwIEBAIFJlZlB0cjxBUEk6
Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9hZEZpbGUoY29uc3QgU3RyaW5nJiBmaWxlVVJM
U3RyaW5nLCBjb25zCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6bG9h
ZERhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhLCBjb25zdCBTdHJpbmcmIE1JTUVU
eXBlLCBjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBjb25zdCBTdHJpbmcmIGJhc2VVUkwsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJsb2FkRGF0YTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAibG9hZERhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICBpZiAobV9pc0Nsb3NlZCkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRp
bmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkRGF0YTogcGFnZSBpcyBjbG9z
ZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lk
ZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApAQCAtMTE5MCw3ICsxMTkwLDcgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4g
V2ViUGFnZVByb3h5Ojpsb2FkRGF0YShjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEsIGMK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdl
YlByb2Nlc3NQcm94eT4mJiBwcm9jZXNzLCBBUEk6Ok5hdmlnYXRpb24mIG5hdmlnYXRpb24sIGNv
bnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29u
c3QgU3RyaW5nJiBlbmNvZGluZywgY29uc3QgU3RyaW5nJiBiYXNlVVJMLCBBUEk6Ok9iamVjdCog
dXNlckRhdGEsIFNob3VsZFRyZWF0QXNDb250aW51aW5nTG9hZCBzaG91bGRUcmVhdEFzQ29udGlu
dWluZ0xvYWQsIE9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+JiYgd2Vic2l0ZVBvbGljaWVz
KQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWREYXRhV2l0aE5h
dmlnYXRpb246IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExv
YWRpbmcsICJsb2FkRGF0YVdpdGhOYXZpZ2F0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgp
KTsKIAogICAgIEFTU0VSVCghbV9pc0Nsb3NlZCk7CiAKQEAgLTEyMTYsMTMgKzEyMTYsMTMgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWREYXRhV2l0aE5hdmlnYXRpb25TaGFyZWQoUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXNzLAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFsdGVybmF0
ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgU3RyaW5nJiBl
bmNvZGluZywgY29uc3QgVVJMJiBiYXNlVVJMLCBjb25zdCBVUkwmIHVucmVhY2hhYmxlVVJMLCBB
UEk6Ok9iamVjdCogdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRBbHRlcm5hdGVIVE1MOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogCiAgICAgLy8gV2hlbiB0aGUgVUlQcm9jZXNzIGlzIGluIHRoZSBw
cm9jZXNzIG9mIGhhbmRsaW5nIGEgZmFpbGluZyBwcm92aXNpb25hbCBsb2FkLCBkbyBub3QgYXR0
ZW1wdCB0bwogICAgIC8vIHN0YXJ0IGEgc2Vjb25kIGFsdGVybmF0aXZlIEhUTUwgbG9hZCBhcyB0
aGlzIHdpbGwgcHJldmVudCB0aGUgcGFnZSBsb2FkIHN0YXRlIGZyb20gYmVpbmcKICAgICAvLyBo
YW5kbGVkIHByb3Blcmx5LgogICAgIGlmIChtX2lzQ2xvc2VkIHx8IG1faXNMb2FkaW5nQWx0ZXJu
YXRlSFRNTFN0cmluZ0ZvckZhaWxpbmdQcm92aXNpb25hbExvYWQpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibG9hZEFsdGVybmF0ZUhUTUw6IHBhZ2UgaXMgY2xv
c2VkIChvciBvdGhlcik6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vz
cy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJsb2FkQWx0ZXJuYXRlSFRNTDogcGFnZSBpcyBjbG9zZWQgKG9y
IG90aGVyKTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTI1OSwxMCArMTI1OSwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZEFs
dGVybmF0ZUhUTUwoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBodG1sRGF0YSwgY29uc3QgUwog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6bG9hZFdlYkFyY2hpdmVEYXRhKEFQSTo6RGF0YSogd2ViQXJj
aGl2ZURhdGEsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0YTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIGlmIChtX2lzQ2xvc2VkKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImxvYWRXZWJBcmNoaXZlRGF0
YTogcGFnZSBpcyBjbG9zZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgICAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJsb2FkV2ViQXJjaGl2ZURhdGE6IHBhZ2UgaXMgY2xvc2Vk
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMjg2LDEwICsxMjg2LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpsb2FkV2ViQXJjaGl2
ZURhdGEoQVBJOjpEYXRhKiB3ZWJBcmNoaXZlRGF0YSwgQVBJOjpPYmplY3QqIHVzCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0ZWRDbGljayhjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgSW50UG9pbnQgZG9jdW1lbnRQb2ludCwgSW50UG9pbnQgc2NyZWVu
UG9pbnQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1
NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIm5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRl
ZENsaWNrOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nl
c3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgaWYgKG1faXNDbG9z
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVU
b1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2UgaXMgY2xvc2VkOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzA1LDEwICsx
MzA1LDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11bGF0
ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybFN0cmluZywKIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0
b3BMb2FkaW5nKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJzdG9w
TG9hZGluZzogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAic3RvcExvYWRpbmc6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1f
cHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBhZ2Ug
aXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRChMb2FkaW5nLCAibmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2s6IHBh
Z2UgaXMgbm90IHZhbGlkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMzIyLDcgKzEzMjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
c3RvcExvYWRpbmcoKQogCiBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBXZWJQYWdlUHJveHk6OnJl
bG9hZChPcHRpb25TZXQ8V2ViQ29yZTo6UmVsb2FkT3B0aW9uPiBvcHRpb25zKQogewotICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlbG9hZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAicmVsb2FkOiB3ZWJQSUQgPSAl
aSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELnRvVUludDY0KCkpOwogCiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRi
b3hFeHRlbnNpb25IYW5kbGU7CiAKQEAgLTEzOTksNyArMTM5OSw3IEBAIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0JhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2Fy
ZExpc3RJdGVtCiAKIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdlYlBhZ2VQcm94eTo6Z29Ub0Jh
Y2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJiBpdGVtLCBGcmFtZUxvYWRUeXBl
IGZyYW1lTG9hZFR5cGUpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
Z29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgbV9w
cm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZ29Ub0JhY2tGb3J3YXJkSXRlbTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpKTsKICAgICBMT0coTG9hZGluZywgIldlYlBhZ2VQcm94eSAlcCBnb1RvQmFj
a0ZvcndhcmRJdGVtIHRvIGl0ZW0gVVJMICVzIiwgdGhpcywgaXRlbS51cmwoKS51dGY4KCkuZGF0
YSgpKTsKIAogICAgIGlmICghaGFzUnVubmluZ1Byb2Nlc3MoKSkKQEAgLTE0MjEsMTAgKzE0MjEs
MTAgQEAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5Ojpnb1RvQmFja0Zvcndh
cmRJdGVtKFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJl
c3RvcmVTY3JvbGxQb3NpdGlvbigpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2Fk
aW5nLCAidHJ5UmVzdG9yZVNjcm9sbFBvc2l0aW9uOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIg
UFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJ0cnlSZXN0b3JlU2Nyb2xsUG9zaXRpb246
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9j
ZXNzKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAidHJ5UmVz
dG9yZVNjcm9sbFBvc2l0aW9uOiBwYWdlIGlzIG5vdCB2YWxpZDogd2ViUElEID0gJWksIHBhZ2VJ
RCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7
CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInRyeVJlc3RvcmVTY3Jv
bGxQb3NpdGlvbjogcGFnZSBpcyBub3QgdmFsaWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQo
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE1NTEsNyArMTU1MSw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5OjpjbGVhckluc3BlY3RvclRhcmdldHMoKQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0cygpCiB7Ci0gICAgU3RyaW5nIHBhZ2VUYXJnZXRJZCA9
IG1ha2VTdHJpbmcoInBhZ2UtIiwgbV9wYWdlSUQpOworICAgIFN0cmluZyBwYWdlVGFyZ2V0SWQg
PSBtYWtlU3RyaW5nKCJwYWdlLSIsIG1fcGFnZUlELnRvVUludDY0KCkpOwogICAgIG1faW5zcGVj
dG9yQ29udHJvbGxlci0+Y3JlYXRlSW5zcGVjdG9yVGFyZ2V0KHBhZ2VUYXJnZXRJZCwgSW5zcGVj
dG9yOjpJbnNwZWN0b3JUYXJnZXRUeXBlOjpQYWdlKTsKIH0KIApAQCAtMjg3NCw3ICsyODc0LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9u
IGFjdGlvbiwgQVBJOjpOYXZpZ2F0aW9uKgogdm9pZCBXZWJQYWdlUHJveHk6OmNvbW1pdFByb3Zp
c2lvbmFsUGFnZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgZnJhbWVIYXNDdXN0b21Db250ZW50UHJvdmlkZXIsIHVp
bnQzMl90IGZyYW1lTG9hZFR5cGUsIGNvbnN0IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2Vy
dGlmaWNhdGVJbmZvLCBib29sIGNvbnRhaW5zUGx1Z2luRG9jdW1lbnQsIE9wdGlvbmFsPFdlYkNv
cmU6Okhhc0luc2VjdXJlQ29udGVudD4gZm9yY2VkSGFzSW5zZWN1cmVDb250ZW50LCBjb25zdCBV
c2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAgQVNTRVJUKG1fcHJvdmlzaW9uYWxQYWdlKTsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJjb21taXRQcm92aXNpb25hbFBhZ2U6
IHByZXZpb3VzUElEID0gJWksIG5ld1BJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJv
Y2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wcm92aXNpb25hbFBhZ2UtPnByb2Nlc3MoKS5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RChMb2FkaW5nLCAiY29tbWl0UHJvdmlzaW9uYWxQYWdlOiBwcmV2aW91c1BJRCA9ICVpLCBuZXdQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVy
KCksIG1fcHJvdmlzaW9uYWxQYWdlLT5wcm9jZXNzKCkucHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbWFpbkZyYW1lSURJ
blByZXZpb3VzUHJvY2VzcyA9IG1fbWFpbkZyYW1lID8gbWFrZU9wdGlvbmFsKG1fbWFpbkZyYW1l
LT5mcmFtZUlEKCkpIDogV1RGOjpudWxsb3B0OwogCkBAIC0yOTE0LDcgKzI5MTQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y29tbWl0UHJvdmlzaW9uYWxQYWdlKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29udGludWVOYXZpZ2F0
aW9uSW5OZXdQcm9jZXNzKEFQSTo6TmF2aWdhdGlvbiYgbmF2aWdhdGlvbiwgc3RkOjp1bmlxdWVf
cHRyPFN1c3BlbmRlZFBhZ2VQcm94eT4mJiBzdXNwZW5kZWRQYWdlUHJveHksIFJlZjxXZWJQcm9j
ZXNzUHJveHk+JiYgbmV3UHJvY2VzcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9j
ZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYm
IHdlYnNpdGVQb2xpY2llcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJjb250aW51ZU5hdmlnYXRpb25Jbk5ld1Byb2Nlc3M6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgbmV3UHJvY2Vzc1BJRCA9ICVpLCBoYXNTdXNwZW5kZWRQYWdlID0gJWkiLCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBuZXdQcm9jZXNzLT5wcm9j
ZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRlZFBhZ2VQcm94eSk7CisgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiY29udGludWVOYXZpZ2F0aW9uSW5OZXdQcm9jZXNzOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIG5ld1Byb2Nlc3NQSUQgPSAlaSwgaGFzU3Vz
cGVuZGVkUGFnZSA9ICVpIiwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RC50b1VJbnQ2NCgpLCBuZXdQcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCAhIXN1c3BlbmRl
ZFBhZ2VQcm94eSk7CiAgICAgTE9HKExvYWRpbmcsICJDb250aW51aW5nIG5hdmlnYXRpb24gJSIg
UFJJdTY0ICIgJyVzJyBpbiBhIG5ldyB3ZWIgcHJvY2VzcyIsIG5hdmlnYXRpb24ubmF2aWdhdGlv
bklEKCksIG5hdmlnYXRpb24ubG9nZ2luZ1N0cmluZygpKTsKIAogICAgIGlmIChtX3Byb3Zpc2lv
bmFsUGFnZSkgewpAQCAtMzA3NSw3ICszMDc1LDcgQEAgU2Vzc2lvblN0YXRlIFdlYlBhZ2VQcm94
eTo6c2Vzc2lvblN0YXRlKFdURjo6RnVuY3Rpb248Ym9vbCAoV2ViQmFja0ZvcndhcmRMaXN0SXQK
IAogUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZXN0b3JlRnJvbVNlc3Np
b25TdGF0ZShTZXNzaW9uU3RhdGUgc2Vzc2lvblN0YXRlLCBib29sIG5hdmlnYXRlKQogewotICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgInJlc3RvcmVGcm9tU2Vzc2lvblN0YXRl
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVu
dGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJyZXN0b3JlRnJvbVNlc3Npb25TdGF0ZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2
NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsK
IAogICAgIG1fc2Vzc2lvblJlc3RvcmF0aW9uUmVuZGVyVHJlZVNpemUgPSAwOwogICAgIG1faGl0
UmVuZGVyVHJlZVNpemVUaHJlc2hvbGQgPSBmYWxzZTsKQEAgLTM5MzMsOCArMzkzMyw4IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKFJl
ZjxXZWJQcm9jZXNzUHJveHk+JiYKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2
aWdhdGlvbklEKQogICAgICAgICBuYXZpZ2F0aW9uID0gbmF2aWdhdGlvblN0YXRlKCkubmF2aWdh
dGlvbihuYXZpZ2F0aW9uSUQpOwogCi0gICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHkgJSIg
UFJJdTY0ICIgaW4gcHJvY2VzcyBwaWQgJWkgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFt
ZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZpZ2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAl
cyIsIG1fcGFnZUlELCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBmcmFtZUlELCBuYXZp
Z2F0aW9uSUQsIHVybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKExvYWRpbmcsICJkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lOiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBMT0coTG9h
ZGluZywgIldlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBpbiBwcm9jZXNzIHBpZCAlaSBkaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRvIGZyYW1lSUQgJSIgUFJJdTY0ICIsIG5hdmlnYXRp
b25JRCAlIiBQUkl1NjQgIiwgdXJsICVzIiwgbV9wYWdlSUQudG9VSW50NjQoKSwgcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgZnJhbWVJRCwgbmF2aWdhdGlvbklELCB1cmwuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlk
U3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBS
SXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAgIGF1dG8gdHJhbnNhY3Rpb24g
PSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIApAQCAtMzk4Niw3ICszOTg2LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lKHVpbnQ2NF90IGYKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZVNoYXJlZChSZWY8V2ViUHJvY2Vz
c1Byb3h5PiYmIHByb2Nlc3MsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQog
ewogICAgIExPRyhMb2FkaW5nLCAiV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSB0byBmcmFtZUlEICUiIFBSSXU2NCAiLCBuYXZp
Z2F0aW9uSUQgJSIgUFJJdTY0ICIsIHVybCAlcyIsIGZyYW1lSUQsIG5hdmlnYXRpb25JRCwgcmVx
dWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExv
YWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50
aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50
UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MDE1LDcgKzQwMTUsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6d2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYg
dXJsLCBkb3VibGUgZGVsYXksIFdlYkNvcmU6OkxvY2tCYWNrRm9yd2FyZExpc3QpCiB7Ci0gICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAid2lsbFBlcmZvcm1DbGllbnRSZWRpcmVj
dEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAl
IiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1l
SUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoTG9hZGluZywgIndpbGxQZXJmb3JtQ2xp
ZW50UmVkaXJlY3RGb3JGcmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBm
cmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFn
ZUlELnRvVUludDY0KCksIGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90
ZWN0b3IocGFnZUNsaWVudCgpKTsKIApAQCAtNDAyOCw3ICs0MDI4LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OndpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTdHIKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNlbENsaWVudFJlZGlyZWN0
Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KExvYWRpbmcsICJkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQsIGZyYW1lSUQpOworICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoTG9hZGluZywgImRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJhbWU6IHdlYlBJ
RCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9j
ZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsK
IAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAg
LTQwNzUsOCArNDA3NSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVTaGFyZWQoUmVmPFdlYlByb2Nl
c3NQcm94eT4mJiBwcm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
U3RyaW5nJiBwcm92aXNpb25hbFVSTCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFdpbGxD
b250aW51ZUxvYWRpbmcgd2lsbENvbnRpbnVlTG9hZGluZywgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhKQogewotICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1
NjQgIiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
IHRvIHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlm
aWVyKCksIHByb3Zpc2lvbmFsVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoUHJvY2VzcywgImRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZTogd2ViUElE
ID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFp
biA9ICVzLCBjb2RlID0gJWQiLCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCwgZnJhbWVJRCwgZXJyb3IuZG9tYWluKCkudXRmOCgpLmRhdGEoKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQg
IiBpbiB3ZWIgcHJvY2VzcyBwaWQgJWkgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lIHRv
IHByb3Zpc2lvbmFsVVJMICVzIiwgbV9wYWdlSUQudG9VSW50NjQoKSwgcHJvY2Vzcy0+cHJvY2Vz
c0lkZW50aWZpZXIoKSwgcHJvdmlzaW9uYWxVUkwudXRmOCgpLmRhdGEoKSk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAiZGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQg
IiwgZG9tYWluID0gJXMsIGNvZGUgPSAlZCIsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQxNTQsOSArNDE1NCw5IEBAIHN0YXRpYyBPcHRpb25T
ZXQ8Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gY2hlY2tJZk5hdmlnYXRp
b25Db250YWluCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBib29sIGZyYW1lSGFzQ3VzdG9tQ29udGVudFByb3ZpZGVyLCB1aW50MzJfdCBvcGFxdWVG
cmFtZUxvYWRUeXBlLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRl
SW5mbywgYm9vbCBjb250YWluc1BsdWdpbkRvY3VtZW50LCBPcHRpb25hbDxIYXNJbnNlY3VyZUNv
bnRlbnQ+IGhhc0luc2VjdXJlQ29udGVudCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQogewot
ICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQUkl1NjQgIiBkaWRD
b21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1fcGFnZUlELCBuYXZp
Z2F0aW9uSUQpOworICAgIExPRyhMb2FkaW5nLCAiKExvYWRpbmcpIFdlYlBhZ2VQcm94eSAlIiBQ
Ukl1NjQgIiBkaWRDb21taXRMb2FkRm9yRnJhbWUgaW4gbmF2aWdhdGlvbiAlIiBQUkl1NjQsIG1f
cGFnZUlELnRvVUludDY0KCksIG5hdmlnYXRpb25JRCk7CiAgICAgTE9HKEJhY2tGb3J3YXJkLCAi
KEJhY2svRm9yd2FyZCkgQWZ0ZXIgbG9hZCBjb21taXQsIGJhY2svZm9yd2FyZCBsaXN0IGlzIG5v
dzolcyIsIG1fYmFja0ZvcndhcmRMaXN0LT5sb2dnaW5nU3RyaW5nKCkpOwotICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoTG9hZGluZywgImRpZENvbW1pdExvYWRGb3JGcmFtZTogd2ViUElEID0g
JWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBtX3Byb2Nlc3Mt
PnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRDb21taXRMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVp
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5w
cm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlEKTsKIAogICAg
IFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQyNjgs
NyArNDI2OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRDb21taXRMb2FkRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklECiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0LCBt
X3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFtZUlEKTsKKyAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JG
cmFtZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJ
dTY0LCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELnRvVUludDY0KCks
IGZyYW1lSUQpOwogCiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IocGFnZUNsaWVu
dCgpKTsKIApAQCAtNDI5Miw3ICs0MjkyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlz
aERvY3VtZW50TG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmkKIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7CiAgICAg
TE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSAtIFdlYlBh
Z2VQcm94eSAlcCB3aXRoIG5hdmlnYXRpb25JRCAlIiBQUkl1NjQgIiBkaWRGaW5pc2hMb2FkIiwg
dGhpcywgbmF2aWdhdGlvbklEKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcs
ICJkaWRGaW5pc2hMb2FkRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBt
X3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAi
ZGlkRmluaXNoTG9hZEZvckZyYW1lOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0ICIs
IGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9w
YWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHBy
b3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00MzM3LDcgKzQzMzcsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IG5hdmlnYXRpb25JRAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIGRvbWFpbiA9ICVzLCBj
b2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlELCBmcmFt
ZUlELCBlcnJvci5kb21haW4oKS51dGY4KCkuZGF0YSgpLCBlcnJvci5lcnJvckNvZGUoKSk7Cisg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkRmFpbExvYWRGb3JGcmFtZTog
d2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IGRvbWFpbiA9ICVzLCBjb2RlID0gJWQiLCBtX3Byb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCks
IG1fcGFnZUlELnRvVUludDY0KCksIGZyYW1lSUQsIGVycm9yLmRvbWFpbigpLnV0ZjgoKS5kYXRh
KCksIGVycm9yLmVycm9yQ29kZSgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTQzNzksNyArNDM3OSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25G
b3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHVpbnQzMl90
IG9wYXF1ZVNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBVUkwmJiB1cmwsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRp
ZmllcigpLCBtX3BhZ2VJRCwgZnJhbWVJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChM
b2FkaW5nLCAiZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOiB3ZWJQSUQgPSAlaSwg
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJv
Y2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQ
YWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00NTQ5LDcg
KzQ1NDksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YmVnaW5TYWZlQnJvd3NpbmdDaGVjayhjb25z
dCBVUkwmLCBib29sLCBXZWJGcmFtZVBvbGljeUxpc3RlbgogI2VuZGlmCiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJh
bWVJRCwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwK
LSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LAorICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCBPcHRpb25hbDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0LAogICAgIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKICAgICBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQobV9wcm9jZXNzLmNvcHlSZWYoKSwgZnJhbWVJ
RCwgV1RGTW92ZShmcmFtZVNlY3VyaXR5T3JpZ2luKSwgaWRlbnRpZmllciwgbmF2aWdhdGlvbklE
LCBXVEZNb3ZlKG5hdmlnYXRpb25BY3Rpb25EYXRhKSwKQEAgLTQ1NTcsNyArNDU1Nyw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yCiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiBw
cm9jZXNzLCB1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiBm
cmFtZVNlY3VyaXR5T3JpZ2luLAotICAgIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBp
ZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYg
bmF2aWdhdGlvbkFjdGlvbkRhdGEsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm9EYXRhLCB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwKKyAgICBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZp
ZXIgaWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwg
T3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVx
dWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAog
ICAgIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKIHsKQEAg
LTQ1NzMsNyArNDU3Myw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uQXN5bmNTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNz
UHJveHk+JiYgcHJvY2VzcywgV2ViRnJhbWVQcm94eSYgZnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwK
LSAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1Bh
Z2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsCisgICAgTmF2aWdhdGlvbkFjdGlvbkRh
dGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgRnJhbWVJbmZvRGF0YSYmIG9yaWdpbmF0aW5nRnJh
bWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwKICAgICBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYg
cmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJlZjxQb2xpY3lEZWNpc2lvblNlbmRlcj4mJiBz
ZW5kZXIpCiB7CiAgICAgTE9HKExvYWRpbmcsICJXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24gLSBPcmlnaW5hbCBVUkwgJXMsIGN1cnJlbnQgdGFyZ2V0IFVSTCAl
cyIsIG9yaWdpbmFsUmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCByZXF1ZXN0
LnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpAQCAtNDcxMyw3ICs0NzEzLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVmPFdlYlBy
b2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICAgICAgaWYgKCFmcm9tQVBJICYmIG9yaWdpbmF0aW5n
RnJhbWUgPT0gJmZyYW1lKQogICAgICAgICAgICAgc291cmNlRnJhbWVJbmZvID0gZGVzdGluYXRp
b25GcmFtZUluZm8uY29weVJlZigpOwogICAgICAgICBlbHNlIGlmICghZnJvbUFQSSkKLSAgICAg
ICAgICAgIHNvdXJjZUZyYW1lSW5mbyA9IEFQSTo6RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1BhZ2VJRCA/IHByb2Nlc3MtPndlYlBhZ2Uob3Jp
Z2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7CisgICAgICAgICAgICBzb3VyY2VGcmFtZUluZm8g
PSBBUEk6OkZyYW1lSW5mbzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2lu
YXRpbmdQYWdlSUQgPyBwcm9jZXNzLT53ZWJQYWdlKCpvcmlnaW5hdGluZ1BhZ2VJRCkgOiBudWxs
cHRyKTsKIAogICAgICAgICBhdXRvIHVzZXJJbml0aWF0ZWRBY3Rpdml0eSA9IHByb2Nlc3MtPnVz
ZXJJbml0aWF0ZWRBY3Rpdml0eShuYXZpZ2F0aW9uQWN0aW9uRGF0YS51c2VyR2VzdHVyZVRva2Vu
SWRlbnRpZmllcik7CiAgICAgICAgIGJvb2wgc2hvdWxkT3BlbkFwcExpbmtzID0gIW1fc2hvdWxk
U3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbgpAQCAtNDc4Niw3
ICs0Nzg2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBX
ZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgVVJMJiBwYWcKICNlbmRpZgogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmModWludDY0X3QgZnJh
bWVJRCwgYm9vbCBpc01haW5GcmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgUG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdQYWdlSUQsCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9u
RGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0
YSwgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJv
ZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNv
bnN0IFVzZXJEYXRhJiB1c2VyRGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAt
NDgwNCw3ICs0ODA0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXMKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxX
ZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgdWludDY0X3QgZnJhbWVJRCwgYm9vbCBpc01haW5G
cmFtZSwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIGlkZW50aWZpZXIsCi0gICAgdWludDY0X3QgbmF2aWdhdGlv
bklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBGcmFtZUlu
Zm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsCisgICAg
dWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8UGFnZUlk
ZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLAogICAgIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewpAQCAtNDkzNyw3ICs0OTM3LDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKGNvbnN0IFdl
Yk5hdmlnYXRpb25EYXRhU3RvcmUmIHMKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZE5hdmlnYXRl
V2l0aE5hdmlnYXRpb25EYXRhU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2Vzcywg
Y29uc3QgV2ViTmF2aWdhdGlvbkRhdGFTdG9yZSYgc3RvcmUsIHVpbnQ2NF90IGZyYW1lSUQpCiB7
Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkTmF2aWdhdGVXaXRoTmF2
aWdhdGlvbkRhdGFTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHByb2Nl
c3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1fcGFnZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKExvYWRpbmcsICJkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZDogd2Vi
UElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3Rl
Y3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTU3LDcgKzQ5NTcsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMU3Ry
aW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0
U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcsIHVpbnQ2NF90
IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVy
Zm9ybUNsaWVudFJlZGlyZWN0U2hhcmVkOiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0
ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQsIHByb2Nlc3MtPnByb2Nlc3NJZGVudGlmaWVyKCksIG1f
cGFnZUlELCBmcmFtZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKExvYWRpbmcsICJk
aWRQZXJmb3JtQ2xpZW50UmVkaXJlY3RTaGFyZWQ6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCwgcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIo
KSwgbV9wYWdlSUQudG9VSW50NjQoKSwgZnJhbWVJRCk7CiAKICAgICBQYWdlQ2xpZW50UHJvdGVj
dG9yIHByb3RlY3RvcihwYWdlQ2xpZW50KCkpOwogCkBAIC00OTg0LDcgKzQ5ODQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0KGNvbnN0IFN0cmluZyYgc291
cmNlVVJMU3RyaW5nLCBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUGVyZm9ybVNlcnZl
clJlZGlyZWN0U2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkxTdHJpbmcsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25VUkxTdHJpbmcs
IHVpbnQ2NF90IGZyYW1lSUQpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChMb2FkaW5n
LCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQSUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJ
dTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJRCk7CisgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRChMb2FkaW5nLCAiZGlkUGVyZm9ybVNlcnZlclJlZGlyZWN0OiB3ZWJQ
SUQgPSAlaSwgcGFnZUlEID0gJSIgUFJJdTY0LCBwcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigp
LCBtX3BhZ2VJRC50b1VJbnQ2NCgpKTsKIAogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVj
dG9yKHBhZ2VDbGllbnQoKSk7CiAKQEAgLTUwMzIsMTQgKzUwMzIsMTQgQEAgV0VCUEFHRVBST1hZ
X0xPQURPUFRJTUlaRVJfQURESVRJT05TXzYKICNlbmRpZgogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6Y3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5m
b0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1
ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0aW9uRGF0
YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpDcmVhdGVO
ZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVO
ZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0
aW9uYWw8UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcyYmIHdpbmRvd0ZlYXR1cmVzLCBOYXZpZ2F0aW9uQWN0
aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpD
cmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBNRVNTQUdFX0NIRUNL
KG1fcHJvY2VzcywgbV9wcm9jZXNzLT53ZWJGcmFtZShvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEu
ZnJhbWVJRCkpOwotICAgIGF1dG8gb3JpZ2luYXRpbmdGcmFtZUluZm8gPSBBUEk6OkZyYW1lSW5m
bzo6Y3JlYXRlKG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgbV9wcm9jZXNzLT53ZWJQYWdlKG9y
aWdpbmF0aW5nUGFnZUlEKSk7CisgICAgYXV0byBvcmlnaW5hdGluZ0ZyYW1lSW5mbyA9IEFQSTo6
RnJhbWVJbmZvOjpjcmVhdGUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ1Bh
Z2VJRCA/IG1fcHJvY2Vzcy0+d2ViUGFnZSgqb3JpZ2luYXRpbmdQYWdlSUQpIDogbnVsbHB0cik7
CiAgICAgYXV0byBtYWluRnJhbWVVUkwgPSBtX21haW5GcmFtZSA/IG1fbWFpbkZyYW1lLT51cmwo
KSA6IFVSTCgpOwogICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBtYWluRnJhbWVVUkwsIHJlcXVlc3QsIHJlcGx5ID0gV1RG
TW92ZShyZXBseSldIChSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQYWdlKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKCFuZXdQYWdlKSB7Ci0gICAgICAgICAgICByZXBseSgwLCBXVEY6Om51bGxvcHQp
OworICAgICAgICAgICAgcmVwbHkoV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTU4NDgsNyArNTg0OCw3IEBAIElQQzo6Q29u
bmVjdGlvbiogV2ViUGFnZVByb3h5OjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0CiAK
IHVpbnQ2NF90IFdlYlBhZ2VQcm94eTo6bWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQoKSBjb25z
dAogewotICAgIHJldHVybiBtX3BhZ2VJRDsKKyAgICByZXR1cm4gbV9wYWdlSUQudG9VSW50NjQo
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudShXZWJQ
b3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCkKQEAgLTY3MjksNyArNjcy
OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZVNldExhcmdlc3RGcmFtZUNoYW5nZWQodWlu
dDY0X3QgZnJhbWVJRCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVVbnJl
c3BvbnNpdmUoKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nl
c3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQs
IG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQpOworICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoUHJvY2VzcywgInByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmU6IHdl
YlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+cHJvY2Vzc0lkZW50aWZp
ZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNz
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY3NDEsNyArNjc0MSw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojpwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6
OnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKCkKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKFByb2Nlc3MsICJwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZTogd2ViUElEID0gJWksIHBh
Z2VJRCA9ICUiIFBSSXU2NCwgbV9wcm9jZXNzLT5wcm9jZXNzSWRlbnRpZmllcigpLCBtX3BhZ2VJ
RCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChQcm9jZXNzLCAicHJvY2Vzc0RpZEJlY29t
ZVJlc3BvbnNpdmU6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIG1fcHJvY2Vzcy0+
cHJvY2Vzc0lkZW50aWZpZXIoKSwgbV9wYWdlSUQudG9VSW50NjQoKSk7CiAKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggMDdjNTUyNWE5YmJmNDU3M2Y3NGY2ODI4ZDkxMzAwMTE3ODM4
OThkMC4uNGIwMDNkNjg5ZDg4MmZmMmRjYTU2NjJkZjUxN2E1YjYyYWE3YjAxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTgyLDYgKzgyLDcgQEAKICNpbmNsdWRl
IDxXZWJDb3JlL0xheW91dFNpemUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhUGxheWJhY2tU
YXJnZXRDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVByb2R1Y2VyLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1FdmVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmg+CkBAIC0zODIsMTQg
KzM4MywxNCBAQCBjbGFzcyBXZWJQYWdlUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQ
STo6T2JqZWN0OjpUeXBlOjpQYWdlPgogI2VuZGlmCiAgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQ
dHI8V2ViUGFnZVByb3h5PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxXZWJQYWdlUHJveHk+
IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBS
ZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CisgICAgc3RhdGljIFJlZjxXZWJQYWdlUHJv
eHk+IGNyZWF0ZShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIsIFJlZjxBUEk6OlBhZ2VDb25maWd1cmF0aW9uPiYmKTsKICAgICB2aXJ0dWFsIH5X
ZWJQYWdlUHJveHkoKTsKIAogICAgIHN0YXRpYyB2b2lkIGZvck1vc3RWaXNpYmxlV2ViUGFnZUlm
QW55KFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYlBhZ2VQcm94eSopPiYmKTsKIAogICAgIGNvbnN0IEFQ
STo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24oKSBjb25zdDsKIAotICAgIHVpbnQ2
NF90IHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CisgICAgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSUQ7IH0KIAogICAgIFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCgpIGNvbnN0OwogCkBAIC0xNTA1LDcgKzE1MDYsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWROYXZpZ2F0ZVdpdGhOYXZpZ2F0aW9uRGF0YVNoYXJlZChSZWY8
V2ViUHJvY2Vzc1Byb3h5PiYmLCBjb25zdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlJiwgdWludDY0
X3QgZnJhbWVJRCk7CiAgICAgdm9pZCBkaWRDaGFuZ2VQcm92aXNpb25hbFVSTEZvckZyYW1lU2hh
cmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgVVJMJiYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbkFzeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQs
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNv
cmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciwKLSAgICAgICAgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBGcmFtZUluZm9EYXRhJiYsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsCisgICAgICAgIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgRnJhbWVJbmZvRGF0YSYmLCBPcHRpb25h
bDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmJiwKICAgICAgICAgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3QgVXNlckRh
dGEmLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29y
ZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyLAogICAgICAgICB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgY29uc3QgU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE1MTQs
NyArMTUxNSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvYWRSZXF1ZXN0V2l0aE5hdmlnYXRpb25T
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgQVBJOjpOYXZpZ2F0aW9uJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFdlYkNvcmU6OlNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3ks
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSwgV2ViQ29yZTo6U2hvdWxkVHJlYXRBc0NvbnRpbnVpbmdM
b2FkLCBPcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiYmID0gV1RGOjpudWxsb3B0KTsKICAg
ICB2b2lkIGJhY2tGb3J3YXJkR29Ub0l0ZW1TaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwg
Y29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYpPiYmKTsKICAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jU2hhcmVkKFJlZjxXZWJQcm9jZXNzUHJveHk+
JiYsIHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgaXNNYWluRnJhbWUsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJhbWVJbmZvRGF0
YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6
OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1lSW5mb0RhdGEm
JiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5nUGFnZUlELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwK
ICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIGNv
bnN0IFVzZXJEYXRhJiwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvblN5bmM6OkRlbGF5ZWRSZXBseSYmKTsKICNpZiBVU0UoUVVJQ0tfTE9PSykK
ICAgICB2b2lkIGRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWVTaGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJiwgY29uc3QgU3RyaW5nJiBmaWxlTmFtZSk7
CkBAIC0xNTU0LDcgKzE1NTUsNyBAQCBXRUJQQUdFUFJPWFlfTE9BRE9QVElNSVpFUl9BRERJVElP
TlNfMQogICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VTcGFjZSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBj
b25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90
IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2
NF90IGV4cGVjdGVkVXNhZ2UsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+
JiYpOwogCiBwcml2YXRlOgotICAgIFdlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiwgV2ViUHJvY2Vz
c1Byb3h5JiwgdWludDY0X3QgcGFnZUlELCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7
CisgICAgV2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmLCBXZWJQcm9jZXNzUHJveHkmLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogICAgIHZv
aWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKICAgICB2b2lkIG5vdGlmeVByb2Nlc3NQb29sVG9Q
cmV3YXJtKCk7CkBAIC0xNjMwLDEzICsxNjMxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRE
ZXN0cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCiAgICAgdm9pZCBkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYsIFdlYkZy
YW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAotICAgICAgICBGcmFtZUluZm9EYXRhJiYs
IHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UmJiByZXF1ZXN0Qm9keSwKKyAgICAgICAgRnJhbWVJbmZvRGF0YSYmLCBP
cHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVlc3RCb2R5LAogICAg
ICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgY29uc3Qg
VXNlckRhdGEmLCBSZWY8UG9saWN5RGVjaXNpb25TZW5kZXI+JiYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkFzeW5jKHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIsIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwKLSAgICAgICAgRnJh
bWVJbmZvRGF0YSYmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYmLCBJUEM6OkZvcm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCisgICAgICAgIEZyYW1l
SW5mb0RhdGEmJiwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG9yaWdpbmF0aW5n
UGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UmJiByZXF1
ZXN0Qm9keSwKICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVz
cG9uc2UsIGNvbnN0IFVzZXJEYXRhJiwgdWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29s
IGlzTWFpbkZyYW1lLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgV2ViQ29yZTo6UG9s
aWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJiYsCi0gICAgICAgIEZyYW1lSW5mb0RhdGEmJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgSVBDOjpGb3JtRGF0YVJlZmVyZW5jZSYmIHJlcXVl
c3RCb2R5LAorICAgICAgICBGcmFtZUluZm9EYXRhJiYsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBJUEM6OkZv
cm1EYXRhUmVmZXJlbmNlJiYgcmVxdWVzdEJvZHksCiAgICAgICAgIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBjb25zdCBVc2VyRGF0YSYsIE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jOjpEZWxheWVk
UmVwbHkmJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgV2ViQ29yZTo6
UG9saWN5Q2hlY2tJZGVudGlmaWVyLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLAogICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNjU4LDcgKzE2NTksNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIGNvbnN0IFN0cmluZyYgdXJsLCB1aW50NjRfdCBmcmFtZUlEKTsKIAogICAgIC8vIFVJIGNs
aWVudAotICAgIHZvaWQgY3JlYXRlTmV3UGFnZShjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0
X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBXZWJDb3Jl
OjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJik7CisgICAgdm9pZCBjcmVh
dGVOZXdQYWdlKGNvbnN0IEZyYW1lSW5mb0RhdGEmLCBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRl
bnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBX
ZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYmLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpDcmVhdGVOZXdQYWdlOjpEZWxheWVkUmVwbHkmJik7CiAgICAgdm9p
ZCBzaG93UGFnZSgpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFN0cmluZyYsIE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bkphdmFTY3JpcHRBbGVydDo6RGVsYXllZFJlcGx5JiYp
OwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdENvbmZpcm0odWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgU3RyaW5nJiwgTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmKTsKQEAgLTIz
MzAsNyArMjMzMSw3IEBAIFdFQlBBR0VQUk9YWV9MT0FET1BUSU1JWkVSX0FERElUSU9OU18yCiAg
ICAgUmVmUHRyPFdlYkNvcmU6OlZhbGlkYXRpb25CdWJibGU+IG1fdmFsaWRhdGlvbkJ1YmJsZTsK
ICNlbmRpZgogCi0gICAgY29uc3QgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgY29uc3QgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAKICAgICBib29sIG1faXNQYWdlU3VzcGVuZGVk
IHsgZmFsc2UgfTsKICAgICBib29sIG1fYWRkc1Zpc2l0ZWRMaW5rcyB7IHRydWUgfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA0
MDQ2ZTJlMmIyNDYyMjkzZTI5ZmE0NTgwZjA3MTRhOTBjMzk5ODMzLi5hODQ5ODQ3YjUzNWQyNmUx
NGNiZDI4MDIwYjM3OWE3ZjE3NTdkNzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yMiw3ICsyMiw3IEBACiAKIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgIyBVSSBtZXNzYWdlcwotICAgIENyZWF0ZU5ld1BhZ2Uo
c3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgc3RydWN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzIHdpbmRvd0ZlYXR1cmVzLCBzdHJ1Y3Qg
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSkgLT4gKHVp
bnQ2NF90IG5ld1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzPiBuZXdQYWdlUGFyYW1ldGVycykgU3luY2hyb25vdXMKKyAgICBDcmVhdGVOZXdQYWdlKHN0
cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBPcHRp
b25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4gb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBzdHJ1Y3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMg
d2luZG93RmVhdHVyZXMsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmln
YXRpb25BY3Rpb25EYXRhKSAtPiAoT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IG5l
d1BhZ2VJRCwgT3B0aW9uYWw8V2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBuZXdQ
YWdlUGFyYW1ldGVycykgU3luY2hyb25vdXMKICAgICBTaG93UGFnZSgpCiAgICAgQ2xvc2VQYWdl
KGJvb2wgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIpCiAgICAgUnVuSmF2YVNjcmlwdEFsZXJ0KHVp
bnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgU3RyaW5nIG1lc3NhZ2UpIC0+ICgpIFN5bmNocm9ub3VzCkBAIC0xMDQs
OCArMTA0LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgICMgUG9saWN5IG1l
c3NhZ2VzCiAgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgc3Ry
dWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJD
b3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgU3RyaW5n
IGRvd25sb2FkQXR0cmlidXRlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKQotICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25Bc3luYyh1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lk
ZW50aWZpZXIsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlv
bkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5m
b0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHks
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSwgdWludDY0X3QgbGlzdGVuZXJJRCkKLSAgICBEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uU3luYyh1aW50NjRfdCBmcmFtZUlELCBib29sIGlzTWFpbkZyYW1lLCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIFdl
YkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRp
bmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QsIElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UgcmVkaXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkg
LT4gKFdlYkNvcmU6OlBvbGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIs
IGVudW06dWludDhfdCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRf
dCBuZXdOYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25h
bDxXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgU3luY2hyb25v
dXMKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uQXN5bmModWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBXZWJDb3JlOjpQb2xpY3lDaGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVy
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9y
aWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+
IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1
ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgSVBDOjpGb3JtRGF0YVJlZmVy
ZW5jZSByZXF1ZXN0Qm9keSwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZWRpcmVjdFJlc3Bv
bnNlLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhLCB1aW50NjRfdCBsaXN0ZW5lcklEKQorICAg
IERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25TeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGJv
b2wgaXNNYWluRnJhbWUsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UG9saWN5Q2hlY2tJZGVudGlmaWVyIHBvbGljeUNoZWNr
SWRlbnRpZmllciwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0
aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJ
bmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9y
aWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIElQQzo6Rm9y
bURhdGFSZWZlcmVuY2UgcmVxdWVzdEJvZHksIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVk
aXJlY3RSZXNwb25zZSwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKFdlYkNvcmU6OlBv
bGljeUNoZWNrSWRlbnRpZmllciBwb2xpY3lDaGVja0lkZW50aWZpZXIsIGVudW06dWludDhfdCBX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9u
SUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBPcHRpb25hbDxXZWJLaXQ6OldlYnNp
dGVQb2xpY2llc0RhdGE+IHdlYnNpdGVQb2xpY2llcykgU3luY2hyb25vdXMKICAgICBEZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpQb2xpY3lD
aGVja0lkZW50aWZpZXIgcG9saWN5Q2hlY2tJZGVudGlmaWVyLCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWlu
dDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXIuY3BwCmluZGV4IGM4MDIzZGU0MTYxNjQ3NTAxMGY0Mjgy
MzlhN2JlZDA3YjE3Zjg1ZDcuLmY0OTcxNTFkNzVjNWU2ZjFmMjg2YWFhNzllOGE2NDdjNmE5ZjM2
YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NMaWZldGlt
ZU9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzTGlm
ZXRpbWVPYnNlcnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXZWJQcm9jZXNzTGlmZXRp
bWVPYnNlcnZlcjo6YWRkV2ViUGFnZShXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSwgV2ViUHJv
Y2UKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvY2Vzcy5pc1ByZXdhcm1lZCgpKTsKIAogICAgIGlm
IChtX3Byb2Nlc3Nlcy5hZGQoJnByb2Nlc3MpLmlzTmV3RW50cnkpIHsKLSAgICAgICAgUkVMRUFT
RV9MT0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBh
Z2U6IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vz
c0lkZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpKTsKKyAgICAgICAgUkVMRUFTRV9M
T0coTG9hZGluZywgIiVwIC0gV2ViUHJvY2Vzc0xpZmV0aW1lT2JzZXJ2ZXI6OmFkZFdlYlBhZ2U6
IHdlYlBJRCA9ICVpLCBwYWdlSUQgPSAlIiBQUkl1NjQsIHRoaXMsIHByb2Nlc3MucHJvY2Vzc0lk
ZW50aWZpZXIoKSwgd2ViUGFnZVByb3h5LnBhZ2VJRCgpLnRvVUludDY0KCkpOwogICAgICAgICB3
ZWJQcm9jZXNzV2lsbE9wZW5Db25uZWN0aW9uKHByb2Nlc3MsICpwcm9jZXNzLmNvbm5lY3Rpb24o
KSk7CiAgICAgfQogCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgV2ViUHJvY2Vzc0xpZmV0aW1lT2Jz
ZXJ2ZXI6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQYWdlUHJveHksIFdlYlByCiAg
ICAgd2ViUGFnZURpZENsb3NlQ29ubmVjdGlvbih3ZWJQYWdlUHJveHksICpwcm9jZXNzLmNvbm5l
Y3Rpb24oKSk7CiAKICAgICBpZiAobV9wcm9jZXNzZXMucmVtb3ZlKCZwcm9jZXNzKSkgewotICAg
ICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZl
cjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywg
cHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkpOworICAg
ICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiJXAgLSBXZWJQcm9jZXNzTGlmZXRpbWVPYnNlcnZl
cjo6cmVtb3ZlV2ViUGFnZTogd2ViUElEID0gJWksIHBhZ2VJRCA9ICUiIFBSSXU2NCwgdGhpcywg
cHJvY2Vzcy5wcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQYWdlUHJveHkucGFnZUlEKCkudG9VSW50
NjQoKSk7CiAgICAgICAgIHdlYlByb2Nlc3NEaWRDbG9zZUNvbm5lY3Rpb24ocHJvY2VzcywgKnBy
b2Nlc3MuY29ubmVjdGlvbigpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggOWJmYmZkZTMwN2U2NGIzZTZjY2VjNmJjY2IyYzRkZmQ3
YjRiOWE2YS4uZWNkOGQ5MDVlMDE1Y2YyNTA1ZDU5OWFmOGNiYWVkOTEzNTAxNjI5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTI5Niw5ICsxMjk2
LDkgQEAgYm9vbCBXZWJQcm9jZXNzUG9vbDo6bWF5SGF2ZVJlZ2lzdGVyZWRTZXJ2aWNlV29ya2Vy
cyhjb25zdCBXZWJzaXRlRGF0YVN0b3JlJiBzdG8KIH0KICNlbmRpZgogCi12b2lkIFdlYlByb2Nl
c3NQb29sOjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBX
ZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCit2b2lkIFdlYlByb2Nlc3NQb29sOjpwYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0
YVN0b3JlJiBkYXRhU3RvcmUpCiB7Ci0gICAgYXV0byByZXN1bHQgPSBtX3Nlc3Npb25Ub1BhZ2VJ
RHNNYXAuYWRkKGRhdGFTdG9yZS5zZXNzaW9uSUQoKSwgSGFzaFNldDx1aW50NjRfdD4oKSkuaXRl
cmF0b3ItPnZhbHVlLmFkZChwYWdlSUQpOworICAgIGF1dG8gcmVzdWx0ID0gbV9zZXNzaW9uVG9Q
YWdlSURzTWFwLmFkZChkYXRhU3RvcmUuc2Vzc2lvbklEKCksIEhhc2hTZXQ8UGFnZUlkZW50aWZp
ZXI+KCkpLml0ZXJhdG9yLT52YWx1ZS5hZGQocGFnZUlEKTsKICAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwogCiAgICAgYXV0byBzZXNzaW9uSUQgPSBkYXRhU3Rv
cmUuc2Vzc2lvbklEKCk7CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwYWdlQmVnaW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRl
RGF0YQogICAgIH0KIH0KIAotdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGFnZUVuZFVzaW5nV2Vic2l0
ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQsIFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSkK
K3ZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoUGFnZUlk
ZW50aWZpZXIgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUpCiB7CiAgICAgYXV0
byBzZXNzaW9uSUQgPSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CiAgICAgYXV0byBpdGVyYXRvciA9
IG1fc2Vzc2lvblRvUGFnZUlEc01hcC5maW5kKHNlc3Npb25JRCk7CkBAIC0yMjExLDcgKzIyMTEs
NyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpyZWluc3RhdGVOZXR3b3JrUHJvY2Vzc0Fzc2VydGlv
blN0YXRlKE5ldHdvcmtQcm9jZXNzUHJveHkmCiB9CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi1TZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBXZWJQcm9jZXNzUG9vbDo6c2VydmljZVdv
cmtlclByb2Nlc3NQcm94eUZyb21QYWdlSUQodWludDY0X3QgcGFnZUlEKSBjb25zdAorU2Vydmlj
ZVdvcmtlclByb2Nlc3NQcm94eSogV2ViUHJvY2Vzc1Bvb2w6OnNlcnZpY2VXb3JrZXJQcm9jZXNz
UHJveHlGcm9tUGFnZUlEKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICAvLyBG
SVhNRTogVGhpcyBpcyBpbmVmZmljaWVudC4KICAgICBmb3IgKGF1dG8qIHNlcnZpY2VXb3JrZXJQ
cm9jZXNzIDogbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzLnZhbHVlcygpKSB7CkBAIC0yNTIwLDcg
KzI1MjAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpjbGVhckN1cnJlbnRNb2RpZmllclN0YXRl
Rm9yVGVzdGluZygpCiB9CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQot
dm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNm
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZnJv
bURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9tYWluLCBPcHRpb25TZXQ8Q3Jv
c3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4gbmF2aWdhdGlvbkRhdGFUcmFuc2Zl
ciwgdWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzUG9vbDo6ZGlkQ29tbWl0Q3Jvc3NT
aXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRv
RG9tYWluLCBPcHRpb25TZXQ8Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6RmxhZz4g
bmF2aWdhdGlvbkRhdGFUcmFuc2ZlciwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGlm
ICghbV9uZXR3b3JrUHJvY2VzcykKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggZDBhOTIzNjcyYmJkMjdkYTg5NGRiNmFkZDQ4YmMw
ODgxY2UzYzVjMS4uMWQyOTgyNWM4MzRmMTA0ZWQxOTc5YTQwMDFhMjUwYWVhNmI2ZTYxNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC0xNTAsNiArMTUwLDE4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE1lc3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVy
ZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciYpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2FnZVJlY2VpdmVyKElQQzo6U3Ry
aW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUpOwogICAgIHZvaWQgcmVtb3ZlTWVzc2Fn
ZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNlaXZlck5hbWUsIHVpbnQ2
NF90IGRlc3RpbmF0aW9uSUQpOworICAgIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorICAg
IHZvaWQgYWRkTWVzc2FnZVJlY2VpdmVyKElQQzo6U3RyaW5nUmVmZXJlbmNlIG1lc3NhZ2VSZWNl
aXZlck5hbWUsIE9iamVjdElkZW50aWZpZXI8VD4gZGVzdGluYXRpb25JRCwgSVBDOjpNZXNzYWdl
UmVjZWl2ZXImIHJlY2VpdmVyKQorICAgIHsKKyAgICAgICAgYWRkTWVzc2FnZVJlY2VpdmVyKG1l
c3NhZ2VSZWNlaXZlck5hbWUsIGRlc3RpbmF0aW9uSUQudG9VSW50NjQoKSwgcmVjZWl2ZXIpOwor
ICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICB2b2lkIHJlbW92ZU1l
c3NhZ2VSZWNlaXZlcihJUEM6OlN0cmluZ1JlZmVyZW5jZSBtZXNzYWdlUmVjZWl2ZXJOYW1lLCBP
YmplY3RJZGVudGlmaWVyPFQ+IGRlc3RpbmF0aW9uSUQpCisgICAgeworICAgICAgICByZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIobWVzc2FnZVJlY2VpdmVyTmFtZSwgZGVzdGluYXRpb25JRC50b1VJbnQ2
NCgpKTsKKyAgICB9CiAKICAgICBib29sIGRpc3BhdGNoTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKTsKICAgICBib29sIGRpc3BhdGNoU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKTsK
QEAgLTE5NSw4ICsyMDcsOCBAQCBwdWJsaWM6CiAKICAgICBSZWY8V2ViUGFnZVByb3h5PiBjcmVh
dGVXZWJQYWdlKFBhZ2VDbGllbnQmLCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJik7CiAK
LSAgICB2b2lkIHBhZ2VCZWdpblVzaW5nV2Vic2l0ZURhdGFTdG9yZSh1aW50NjRfdCBwYWdlSUQs
IFdlYnNpdGVEYXRhU3RvcmUmKTsKLSAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3Rv
cmUodWludDY0X3QgcGFnZUlELCBXZWJzaXRlRGF0YVN0b3JlJik7CisgICAgdm9pZCBwYWdlQmVn
aW5Vc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVE
YXRhU3RvcmUmKTsKKyAgICB2b2lkIHBhZ2VFbmRVc2luZ1dlYnNpdGVEYXRhU3RvcmUoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIsIFdlYnNpdGVEYXRhU3RvcmUmKTsKICAgICBib29sIGhhc1BhZ2Vz
VXNpbmdXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKSBjb25zdDsKIAogICAgIGNv
bnN0IFN0cmluZyYgaW5qZWN0ZWRCdW5kbGVQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb25maWd1
cmF0aW9uLT5pbmplY3RlZEJ1bmRsZVBhdGgoKTsgfQpAQCAtMzY3LDcgKzM3OSw3IEBAIHB1Ymxp
YzoKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc1Byb3h5Jiwg
V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mJiwgT3B0aW9uYWw8UEFMOjpTZXNzaW9uSUQ+KTsK
LSAgICBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5KiBzZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5
RnJvbVBhZ2VJRCh1aW50NjRfdCBwYWdlSUQpIGNvbnN0OworICAgIFNlcnZpY2VXb3JrZXJQcm9j
ZXNzUHJveHkqIHNlcnZpY2VXb3JrZXJQcm9jZXNzUHJveHlGcm9tUGFnZUlEKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyKSBjb25zdDsKICAgICBjb25zdCBIYXNoTWFwPFdlYkNvcmU6OlJlZ2lzdHJh
YmxlRG9tYWluLCBTZXJ2aWNlV29ya2VyUHJvY2Vzc1Byb3h5Kj4mIHNlcnZpY2VXb3JrZXJQcm94
aWVzKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc2VzOyB9CiAgICAgdm9p
ZCBzZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIoYm9vbCBhbGxvd3Mp
IHsgbV9hbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvclNlcnZpY2VXb3JrZXIgPSBhbGxvd3M7IH0K
ICAgICBib29sIGFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yU2VydmljZVdvcmtlcigpIGNvbnN0
IHsgcmV0dXJuIG1fYWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JTZXJ2aWNlV29ya2VyOyB9CkBA
IC00OTYsNyArNTA4LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJDdXJyZW50TW9kaWZpZXJT
dGF0ZUZvclRlc3RpbmcoKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgdm9pZCBkaWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNl
c3Npb25JRCwgY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNv
bnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNv
cmU6OkNyb3NzU2l0ZU5hdmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+LCB1aW50NjRfdCBwYWdl
SUQpOworICAgIHZvaWQgZGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWlu
LCBjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxX
ZWJDb3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIpOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JN
KFdQRSkKQEAgLTc2Miw3ICs3NzQsNyBAQCBwcml2YXRlOgogICAgIH07CiAgICAgUGF0aHMgbV9y
ZXNvbHZlZFBhdGhzOwogCi0gICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgSGFzaFNldDx1aW50
NjRfdD4+IG1fc2Vzc2lvblRvUGFnZUlEc01hcDsKKyAgICBIYXNoTWFwPFBBTDo6U2Vzc2lvbklE
LCBIYXNoU2V0PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPj4gbV9zZXNzaW9uVG9QYWdlSURzTWFw
OwogICAgIFJ1bkxvb3A6OlRpbWVyPFdlYlByb2Nlc3NQb29sPiBtX3NlcnZpY2VXb3JrZXJQcm9j
ZXNzZXNUZXJtaW5hdGlvblRpbWVyOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDgyMDM0NjVjYjI4
MTRkMmNmYzMyOGZhNzk0NjYyYTIwZTAyYjQzMmMuLjY3ODMxZTIwNzgwOWMwZWM1YjYyOGFlYzBk
MzkxMTE4MzVmMzEwZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmNwcApAQCAtMTEwLDEwICsxMTAsOSBAQCBXZWJQcm9jZXNzUHJveHkqIFdlYlByb2Nlc3NQ
cm94eTo6cHJvY2Vzc0ZvcklkZW50aWZpZXIoUHJvY2Vzc0lkZW50aWZpZXIgaWRlbnRpZgogICAg
IHJldHVybiBhbGxQcm9jZXNzZXMoKS5nZXQoaWRlbnRpZmllcik7CiB9CiAKLXVpbnQ2NF90IFdl
YlByb2Nlc3NQcm94eTo6Z2VuZXJhdGVQYWdlSUQoKQorUGFnZUlkZW50aWZpZXIgV2ViUHJvY2Vz
c1Byb3h5OjpnZW5lcmF0ZVBhZ2VJRCgpCiB7Ci0gICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZVBh
Z2VJRDsKLSAgICByZXR1cm4gKyt1bmlxdWVQYWdlSUQ7CisgICAgcmV0dXJuIFBhZ2VJZGVudGlm
aWVyOjpnZW5lcmF0ZSgpOwogfQogCiBzdGF0aWMgV2ViUHJvY2Vzc1Byb3h5OjpXZWJQYWdlUHJv
eHlNYXAmIGdsb2JhbFBhZ2VNYXAoKQpAQCAtMzMwLDcgKzMyOSw3IEBAIHZvaWQgV2ViUHJvY2Vz
c1Byb3h5OjpzaHV0RG93bigpCiAgICAgbV9wcm9jZXNzUG9vbC0+ZGlzY29ubmVjdFByb2Nlc3Mo
dGhpcyk7CiB9CiAKLVdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCkKK1dlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKFBhZ2VJ
ZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICByZXR1cm4gZ2xvYmFsUGFnZU1hcCgpLmdldChwYWdl
SUQpOwogfQpAQCAtMzYzLDcgKzM2Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQ
YWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAKIFJl
ZjxXZWJQYWdlUHJveHk+IFdlYlByb2Nlc3NQcm94eTo6Y3JlYXRlV2ViUGFnZShQYWdlQ2xpZW50
JiBwYWdlQ2xpZW50LCBSZWY8QVBJOjpQYWdlQ29uZmlndXJhdGlvbj4mJiBwYWdlQ29uZmlndXJh
dGlvbikKIHsKLSAgICB1aW50NjRfdCBwYWdlSUQgPSBnZW5lcmF0ZVBhZ2VJRCgpOworICAgIGF1
dG8gcGFnZUlEID0gZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBSZWY8V2ViUGFnZVByb3h5PiB3ZWJQ
YWdlID0gV2ViUGFnZVByb3h5OjpjcmVhdGUocGFnZUNsaWVudCwgKnRoaXMsIHBhZ2VJRCwgV1RG
TW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogCiAgICAgYWRkRXhpc3RpbmdXZWJQYWdlKHdlYlBh
Z2UuZ2V0KCksIEJlZ2luc1VzaW5nRGF0YVN0b3JlOjpZZXMpOwpAQCAtNDE1LDEwICs0MTQsMTAg
QEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OnJlbW92ZVdlYlBhZ2UoV2ViUGFnZVByb3h5JiB3ZWJQ
YWdlLCBFbmRzVXNpbmdEYXRhU3RvcmUgZW4KICAgICBtYXliZVNodXREb3duKCk7CiB9CiAKLXZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0
b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6YWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExp
bmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIGF1dG8mIHVzZXJzID0gbV92
aXNpdGVkTGlua1N0b3Jlc1dpdGhVc2Vycy5lbnN1cmUoJnZpc2l0ZWRMaW5rU3RvcmUsIFtdIHsK
LSAgICAgICAgcmV0dXJuIEhhc2hTZXQ8dWludDY0X3Q+IHsgfTsKKyAgICAgICAgcmV0dXJuIEhh
c2hTZXQ8UGFnZUlkZW50aWZpZXI+IHsgfTsKICAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKICAg
ICBBU1NFUlQoIXVzZXJzLmNvbnRhaW5zKHBhZ2VJRCkpOwpAQCAtNDI4LDcgKzQyNyw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjphZGRWaXNpdGVkTGlua1N0b3JlVXNlcihWaXNpdGVkTGlua1N0
b3JlJiB2aXNpdGVkTGlua1N0b3JlCiAgICAgICAgIHZpc2l0ZWRMaW5rU3RvcmUuYWRkUHJvY2Vz
cygqdGhpcyk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpyZW1vdmVWaXNpdGVkTGlua1N0
b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiB2aXNpdGVkTGlua1N0b3JlLCB1aW50NjRfdCBwYWdl
SUQpCit2b2lkIFdlYlByb2Nlc3NQcm94eTo6cmVtb3ZlVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlz
aXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSwgUGFnZUlkZW50aWZpZXIgcGFnZUlEKQog
ewogICAgIGF1dG8gaXQgPSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJzLmZpbmQoJnZpc2l0
ZWRMaW5rU3RvcmUpOwogICAgIGlmIChpdCA9PSBtX3Zpc2l0ZWRMaW5rU3RvcmVzV2l0aFVzZXJz
LmVuZCgpKQpAQCAtNTQxLDcgKzU0MCw3IEBAIGJvb2wgV2ViUHJvY2Vzc1Byb3h5OjpmdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkKCkKIH0KICNlbmRpZgogCi1ib29sIFdlYlByb2Nlc3NQcm94eTo6
aGFzUHJvdmlzaW9uYWxQYWdlV2l0aElEKHVpbnQ2NF90IHBhZ2VJRCkgY29uc3QKK2Jvb2wgV2Vi
UHJvY2Vzc1Byb3h5OjpoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQoUGFnZUlkZW50aWZpZXIgcGFn
ZUlEKSBjb25zdAogewogICAgIGZvciAoYXV0byogcHJvdmlzaW9uYWxQYWdlIDogbV9wcm92aXNp
b25hbFBhZ2VzKSB7CiAgICAgICAgIGlmIChwcm92aXNpb25hbFBhZ2UtPnBhZ2UoKS5wYWdlSUQo
KSA9PSBwYWdlSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmlu
ZGV4IDlhNmNiZjFmNDYwOTlhNWY2ZjlmYTJmMGVlOGE2ZmEyYzgxODE2YTguLmFkM2YwMzhkZDY1
NDY1YzA0ODk5NzliNjdlNTg1Yzg1NmY5MmRjNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL01lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlUG9ydElkZW50aWZpZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9j
ZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZFN0cmluZ0hhc2guaD4KQEAgLTk3LDcgKzk4LDcgQEAg
ZW51bSBjbGFzcyBBbGxvd1Byb2Nlc3NDYWNoaW5nIHsgTm8sIFllcyB9OwogY2xhc3MgV2ViUHJv
Y2Vzc1Byb3h5IDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFJlc3BvbnNp
dmVuZXNzVGltZXI6OkNsaWVudCwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFdlYlByb2Nl
c3NQcm94eT4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQcm9jZXNzUHJveHk+LCBwcml2YXRl
IFByb2Nlc3NUaHJvdHRsZXJDbGllbnQgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDx1
aW50NjRfdCwgUmVmUHRyPFdlYkZyYW1lUHJveHk+PiBXZWJGcmFtZVByb3h5TWFwOwotICAgIHR5
cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgV2ViUGFnZVByb3h5Kj4gV2ViUGFnZVByb3h5TWFwOwor
ICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViUGFnZVByb3h5
Kj4gV2ViUGFnZVByb3h5TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRy
PEFQSTo6VXNlckluaXRpYXRlZEFjdGlvbj4+IFVzZXJJbml0aWF0ZWRBY3Rpb25NYXA7CiAKICAg
ICBlbnVtIGNsYXNzIElzUHJld2FybWVkIHsKQEAgLTEyOCw3ICsxMjksNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRXZWJzaXRlRGF0YVN0b3JlKFdlYnNpdGVEYXRhU3RvcmUmKTsKIAogICAgIHN0
YXRpYyBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3NGb3JJZGVudGlmaWVyKFdlYkNvcmU6OlByb2Nl
c3NJZGVudGlmaWVyKTsKLSAgICBzdGF0aWMgV2ViUGFnZVByb3h5KiB3ZWJQYWdlKHVpbnQ2NF90
IHBhZ2VJRCk7CisgICAgc3RhdGljIFdlYlBhZ2VQcm94eSogd2ViUGFnZShXZWJDb3JlOjpQYWdl
SWRlbnRpZmllcik7CiAgICAgUmVmPFdlYlBhZ2VQcm94eT4gY3JlYXRlV2ViUGFnZShQYWdlQ2xp
ZW50JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+JiYpOwogCiAgICAgZW51bSBjbGFzcyBC
ZWdpbnNVc2luZ0RhdGFTdG9yZSA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0xNDksMTAgKzE1MCwx
MCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNTZXJ2aWNlV29ya2VyUHJvY2Vzcygp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblBy
b2Nlc3ModWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlBhZ2VJblByb2Nl
c3MoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogCi0gICAgdm9pZCBhZGRWaXNpdGVkTGlua1N0
b3JlVXNlcihWaXNpdGVkTGlua1N0b3JlJiwgdWludDY0X3QgcGFnZUlEKTsKLSAgICB2b2lkIHJl
bW92ZVZpc2l0ZWRMaW5rU3RvcmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCB1aW50NjRfdCBwYWdl
SUQpOworICAgIHZvaWQgYWRkVmlzaXRlZExpbmtTdG9yZVVzZXIoVmlzaXRlZExpbmtTdG9yZSYs
IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlbW92ZVZpc2l0ZWRMaW5rU3Rv
cmVVc2VyKFZpc2l0ZWRMaW5rU3RvcmUmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKICAg
ICB2b2lkIGFkZFdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29u
dHJvbGxlclByb3h5JiwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYpOwogICAgIHZvaWQgZGlk
RGVzdHJveVdlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5KFdlYlVzZXJDb250ZW50Q29udHJv
bGxlclByb3h5Jik7CkBAIC0zMTEsNyArMzEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgd2ViUGFn
ZU1lZGlhU3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5Jik7CiAKIHByb3RlY3RlZDoKLSAgICBz
dGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQYWdlSUQoKTsKKyAgICBzdGF0aWMgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgZ2VuZXJhdGVQYWdlSUQoKTsKICAgICBXZWJQcm9jZXNzUHJveHkoV2ViUHJv
Y2Vzc1Bvb2wmLCBXZWJzaXRlRGF0YVN0b3JlKiwgSXNQcmV3YXJtZWQpOwogCiAgICAgLy8gQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5CkBAIC0zNTQsNyArMzU1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZENyZWF0ZUNvbnRleHRGb3JWaXNpYmlsaXR5UHJvcGFnYXRpb24oTGF5ZXJIb3N0aW5nQ29u
dGV4dElEKTsKICNlbmRpZgogCi0gICAgYm9vbCBoYXNQcm92aXNpb25hbFBhZ2VXaXRoSUQodWlu
dDY0X3QgcGFnZUlEKSBjb25zdDsKKyAgICBib29sIGhhc1Byb3Zpc2lvbmFsUGFnZVdpdGhJRChX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgY29uc3Q7CiAgICAgYm9vbCBpc0FsbG93ZWRUb1VwZGF0
ZUJhY2tGb3J3YXJkSXRlbShXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgY29uc3Q7CiAKICAgICAv
LyBQbHVnaW5zCkBAIC00NDcsNyArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFByb3Zp
c2lvbmFsUGFnZVByb3h5Kj4gbV9wcm92aXNpb25hbFBhZ2VzOwogICAgIFVzZXJJbml0aWF0ZWRB
Y3Rpb25NYXAgbV91c2VySW5pdGlhdGVkQWN0aW9uTWFwOwogCi0gICAgSGFzaE1hcDxWaXNpdGVk
TGlua1N0b3JlKiwgSGFzaFNldDx1aW50NjRfdC8qIHBhZ2VJRCAqLz4+IG1fdmlzaXRlZExpbmtT
dG9yZXNXaXRoVXNlcnM7CisgICAgSGFzaE1hcDxWaXNpdGVkTGlua1N0b3JlKiwgSGFzaFNldDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4+IG1fdmlzaXRlZExpbmtTdG9yZXNXaXRoVXNlcnM7CiAg
ICAgSGFzaFNldDxXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eSo+IG1fd2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveGllczsKIAogICAgIGludCBtX251bWJlck9mVGltZXNTdWRkZW5UZXJt
aW5hdGlvbldhc0Rpc2FibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxT
Y2hlbWVIYW5kbGVyLmNwcAppbmRleCBlMzU1MzE5ZWE0YzRlZTY1MWM2YmVkZjdjODZmYmRkMjFm
MjlkYzIzLi43ZDU3NWE0MDRiMDQ1YjkxYWQ3YWM4ZTY2NzYwZDA4YmUzOGI5MWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6dGFza0NvbXBsZXRlZChXZWJV
UkxTY2hlbWVUYXNrJiB0YXNrKQogICAgIHBsYXRmb3JtVGFza0NvbXBsZXRlZCh0YXNrKTsKIH0K
IAotdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpyZW1vdmVUYXNrRnJvbVBhZ2VNYXAodWludDY0
X3QgcGFnZUlELCB1aW50NjRfdCB0YXNrSUQpCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnJl
bW92ZVRhc2tGcm9tUGFnZU1hcChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJ
RCkKIHsKICAgICBhdXRvIGl0ZXJhdG9yID0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIuZmluZChw
YWdlSUQpOwogICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllci5l
bmQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVI
YW5kbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgK
aW5kZXggODk5NzZjNjFmODNkNTJiODFmMmM0NDA3YzJjNWJiZDczYmYyYWU0OS4uYjdhZjA3NTk3
NWYzMmI4YWI4NWU4OGQxYmFmZmIwNWExNzA1YTdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaApAQCAtNjYsMTMgKzY2LDEzIEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCB2b2lkIHBsYXRmb3JtU3RvcFRhc2soV2ViUGFnZVByb3h5JiwgV2ViVVJM
U2NoZW1lVGFzayYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcGxhdGZvcm1UYXNrQ29tcGxldGVk
KFdlYlVSTFNjaGVtZVRhc2smKSA9IDA7CiAKLSAgICB2b2lkIHJlbW92ZVRhc2tGcm9tUGFnZU1h
cCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IHRhc2tJRCk7CisgICAgdm9pZCByZW1vdmVUYXNr
RnJvbVBhZ2VNYXAoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJRCk7CiAg
ICAgV2ViUHJvY2Vzc1Byb3h5KiBwcm9jZXNzRm9yVGFza0lkZW50aWZpZXIodWludDY0X3QpIGNv
bnN0OwogCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogCiAgICAgSGFzaE1hcDx1aW50NjRf
dCwgUmVmPFdlYlVSTFNjaGVtZVRhc2s+PiBtX3Rhc2tzOwotICAgIEhhc2hNYXA8dWludDY0X3Qs
IEhhc2hTZXQ8dWludDY0X3Q+PiBtX3Rhc2tzQnlQYWdlSWRlbnRpZmllcjsKKyAgICBIYXNoTWFw
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBIYXNoU2V0PHVpbnQ2NF90Pj4gbV90YXNrc0J5UGFn
ZUlkZW50aWZpZXI7CiAgICAgCiAgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNM
b2FkQ29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlVSTFNjaGVtZVRhc2suaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suaAppbmRleCBiODcyMDczYmQyNzgxZmYwOWI5YmYyNTMzMTYyYzA1YWE2OWMwM2Vi
Li5hOTdmMTYwY2YyNTU2ZmExMzhmNTJiZDgxNWYyM2U4ZWE2YzdlYTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC01Nyw3ICs1Nyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmPFdlYlVSTFNjaGVtZVRhc2s+IGNyZWF0ZShXZWJVUkxTY2hlbWVI
YW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgV2ViUHJvY2Vzc1Byb3h5JiwgdWludDY0X3QgaWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXImJik7CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9Ci0gICAgdWludDY0X3QgcGFnZUlEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWRl
bnRpZmllcjsgfQorICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KICAgICBXZWJQcm9jZXNzUHJveHkqIHByb2Nlc3Mo
KSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3MuZ2V0KCk7IH0KIAogICAgIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQpA
QCAtODcsNyArODcsNyBAQCBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eSogbV9wYWdlOwogICAg
IFJlZlB0cjxXZWJQcm9jZXNzUHJveHk+IG1fcHJvY2VzczsKICAgICB1aW50NjRfdCBtX2lkZW50
aWZpZXI7Ci0gICAgdWludDY0X3QgbV9wYWdlSWRlbnRpZmllcjsKKyAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3BhZ2VJZGVudGlmaWVyOwogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCBtX3JlcXVlc3Q7CiAgICAgYm9vbCBtX3N0b3BwZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9y
ZXNwb25zZVNlbnQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAppbmRleCA0ZmQwMjEyNjgxNzA1
YWNmNGY5YzgwYmUwOGQzYmMwNGE0ZjhlNTdjLi45YTA1ZWE4YmY2NjFhYjQzNjQ5ZDUxOTA3NTNh
YWM4ZTkwNmZkNTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRl
RGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMTU2NSw3ICsxNTY1LDcgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjpzZXROb3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJl
ZChib29sIHZhbHVlLCBDb21wbGUKICAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKCkuc2V0Tm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQobV9zZXNzaW9u
SUQsIHZhbHVlLCBbcHJvY2Vzc1Bvb2wsIGNhbGxiYWNrQWdncmVnYXRvciA9IGNhbGxiYWNrQWdn
cmVnYXRvci5jb3B5UmVmKCldIHsgfSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6Z2V0
QWxsU3RvcmFnZUFjY2Vzc0VudHJpZXModWludDY0X3QgcGFnZUlELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYgZG9tYWlucyk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmdldEFsbFN0b3JhZ2VBY2Nlc3NFbnRyaWVzKFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRv
bWFpbnMpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzUHJveHk6OndlYlBhZ2UocGFnZUlEKTsKICAgICBpZiAoIXdlYlBhZ2UpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuaAppbmRleCA2NDJlMzMwOWQwNzYyNDNlMzdkOGUxZDI3NDY1YjExZjcxMmRiMGM4Li44MjJj
M2ZjNzYzN2Q3YzVlYjAwM2M2OWNlOTQ3NDViZDM4MjU5M2YyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGV2aWNlT3Jp
ZW50YXRpb25Pck1vdGlvblBlcm1pc3Npb25TdGF0ZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5IYXNoLmg+CiAjaW5jbHVkZSA8cGFsL1Nl
c3Npb25JRC5oPgpAQCAtMTM1LDcgKzEzNiw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGR1bXBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwogICAgIHZvaWQgbG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
bG9nVXNlckludGVyYWN0aW9uKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7Ci0gICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyh1aW50NjRfdCBwYWdlSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJiBkb21haW5zKT4mJik7Cisg
ICAgdm9pZCBnZXRBbGxTdG9yYWdlQWNjZXNzRW50cmllcyhXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmIGRvbWFpbnMpPiYmKTsK
ICAgICB2b2lkIGhhc0hhZFVzZXJJbnRlcmFjdGlvbihjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAgICB2b2lkIGlzUHJldmFsZW50UmVzb3VyY2UoY29uc3Qg
VVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBpc1JlZ2lz
dGVyZWRBc1JlZGlyZWN0aW5nVG8oY29uc3QgVVJMJiBob3N0UmVkaXJlY3RlZEZyb20sIGNvbnN0
IFVSTCYgaG9zdFJlZGlyZWN0ZWRUbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0
b3IuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmNw
cAppbmRleCBkYzhkNTNjYWZiYjYzYjE2YTc4Y2E2ODVkZDc0ZmFiN2M0MWQyYWNmLi5hY2Q2MGE0
NGMxZjAxMjI1ZTYxNzI4MDZmMTk3ZDU2NWI1ZmRkNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2d0ay9XYXlsYW5kQ29tcG9zaXRvci5jcHAKQEAgLTM4MCw3ICszODAsNyBA
QCBzdGF0aWMgY29uc3Qgc3RydWN0IHdsX3dlYmtpdGd0a19pbnRlcmZhY2Ugd2Via2l0Z3RrSW50
ZXJmYWNlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGF1dG8qIGNvbXBvc2l0
b3IgPSBzdGF0aWNfY2FzdDxXYXlsYW5kQ29tcG9zaXRvcio+KHdsX3Jlc291cmNlX2dldF91c2Vy
X2RhdGEocmVzb3VyY2UpKTsKLSAgICAgICAgY29tcG9zaXRvci0+YmluZFN1cmZhY2VUb1dlYlBh
Z2Uoc3VyZmFjZSwgcGFnZUlEKTsKKyAgICAgICAgY29tcG9zaXRvci0+YmluZFN1cmZhY2VUb1dl
YlBhZ2Uoc3VyZmFjZSwgbWFrZU9iamVjdElkZW50aWZpZXI8UGFnZUlkZW50aWZpZXJUeXBlPihw
YWdlSUQpKTsKICAgICB9CiB9OwogCkBAIC01NDcsNyArNTQ3LDcgQEAgYm9vbCBXYXlsYW5kQ29t
cG9zaXRvcjo6Z2V0VGV4dHVyZShXZWJQYWdlUHJveHkmIHdlYlBhZ2UsIHVuc2lnbmVkJiB0ZXh0
dXJlLCBJbnQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2F5bGFuZENvbXBvc2l0b3I6
OmJpbmRTdXJmYWNlVG9XZWJQYWdlKFdheWxhbmRDb21wb3NpdG9yOjpTdXJmYWNlKiBzdXJmYWNl
LCB1aW50NjRfdCBwYWdlSUQpCit2b2lkIFdheWxhbmRDb21wb3NpdG9yOjpiaW5kU3VyZmFjZVRv
V2ViUGFnZShXYXlsYW5kQ29tcG9zaXRvcjo6U3VyZmFjZSogc3VyZmFjZSwgV2ViQ29yZTo6UGFn
ZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIFdlYlBhZ2VQcm94eSogd2ViUGFnZSA9IG51bGxw
dHI7CiAgICAgZm9yIChhdXRvKiBwYWdlIDogbV9wYWdlTWFwLmtleXMoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3IuaAppbmRleCAxNDgxOWY4
ZmFjNGVjODAyMzBiYTJjYmJiMThlNmQwOTU5YjlmODRhLi4yZDc4MGZmYjEyNTdkNDlmMDhkZWE5
YTE4NjhhOGE0MzJjNjFiZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvV2F5bGFuZENvbXBvc2l0b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsv
V2F5bGFuZENvbXBvc2l0b3IuaApAQCAtMTAzLDcgKzEwMyw3IEBAIHB1YmxpYzoKICAgICBib29s
IGlzUnVubmluZygpIGNvbnN0IHsgcmV0dXJuICEhbV9kaXNwbGF5OyB9CiAgICAgU3RyaW5nIGRp
c3BsYXlOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwbGF5TmFtZTsgfQogCi0gICAgdm9pZCBi
aW5kU3VyZmFjZVRvV2ViUGFnZShTdXJmYWNlKiwgdWludDY0X3QgcGFnZUlEKTsKKyAgICB2b2lk
IGJpbmRTdXJmYWNlVG9XZWJQYWdlKFN1cmZhY2UqLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7
CiAgICAgdm9pZCByZWdpc3RlcldlYlBhZ2UoV2ViUGFnZVByb3h5Jik7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyV2ViUGFnZShXZWJQYWdlUHJveHkmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggMDgzZDZm
YWYxNTIwMWY4Y2VjNGQwMjhiYTMwOTg4YjdhY2E3NTBkNC4uY2VmZGU2MWM0OWI1MmFjZDZmMDg5
MDg4MjA2YjhkNjZjNzU1MDI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCkBAIC0yNTEsNyArMjUxLDcgQEAg
dm9pZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRp
b25JbnRlcmFjdGl2ZVRyYW5zaXRpb24KICAgICAgICAgaWYgKGZpbmlzaCkKICAgICAgICAgICAg
IG1fd2ViUGFnZVByb3h5Rm9yQmFja0ZvcndhcmRMaXN0Rm9yQ3VycmVudFN3aXBlLT5uYXZpZ2F0
aW9uR2VzdHVyZVdpbGxFbmQodHJhbnNpdGlvbkNvbXBsZXRlZCwgKnRhcmdldEl0ZW0pOwogICAg
IH1dOwotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZVByb3h5LnBhZ2VJRCgpOworICAg
IGF1dG8gcGFnZUlEID0gbV93ZWJQYWdlUHJveHkucGFnZUlEKCk7CiAgICAgR2VzdHVyZUlEIGdl
c3R1cmVJRCA9IG1fY3VycmVudEdlc3R1cmVJRDsKICAgICBbbV9zd2lwZVRyYW5zaXRpb25Db250
ZXh0IF9zZXRDb21wbGV0aW9uSGFuZGxlcjpbcGFnZUlELCBnZXN0dXJlSUQsIHRhcmdldEl0ZW1d
IChfVUlWaWV3Q29udHJvbGxlclRyYW5zaXRpb25Db250ZXh0ICpjb250ZXh0LCBCT09MIGRpZENv
bXBsZXRlKSB7CiAgICAgICAgIGlmIChhdXRvIGdlc3R1cmVDb250cm9sbGVyID0gY29udHJvbGxl
ckZvckdlc3R1cmUocGFnZUlELCBnZXN0dXJlSUQpKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQg
Vmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRTd2lwZUdlc3R1cmUoV2ViQmFja0ZvcndhcmRMaXN0
SXRlbSogdGFyZ2V0SXRlbSwKICAgICAgICAgbV93ZWJQYWdlUHJveHkuZGlkQ2hhbmdlQmFja2dy
b3VuZENvbG9yKCk7CiAgICAgfQogCi0gICAgdWludDY0X3QgcGFnZUlEID0gbV93ZWJQYWdlUHJv
eHkucGFnZUlEKCk7CisgICAgYXV0byBwYWdlSUQgPSBtX3dlYlBhZ2VQcm94eS5wYWdlSUQoKTsK
ICAgICBHZXN0dXJlSUQgZ2VzdHVyZUlEID0gbV9jdXJyZW50R2VzdHVyZUlEOwogICAgIG1fbG9h
ZENhbGxiYWNrID0gW3RoaXMsIHBhZ2VJRCwgZ2VzdHVyZUlEXSB7CiAgICAgICAgIGF1dG8gZHJh
d2luZ0FyZWEgPSBtX3dlYlBhZ2VQcm94eS5wcm92aXNpb25hbERyYXdpbmdBcmVhKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuY3BwCmluZGV4IGZmNDQ5MzQxZDllNDQyZmMxNjJlNDE1NDRiMzg1YjE3YzA1
M2EwMzguLjU3ZjNmZTE3M2NjZDk1MTczNjQyYTE5NWU3Y2ZkMTAxODg2OTg4Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3IuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgSVBDOjpDb25uZWN0aW9uKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VTZW5kZXJDb25uZWN0aW9uKCkgY29uc3QKIAogdWlu
dDY0X3QgV2ViUGF5bWVudENvb3JkaW5hdG9yOjptZXNzYWdlU2VuZGVyRGVzdGluYXRpb25JRCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAgICByZXR1cm4gbV93
ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yOjp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFN0cmluZyYgdmFsaWRhdGlvblVSTFN0cmluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9t
YXRpb25TZXNzaW9uUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRp
b24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKaW5kZXggYjFjYmM5NjNiMGVmY2M4NTI0
OTJkOTY4ZDllYWFjMzE4MjhlMTUyYi4uNDU0Y2E2YmM4NDQ5ODNmNTk5OGZmZWU0ZGEzNzRjY2Zj
YzYyMjVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5jcHAKQEAgLTIzMSw3ICsy
MzEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmRpZENsZWFyV2luZG93T2Jq
ZWN0Rm9yRnJhbWUoV2ViRnJhbWUmIGZyYW1lKQogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0
b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJBdXRvbWF0
aW9uU2Vzc2lvbjo6RGlkRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24oY2FsbGJhY2tJRCwgZXJy
b3JNZXNzYWdlLCBlcnJvclR5cGUpLCAwKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3Vt
ZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tU
aW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5OjpldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFy
Z3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJh
Y2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7
CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpkaWRF
dmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBmcmFtZUlELAogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OldlYkF1dG9tYXRpb25TZXNzaW9uOjpEaWRFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbihjYWxs
YmFja0lELCByZXN1bHQsIGVycm9yVHlwZSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE9yZGluYWwodWludDY0X3QgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3Zv
aWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5h
bChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGlu
YWwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC0zNTAsNyAr
MzUwLDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFt
ZVdpdGhPcmRpbmFsKHVpbnQ2NF90IHBhZ2VJRCwgdWkKICAgICBjb21wbGV0aW9uSGFuZGxlcihX
VEY6Om51bGxvcHQsIGNoaWxkRnJhbWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eTo6cmVzb2x2ZUNoaWxkRnJhbWVXaXRoTm9kZUhhbmRsZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbm9kZUhhbmRsZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVDaGls
ZEZyYW1lV2l0aE5vZGVIYW5kbGUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0
aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdl
YlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAg
ICAgaWYgKCFwYWdlKSB7CkBAIC0zODgsNyArMzg4LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vz
c2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJ
RCwKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGZyYW1lRnJvbUVsZW1lbnQt
PmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVzb2x2
ZUNoaWxkRnJhbWVXaXRoTmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+
LCB1aW50NjRfdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNz
aW9uUHJveHk6OnJlc29sdmVDaGlsZEZyYW1lV2l0aE5hbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlE
LCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG5hbWUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKHBh
Z2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJBdXRv
bWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIGNoaWxkRnJh
bWUtPmZyYW1lSUQoKSk7CiB9CiAKLXZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6cmVz
b2x2ZVBhcmVudEZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRfdCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnJlc29sdmVQYXJlbnRG
cmFtZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgdWludDY0X3QpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQ
YWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpyZXNvbHZlUGFyZW50RnJhbWUodWludDY0X3QgcGFn
ZUlELCB1aW50NjRfdCBmcmEKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6Om51bGxvcHQsIHBh
cmVudEZyYW1lLT5mcmFtZUlEKCkpOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJv
eHk6OmZvY3VzRnJhbWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKQordm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpmb2N1c0ZyYW1lKFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
RCwgdWludDY0X3QgZnJhbWVJRCkKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkKQEAgLTUyNyw3ICs1
MjcsNyBAQCBzdGF0aWMgV2ViQ29yZTo6RmxvYXRQb2ludCBjb252ZXJ0UG9pbnRGcm9tRnJhbWVD
bGllbnRUb1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1lVgogICAgIHJldHVybiBjbGllbnRQb2ludDsK
IH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91
dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBi
b29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29vcmRpbmF0ZVN5
c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBXZWJDb3JlOjpJ
bnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExh
eW91dChQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2Rl
SGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0gY29v
cmRpbmF0ZVN5c3RlbSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCBX
ZWJDb3JlOjpJbnRSZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4sIGJvb2wpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIFdlYlBhZ2UqIHBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS53ZWJQYWdlKHBhZ2VJRCk7CiAgICAgaWYgKCFwYWdlKSB7CkBAIC02MzUsNyArNjM1
LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojpjb21wdXRlRWxlbWVudExheW91
dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGYKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEY6
Om51bGxvcHQsIHJlc3VsdEVsZW1lbnRCb3VuZHMsIHJlc3VsdEluVmlld0NlbnRlclBvaW50LCBp
c09ic2N1cmVkKTsKIH0KIAotdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpzZWxlY3RP
cHRpb25FbGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnNlbGVjdE9w
dGlvbkVsZW1lbnQoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAtNzAzLDcg
KzcwMyw3IEBAIHN0YXRpYyBXZWJDb3JlOjpJbnRSZWN0IHNuYXBzaG90UmVjdEZvclNjcmVlbnNo
b3QoV2ViUGFnZSYgcGFnZSwgV2ViQ29yZTo6RWxlbWVuCiAgICAgcmV0dXJuIHsgfTsKIH0KIAot
dm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Ojp0YWtlU2NyZWVuc2hvdCh1aW50NjRfdCBw
YWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbElu
dG9WaWV3SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
Cit2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5zaG90KFBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wg
c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9ydCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKIHsKICAgICBTaGFyZWFibGVCaXRtYXA6OkhhbmRsZSBoYW5kbGU7CiAKQEAgLTc1
MSw3ICs3NTEsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OnRha2VTY3JlZW5z
aG90KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRAogICAgIFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYkF1
dG9tYXRpb25TZXNzaW9uOjpEaWRUYWtlU2NyZWVuc2hvdChjYWxsYmFja0lELCBoYW5kbGUsIHsg
fSksIDApOwogfQogCi12b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uUHJveHk6OmdldENvb2tpZXNG
b3JGcmFtZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5OjpnZXRDb29r
aWVzRm9yRnJhbWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpAQCAt
Nzc2LDcgKzc3Niw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb25Qcm94eTo6Z2V0Q29va2ll
c0ZvckZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhCiAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGOjpudWxsb3B0LCBmb3VuZENvb2tpZXMpOwogfQogCi12b2lkIFdlYkF1dG9tYXRp
b25TZXNzaW9uUHJveHk6OmRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZy
YW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5OjpkZWxldGVDb29raWUoUGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlELCBTdHJpbmcgY29va2llTmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxT
dHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBXZWJQYWdlKiBwYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShwYWdlSUQpOwogICAgIGlmICghcGFnZSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21h
dGlvblNlc3Npb25Qcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24v
V2ViQXV0b21hdGlvblNlc3Npb25Qcm94eS5oCmluZGV4IDYyOTU0MWQyMGJhMTBkZjYyZGExZTI2
MDkxNjRlYWM4OTJiYTBkMTMuLjExNjc2NDUyNzdkYmMxOTMwYTVhN2E1OTdkY2JjMmRmM2VjZjU1
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1
dG9tYXRpb25TZXNzaW9uUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0
b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5LmgKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZVN5c3RlbS5oIgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUlk
ZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNjAsMTcgKzYxLDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKIAog
ICAgIC8vIENhbGxlZCBieSBXZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5IG1lc3NhZ2VzCi0gICAg
dm9pZCBldmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50
cywgYm9vbCBleHBlY3RzSW1wbGljaXRDYWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1l
b3V0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0
aE9yZGluYWwodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCBvcmRp
bmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4m
Jik7Ci0gICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBh
Z2VJRCwgdWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBub2RlSGFuZGxlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9p
ZCByZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBuYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFs
PFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCByZXNvbHZlUGFyZW50RnJhbWUodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9w
dGlvbmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7Ci0gICAgdm9pZCBmb2N1c0ZyYW1lKHVpbnQ2
NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCk7Ci0gICAgdm9pZCBjb21wdXRlRWxlbWVudExh
eW91dCh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxl
LCBib29sIHNjcm9sbEludG9WaWV3SWZOZWVkZWQsIENvb3JkaW5hdGVTeXN0ZW0sIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPiwgV2ViQ29yZTo6SW50UmVjdCwgT3B0aW9u
YWw8V2ViQ29yZTo6SW50UG9pbnQ+LCBib29sKT4mJik7Ci0gICAgdm9pZCBzZWxlY3RPcHRpb25F
bGVtZW50KHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5k
bGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5nPik+JiYpOwotICAgIHZv
aWQgdGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNsaXBUb1Zp
ZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKLSAgICB2b2lkIGdldENvb2tpZXNGb3JGcmFt
ZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoT3B0aW9uYWw8U3RyaW5nPiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4pPiYmKTsKLSAgICB2
b2lkIGRlbGV0ZUNvb2tpZSh1aW50NjRfdCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmlu
ZyBjb29raWVOYW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYm
KTsKKyAgICB2b2lkIGV2YWx1YXRlSmF2YVNjcmlwdEZ1bmN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uLCBWZWN0b3I8
U3RyaW5nPiBhcmd1bWVudHMsIGJvb2wgZXhwZWN0c0ltcGxpY2l0Q2FsbGJhY2tBcmd1bWVudCwg
aW50IGNhbGxiYWNrVGltZW91dCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCByZXNv
bHZlQ2hpbGRGcmFtZVdpdGhPcmRpbmFsKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRf
dCBmcmFtZUlELCB1aW50MzJfdCBvcmRpbmFsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlv
bmFsPFN0cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCByZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBTdHJpbmcmIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8
U3RyaW5nPiwgdWludDY0X3QpPiYmKTsKKyAgICB2b2lkIHJlc29sdmVDaGlsZEZyYW1lV2l0aE5h
bWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChPcHRpb25hbDxTdHJpbmc+LCB1aW50NjRf
dCk+JiYpOworICAgIHZvaWQgcmVzb2x2ZVBhcmVudEZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCB1aW50NjRfdCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0
cmluZz4sIHVpbnQ2NF90KT4mJik7CisgICAgdm9pZCBmb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJ
ZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlEKTsKKyAgICB2b2lkIGNvbXB1dGVFbGVtZW50TGF5
b3V0KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9k
ZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBDb29yZGluYXRlU3lzdGVtLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFdlYkNvcmU6OkludFJlY3Qs
IE9wdGlvbmFsPFdlYkNvcmU6OkludFBvaW50PiwgYm9vbCk+JiYpOworICAgIHZvaWQgc2VsZWN0
T3B0aW9uRWxlbWVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgdWludDY0X3QgZnJhbWVJRCwg
U3RyaW5nIG5vZGVIYW5kbGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoT3B0aW9uYWw8U3RyaW5n
Pik+JiYpOworICAgIHZvaWQgdGFrZVNjcmVlbnNob3QoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBub2RlSGFuZGxlLCBib29sIHNjcm9sbEludG9WaWV3
SWZOZWVkZWQsIGJvb2wgY2xpcFRvVmlld3BvcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAg
IHZvaWQgZ2V0Q29va2llc0ZvckZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCB1aW50NjRf
dCBmcmFtZUlELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4sIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+KT4mJik7CisgICAgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBjb29raWVOYW1lLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKE9wdGlvbmFsPFN0cmluZz4pPiYmKTsKIAogICAgIFN0cmluZyBt
X3Nlc3Npb25JZGVudGlmaWVyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvblByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb25Qcm94
eS5tZXNzYWdlcy5pbgppbmRleCBhYTEyMTllMmVmMWZjMDcwMDQ1OTZkMjRhMWI1NzE2ZDMwNmY3
OGJlLi5kNzJmODlkMjYzNTljZjAxY2NmZDUzMWU5NmUwMWY0NDQwOWFhZjU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
blByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uUHJveHkubWVzc2FnZXMuaW4KQEAgLTIxLDIxICsyMSwy
MSBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBXZWJBdXRvbWF0aW9uU2Vzc2lvblBy
b3h5IHsKLSAgICBFdmFsdWF0ZUphdmFTY3JpcHRGdW5jdGlvbih1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIFN0cmluZyBmdW5jdGlvbiwgVmVjdG9yPFN0cmluZz4gYXJndW1lbnRz
LCBib29sIGV4cGVjdHNJbXBsaWNpdENhbGxiYWNrQXJndW1lbnQsIGludCBjYWxsYmFja1RpbWVv
dXQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRXZhbHVhdGVKYXZhU2NyaXB0RnVuY3Rpb24o
V2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
ZnVuY3Rpb24sIFZlY3RvcjxTdHJpbmc+IGFyZ3VtZW50cywgYm9vbCBleHBlY3RzSW1wbGljaXRD
YWxsYmFja0FyZ3VtZW50LCBpbnQgY2FsbGJhY2tUaW1lb3V0LCB1aW50NjRfdCBjYWxsYmFja0lE
KQogCi0gICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRoT3JkaW5hbCh1aW50NjRfdCBwYWdlSUQsIHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVy
cm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdp
dGhOb2RlSGFuZGxlKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJ
RCkgQXN5bmMKLSAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKHVpbnQ2NF90IHBhZ2VJRCwg
dWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9y
VHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKLSAgICBSZXNvbHZlUGFyZW50RnJhbWUodWlu
dDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJv
clR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFzeW5jCisgICAgUmVzb2x2ZUNoaWxkRnJhbWVXaXRo
T3JkaW5hbChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQs
IHVpbnQzMl90IG9yZGluYWwpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0
X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOb2RlSGFuZGxlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJ
RCkgQXN5bmMKKyAgICBSZXNvbHZlQ2hpbGRGcmFtZVdpdGhOYW1lKFdlYkNvcmU6OlBhZ2VJZGVu
dGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5hbWUpIC0+IChPcHRpb25h
bDxTdHJpbmc+IGVycm9yVHlwZSwgdWludDY0X3QgZnJhbWVJRCkgQXN5bmMKKyAgICBSZXNvbHZl
UGFyZW50RnJhbWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFt
ZUlEKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIHVpbnQ2NF90IGZyYW1lSUQpIEFz
eW5jCiAKLSAgICBGb2N1c0ZyYW1lKHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCkK
KyAgICBGb2N1c0ZyYW1lKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3Qg
ZnJhbWVJRCkKIAotICAgIENvbXB1dGVFbGVtZW50TGF5b3V0KHVpbnQ2NF90IHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5vZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZCwgZW51bTp1aW50OF90IFdlYktpdDo6Q29vcmRpbmF0ZVN5c3RlbSBjb29yZGluYXRlU3lz
dGVtKSAtPiAoT3B0aW9uYWw8U3RyaW5nPiBlcnJvclR5cGUsIFdlYkNvcmU6OkludFJlY3QgcmVj
dCwgT3B0aW9uYWw8V2ViQ29yZTo6SW50UG9pbnQ+IGluVmlld0NlbnRlclBvaW50LCBib29sIGlz
T2JzY3VyZWQpIEFzeW5jCisgICAgQ29tcHV0ZUVsZW1lbnRMYXlvdXQoV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9v
bCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBlbnVtOnVpbnQ4X3QgV2ViS2l0OjpDb29yZGluYXRl
U3lzdGVtIGNvb3JkaW5hdGVTeXN0ZW0pIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwg
V2ViQ29yZTo6SW50UmVjdCByZWN0LCBPcHRpb25hbDxXZWJDb3JlOjpJbnRQb2ludD4gaW5WaWV3
Q2VudGVyUG9pbnQsIGJvb2wgaXNPYnNjdXJlZCkgQXN5bmMKIAotICAgIFNlbGVjdE9wdGlvbkVs
ZW1lbnQodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgbm9kZUhhbmRs
ZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYworICAgIFNlbGVjdE9wdGlv
bkVsZW1lbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSkgLT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3lu
YwogCi0gICAgVGFrZVNjcmVlbnNob3QodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlE
LCBTdHJpbmcgbm9kZUhhbmRsZSwgYm9vbCBzY3JvbGxJbnRvVmlld0lmTmVlZGVkLCBib29sIGNs
aXBUb1ZpZXdwb3J0LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIFRha2VTY3JlZW5zaG90KFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG5v
ZGVIYW5kbGUsIGJvb2wgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCwgYm9vbCBjbGlwVG9WaWV3cG9y
dCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIAotICAgIEdldENvb2tpZXNGb3JGcmFtZSh1aW50NjRf
dCBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlw
ZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29va2llcykgQXN5bmMKLSAgICBEZWxldGVDb29r
aWUodWludDY0X3QgcGFnZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkg
LT4gKE9wdGlvbmFsPFN0cmluZz4gZXJyb3JUeXBlKSBBc3luYworICAgIEdldENvb2tpZXNGb3JG
cmFtZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIHVpbnQ2NF90IGZyYW1lSUQpIC0+
IChPcHRpb25hbDxTdHJpbmc+IGVycm9yVHlwZSwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4gY29v
a2llcykgQXN5bmMKKyAgICBEZWxldGVDb29raWUoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFn
ZUlELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgY29va2llTmFtZSkgLT4gKE9wdGlvbmFsPFN0
cmluZz4gZXJyb3JUeXBlKSBBc3luYwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2Vi
RXh0ZW5zaW9uLmNwcAppbmRleCAwODJkNjA5YTg3YmYzN2M3ZWYyZjRiNGRlOGUyNGNkZGEyNTEz
NjZkLi40YTIzYmY1NjAxMDdjMzFmMWE0ZGUyYzk2MTI5OWE3MDEwODE3NTAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0
V2ViRXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBA
IFdlYktpdFdlYlBhZ2UqIHdlYmtpdF93ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKFdlYktpdFdlYkV4
dGVuc2lvbiogZXh0ZW5zaW9uLCBndWluCiAgICAgV2ViS2l0V2ViRXh0ZW5zaW9uUHJpdmF0ZSog
cHJpdiA9IGV4dGVuc2lvbi0+cHJpdjsKICAgICBXZWJQYWdlTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBwcml2LT5wYWdlcy5lbmQoKTsKICAgICBmb3IgKFdlYlBhZ2VNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcHJpdi0+cGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBp
ZiAoaXQtPmtleS0+cGFnZUlEKCkgPT0gcGFnZUlEKQorICAgICAgICBpZiAoaXQtPmtleS0+cGFn
ZUlEKCkudG9VSW50NjQoKSA9PSBwYWdlSUQpCiAgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVl
LmdldCgpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5j
cHAKaW5kZXggZTU3ZTJlNzdlNTU4NDhlOGJhNzI1ZjlkMzIyNzcwOWZmZjE3OGFmZi4uY2ZjNTAz
MWVkNmU0YTI5NTRmZTAyYTAzZGE4N2ExNjFjZDJkMzA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9X
ZWJLaXRXZWJQYWdlLmNwcApAQCAtNzYzLDcgKzc2Myw3IEBAIGd1aW50NjQgd2Via2l0X3dlYl9w
YWdlX2dldF9pZChXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlKQogewogICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfUEFHRSh3ZWJQYWdlKSwgMCk7CiAKLSAgICByZXR1cm4gd2Vi
UGFnZS0+cHJpdi0+d2ViUGFnZS0+cGFnZUlEKCk7CisgICAgcmV0dXJuIHdlYlBhZ2UtPnByaXYt
PndlYlBhZ2UtPnBhZ2VJRCgpLnRvVUludDY0KCk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbi5jcHAKaW5kZXggYWUzODgzZDg2YjY4OWU2NjZmMTZhY2VmOTAxNjcyOTRlNWQyNzg3Yy4u
OGIxYWQ1ZWRmMGU2YjkwZDU4YzI0ZTYxNWZhZGM5YzcxMDdhNWY2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uOjpkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIElQCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2VpdmVyTmFt
ZSgpID09IE1lc3NhZ2VzOjpXZWJQYWdlOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKGRl
Y29kZXIuZGVzdGluYXRpb25JRCgpKSkKKyAgICAgICAgaWYgKGF1dG8qIHdlYlBhZ2UgPSBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVu
dGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkKICAgICAgICAgICAgIHdlYlBh
Z2UtPmRpZFJlY2VpdmVXZWJQYWdlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBJUAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIu
bWVzc2FnZVJlY2VpdmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6
Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byB3ZWJQYWdlID0gV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpCisg
ICAgICAgIGlmIChhdXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdl
KG1ha2VPYmplY3RJZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5h
dGlvbklEKCkpKSkKICAgICAgICAgICAgIHdlYlBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLT5k
aWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBkZWNvZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE3MSw3ICsxNzEsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6
ZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbgogCiAjaWYg
RU5BQkxFKEFQUExFX1BBWV9SRU1PVEVfVUkpCiAgICAgaWYgKGRlY29kZXIubWVzc2FnZVJlY2Vp
dmVyTmFtZSgpID09IE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSkgewotICAgICAgICBpZiAoYXV0byB3ZWJQYWdlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkud2ViUGFnZShkZWNvZGVyLmRlc3RpbmF0aW9uSUQoKSkpCisgICAgICAgIGlmIChh
dXRvIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJQYWdlKG1ha2VPYmplY3RJ
ZGVudGlmaWVyPFBhZ2VJZGVudGlmaWVyVHlwZT4oZGVjb2Rlci5kZXN0aW5hdGlvbklEKCkpKSkK
ICAgICAgICAgICAgIHdlYlBhZ2UtPnBheW1lbnRDb29yZGluYXRvcigpLT5kaWRSZWNlaXZlU3lu
Y01lc3NhZ2UoY29ubmVjdGlvbiwgZGVjb2RlciwgcmVwbHlFbmNvZGVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3Jr
L1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCAwNGFlMGU0NWQ1ZTlkMjljYTBmMjcwYTA2NDE4
YTZhYjJkNTAxZmNiLi4yNzhiNjAxODQ3OWYzNjU5MDM0OGM4OTUxODU1YWNmNDNkY2I1OWY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJh
dGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UK
ICAgICBhdXRvJiBmcmFtZUxvYWRlckNsaWVudCA9IHJlc291cmNlTG9hZGVyLmZyYW1lTG9hZGVy
KCktPmNsaWVudCgpOwogCiAgICAgV2ViUmVzb3VyY2VMb2FkZXI6OlRyYWNraW5nUGFyYW1ldGVy
cyB0cmFja2luZ1BhcmFtZXRlcnM7Ci0gICAgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCA9IGZy
YW1lTG9hZGVyQ2xpZW50LnBhZ2VJRCgpLnZhbHVlT3IoMCk7CisgICAgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCA9IGZyYW1lTG9hZGVyQ2xpZW50LnBhZ2VJRCgpLnZhbHVlT3IoUGFnZUlkZW50
aWZpZXIgeyB9KTsKICAgICB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCA9IGZyYW1lTG9hZGVy
Q2xpZW50LmZyYW1lSUQoKS52YWx1ZU9yKDApOwogICAgIHRyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEID0gaWRlbnRpZmllcjsKICAgICBhdXRvIHNlc3Npb25JRCA9IGZyYW1lTG9hZGVyQ2xp
ZW50LnNlc3Npb25JRCgpOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJl
c291CiAgICAgLy8gdGhlbiB3ZSBzaG91bGQgcmVtZW1iZXIgdGhlIFJlc291cmNlTG9hZGVyIGlu
IG91ciByZWNvcmRzIGJ1dCBub3Qgc2NoZWR1bGUgaXQgaW4gdGhlIE5ldHdvcmtQcm9jZXNzLgog
ICAgIGlmIChyZXNvdXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5zY2hlZHVsZUFyY2hpdmVM
b2FkKHJlc291cmNlTG9hZGVyLCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkpKSB7CiAgICAgICAg
IExPRyhOZXR3b3JrU2NoZWR1bGluZywgIihXZWJQcm9jZXNzKSBXZWJMb2FkZXJTdHJhdGVneTo6
c2NoZWR1bGVMb2FkLCB1cmwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYXMgYW4gYXJjaGl2ZSByZXNv
dXJjZS4iLCByZXNvdXJjZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9h
ZDogVVJMIHdpbGwgYmUgaGFuZGxlZCBhcyBhbiBhcmNoaXZlIHJlc291cmNlIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGFuIGFyY2hpdmUgcmVzb3VyY2UgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELnRvVUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlm
aWVyKTsKICAgICAgICAgbV93ZWJSZXNvdXJjZUxvYWRlcnMuc2V0KGlkZW50aWZpZXIsIFdlYlJl
c291cmNlTG9hZGVyOjpjcmVhdGUocmVzb3VyY2VMb2FkZXIsIHRyYWNraW5nUGFyYW1ldGVycykp
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTc1LDE0ICsxNzUsMTQgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRl
ciwgQ2FjaGVkUmVzb3UKIAogICAgIGlmIChyZXNvdXJjZUxvYWRlci5kb2N1bWVudExvYWRlcigp
LT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZFJlc291cmNlKHJlc291cmNlTG9hZGVy
LCByZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCksIHJlc291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwo
KSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxv
YWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgbG9hZGVkIGZyb20g
YXBwbGljYXRpb24gY2FjaGUuIiwgcmVzb3VyY2VMb2FkZXIudXJsKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIs
ICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBmcm9tIGFwcGxpY2F0aW9uIGNhY2hl
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAi
c2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgZnJvbSBhcHBsaWNhdGlvbiBjYWNoZSAo
ZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwg
cmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIGlkZW50aWZpZXIpOwogICAgICAgICBtX3dlYlJlc291cmNlTG9hZGVycy5zZXQoaWRlbnRp
ZmllciwgV2ViUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZShyZXNvdXJjZUxvYWRlciwgdHJhY2tpbmdQ
YXJhbWV0ZXJzKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAocmVzb3VyY2VM
b2FkZXIucmVxdWVzdCgpLnVybCgpLnByb3RvY29sSXNEYXRhKCkpIHsKICAgICAgICAgTE9HKE5l
dHdvcmtTY2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQsIHVybCAnJXMnIHdpbGwgYmUgbG9hZGVkIGFzIGRhdGEuIiwgcmVzb3VyY2VMb2FkZXIu
dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIGxvYWRlZCBh
cyBkYXRhIChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUo
KSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IGlkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLCAic2NoZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBsb2FkZWQgYXMgZGF0YSAoZnJhbWUgPSAl
cCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1l
dGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50
aWZpZXIpOwogICAgICAgICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVz
b3UKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBpZiAoaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJl
c291cmNlTG9hZGVyLnJlcXVlc3QoKS51cmwoKSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtTY2hl
ZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHVy
bCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZS4iLCByZXNvdXJj
ZUxvYWRlci51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
aGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRy
YWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKKyAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9hZDogVVJMIHdpbGwgYmUg
aGFuZGxlZCBhcyBhIFF1aWNrTG9vayByZXNvdXJjZSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIg
UFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAi
KSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHRyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9V
SW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOwogICAgICAg
ICBzdGFydExvY2FsTG9hZChyZXNvdXJjZUxvYWRlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1bGVMb2Fk
KFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUxvYWRlciwgQ2FjaGVkUmVzb3UKICAgICAvLyBodHRw
czovL2Jsb2dzLmdub21lLm9yZy9hbGV4bC8yMDEyLzAxLzI2L3Jlc291cmNlcy1pbi1nbGliLwog
ICAgIGlmIChyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkudXJsKCkucHJvdG9jb2xJcygicmVzb3Vy
Y2UiKSkgewogICAgICAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2Vi
TG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgdXJsICclcycgd2lsbCBiZSBoYW5kbGVkIGFz
IGEgR1Jlc291cmNlLiIsIHJlc291cmNlTG9hZGVyLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOwotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2No
ZWR1bGVMb2FkOiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgR1Jlc291cmNlIChmcmFtZSA9ICVw
LCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0
ZXJzLnBhZ2VJRCwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIGlkZW50aWZpZXIpOworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBoYW5kbGVkIGFzIGEgR1Jlc291cmNlIChmcmFtZSA9ICVwLCBwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJ
dTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIuZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJ
RC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAg
ICAgICAgIHN0YXJ0TG9jYWxMb2FkKHJlc291cmNlTG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTIxMSwxMSArMjExLDExIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVk
dWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAgICAg
V2ViU2VydmljZVdvcmtlclByb3ZpZGVyOjpzaW5nbGV0b24oKS5oYW5kbGVGZXRjaChyZXNvdXJj
ZUxvYWRlciwgc2Vzc2lvbklELCBzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGly
ZWN0LCBbdGhpcywgdHJhY2tpbmdQYXJhbWV0ZXJzLCBpZGVudGlmaWVyLCBzZXNzaW9uSUQsIHNo
b3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1CdWZmZXJpbmdU
aW1lID0gbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpLCByZXNvdXJjZUxvYWRlciA9IG1h
a2VSZWYocmVzb3VyY2VMb2FkZXIpXSAoU2VydmljZVdvcmtlckNsaWVudEZldGNoOjpSZXN1bHQg
cmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBTZXJ2aWNlV29ya2VyQ2xp
ZW50RmV0Y2g6OlJlc3VsdDo6VW5oYW5kbGVkKSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya1Nj
aGVkdWxpbmcsICIoV2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwg
dXJsICclcycgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBm
ZXRjaCBhbGdvcml0aG0iLCByZXNvdXJjZUxvYWRlci0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCB3aWxsIGJlIHNjaGVkdWxlZCB0aHJvdWdoIFNl
cnZpY2VXb3JrZXIgaGFuZGxlIGZldGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0g
JSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2
NCAiKSIsIHJlc291cmNlTG9hZGVyLT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2Fk
OiBVUkwgd2lsbCBiZSBzY2hlZHVsZWQgdGhyb3VnaCBTZXJ2aWNlV29ya2VyIGhhbmRsZSBmZXRj
aCBhbGdvcml0aG0gKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0g
JSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+
ZnJhbWUoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1Bh
cmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHJlc291cmNlTG9hZGVyLT5vcHRpb25zKCkuc2VydmljZVdvcmtl
cnNNb2RlID09IFNlcnZpY2VXb3JrZXJzTW9kZTo6T25seSkgewotICAgICAgICAgICAgUkVMRUFT
RV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlci5nZXQoKSwgInNjaGVkdWxlTG9h
ZDogdW5hYmxlIHRvIHNjaGVkdWxlIFVSTCB0aHJvdWdoIFNlcnZpY2VXb3JrZXIgaGFuZGxlIGZl
dGNoIGFsZ29yaXRobSAoZnJhbWUgPSAlcCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQg
PSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVy
LT5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMu
ZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUl9JRl9B
TExPV0VEKHJlc291cmNlTG9hZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiB1bmFibGUgdG8gc2No
ZWR1bGUgVVJMIHRocm91Z2ggU2VydmljZVdvcmtlciBoYW5kbGUgZmV0Y2ggYWxnb3JpdGhtIChm
cmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRyYWNr
aW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcmVzb3VyY2VM
b2FkZXIgPSBXVEZNb3ZlKHJlc291cmNlTG9hZGVyKV0gewogICAgICAgICAgICAgICAgIGF1dG8g
ZXJyb3IgPSBpbnRlcm5hbEVycm9yKHJlc291cmNlTG9hZGVyLT5yZXF1ZXN0KCkudXJsKCkpOwog
ICAgICAgICAgICAgICAgIGVycm9yLnNldFR5cGUoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2Vs
bGF0aW9uKTsKQEAgLTIyNywxMyArMjI3LDEzIEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNj
aGVkdWxlTG9hZChSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMb2FkZXIsIENhY2hlZFJlc291CiAg
ICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViTG9hZGVyU3RyYXRlZ3koKS50
cnlMb2FkaW5nVXNpbmdVUkxTY2hlbWVIYW5kbGVyKHJlc291cmNlTG9hZGVyKSkKICAgICAgICAg
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkxvYWRlclN0cmF0ZWd5KCkuc2NoZWR1bGVM
b2FkRnJvbU5ldHdvcmtQcm9jZXNzKHJlc291cmNlTG9hZGVyLmdldCgpLCByZXNvdXJjZUxvYWRl
ci0+cmVxdWVzdCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUpOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKHJlc291cmNlTG9h
ZGVyLmdldCgpLCAic2NoZWR1bGVMb2FkOiBVUkwgbm90IGhhbmRsZWQgYnkgYW55IGhhbmRsZXJz
IChmcmFtZSA9ICVwLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXItPmZyYW1lKCksIHRy
YWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2Fk
ZXIuZ2V0KCksICJzY2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMg
KGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci0+ZnJhbWUoKSwgdHJh
Y2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCB0cmFja2luZ1BhcmFtZXRlcnMuZnJh
bWVJRCwgaWRlbnRpZmllcik7CiAgICAgfSk7CiAjZWxzZQogICAgIGlmICghdHJ5TG9hZGluZ1Vz
aW5nVVJMU2NoZW1lSGFuZGxlcihyZXNvdXJjZUxvYWRlcikpCiAgICAgICAgIHNjaGVkdWxlTG9h
ZEZyb21OZXR3b3JrUHJvY2VzcyhyZXNvdXJjZUxvYWRlciwgcmVzb3VyY2VMb2FkZXIucmVxdWVz
dCgpLCB0cmFja2luZ1BhcmFtZXRlcnMsIHNlc3Npb25JRCwgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3VyY2UpKTsKICAg
ICBlbHNlCi0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJz
Y2hlZHVsZUxvYWQ6IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAs
IHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRl
cnMucGFnZUlELCB0cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgaWRlbnRpZmllcik7CisgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6
IFVSTCBub3QgaGFuZGxlZCBieSBhbnkgaGFuZGxlcnMgKGZyYW1lID0gJXAsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCB0cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIHRyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBpZGVudGlmaWVyKTsKICNlbmRp
ZgogfQogCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c2NoZWR1
bGVMb2FkRnJvbU5ldHdvcmtQcm9jZXNzKFJlc291cmNlTG9hZGVyJiByZXNvdXJjZUwKICAgICBp
ZiAobG9hZFBhcmFtZXRlcnMub3B0aW9ucy5tb2RlICE9IEZldGNoT3B0aW9uczo6TW9kZTo6TmF2
aWdhdGUpIHsKICAgICAgICAgQVNTRVJUKGxvYWRQYXJhbWV0ZXJzLnNvdXJjZU9yaWdpbik7CiAg
ICAgICAgIGlmICghbG9hZFBhcmFtZXRlcnMuc291cmNlT3JpZ2luKSB7Ci0gICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHJlc291cmNlTG9hZGVyLCAic2NoZWR1bGVMb2Fk
OiBubyBzb3VyY2VPcmlnaW4gKGZyYW1lID0gJXAsIHByaW9yaXR5ID0gJWQsIHBhZ2VJRCA9ICUi
IFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQg
IikiLCByZXNvdXJjZUxvYWRlci5mcmFtZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc291cmNlTG9h
ZGVyLnJlcXVlc3QoKS5wcmlvcml0eSgpKSwgbG9hZFBhcmFtZXRlcnMud2ViUGFnZUlELCBsb2Fk
UGFyYW1ldGVycy53ZWJGcmFtZUlELCBsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hl
ZHVsZUxvYWQ6IG5vIHNvdXJjZU9yaWdpbiAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVz
b3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdl
SUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMu
aWRlbnRpZmllcik7CiAgICAgICAgICAgICBzY2hlZHVsZUludGVybmFsbHlGYWlsZWRMb2FkKHJl
c291cmNlTG9hZGVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzQ2LDkg
KzM0Niw5IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3Jr
UHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3VyY2VMCiAKICAgICBBU1NFUlQoKGxvYWRQYXJh
bWV0ZXJzLndlYlBhZ2VJRCAmJiBsb2FkUGFyYW1ldGVycy53ZWJGcmFtZUlEKSB8fCBsb2FkUGFy
YW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IENsaWVudENyZWRlbnRpYWxQb2xpY3k6
OkNhbm5vdEFza0NsaWVudEZvckNyZWRlbnRpYWxzKTsKIAotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNj
aGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAl
ZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGlu
dD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53
ZWJQYWdlSUQsIGxvYWRQYXJhbWV0ZXJzLndlYkZyYW1lSUQsIGxvYWRQYXJhbWV0ZXJzLmlkZW50
aWZpZXIpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hl
ZHVsZUxvYWQ6IFJlc291cmNlIGlzIGJlaW5nIHNjaGVkdWxlZCB3aXRoIHRoZSBOZXR3b3JrUHJv
Y2VzcyAoZnJhbWUgPSAlcCwgcHJpb3JpdHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNl
TG9hZGVyLmZyYW1lKCksIHN0YXRpY19jYXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgp
LnByaW9yaXR5KCkpLCBsb2FkUGFyYW1ldGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBh
cmFtZXRlcnMud2ViRnJhbWVJRCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24o
KS5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OlNjaGVkdWxlUmVzb3VyY2VMb2FkKGxvYWRQYXJhbWV0ZXJzKSwgMCkpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChyZXNvdXJjZUxvYWRlciwgInNjaGVkdWxlTG9h
ZDogVW5hYmxlIHRvIHNjaGVkdWxlIHJlc291cmNlIHdpdGggdGhlIE5ldHdvcmtQcm9jZXNzIChm
cmFtZSA9ICVwLCBwcmlvcml0eSA9ICVkLCBwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9
ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgcmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgc3RhdGljX2Nhc3Q8aW50PihyZXNvdXJjZUxvYWRlci5yZXF1ZXN0KCkucHJpb3Jp
dHkoKSksIGxvYWRQYXJhbWV0ZXJzLndlYlBhZ2VJRCwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJ
RCwgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQocmVzb3VyY2VMb2FkZXIsICJzY2hlZHVsZUxvYWQ6IFVuYWJsZSB0byBzY2hl
ZHVsZSByZXNvdXJjZSB3aXRoIHRoZSBOZXR3b3JrUHJvY2VzcyAoZnJhbWUgPSAlcCwgcHJpb3Jp
dHkgPSAlZCwgcGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVz
b3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIHJlc291cmNlTG9hZGVyLmZyYW1lKCksIHN0YXRpY19j
YXN0PGludD4ocmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpLnByaW9yaXR5KCkpLCBsb2FkUGFyYW1l
dGVycy53ZWJQYWdlSUQudG9VSW50NjQoKSwgbG9hZFBhcmFtZXRlcnMud2ViRnJhbWVJRCwgbG9h
ZFBhcmFtZXRlcnMuaWRlbnRpZmllcik7CiAgICAgICAgIC8vIFdlIHByb2JhYmx5IGZhaWxlZCB0
byBzY2hlZHVsZSB0aGlzIGxvYWQgd2l0aCB0aGUgTmV0d29ya1Byb2Nlc3MgYmVjYXVzZSBpdCBo
YWQgY3Jhc2hlZC4KICAgICAgICAgLy8gVGhpcyBsb2FkIHdpbGwgbmV2ZXIgc3VjY2VlZCBzbyB3
ZSB3aWxsIHNjaGVkdWxlIGl0IHRvIGZhaWwgYXN5bmNocm9ub3VzbHkuCiAgICAgICAgIHNjaGVk
dWxlSW50ZXJuYWxseUZhaWxlZExvYWQocmVzb3VyY2VMb2FkZXIpOwpAQCAtNTA3LDE5ICs1MDcs
MTkgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShG
cmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3
ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDog
bnVsbHB0cjsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFn
ZSgpIDogbnVsbHB0cjsKIAotICAgIGF1dG8gcGFnZUlEID0gd2ViUGFnZSA/IHdlYlBhZ2UtPnBh
Z2VJRCgpIDogMDsKKyAgICBhdXRvIHBhZ2VJRCA9IHdlYlBhZ2UgPyB3ZWJQYWdlLT5wYWdlSUQo
KSA6IFBhZ2VJZGVudGlmaWVyIHsgfTsKICAgICBhdXRvIGZyYW1lSUQgPSB3ZWJGcmFtZSA/IHdl
YkZyYW1lLT5mcmFtZUlEKCkgOiAwOwogICAgIGF1dG8gc2Vzc2lvbklEID0gd2ViUGFnZSA/IHdl
YlBhZ2UtPnNlc3Npb25JRCgpIDogUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQoKTsK
IAogICAgIGF1dG8qIGRvY3VtZW50ID0gZnJhbWVMb2FkZXIuZnJhbWUoKS5kb2N1bWVudCgpOwog
ICAgIGlmICghZG9jdW1lbnQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dF
RChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBubyBkb2N1bWVudCAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVs
dSkiLCBwYWdlSUQsIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHk6IG5vIGRvY3VtZW50IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUi
IFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIsIHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlE
LCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAgICAgICAgZXJyb3IgPSBpbnRlcm5hbEVycm9y
KHJlcXVlc3QudXJsKCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF1dG8g
c3luY0xvYWRSZXN1bHQgPSB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFu
ZGxlcihmcmFtZUxvYWRlciwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcmVxdWVzdCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgY2FsbGluZyB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVz
aW5nVVJMU2NoZW1lSGFuZGxlciAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQ
Ukl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSwgZXJyb3IgPSAlZCkiLCBwYWdlSUQsIGZyYW1lSUQs
IHJlc291cmNlTG9hZElkZW50aWZpZXIsIHN5bmNMb2FkUmVzdWx0LT5lcnJvci5lcnJvckNvZGUo
KSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQoc2Vzc2lvbklELCAibG9h
ZFJlc291cmNlU3luY2hyb25vdXNseTogZmFpbGVkIGNhbGxpbmcgdHJ5TG9hZGluZ1N5bmNocm9u
b3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlE
ID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlbHUsIGVycm9yID0gJWQpIiwgcGFnZUlELnRv
VUludDY0KCksIGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHN5bmNMb2FkUmVzdWx0
LT5lcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAgIGVycm9yID0gV1RGTW92ZShzeW5jTG9hZFJl
c3VsdC0+ZXJyb3IpOwogICAgICAgICByZXNwb25zZSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQt
PnJlc3BvbnNlKTsKICAgICAgICAgZGF0YSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQtPmRhdGEp
OwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNpCiAgICAgSGFuZ0Rl
dGVjdGlvbkRpc2FibGVyIGhhbmdEZXRlY3Rpb25EaXNhYmxlcjsKIAogICAgIGlmICghV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVj
dGlvbigpLnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
UGVyZm9ybVN5bmNocm9ub3VzTG9hZChsb2FkUGFyYW1ldGVycyksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UGVyZm9ybVN5bmNocm9ub3VzTG9hZDo6UmVwbHkoZXJy
b3IsIHJlc3BvbnNlLCBkYXRhKSwgMCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1JfSUZf
QUxMT1dFRChzZXNzaW9uSUQsICJsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5OiBmYWlsZWQgc2Vu
ZGluZyBzeW5jaHJvbm91cyBuZXR3b3JrIHByb2Nlc3MgbWVzc2FnZSAocGFnZUlEID0gJSIgUFJJ
dTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICVsdSkiLCBwYWdlSUQs
IGZyYW1lSUQsIHJlc291cmNlTG9hZElkZW50aWZpZXIpOworICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUl9JRl9BTExPV0VEKHNlc3Npb25JRCwgImxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHk6IGZh
aWxlZCBzZW5kaW5nIHN5bmNocm9ub3VzIG5ldHdvcmsgcHJvY2VzcyBtZXNzYWdlIChwYWdlSUQg
PSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJWx1KSIs
IHBhZ2VJRC50b1VJbnQ2NCgpLCBmcmFtZUlELCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKTsKICAg
ICAgICAgaWYgKGF1dG8qIHBhZ2UgPSB3ZWJQYWdlID8gd2ViUGFnZS0+Y29yZVBhZ2UoKSA6IG51
bGxwdHIpCiAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgpLmxvZ0Rp
YWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50ZXJuYWxF
cnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnN5bmNocm9ub3VzTWVz
c2FnZUZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKICAgICAgICAgcmVz
cG9uc2UgPSBSZXNvdXJjZVJlc3BvbnNlKCk7CkBAIC01NjEsNyArNTYxLDcgQEAgdm9pZCBXZWJM
b2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJh
bWVMb2FkZXIsIHVuc2kKICAgICB9CiB9CiAKLXZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnBhZ2VM
b2FkQ29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkKK3ZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OnBhZ2VMb2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJRCkKIHsKICAgICBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBh
Z2VMb2FkQ29tcGxldGVkKHdlYlBhZ2VJRCksIDApOwogfQpAQCAtNjQ4LDEwICs2NDgsMTAgQEAg
dm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKEZyYW1lTG9hZGVyJiBmcmFtZUxv
YWRlciwgY29uc3QgVVJMJiB1cmwsIFMKIAogICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0
IHsgdXJsIH07Ci0gICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+
cGFnZUlEKCkgOiAwOwotICAgIHBhcmFtZXRlcnMud2ViRnJhbWVJRCA9IHdlYkZyYW1lID8gd2Vi
RnJhbWUtPmZyYW1lSUQoKSA6IDA7CisgICAgcGFyYW1ldGVycy53ZWJQYWdlSUQgPSB3ZWJQYWdl
LT5wYWdlSUQoKTsKKyAgICBwYXJhbWV0ZXJzLndlYkZyYW1lSUQgPSB3ZWJGcmFtZS0+ZnJhbWVJ
RCgpOwogICAgIHBhcmFtZXRlcnMucGFyZW50UElEID0gcHJlc2VudGluZ0FwcGxpY2F0aW9uUElE
KCk7Ci0gICAgcGFyYW1ldGVycy5zZXNzaW9uSUQgPSB3ZWJQYWdlID8gd2ViUGFnZS0+c2Vzc2lv
bklEKCkgOiBQQUw6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Npb25JRCgpOworICAgIHBhcmFtZXRl
cnMuc2Vzc2lvbklEID0gd2ViUGFnZS0+c2Vzc2lvbklEKCk7CiAgICAgcGFyYW1ldGVycy5zdG9y
ZWRDcmVkZW50aWFsc1BvbGljeSA9IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5OwogICAgIHBhcmFt
ZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVzOwogICAgIHBh
cmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQUmVzcG9uc2VBY2Nlc3MgPSBzaG91bGRQZXJmb3Jt
U2VjdXJpdHlDaGVja3MoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDRhZjU5OTQxZTM0ZjcyYWQyNmU4MWVmYjU2
MDYwNjc1MTgxMWY4YzYuLmFjNTI0OTY2YTg1MjFlMGUzZDY1ZWI2MmI5ZjcwZTgyZjc4Y2MyMTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0
cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVy
U3RyYXRlZ3kuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBsb2Fk
UmVzb3VyY2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlv
bnMmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcj4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShX
ZWJDb3JlOjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VMb2FkSWRlbnRpZmll
ciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6Q2xpZW50Q3JlZGVu
dGlhbFBvbGljeSwgY29uc3QgV2ViQ29yZTo6RmV0Y2hPcHRpb25zJiwgY29uc3QgV2ViQ29yZTo6
SFRUUEhlYWRlck1hcCYsIFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKSBmaW5hbDsKLSAgICB2b2lkIHBhZ2VMb2Fk
Q29tcGxldGVkKHVpbnQ2NF90IHdlYlBhZ2VJRCkgZmluYWw7CisgICAgdm9pZCBwYWdlTG9hZENv
bXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcikgZmluYWw7CiAKICAgICB2b2lkIHJlbW92
ZShXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciopIGZpbmFsOwogICAgIHZvaWQgc2V0RGVmZXJzTG9h
ZGluZyhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYsIGJvb2wpIGZpbmFsOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCmlu
ZGV4IGJmODhmZGEzMDA3ZTE2NGZmMzhhOTUyMmFiYjgxZmVmZDdlOWY4NTIuLjg4YmQ1M2JmMWY4
ZmI3MzZlYjE3M2VmNjRmMWUzMDNkMWJiMTAwYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTg4LDE2ICs4
OCwxNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcHJvcG9zZWRSZXF1ZXN0LCBSZXNvdQogICAgIFJlZjxXZWJSZXNvdXJjZUxvYWRl
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNz
KSBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IHRvICclcyciLCBwcm9wb3NlZFJl
cXVlc3QudXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJ
RCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxs
U2VuZFJlcXVlc3Q6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAgaWYgKG1fY29yZUxvYWRlci0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS5tYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0
KG1fY29yZUxvYWRlci5nZXQoKSwgcHJvcG9zZWRSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKSkg
ewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3Q6IGV4aXRp
bmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZh
bHNlIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJj
ZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNr
aW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5n
IGVhcmx5IGJlY2F1c2UgbWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxz
ZSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJ
RCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgp
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIG1fY29yZUxvYWRlci0+d2ls
bFNlbmRSZXF1ZXN0KFdURk1vdmUocHJvcG9zZWRSZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXShSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KSB7CiAgICAgICAgIGlmICghbV9jb3JlTG9hZGVyIHx8ICFtX2NvcmVM
b2FkZXItPmlkZW50aWZpZXIoKSkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0OiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ugbm8gY29yZWxvYWRlciBv
ciBpZGVudGlmaWVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAi
LCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNv
dXJjZUlEKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVx
dWVzdDogZXhpdGluZyBlYXJseSBiZWNhdXNlIG5vIGNvcmVsb2FkZXIgb3IgaWRlbnRpZmllciAo
cGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9
ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJj
ZUlEKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTMsMTIgKzExMywx
MiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1aW50NjRfdCBieXRlc1Nl
bnQsIHVpbnQ2NF90IHRvdGFsQnl0ZXNUb0JlUwogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBib29sIG5l
ZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogewogICAgIExPRyhOZXR3b3Jr
LCAiKFdlYlByb2Nlc3MpIFdlYlJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UgZm9y
ICclcycuIFN0YXR1cyAlZC4iLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgp
LmRhdGEoKSwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiLCBzdGF0dXMgPSAlZCki
LCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1l
SUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIiwgc3RhdHVzID0gJWQpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlE
LnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnJlc291cmNlSUQsIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogCiAgICAgUmVm
PFdlYlJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmIChtX2Nv
cmVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCkubWF5YmVM
b2FkRmFsbGJhY2tGb3JSZXNwb25zZShtX2NvcmVMb2FkZXIuZ2V0KCksIHJlc3BvbnNlKSkgewot
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IG5vdCBj
b250aW51aW5nIGxvYWQgYmVjYXVzZSB0aGUgY29udGVudCBpcyBhbHJlYWR5IGNhY2hlZCAocGFn
ZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUi
IFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFt
ZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogbm90IGNvbnRpbnVp
bmcgbG9hZCBiZWNhdXNlIHRoZSBjb250ZW50IGlzIGFscmVhZHkgY2FjaGVkIChwYWdlSUQgPSAl
IiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0
ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzUsNyArMTM1LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlLCBib28KICAgICAgICAgICAgIGlmIChtX2NvcmVMb2FkZXIgJiYgbV9jb3JlTG9hZGVyLT5p
ZGVudGlmaWVyKCkpCiAgICAgICAgICAgICAgICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Jlc291
cmNlTG9hZGVyOjpDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZSgpKTsKICAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVz
cG9uc2U6IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElE
IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlE
ID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELCBtX3RyYWNraW5n
UGFyYW1ldGVycy5mcmFtZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6
IG5vdCBjb250aW51aW5nIGxvYWQgYmVjYXVzZSBubyBjb3JlTG9hZGVyIG9yIG5vIElEIChwYWdl
SUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIg
UFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJh
Y2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQp
OwogICAgICAgICB9OwogICAgIH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSwg
aW50NjRfdCBlCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3Jr
UmVzcG9uc2UsICJOZXR3b3JrIHByb2Nlc3Mgc2hvdWxkIG5vdCBzZW5kIGRhdGEgdW50aWwgd2Un
dmUgdmFsaWRhdGVkIHRoZSByZXNwb25zZSIpOwogCiAgICAgaWYgKCFtX251bUJ5dGVzUmVjZWl2
ZWQpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZURhdGE6IFN0
YXJ0ZWQgcmVjZWl2aW5nIGRhdGEgKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIg
UFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVy
cy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNl
aXZlRGF0YTogU3RhcnRlZCByZWNlaXZpbmcgZGF0YSAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZy
YW1lSUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnBhZ2VJRC50b1VJbnQ2NCgpLCBtX3RyYWNraW5nUGFyYW1ldGVycy5mcmFt
ZUlELCBtX3RyYWNraW5nUGFyYW1ldGVycy5yZXNvdXJjZUlEKTsKICAgICB9CiAgICAgbV9udW1C
eXRlc1JlY2VpdmVkICs9IGRhdGEuc2l6ZSgpOwogCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBX
ZWJSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhLCBpbnQ2NF90IGUKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaFJlc291
cmNlTG9hZChjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsK
ICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmlu
aXNoUmVzb3VyY2VMb2FkIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaFJl
c291cmNlTG9hZDogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIiwgbGVuZ3RoID0gJXpkKSIsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1Bh
cmFtZXRlcnMucmVzb3VyY2VJRCwgbV9udW1CeXRlc1JlY2VpdmVkKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRGaW5pc2hSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQg
IiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIsIGxlbmd0
aCA9ICV6ZCkiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFj
a2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCwg
bV9udW1CeXRlc1JlY2VpdmVkKTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIW1faXNQcm9j
ZXNzaW5nTmV0d29ya1Jlc3BvbnNlLCAiTG9hZCBzaG91bGQgbm90IGJlIGFibGUgdG8gZmluaXNo
IGJlZm9yZSB3ZSd2ZSB2YWxpZGF0ZWQgdGhlIHJlc3BvbnNlIik7CiAgICAgbV9jb3JlTG9hZGVy
LT5kaWRGaW5pc2hMb2FkaW5nKG5ldHdvcmtMb2FkTWV0cmljcyk7CkBAIC0xNjcsNyArMTY3LDcg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoUmVzb3VyY2VMb2FkKGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0wKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZh
aWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgTE9HKE5l
dHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWxSZXNvdXJjZUxv
YWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEo
KSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFpbFJlc291cmNlTG9hZDogKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWxSZXNvdXJjZUxvYWQ6IChwYWdlSUQgPSAlIiBQ
Ukl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIp
IiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogCiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRSghbV9pc1Byb2Nlc3NpbmdOZXR3b3JrUmVzcG9uc2UsICJMb2Fk
IHNob3VsZCBub3QgYmUgYWJsZSB0byBmaW5pc2ggYmVmb3JlIHdlJ3ZlIHZhbGlkYXRlZCB0aGUg
cmVzcG9uc2UiKTsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6
OmRpZEZhaWxSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB2b2lkIFdl
YlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkKIHsKICAg
ICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6ZGlkQmxvY2tB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSBmb3IgJyVzJyIsIG1fY29yZUxvYWRlci0+dXJsKCkuc3Ry
aW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRC
bG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAocGFnZUlEID0gJSIgUFJJdTY0ICIsIGZyYW1l
SUQgPSAlIiBQUkl1NjQgIiwgcmVzb3VyY2VJRCA9ICUiIFBSSXU2NCAiKSIsIG1fdHJhY2tpbmdQ
YXJhbWV0ZXJzLnBhZ2VJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2lu
Z1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
QmxvY2tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFt
ZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5n
UGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwgbV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJ
RCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3VyY2VJRCk7CiAKICAgICBtX2NvcmVMb2FkZXIt
PmRpZEJsb2NrQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKTsKIH0KQEAgLTE4Nyw3ICsxODcsNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpkaWRCbG9ja0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCkKIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25z
T3JDb250ZW50U2VjdXJpdHlQb2xpY3lEZW5pZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7CiAgICAgTE9HKE5ldHdvcmssICIoV2ViUHJvY2VzcykgV2ViUmVzb3VyY2VMb2Fk
ZXI6OnN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xpY3lE
ZW5pZWQgZm9yICclcyciLCBtX2NvcmVMb2FkZXItPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRh
dGEoKSk7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgic3RvcExvYWRpbmdBZnRlclhGcmFt
ZU9wdGlvbnNPckNvbnRlbnRTZWN1cml0eVBvbGljeURlbmllZDogKHBhZ2VJRCA9ICUiIFBSSXU2
NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBt
X3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoInN0b3BMb2FkaW5nQWZ0ZXJYRnJhbWVPcHRpb25zT3JDb250ZW50U2VjdXJpdHlQb2xp
Y3lEZW5pZWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiLCBy
ZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMucGFnZUlELnRv
VUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0
ZXJzLnJlc291cmNlSUQpOwogCiAgICAgbV9jb3JlTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5z
dG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaWVk
KG1fY29yZUxvYWRlci0+aWRlbnRpZmllcigpLCByZXNwb25zZSk7CiB9CkBAIC0xOTYsMTMgKzE5
NiwxMyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZGVyOjpzdG9wTG9hZGluZ0FmdGVyWEZyYW1lT3B0
aW9uc09yQ29udGVudFNlY3VyaXR5UG9saWN5RGVuaQogdm9pZCBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc291cmNlKGNvbnN0IFNoYXJlYWJsZVJlc291cmNlOjpIYW5kbGUmIGhhbmRs
ZSkKIHsKICAgICBMT0coTmV0d29yaywgIihXZWJQcm9jZXNzKSBXZWJSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZVJlc291cmNlIGZvciAnJXMnIiwgbV9jb3JlTG9hZGVyLT51cmwoKS5zdHJpbmco
KS5sYXRpbjEoKS5kYXRhKCkpOwotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2Vp
dmVSZXNvdXJjZTogKHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIs
IHJlc291cmNlSUQgPSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQs
IG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291
cmNlSUQpOworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNvdXJjZTog
KHBhZ2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQg
PSAlIiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQudG9VSW50NjQoKSwg
bV90cmFja2luZ1BhcmFtZXRlcnMuZnJhbWVJRCwgbV90cmFja2luZ1BhcmFtZXRlcnMucmVzb3Vy
Y2VJRCk7CiAKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBoYW5kbGUudHJ5V3Jh
cEluU2hhcmVkQnVmZmVyKCk7CiAKICAgICBpZiAoIWJ1ZmZlcikgewogICAgICAgICBMT0dfRVJS
T1IoIlVuYWJsZSB0byBjcmVhdGUgYnVmZmVyIGZyb20gU2hhcmVhYmxlUmVzb3VyY2Ugc2VudCBm
cm9tIHRoZSBuZXR3b3JrIHByb2Nlc3MuIik7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVSZXNvdXJjZTogVW5hYmxlIHRvIGNyZWF0ZSBTaGFyZWRCdWZmZXIgKHBh
Z2VJRCA9ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIsIHJlc291cmNlSUQgPSAl
IiBQUkl1NjQgIikiLCBtX3RyYWNraW5nUGFyYW1ldGVycy5wYWdlSUQsIG1fdHJhY2tpbmdQYXJh
bWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOworICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzb3VyY2U6IFVuYWJsZSB0byBj
cmVhdGUgU2hhcmVkQnVmZmVyIChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJhbWVJRCA9ICUiIFBS
SXU2NCAiLCByZXNvdXJjZUlEID0gJSIgUFJJdTY0ICIpIiwgbV90cmFja2luZ1BhcmFtZXRlcnMu
cGFnZUlELnRvVUludDY0KCksIG1fdHJhY2tpbmdQYXJhbWV0ZXJzLmZyYW1lSUQsIG1fdHJhY2tp
bmdQYXJhbWV0ZXJzLnJlc291cmNlSUQpOwogICAgICAgICBpZiAoYXV0byogZnJhbWUgPSBtX2Nv
cmVMb2FkZXItPmZyYW1lKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUt
PnBhZ2UoKSkKICAgICAgICAgICAgICAgICBwYWdlLT5kaWFnbm9zdGljTG9nZ2luZ0NsaWVudCgp
LmxvZ0RpYWdub3N0aWNNZXNzYWdlKFdlYkNvcmU6OkRpYWdub3N0aWNMb2dnaW5nS2V5czo6aW50
ZXJuYWxFcnJvcktleSgpLCBXZWJDb3JlOjpEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmNyZWF0ZVNo
YXJlZEJ1ZmZlckZhaWxlZEtleSgpLCBXZWJDb3JlOjpTaG91bGRTYW1wbGU6Ok5vKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5o
CmluZGV4IDdmZDc4MzIyMzNhMzYyYzIzYTkwNGZjMTVlZjM0Y2E2NGE5NjdlYWUuLjU4NjU0Mzcx
OGU1ZTgzODhiOGI0MWFiMDIwMzdhYzc2ZTc4NjkzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuaApAQCAtMjgsNiArMjgs
NyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgi
CiAjaW5jbHVkZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAKQEAgLTUwLDcgKzUxLDcgQEAgdHlwZWRlZiB1aW50NjRfdCBSZXNvdXJjZUxv
YWRJZGVudGlmaWVyOwogY2xhc3MgV2ViUmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJSZXNvdXJjZUxvYWRlcj4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VTZW5kZXIgewogcHVibGlj
OgogICAgIHN0cnVjdCBUcmFja2luZ1BhcmFtZXRlcnMgewotICAgICAgICB1aW50NjRfdCBwYWdl
SUQgeyAwIH07CisgICAgICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRDsKICAgICAg
ICAgdWludDY0X3QgZnJhbWVJRCB7IDAgfTsKICAgICAgICAgUmVzb3VyY2VMb2FkSWRlbnRpZmll
ciByZXNvdXJjZUlEIHsgMCB9OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5jcHAKaW5kZXggMzRiNWE2NDNmMDNiZGE2MWZkYTRiMzNkODg3YjVkMWRiODlkYzYwNy4uYWRj
NDc2NjUyZTgwN2IyMzZhY2MxMTY1NGE1ZmMxNzE1NzM1YzkxNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgY29uc3QgU2Vjb25k
cyBzeW5jV29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTAwX21zIH07IC8vIE9ubHkgdXNlZCBi
eSBsYQogCiBjbGFzcyBTZXJ2aWNlV29ya2VyRnJhbWVMb2FkZXJDbGllbnQgZmluYWwgOiBwdWJs
aWMgRW1wdHlGcmFtZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgU2VydmljZVdvcmtlckZy
YW1lTG9hZGVyQ2xpZW50KFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHBhZ2VJRCwgdWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCisgICAgU2VydmljZVdvcmtlckZyYW1lTG9h
ZGVyQ2xpZW50KFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgdWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiAgICAgICAgIDogbV9jb25u
ZWN0aW9uKGNvbm5lY3Rpb24pCiAgICAgICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQogICAg
ICAgICAsIG1fcGFnZUlEKHBhZ2VJRCkKQEAgLTk1LDE4ICs5NSwxOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25l
ZCBsb25nKSBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb25JRDsgfQotICAgIE9wdGlvbmFs
PHVpbnQ2NF90PiBwYWdlSUQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAg
IE9wdGlvbmFsPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3BhZ2VJRDsgfQogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9mcmFtZUlEOyB9CiAgICAgU3RyaW5nIHVzZXJBZ2VudChjb25z
dCBVUkwmKSBmaW5hbCB7IHJldHVybiBtX3VzZXJBZ2VudDsgfQogCiAgICAgV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24mIG1fY29ubmVjdGlvbjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nl
c3Npb25JRDsKLSAgICB1aW50NjRfdCBtX3BhZ2VJRCB7IDAgfTsKKyAgICBXZWJDb3JlOjpQYWdl
SWRlbnRpZmllciBtX3BhZ2VJRDsKICAgICB1aW50NjRfdCBtX2ZyYW1lSUQgeyAwIH07CiAgICAg
U3RyaW5nIG1fdXNlckFnZW50OwogfTsKIAotV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246
OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYgY29u
bmVjdGlvbiwgdWludDY0X3QgcGFnZUdyb3VwSUQsIHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCitXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24oUmVmPElQQzo6Q29ubmVjdGlvbj4mJiBjb25u
ZWN0aW9uLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgUGFnZUlkZW50aWZpZXIgcGFnZUlELCBjb25z
dCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKICAgICA6IG1fY29ubmVjdGlvblRvTmV0d29y
a1Byb2Nlc3MoV1RGTW92ZShjb25uZWN0aW9uKSkKICAgICAsIG1fcGFnZUdyb3VwSUQocGFnZUdy
b3VwSUQpCiAgICAgLCBtX3BhZ2VJRChwYWdlSUQpCkBAIC0yMjYsMTIgKzIyNiwxMiBAQCB2b2lk
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzdGFydEZldGNoKFNXU2VydmVyQ29ubmVj
dGlvbklkZW50aWZpZXIgc2VydgogewogICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgaWYgKCFzZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVu
dGlmaWVyLnRvVUludDY0KCkpOworICAgICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWROb3RIYW5kbGUgeyB9
LCBmZXRjaElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFp
c1ZhbGlkRmV0Y2gocmVxdWVzdCwgb3B0aW9ucywgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT5z
Y3JpcHRVUkwoKSwgcmVmZXJyZXIpKSB7Ci0gICAgICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRs
ZSB7IH0sIGZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICAgICAgbV9jb25uZWN0aW9u
VG9OZXR3b3JrUHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6
RGlkTm90SGFuZGxlIHsgfSwgZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggNmNlODNkMWQwOWVhZWRj
YWU0ZmU4NzNmMThlYzUyYjU5ZTRmYTE3Mi4uZmJiNjMwZTRlMTliMzU5ZGMxNzBjY2VhMDE4YTQ5
ODMyMTY2ZGFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC01MSw3ICs1
MSw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlc1N0b3JlOwogCiBjbGFzcyBXZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbiBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2Vy
OjpDb25uZWN0aW9uLCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewogcHVibGljOgotICAg
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uKFJlZjxJUEM6OkNvbm5lY3Rpb24+JiYsIHVp
bnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2Vz
U3RvcmUmKTsKKyAgICBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbihSZWY8SVBDOjpDb25u
ZWN0aW9uPiYmLCB1aW50NjRfdCBwYWdlR3JvdXBJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsKICAgICB+V2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24oKTsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CkBAIC05Niw3ICs5Niw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzOwogICAg
IHVpbnQ2NF90IG1fcGFnZUdyb3VwSUQ7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQgeyAwIH07Cisg
ICAgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgdWludDY0X3QgbV9wcmV2
aW91c1NlcnZpY2VXb3JrZXJJRCB7IDAgfTsKIAogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
OjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgeyBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5OjpBbGxvd0FsbFN0b3JhZ2Ug
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKaW5kZXggOGFlYmFmZjk2
MjIxZTk4NjMzN2MzZDIzZTA0MGYwNWI0NzU1YTc1Ni4uMjY0NGM5YzFkMTJiNmNkMDFkNTY2OTlk
MTMyYmMyZWY0YzYzNmExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudC5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRSZWNlaXZlUmVkaXJlY3Rpb24oY29uc3QgV2ViQ29yZTo6UmVzb3UKIHsKICAgICBpZiAo
IW1fY29ubmVjdGlvbikKICAgICAgICAgcmV0dXJuOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChN
ZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UgeyByZXNwb25zZSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAgICBtX2Nv
bm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlIHsgcmVzcG9uc2UgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogCiAg
ICAgY2xlYW51cCgpOwogfQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdlYlNlcnZpY2VXb3JrZXJG
ZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JgogICAgIGlmIChtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVzcG9uc2VNZXNzYWdlKQogICAg
ICAgICBtX3dhaXRpbmdGb3JDb250aW51ZURpZFJlY2VpdmVSZXNwb25zZU1lc3NhZ2UgPSB0cnVl
OwogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrOjpEaWRSZWNlaXZlUmVzcG9uc2UgeyByZXNwb25zZSwgbV9uZWVkc0NvbnRpbnVlRGlkUmVj
ZWl2ZVJlc3BvbnNlTWVzc2FnZSB9LCBtX2ZldGNoSWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKyAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZFJlY2VpdmVSZXNwb25zZSB7IHJlc3BvbnNlLCBtX25lZWRzQ29udGludWVEaWRSZWNlaXZlUmVz
cG9uc2VNZXNzYWdlIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBXZWJTZXJ2aWNl
V29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYm
IGJ1ZmZlcikKQEAgLTg0LDcgKzg0LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
Q2xpZW50OjpkaWRSZWNlaXZlRGF0YShSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6U2Vy
dmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IGJ1ZmZlciB9LCBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihidWZmZXItPnNpemUoKSkgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50
NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpEaWRSZWNlaXZlRGF0YSB7IHsgYnVmZmVyIH0sIHN0YXRpY19jYXN0PGludDY0X3Q+
KGJ1ZmZlci0+c2l6ZSgpKSB9LCBtX2ZldGNoSWRlbnRpZmllcik7CiB9CiAKIHZvaWQgV2ViU2Vy
dmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6ZGlkUmVjZWl2ZUZvcm1EYXRhQW5kRmluaXNoKFJl
ZjxGb3JtRGF0YT4mJiBmb3JtRGF0YSkKQEAgLTEwMSw3ICsxMDEsNyBAQCB2b2lkIFdlYlNlcnZp
Y2VXb3JrZXJGZXRjaFRhc2tDbGllbnQ6OmRpZFJlY2VpdmVGb3JtRGF0YUFuZEZpbmlzaChSZWY8
Rm9ybURhdGE+JgogICAgIC8vIEZvciBub3cgYW5kIGZvciB0aGUgY2FzZSBvZiBibG9icywgd2Ug
cmVhZCBpdCB0aGVyZSBhbmQgc2VuZCB0aGUgZGF0YSB0aHJvdWdoIElQQy4KICAgICBVUkwgYmxv
YlVSTCA9IGZvcm1EYXRhLT5hc0Jsb2JVUkwoKTsKICAgICBpZiAoYmxvYlVSTC5pc051bGwoKSkg
ewotICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRj
aFRhc2s6OkRpZFJlY2VpdmVGb3JtRGF0YSB7IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZN
b3ZlKGZvcm1EYXRhKSB9IH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgICAg
ICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRp
ZFJlY2VpdmVGb3JtRGF0YSB7IElQQzo6Rm9ybURhdGFSZWZlcmVuY2UgeyBXVEZNb3ZlKGZvcm1E
YXRhKSB9IH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0NsaWVudDo6
ZGlkUmVjZWl2ZUJsb2JDaHVuayhjb25zdCBjaGFyKiBkYXRhLCBzaXplCiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURhdGEgeyB7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0sIHN0YXRpY19jYXN0PGludDY0
X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkUmVjZWl2ZURh
dGEgeyB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplIH0sIHN0
YXRpY19jYXN0PGludDY0X3Q+KHNpemUpIH0sIG1fZmV0Y2hJZGVudGlmaWVyKTsKIH0KIAogdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWRGaW5pc2hCbG9iTG9hZGluZygp
CkBAIC0xNDksNyArMTQ5LDcgQEAgdm9pZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50
OjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0
Y2hUYXNrOjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
OjpEaWRGYWlsIHsgZXJyb3IgfSwgbV9mZXRjaElkZW50aWZpZXIpOwogCiAgICAgY2xlYW51cCgp
OwogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgV2ViU2VydmljZVdvcmtlckZldGNoVGFza0Ns
aWVudDo6ZGlkRmluaXNoKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkRmluaXNoIHsg
fSwgbV9mZXRjaElkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgbV9jb25uZWN0aW9uLT5zZW5k
KE1lc3NhZ2VzOjpTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrOjpEaWRGaW5pc2ggeyB9LCBtX2ZldGNo
SWRlbnRpZmllcik7CiAKICAgICBjbGVhbnVwKCk7CiB9CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9p
ZCBXZWJTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrQ2xpZW50OjpkaWROb3RIYW5kbGUoKQogICAgIGlm
ICghbV9jb25uZWN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Nvbm5lY3Rpb24tPnNl
bmQoTWVzc2FnZXM6OlNlcnZpY2VXb3JrZXJGZXRjaFRhc2s6OkRpZE5vdEhhbmRsZSB7IH0sIG1f
ZmV0Y2hJZGVudGlmaWVyLnRvVUludDY0KCkpOworICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNz
YWdlczo6U2VydmljZVdvcmtlckZldGNoVGFzazo6RGlkTm90SGFuZGxlIHsgfSwgbV9mZXRjaElk
ZW50aWZpZXIpOwogCiAgICAgY2xlYW51cCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyLmNwcAppbmRleCA0OTMzY2E0YzNhMDY3MmNhYzMwZjc3OTUxOTBkMjU4NTIxYzBjZjAyLi4y
YjI4ODY0YTlhYTA5ODQ0MmQ2MTUzMmM2NDBmNWI5M2E4NTk5ODBhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcApAQCAtODIsMTQgKzgyLDE0IEBAIFJlZjxXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI+IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6Z2V0T3JDcmVhdGUoVXNlckNv
bnRlbnRDCiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OldlYlVzZXJDb250ZW50Q29udHJvbGxl
cihVc2VyQ29udGVudENvbnRyb2xsZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgOiBtX2lk
ZW50aWZpZXIoaWRlbnRpZmllcikKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOworICAgIFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6V2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllciwg
KnRoaXMpOwogfQogCiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENv
bnRyb2xsZXIoKQogewogICAgIEFTU0VSVCh1c2VyQ29udGVudENvbnRyb2xsZXJzKCkuY29udGFp
bnMobV9pZGVudGlmaWVyKSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OldlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CisgICAgV2ViUHJvY2Vz
czo6c2luZ2xldG9uKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyKTsKIAog
ICAgIHVzZXJDb250ZW50Q29udHJvbGxlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KQEAg
LTI1Miw3ICsyNTIsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHk6OkRpZFBvc3RNZXNzYWdlKHdlYlBhZ2UtPnBhZ2VJRCgpLCB3ZWJGcmFtZS0+aW5mbygp
LCBtX2lkZW50aWZpZXIsIElQQzo6RGF0YVJlZmVyZW5jZSh2YWx1ZS0+ZGF0YSgpKSksIG1fY29u
dHJvbGxlci0+aWRlbnRpZmllcigpLnRvVUludDY0KCkpOworICAgICAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJV
c2VyQ29udGVudENvbnRyb2xsZXJQcm94eTo6RGlkUG9zdE1lc3NhZ2Uod2ViUGFnZS0+cGFnZUlE
KCksIHdlYkZyYW1lLT5pbmZvKCksIG1faWRlbnRpZmllciwgSVBDOjpEYXRhUmVmZXJlbmNlKHZh
bHVlLT5kYXRhKCkpKSwgbV9jb250cm9sbGVyLT5pZGVudGlmaWVyKCkpOwogICAgIH0KIAogICAg
IFJlZlB0cjxXZWJVc2VyQ29udGVudENvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKaW5kZXggMjcyNmMyM2QyYTRmNDg0NTEwYWIwMTgzMjJlN2Q5MDI3OWIxNGY2
Ny4uODE0MTAxOTJhNzE2NmJmYzI1MGNjOWEyMDdhN2FmMDRhZjcxMDI5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAKQEAgLTI4OCw3ICsyODgsNyBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNy
ZWF0ZVdpbmRvdyhGcmFtZSYgZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlcwog
CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoZnJhbWUp
OwogCi0gICAgdWludDY0X3QgbmV3UGFnZUlEID0gMDsKKyAgICBPcHRpb25hbDxQYWdlSWRlbnRp
Zmllcj4gbmV3UGFnZUlEOwogICAgIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM+
IHBhcmFtZXRlcnM7CiAgICAgaWYgKCF3ZWJQcm9jZXNzLnBhcmVudFByb2Nlc3NDb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2Uod2ViRnJh
bWUtPmluZm8oKSwgd2ViRnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCksIHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCksIHdpbmRvd0ZlYXR1cmVzLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkNyZWF0ZU5ld1BhZ2U6OlJlcGx5KG5ld1BhZ2VJRCwgcGFyYW1ldGVy
cyksIG1fcGFnZS5wYWdlSUQoKSkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMjk5LDgg
KzI5OSw4IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lJiBmcmFt
ZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzCiAgICAgaWYgKHBhcmFtZXRlcnMtPnNl
c3Npb25JRCA9PSBtX3BhZ2Uuc2Vzc2lvbklEKCkpCiAgICAgICAgIHBhcmFtZXRlcnMtPm9sZFBh
Z2VJRCA9IG1fcGFnZS5wYWdlSUQoKTsKIAotICAgIHdlYlByb2Nlc3MuY3JlYXRlV2ViUGFnZShu
ZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMpKTsKLSAgICByZXR1cm4gd2ViUHJvY2Vzcy53
ZWJQYWdlKG5ld1BhZ2VJRCktPmNvcmVQYWdlKCk7CisgICAgd2ViUHJvY2Vzcy5jcmVhdGVXZWJQ
YWdlKCpuZXdQYWdlSUQsIFdURk1vdmUoKnBhcmFtZXRlcnMpKTsKKyAgICByZXR1cm4gd2ViUHJv
Y2Vzcy53ZWJQYWdlKCpuZXdQYWdlSUQpLT5jb3JlUGFnZSgpOwogfQogCiB2b2lkIFdlYkNocm9t
ZUNsaWVudDo6c2hvdygpCkBAIC0xMzIyLDEyICsxMzIyLDEyIEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpkaWRJbnZhbGlkYXRlRG9jdW1lbnRNYXJrZXJSZWN0cygpCiB9CiAKICNpZiBFTkFCTEUo
UkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotdm9pZCBXZWJDaHJvbWVDbGllbnQ6Omhhc1N0b3Jh
Z2VBY2Nlc3MoUmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgUmVnaXN0cmFibGVE
b21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYkNo
cm9tZUNsaWVudDo6aGFzU3RvcmFnZUFjY2VzcyhSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1l
RG9tYWluLCBSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFt
ZUlELCBQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBtX3BhZ2UuaGFzU3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1
YkZyYW1lRG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnJlcXVlc3RT
dG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21haW4sIFJlZ2lzdHJh
YmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkLCBTdG9yYWdlQWNj
ZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJDaHJvbWVD
bGllbnQ6OnJlcXVlc3RTdG9yYWdlQWNjZXNzKFJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVE
b21haW4sIFJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90IGZyYW1l
SUQsIFBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NX
YXNHcmFudGVkLCBTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24pPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIG1fcGFnZS5yZXF1ZXN0U3RvcmFnZUFjY2VzcyhXVEZNb3ZlKHN1YkZyYW1l
RG9tYWluKSwgV1RGTW92ZSh0b3BGcmFtZURvbWFpbiksIGZyYW1lSUQsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAppbmRleCBiMjg5ZmIyM2ZlNDFhYmJi
Y2ExY2UxNzJjZThhNGYyNWFjY2Q1ZWMwLi4zMTQ0NTFiNDAyOWQ4YTkyODlmY2E4NzVmMTg1ZWU1
ODg4NmIwYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCkBAIC0zNzIsOCArMzcyLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZEludmFsaWRhdGVEb2N1bWVudE1hcmtlclJlY3RzKCkgZmluYWw7CiAK
ICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIHZvaWQgaGFzU3RvcmFn
ZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJD
b3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRvcEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikg
ZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0U3RvcmFnZUFjY2VzcyhXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiYmIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiYmIHRv
cEZyYW1lRG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duKT4mJikgZmluYWw7CisgICAgdm9pZCBo
YXNTdG9yYWdlQWNjZXNzKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgc3ViRnJhbWVEb21h
aW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluJiYgdG9wRnJhbWVEb21haW4sIHVpbnQ2NF90
IGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYpIGZpbmFsOworICAgIHZvaWQgcmVxdWVzdFN0b3JhZ2VBY2Nlc3MoV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4mJiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0
cmFibGVEb21haW4mJiB0b3BGcmFtZURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpTdG9y
YWdlQWNjZXNzV2FzR3JhbnRlZCwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3du
KT4mJikgZmluYWw7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRWRp
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGY0MjhmZDIzOTdlZGRkNGQyNDExNzcwMzIzZWIzZmEy
NzkwMmQ4NWYuLjcwNTIwMjViOWRjZjkyNDE0Y2I2ZTQ4NDJkYWZhNzQ4YzBlMWY3NDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQuY3BwCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBXZWJFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyVW5kb1N0ZXAoVW5kb1N0ZXAmIHN0ZXApCiAgICAgYXV0byBzdGVwSUQgPSB3
ZWJTdGVwLT5zdGVwSUQoKTsKIAogICAgIG1fcGFnZS0+YWRkV2ViVW5kb1N0ZXAoc3RlcElELCBX
VEZNb3ZlKHdlYlN0ZXApKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6UmVnaXN0ZXJFZGl0Q29tbWFuZEZvclVuZG8oc3RlcElELCBzdGVwLmxhYmVsKCkpLCBtX3Bh
Z2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2Fp
dGluZ0ZvclN5bmNSZXBseSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlZ2lzdGVyRWRpdENvbW1hbmRGb3JVbmRvKHN0ZXBJRCwgc3RlcC5sYWJlbCgpKSwgSVBD
OjpTZW5kT3B0aW9uOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkp
OwogfQogCiB2b2lkIFdlYkVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChVbmRvU3RlcCYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA1MjljMDQ2NzAzMDFiMzUwYjEz
MjUxODM1NGE5ZTVhODU1YjljNDhkLi4zZGNkN2UyZWMxOTk4MTdkNzQ5NWVkMGE4MzYyNTM2NDM2
NjFjZGY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTExMiw3ICsxMTIs
NyBAQCBXZWJGcmFtZUxvYWRlckNsaWVudDo6fldlYkZyYW1lTG9hZGVyQ2xpZW50KCkKIHsKIH0K
IAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25z
dAorT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQo
KSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAg
cmV0dXJuIG1fZnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCk7CkBAIC01NDEsNyArNTQxLDcgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNv
bnN0IFJlc291cmNlRXJyb3ImIGUKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1NjQgIiwgZnJh
bWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLCBtX2ZyYW1lLT5m
cmFtZUlEKCkpOworICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQ6IChwYWdlSUQgPSAlIiBQUkl1
NjQgIiwgZnJhbWVJRCA9ICUiIFBSSXU2NCAiKSIsIHRoaXMsIHdlYlBhZ2UtPnBhZ2VJRCgpLnRv
VUludDY0KCksIG1fZnJhbWUtPmZyYW1lSUQoKSk7CiAKICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+
IHVzZXJEYXRhOwogCkBAIC01NzcsNyArNTc3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBp
ZiAoIXdlYlBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJFTEVBU0VfTE9HKE5ldHdvcmss
ICIlcCAtIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxMb2FkOiAocGFnZUlE
ID0gJSIgUFJJdTY0ICIsIGZyYW1lSUQgPSAlIiBQUkl1NjQgIikiLCB0aGlzLCB3ZWJQYWdlLT5w
YWdlSUQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKKyAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAi
JXAgLSBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZDogKHBhZ2VJRCA9
ICUiIFBSSXU2NCAiLCBmcmFtZUlEID0gJSIgUFJJdTY0ICIpIiwgdGhpcywgd2ViUGFnZS0+cGFn
ZUlEKCkudG9VSW50NjQoKSwgbV9mcmFtZS0+ZnJhbWVJRCgpKTsKIAogICAgIFJlZlB0cjxBUEk6
Ok9iamVjdD4gdXNlckRhdGE7CiAKQEAgLTkwMSw3ICs5MDEsOSBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oY29uc3Qg
TmF2aWdhdAogICAgIGlmIChyZXF1ZXN0ZXIuZnJhbWVJRCgpICYmIFdlYlByb2Nlc3M6OnNpbmds
ZXRvbigpLndlYkZyYW1lKHJlcXVlc3Rlci5mcmFtZUlEKCkpKQogICAgICAgICBvcmlnaW5hdGlu
Z0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCA9IHJlcXVlc3Rlci5mcmFtZUlEKCk7CiAKLSAgICB1aW50
NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCA9IHJlcXVlc3Rlci5wYWdlSUQoKSAmJiBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJQYWdlKHJlcXVlc3Rlci5wYWdlSUQoKSkgPyByZXF1ZXN0ZXIucGFn
ZUlEKCkgOiAwOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBvcmlnaW5hdGluZ1BhZ2VJ
RDsKKyAgICBpZiAocmVxdWVzdGVyLnBhZ2VJRCgpICYmIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LndlYlBhZ2UocmVxdWVzdGVyLnBhZ2VJRCgpKSkKKyAgICAgICAgb3JpZ2luYXRpbmdQYWdlSUQg
PSByZXF1ZXN0ZXIucGFnZUlEKCk7CiAKICAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0
aW9uQWN0aW9uRGF0YTsKICAgICBuYXZpZ2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSA9
IGFjdGlvbi0+bmF2aWdhdGlvblR5cGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5k
ZXggZjczYWI4Y2E3M2YxNzhiZjI2OGZmMmI4NDFjNDUxY2RkNDk4ZmFhMy4uYzhmYjJhZjIxMjU2
NmM2NDY4NjA3N2EwYzg5YWY4MTA1MzkwYTY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhcHBseVRvRG9jdW1lbnRM
b2FkZXIoV2Vic2l0ZVBvbGljaWVzRGF0YSYmKTsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBw
YWdlSUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmll
cj4gcGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQo
KSBjb25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5h
bDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5jcHAKaW5kZXggZTFl
OTNhNmRlMzQ2N2VmMTQwOTQ1MzQ2ZDhkYjRmZGQyNzM4NjcwMy4uOWU0NmQ4MDczYjM4MGU0MjU1
NGJlYzVmNDQ0ODEzZjRlNmY5MzZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L2lvcy9XZWJQcmV2aWV3TG9hZGVyQ2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0zNywxNCArMzcsMTQgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXVzaW5nIFBhc3N3b3JkQ2FsbGJhY2tNYXAgPSBIYXNoTWFwPHVpbnQ2NF90LCBGdW5jdGlvbjx2
b2lkKGNvbnN0IFN0cmluZyYpPj47Cit1c2luZyBQYXNzd29yZENhbGxiYWNrTWFwID0gSGFzaE1h
cDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4+
Owogc3RhdGljIFBhc3N3b3JkQ2FsbGJhY2tNYXAmIHBhc3N3b3JkQ2FsbGJhY2tzKCkKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UGFzc3dvcmRDYWxsYmFja01hcD4gY2FsbGJhY2tNYXA7
CiAgICAgcmV0dXJuIGNhbGxiYWNrTWFwLmdldCgpOwogfQogCi1XZWJQcmV2aWV3TG9hZGVyQ2xp
ZW50OjpXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0
IFN0cmluZyYgdXRpLCB1aW50NjRfdCBwYWdlSUQpCitXZWJQcmV2aWV3TG9hZGVyQ2xpZW50OjpX
ZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmlu
ZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQpCiAgICAgOiBtX2ZpbGVOYW1l
IHsgZmlsZU5hbWUgfQogICAgICwgbV91dGkgeyB1dGkgfQogICAgICwgbV9wYWdlSUQgeyBwYWdl
SUQgfQpAQCAtODUsNyArODUsNyBAQCB2b2lkIFdlYlByZXZpZXdMb2FkZXJDbGllbnQ6OmRpZFJl
cXVlc3RQYXNzd29yZChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmCiAgICAgV2ViUHJv
Y2Vzczo6c2luZ2xldG9uKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRSZXF1ZXN0
UGFzc3dvcmRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKG1fZmlsZU5hbWUpLCBtX3Bh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUHJldmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVBhc3N3
b3JkKGNvbnN0IFN0cmluZyYgcGFzc3dvcmQsIHVpbnQ2NF90IHBhZ2VJRCkKK3ZvaWQgV2ViUHJl
dmlld0xvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZVBhc3N3b3JkKGNvbnN0IFN0cmluZyYgcGFzc3dv
cmQsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkKIHsKICAgICBBU1NFUlQocGFzc3dv
cmRDYWxsYmFja3MoKS5jb250YWlucyhwYWdlSUQpKTsKICAgICBhdXRvIGNvbXBsZXRpb25IYW5k
bGVyID0gcGFzc3dvcmRDYWxsYmFja3MoKS50YWtlKHBhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvaW9zL1dlYlByZXZpZXdMb2FkZXJD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCmluZGV4IGY5OTg2ZTQxY2EyZjI1MWRiMmMzZTVkODhlMDhk
ZjUwNjg1NDA0ZTguLmJlODg3YWQ4YTdmMGI2NTdkMWZhNDUxZDE4MzNjZjFjZDQ0YjUzNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9pb3MvV2Vi
UHJldmlld0xvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9pb3MvV2ViUHJldmlld0xvYWRlckNsaWVudC5oCkBAIC0zNSwxNiArMzUsMTYg
QEAgY2xhc3MgV2ViRnJhbWU7CiAKIGNsYXNzIFdlYlByZXZpZXdMb2FkZXJDbGllbnQgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6UHJldmlld0xvYWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJQcmV2aWV3TG9hZGVyQ2xpZW50PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBmaWxl
TmFtZSwgY29uc3QgU3RyaW5nJiB1dGksIHVpbnQ2NF90IHBhZ2VJRCkKKyAgICBzdGF0aWMgUmVm
PFdlYlByZXZpZXdMb2FkZXJDbGllbnQ+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBj
b25zdCBTdHJpbmcmIHV0aSwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlEKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViUHJldmlld0xvYWRlckNsaWVudChmaWxl
TmFtZSwgdXRpLCBwYWdlSUQpKTsKICAgICB9CiAgICAgfldlYlByZXZpZXdMb2FkZXJDbGllbnQo
KTsKIAotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVQYXNzd29yZChjb25zdCBTdHJpbmcmLCB1
aW50NjRfdCBwYWdlSUQpOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVQYXNzd29yZChjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
UHJldmlld0xvYWRlckNsaWVudChjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcm
IHV0aSwgdWludDY0X3QgcGFnZUlEKTsKKyAgICBXZWJQcmV2aWV3TG9hZGVyQ2xpZW50KGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpLCBXZWJDb3JlOjpQYWdlSWRlbnRp
Zmllcik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFp
bCgpIG92ZXJyaWRlOwpAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiAgICAgY29uc3QgU3Ry
aW5nIG1fZmlsZU5hbWU7CiAgICAgY29uc3QgU3RyaW5nIG1fdXRpOwotICAgIGNvbnN0IHVpbnQ2
NF90IG1fcGFnZUlEOworICAgIGNvbnN0IFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1fcGFnZUlE
OwogICAgIFF1aWNrTG9va0RvY3VtZW50RGF0YSBtX2RhdGE7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5jcHAKaW5kZXggMjc2YjgwYmYy
OGYxZjVmZDQ5YTZmMGZiNDk5ZDMzNTEyYWRjMTAxMC4uYzA3Mzk2ZjAyZjFmYTY1ZjQ1YWNlZTcy
ZjEzNGY0ZmIyZDllODkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRHJhd2luZ0FyZWEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0RyYXdpbmdBcmVhLmNwcApAQCAtNjgsNyArNjgsNyBAQCBEcmF3aW5nQXJlYTo6RHJhd2lu
Z0FyZWEoRHJhd2luZ0FyZWFUeXBlIHR5cGUsIERyYXdpbmdBcmVhSWRlbnRpZmllciBpZGVudGlm
aWVyLAogICAgICwgbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCiAgICAgLCBtX3dlYlBhZ2Uod2Vi
UGFnZSkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmll
ci50b1VJbnQ2NCgpLCAqdGhpcyk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYWRkTWVz
c2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpEcmF3aW5nQXJlYTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2lkZW50aWZpZXIsICp0aGlzKTsKIH0KIAogRHJhd2luZ0FyZWE6On5EcmF3aW5nQXJlYSgp
CkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgRHJhd2luZ0FyZWE6OnJlbW92ZU1lc3NhZ2VSZWNlaXZl
cklmTmVlZGVkKCkKICAgICBpZiAobV9oYXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVyKQogICAgICAg
ICByZXR1cm47CiAgICAgbV9oYXNSZW1vdmVkTWVzc2FnZVJlY2VpdmVyID0gdHJ1ZTsKLSAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OkRy
YXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgp
KTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVz
c2FnZXM6OkRyYXdpbmdBcmVhOjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllcik7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5jcHAKaW5kZXggNjkxODMwYjU5M2M2N2Fk
MzNkNzdhMGU2OGM1NDdhNjMxYzVhYjZkNy4uY2FjMTg4YjM0YTJiNzU0MDI0MjkwN2MwNWMzOWY4
MjMzNzcxZTBhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9FdmVudERpc3BhdGNoZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgRXZlbnREaXNwYXRj
aGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAg
ICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpFdmVu
dERpc3BhdGNoZXI6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9xdWV1ZS5nZXQoKSwgdGhpcyk7
CiB9CiAKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjp3aGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwg
Y29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRMZWZ0
LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRvcCwgYm9v
bCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVu
dChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQs
IGJvb2wgY2FuUnViYmVyQmFuZEF0TGVmdCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRSaWdodCwgYm9v
bCBjYW5SdWJiZXJCYW5kQXRUb3AsIGJvb2wgY2FuUnViYmVyQmFuZEF0Qm90dG9tKQogewogI2lm
IFBMQVRGT1JNKENPQ09BKSB8fCBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogICAgIFBsYXRmb3Jt
V2hlZWxFdmVudCBwbGF0Zm9ybVdoZWVsRXZlbnQgPSBwbGF0Zm9ybSh3aGVlbEV2ZW50KTsKQEAg
LTE0Miw3ICsxNDIsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6d2hlZWxFdmVudCh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbgogfQogCiAjaWYgRU5BQkxF
KE1BQ19HRVNUVVJFX0VWRU5UUykKLXZvaWQgRXZlbnREaXNwYXRjaGVyOjpnZXN0dXJlRXZlbnQo
dWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJLaXQ6OldlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2
ZW50KQordm9pZCBFdmVudERpc3BhdGNoZXI6Omdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBw
YWdlSUQsIGNvbnN0IFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7CiAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHBhZ2VJRCwgZ2VzdHVyZUV2ZW50XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaXNwYXRjaEdlc3R1cmVFdmVudChwYWdlSUQsIGdlc3R1cmVFdmVudCk7CkBAIC0xNjMs
NyArMTYzLDcgQEAgdm9pZCBFdmVudERpc3BhdGNoZXI6OmdldFF1ZXVlZFRvdWNoRXZlbnRzRm9y
UGFnZShjb25zdCBXZWJQYWdlJiB3ZWJQYWdlLCBUb3VjaEUKICAgICBkZXN0aW5hdGlvblF1ZXVl
ID0gbV90b3VjaEV2ZW50cy50YWtlKHdlYlBhZ2UucGFnZUlEKCkpOwogfQogCi12b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYktpdDo6V2Vi
VG91Y2hFdmVudCYgdG91Y2hFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjp0b3VjaEV2ZW50
KFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViS2l0OjpXZWJUb3VjaEV2ZW50JiB0b3Vj
aEV2ZW50KQogewogICAgIGJvb2wgdXBkYXRlTGlzdFdhc0VtcHR5OwogICAgIHsKQEAgLTE5NCw3
ICsxOTQsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6dG91Y2hFdmVudCh1aW50NjRfdCBwYWdl
SUQsIGNvbnN0IFdlYktpdDo6V2ViVG91Y2hFdmVudCYgdAogCiB2b2lkIEV2ZW50RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hUb3VjaEV2ZW50cygpCiB7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgVG91Y2hF
dmVudFF1ZXVlPiBsb2NhbENvcHk7CisgICAgSGFzaE1hcDxQYWdlSWRlbnRpZmllciwgVG91Y2hF
dmVudFF1ZXVlPiBsb2NhbENvcHk7CiAgICAgewogICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcigm
bV90b3VjaEV2ZW50c0xvY2spOwogICAgICAgICBsb2NhbENvcHkuc3dhcChtX3RvdWNoRXZlbnRz
KTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hUb3Vj
aEV2ZW50cygpCiB9CiAjZW5kaWYKIAotdm9pZCBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoV2hl
ZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmIHdoZWVsRXZlbnQp
Cit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hXaGVlbEV2ZW50KFBhZ2VJZGVudGlmaWVy
IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYgd2hlZWxFdmVudCkKIHsKICAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoV2hlZWxFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVs
RXZlbnQmIHcKIH0KIAogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVOVFMpCi12b2lkIEV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBX
ZWJHZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVudCkKK3ZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNw
YXRjaEdlc3R1cmVFdmVudChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkdlc3R1cmVF
dmVudCYgZ2VzdHVyZUV2ZW50KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
QEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hHZXN0dXJl
RXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZlbgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotdm9pZCBFdmVudERpc3BhdGNoZXI6OnNlbmREaWRS
ZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJFdmVudCYgZXZlbnQsIGJvb2wg
ZGlkSGFuZGxlRXZlbnQpCit2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6c2VuZERpZFJlY2VpdmVFdmVu
dChQYWdlSWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFdlYkV2ZW50JiBldmVudCwgYm9vbCBkaWRI
YW5kbGVFdmVudCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJlY2VpdmVFdmVu
dChzdGF0aWNfY2FzdDx1aW50MzJfdD4oZXZlbnQudHlwZSgpKSwgZGlkSGFuZGxlRXZlbnQpLCBw
YWdlSUQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
RXZlbnREaXNwYXRjaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVu
dERpc3BhdGNoZXIuaAppbmRleCAxZDQ3Nzg3N2VhYWU0MDQ1MjZhMDc0NTFjMDcxODY5OTdhNTUw
ZTU0Li5lMWJiYmQ0Nzk2OWJmYmI3NTJjNjFkMjFjNjFhMjllZWZhZDk2MmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9FdmVudERpc3BhdGNoZXIuaApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKIAogI2luY2x1ZGUgIldlYkV2
ZW50LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvV2hlZWxFdmVudERlbHRhRmlsdGVyLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC03NywzOCArNzgsMzggQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJy
aWRlOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwotICAgIHZvaWQgd2hlZWxFdmVudCh1aW50
NjRfdCBwYWdlSUQsIGNvbnN0IFdlYldoZWVsRXZlbnQmLCBib29sIGNhblJ1YmJlckJhbmRBdExl
ZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBi
b29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSk7CisgICAgdm9pZCB3aGVlbEV2ZW50KFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50JiwgYm9vbCBjYW5SdWJiZXJCYW5k
QXRMZWZ0LCBib29sIGNhblJ1YmJlckJhbmRBdFJpZ2h0LCBib29sIGNhblJ1YmJlckJhbmRBdFRv
cCwgYm9vbCBjYW5SdWJiZXJCYW5kQXRCb3R0b20pOwogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZF
TlRTKQotICAgIHZvaWQgdG91Y2hFdmVudCh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlRvdWNo
RXZlbnQmKTsKKyAgICB2b2lkIHRvdWNoRXZlbnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIGNv
bnN0IFdlYlRvdWNoRXZlbnQmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNQUNfR0VTVFVSRV9FVkVO
VFMpCi0gICAgdm9pZCBnZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0
dXJlRXZlbnQmKTsKKyAgICB2b2lkIGdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciwgY29uc3QgV2ViR2VzdHVyZUV2ZW50Jik7CiAjZW5kaWYKIAogCiAgICAgLy8gVGhpcyBpcyBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50KHVp
bnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViV2hlZWxFdmVudCYpOworICAgIHZvaWQgZGlzcGF0Y2hX
aGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBjb25zdCBXZWJXaGVlbEV2ZW50Jik7
CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCiAgICAgdm9pZCBkaXNwYXRjaFRvdWNoRXZl
bnRzKCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIHZvaWQg
ZGlzcGF0Y2hHZXN0dXJlRXZlbnQodWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJHZXN0dXJlRXZl
bnQmKTsKKyAgICB2b2lkIGRpc3BhdGNoR2VzdHVyZUV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBjb25zdCBXZWJHZXN0dXJlRXZlbnQmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFTWU5D
X1NDUk9MTElORykKLSAgICB2b2lkIHNlbmREaWRSZWNlaXZlRXZlbnQodWludDY0X3QgcGFnZUlE
LCBjb25zdCBXZWJFdmVudCYsIGJvb2wgZGlkSGFuZGxlRXZlbnQpOworICAgIHZvaWQgc2VuZERp
ZFJlY2VpdmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViRXZlbnQmLCBi
b29sIGRpZEhhbmRsZUV2ZW50KTsKICNlbmRpZgogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1
ZTsKIAogI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCiAgICAgTG9jayBtX3Njcm9sbGluZ1Ry
ZWVzTXV0ZXg7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVk
U2Nyb2xsaW5nVHJlZT4+IG1fc2Nyb2xsaW5nVHJlZXM7CisgICAgSGFzaE1hcDxXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciwgUmVmUHRyPFdlYkNvcmU6OlRocmVhZGVkU2Nyb2xsaW5nVHJlZT4+IG1f
c2Nyb2xsaW5nVHJlZXM7CiAjZW5kaWYKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6V2hl
ZWxFdmVudERlbHRhRmlsdGVyPiBtX3JlY2VudFdoZWVsRXZlbnREZWx0YUZpbHRlcjsKICNpZiBF
TkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKICAgICBMb2NrIG1fdG91Y2hFdmVudHNMb2NrOwotICAg
IEhhc2hNYXA8dWludDY0X3QsIFRvdWNoRXZlbnRRdWV1ZT4gbV90b3VjaEV2ZW50czsKKyAgICBI
YXNoTWFwPFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBUb3VjaEV2ZW50UXVldWU+IG1fdG91Y2hF
dmVudHM7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0V2ZW50RGlzcGF0Y2hlci5tZXNzYWdlcy5pbgppbmRleCA1ZTE1NDNj
OThjY2ZhNDE0MDFjMjc1MzhjNjI5OWY5YTU4MGYzNjdiLi5hZjkwNGI0NTE2YTEwOTgwODU0YzFh
MzQ0ZTYxMjJjZmQ3MTY0Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9FdmVudERpc3BhdGNoZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRXZlbnREaXNwYXRjaGVyLm1lc3NhZ2VzLmluCkBAIC0yMSwxMSAr
MjEsMTEgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gRXZlbnREaXNwYXRjaGVyIHsK
LSAgICBXaGVlbEV2ZW50KHVpbnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJXaGVlbEV2ZW50IGV2
ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVyQmFuZEF0UmlnaHQs
IGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRBdEJvdHRvbSkKKyAg
ICBXaGVlbEV2ZW50KFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViS2l0OjpXZWJX
aGVlbEV2ZW50IGV2ZW50LCBib29sIGNhblJ1YmJlckJhbmRBdExlZnQsIGJvb2wgY2FuUnViYmVy
QmFuZEF0UmlnaHQsIGJvb2wgY2FuUnViYmVyQmFuZEF0VG9wLCBib29sIGNhblJ1YmJlckJhbmRB
dEJvdHRvbSkKICNpZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICBUb3VjaEV2ZW50KHVp
bnQ2NF90IHBhZ2VJRCwgV2ViS2l0OjpXZWJUb3VjaEV2ZW50IGV2ZW50KQorICAgIFRvdWNoRXZl
bnQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgcGFnZUlELCBXZWJLaXQ6OldlYlRvdWNoRXZlbnQg
ZXZlbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQotICAgIEdlc3R1
cmVFdmVudCh1aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQor
ICAgIEdlc3R1cmVFdmVudChXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6
V2ViR2VzdHVyZUV2ZW50IGV2ZW50KQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXll
clRyZWUvUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEubW0KaW5kZXggYjc1MmMxYzU0ZDQ2ZjA4
ZGRhNjY1YjVmMzU2NGQ1NDJhNjY1ZWNmNi4uYjI5MWRmMGI3ZGZkZjc5MzllN2RhYWU3MjM0MjAy
NjVkYjE5YzM2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
UmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYS5tbQpAQCAtNzUsNyArNzUsNyBAQCBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYTo6UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEoV2ViUGFnZSYgd2ViUGFnZSwgY29uc3Qg
VwogICAgIC8vIEZJWE1FOiBXaGlsZSB1c2luZyB0aGUgaGlnaCBlbmQgb2YgdGhlIHJhbmdlIG9m
IERpc3BsYXlJRHMgbWFrZXMgYSBjb2xsaXNpb24gd2l0aCByZWFsLCBub24tUmVtb3RlTGF5ZXJU
cmVlRHJhd2luZ0FyZWEKICAgICAvLyBEaXNwbGF5SURzIGxlc3MgbGlrZWx5LCBpdCBpcyBub3Qg
ZW50aXJlbHkgc2FmZSB0byBoYXZlIGEgUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEgYW5kIFRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhCiAgICAgLy8gY29lZXhpc3QgaW4gdGhlIHNhbWUg
cHJvY2Vzcy4KLSAgICB3ZWJQYWdlLndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNf
bGltaXRzPHVpbnQzMl90Pjo6bWF4KCkgLSB3ZWJQYWdlLnBhZ2VJRCgpKTsKKyAgICB3ZWJQYWdl
LndpbmRvd1NjcmVlbkRpZENoYW5nZShzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4
KCkgLSB3ZWJQYWdlLnBhZ2VJRCgpLnRvVUludDY0KCkpOwogfQogCiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYTo6flJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhKCkKQEAgLTQzNCw3ICs0MzQs
NyBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjpmbHVzaExheWVycygpCiAgICAg
UmVmUHRyPEJhY2tpbmdTdG9yZUZsdXNoZXI+IGJhY2tpbmdTdG9yZUZsdXNoZXIgPSBCYWNraW5n
U3RvcmVGbHVzaGVyOjpjcmVhdGUoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKSwgV1RGTW92ZShjb21taXRFbmNvZGVyKSwgV1RGTW92ZShjb250ZXh0c1Rv
Rmx1c2gpKTsKICAgICBtX3BlbmRpbmdCYWNraW5nU3RvcmVGbHVzaGVyID0gYmFja2luZ1N0b3Jl
Rmx1c2hlcjsKIAotICAgIHVpbnQ2NF90IHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQoKTsKKyAg
ICBhdXRvIHBhZ2VJRCA9IG1fd2ViUGFnZS5wYWdlSUQoKTsKICAgICBkaXNwYXRjaF9hc3luYyht
X2NvbW1pdFF1ZXVlLCBbYmFja2luZ1N0b3JlRmx1c2hlciA9IFdURk1vdmUoYmFja2luZ1N0b3Jl
Rmx1c2hlciksIHBhZ2VJRF0gewogICAgICAgICBiYWNraW5nU3RvcmVGbHVzaGVyLT5mbHVzaCgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBk
YXRlRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
VXBkYXRlRGlzcGF0Y2hlci5jcHAKaW5kZXggYzNhOTUyNTY1MzI2ZTc0OWU1MjYxMTMyYjA0NGFh
NTg4ODAyYzA0Zi4uNWNmNDQ0MDdlM2ZiM2Y2N2EwMzQ3MDAzZDA0NzhkNzQxOTkzMjQzZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3Bh
dGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdVcGRh
dGVEaXNwYXRjaGVyLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRj
aGVyOjppbml0aWFsaXplQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pCiAg
ICAgY29ubmVjdGlvbi0+YWRkV29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpWaWV3
VXBkYXRlRGlzcGF0Y2hlcjo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX3F1ZXVlLmdldCgpLCB0
aGlzKTsKIH0KIAotdm9pZCBWaWV3VXBkYXRlRGlzcGF0Y2hlcjo6dmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5m
byYgdmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbykKK3ZvaWQgVmlld1VwZGF0ZURpc3BhdGNo
ZXI6OnZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mIHZpc2libGVDb250ZW50UmVj
dFVwZGF0ZUluZm8pCiB7CiAgICAgYm9vbCB1cGRhdGVMaXN0V2FzRW1wdHk7CiAgICAgewpAQCAt
NzUsNyArNzUsNyBAQCB2b2lkIFZpZXdVcGRhdGVEaXNwYXRjaGVyOjp2aXNpYmxlQ29udGVudFJl
Y3RVcGRhdGUodWludDY0X3QgcGFnZUlELCBjb25zdCBWaXNpYgogCiB2b2lkIFZpZXdVcGRhdGVE
aXNwYXRjaGVyOjpkaXNwYXRjaFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSgpCiB7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgVXBkYXRlRGF0YT4gdXBkYXRlOworICAgIEhhc2hNYXA8UGFnZUlkZW50
aWZpZXIsIFVwZGF0ZURhdGE+IHVwZGF0ZTsKICAgICB7CiAgICAgICAgIExvY2tIb2xkZXIgbG9j
a2VyKCZtX2RhdGFNdXRleCk7CiAgICAgICAgIHVwZGF0ZSA9IFdURk1vdmUobV9sYXRlc3RVcGRh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1Vw
ZGF0ZURpc3BhdGNoZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdV
cGRhdGVEaXNwYXRjaGVyLmgKaW5kZXggZTQ3ZGM0ZTFkNDE2ODIyMzQwYWZhZGVhMmEzYzgwNjIw
ZjRiMjA4OC4uY2E3ZDIwMGMyYmNmNjVlNzdiODBhMjlkZmFjMTk0M2VjMmRkNDE0ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNo
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3VXBkYXRlRGlz
cGF0Y2hlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogCiAj
aW5jbHVkZSAiVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvUGFnZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAtNDcsNyArNDgsNyBAQCBwcml2
YXRlOgogICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6V29ya1F1ZXVlTWVzc2FnZVJlY2VpdmVyLgog
ICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHZpc2libGVDb250ZW50UmVjdFVwZGF0ZSh1aW50NjRf
dCBwYWdlSUQsIGNvbnN0IFZpc2libGVDb250ZW50UmVjdFVwZGF0ZUluZm8mKTsKKyAgICB2b2lk
IHZpc2libGVDb250ZW50UmVjdFVwZGF0ZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgY29uc3Qg
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYpOwogCiAgICAgdm9pZCBkaXNwYXRjaFZpc2li
bGVDb250ZW50UmVjdFVwZGF0ZSgpOwogCkBAIC01OCw3ICs1OSw3IEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8V29ya1F1ZXVlPiBtX3F1ZXVlOwogICAgIExvY2sgbV9kYXRhTXV0ZXg7Ci0gICAgSGFz
aE1hcDx1aW50NjRfdCwgVXBkYXRlRGF0YT4gbV9sYXRlc3RVcGRhdGU7CisgICAgSGFzaE1hcDxX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgVXBkYXRlRGF0YT4gbV9sYXRlc3RVcGRhdGU7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1ZpZXdVcGRhdGVEaXNwYXRjaGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4K
aW5kZXggMTdlMmM4ZGQxODZhZDI3NmU1NThhY2M4ODBjMjY4OGQ1MDM1OGZlNi4uZDkyZWViODg5
ZDA5NTcyYTFkMjI2ZTgzYzdjZTEzZjU5NjEwMjZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIubWVzc2FnZXMuaW4KKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld1VwZGF0ZURpc3BhdGNoZXIu
bWVzc2FnZXMuaW4KQEAgLTIxLDUgKzIxLDUgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMg
LT4gVmlld1VwZGF0ZURpc3BhdGNoZXIgewotICAgIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZSh1
aW50NjRfdCBwYWdlSUQsIFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyB2aXNp
YmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKQorICAgIFZpc2libGVDb250ZW50UmVjdFVwZGF0ZShX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYktpdDo6VmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlSW5mbyB2aXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvKQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0
UHJveHkuY3BwCmluZGV4IDIxMWQ2MDFlZjBiNDRmNTJhYTJkZTk2M2U4NDUzZjg2YzUyZjhmZDQu
LjdhMGMwYzgwZmU4Y2M2MDExNjkzZDdiNDUyN2FiZWM3ZTllNWU3NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlzdFByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExp
c3RQcm94eS5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIElEVG9IaXN0b3J5SXRlbU1hcCYg
aWRUb0hpc3RvcnlJdGVtTWFwKCkKICAgICByZXR1cm4gbWFwOwogfQogCi12b2lkIFdlYkJhY2tG
b3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNrRm9yd2FyZEl0
ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCB1aW50NjRfdCBw
YWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0pCit2b2lk
IFdlYkJhY2tGb3J3YXJkTGlzdFByb3h5OjphZGRJdGVtRnJvbVVJUHJvY2Vzcyhjb25zdCBCYWNr
Rm9yd2FyZEl0ZW1JZGVudGlmaWVyJiBpdGVtSUQsIFJlZjxIaXN0b3J5SXRlbT4mJiBpdGVtLCBQ
YWdlSWRlbnRpZmllciBwYWdlSUQsIE92ZXJ3cml0ZUV4aXN0aW5nSXRlbSBvdmVyd3JpdGVFeGlz
dGluZ0l0ZW0pCiB7CiAgICAgLy8gVGhpcyBpdGVtL2l0ZW1JRCBwYWlyIHNob3VsZCBub3QgYWxy
ZWFkeSBleGlzdCBpbiBvdXIgbWFwLgogICAgIEFTU0VSVF9VTlVTRUQob3ZlcndyaXRlRXhpc3Rp
bmdJdGVtLCBvdmVyd3JpdGVFeGlzdGluZ0l0ZW0gPT0gT3ZlcndyaXRlRXhpc3RpbmdJdGVtOjpZ
ZXMgfHwgIWlkVG9IaXN0b3J5SXRlbU1hcCgpLmNvbnRhaW5zKGl0ZW1JRCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkJhY2tGb3J3YXJkTGlz
dFByb3h5LmgKaW5kZXggZjNiMWM4YWY1NDgyM2MzZTgyNjhkNmFlNThlNDBhNmY2MTU0ZDA4MS4u
ZDFiYWFkYjkxYzU1ODYxYjE1NDNiOTcxNzY0ODYyYjVkMjIzOTc3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQmFja0ZvcndhcmRMaXN0UHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJCYWNrRm9yd2FyZExpc3RQ
cm94eS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNv
cmUvQmFja0ZvcndhcmRDbGllbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVy
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NDcsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIFllcywKICAgICAgICAgTm8KICAgICB9Owot
ICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nlc3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJ
dGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4mJiwgdWludDY0X3QgcGFn
ZUlELCBPdmVyd3JpdGVFeGlzdGluZ0l0ZW0pOworICAgIHZvaWQgYWRkSXRlbUZyb21VSVByb2Nl
c3MoY29uc3QgV2ViQ29yZTo6QmFja0ZvcndhcmRJdGVtSWRlbnRpZmllciYsIFJlZjxXZWJDb3Jl
OjpIaXN0b3J5SXRlbT4mJiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIE92ZXJ3cml0ZUV4aXN0
aW5nSXRlbSk7CiAKICAgICB2b2lkIGNsZWFyKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvb2tpZUphci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDE2MGVkZWZkNTlkMTBhMDIz
ZTRhZjI1MWJlMmIxYTliMmE5OGIyZDUuLjczOGJlOTJiOTJkYzczZDJkZjY3N2VlMzRlYzEzMDgx
YTYwZjFhMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkNvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
Q29va2llSmFyLmNwcApAQCAtMzgsNiArMzgsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIGNsYXNzIFdlYlN0b3JhZ2VTZXNzaW9uUHJvdmlk
ZXIgOiBwdWJsaWMgV2ViQ29yZTo6U3RvcmFnZVNlc3Npb25Qcm92aWRlciB7CiAgICAgLy8gTmV0
d29ya1N0b3JhZ2VTZXNzaW9ucyBhcmUgYWNjZXNzZWQgb25seSBpbiB0aGUgTmV0d29ya1Byb2Nl
c3MuCiAgICAgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKiBzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG51bGxwdHI7IH0KQEAgLTQ5LDcgKzUxLDcgQEAgV2ViQ29v
a2llSmFyOjpXZWJDb29raWVKYXIoKQogU3RyaW5nIFdlYkNvb2tpZUphcjo6Y29va2llcyhXZWJD
b3JlOjpEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIE9w
dGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdlSUQ7
CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byogZnJh
bWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVyKCku
Y2xpZW50KCkucGFnZUlEKCk7CkBAIC02Niw3ICs2OCw3IEBAIFN0cmluZyBXZWJDb29raWVKYXI6
OmNvb2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBVUkwmIHVybCkgY29u
c3QKIHZvaWQgV2ViQ29va2llSmFyOjpzZXRDb29raWVzKFdlYkNvcmU6OkRvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogICAg
IE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlEOwotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQ7CisgICAgT3B0aW9uYWw8UGFnZUlkZW50aWZpZXI+IHBhZ2VJRDsKICAgICBpZiAoYXV0byog
ZnJhbWUgPSBkb2N1bWVudC5mcmFtZSgpKSB7CiAgICAgICAgIGZyYW1lSUQgPSBmcmFtZS0+bG9h
ZGVyKCkuY2xpZW50KCkuZnJhbWVJRCgpOwogICAgICAgICBwYWdlSUQgPSBmcmFtZS0+bG9hZGVy
KCkuY2xpZW50KCkucGFnZUlEKCk7CkBAIC04Myw3ICs4NSw3IEBAIGJvb2wgV2ViQ29va2llSmFy
Ojpjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2Vj
dXJlQ29va2llc0FjY2Vzc2VkPiBXZWJDb29raWVKYXI6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiBzYW1lU2l0ZUluZm8sIGNvbnN0IFVS
TCYgdXJsLCBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRCwgT3B0aW9uYWw8dWludDY0X3Q+IHBh
Z2VJRCwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMp
IGNvbnN0CitzdGQ6OnBhaXI8U3RyaW5nLCBXZWJDb3JlOjpTZWN1cmVDb29raWVzQWNjZXNzZWQ+
IFdlYkNvb2tpZUphcjo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgUEFMOjpT
ZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpTYW1lU2l0ZUluZm8mIHNhbWVTaXRlSW5mbywgY29uc3QgVVJMJiB1cmwsIE9wdGlvbmFsPHVp
bnQ2NF90PiBmcmFtZUlELCBPcHRpb25hbDxQYWdlSWRlbnRpZmllcj4gcGFnZUlELCBXZWJDb3Jl
OjpJbmNsdWRlU2VjdXJlQ29va2llcyBpbmNsdWRlU2VjdXJlQ29va2llcykgY29uc3QKIHsKICAg
ICBTdHJpbmcgY29va2llU3RyaW5nOwogICAgIGJvb2wgc2VjdXJlQ29va2llc0FjY2Vzc2VkID0g
ZmFsc2U7CkBAIC05NSw3ICs5Nyw3IEBAIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNlY3Vy
ZUNvb2tpZXNBY2Nlc3NlZD4gV2ViQ29va2llSmFyOjpjb29raWVSZXF1ZXN0SGVhCiBib29sIFdl
YkNvb2tpZUphcjo6Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYgcmF3Q29va2llcykg
Y29uc3QKIHsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gZnJhbWVJRDsKLSAgICBPcHRpb25hbDx1
aW50NjRfdD4gcGFnZUlEOworICAgIE9wdGlvbmFsPFBhZ2VJZGVudGlmaWVyPiBwYWdlSUQ7CiAg
ICAgaWYgKGF1dG8qIGZyYW1lID0gZG9jdW1lbnQuZnJhbWUoKSkgewogICAgICAgICBmcmFtZUlE
ID0gZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKTsKICAgICAgICAgcGFnZUlEID0g
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBhZ2VJRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29va2llSmFyLmggYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJDb29raWVKYXIuaAppbmRleCA5N2RkNzZmNjY0YzNmNTUzYWRm
YzhlNzZiYjg1ZWEzZjExMWU1MTFlLi41NTliZDBlNTBiYmVjMzVmZmIyNTZiOTEyYjdiNDZkYTk5
NGIyZDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJD
b29raWVKYXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJDb29r
aWVKYXIuaApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGNvb2tpZXMoV2Vi
Q29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldENv
b2tpZXMoV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykgZmluYWw7CiAgICAgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpE
b2N1bWVudCYpIGNvbnN0IGZpbmFsOwotICAgIHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvcmU6OlNl
Y3VyZUNvb2tpZXNBY2Nlc3NlZD4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
UEFMOjpTZXNzaW9uSUQmLCBjb25zdCBVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OlNh
bWVTaXRlSW5mbyYsIGNvbnN0IFVSTCYsIE9wdGlvbmFsPHVpbnQ2NF90PiBmcmFtZUlELCBPcHRp
b25hbDx1aW50NjRfdD4gcGFnZUlELCBXZWJDb3JlOjpJbmNsdWRlU2VjdXJlQ29va2llcykgY29u
c3QgZmluYWw7CisgICAgc3RkOjpwYWlyPFN0cmluZywgV2ViQ29yZTo6U2VjdXJlQ29va2llc0Fj
Y2Vzc2VkPiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBQQUw6OlNlc3Npb25J
RCYsIGNvbnN0IFVSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvJiwg
Y29uc3QgVVJMJiwgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQsIE9wdGlvbmFsPFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyPiwgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNvb2tpZXMpIGNvbnN0IGZp
bmFsOwogICAgIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpEb2N1bWVudCYsIGNv
bnN0IFVSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6RG9jdW1lbnQmLCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpIGZpbmFsOwogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA4OTBjNWU1NmFjMDRjZTczZjQ1
ZWUwN2Q5NzgzNTFmZDMxY2FhNTIxLi40YWY0OTVhNTFiOTAzNzI2ZjNiYjY0YzNhNGRlMzE1MWQ5
OWZiYjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTGlzdGVuZXJJ
RCgpCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVXaXRoQ29yZU1haW5GcmFtZShXZWJQ
YWdlKiBwYWdlLCBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lKQogewogICAgIGF1dG8gZnJhbWUg
PSBjcmVhdGUoc3RkOjp1bmlxdWVfcHRyPFdlYkZyYW1lTG9hZGVyQ2xpZW50PihzdGF0aWNfY2Fz
dDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCZjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpKSkp
OwotICAgIHBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkQ3JlYXRlTWFpbkZy
YW1lKGZyYW1lLT5mcmFtZUlEKCkpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRDcmVhdGVNYWluRnJhbWUoZnJhbWUtPmZyYW1lSUQo
KSkpOwogCiAgICAgZnJhbWUtPm1fY29yZUZyYW1lID0gY29yZUZyYW1lOwogICAgIGZyYW1lLT5t
X2NvcmVGcmFtZS0+dHJlZSgpLnNldE5hbWUoU3RyaW5nKCkpOwpAQCAtMTIxLDcgKzEyMSw3IEBA
IFJlZjxXZWJGcmFtZT4gV2ViRnJhbWU6OmNyZWF0ZVdpdGhDb3JlTWFpbkZyYW1lKFdlYlBhZ2Uq
IHBhZ2UsIFdlYkNvcmU6OkZyYW1lKiBjCiBSZWY8V2ViRnJhbWU+IFdlYkZyYW1lOjpjcmVhdGVT
dWJmcmFtZShXZWJQYWdlKiBwYWdlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgSFRNTEZyYW1l
T3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQpCiB7CiAgICAgYXV0byBmcmFtZSA9IGNyZWF0ZShz
dGQ6Om1ha2VfdW5pcXVlPFdlYkZyYW1lTG9hZGVyQ2xpZW50PigpKTsKLSAgICBwYWdlLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZENyZWF0ZVN1YmZyYW1lKGZyYW1lLT5mcmFtZUlE
KCkpLCBwYWdlLT5wYWdlSUQoKSk7CisgICAgcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRDcmVhdGVTdWJmcmFtZShmcmFtZS0+ZnJhbWVJRCgpKSk7CiAKICAgICBhdXRvIGNv
cmVGcmFtZSA9IEZyYW1lOjpjcmVhdGUocGFnZS0+Y29yZVBhZ2UoKSwgb3duZXJFbGVtZW50LCBm
cmFtZS0+bV9mcmFtZUxvYWRlckNsaWVudC5nZXQoKSk7CiAgICAgZnJhbWUtPm1fY29yZUZyYW1l
ID0gY29yZUZyYW1lLnB0cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViSW5zcGVjdG9yVUkuY3BwCmluZGV4IGM5NjUyZTk0YWY4NmI2MGU3ZmRlNzM2MjVk
MTFiNWFiY2VhNGM5ZGEuLmJjZmY4ZTJhODk2ZmYwMmU4MjUxNjUyNzgxMTliZDFmZWI0NjIxZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rv
clVJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgV2ViSW5zcGVjdG9yVUk6OldlYkluc3BlY3RvclVJ
KFdlYlBhZ2UmIHBhZ2UpCiAjZW5kaWYKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JVSTo6ZXN0YWJs
aXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmllciwgYm9vbCB1bmRl
clRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCkKK3ZvaWQgV2ViSW5zcGVjdG9yVUk6OmVz
dGFibGlzaENvbm5lY3Rpb24oUGFnZUlkZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIs
IGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25lZCBpbnNwZWN0aW9uTGV2ZWwpCiB7CiAgICAgbV9pbnNw
ZWN0ZWRQYWdlSWRlbnRpZmllciA9IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyOwogICAgIG1fZnJv
bnRlbmRBUElEaXNwYXRjaGVyLnJlc2V0KCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JVSTo6Y2xvc2VXaW5kb3coKQogICAgIGlmIChtX2Zyb250ZW5kSG9zdCkKICAgICAg
ICAgbV9mcm9udGVuZEhvc3QtPmRpc2Nvbm5lY3RDbGllbnQoKTsKIAotICAgIG1faW5zcGVjdGVk
UGFnZUlkZW50aWZpZXIgPSAwOworICAgIG1faW5zcGVjdGVkUGFnZUlkZW50aWZpZXIgPSB7IH07
CiAgICAgbV91bmRlclRlc3QgPSBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yVUkuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJLmgKaW5kZXggODM4MWJmMWNlZGVjYjY1YzVk
NDc0NzVjMjJiN2QzZGI2MmZiZmQ4ZS4uOTQyNGJmZTFmMjZjZmRjMTY5MDdjNzgxZmVmNGQ2ZDA1
YzVlY2UyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
SW5zcGVjdG9yVUkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJ
bnNwZWN0b3JVSS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yRnJv
bnRlbmRBUElEaXNwYXRjaGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBjbGFzcyBJbnNwZWN0b3JDb250cm9sbGVyOwpAQCAtNTIsNyArNTMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRSZWNlaXZlSW52YWxpZE1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpT
dHJpbmdSZWZlcmVuY2UsIElQQzo6U3RyaW5nUmVmZXJlbmNlKSBvdmVycmlkZSB7IGNsb3NlV2lu
ZG93KCk7IH0KIAogICAgIC8vIENhbGxlZCBieSBXZWJJbnNwZWN0b3JVSSBtZXNzYWdlcwotICAg
IHZvaWQgZXN0YWJsaXNoQ29ubmVjdGlvbih1aW50NjRfdCBpbnNwZWN0ZWRQYWdlSWRlbnRpZmll
ciwgYm9vbCB1bmRlclRlc3QsIHVuc2lnbmVkIGluc3BlY3Rpb25MZXZlbCk7CisgICAgdm9pZCBl
c3RhYmxpc2hDb25uZWN0aW9uKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIGluc3BlY3RlZFBhZ2VJ
ZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQgaW5zcGVjdGlvbkxldmVsKTsKICAg
ICB2b2lkIHVwZGF0ZUNvbm5lY3Rpb24oKTsKIAogICAgIHZvaWQgc2hvd0NvbnNvbGUoKTsKQEAg
LTEzMyw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIC8vIGNvcmVQYWdlKCksIHNpbmNlIHdlIG1h
eSBuZWVkIGl0IGFmdGVyIHRoZSBmcm9udGVuZCdzIHBhZ2UgaGFzIHN0YXJ0ZWQgZGVzdHJ1Y3Rp
b24uCiAgICAgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlciogbV9mcm9udGVuZENvbnRyb2xs
ZXIgeyBudWxscHRyIH07CiAKLSAgICB1aW50NjRfdCBtX2luc3BlY3RlZFBhZ2VJZGVudGlmaWVy
IHsgMCB9OworICAgIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG1faW5zcGVjdGVkUGFnZUlkZW50
aWZpZXI7CiAgICAgYm9vbCBtX3VuZGVyVGVzdCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2RvY2tp
bmdVbmF2YWlsYWJsZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzVmlzaWJsZSB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0
b3JVSS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLm1lc3NhZ2VzLmluCmluZGV4IGRlYTBmZTU4NGQ0ZWYwZjg2ZmE5NzE2NjJiYjQ3
YjQxYTdmNjEzYmYuLjQzMTkwYWE4MzRkY2FhNjY5NjRiYmJhOTU1MDA4MjFmYjdkNjEwMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3RvclVJ
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3RvclVJLm1lc3NhZ2VzLmluCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAK
IG1lc3NhZ2VzIC0+IFdlYkluc3BlY3RvclVJIHsKLSAgICBFc3RhYmxpc2hDb25uZWN0aW9uKHVp
bnQ2NF90IGluc3BlY3RlZFBhZ2VJZGVudGlmaWVyLCBib29sIHVuZGVyVGVzdCwgdW5zaWduZWQg
aW5zcGVjdGlvbkxldmVsKQorICAgIEVzdGFibGlzaENvbm5lY3Rpb24oV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgaW5zcGVjdGVkUGFnZUlkZW50aWZpZXIsIGJvb2wgdW5kZXJUZXN0LCB1bnNpZ25l
ZCBpbnNwZWN0aW9uTGV2ZWwpCiAgICAgVXBkYXRlQ29ubmVjdGlvbigpCiAKICAgICBBdHRhY2hl
ZEJvdHRvbSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CmluZGV4IDc2ZjdjNWNiZjkwYzU1ZDM2NzM5Nzk0YzRlZTJjOTZjMTY3MjNiMDguLjhiMGIzMzgx
YmE5ZDFjYjAwYWYxY2Q1ZTRkNGZlMGMwMjc5ZTQ0MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNjAsNyArMzYwLDcgQEAgcHJpdmF0ZToK
IAogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyLCB3
ZWJQYWdlQ291bnRlciwgKCJXZWJQYWdlIikpOwogCi1SZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3Jl
YXRlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCitSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwg
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiB7CiAgICAgUmVmPFdlYlBh
Z2U+IHBhZ2UgPSBhZG9wdFJlZigqbmV3IFdlYlBhZ2UocGFnZUlELCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKSk7CiAKQEAgLTM3MCw3ICszNzAsNyBAQCBSZWY8V2ViUGFnZT4gV2ViUGFnZTo6Y3JlYXRl
KHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQogICAg
IHJldHVybiBwYWdlOwogfQogCi1XZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCitXZWJQYWdlOjpXZWJQYWdlKFBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMpCiAgICAgOiBtX3BhZ2VJRChwYWdlSUQpCiAgICAgLCBtX3ZpZXdTaXplKHBhcmFtZXRlcnMu
dmlld1NpemUpCiAgICAgLCBtX2Fsd2F5c1Nob3dzSG9yaXpvbnRhbFNjcm9sbGVyIHsgcGFyYW1l
dGVycy5hbHdheXNTaG93c0hvcml6b250YWxTY3JvbGxlciB9CkBAIC04MzEsNyArODMxLDcgQEAg
SVBDOjpDb25uZWN0aW9uKiBXZWJQYWdlOjptZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0
CiAKIHVpbnQ2NF90IFdlYlBhZ2U6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gcGFnZUlEKCk7CisgICAgcmV0dXJuIHBhZ2VJRCgpLnRvVUludDY0KCk7
CiB9CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKQEAgLTE2NDgsNyArMTY0OCw3IEBAIHZv
aWQgV2ViUGFnZTo6Z29Ub0JhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNv
bnN0IEJhY2tGb3J3YXJkSXRlbUlkCiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAK
LSAgICBMT0coTG9hZGluZywgIkluIFdlYlByb2Nlc3MgcGlkICVpLCBXZWJQYWdlICUiIFBSSXU2
NCAiIGlzIG5hdmlnYXRpbmcgdG8gYmFjay9mb3J3YXJkIFVSTCAlcyIsIGdldEN1cnJlbnRQcm9j
ZXNzSUQoKSwgbV9wYWdlSUQsIGl0ZW0tPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIExPRyhMb2FkaW5nLCAiSW4gV2ViUHJvY2VzcyBwaWQgJWksIFdlYlBhZ2UgJSIgUFJJdTY0
ICIgaXMgbmF2aWdhdGluZyB0byBiYWNrL2ZvcndhcmQgVVJMICVzIiwgZ2V0Q3VycmVudFByb2Nl
c3NJRCgpLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBpdGVtLT51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKIAogICAgIEFTU0VSVCghbV9wZW5kaW5nTmF2aWdhdGlvbklEKTsKICAgICBtX3Bl
bmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CkBAIC0yMDc2LDcgKzIwNzYsNyBAQCBi
b29sIFdlYlBhZ2U6OnNldEZpeGVkTGF5b3V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IGlmICghdmlldyB8fCB2aWV3LT5maXhlZExheW91dFNpemUoKSA9PSBzaXplKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0g
PDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIHNldEZpeGVkTGF5b3V0U2l6ZSAiIDw8IHNp
emUpOworICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFn
ZSAiIDw8IG1fcGFnZUlELnRvVUludDY0KCkgPDwgIiBzZXRGaXhlZExheW91dFNpemUgIiA8PCBz
aXplKTsKICAgICB2aWV3LT5zZXRGaXhlZExheW91dFNpemUoc2l6ZSk7CiAKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkZpeGVkTGF5b3V0U2l6ZURpZENoYW5nZShzaXplKSk7CkBA
IC0yNTA0LDcgKzI1MDQsNyBAQCBjb25zdCBXZWJFdmVudCogV2ViUGFnZTo6Y3VycmVudEV2ZW50
KCkKIHZvaWQgV2ViUGFnZTo6ZnJlZXplTGF5ZXJUcmVlKExheWVyVHJlZUZyZWV6ZVJlYXNvbiBy
ZWFzb24pCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlBh
Z2UgKFBhZ2VJRD0lbGx1KSAtIEFkZGluZyBhIHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJl
ZTsgY3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3
KCkpOworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1f
bGF5ZXJUcmVlRnJlZXplUmVhc29ucy5hZGQocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJl
YUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBAIC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFdl
YlBhZ2U6OmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29uKQogdm9p
ZCBXZWJQYWdlOjp1bmZyZWV6ZUxheWVyVHJlZShMYXllclRyZWVGcmVlemVSZWFzb24gcmVhc29u
KQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQYWdlIChQ
YWdlSUQ9JWxsdSkgLSBSZW1vdmluZyBhIHJlYXNvbiAlZCB0byBmcmVlemUgbGF5ZXIgdHJlZTsg
Y3VycmVudCByZWFzb25zIGFyZSAlZCIsCi0gICAgICAgIHRoaXMsIG1fcGFnZUlELCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkp
OworICAgICAgICB0aGlzLCBtX3BhZ2VJRC50b1VJbnQ2NCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocmVhc29uKSwgbV9sYXllclRyZWVGcmVlemVSZWFzb25zLnRvUmF3KCkpOwogICAgIG1fbGF5
ZXJUcmVlRnJlZXplUmVhc29ucy5yZW1vdmUocmVhc29uKTsKICAgICB1cGRhdGVEcmF3aW5nQXJl
YUxheWVyVHJlZUZyZWV6ZVN0YXRlKCk7CiB9CkBAIC0zMTY4LDcgKzMxNjgsNyBAQCB2b2lkIFdl
YlBhZ2U6OnZpc2liaWxpdHlEaWRDaGFuZ2UoKQogCiB2b2lkIFdlYlBhZ2U6OnNldEFjdGl2aXR5
U3RhdGUoT3B0aW9uU2V0PEFjdGl2aXR5U3RhdGU6OkZsYWc+IGFjdGl2aXR5U3RhdGUsIEFjdGl2
aXR5U3RhdGVDaGFuZ2VJRCBhY3Rpdml0eVN0YXRlQ2hhbmdlSUQsIGNvbnN0IFZlY3RvcjxDYWxs
YmFja0lEPiYgY2FsbGJhY2tJRHMpCiB7Ci0gICAgTE9HX1dJVEhfU1RSRUFNKEFjdGl2aXR5U3Rh
dGUsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IHBhZ2VJRCgpIDw8ICIgc2V0QWN0aXZpdHlTdGF0
ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOworICAgIExPR19XSVRIX1NUUkVBTShBY3Rpdml0eVN0
YXRlLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBwYWdlSUQoKS50b1VJbnQ2NCgpIDw8ICIgc2V0
QWN0aXZpdHlTdGF0ZSB0byAiIDw8IGFjdGl2aXR5U3RhdGUpOwogCiAgICAgYXV0byBjaGFuZ2Vk
ID0gbV9hY3Rpdml0eVN0YXRlIF4gYWN0aXZpdHlTdGF0ZTsKICAgICBtX2FjdGl2aXR5U3RhdGUg
PSBhY3Rpdml0eVN0YXRlOwpAQCAtMzE3Niw3ICszMTc2LDcgQEAgdm9pZCBXZWJQYWdlOjpzZXRB
Y3Rpdml0eVN0YXRlKE9wdGlvblNldDxBY3Rpdml0eVN0YXRlOjpGbGFnPiBhY3Rpdml0eVN0YXRl
LCBBY3QKICAgICBpZiAoY2hhbmdlZCkKICAgICAgICAgdXBkYXRlVGhyb3R0bGVTdGF0ZSgpOwog
Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX3BhZ2UsICJzZXRBY3Rpdml0eVN0YXRlIGNhbGxl
ZCBvbiAlIiBQUkl1NjQgIiBidXQgV2ViQ29yZSBwYWdlIHdhcyBudWxsIiwgcGFnZUlEKCkpOwor
ICAgIEFTU0VSVF9XSVRIX01FU1NBR0UobV9wYWdlLCAic2V0QWN0aXZpdHlTdGF0ZSBjYWxsZWQg
b24gJSIgUFJJdTY0ICIgYnV0IFdlYkNvcmUgcGFnZSB3YXMgbnVsbCIsIHBhZ2VJRCgpLnRvVUlu
dDY0KCkpOwogICAgIGlmIChtX3BhZ2UpIHsKICAgICAgICAgU2V0Rm9yU2NvcGU8T3B0aW9uU2V0
PEFjdGl2aXR5U3RhdGU6OkZsYWc+PiBjdXJyZW50bHlDaGFuZ2luZ0FjdGl2aXR5U3RhdGUgeyBt
X2xhc3RBY3Rpdml0eVN0YXRlQ2hhbmdlcywgY2hhbmdlZCB9OwogICAgICAgICBtX3BhZ2UtPnNl
dEFjdGl2aXR5U3RhdGUoYWN0aXZpdHlTdGF0ZSk7CkBAIC00MzM5LDcgKzQzMzksNyBAQCB2b2lk
IFdlYlBhZ2U6Om1haW5GcmFtZURpZExheW91dCgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBtYWluRnJhbWVWaWV3KCkpIHsKICAgICAg
ICAgSW50U2l6ZSBuZXdDb250ZW50U2l6ZSA9IGZyYW1lVmlldy0+Y29udGVudHNTaXplKCk7Ci0g
ICAgICAgIExPR19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAi
IDw8IG1fcGFnZUlEIDw8ICIgbWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXpl
IHRvICIgPDwgbmV3Q29udGVudFNpemUpOworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJs
ZVJlY3RzLCBzdHJlYW0gPDwgIldlYlBhZ2UgIiA8PCBtX3BhZ2VJRC50b1VJbnQ2NCgpIDw8ICIg
bWFpbkZyYW1lRGlkTGF5b3V0IHNldHRpbmcgY29udGVudCBzaXplIHRvICIgPDwgbmV3Q29udGVu
dFNpemUpOwogICAgICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNT
aXplKG5ld0NvbnRlbnRTaXplKSkKICAgICAgICAgICAgIHZpZXdwb3J0Q29uZmlndXJhdGlvbkNo
YW5nZWQoKTsKICAgICB9CkBAIC01NzQyLDcgKzU3NDIsNyBAQCB2b2lkIFdlYlBhZ2U6OmRpZENv
bW1pdExvYWQoV2ViRnJhbWUqIGZyYW1lKQogICAgIAogICAgIGJvb2wgdmlld3BvcnRDaGFuZ2Vk
ID0gZmFsc2U7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oVmlzaWJsZVJlY3RzLCBzdHJlYW0gPDwg
IldlYlBhZ2UgIiA8PCBtX3BhZ2VJRCA8PCAiIGRpZENvbW1pdExvYWQgc2V0dGluZyBjb250ZW50
IHNpemUgdG8gIiA8PCBjb3JlRnJhbWUtPnZpZXcoKS0+Y29udGVudHNTaXplKCkpOworICAgIExP
R19XSVRIX1NUUkVBTShWaXNpYmxlUmVjdHMsIHN0cmVhbSA8PCAiV2ViUGFnZSAiIDw8IG1fcGFn
ZUlELnRvVUludDY0KCkgPDwgIiBkaWRDb21taXRMb2FkIHNldHRpbmcgY29udGVudCBzaXplIHRv
ICIgPDwgY29yZUZyYW1lLT52aWV3KCktPmNvbnRlbnRzU2l6ZSgpKTsKICAgICBpZiAobV92aWV3
cG9ydENvbmZpZ3VyYXRpb24uc2V0Q29udGVudHNTaXplKGNvcmVGcmFtZS0+dmlldygpLT5jb250
ZW50c1NpemUoKSkpCiAgICAgICAgIHZpZXdwb3J0Q2hhbmdlZCA9IHRydWU7CiAKQEAgLTYwNTYs
NyArNjA1Niw3IEBAIHZvaWQgV2ViUGFnZTo6c2VuZEVkaXRvclN0YXRlVXBkYXRlKCkKICAgICAv
LyBJZiB0aGF0IGlzIHRoZSBjYXNlLCBqdXN0IHNlbmQgd2hhdCB3ZSBoYXZlIChpLmUuIGRvbid0
IGluY2x1ZGUgcG9zdC1sYXlvdXQgZGF0YSkgYW5kIHdhaXQgdW50aWwgdGhlCiAgICAgLy8gbmV4
dCBsYXllciB0cmVlIGNvbW1pdCB0byBjb21wdXRlIGFuZCBzZW5kIHRoZSBjb21wbGV0ZSBFZGl0
b3JTdGF0ZSBvdmVyLgogICAgIGF1dG8gc3RhdGUgPSBlZGl0b3JTdGF0ZSgpOwotICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKHN0YXRlKSwgcGFnZUlE
KCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2Vk
KHN0YXRlKSk7CiAKICAgICBpZiAoc3RhdGUuaXNNaXNzaW5nUG9zdExheW91dERhdGEpCiAgICAg
ICAgIHNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBkYXRlKCk7CkBAIC02MjM3LDcgKzYyMzcsNyBA
QCB2b2lkIFdlYlBhZ2U6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQ
STo6T2JqZWN0KiBtZXNzYWdlQm9keSkKIAogdm9pZCBXZWJQYWdlOjpwb3N0TWVzc2FnZUlnbm9y
aW5nRnVsbHlTeW5jaHJvbm91c01vZGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpP
YmplY3QqIG1lc3NhZ2VCb2R5KQogewotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdlQm9keSkpKSwgcGFnZUlEKCksIElQ
Qzo6U2VuZE9wdGlvbjo6SWdub3JlRnVsbHlTeW5jaHJvbm91c01vZGUpOworICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6SGFuZGxlTWVzc2FnZShtZXNzYWdlTmFtZSwgVXNlckRhdGEo
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyhtZXNzYWdl
Qm9keSkpKSwgSVBDOjpTZW5kT3B0aW9uOjpJZ25vcmVGdWxseVN5bmNocm9ub3VzTW9kZSk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6cG9zdFN5bmNocm9ub3VzTWVzc2FnZUZvclRlc3RpbmcoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlTmFtZSwgQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5LCBSZWZQdHI8QVBJ
OjpPYmplY3Q+JiByZXR1cm5EYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGFkN2NkOGQzMWRlZGI3NDVlODg0Mjc4MTgxZjM2ZTczNmNjODAyOGQu
LmZiYTA2YzQ5ZGJiYjRmNDNkZjkyN2RiNTY4NWVlYjVlMzA5MmQ4MDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY0LDYgKzY0LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemVIYXNoLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZU92ZXJsYXkuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BvaW50ZXJJRC5oPgpAQCAtMjc0
LDcgKzI3NSw4IEBAIHVzaW5nIFdLRXZlbnRNb2RpZmllcnMgPSB1aW50MzJfdDsKIAogY2xhc3Mg
V2ViUGFnZSA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRs
ZVBhZ2U+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHB1YmxpYyBJUEM6Ok1lc3NhZ2VT
ZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYWdlPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxXZWJQYWdlPiBjcmVhdGUodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYpOworICAgIHN0YXRpYyBSZWY8V2ViUGFnZT4gY3JlYXRlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOworCiAgICAgdmlydHVh
bCB+V2ViUGFnZSgpOwogCiAgICAgdm9pZCByZWluaXRpYWxpemVXZWJQYWdlKFdlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMmJik7CkBAIC0yODQsNyArMjg2LDcgQEAgcHVibGljOgogICAgIHN0YXRp
YyBXZWJQYWdlKiBmcm9tQ29yZVBhZ2UoV2ViQ29yZTo6UGFnZSopOwogCiAgICAgV2ViQ29yZTo6
UGFnZSogY29yZVBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2UuZ2V0KCk7IH0KLSAgICB1aW50
NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJRDsgfQorICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlEOyB9CiAgICAgUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlLT5zZXNzaW9uSUQo
KTsgfQogICAgIGJvb2wgdXNlc0VwaGVtZXJhbFNlc3Npb24oKSBjb25zdCB7IHJldHVybiBtX3Bh
Z2UtPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCk7IH0KIApAQCAtMTE3MSw3ICsxMTczLDcgQEAgcHVi
bGljOgogICAgIGJvb2wgc2VuZFN5bmNXaXRoRGVsYXllZFJlcGx5KFQmJiBtZXNzYWdlLCB0eXBl
bmFtZSBUOjpSZXBseSYmIHJlcGx5KQogICAgIHsKICAgICAgICAgY2FuY2VsR2VzdHVyZXNCbG9j
a2VkT25TeW5jaHJvbm91c1JlcGxpZXMoKTsKLSAgICAgICAgcmV0dXJuIHNlbmRTeW5jKFdURk1v
dmUobWVzc2FnZSksIFdURk1vdmUocmVwbHkpLCBtX3BhZ2VJRCwgU2Vjb25kczo6aW5maW5pdHko
KSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2lsbFN1c3BlbmQp
OworICAgICAgICByZXR1cm4gc2VuZFN5bmMoV1RGTW92ZShtZXNzYWdlKSwgV1RGTW92ZShyZXBs
eSksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRm
b3JtUHJvY2Vzc1dpbGxTdXNwZW5kKTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpET01QYXN0ZUFj
Y2Vzc1Jlc3BvbnNlIHJlcXVlc3RET01QYXN0ZUFjY2Vzcyhjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIpOwpAQCAtMTIwNCw3ICsxMjA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VXNl
cklzSW50ZXJhY3RpbmcoYm9vbCB1c2VySXNJbnRlcmFjdGluZykgeyBtX3VzZXJJc0ludGVyYWN0
aW5nID0gdXNlcklzSW50ZXJhY3Rpbmc7IH0KIAogcHJpdmF0ZToKLSAgICBXZWJQYWdlKHVpbnQ2
NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmKTsKKyAgICBXZWJQYWdlKFdl
YkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYpOwogCiAg
ICAgdm9pZCB1cGRhdGVUaHJvdHRsZVN0YXRlKCk7CiAKQEAgLTE1OTEsNyArMTU5Myw3IEBAIHBy
aXZhdGU6CiAKICAgICB2b2lkIHVwZGF0ZU1vY2tBY2Nlc3NpYmlsaXR5RWxlbWVudEFmdGVyQ29t
bWl0dGluZ0xvYWQoKTsKIAotICAgIHVpbnQ2NF90IG1fcGFnZUlEOworICAgIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG1fcGFnZUlEOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OlBh
Z2U+IG1fcGFnZTsKICAgICBSZWZQdHI8V2ViRnJhbWU+IG1fbWFpbkZyYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZUluc3BlY3RvclRhcmdl
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0LmNwcAppbmRleCBkOTZhN2Q3ZGRhOWYyNmQxYzY1NmExNWNiODNkMDNjZjIwNGE3YTM4
Li5iNzc5OWI0ZmJiOGI1NWNiNjZiNjIyMjdhNmE2NWYzYWIxMmNhMDBmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9yVGFyZ2V0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0LmNwcApAQCAtNDEsNyArNDEsNyBAQCBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0OjpXZWJQ
YWdlSW5zcGVjdG9yVGFyZ2V0KFdlYlBhZ2UmIHBhZ2UpCiAKIFN0cmluZyBXZWJQYWdlSW5zcGVj
dG9yVGFyZ2V0OjppZGVudGlmaWVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZygi
cGFnZS0iLCBtX3BhZ2UucGFnZUlEKCkpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJwYWdlLSIs
IG1fcGFnZS5wYWdlSUQoKS50b1VJbnQ2NCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlSW5zcGVjdG9y
VGFyZ2V0Ojpjb25uZWN0KEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBjaGFubmVsKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2VsZXJhdGVk
U3VyZmFjZVdheWxhbmQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9B
Y2NlbGVyYXRlZFN1cmZhY2VXYXlsYW5kLmgKaW5kZXggM2I3M2U0OGE3N2U2ZDU3NzAwMTU0MmJk
NmQyOGNjMWY1MDg4MzNlYy4uOWZkYTdjYWE1NzdlZjlkMzI0ZDgyZWU1N2MxY2Y5NmQwNDhkMzZm
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0FjY2Vs
ZXJhdGVkU3VyZmFjZVdheWxhbmQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9ndGsvQWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZC5oCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICB+QWNjZWxlcmF0ZWRTdXJmYWNlV2F5bGFuZCgpID0gZGVmYXVsdDsKIAogICAg
IHVpbnQ2NF90IHdpbmRvdygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDY0X3Q+KG1fd2luZG93KTsgfQotICAgIHVpbnQ2NF90IHN1cmZhY2VJRCgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKTsgfQorICAgIHVpbnQ2NF90IHN1
cmZhY2VJRCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fd2ViUGFnZS5wYWdlSUQoKS50b1VJ
bnQ2NCgpOyB9CiAgICAgdm9pZCBjbGllbnRSZXNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
IG92ZXJyaWRlOwogICAgIGJvb2wgc2hvdWxkUGFpbnRNaXJyb3JlZCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvbGlid3BlL0FjY2VsZXJhdGVkU3VyZmFjZUxpYldQRS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9saWJ3cGUvQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFLmNw
cAppbmRleCA5ODNiOTMxOWIyODQ5Njc2Njg4Y2E2NzA1ZTI3NDg1NDkyZmZhYmVkLi5iODlkZmE4
MDQxZmIyNmQ2ZmNiZWY3ZGU4YjQ0ZDZlOGEwNDNhZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9saWJ3cGUvQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9saWJ3cGUvQWNjZWxlcmF0
ZWRTdXJmYWNlTGliV1BFLmNwcApAQCAtODgsNyArODgsNyBAQCB1aW50NjRfdCBBY2NlbGVyYXRl
ZFN1cmZhY2VMaWJXUEU6OndpbmRvdygpIGNvbnN0CiAKIHVpbnQ2NF90IEFjY2VsZXJhdGVkU3Vy
ZmFjZUxpYldQRTo6c3VyZmFjZUlEKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV93ZWJQYWdlLnBh
Z2VJRCgpOworICAgIHJldHVybiBtX3dlYlBhZ2UucGFnZUlEKCkudG9VSW50NjQoKTsKIH0KIAog
dm9pZCBBY2NlbGVyYXRlZFN1cmZhY2VMaWJXUEU6OmNsaWVudFJlc2l6ZShjb25zdCBJbnRTaXpl
JiBzaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaAppbmRl
eCAzMDFiMTM5ZTFkMmMxNmQ4OWEyYWI4OTNjZjg1NTcxMDczZDhmNTFhLi42YjdlYzViMTZmMmNh
NmEwNjI2MTM4ZjFmZjA5N2QwYjUyOTE1Mjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5
V2ViUGFnZU9iamVjdEJhc2UuaApAQCAtMjYsMTMgKzI2LDE1IEBACiAjaWZuZGVmIFdLQWNjZXNz
aWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlX2gKICNkZWZpbmUgV0tBY2Nlc3NpYmlsaXR5V2ViUGFn
ZU9iamVjdEJhc2VfaAogCisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRpZmllci5oPgorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2U7CiB9CiAKIEBpbnRlcmZhY2UgV0tBY2Nl
c3NpYmlsaXR5V2ViUGFnZU9iamVjdEJhc2UgOiBOU09iamVjdCB7CiAgICAgV2ViS2l0OjpXZWJQ
YWdlKiBtX3BhZ2U7Ci0gICAgdWludDY0X3QgbV9wYWdlSUQ7CisgICAgV2ViQ29yZTo6UGFnZUlk
ZW50aWZpZXIgbV9wYWdlSUQ7CiAgICAgaWQgbV9wYXJlbnQ7CiAgICAgYm9vbCBtX2hhc01haW5G
cmFtZVBsdWdpbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFz
ZS5tbQppbmRleCAzZDNmMzU1NTNlNmQ0ZmJlYTU1NjUzNDc4MDg4ODA2OTEwZjA1MDA5Li42MTY1
YTAxZmU2MDgyNDhmZGUzYjk2MGY3ODk0NTEzOTIzNzFkZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVj
dEJhc2UubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dLQWNj
ZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RCYXNlLm1tCkBAIC0xNDgsNyArMTQ4LDcgQEAgLSAodm9p
ZClzZXRXZWJQYWdlOihXZWJLaXQ6OldlYlBhZ2UqKXBhZ2UKICAgICAgICAgYXV0byogZnJhbWUg
PSBwYWdlLT5tYWluRnJhbWUoKTsKICAgICAgICAgbV9oYXNNYWluRnJhbWVQbHVnaW4gPSBmcmFt
ZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKSA/IGZyYW1lLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3Vt
ZW50KCkgOiBmYWxzZTsKICAgICB9IGVsc2UgewotICAgICAgICBtX3BhZ2VJRCA9IDA7CisgICAg
ICAgIG1fcGFnZUlEID0geyB9OwogICAgICAgICBtX2hhc01haW5GcmFtZVBsdWdpbiA9IGZhbHNl
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCA1
Y2U2OWNjZjgzMzRjOWQ4ZDA4OGMyMTI4ZTRmMzRjNmNmYWVhZGQ4Li42MTc0YjBhM2JiMGIzNzRh
ZTk4NGQzYWIxYmQ4YmYyMzczYmQ1N2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBy
b2Nlc3MuY3BwCkBAIC0yMjEsNyArMjIxLDcgQEAgV2ViUHJvY2Vzczo6V2ViUHJvY2VzcygpCiAg
ICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1VwZGF0ZWQoV1RGTW92ZShzdGF0aXN0aWNzKSksIDApOwogICAgIH0pOwogCi0gICAg
UmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNzVW5k
ZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgdWludDY0X3Qg
b3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9tYWluKSB7Cisg
ICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLnNldFJlcXVlc3RTdG9yYWdlQWNjZXNz
VW5kZXJPcGVuZXJDYWxsYmFjayhbdGhpc10gKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcywgUGFnZUlk
ZW50aWZpZXIgb3BlbmVyUGFnZUlELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgb3BlbmVyRG9t
YWluKSB7CiAgICAgICAgIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVxdWVz
dFN0b3JhZ2VBY2Nlc3NVbmRlck9wZW5lcihzZXNzaW9uSUQsIGRvbWFpbkluTmVlZE9mU3RvcmFn
ZUFjY2Vzcywgb3BlbmVyUGFnZUlELCBvcGVuZXJEb21haW4pLCAwKTsKICAgICB9KTsKICNlbmRp
ZgpAQCAtNjY3LDE2ICs2NjcsMTYgQEAgV2ViUGFnZSogV2ViUHJvY2Vzczo6Zm9jdXNlZFdlYlBh
Z2UoKSBjb25zdAogICAgIHJldHVybiAwOwogfQogICAgIAotV2ViUGFnZSogV2ViUHJvY2Vzczo6
d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQpIGNvbnN0CitXZWJQYWdlKiBXZWJQcm9jZXNzOjp3ZWJQ
YWdlKFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9wYWdlTWFw
LmdldChwYWdlSUQpOwogfQogCi12b2lkIFdlYlByb2Nlc3M6OmNyZWF0ZVdlYlBhZ2UodWludDY0
X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKK3ZvaWQg
V2ViUHJvY2Vzczo6Y3JlYXRlV2ViUGFnZShQYWdlSWRlbnRpZmllciBwYWdlSUQsIFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogewogICAgIC8vIEl0IGlzIG5lY2Vzc2Fy
eSB0byBjaGVjayBmb3IgcGFnZSBleGlzdGVuY2UgaGVyZSBzaW5jZSBkdXJpbmcgYSB3aW5kb3cu
b3BlbigpIChvciB0YXJnZXRlZAogICAgIC8vIGxpbmspIHRoZSBXZWJQYWdlIGdldHMgY3JlYXRl
ZCBib3RoIGluIHRoZSBzeW5jaHJvbm91cyBoYW5kbGVyIGFuZCB0aHJvdWdoIHRoZSBub3JtYWwg
d2F5LiAKLSAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8V2ViUGFnZT4+OjpBZGRSZXN1bHQg
cmVzdWx0ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOworICAgIGF1dG8gcmVzdWx0
ID0gbV9wYWdlTWFwLmFkZChwYWdlSUQsIG51bGxwdHIpOwogICAgIGF1dG8gb2xkUGFnZUlEID0g
cGFyYW1ldGVycy5vbGRQYWdlSUQgPyBwYXJhbWV0ZXJzLm9sZFBhZ2VJRC52YWx1ZSgpIDogcGFn
ZUlEOwogICAgIGlmIChyZXN1bHQuaXNOZXdFbnRyeSkgewogICAgICAgICBBU1NFUlQoIXJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUpOwpAQCAtNjkzLDcgKzY5Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
Y3JlYXRlV2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMm
JiBwYXJhCiAgICAgQVNTRVJUKHJlc3VsdC5pdGVyYXRvci0+dmFsdWUpOwogfQogCi12b2lkIFdl
YlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRf
dCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnJlbW92ZVdlYlBhZ2UoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBQYWdlSWRlbnRpZmllciBwYWdlSUQpCiB7CiAgICAgQVNTRVJUKG1fcGFnZU1h
cC5jb250YWlucyhwYWdlSUQpKTsKIApAQCAtMTQ1MCw3ICsxNDUwLDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjp1cGRhdGVDUFVNb25pdG9yU3RhdGUoQ1BVTW9uaXRvclVwZGF0ZVJlYXNvbikKIAogI2Vu
ZGlmCiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZUFjdGl2aXR5U3RhdGVEaWRDaGFuZ2UodWludDY0
X3QsIE9wdGlvblNldDxXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpGbGFnPiBjaGFuZ2VkKQordm9p
ZCBXZWJQcm9jZXNzOjpwYWdlQWN0aXZpdHlTdGF0ZURpZENoYW5nZShQYWdlSWRlbnRpZmllciwg
T3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5U3RhdGU6OkZsYWc+IGNoYW5nZWQpCiB7CiAgICAg
aWYgKGNoYW5nZWQgJiBXZWJDb3JlOjpBY3Rpdml0eVN0YXRlOjpJc1Zpc2libGUpCiAgICAgICAg
IHVwZGF0ZUNQVU1vbml0b3JTdGF0ZShDUFVNb25pdG9yVXBkYXRlUmVhc29uOjpWaXNpYmlsaXR5
SGFzQ2hhbmdlZCk7CkBAIC0xNjI0LDEzICsxNjI0LDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6c2Vu
ZFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBVUkwmIHVybCkKICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkRpZENvbGxlY3RQcmV3
YXJtSW5mb3JtYXRpb24ocmVnaXN0cmFibGVEb21haW4sIFdlYkNvcmU6OlByb2Nlc3NXYXJtaW5n
Ojpjb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKCkpLCAwKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNz
OjpwYWdlRGlkRW50ZXJXaW5kb3codWludDY0X3QgcGFnZUlEKQordm9pZCBXZWJQcm9jZXNzOjpw
YWdlRGlkRW50ZXJXaW5kb3coUGFnZUlkZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fcGFnZXNJ
bldpbmRvd3MuYWRkKHBhZ2VJRCk7CiAgICAgbV9ub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1l
ci5zdG9wKCk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzczo6cGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50
NjRfdCBwYWdlSUQpCit2b2lkIFdlYlByb2Nlc3M6OnBhZ2VXaWxsTGVhdmVXaW5kb3coUGFnZUlk
ZW50aWZpZXIgcGFnZUlEKQogewogICAgIG1fcGFnZXNJbldpbmRvd3MucmVtb3ZlKHBhZ2VJRCk7
CiAKQEAgLTE2NzMsNyArMTY3Myw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZW5hYmxlUHJpdmF0ZUJy
b3dzaW5nRm9yVGVzdGluZyhib29sIGVuYWJsZSkKICAgICBpZiAoZW5hYmxlKQogICAgICAgICBl
bnN1cmVMZWdhY3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uSW5OZXR3b3JrUHJvY2VzcygpOwogCi0g
ICAgVmVjdG9yPHVpbnQ2NF90PiBwYWdlSURzOworICAgIFZlY3RvcjxQYWdlSWRlbnRpZmllcj4g
cGFnZUlEczsKICAgICBmb3IgKGF1dG8mIHBhZ2UgOiBtX3BhZ2VNYXApIHsKICAgICAgICAgaWYg
KHBhZ2UudmFsdWUpCiAgICAgICAgICAgICBwYWdlSURzLmFwcGVuZChwYWdlLmtleSk7CkBAIC0x
ODUzLDcgKzE4NTMsNyBAQCBMaWJXZWJSVENOZXR3b3JrJiBXZWJQcm9jZXNzOjpsaWJXZWJSVENO
ZXR3b3JrKCkKIH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgV2ViUHJvY2Vz
czo6ZXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2
NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmIHN0b3JlLCBQQUw6OlNlc3Npb25JRCBpbml0aWFsU2Vzc2lvbklEKQordm9pZCBXZWJQcm9j
ZXNzOjplc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3ModWlu
dDY0X3QgcGFnZUdyb3VwSUQsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgV2ViUHJlZmVy
ZW5jZXNTdG9yZSYgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNzaW9uSUQpCiB7CiAg
ICAgLy8gV2UgYXJlIGluIHRoZSBTZXJ2aWNlIFdvcmtlciBjb250ZXh0IHByb2Nlc3MgYW5kIHRo
ZSBjYWxsIGJlbG93IGVzdGFibGlzaGVzIG91ciBjb25uZWN0aW9uIHRvIHRoZSBOZXR3b3JrIFBy
b2Nlc3MKICAgICAvLyBieSBjYWxsaW5nIGVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbi4g
U1dDb250ZXh0TWFuYWdlciBuZWVkcyB0byB1c2UgdGhlIHNhbWUgdW5kZXJseWluZyBJUEM6OkNv
bm5lY3Rpb24gYXMgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAppbmRleCA1
MjVkZjE4M2YyMjYxNWU0ZDhlODk5ZjRlODllZjQ4NWE3YmE3ODFjLi4xODU3Y2VhMGVkOWQ5ZmE4
YzIxMDY5NmYwOTg3Njc4YmJhNDI5ZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgiCiAjaW5jbHVkZSAiV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QYWdlSWRlbnRp
Zmllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JlZW5Qcm9wZXJ0aWVzLmg+CkBAIC0xNDUs
OSArMTQ2LDkgQEAgcHVibGljOgogCiAgICAgV2ViQ29ubmVjdGlvblRvVUlQcm9jZXNzKiB3ZWJD
b25uZWN0aW9uVG9VSVByb2Nlc3MoKSBjb25zdCB7IHJldHVybiBtX3dlYkNvbm5lY3Rpb24uZ2V0
KCk7IH0KIAotICAgIFdlYlBhZ2UqIHdlYlBhZ2UodWludDY0X3QgcGFnZUlEKSBjb25zdDsKLSAg
ICB2b2lkIGNyZWF0ZVdlYlBhZ2UodWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzJiYpOwotICAgIHZvaWQgcmVtb3ZlV2ViUGFnZShQQUw6OlNlc3Npb25JRCwgdWludDY0
X3QgcGFnZUlEKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVy
KSBjb25zdDsKKyAgICB2b2lkIGNyZWF0ZVdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIs
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmJik7CisgICAgdm9pZCByZW1vdmVXZWJQYWdlKFBB
TDo6U2Vzc2lvbklELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAgV2ViUGFnZSogZm9j
dXNlZFdlYlBhZ2UoKSBjb25zdDsKIAogICAgIEluamVjdGVkQnVuZGxlKiBpbmplY3RlZEJ1bmRs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRCdW5kbGUuZ2V0KCk7IH0KQEAgLTE5OSw4ICsy
MDAsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGVuc3VyZUxlZ2FjeVByaXZhdGVCcm93c2luZ1Nl
c3Npb25Jbk5ldHdvcmtQcm9jZXNzKCk7CiAKLSAgICB2b2lkIHBhZ2VEaWRFbnRlcldpbmRvdyh1
aW50NjRfdCBwYWdlSUQpOwotICAgIHZvaWQgcGFnZVdpbGxMZWF2ZVdpbmRvdyh1aW50NjRfdCBw
YWdlSUQpOworICAgIHZvaWQgcGFnZURpZEVudGVyV2luZG93KFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyKTsKKyAgICB2b2lkIHBhZ2VXaWxsTGVhdmVXaW5kb3coV2ViQ29yZTo6UGFnZUlkZW50aWZp
ZXIpOwogCiAgICAgdm9pZCBub25WaXNpYmxlUHJvY2Vzc0NsZWFudXBUaW1lckZpcmVkKCk7CiAK
QEAgLTIxOSw3ICsyMjAsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHVwZGF0ZUFjdGl2ZVBhZ2Vz
KCk7CiAgICAgdm9pZCBnZXRBY3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0aW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwotICAgIHZvaWQgcGFnZUFjdGl2aXR5
U3RhdGVEaWRDaGFuZ2UodWludDY0X3QgcGFnZUlELCBPcHRpb25TZXQ8V2ViQ29yZTo6QWN0aXZp
dHlTdGF0ZTo6RmxhZz4gY2hhbmdlZCk7CisgICAgdm9pZCBwYWdlQWN0aXZpdHlTdGF0ZURpZENo
YW5nZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgT3B0aW9uU2V0PFdlYkNvcmU6OkFjdGl2aXR5
U3RhdGU6OkZsYWc+IGNoYW5nZWQpOwogCiAgICAgdm9pZCBzZXRIaWRkZW5QYWdlRE9NVGltZXJU
aHJvdHRsaW5nSW5jcmVhc2VMaW1pdChpbnQgbWlsbGlzZWNvbmRzKTsKIApAQCAtMzU5LDcgKzM2
MCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICB2b2lkIGVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcyh1
aW50NjRfdCBwYWdlR3JvdXBJRCwgdWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQcmVmZXJlbmNl
c1N0b3JlJiwgUEFMOjpTZXNzaW9uSUQpOworICAgIHZvaWQgZXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYsIFBBTDo6U2Vzc2lv
bklEKTsKICAgICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudHMoKTsKICNlbmRpZgog
CkBAIC00NjAsNyArNDYxLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJDb25uZWN0aW9u
VG9VSVByb2Nlc3M+IG1fd2ViQ29ubmVjdGlvbjsKIAotICAgIEhhc2hNYXA8dWludDY0X3QsIFJl
ZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOworICAgIEhhc2hNYXA8V2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIsIFJlZlB0cjxXZWJQYWdlPj4gbV9wYWdlTWFwOwogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4+IG1fcGFnZUdyb3VwTWFwOwogICAgIFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZT4gbV9pbmplY3RlZEJ1bmRsZTsKIApAQCAtNTE0LDcgKzUxNSw3IEBAIHBy
aXZhdGU6CiAKICAgICBib29sIG1fcHJvY2Vzc0lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKIAotICAg
IEhhc2hTZXQ8dWludDY0X3Q+IG1fcGFnZXNJbldpbmRvd3M7CisgICAgSGFzaFNldDxXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllcj4gbV9wYWdlc0luV2luZG93czsKICAgICBXZWJDb3JlOjpUaW1lciBt
X25vblZpc2libGVQcm9jZXNzQ2xlYW51cFRpbWVyOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OkFw
cGxpY2F0aW9uQ2FjaGVTdG9yYWdlPiBtX2FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCBiMzli
MzhjMTgzYzY2MzI3ZDQyZTZlZGZmMTc2YmJhMWM5Y2FiYjEyLi41N2EyNjU2MzQ1ZmJlOWQzMzBk
ZjY1NWUzNTJjMzliZWE1MmI0NWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjUsNyArMjUsNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
cyhzdHJ1Y3QgV2ViS2l0OjpXZWJQcm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycyBwYXJhbWV0ZXJz
KQogCiAgICAgIyBDcmVhdGUgYSBuZXcgcGFnZS4KLSAgICBDcmVhdGVXZWJQYWdlKHVpbnQ2NF90
IG5ld1BhZ2VJRCwgc3RydWN0IFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBwYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzKQorICAgIENyZWF0ZVdlYlBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50
aWZpZXIgbmV3UGFnZUlELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IHBhZ2VDcmVhdGlvblBhcmFtZXRlcnMpCiAKICAgICBQcmV3YXJtR2xvYmFsbHkoKTsKICAgICBQ
cmV3YXJtV2l0aERvbWFpbkluZm9ybWF0aW9uKHN0cnVjdCBXZWJDb3JlOjpQcmV3YXJtSW5mb3Jt
YXRpb24gcHJld2FybUluZm9ybWF0aW9uKQpAQCAtMTExLDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklD
RV9XT1JLRVIpCi0gICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQ
cm9jZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCB1aW50NjRfdCBwYWdlSUQsIHN0cnVjdCBXZWJL
aXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFBBTDo6U2Vzc2lvbklEIGluaXRpYWxTZXNz
aW9uSUQpCisgICAgRXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9j
ZXNzKHVpbnQ2NF90IHBhZ2VHcm91cElELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBwYWdlSUQs
IHN0cnVjdCBXZWJLaXQ6OldlYlByZWZlcmVuY2VzU3RvcmUgc3RvcmUsIFBBTDo6U2Vzc2lvbklE
IGluaXRpYWxTZXNzaW9uSUQpCiAgICAgUmVnaXN0ZXJTZXJ2aWNlV29ya2VyQ2xpZW50cygpCiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlN0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IDBiZDkwYWY5MTg3ODY0NDEwNDUzZWExYmFmMWVjZjYw
MjMzY2IwOTYuLjBlOTQyOTYwNDllNmMwODdhYjZlOGYwYzVlYmZlNGMxYTJlMmMwNzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VBcmVhTWFw
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9TdG9yYWdlQXJl
YU1hcC5jcHAKQEAgLTMxMSw3ICszMTEsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpkaXNwYXRj
aFNlc3Npb25TdG9yYWdlRXZlbnQodWludDY0X3Qgc291cmNlU3RvcmFnZUFyZWFJRCwgYwogCiAg
ICAgLy8gTmFtZXNwYWNlIElEcyBmb3Igc2Vzc2lvbiBzdG9yYWdlIG5hbWVzcGFjZXMgYXJlIGVx
dWl2YWxlbnQgdG8gd2ViIHBhZ2UgSURzCiAgICAgLy8gc28gd2UgY2FuIGdldCB0aGUgcmlnaHQg
cGFnZSBoZXJlLgotICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24o
KS53ZWJQYWdlKG1fc3RvcmFnZU5hbWVzcGFjZUlEKTsKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkud2ViUGFnZShtYWtlT2JqZWN0SWRlbnRpZmllcjxQYWdl
SWRlbnRpZmllclR5cGU+KG1fc3RvcmFnZU5hbWVzcGFjZUlEKSk7CiAgICAgaWYgKCF3ZWJQYWdl
KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VOYW1lc3BhY2VJbXBsLmNwcAppbmRleCBiMzkwODFl
NmUzYzFiYmFiOTJkYTIxZjJjYTllOGExOWRiNGZiZjE1Li43ZWE1ZTdkZDkwMjQyZTM2MGVmMmYw
OTliZGVlZTY3OWFjY2M1ZTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9TdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU5hbWVzcGFjZUltcGwuY3BwCkBAIC05Niw3ICs5
Niw3IEBAIFJlZjxTdG9yYWdlTmFtZXNwYWNlPiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y29weShQ
YWdlKiBuZXdQYWdlKQogICAgIEFTU0VSVChtX3N0b3JhZ2VOYW1lc3BhY2VJRCk7CiAKICAgICBp
ZiAobV9zdG9yYWdlVHlwZSA9PSBTdG9yYWdlVHlwZTo6U2Vzc2lvbikKLSAgICAgICAgcmV0dXJu
IGNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQ
YWdlKS0+cGFnZUlEKCksIG1fcXVvdGFJbkJ5dGVzKTsKKyAgICAgICAgcmV0dXJuIGNyZWF0ZVNl
c3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZShuZXdQYWdlKS0+cGFn
ZUlEKCkudG9VSW50NjQoKSwgbV9xdW90YUluQnl0ZXMpOwogCiAgICAgQVNTRVJUKG1fc3RvcmFn
ZVR5cGUgPT0gU3RvcmFnZVR5cGU6OkVwaGVtZXJhbExvY2FsKTsKICAgICBhdXRvIG5ld05hbWVz
cGFjZSA9IGFkb3B0UmVmKCpuZXcgU3RvcmFnZU5hbWVzcGFjZUltcGwobV9zdG9yYWdlVHlwZSwg
bV9zdG9yYWdlTmFtZXNwYWNlSUQsIG1fdG9wTGV2ZWxPcmlnaW4uZ2V0KCksIG1fcXVvdGFJbkJ5
dGVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViU3RvcmFnZS9X
ZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlN0b3JhZ2UvV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyLmNwcAppbmRleCA4MjU1N2I3
MjcxNGFkODcyNjU3ZWFmODQ5Njg1MjFhNzEzNjAzOWU2Li45YTZiNmYzNzAwYTBiOTU4NTFkZWE4
MTA2ZmNiYjMyYTRiMzA3M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViU3RvcmFnZS9XZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJTdG9yYWdlL1dlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlci5j
cHAKQEAgLTY3LDEyICs2NywxMiBAQCBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6On5XZWJT
dG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIoKQogCiBSZWY8V2ViQ29yZTo6U3RvcmFnZU5hbWVzcGFj
ZT4gV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVyOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVz
cGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90YSkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5h
bWVzcGFjZUltcGw6OmNyZWF0ZVNlc3Npb25TdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21D
b3JlUGFnZSgmcGFnZSktPnBhZ2VJRCgpLCBxdW90YSk7CisgICAgcmV0dXJuIFN0b3JhZ2VOYW1l
c3BhY2VJbXBsOjpjcmVhdGVTZXNzaW9uU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29y
ZVBhZ2UoJnBhZ2UpLT5wYWdlSUQoKS50b1VJbnQ2NCgpLCBxdW90YSk7CiB9CiAKIFJlZjxXZWJD
b3JlOjpTdG9yYWdlTmFtZXNwYWNlPiBXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXI6OmNyZWF0
ZUVwaGVtZXJhbExvY2FsU3RvcmFnZU5hbWVzcGFjZShQYWdlJiBwYWdlLCB1bnNpZ25lZCBxdW90
YSkKIHsKLSAgICByZXR1cm4gU3RvcmFnZU5hbWVzcGFjZUltcGw6OmNyZWF0ZUVwaGVtZXJhbExv
Y2FsU3RvcmFnZU5hbWVzcGFjZShXZWJQYWdlOjpmcm9tQ29yZVBhZ2UoJnBhZ2UpLT5wYWdlSUQo
KSwgcXVvdGEpOworICAgIHJldHVybiBTdG9yYWdlTmFtZXNwYWNlSW1wbDo6Y3JlYXRlRXBoZW1l
cmFsTG9jYWxTdG9yYWdlTmFtZXNwYWNlKFdlYlBhZ2U6OmZyb21Db3JlUGFnZSgmcGFnZSktPnBh
Z2VJRCgpLnRvVUludDY0KCksIHF1b3RhKTsKIH0KIAogUmVmPFdlYkNvcmU6OlN0b3JhZ2VOYW1l
c3BhY2U+IFdlYlN0b3JhZ2VOYW1lc3BhY2VQcm92aWRlcjo6Y3JlYXRlTG9jYWxTdG9yYWdlTmFt
ZXNwYWNlKHVuc2lnbmVkIHF1b3RhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQppbmRleCBmYzY1OTg2MzI1MmJm
ZTRmYThjMWUxMjliOWFlOGU4MzBmYWY3ODhhLi43NjVlZmY0MDRiMDllZDAwY2NlMWRkOWVhN2I1
NjA1NjI5Y2I1ZDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2Ev
UGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
Y29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbQpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtCiAgICAgYWRkQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFu
YWdlckNvbnRleHRJZCk7CiAKICAgICBtX3BhZ2UtPnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hh
bmdlKCk7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OlNldFVwUGxheWJhY2tDb250cm9sc01hbmFnZXJXaXRoSUQobV9jb250cm9sc01hbmFn
ZXJDb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6U2V0VXBQbGF5YmFja0NvbnRyb2xzTWFu
YWdlcldpdGhJRChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkpOwogfQogCiB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQpAQCAtMjkx
LDcgKzI5MSw3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y2xlYXJQbGF5YmFja0Nv
bnRyb2xzTWFuYWdlcigpCiAgICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSAwOwogCiAg
ICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRpZENoYW5nZSgpOwotICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDbGVhclBsYXliYWNr
Q29udHJvbHNNYW5hZ2VyKCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDbGVhclBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKCkpOwogfQogCiB1aW50NjRfdCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjb250
ZXh0SWRGb3JNZWRpYUVsZW1lbnQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVt
ZW50KQpAQCAtMzE4LDI3ICszMTgsMjcgQEAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCogUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFBsYXliYWNrQ29udHJvbHNFbGVtZW4KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpkdXJhdGlvbkNoYW5nZWQodWludDY0X3QgY29udGV4
dElkLCBkb3VibGUgZHVyYXRpb24pCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChjb250ZXh0SWQsIGR1cmF0
aW9uKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChjb250ZXh0SWQsIGR1cmF0
aW9uKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFRpbWVDaGFu
Z2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9y
VGltZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6Q3VycmVudFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hv
clRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q3VycmVudFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwg
Y3VycmVudFRpbWUsIGFuY2hvclRpbWUpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyOjpidWZmZXJlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZl
cmVkVGltZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1h
bmFnZXJQcm94eTo6QnVmZmVyZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQsIGJ1ZmZlcmVkVGltZSks
IG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpCdWZmZXJlZFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgYnVmZmVy
ZWRUaW1lKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cGxheWJhY2tTdGFy
dGVkVGltZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgcGxheWJhY2tTdGFydGVk
VGltZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY29udGV4dElkLCBwbGF5YmFja1N0
YXJ0ZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2Vk
KGNvbnRleHRJZCwgcGxheWJhY2tTdGFydGVkVGltZSkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OnJhdGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCBpc1BsYXlp
bmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6UmF0ZUNoYW5nZWQoY29udGV4dElkLCBpc1BsYXlp
bmcsIHBsYXliYWNrUmF0ZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0
SWQsIGlzUGxheWluZywgcGxheWJhY2tSYXRlKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3Qg
V2ViQ29yZTo6VGltZVJhbmdlcyYgdGltZVJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmllZFRpbWUs
IGRvdWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwpCkBAIC0zNDksMzcgKzM0OSwzNyBAQCB2b2lkIFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGNvbnN0IFdlYgogICAgICAgICBkb3VibGUgZW5kID0gdGltZVJhbmdlcy5yYW5nZXMo
KS5lbmQoaSkudG9Eb3VibGUoKTsKICAgICAgICAgcmFuZ2VzVmVjdG9yLmFwcGVuZCh7IHN0YXJ0
LCBlbmQgfSk7CiAgICAgfQotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpTZWVrYWJsZVJhbmdlc1ZlY3RvckNoYW5nZWQoY29udGV4dElkLCBX
VEZNb3ZlKHJhbmdlc1ZlY3RvciksIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZh
bCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpTZWVrYWJsZVJhbmdlc1ZlY3RvckNoYW5nZWQoY29udGV4
dElkLCBXVEZNb3ZlKHJhbmdlc1ZlY3RvciksIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJ
bnRlcnZhbCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNhblBsYXlGYXN0
UmV2ZXJzZUNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewotICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpDYW5QbGF5
RmFzdFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsK
KyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
Q2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjb250ZXh0SWQsIHZhbHVlKSk7CiB9CiAKIHZvaWQg
UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2Vk
KHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVjdG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYg
b3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbk9w
dGlvbnNDaGFuZ2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBv
cHRpb25zLCBzZWxlY3RlZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdl
cjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElk
LCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1aW50NjRfdCBz
ZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250
ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJs
ZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3Rl
ZEluZGV4KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxQbGF5
YmFja0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFBsYXliYWNrU2Vz
c2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcg
bG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1Byb3BlcnRpZXNDaGFuZ2Vk
KGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRhcmdldFR5cGUpLCBs
b2NhbGl6ZWREZXZpY2VOYW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkV4dGVybmFsUGxheWJhY2tQ
cm9wZXJ0aWVzQ2hhbmdlZChjb250ZXh0SWQsIGVuYWJsZWQsIHN0YXRpY19jYXN0PHVpbnQzMl90
Pih0YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNlTmFtZSkpOwogfQogCiB2b2lkIFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9u
SW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpBdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRl
eCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2libGVNZWRpYVNlbGVj
dGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90IHNlbGVjdGVkSW5k
ZXgpCiB7Ci0gICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
UHJveHk6OkxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVj
dGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6
OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhD
aGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh1aW50NjRf
dCBjb250ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IDVkNjExMGI3
OTA5ZjM0Y2NlM2U3NjJiZmQzOGQyYjJmNzIxZDUyMTYuLjcwNjYzOTc3Mzc5YjViMWJmNTk3YzVk
OGRlYjJhZDQ2YzNmNmI1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC0yOTAsNyArMjkwLDcgQEAg
dm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjplbnRlclZpZGVvRnVsbHNjcmVlbkZvclZpZGVv
RWxlbWVudChIVE1MVmlkZW9FbGVtZW4KICAgICAgICAgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdD
b250ZXh0KCktPnNldFJvb3RMYXllcih2aWRlb0xheWVyKTsKICAgICB9CiAKLSAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0dXBGdWxsc2Ny
ZWVuV2l0aElEKGNvbnRleHRJZCwgaW50ZXJmYWNlLT5sYXllckhvc3RpbmdDb250ZXh0KCktPmNv
bnRleHRJRCgpLCB2aWRlb1JlY3QsIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSwgaW50ZXJm
YWNlLT5mdWxsc2NyZWVuTW9kZSgpLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlLCBzdGFuZGJ5KSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OlNldHVwRnVsbHNjcmVlbldpdGhJRChjb250ZXh0SWQsIGludGVy
ZmFjZS0+bGF5ZXJIb3N0aW5nQ29udGV4dCgpLT5jb250ZXh0SUQoKSwgdmlkZW9SZWN0LCBtX3Bh
Z2UtPmRldmljZVNjYWxlRmFjdG9yKCksIGludGVyZmFjZS0+ZnVsbHNjcmVlbk1vZGUoKSwgYWxs
b3dzUGljdHVyZUluUGljdHVyZSwgc3RhbmRieSkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bk1hbmFnZXI6OmV4aXRWaWRlb0Z1bGxzY3JlZW5Gb3JWaWRlb0VsZW1lbnQoV2ViQ29yZTo6SFRN
TFZpZGVvRWxlbWVudCYgdmlkZW9FbGVtZW50KQpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNjcmVlbkZvclZpZGVvRWxlbWVudChX
ZWJDb3JlOjpIVE1MVmlkCiAgICAgICAgIHJldHVybjsKIAogICAgIGludGVyZmFjZS5zZXRJc0Fu
aW1hdGluZyh0cnVlKTsKLSAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVl
bk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4dElkLCBpbmxpbmVWaWRlb0ZyYW1l
KHZpZGVvRWxlbWVudCkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6RXhpdEZ1bGxzY3JlZW4oY29udGV4
dElkLCBpbmxpbmVWaWRlb0ZyYW1lKHZpZGVvRWxlbWVudCkpKTsKIH0KIAogdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlv
bihXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50JiB2aWRlb0VsZW1lbnQsIFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSB0YXJnZXRNb2RlKQpAQCAtMzI0
LDcgKzMyNCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZXhpdFZpZGVvRnVsbHNj
cmVlblRvTW9kZVdpdGhvdXRBbmltYXRpb24oV2ViQ29yZTo6CiAKICAgICBpbnRlcmZhY2Uuc2V0
VGFyZ2V0SXNGdWxsc2NyZWVuKGZhbHNlKTsKIAotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6
VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpFeGl0RnVsbHNjcmVlbldpdGhvdXRBbmltYXRp
b25Ub01vZGUoY29udGV4dElkLCB0YXJnZXRNb2RlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkV4aXRG
dWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZShjb250ZXh0SWQsIHRhcmdldE1vZGUpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHZpZGVvRWxlbWVudCk7CiAgICAgVU5VU0VEX1BBUkFN
KHRhcmdldE1vZGUpOwpAQCAtMzM2LDEzICszMzYsMTMgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
YW5hZ2VyOjpleGl0VmlkZW9GdWxsc2NyZWVuVG9Nb2RlV2l0aG91dEFuaW1hdGlvbihXZWJDb3Jl
OjoKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6aGFzVmlkZW9DaGFuZ2VkKHVpbnQ2NF90
IGNvbnRleHRJZCwgYm9vbCBoYXNWaWRlbykKIHsKICAgICBpZiAobV9wYWdlKQotICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFz
VmlkZW8oY29udGV4dElkLCBoYXNWaWRlbyksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SGFz
VmlkZW8oY29udGV4dElkLCBoYXNWaWRlbykpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXI6OnZpZGVvRGltZW5zaW9uc0NoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBjb25zdCBG
bG9hdFNpemUmIHZpZGVvRGltZW5zaW9ucykKIHsKICAgICBpZiAobV9wYWdlKQotICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0Vmlk
ZW9EaW1lbnNpb25zKGNvbnRleHRJZCwgdmlkZW9EaW1lbnNpb25zKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdl
clByb3h5OjpTZXRWaWRlb0RpbWVuc2lvbnMoY29udGV4dElkLCB2aWRlb0RpbWVuc2lvbnMpKTsK
IH0KIAogI3ByYWdtYSBtYXJrIE1lc3NhZ2VzIGZyb20gVmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OgpAQCAtMzY0LDcgKzM2NCw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVx
dWVzdFVwZGF0ZUlubGluZVJlY3QodWludDY0X3QgY29udGV4dElkKQogCiAgICAgYXV0byYgbW9k
ZWwgPSBlbnN1cmVNb2RlbChjb250ZXh0SWQpOwogICAgIEludFJlY3QgaW5saW5lUmVjdCA9IGlu
bGluZVZpZGVvRnJhbWUoKm1vZGVsLnZpZGVvRWxlbWVudCgpKTsKLSAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0SW5saW5lUmVjdChjb250
ZXh0SWQsIGlubGluZVJlY3QsIGlubGluZVJlY3QgIT0gSW50UmVjdCgwLCAwLCAwLCAwKSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlclByb3h5OjpTZXRJbmxpbmVSZWN0KGNvbnRleHRJZCwgaW5saW5lUmVjdCwgaW5s
aW5lUmVjdCAhPSBJbnRSZWN0KDAsIDAsIDAsIDApKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuTWFuYWdlcjo6cmVxdWVzdFZpZGVvQ29udGVudExheWVyKHVpbnQ2NF90IGNvbnRleHRJZCkK
QEAgLTM3OCw3ICszNzgsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OnJlcXVlc3RW
aWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgbW9kZWwtPnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0
aGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsKICAgICAgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHBy
b3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAgICAgICAgICAgIGlmIChwcm90ZWN0
ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlNldEhhc1ZpZGVvQ29udGVudExheWVyKGNvbnRl
eHRJZCwgdHJ1ZSksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAg
ICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIHRydWUpKTsKICAgICAgICAgfSk7
CiAgICAgfSk7CiB9CkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyOjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgICAg
ICAgICBtb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsLCBbcHJvdGVjdGVkVGhpcyA9
IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXMsIGNvbnRleHRJZF0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRd
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVu
TWFuYWdlclByb3h5OjpTZXRIYXNWaWRlb0NvbnRlbnRMYXllcihjb250ZXh0SWQsIGZhbHNlKSwg
cHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6U2V0
SGFzVmlkZW9Db250ZW50TGF5ZXIoY29udGV4dElkLCBmYWxzZSkpOwogICAgICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNDEzLDcgKzQxMyw3IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6ZGlkU2V0dXBGdWxsc2NyZWVuKHVpbnQ2NF90IGNv
bnRleHRJZCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlz
KSwgdGhpcywgY29udGV4dElkXSB7CiAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2Up
Ci0gICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFn
ZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICB9
KTsKICNlbHNlCiAgICAgQ0FMYXllciogdmlkZW9MYXllciA9IGludGVyZmFjZS0+bGF5ZXJIb3N0
aW5nQ29udGV4dCgpLT5yb290TGF5ZXIoKTsKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQp
CiAgICAgbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvTGF5ZXIsIFtwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpcywgY29udGV4dElkXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3Rl
Y3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCB0aGlzLCBjb250ZXh0SWRdIHsKICAg
ICAgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkVudGVyRnVs
bHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAg
ICAgICAgICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFn
ZXJQcm94eTo6RW50ZXJGdWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgICAgICB9KTsKICAgICB9
KTsKICNlbmRpZgpAQCAtNDQyLDcgKzQ0Miw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdl
cjo6d2lsbEV4aXRGdWxsc2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCkKICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQ
dHIodGhpcyksIHZpZGVvRWxlbWVudCA9IFdURk1vdmUodmlkZW9FbGVtZW50KSwgY29udGV4dElk
XSB7CiAgICAgICAgIHZpZGVvRWxlbWVudC0+d2lsbEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgICAg
IGlmIChwcm90ZWN0ZWRUaGlzLT5tX3BhZ2UpCi0gICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5t
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFy
ZWRUb0V4aXRGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFn
ZUlEKCkpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OlByZXBhcmVkVG9FeGl0RnVsbHNjcmVlbihj
b250ZXh0SWQpKTsKICAgICB9KTsKIH0KIApAQCAtNDg2LDcgKzQ4Niw3IEBAIHZvaWQgVmlkZW9G
dWxsc2NyZWVuTWFuYWdlcjo6ZGlkRXhpdEZ1bGxzY3JlZW4odWludDY0X3QgY29udGV4dElkKQog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0
SWQsIGludGVyZmFjZV0gewogICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQotICAg
ICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3Rl
ZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFudXBG
dWxsc2NyZWVuKGNvbnRleHRJZCkpOwogICAgIH0pOwogI2Vsc2UKICAgICBtb2RlbC0+d2FpdEZv
clByZXBhcmVkRm9ySW5saW5lVGhlbihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IGNvbnRleHRJZCwgaW50ZXJmYWNlLCBtb2RlbF0gKCkgbXV0YWJsZSB7CkBAIC00OTgsNyArNDk4
LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpkaWRFeGl0RnVsbHNjcmVlbih1aW50
NjRfdCBjb250ZXh0SWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UtPnNldExh
eWVySG9zdGluZ0NvbnRleHQobnVsbHB0cik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxs
c2NyZWVuTWFuYWdlclByb3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpLCBwcm90ZWN0
ZWRUaGlzLT5tX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb3Rl
Y3RlZFRoaXMtPm1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclBy
b3h5OjpDbGVhbnVwRnVsbHNjcmVlbihjb250ZXh0SWQpKTsKICAgICAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTU1NSw3ICs1NTUsNyBAQCB2b2lkIFZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSh1aW50NjRf
dCBjb250ZXh0SWQsIGJvbwogCiAgICAgaWYgKCFpc1BhZ2VWaXNpYmxlKQogICAgICAgICBtb2Rl
bC52aWRlb0VsZW1lbnQoKS0+c2Nyb2xsSW50b1ZpZXdJZk5vdFZpc2libGUoZmFsc2UpOwotICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpQcmVw
YXJlZFRvUmV0dXJuVG9JbmxpbmUoY29udGV4dElkLCB0cnVlLCBpbmxpbmVWaWRlb0ZyYW1lKCpt
b2RlbC52aWRlb0VsZW1lbnQoKSkpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6UHJlcGFyZWRUb1JldHVy
blRvSW5saW5lKGNvbnRleHRJZCwgdHJ1ZSwgaW5saW5lVmlkZW9GcmFtZSgqbW9kZWwudmlkZW9F
bGVtZW50KCkpKSk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVxdWVzdFJv
dXRlU2hhcmluZ1BvbGljeUFuZENvbnRleHRVSUQodWludDY0X3QgY29udGV4dElkLCBNZXNzYWdl
czo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6UmVxdWVzdFJvdXRlU2hhcmluZ1BvbGljeUFuZENv
bnRleHRVSUQ6OkFzeW5jUmVwbHkmJiByZXBseSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCmluZGV4IDJlMTkwYjAzNWY3MjgwYjFmYmVk
YjNhZjAwMWU2OTU4YzQyMDIxMTYuLmI5Y2U3OWQyNzRjNDEyN2JhNzhmNTRhNTJmNjM3ZTk1ZTg1
MWY2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9j
ZXNzQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQpAQCAtNTM5LDcgKzUzOSw3IEBAIHN0YXRpYyBOU1VSTCAqb3JpZ2luKFdlYlBh
Z2UmIHBhZ2UpCiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKLXN0YXRpYyBSZXRhaW5QdHI8
TlNBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlUGFnZXNPcmlnaW5zKGNvbnN0IEhhc2hNYXA8dWlu
dDY0X3QsIFJlZlB0cjxXZWJQYWdlPj4mIHBhZ2VNYXApCitzdGF0aWMgUmV0YWluUHRyPE5TQXJy
YXk8TlNTdHJpbmcgKj4+IGFjdGl2ZVBhZ2VzT3JpZ2lucyhjb25zdCBIYXNoTWFwPFBhZ2VJZGVu
dGlmaWVyLCBSZWZQdHI8V2ViUGFnZT4+JiBwYWdlTWFwKQogewogICAgIFJldGFpblB0cjxOU011
dGFibGVBcnJheTxOU1N0cmluZyAqPj4gYWN0aXZlT3JpZ2lucyA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvZ3RrL1dheWxhbmRDb21wb3NpdG9yRGlzcGxheS5jcHAKaW5kZXggNjFlNmE3ZWM4
ZDgwZTUxNDJiOGFkM2U2NzVjODM2ZTJjYjA1NTM5OS4uYmYyNWUxMDZkN2MxNzljN2NiNTM1YzJj
MzNjODJiNzg5NjQyYmExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2d0
ay9XYXlsYW5kQ29tcG9zaXRvckRpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9ndGsvV2F5bGFuZENvbXBvc2l0b3JEaXNwbGF5LmNwcApAQCAtNTgsNyArNTgsNyBAQCB2
b2lkIFdheWxhbmRDb21wb3NpdG9yRGlzcGxheTo6YmluZFN1cmZhY2VUb1BhZ2Uoc3RydWN0IHds
X3N1cmZhY2UqIHN1cmZhY2UsIFdlYgogICAgIGlmICghbV93ZWJraXRndGspCiAgICAgICAgIHJl
dHVybjsKIAotICAgIHdsX3dlYmtpdGd0a19iaW5kX3N1cmZhY2VfdG9fcGFnZShyZWludGVycHJl
dF9jYXN0PHN0cnVjdCB3bF93ZWJraXRndGsqPihtX3dlYmtpdGd0ay5nZXQoKSksIHN1cmZhY2Us
IHBhZ2UucGFnZUlEKCkpOworICAgIHdsX3dlYmtpdGd0a19iaW5kX3N1cmZhY2VfdG9fcGFnZShy
ZWludGVycHJldF9jYXN0PHN0cnVjdCB3bF93ZWJraXRndGsqPihtX3dlYmtpdGd0ay5nZXQoKSks
IHN1cmZhY2UsIHBhZ2UucGFnZUlEKCkudG9VSW50NjQoKSk7CiAgICAgd2xfZGlzcGxheV9yb3Vu
ZHRyaXAobV9kaXNwbGF5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9X
ZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYktp
dExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4
IDk4NzJjMzFiYTU4NGQ3MWRhMTU5MTFiNDU4ZjUxMTFkMWE3OTFjMWYuLjc5NjAyNGM4Y2U0OWE1
YWNmYThiMWZiNjU4NGZhYjgzMDU5NGNlNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6bG9h
ZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZQogICAgIFJlc291
cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KGZyYW1lTG9hZGVyLm5ldHdvcmtp
bmdDb250ZXh0KCksIHJlcXVlc3QsIG9wdGlvbnMuY3JlZGVudGlhbHMgPT0gRmV0Y2hPcHRpb25z
OjpDcmVkZW50aWFsczo6T21pdCA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6
IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2UsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpwYWdlTG9hZENvbXBsZXRlZCh1aW50
NjRfdCAvKndlYlBhZ2VJRCovKQordm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnBhZ2VM
b2FkQ29tcGxldGVkKFBhZ2VJZGVudGlmaWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oIGIv
U291cmNlL1dlYktpdExlZ2FjeS9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaAppbmRleCA1NWIzNjk3NTMwNjU4MjE0YmM5NzlhODc5MmI2NjA3MjZkODI5NmRkLi41ZjYy
Zjc3N2FhNzliMDA3NTU3M2U1YWZjY2M1NmQyZTYzNTUyZWE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5oCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkUmVzb3Vy
Y2UoV2ViQ29yZTo6RnJhbWUmLCBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZSYsIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlZlB0cjxXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcj4m
Jik+JiYpIGZpbmFsOwogICAgIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShXZWJDb3Jl
OjpGcmFtZUxvYWRlciYsIHVuc2lnbmVkIGxvbmcsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIFdlYkNvcmU6OkNsaWVudENyZWRlbnRpYWxQb2xpY3ksIGNvbnN0IFdlYkNvcmU6OkZl
dGNoT3B0aW9ucyYsIGNvbnN0IFdlYkNvcmU6OkhUVFBIZWFkZXJNYXAmLCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFZlY3RvcjxjaGFyPiYpIGZp
bmFsOwotICAgIHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQodWludDY0X3Qgd2ViUGFnZUlEKSBmaW5h
bDsKKyAgICB2b2lkIHBhZ2VMb2FkQ29tcGxldGVkKFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyKSBm
aW5hbDsKIAogICAgIHZvaWQgcmVtb3ZlKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyKikgZmluYWw7
CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJiwgYm9v
bCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAxMzg1NTgzYWYyOWQxNzQ0
MTNkNTA1Nzk1YWZhOTViNWM4ODk2NmJiLi5iMTQwM2QwNTYzOTNiMzk3ZDAxN2QwOTNkZTVmZTA0
Y2RjY2E4Y2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTYzLDcgKzYzLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGZyYW1lTG9hZGVyRGVzdHJveWVkKCkgZmluYWw7CiAgICAgYm9v
bCBoYXNXZWJWaWV3KCkgY29uc3QgZmluYWw7IC8vIG1haW5seSBmb3IgYXNzZXJ0aW9ucwogCi0g
ICAgT3B0aW9uYWw8dWludDY0X3Q+IHBhZ2VJRCgpIGNvbnN0IGZpbmFsOworICAgIE9wdGlvbmFs
PFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyPiBwYWdlSUQoKSBjb25zdCBmaW5hbDsKICAgICBPcHRp
b25hbDx1aW50NjRfdD4gZnJhbWVJRCgpIGNvbnN0IGZpbmFsOwogICAgIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCgpIGNvbnN0IGZpbmFsOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmlu
ZGV4IDdmODY5ZjFkZGNiOWExOTA4MGFhYjIwMDVmOWJmNzMyYWU4N2RkZGYuLjdlYmEzYTk4YWEz
ZGE5MDY2ZGZiN2M1YjkyMmQxMDkxMGIxNDIxMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCkBAIC0yMDksNyArMjA5LDcgQEAgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OldlYkZyYW1lTG9h
ZGVyQ2xpZW50KFdlYkZyYW1lICp3ZWJGcmFtZSkKIHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8UGFnZUlkZW50
aWZpZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggNWM1
ODEzZjkxYzFlZDA4N2M3ZDgyNDYxNDRhNmU1YmVlZDkwNDgwNy4uMmJjZjI2MjY5ZTEwODRjNGQ3
MmY4NDRhNzMxZTU5NTZlZTJlN2Y4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcApA
QCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmZyYW1lTG9hZGVy
RGVzdHJveWVkKCkKIHsKIH0KIAotT3B0aW9uYWw8dWludDY0X3Q+IFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpwYWdlSUQoKSBjb25zdAorT3B0aW9uYWw8V2ViQ29yZTo6UGFnZUlkZW50aWZpZXI+IFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpwYWdlSUQoKSBjb25zdAogewogICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYktpdExlZ2FjeS93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCAzMjJjMDkwMDVhYTVlZTU3
M2I0ZDcwMmQ2ZTFkYjI1MDYwNWQxYjVmLi42OTc1ZmQ4YTNmNmFhNTg3OTVlODY2OWY2ODY2Y2Nm
YzUyMTBkODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCBkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1Z2luKGNvbnN0IFdl
YkNvcmU6OlBsdWdpblZpZXcmKSBjb25zdDsKIAotICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBwYWdl
SUQoKSBjb25zdCBmaW5hbDsKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpQYWdlSWRlbnRpZmllcj4g
cGFnZUlEKCkgY29uc3QgZmluYWw7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IGZyYW1lSUQoKSBj
b25zdCBmaW5hbDsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQoKSBjb25zdCBmaW5hbDsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>